## Documentation for module gauss_colloc

Routines to efficently collocate and integrate gaussians on a grid These use most of Joost's tricks and a couple more... result is *speed* and genericity

source: gauss_colloc.F

#### public Subroutines/Functions:

collocate a periodically repeated gaussian on a non orthormbic grid
integrates a gaussian times any polynomial up to a give order.

#### SUBROUTINEcollocgauss(h, h_inv, grid, poly, alphai, posi, max_r2, periodic, gdim, local_bounds, local_shift, poly_shift, scale, lgrid)^

collocate a periodically repeated gaussian on a non orthormbic grid

##### Arguments:
 REAL(dp), INTENT(in) :: h(0:2,0:2) cell matrix REAL(dp), INTENT(in) :: h_inv(0:2,0:2) inverse of the cell matrix REAL(dp), INTENT(inout) :: grid(0:,0:,0:) the grid REAL(dp), INTENT(inout) :: poly(:) polynomial (d3_poly format) REAL(dp), INTENT(in) :: alphai exponential coeff REAL(dp), INTENT(in) :: posi(0:2) position of the gaussian REAL(dp), INTENT(in) :: max_r2 maximum radius of collocation squared INTEGER, INTENT(in) :: periodic(0:2) array of 0 or 1 that says which dimensions have pbc (1=pbc) INTEGER, INTENT(in), OPTIONAL :: gdim(0:2) dimension of the grid (grid might be a subset) INTEGER, INTENT(in), OPTIONAL :: local_bounds(2,0:2) local bounds of the grid piece that is kept locally (i.e. of grid) the global grid is assumed to atart at 0,0,0 INTEGER, INTENT(in), OPTIONAL :: local_shift(0:2) start indexes of the local slice (i.e. of grid) REAL(dp), INTENT(in), OPTIONAL :: poly_shift(0:2) position of posi in the polynomial reference system. Set it to posi to use the global reference system. REAL(dp), INTENT(in), OPTIONAL :: scale a global scale factor TYPE(lgrid_type), INTENT(inout), OPTIONAL :: lgrid ...

#### SUBROUTINEintegrategaussfull(h, h_inv, grid, poly, alphai, posi, max_r2, periodic, gdim, local_bounds, local_shift, poly_shift, scale)^

integrates a gaussian times any polynomial up to a give order.

##### Arguments:
 REAL(dp), INTENT(in) :: h(0:2,0:2) ... REAL(dp), INTENT(in) :: h_inv(0:2,0:2) ... REAL(dp), INTENT(inout) :: grid(0:,0:,0:) ... REAL(dp), INTENT(inout) :: poly(:) ... REAL(dp), INTENT(in) :: alphai ... REAL(dp), INTENT(in) :: posi(0:2) ... REAL(dp), INTENT(in) :: max_r2 ... INTEGER, INTENT(in) :: periodic(0:2) ... INTEGER, INTENT(in), OPTIONAL :: gdim(0:2) ... INTEGER, INTENT(in), OPTIONAL :: local_bounds(2,0:2) ... INTEGER, INTENT(in), OPTIONAL :: local_shift(0:2) ... REAL(dp), INTENT(in), OPTIONAL :: poly_shift(0:2) ... REAL(dp), INTENT(in), OPTIONAL :: scale ...