dftd3_partition Module

Work partitioning for externally distributed dispersion calculations


Uses


Variables

Type Visibility Attributes Name Initial
type(work_partition), public, parameter :: serial_work_partition = work_partition()

Complete work of an ordinary serial calculation, equivalent to omitting the partition entirely


Derived Types

type, public ::  work_partition

Cyclic partition of the work of a dispersion calculation.

Read more…

type, public, abstract ::  work_reducer

Communication backend of a partitioned calculation.

Read more…

Type-Bound Procedures

procedure(reduce_interface), public, deferred :: reduce

Functions

public elemental function owns_index(partition, idx) result(owned)

Whether this part owns a one-dimensional unit of work

Arguments

Type IntentOptional Attributes Name
type(work_partition), intent(in), optional :: partition

Work partition, absent selects the complete work

integer, intent(in) :: idx

One-based index of the unit of work

Return Value logical

Whether this part owns the unit of work

public elemental function owns_pair(partition, iat, jat) result(owned)

Whether this part owns a symmetry-reduced atom pair

Arguments

Type IntentOptional Attributes Name
type(work_partition), intent(in), optional :: partition

Work partition, absent selects the complete work

integer, intent(in) :: iat

Atom indices of the pair, with jat <= iat

integer, intent(in) :: jat

Atom indices of the pair, with jat <= iat

Return Value logical

Whether this part owns the pair


Subroutines

public subroutine new_work_partition(error, partition, part, nparts)

Create a work partition

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) :: part

Zero-based index of this part

integer, intent(in) :: nparts

Total number of parts