SecDec/loop/src/deco/SDroutines.m [ Mathematica Files ]
[ Top ] [ Mathematica Files ]
NAME
SDroutines.m
USAGE
called from decomposition.m
PURPOSE
Contains routines to perform iterated SD, and to output files created by decomposition.m
FUNCTIONS
for the decomposition: countvars[cvf,cfv,np]: finds the maximum power of a set of variables cfv in a function cvf from primary sector np. findpossset[fexpr,np]: finds all minimal sets (wrt length) of the integration variables which nullify a function fexpr from primary sector np. returns these sets, together with an integer which is the maximum power of these integration variables in the function. howmanynullify[posset,integrands]: counts the number of integrands a given set posset nullifies. findbestset[integrands,n,np]: finds the 'best' set which nullifies function n from the list of integrands, derived from primary sector np. 'best' is the set which nullifies the most integrands, and has the lowest maximum power of integration variables in integrand n paralleldecompose[allsecs]: maps 'decompose' onto each sector in allsecs, uses parallel processing where available/appropriate. allsecs is a list of sectors to be decomposed. Returns a list of fully decomposed sectors. exdecompose[esec,set,varnum]: performs the explicit replacements needed for decomposition. Factorizes the integrands and recalculates the exponents of the integration variables. Returns a sector which may require further decomposition. factorizeintegrand[{integ,expo,flag},tt,var]: pulls out any factors of tt[var] in int, recalculates the exponent of tt[var] and returns {factorized int, expo, new flag}. flag/new flag = A or B. decompose[dsec]: Checks whether dsec needs decomposition. If not (ie all flags = A), returns {dsec}. Otherwise the set of variables to decompose is selected by findbestset, and exdecompose is mapped onto this set. newsecs is the list of transformed sectors, and then this list of sectors is further decomposed by paralleldecompose[newsecs]. when this process terminates, decompose returns a list of fully decomposed sectors. rescalesecs[sector]: The function F and U are rescaled for each sector by symbolic parameter maxinv, which will be replaced by the biggest kinematic invariant during the numerical integration. The prefactor maxinv^(expoU+expoF)is put into the numerator. for preparing and writing output: polecheck[expos]: classifies a a list of exponents by number of logarithmic, linear and higher poles. makesectoroutput[sector]: classifies a sector by its pole structure and which primary sector it derives from. increments the counter polecount[polestruct,np] for this classification, and adds a pointer to sector in a list seclist[polestruct,np] linked to this classification. If polestruct is the first of this structure, it is added to the list structlist of observed pole structures. writeoutput[polestruct]: Updates the values of maxpoles where applicable. for each primary sector, the list of pointers is used to form the final list of sectors for this polestruct to write for output. The output is written to the appropriate [graph]sec[np]P[polestruct].out. The information on number of sectors from each primary sector with this pole structure is added to the string poleinfostring writeinfo: writes the necessary information to file [graph]OUT.info, or [graph]Sec[npmax]OUT.info if primary sectors are treated individually. this info includes number of propagators Nn, exponents expoU and expoF, total number of sectors produced allcount, maximum poles maxlogpole, maxlinpole, maxhpole, the order of the default prefactor prefacord, and the default prefactor itself prefac. makeoutput: calculates the total number of sectors, performs makesecoutput to each sector, reformats the sectors to be in the desired output format, sorts the structlist into order of complexity, performs writeoutput for each pole structure, then performs writeinfo. variables: maxinv: is a symbolic variable which will be replaced by the biggest kinematic invariant during numerical integration from decompose.pl: indflag: Indflag states if special primary sectors were indicated in the paramloop.input file. If indflag=1, the integrand info is written to [graph]Sec[npmax]OUT.info, else it is written to [graph]OUT.info.