mbd_geom Module

Representing a molecule or a crystal unit cell.


Uses


Contents


Derived Types

type, public :: param_t

Calculation-wide paramters.

Components

TypeVisibility AttributesNameInitial
real(kind=dp), public :: dipole_cutoff =400d0*ang
real(kind=dp), public :: ewald_real_cutoff_scaling =1d0
real(kind=dp), public :: ewald_rec_cutoff_scaling =1d0
real(kind=dp), public :: k_grid_shift =K_GRID_SHIFT
logical, public :: ewald_on =.true.
logical, public :: zero_negative_eigvals =.false.
logical, public :: rpa_rescale_eigs =.false.
integer, public :: rpa_order_max =10
integer, public :: n_freq =N_FREQUENCY_GRID

type, public :: geom_t

Represents a molecule or a crystal unit cell.

The documented variables should be set before calling the initializer.

Components

TypeVisibility AttributesNameInitial
real(kind=dp), public, allocatable:: coords(:,:)

(, a.u.) Atomic coordinates.

real(kind=dp), public, allocatable:: lattice(:,:)

(, a.u.) Lattice vectors in columns, unallocated if not periodic.

integer, public, allocatable:: k_grid(:)

Number of -points along reciprocal axes.

real(kind=dp), public, allocatable:: custom_k_pts(:,:)

Custom -point grid.

character(len=10), public :: parallel_mode ='auto'

Type of parallelization:

  • atoms: distribute matrices over all MPI tasks using ScaLAPACK, solve eigenproblems sequentialy.
  • k_points: parallelize over k-points (each MPI task solves entire eigenproblems for its k-points)
logical, public :: get_eigs =.false.

Whether to keep MBD eigenvalues

logical, public :: get_modes =.false.

Whether to calculate MBD eigenvectors

logical, public :: do_rpa =.false.

Whether to calculate MBD energy by frequency integration

logical, public :: get_rpa_orders =.false.

Whether to calculate RPA orders

type(logger_t), public :: log

Used for logging

integer, public :: mpi_comm =MPI_COMM_WORLD

MPI communicator

integer, public :: max_atoms_per_block =MAX_ATOMS_PER_BLOCK
type(clock_t), public :: timer
type(exception_t), public :: exc
type(quad_pt_t), public, allocatable:: freq(:)
real(kind=dp), public :: gamm =0d0
real(kind=dp), public :: real_space_cutoff
real(kind=dp), public :: rec_space_cutoff
type(param_t), public :: param
type(atom_index_t), public :: idx
type(blacs_desc_t), public :: blacs
type(blacs_grid_t), public :: blacs_grid
integer, public :: mpi_size =-1
integer, public :: mpi_rank =-1

Type-Bound Procedures

procedure, public :: init => geom_init
procedure, public :: destroy => geom_destroy
procedure, public :: siz => geom_siz
procedure, public :: has_exc => geom_has_exc
procedure, public :: sync_exc => geom_sync_exc
procedure, public :: clock => geom_clock