generic fragment
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | id | fragment id | |||
| integer, | public | :: | num_atoms | number of atoms | |||
| real(kind=dp), | public | :: | charge | total charge | |||
| type(atom_type), | public, | dimension(:), pointer | :: | atoms | array of atoms | 
intialize fragment
calculate fragment charge (perhaps test for closeness to integer)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(fragment_type), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | id | |||
| type(atom_type), | intent(in), | dimension(:), target | :: | atoms | 
compute the fragment centroid
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(fragment_type), | intent(in) | :: | this | 
compute the fragment center-of-mass
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(fragment_type), | intent(in) | :: | this | 
compute the fragment center-of-charge
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(fragment_type), | intent(in) | :: | this | 
    type :: fragment_type
        private
        !> fragment id
        integer, public :: id
        !> number of atoms
        integer, public :: num_atoms
        !> total charge
        real(dp), public :: charge
        !> array of atoms
        type(atom_type), dimension(:), pointer, public :: atoms
    contains
        private
        procedure, public :: init => init_fragment
        procedure, public :: centroid => fragment_centroid
        procedure, public :: center_of_mass => fragment_center_of_mass
        procedure, public :: center_of_charge => fragment_center_of_charge
    end type fragment_type