Cadabra
Computer algebra system for field theory problems
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
cadabra::eliminate_converter Class Referenceabstract

#include <eliminate_metric.hh>

Inheritance diagram for cadabra::eliminate_converter:
cadabra::Algorithm cadabra::ExManip cadabra::eliminate_metric cadabra::eliminate_vielbein

Public Member Functions

 eliminate_converter (const Kernel &, Ex &, Ex &, bool)
 
virtual bool can_apply (iterator) override
 
virtual result_t apply (iterator &) override
 
- Public Member Functions inherited from cadabra::Algorithm
 Algorithm (const Kernel &, Ex &)
 Initialise the algorithm with a reference to the expression tree, but do not yet do anything with this tree.
 
virtual ~Algorithm ()
 
void set_progress_monitor (ProgressMonitor *)
 Provide the algorithm with a ProgressMonitor object on which to register (nested) progress information, to be reported out-of-band to a client.
 
result_t apply_generic (bool deep=true, bool repeat=false, unsigned int depth=0)
 The main entry points for running algorithms, which traverse the tree post-order ('child before parent').
 
result_t apply_generic (iterator &, bool deep, bool repeat, unsigned int depth)
 
result_t apply_pre_order (bool repeat=false)
 Apply algorithm with alternative traversal: starting from the top node, traverse the tree pre-order ('parent before child') and once the algorithm acts at a given node, do not traverse the subtree below anymore.
 
bool check_consistency (iterator) const
 Given an expression top node, check index consistency.
 
bool check_index_consistency (iterator) const
 
bool check_degree_consistency (iterator) const
 Given an expression top node, check differential form degree consistency.
 
void report_progress (const std::string &, int todo, int done, int count=2)
 
index_iterator begin_index (iterator it) const
 
index_iterator end_index (iterator it) const
 
unsigned int number_of_indices (iterator it)
 
std::string get_index_set_name (iterator it) const
 
bool rename_replacement_dummies (iterator, bool still_inside_algo=false)
 Rename the dummies in the sub-tree starting with head at the given iterator.
 
Ex_set_t dependencies (iterator it, bool include_derivatives_of=true) const
 Determine all the Coordinate dependencies of the object at 'it'.
 
bool derivative_acts_on (iterator it) const
 Is this a symbol on which a derivative acts?
 
- Public Member Functions inherited from cadabra::ExManip
 ExManip (const Kernel &, Ex &)
 
bool prod_wrap_single_term (iterator &)
 Take a single non-product node in a sum and wrap it in a product node, so it can be handled on the same footing as a proper product.
 
bool prod_unwrap_single_term (iterator &)
 
bool sum_wrap_single_term (iterator &)
 
bool sum_unwrap_single_term (iterator &)
 
bool is_single_term (iterator)
 Is the indicated node a single term in an expression?
 
bool is_nonprod_factor_in_prod (iterator)
 
void force_node_wrap (iterator &, std::string)
 Wrap a term in a product or sum in a node with indicated name, irrespective of its parent (it usually makes more sense to call the safer prod_wrap_single_term or sum_wrap_single_term above).
 

Protected Member Functions

virtual bool is_conversion_object (iterator) const =0
 
- Protected Member Functions inherited from cadabra::Algorithm
bool contains (sibling_iterator from, sibling_iterator to, sibling_iterator arg)
 
void find_argument_lists (range_vector_t &, bool only_comma_lists=true) const
 
template<class Iter >
range_vector_t::iterator find_arg_superset (range_vector_t &, Iter st, Iter nd)
 
range_vector_t::iterator find_arg_superset (range_vector_t &, sibling_iterator it)
 
unsigned int locate_single_object (Ex::iterator obj_to_find, Ex::iterator st, Ex::iterator nd, std::vector< unsigned int > &store)
 
bool locate_object_set (const Ex &objs, Ex::iterator st, Ex::iterator nd, std::vector< unsigned int > &store)
 
bool separated_by_derivative (iterator, iterator, iterator check_dependence) const
 Figure out whether two objects (commonly indices) are separated by a derivative operator, as in.
 
void pushup_multiplier (iterator)
 
template<class BinaryPredicate >
unsigned int intersection_number (sibling_iterator, sibling_iterator, sibling_iterator, sibling_iterator, BinaryPredicate) const
 Determine the number of elements in the first range which also occur in the second range.
 
void node_zero (iterator)
 
void node_one (iterator)
 
void node_integer (iterator, int)
 

Private Member Functions

bool handle_one_index (index_iterator i1, index_iterator i2, iterator fit, sibling_iterator objs)
 See if the conversion which turns index 'i1' into index 'i2' can be applied on the expression, so that it gets a factor in the expression closer to the 'fit' form.
 

Private Attributes

Ex preferred
 
IndexClassifier::index_map_t ind_dummy
 
IndexClassifier::index_map_t ind_free
 
bool redundant
 

Additional Inherited Members

- Public Types inherited from cadabra::Algorithm
typedef std::set< Ex, tree_exact_less_objEx_set_t
 
typedef Ex::result_t result_t
 
- Public Types inherited from cadabra::ExManip
typedef Ex::iterator_base iterator_base
 
typedef Ex::iterator iterator
 
typedef Ex::post_order_iterator post_order_iterator
 
typedef Ex::sibling_iterator sibling_iterator
 
- Static Public Member Functions inherited from cadabra::Algorithm
static unsigned int number_of_indices (const Properties &, iterator it)
 
static unsigned int number_of_direct_indices (iterator it)
 
static bool is_termlike (iterator)
 Determines whether the indicated node is 'like a term in a sum'.
 
static bool is_factorlike (iterator)
 Determines whether the indicated node is 'like a factor in a product'.
 
static bool is_noncommuting (const Properties &, iterator)
 Generic function to determine if there is any kind of non-commutativity associated to the given object.
 
- Public Attributes inherited from cadabra::Algorithm
bool interrupted
 
unsigned int number_of_calls
 
unsigned int number_of_modifications
 
bool suppress_normal_output
 
bool discard_command_node
 
Stopwatch index_sw
 
Stopwatch get_dummy_sw
 
Stopwatch report_progress_stopwatch
 
- Protected Types inherited from cadabra::Algorithm
typedef std::pair< sibling_iterator, sibling_iteratorrange_t
 Finding objects in sets.
 
typedef std::vector< range_trange_vector_t
 
- Static Protected Member Functions inherited from cadabra::Algorithm
static bool compare_ (const str_node &, const str_node &)
 
- Protected Attributes inherited from cadabra::Algorithm
ProgressMonitorpm
 
bool traverse_ldots
 
- Protected Attributes inherited from cadabra::ExManip
const Kernelkernel
 
Extr
 

Constructor & Destructor Documentation

◆ eliminate_converter()

eliminate_converter::eliminate_converter ( const Kernel k,
Ex e,
Ex pref,
bool  redun 
)

Member Function Documentation

◆ apply()

Algorithm::result_t eliminate_converter::apply ( iterator it)
overridevirtual

Implements cadabra::Algorithm.

◆ can_apply()

bool eliminate_converter::can_apply ( iterator  it)
overridevirtual

Implements cadabra::Algorithm.

◆ handle_one_index()

bool eliminate_converter::handle_one_index ( index_iterator  i1,
index_iterator  i2,
iterator  fit,
sibling_iterator  objs 
)
private

See if the conversion which turns index 'i1' into index 'i2' can be applied on the expression, so that it gets a factor in the expression closer to the 'fit' form.

The two indices 'i1' and 'i2' are objects on the convertor object, so they need to appear with opposite parent rel in the expression if they are to be applied (if the index position type is 'fixed').

◆ is_conversion_object()

virtual bool cadabra::eliminate_converter::is_conversion_object ( iterator  ) const
protectedpure virtual

Member Data Documentation

◆ ind_dummy

IndexClassifier::index_map_t cadabra::eliminate_converter::ind_dummy
private

◆ ind_free

IndexClassifier::index_map_t cadabra::eliminate_converter::ind_free
private

◆ preferred

Ex cadabra::eliminate_converter::preferred
private

◆ redundant

bool cadabra::eliminate_converter::redundant
private

The documentation for this class was generated from the following files: