## src/kinematic/matrice_s [ Modules ]

NAME

Module matrice_s

USAGE

use matrice_s

DESCRIPTION

This module is used : to reserve some memory in order to pass the S matrix, its shape, the set of propagator labels; to compute the inverse of S matrix and the related quantities : the b's and sumb, also for all possible reduced matrices. The S matrix is allocated here and also its dimension and it returns the result through the three functions inv_s, b and sumb.

OUTPUT

This module exports five variables: * dim_s -- an integer, the shape of the initial S matrix * set_ref -- an integer array, the set of initial propagators * s_mat_c -- a complex (type ki) array of rank 2, the S matrix. * s_mat_p -- a derived type, including the S matrix for either real or complex masses and integer-bits encoding the positions of masses with non-vanishing Im-part, and vanishing masses. * s_mat -- A pointer associated with s_mat_c. The user can fill s_mat or s_mat_c with complex or real values. and also eleven functions: * initgolem95 -- calls allocation_s, initializes the cache, associates s_mat. * allocation_s -- to allocate the required memory * deallocation_s -- to deallocate the used memory * preparesmatrix -- fill s_mat_r with the real part of s_mat_c, sets the bit integers in s_mat_p calls init_invs. * init_invs -- to fill all the array for the inverse of the S matrix and the inverse of the reduce S matrix * inv_s -- it contains the inverse of the S matrix * hj -- it contains H matrix (pseudo-inverse of G) * b -- it contains the b coefficients * sumb -- it contains the B coeficient * norma_sumb -- it contains the normalised B coefficient * exitgolem95 -- deallocates memory, clear the cache. Only dim_s and set_ref take a value in this module, not the other variables

USES

* precision (src/module/precision_golem.f90) * sortie_erreur (src/module/sortie_erreur.f90) * cache (src/module/cache.f90) * inverse_matrice (src/kinematic/inverse_matrice.f90) * tri_croissant (src/module/tri_croissant.f90) * array (src/module/array.f90) * parametre (src/module/parametre.f90) * s_matrix_type (src/module/s_matrix_type.f90)

## src/kinematic/inversion/b [ Functions ]

NAME

Function b

USAGE

complex = b(i,set)

DESCRIPTION

This function gives the b coefficients whatever the S matrix dimension (<=6)

INPUTS

* i -- an integer, label of the b coefficients * set -- an integer array of rank 1, the set of pinch propagators

SIDE EFFECTS

No side effect

RETURN VALUE

Warning: Now a complex (type ki) is returned! [TK Sep10]

EXAMPLE

## src/kinematic/inversion/hj [ Functions ]

NAME

Function hj

USAGE

complex = hj(i,j,set)

DESCRIPTION

This function gives the H matrix (pseudo-inverse of G) (dim=6)

INPUTS

* i -- an integer, line number * j -- an integer, row number * set -- an integer array of rank 1, the set of pinch propagators

SIDE EFFECTS

No side effect

RETURN VALUE

Warning: Now a complex (type ki) is returned! [TK Sep10]

EXAMPLE

## src/kinematic/inversion/init_invs [ Functions ]

NAME

Subroutine init_invs

USAGE

call init_invs()

DESCRIPTION

This function comes in two copies for real masses and complex masses. The respective arrays are filled. This routine fills the arrays: invs_n, hjj, b_n, sumb_n, norma_sumb_n One can print a typical error due to the numerical inversion

INPUTS

No input

SIDE EFFECTS

This routine modifies the values of the real or complex arrays invs_n, hjj, b_n, sumb_n, norma_sumb_n

RETURN VALUE

No return value

EXAMPLE

## src/kinematic/inversion/inv_s [ Functions ]

NAME

Function inv_s

USAGE

complex = inv_s(i,j,set)

DESCRIPTION

This function gives the generic inverse of the S matrix whatever its dimension (<=6)

INPUTS

* i -- an integer, line number * j -- an integer, row number * set -- an integer array of rank 1, the set of pinch propagators

SIDE EFFECTS

No side effect

RETURN VALUE

Warning: Now a complex (type ki) is returned! [TK Sep10]

EXAMPLE

## src/kinematic/inversion/norma_sumb [ Functions ]

NAME

Function norma_sumb

USAGE

complex = norma_sumb(set)

DESCRIPTION

This function gives the B coefficient whatever the S matrix dimension (<=6) divided by the greatest (in absolute value) element of the S matrix

INPUTS

* set -- an integer array of rank 1, the set of pinch propagators

SIDE EFFECTS

No side effect

RETURN VALUE

Warning: Now a complex (type ki) is returned! [TK Sep10]

EXAMPLE

## src/kinematic/inversion/sumb [ Functions ]

NAME

Function sumb

USAGE

complex = sumb(set)

DESCRIPTION

This function gives the B coefficient whatever the S matrix dimension (<=6)

INPUTS

* set -- an integer array of rank 1, the set of pinch propagators

SIDE EFFECTS

No side effect

RETURN VALUE

Warning: Now a complex (type ki) is returned! [TK Sep10]

EXAMPLE

## src/kinematic/matrice_s/allocation_s [ Functions ]

NAME

Subroutine allocation_s

USAGE

call allocation_s(dim)

DESCRIPTION

This subroutine reserves the memory for several internal objects. In case of rmass_or_cmass_par==cmass, there complex copies of each preceding array are also allocated. After memory allocation, s_mat_p is then assigned the matrix s_mat_c or s_mat_r, respectively. The corresponding pointers in s_mat_p are associated or nullified. In case a complex matrix is assigned, there will be also a pointer associated with a real matrix, which has entries according to the real part of the complex matrix.

INPUTS

* dim -- an integer, the maximal number of external legs

SIDE EFFECTS

This routine modify the value of the variable dim_s It initialises invs_n, hjj, b_n, sumb_n, norma_sumb_n to zero It associates the global objects s_mat_p with s_mat_r or s_mat_c.

RETURN VALUE

No return value

EXAMPLE

## src/kinematic/matrice_s/deallocation_s [ Functions ]

NAME

Subroutine deallocation_s

USAGE

call deallocation_s()

DESCRIPTION

This subroutine deallocates the memory reserved by the preceeding subroutine. The pointers in s_mat_p are nullified.

INPUTS

No input

SIDE EFFECTS

This routine destroys all the variables initialised in the preceeding subroutine as well as any associations in s_mat_p.

RETURN VALUE

No return value

EXAMPLE

## src/kinematic/matrice_s/exitgolem95 [ Functions ]

NAME

Subroutine exitgolem95

USAGE

call exitgolem95()

DESCRIPTION

This subroutine should be called at the end of the form factor calculation. It frees all memory previously allocated, it clears the cache and nullifies pointers.

INPUTS

SIDE EFFECTS

RETURN VALUE

No return value

EXAMPLE

## src/kinematic/matrice_s/initgolem95 [ Functions ]

NAME

Subroutine initgolem95

USAGE

call initgolem95(dim, opt_set)

DESCRIPTION

This subroutine is the first of three macro functions which needs to be called by the user. It allocates memory for all internal matrices needed in subsequent calculations. The caching system is initialized. A pointer s_mat is associated with a complex matrix s_mat_c. This is the s matrix which has to be filled after initgolem95() is called. The argument 'dim' sets the maximal number of external legs. An optional array for the numbering of propagators can be given. The default is set to (/ 1, ... , dim /)

INPUTS

* dim -- an integer, the maximal number of external legs * opt_set -- an optional integer array for the numbering of propagators

SIDE EFFECTS

A call to allocation_s is made, implying all side effects given there. The caching system is initialized. A pointer 's_mat' is associated with the global matrix s_mat_c. The internal parameter rmass_or_cmass_par is set to cmass. If a purely real s matrix is given by the user it will be set to rmass in the call of preparesmatrix.

RETURN VALUE

No return value

EXAMPLE

## src/kinematic/matrice_s/preparesmatrix [ Functions ]

NAME

Subroutine preparesmatrix

USAGE

call preparesmatrix() call prepare_s_matrix_local(s_mat_p_loc,set_ref_loc)

DESCRIPTION

This subroutine prepares the global or local s_mat_p object, consisting of pointers to s_mat_c and s_mat_r and integer bits b_cmplx and b_zero. A call to init_invs is made to fill the inverse matrices needed in the form factor calculations. If the user has defined a purely real s matrix, the internal parameter rmass_or_cmass_par is set to rmass and only the real branch of the library is used. In the complex case, form factors which are not affected by complex masses will be called with a sub matrix of s_mat_r, the real part of s_mat_c. The routine also sets the bits for complex mass and zero mass- entries. The subroutine prepare_s_matrix_local is used internally to prepare local type s_matrix_poly objects. This subroutine does not interact with the inverse matrices and the caching system.

INPUTS

For prepare_s_matrix_local, s_mat_p and set_ref need to be given.

RETURN VALUE

No return value

EXAMPLE