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
Loading...

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 ...