mimic_types Module

contains type definitions for MiMiC



Contents


Derived Types

type, public :: map_type

map for overlapping atoms, represents many-to-one relation

Components

TypeVisibilityAttributesNameInitial
integer, public :: id

id of the atom in the code, which should handle it

integer, public, dimension(:), allocatable:: codes

ids of codes in which this atom is present (excluding the current one)

integer, public, dimension(:), allocatable:: atoms

atom ids of this atom in other codes

Type-Bound Procedures

procedure, public :: init => init_map
procedure, public :: add_entry => add_map_entry
procedure, private :: copy => copy_map
generic, public :: assignment(=) => copy

type, public :: maps_type

collection of maps for overlap mapping (for one client)

Components

TypeVisibilityAttributesNameInitial
integer, public :: id

id - possibly redundant

type(map_type), public, dimension(:), allocatable:: maps

list of maps

Type-Bound Procedures

procedure, public :: add_entry => add_maps_entry
procedure, private :: copy => copy_maps
generic, public :: assignment(=) => copy

type, public :: bond_type

Components

TypeVisibilityAttributesNameInitial
integer, public :: atom_i

first atom of the bond

integer, public :: atom_j

second atom of the bond

real(kind=dp), public :: length

equilibrium length of the bond

Type-Bound Procedures

procedure, public :: copy => copy_bond
generic, public :: assignment(=) => copy

type, public :: angle_type

Components

TypeVisibilityAttributesNameInitial
integer, public :: atom_i

first atom of the angle

integer, public :: atom_j

second atom of the angle

integer, public :: atom_k

third atom of the angle

real(kind=dp), public :: angle

equilibrium value of the angle

Type-Bound Procedures

procedure, public :: copy => copy_angle
generic, public :: assignment(=) => copy

type, public :: sizes_type

system sizes type, used to allocate structures

Components

TypeVisibilityAttributesNameInitial
integer, public :: num_atoms =0

maximum number of atoms per MM species (after overlaps)

integer, public :: num_species =0

total number of species (after overlaps)

integer, public, dimension(:), allocatable:: atoms_pcode

total number of atoms per code

integer, public, dimension(:), allocatable:: multipoles_order

Maximal order of multipoles per code

integer, public, dimension(:), allocatable:: multipoles_patom

number of multipole values per atoms (computed from the order)

integer, public, dimension(:), allocatable:: frag_num

number of fragments per code

integer, public, dimension(:), allocatable:: atoms_pspecies

number of atoms per species

integer, public, dimension(:,:), allocatable:: atoms_pfragment

number of atoms per fragment per code

integer, public, dimension(:), allocatable:: nbonds_pcode

number of bond constraints per code

integer, public, dimension(:), allocatable:: nangles_pcode

number of angle constraints per code

integer, public, dimension(:), allocatable:: types_length_pcode

total length of the delimeted string with atom types

integer, public, dimension(:), allocatable:: types_pcode

total number of atom types in the system

integer, public :: id_start

ID of the atom to begin electrostatic treatment

integer, public :: id_end

ID of the atom to finish electrostatic treatment

type, public :: system_type

type holding the data about the system, used in allocation of internal structures

Components

TypeVisibilityAttributesNameInitial
integer, public, dimension(:, :), allocatable:: species

list of atomic species per atom and per code

integer, public, dimension(:,:,:), allocatable:: atom_fragment_ids

list of atom ids per fragment per code

real(kind=dp), public, dimension(:), allocatable:: masses

list of atomic masses per atom and per code

real(kind=dp), public, dimension(:,:,:), allocatable:: multipole_values

multipole values per atom per code

type(bond_type), public, dimension(:,:), allocatable:: bonds

list of bond constraints per code

type(angle_type), public, dimension(:,:), allocatable:: angles

list of angle constraints per code

character(len=:), public, dimension(:,:), allocatable:: atom_types

list of atom types per code

integer, public, dimension(:), allocatable:: elements

integer representation of element number

integer, public, dimension(:,:), allocatable:: species_map

mapping between classical and CPMD species


Subroutines

private pure subroutine init_map(this, id, codes, atoms)

Arguments

TypeIntentOptionalAttributesName
class(map_type), intent(inout) :: this
integer, intent(in) :: id
integer, intent(in), dimension(:):: codes
integer, intent(in), dimension(:):: atoms

private subroutine add_map_entry(this, code_id, atom_id)

add an overlap entry to the map

Arguments

TypeIntentOptionalAttributesName
class(map_type), intent(inout) :: this
integer, intent(in) :: code_id

id of the code, treating the overlapped atom

integer, intent(in) :: atom_id

id of an overlapped atom within its treating code

private subroutine copy_map(dest, source)

add an overlap entry to the map

Arguments

TypeIntentOptionalAttributesName
class(map_type), intent(out) :: dest
class(map_type), intent(in) :: source

private subroutine copy_maps(dest, source)

add an overlap entry to the map

Arguments

TypeIntentOptionalAttributesName
class(maps_type), intent(out) :: dest
class(maps_type), intent(in) :: source

private subroutine copy_bond(dest, source)

Arguments

TypeIntentOptionalAttributesName
class(bond_type), intent(out) :: dest
class(bond_type), intent(in) :: source

private subroutine copy_angle(dest, source)

Arguments

TypeIntentOptionalAttributesName
class(angle_type), intent(out) :: dest
class(angle_type), intent(in) :: source

private subroutine add_maps_entry(this, original_atom_id, target_code_id, target_atom_id)

add an entry to the maps collection

Arguments

TypeIntentOptionalAttributesName
class(maps_type), intent(inout) :: this
integer, intent(in) :: original_atom_id

id of an atom within its original code

integer, intent(in) :: target_code_id

id of the code which is going to treat this atom

integer, intent(in) :: target_atom_id

id of an atom within the target code