(git:374b731)
Loading...
Searching...
No Matches
grid_task_list.h File Reference

Go to the source code of this file.

Data Structures

struct  grid_task_list
 Internal representation of a task list, abstracting various backends. More...
 

Functions

void grid_create_task_list (const bool orthorhombic, const int ntasks, const int nlevels, const int natoms, const int nkinds, const int nblocks, const int block_offsets[nblocks], const double atom_positions[natoms][3], const int atom_kinds[natoms], const grid_basis_set *basis_sets[nkinds], const int level_list[ntasks], const int iatom_list[ntasks], const int jatom_list[ntasks], const int iset_list[ntasks], const int jset_list[ntasks], const int ipgf_list[ntasks], const int jpgf_list[ntasks], const int border_mask_list[ntasks], const int block_num_list[ntasks], const double radius_list[ntasks], const double rab_list[ntasks][3], const int npts_global[nlevels][3], const int npts_local[nlevels][3], const int shift_local[nlevels][3], const int border_width[nlevels][3], const double dh[nlevels][3][3], const double dh_inv[nlevels][3][3], grid_task_list **task_list)
 Allocates a task list which can be passed to grid_collocate_task_list.
 
void grid_free_task_list (grid_task_list *task_list)
 Deallocates given task list, basis_sets have to be freed separately.
 
void grid_collocate_task_list (const grid_task_list *task_list, const enum grid_func func, const int nlevels, const int npts_local[nlevels][3], const offload_buffer *pab_blocks, offload_buffer *grids[nlevels])
 Collocate all tasks of in given list onto given grids.
 
void grid_integrate_task_list (const grid_task_list *task_list, const bool compute_tau, const int natoms, const int nlevels, const int npts_local[nlevels][3], const offload_buffer *pab_blocks, const offload_buffer *grids[nlevels], offload_buffer *hab_blocks, double forces[natoms][3], double virial[3][3])
 Integrate all tasks of in given list from given grids.
 

Function Documentation

◆ grid_create_task_list()

void grid_create_task_list ( const bool  orthorhombic,
const int  ntasks,
const int  nlevels,
const int  natoms,
const int  nkinds,
const int  nblocks,
const int  block_offsets[nblocks],
const double  atom_positions[natoms][3],
const int  atom_kinds[natoms],
const grid_basis_set basis_sets[nkinds],
const int  level_list[ntasks],
const int  iatom_list[ntasks],
const int  jatom_list[ntasks],
const int  iset_list[ntasks],
const int  jset_list[ntasks],
const int  ipgf_list[ntasks],
const int  jpgf_list[ntasks],
const int  border_mask_list[ntasks],
const int  block_num_list[ntasks],
const double  radius_list[ntasks],
const double  rab_list[ntasks][3],
const int  npts_global[nlevels][3],
const int  npts_local[nlevels][3],
const int  shift_local[nlevels][3],
const int  border_width[nlevels][3],
const double  dh[nlevels][3][3],
const double  dh_inv[nlevels][3][3],
grid_task_list **  task_list_out 
)

Allocates a task list which can be passed to grid_collocate_task_list.

Parameters
orthorhombicWhether simulation box is orthorhombic.
ntasksNumber of tasks, ie. length of the task list.
nlevelsNumber of grid levels.
natomsNumber of atoms.
nkindsNumber of atomic kinds.
nblocksNumber of local matrix blocks.
block_offsetsOffset of each block within the buffer (zero based).
atom_positionsPosition of the atoms.
atom_kindsMapping from atom to atomic kind (one based).
basis_setsMapping from atomic kind to basis sets.
 The following params are given for each task:
level_listIndex of grid level (one based).
iatom_listIndex of first atom (one based).
jatom_listIndex of second atom (one based).
iset_listIndex of first set (one based).
jset_listIndex of second set (one based).
ipgf_listIndex of first exponent (one based).
jpgf_listIndex of second exponent (one based).
border_mask_listBit-pattern determining border regions to exclude.
block_num_listIndex into the block_offsets array (one based).
radius_listRadius where Gaussian becomes smaller than threshold.
rab_listVector between atoms, encodes the virtual image.
 The following params are given for each grid level:
npts_globalNumber of global grid points in each direction.
npts_localNumber of local grid points in each direction.
shift_localNumber of points local grid is shifted wrt global grid
border_widthWidth of halo region in grid points in each direction.
dhIncremental grid matrix.
dh_invInverse incremental grid matrix.
task_listHandle to the created task list.
Author
Ole Schuett

Allocates a task list which can be passed to grid_collocate_task_list.

Author
Ole Schuett

Definition at line 25 of file grid_task_list.c.

Here is the call graph for this function:

◆ grid_free_task_list()

void grid_free_task_list ( grid_task_list task_list)

Deallocates given task list, basis_sets have to be freed separately.

Author
Ole Schuett

Definition at line 147 of file grid_task_list.c.

Here is the call graph for this function:

◆ grid_collocate_task_list()

void grid_collocate_task_list ( const grid_task_list task_list,
const enum grid_func  func,
const int  nlevels,
const int  npts_local[nlevels][3],
const offload_buffer pab_blocks,
offload_buffer grids[nlevels] 
)

Collocate all tasks of in given list onto given grids.

Parameters
task_listTask list to collocate.
funcFunction to be collocated, see grid_prepare_pab.h
nlevelsNumber of grid levels.
 The remaining params are given for each grid level:
npts_localNumber of local grid points in each direction.
pab_blocksBuffer that contains the density matrix blocks.
gridsThe output grid array to collocate into.
Author
Ole Schuett

Collocate all tasks of in given list onto given grids.

Author
Ole Schuett

Definition at line 183 of file grid_task_list.c.

Here is the call graph for this function:

◆ grid_integrate_task_list()

void grid_integrate_task_list ( const grid_task_list task_list,
const bool  compute_tau,
const int  natoms,
const int  nlevels,
const int  npts_local[nlevels][3],
const offload_buffer pab_blocks,
const offload_buffer grids[nlevels],
offload_buffer hab_blocks,
double  forces[natoms][3],
double  virial[3][3] 
)

Integrate all tasks of in given list from given grids.

Parameters
task_listTask list to collocate.
compute_tauWhen true then <nabla a| V | nabla b> is computed.
natomsNumber of atoms.
nlevelsNumber of grid levels.
 The remaining params are given for each grid level:
npts_localNumber of local grid points in each direction.
gridsGrid array to integrate from.
pab_blocksOptional density blocks, needed for forces and virial.
hab_blocksOutput buffer with the Hamiltonian matrix blocks.
forcesOptional output forces, requires pab_blocks.
virialOptional output virials, requires pab_blocks.
Author
Ole Schuett

Integrate all tasks of in given list from given grids.

Author
Ole Schuett

Definition at line 280 of file grid_task_list.c.

Here is the call graph for this function: