![]() |
Cadabra
Computer algebra system for field theory problems
|
#include <evaluate.hh>
Public Member Functions | |
| evaluate (const Kernel &, Ex &, const Ex &component_values, bool rhs=false, bool simplify=true) | |
| virtual bool | can_apply (iterator) override |
| virtual result_t | apply (iterator &) override |
| void | merge_components (iterator it1, iterator it2) |
| Merge the information in two 'components' nodes at the given iterators, moving all out of the second one into the first one. | |
| void | simplify_components (iterator, bool run_sympy=true) |
| Simplify all components of a 'components' node by collecting terms and optionally running sympy's simplify on them. | |
| 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. | |
| void | pushup_multiplier (iterator) |
| Determines whether the indicated node is 'like a factor in a product'. | |
| 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) |
| 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). | |
Private Member Functions | |
| bool | is_component (iterator it) const |
| bool | is_scalar_function (iterator it) const |
| iterator | handle_components (iterator it) |
| iterator | handle_sum (iterator it) |
| iterator | handle_prod (iterator it) |
| iterator | handle_derivative (iterator it) |
| iterator | handle_epsilon (iterator it) |
| iterator | handle_factor (sibling_iterator sib, const IndexClassifier::index_map_t &full_ind_free) |
| Replace a single factor with a 'components' ... The full_ind_free argument can contain a list of indices in the order in which values should be stored in index value sets. | |
| iterator | dense_factor (iterator sib, const IndexClassifier::index_map_t &ind_free, const IndexClassifier::index_map_t &ind_dummy) |
| Expand a tensor factor into a components node with all components written out explicitly. | |
| void | merge_component_children (iterator it) |
| Merge entries in a single 'components' node when they are for the same index value(s). | |
| void | cleanup_components (iterator it1) |
| Cleanup all components in a 'components' node; that is, call the cleanup_dispatch function on them. | |
| iterator | wrap_scalar_in_components_node (iterator sib) |
| Wrap a non-component scalar node in a 'components' node. | |
| void | unwrap_scalar_in_components_node (iterator sib) |
| Inverse of the above. | |
Private Attributes | |
| const Ex & | components |
| bool | only_rhs |
| bool | call_sympy |
Additional Inherited Members | |
| Public Types inherited from cadabra::Algorithm | |
| typedef std::set< Ex, tree_exact_less_obj > | Ex_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'. | |
| 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 Attributes inherited from cadabra::Algorithm | |
| bool | traverse_ldots |
| Protected Attributes inherited from cadabra::ExManip | |
| const Kernel & | kernel |
| Ex & | tr |
| evaluate::evaluate | ( | const Kernel & | k, |
| Ex & | tr, | ||
| const Ex & | component_values, | ||
| bool | rhs = false, | ||
| bool | simplify = true ) |
|
overridevirtual |
|
overridevirtual |
|
private |
Cleanup all components in a 'components' node; that is, call the cleanup_dispatch function on them.
|
private |
Expand a tensor factor into a components node with all components written out explicitly.
Used when there is no sparse rule matching this factor.
|
private |
|
private |
|
private |
|
private |
Replace a single factor with a 'components' ... The full_ind_free argument can contain a list of indices in the order in which values should be stored in index value sets.
|
private |
|
private |
|
private |
|
private |
|
private |
Merge entries in a single 'components' node when they are for the same index value(s).
Merge the information in two 'components' nodes at the given iterators, moving all out of the second one into the first one.
| void evaluate::simplify_components | ( | iterator | it, |
| bool | run_sympy = true ) |
Simplify all components of a 'components' node by collecting terms and optionally running sympy's simplify on them.
Returns a replacement iterator to the top. Removes entries for vanishing components.
|
private |
Inverse of the above.
|
private |
Wrap a non-component scalar node in a 'components' node.
|
private |
|
private |
|
private |