dftd3_mpi Module

MPI aware entry points of the dispersion calculation.

Every rank holds the complete structure, evaluates the share of the interaction loops assigned to its rank and the results are reduced over the communicator. All routines report the missing feature in the error handler if s-dftd3 was built without MPI support, see dftd3_feature.



Interfaces

public interface get_dispersion_mpi

Calculate dispersion energy distributed over an MPI communicator

  • private subroutine get_dispersion_mpi_atomic(error, mol, disp, param, cutoff, comm, energies, gradient, sigma, hessian)

    Calculate atom-resolved dispersion energies distributed over a communicator

    Arguments

    Type IntentOptional Attributes Name
    type(error_type), intent(out), allocatable :: error

    Error handling

    class(structure_type), intent(in) :: mol

    Molecular structure data

    class(d3_model), intent(in) :: disp

    Dispersion model

    class(damping_param), intent(in) :: param

    Damping parameters

    type(realspace_cutoff), intent(in) :: cutoff

    Realspace cutoffs

    integer, intent(in) :: comm

    MPI communicator handle, users of mpi_f08 pass comm%mpi_val

    real(kind=wp), intent(out), contiguous :: energies(:)

    Dispersion energy

    real(kind=wp), intent(out), optional, contiguous :: gradient(:,:)

    Dispersion gradient

    real(kind=wp), intent(out), optional, contiguous :: sigma(:,:)

    Dispersion virial

    real(kind=wp), intent(out), optional, contiguous :: hessian(:,:)

    Dispersion hessian

  • private subroutine get_dispersion_mpi_scalar(error, mol, disp, param, cutoff, comm, energy, gradient, sigma, hessian)

    Calculate scalar dispersion energy distributed over a communicator

    Arguments

    Type IntentOptional Attributes Name
    type(error_type), intent(out), allocatable :: error

    Error handling

    class(structure_type), intent(in) :: mol

    Molecular structure data

    class(d3_model), intent(in) :: disp

    Dispersion model

    class(damping_param), intent(in) :: param

    Damping parameters

    type(realspace_cutoff), intent(in) :: cutoff

    Realspace cutoffs

    integer, intent(in) :: comm

    MPI communicator handle, users of mpi_f08 pass comm%mpi_val

    real(kind=wp), intent(out) :: energy

    Dispersion energy

    real(kind=wp), intent(out), optional, contiguous :: gradient(:,:)

    Dispersion gradient

    real(kind=wp), intent(out), optional, contiguous :: sigma(:,:)

    Dispersion virial

    real(kind=wp), intent(out), optional, contiguous :: hessian(:,:)

    Dispersion hessian


Subroutines

public subroutine get_counterpoise_mpi(error, mol, param, cutoff, comm, energy, gradient, sigma, hessian)

Calculate the geometric counterpoise correction distributed over a communicator

Arguments

Type IntentOptional Attributes Name
type(error_type), intent(out), allocatable :: error

Error handling

class(structure_type), intent(in) :: mol

Molecular structure data

type(gcp_param), intent(in) :: param

Geometric counterpoise parameters

type(realspace_cutoff), intent(in) :: cutoff

Realspace cutoffs

integer, intent(in) :: comm

MPI communicator handle, users of mpi_f08 pass comm%mpi_val

real(kind=wp), intent(out) :: energy

Counter-poise energy

real(kind=wp), intent(out), optional, contiguous :: gradient(:,:)

Counter-poise gradient

real(kind=wp), intent(out), optional, contiguous :: sigma(:,:)

Counter-poise virial

real(kind=wp), intent(out), optional, contiguous :: hessian(:,:)

Counter-poise hessian

public subroutine new_mpi_work_partition(error, partition, comm)

Create the work partition of the calling rank in a communicator

Arguments

Type IntentOptional Attributes Name
type(error_type), intent(out), allocatable :: error

Error handling

type(work_partition), intent(out) :: partition

New work partition

integer, intent(in) :: comm

MPI communicator handle, users of mpi_f08 pass comm%mpi_val