minBasis¶
This submodule takes care of handling covariant derivatives, field strength tensors and overall derivatives in a common way to be able to work out a basis that is fully linearly independent and thus minimal.
- _IBPbilinear(op: LinearComb) bool¶
Absorb one left-acting covariant derivative in a Bilinear into an overall derivative and a right-acting covariant derivative.
Danger
Intended for internal use. Make sure to act with simplify otherwise any non-trivial factors still residing in (covariant) derivatives etc. will get lost.
- Parameters:
op (LinearComb) – Operator in which each Bilinear, carrying covariant derivatives acting to the left, is rewritten as total derivatives and right-acting covariant derivatives.
- Returns:
Indicates whether a left-acting covariant derivative was encountered and replaced.
- Return type:
- _IBPtrace(op: LinearComb)¶
Searches for a total derivative acting on a algebra-valued
Traceand replaces it by an appropriate combination of covariant derivatives.Danger
Intended for internal use. Make sure to act with simplify otherwise any non-trivial factors still residing in (covariant) derivatives etc. will get lost.
- Parameters:
op (LinearComb) – Operator to be reexpressed.
- Returns:
Indicates whether a total derivative was encountered and reexpressed.
- Return type:
- class _dA(mu: sptIdx, derivatives: list[int] | None = None, factor: Complex = 1)¶
Bases:
BlockIntended for internal use only to give gluon Trace a unique string representation in terms of monomials of the gluon field and its (higher order) derivatives.
- Parameters:
- simplify()¶
Is expected to take care of any relations among different index permutations.
Caution
Has to be adapted for non-trivial cases.
- _mapCoefficients(rep: list[tuple[str, Complex]], map_: dict[str, int])¶
Each unique term in the overcomplete basis can be identified as an eigenvector in a vector space spanned by all the terms. Using the factors corresponding to the different terms in a
LinearComb, we can thus assign each operator a vector in this vector-space to establish a truly linearly independent and thus minimal basis.- Parameters:
- Returns:
Eigenvector corresponding to
repin the full vector-space.- Return type:
- _mapToVectors(bases: list[list[LinearComb]])¶
Turns the various terms in all the
LinearCombin bases into eigenvectors identified by the string representation of those terms. The various components are tracked via a dictionary and the bases are reexpressed in terms of those eigenvectors.Danger
Intended for internal use. Make sure to act with simplify on the bases otherwise any non-trivial factors still residing within the expression will get lost.
- Parameters:
bases (list[list[LinearComb]]) – The entire basis of operators still grouped in some user-defined manner.
- Returns:
The coefficients of the operator bases in the newly introduced vector space as well as the translation table to identify the various coefficients.
- Return type:
- _toRep(op: LinearComb)¶
Takes care of any total derivatives by applying the product rule and IBP relations. Afterwards, any
_AlgebraBlockis written out explicitly and the resulting unique expression is prepared for being mapped in our vector-space.Danger
Intended for internal use. Make sure to act with simplify otherwise any non-trivial factors still residing in (covariant) derivatives etc. will get lost.
- Parameters:
op (LinearComb) – Operator to be processed.
- Returns:
Returns the details needed to map the operator into our vector-space.
- Return type:
- _unmaskAlgebraBlock(op: LinearComb) bool¶
Looks for an instance of
_AlgebraBlockand reexpresses it by the appropriate commutators of covariant derivatives acting on the right-most algebra block, which can be a field strength tensor orColour.Danger
Intended for internal use. Make sure to act with simplify otherwise any non-trivial factors still residing in the expression will get lost.
- Parameters:
op (LinearComb) –
Expression in which
_AlgebraBlockare supposed to be reexpressed.Caution
The input argument will be changed!
- Returns:
Indicating whether an instance of
_AlgebraBlockwas encountered.- Return type:
- findMinBases(bases: list[list[LinearComb]], gEOM: GluonEOM | None = None, fEOMs: list[LinearComb] | None = None, model: Model | None = None)¶
Takes the (various) overcomplete bases and identifies appropriate minimal bases while dropping linear dependent terms. The ordering of the sets of bases and within each basis determine which operators to keep. Operators with higher priority should come first.
Optionally allows to start from EOMs still being masked by
D0,D0l, andDF.In which case the appropriate EOMs must be provided:
Attention
Expects the operators to be simplified already!
- Parameters:
bases (list[list[LinearComb]]) – Collection of operators that are still grouped to allow for keeping track of initially used templates.
gEOM (GluonEOM|None, optional) – Description of the gluon EOM, defaults to
None.fEOMs (list[LinearComb]|None, optional) – Collection of fermion EOMs, i.e., allows to have different EOMs for different flavours. Defaults to
None.model (Model) – Description of the theory currently considered. Only required for use with the fermion EOMs to track sets of flavours. Defaults to
None.
- Returns:
Collection of linearly independent operators keeping the original grouping intact while ensuring that earlier groups take precedence.
- Return type:
- Raises:
AssertionError – If fermion EOMs are provided but model is
None.