mbd_input_t Derived Type

type, public :: mbd_input_t

Contains user input to an MBD calculation.


Components

Type Visibility Attributes Name Initial
character(len=30), public :: method = 'mbd-rsscs'

VdW method to use to calculate energy and gradients.

  • mbd-rsscs: The MBD@rsSCS method.
  • mbd-nl: The MBD-NL method.
  • ts: The TS method.
  • mbd: Generic MBD method (without any screening).
integer, public :: comm = -1

MPI communicator, as a plain integer handle.

Only used when compiled with MPI. Leave as is to use the MPI_COMM_WORLD communicator. The integer handle is accepted regardless of whether the library was built against the mpi_f08 module; callers using mpi_f08 should pass the integer handle of their communicator (e.g. mycomm%mpi_val).

integer, public :: max_atoms_per_block = MAX_ATOMS_PER_BLOCK

Number of atoms per block in a BLACS grid.

integer, public :: log_level = MBD_LOG_LVL_INFO

Level of printing

procedure(printer_i), public, nopass, pointer :: printer => null()

If assigned, will be used for logging

logical, public :: calculate_forces = .true.

Whether to calculate forces.

logical, public :: calculate_vdw_params_gradients = .false.

Whether to calculate gradients of energy w.r.t. vdW parameters

logical, public :: calculate_spectrum = .false.

Whether to keep MBD eigenvalues.

logical, public :: do_rpa = .false.

Whether to evalulate the MBD energy as an RPA integral over frequency.

logical, public :: rpa_orders = .false.

Whether to calculate individual RPA orders

logical, public :: rpa_rescale_eigs = .false.

Whether to rescale RPA eigenvalues as in 10.1021/acs.jctc.6b00925.

integer, public :: n_omega_grid = N_FREQUENCY_GRID

Number of imaginary frequency grid points.

real(kind=dp), public :: k_grid_shift = K_GRID_SHIFT

Off- shift of the -point grid in units of inter--point distance.

logical, public :: zero_negative_eigvals = .false.

Whether to zero out negative eigenvalues.

character(len=20), public :: xc = ''

XC functional for automatic setting of damping parameters.

real(kind=dp), public :: ts_d = TS_DAMPING_D

TS damping parameter .

real(kind=dp), public :: ts_sr = -1

Custom TS damping parameter .

Leave as is to use a value based on the XC functional.

real(kind=dp), public :: mbd_a = MBD_DAMPING_A

MBD damping parameter .

real(kind=dp), public :: mbd_beta = -1

Custom MBD damping parameter .

Leave as is to use a value based on the XC functional.

character(len=10), public :: vdw_params_kind = 'ts'

Which free-atom reference vdW parameters to use for scaling.

  • ts: Values from original TS method.
  • tssurf: Values from the TS approach.
character(len=3), public, allocatable :: atom_types(:)

() Atom types used for picking free-atom reference values.

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

(, a.u.) Custom free-atom vdW paramters to use for scaling.

Columns contain static polarizabilities, C6 coefficients, and vdW radii.

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

(, a.u.) Atomic coordinates.

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

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

integer, public :: k_grid(3) = [-1, -1, -1]

Number of -points along reciprocal axes.

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

Parallelization scheme.

  • auto: Pick based on system system size and number of -points.
  • kpoints: Parallelize over -points.
  • atoms: Parallelize over atom pairs.