...

source: realspace_grid_types.FLoading...

...

Determine the setup of real space grids - this is divided up into the creation of a descriptor and the actual grid itself (see rs_grid_create)

returns the 1D rank of the task which is a cartesian shift away from 1D rank rank_in only possible if rs_grid is a distributed grid

returns the maximum number of points in the local grid of any process to account for the case where the grid may later be reordered

rs1(i) = rs1(i) + rs2(i)*rs3(i)

Print information on grids to output

releases the given rs grid (see doc/ReferenceCounting.html)

releases the given rs grid descriptor (see doc/ReferenceCounting.html)

Defines a new ordering of ranks on this realspace grid, recalculating the data bounds and reallocating the grid. As a result, each MPI process now has a real rank (i.e. it's rank in the MPI communicator from the pw grid) and a virtual rank (the rank of the process where the data now owned by this process would reside in an ordinary cartesian distribution). NB. Since the grid size required may change, the caller should be sure to release and recreate the corresponding rs_grids The desc%real2virtual and desc%virtual2real arrays can be used to map a physical rank to the 'rank' of data owned by that process and vice versa

retains the given rs grid (see doc/ReferenceCounting.html)

retains the given rs grid descriptor (see doc/ReferenceCounting.html)

Set box matrix info for real space grid This is needed for variable cell simulations

Initialize grid to zero

Copy a function from/to a PW grid type to/from a real space type dir is the named constant rs2pw or pw2rs

INTEGER |
:: | pw2rs = 12 | |

INTEGER |
:: | rs2pw = 11 | |

INTEGER |
:: | rsgrid_automatic = 2 | |

INTEGER |
:: | rsgrid_distributed = 0 | |

INTEGER |
:: | rsgrid_replicated = 1 |

...

INTEGER |
:: | grid_id | ... | |

TYPE(pw_grid_type), |
POINTER | :: | pw | ... |

INTEGER |
:: | ref_count | ... | |

INTEGER(int_8) |
:: | ngpts | ... | |

INTEGER, |
DIMENSION(3) | :: | npts | ... |

INTEGER, |
DIMENSION(3) | :: | lb | ... |

INTEGER, |
DIMENSION(3) | :: | ub | ... |

INTEGER |
:: | border | ... | |

INTEGER, |
DIMENSION(3) | :: | perd | ... |

REAL(dp), |
DIMENSION(3,3) | :: | dh | ... |

REAL(dp), |
DIMENSION(3,3) | :: | dh_inv | ... |

LOGICAL |
:: | orthorhombic | ... | |

LOGICAL |
:: | parallel | ... | |

LOGICAL |
:: | distributed | ... | |

INTEGER |
:: | group | ... | |

INTEGER |
:: | my_pos | ... | |

LOGICAL |
:: | group_head | ... | |

INTEGER |
:: | group_size | ... | |

INTEGER, |
DIMENSION(3) | :: | group_dim | ... |

INTEGER, |
DIMENSION(3) | :: | group_coor | ... |

INTEGER, |
DIMENSION(3) | :: | neighbours | ... |

INTEGER, |
DIMENSION(:,:), POINTER | :: | lb_global | ... |

INTEGER, |
DIMENSION(:,:), POINTER | :: | ub_global | ... |

INTEGER, |
DIMENSION(:,:), POINTER | :: | rank2coord | ... |

INTEGER, |
DIMENSION(:,:,:), POINTER | :: | coord2rank | ... |

INTEGER, |
DIMENSION(:), POINTER | :: | x2coord | ... |

INTEGER, |
DIMENSION(:), POINTER | :: | y2coord | ... |

INTEGER, |
DIMENSION(:), POINTER | :: | z2coord | ... |

INTEGER |
:: | my_virtual_pos | ... | |

INTEGER, |
DIMENSION(3) | :: | virtual_group_coor | ... |

INTEGER, |
DIMENSION(:), ALLOCATABLE | :: | virtual2real | ... |

INTEGER, |
DIMENSION(:), ALLOCATABLE | :: | real2virtual | ... |

...

INTEGER |
:: | distribution_type | ... | |

INTEGER |
:: | distribution_layout | ... | |

REAL(dp) |
:: | memory_factor | ... | |

LOGICAL |
:: | lock_distribution | ... | |

INTEGER |
:: | nsmax | ... | |

REAL(dp) |
:: | halo_reduction_factor | ... |

...

TYPE(realspace_grid_desc_type), |
POINTER | :: | desc | ... |

INTEGER |
:: | id_nr | ... | |

INTEGER |
:: | ref_count | ... | |

INTEGER |
:: | ngpts_local | ... | |

INTEGER, |
DIMENSION(3) | :: | npts_local | ... |

INTEGER, |
DIMENSION(3) | :: | lb_local | ... |

INTEGER, |
DIMENSION(3) | :: | ub_local | ... |

INTEGER, |
DIMENSION(3) | :: | lb_real | ... |

INTEGER, |
DIMENSION(3) | :: | ub_real | ... |

INTEGER, |
DIMENSION(:), POINTER | :: | px | ... |

INTEGER, |
DIMENSION(:), POINTER | :: | py | ... |

INTEGER, |
DIMENSION(:), POINTER | :: | pz | ... |

REAL(dp), |
DIMENSION(:,:,:), POINTER | :: | r | ... |

...

TYPE(realspace_grid_type), |
POINTER |
:: | rs | ... | |

TYPE(realspace_grid_desc_type), |
POINTER |
:: | desc | ... |

Determine the setup of real space grids - this is divided up into the creation of a descriptor and the actual grid itself (see rs_grid_create)

TYPE(realspace_grid_desc_type), |
POINTER |
:: | desc | ... | |

TYPE(pw_grid_type), |
POINTER |
:: | pw_grid | ... | |

TYPE(realspace_grid_input_type), |
INTENT(in) |
:: | input_settings | ... | |

INTEGER, |
INTENT(in), |
OPTIONAL |
:: | border_points | ... |

returns the 1D rank of the task which is a cartesian shift away from 1D rank rank_in only possible if rs_grid is a distributed grid

Return Value :: INTEGER

TYPE(realspace_grid_desc_type), |
POINTER |
:: | rs_desc | ... | |

INTEGER, |
INTENT(in) |
:: | rank_in | ... | |

INTEGER, |
INTENT(in) |
:: | shift(3) | ... |

returns the maximum number of points in the local grid of any process to account for the case where the grid may later be reordered

Return Value :: INTEGER

TYPE(realspace_grid_desc_type), |
POINTER |
:: | desc | ... |

rs1(i) = rs1(i) + rs2(i)*rs3(i)

TYPE(realspace_grid_type), |
POINTER |
:: | rs1 | ... | |

TYPE(realspace_grid_type), |
POINTER |
:: | rs2 | ... | |

TYPE(realspace_grid_type), |
POINTER |
:: | rs3 | ... | |

REAL(dp), |
INTENT(in) |
:: | scalar | ... |

Print information on grids to output

TYPE(realspace_grid_type), |
POINTER |
:: | rs | ... | |

INTEGER, |
INTENT(in) |
:: | iounit | ... |

releases the given rs grid (see doc/ReferenceCounting.html)

TYPE(realspace_grid_type), |
POINTER |
:: | rs_grid | the rs grid to release |

releases the given rs grid descriptor (see doc/ReferenceCounting.html)

TYPE(realspace_grid_desc_type), |
POINTER |
:: | rs_desc | the rs grid descriptor to release |

Defines a new ordering of ranks on this realspace grid, recalculating the data bounds and reallocating the grid. As a result, each MPI process now has a real rank (i.e. it's rank in the MPI communicator from the pw grid) and a virtual rank (the rank of the process where the data now owned by this process would reside in an ordinary cartesian distribution). NB. Since the grid size required may change, the caller should be sure to release and recreate the corresponding rs_grids The desc%real2virtual and desc%virtual2real arrays can be used to map a physical rank to the 'rank' of data owned by that process and vice versa

TYPE(realspace_grid_desc_type), |
POINTER |
:: | desc | ... | |

INTEGER, |
INTENT(in) |
:: | real2virtual(:) | ... |

retains the given rs grid (see doc/ReferenceCounting.html)

TYPE(realspace_grid_type), |
POINTER |
:: | rs_grid | the grid to retain |

retains the given rs grid descriptor (see doc/ReferenceCounting.html)

TYPE(realspace_grid_desc_type), |
POINTER |
:: | rs_desc | the grid descriptor to retain |

Set box matrix info for real space grid This is needed for variable cell simulations

TYPE(pw_grid_type), |
POINTER |
:: | pw_grid | ... | |

TYPE(realspace_grid_type), |
POINTER |
:: | rs | ... |

Initialize grid to zero

TYPE(realspace_grid_type), |
POINTER |
:: | rs | ... |

Copy a function from/to a PW grid type to/from a real space type dir is the named constant rs2pw or pw2rs

TYPE(realspace_grid_type), |
POINTER |
:: | rs | ... | |

TYPE(pw_type), |
POINTER |
:: | pw | ... | |

INTEGER, |
INTENT(in) |
:: | dir | ... |