geom_t Derived Type

type, public :: geom_t

Represents a molecule or a crystal unit cell.

The documented variables should be set before calling the initializer.


Contents


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

  • private subroutine geom_init(this)

    Arguments

    Type IntentOptional AttributesName
    class(geom_t), intent(inout) :: this

procedure, public :: destroy => geom_destroy

  • private subroutine geom_destroy(this)

    Arguments

    Type IntentOptional AttributesName
    class(geom_t), intent(inout) :: this

procedure, public :: siz => geom_siz

  • private function geom_siz(this) result(siz)

    Arguments

    Type IntentOptional AttributesName
    class(geom_t), intent(in) :: this

    Return Value integer

procedure, public :: has_exc => geom_has_exc

  • private function geom_has_exc(this) result(has_exc)

    Arguments

    Type IntentOptional AttributesName
    class(geom_t), intent(in) :: this

    Return Value logical

procedure, public :: sync_exc => geom_sync_exc

  • private subroutine geom_sync_exc(this)

    Arguments

    Type IntentOptional AttributesName
    class(geom_t), intent(in) :: this

procedure, public :: clock => geom_clock

  • private subroutine geom_clock(this, id)

    Arguments

    Type IntentOptional AttributesName
    class(geom_t), intent(inout) :: this
    integer, intent(in) :: id