subsystem_type Derived Type

type, public :: subsystem_type

subsystem which is a collection of atoms


Contents

Source Code


Components

TypeVisibilityAttributesNameInitial
integer, public :: id

ID of the code

real(kind=dp), public :: factor

factor to be applied for forces contribution (most likely to be either 1.0 or -1.0)

integer, public :: num_atoms

total number of atoms within subsystem

type(atom_type), public, dimension(:), allocatable:: atoms

list of atoms

integer, public :: num_fragments

total number of fragments within subsystem

type(fragment_type), public, dimension(:), allocatable:: fragments

list of fragments in within subsystem

integer, public :: num_sr_atoms

number of short-range atoms

type(atom_type), public, dimension(:), allocatable:: sr_atoms

list of short-range atoms

integer, public :: num_sr_fragments

number of short-range fragments

type(fragment_type), public, dimension(:), allocatable:: sr_fragments

list of short-range fragments

integer, public :: num_lr_atoms

number of long-range atoms

type(atom_type), public, dimension(:), allocatable:: lr_atoms

list of long-range atoms

integer, public :: num_lr_fragments

number of long-range fragments

type(fragment_type), public, dimension(:), allocatable:: lr_fragments

list of long-range fragments


Type-Bound Procedures

procedure, public :: init => init_subsystem

  • private subroutine init_subsystem(this, id, factor, atoms)

    Arguments

    TypeIntentOptionalAttributesName
    class(subsystem_type), intent(inout) :: this
    integer, intent(in) :: id
    real(kind=dp), intent(in) :: factor
    type(atom_type), intent(in), dimension(:):: atoms

procedure, public :: define_fragments

  • private subroutine define_fragments(this, num_fragments, fragment_definitions)

    Arguments

    TypeIntentOptionalAttributesName
    class(subsystem_type), intent(inout) :: this
    integer, intent(in) :: num_fragments
    integer, intent(in), dimension(0:num_fragments):: fragment_definitions

Source Code

    type :: subsystem_type
        private
        !> ID of the code
        integer, public :: id
        !> factor to be applied for forces contribution
        !> (most likely to be either 1.0 or -1.0)
        real(dp), public :: factor
        !> total number of atoms within subsystem
        integer, public :: num_atoms
        !> list of atoms
        type(atom_type), dimension(:), allocatable, public :: atoms
        !> total number of fragments within subsystem
        integer, public :: num_fragments
        !> list of fragments in within subsystem
        type(fragment_type), dimension(:), allocatable, public :: fragments
        !> number of short-range atoms
        integer, public :: num_sr_atoms
        !> list of short-range atoms
        type(atom_type), dimension(:), allocatable, public :: sr_atoms
        !> number of short-range fragments
        integer, public :: num_sr_fragments
        !> list of short-range fragments
        type(fragment_type), dimension(:), allocatable, public :: sr_fragments
        !> number of long-range atoms
        integer, public :: num_lr_atoms
        !> list of long-range atoms
        type(atom_type), dimension(:), allocatable, public :: lr_atoms
        !> number of long-range fragments
        integer, public :: num_lr_fragments
        !> list of long-range fragments
        type(fragment_type), dimension(:), allocatable, public :: lr_fragments
    contains
        private
        procedure, public :: init => init_subsystem
        procedure, public :: define_fragments
    end type subsystem_type