High-level Fortran API.
Contains user input to an MBD calculation.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=30), | public | :: | method | = | 'mbd-rsscs' | VdW method to use to calculate energy and gradients.
|
|
integer, | public | :: | comm | = | -1 | MPI communicator. Only used when compiled with MPI. Leave as is to use the MPI_COMM_WORLD communicator. |
|
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.
|
|
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.
|
Represents an MBD calculation.
procedure, public :: init => mbd_calc_init | |
procedure, public :: destroy => mbd_calc_destroy | |
procedure, public :: switch_forces => mbd_calc_switch_forces | |
procedure, public :: update_coords => mbd_calc_update_coords | |
procedure, public :: update_lattice_vectors => mbd_calc_update_lattice_vectors | |
procedure, public :: update_vdw_params_custom => mbd_calc_update_vdw_params_custom | |
procedure, public :: update_vdw_params_from_ratios => mbd_calc_update_vdw_params_from_ratios | |
procedure, public :: update_vdw_params_nl => mbd_calc_update_vdw_params_nl | |
procedure, public :: evaluate_vdw_method => mbd_calc_evaluate_vdw_method | |
procedure, public :: get_gradients => mbd_calc_get_gradients | |
procedure, public :: get_vdw_params_ratios_gradients => mbd_calc_get_vdw_params_ratios_gradients | |
procedure, public :: get_lattice_derivs => mbd_calc_get_lattice_derivs | |
procedure, public :: get_lattice_stress => mbd_calc_get_lattice_stress | |
procedure, public :: get_spectrum_modes => mbd_calc_get_spectrum_modes | |
procedure, public :: get_rpa_orders => mbd_calc_get_rpa_orders | |
procedure, public :: get_exception => mbd_calc_get_exception |