SecDec/loop/src/deco/NSDroutines.m [ Mathematica Files ]

[ Top ] [ Mathematica Files ]

NAME

  NSDroutines.m

USAGE

  called from deconoprimary.m

PURPOSE

  Contains routines to perform iterated SD, and to output files created by
  deconoprimary.m

FUNCTIONS

 for the decomposition:
  countvars[cvf,cfv]: finds the maximum power of a set of variables cfv 
   in a function cvf.
  findpossset[fexpr]: finds all minimal sets (wrt length) of the
   integration variables which nullify a function fexpr.
   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]: finds the 'best' set which nullifies 
   function n from the list of integrands.
   '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
  
 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.
   increments the counter polecount[polestruct] for this classification,
   and adds a pointer to sector in a list seclist[polestruct] 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.
   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 [integral]P[polestruct].out. The information
   on number of sectors with this pole structure is
   added to the string poleinfostring
  writeinfo: writes the necessary information to file *graph*Func[number]OUT.info
   which is later read by the Perl module getinfo.pm. The number in Func[number] 
   corresponds to first entry in primseclist that the user puts in by hand.
   The info files include number of integration variables nmax, total number of
   sectors produced allcount, maximum poles maxlogpole, common exponent expoU and 
   expoF of the functions with number [number], maxlinpole, maxhpole, and the order
   of the constant prefactor prefacord. Note: If functions written to the primseclist
   have different exponents for U and F, their function number should be
   different.  
  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.
  
  from *graph*.m:
   lengthprimseclist: checks template file for first entry in primseclist. lengthprimseclist
   is set to the highest number in the first entry. This is comparable to the number of sectors
   which is used for usual sector decomposition, where the number of sectors is defined by the 
   number of propagators written to *param*.input. 

  variables:
   nf: short for number of function, is first entry in every element of primseclist
   maxinv: is a symbolic variable which will be replaced by the biggest kinematic
    invariant during numerical integration 

  global variables set here: 
   expsuf[number]: exponents U and F of functions with function number [number] (first entry
    in primseclist)