| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(Abstract_Periodic_Box), | private, | pointer | :: | periodic_box | => | null() | |
| class(Abstract_Box_Size_Memento), | private, | pointer | :: | box_size_memento | => | null() | |
| integer, | private | :: | reci_numbers(num_dimensions) | = | 0 | ||
| type(Component_Wrapper), | private, | pointer | :: | components(:) | => | null() | |
| logical, | private, | allocatable | :: | are_dipolar(:) | |||
| complex(kind=DP), | private, | allocatable | :: | structure(:,:,:) |
| procedure, public :: construct => Abstract_construct | |
| procedure, public :: destroy => Abstract_destroy | |
| procedure, public :: target => Abstract_target | |
| procedure, public :: reset => Abstract_reset | |
| procedure, public :: is_dipolar => Abstract_is_dipolar | |
| procedure, public :: get => Abstract_get | |
| procedure, public :: update_translation => Abstract_update_translation | |
| procedure, public :: update_transmutation => Abstract_update_transmutation | |
| procedure, public :: update_rotation => Abstract_update_rotation | |
| procedure, public :: update_add => Abstract_update_add | |
| procedure, public :: update_remove => Abstract_update_remove | |
| procedure, public :: update_switch => Abstract_update_switch | |
| procedure, private :: update_exchange => Abstract_update_exchange |
| procedure, public :: construct => Abstract_construct | |
| procedure, public :: destroy => Abstract_destroy | |
| procedure, public :: target => Abstract_target | |
| procedure, public :: reset => Abstract_reset | |
| procedure, public :: is_dipolar => Abstract_is_dipolar | |
| procedure, public :: get => Abstract_get | |
| procedure, public :: update_translation => Abstract_update_translation | |
| procedure, public :: update_transmutation => Abstract_update_transmutation | |
| procedure, public :: update_rotation => Abstract_update_rotation | |
| procedure, public :: update_add => Abstract_update_add | |
| procedure, public :: update_remove => Abstract_update_remove | |
| procedure, public :: update_switch => Abstract_update_switch |
| procedure, public :: update_rotation => Abstract_update_rotation | |
| procedure, public :: update_add => Abstract_update_add | |
| procedure, public :: update_remove => Abstract_update_remove | |
| procedure, public :: construct => Null_construct | |
| procedure, public :: destroy => Null_destroy | |
| procedure, public :: target => Null_target | |
| procedure, public :: reset => Null_reset | |
| procedure, public :: is_dipolar => Null_is_dipolar | |
| procedure, public :: get => Null_get | |
| procedure, public :: update_translation => Null_update_translation | |
| procedure, public :: update_transmutation => Null_update_transmutation | |
| procedure, public :: update_switch => Null_update_switch | |
| procedure, private :: update_exchange => Null_update_exchange |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | i_component |
Structure factor: \[ S(\vec{k}) = \sum_{\vec{x}, \vec{\mu}} (\vec{k}\cdot\vec{\mu}) e^{i\vec{k}\cdot\vec{x}} \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | n_1 | |||
| integer, | intent(in) | :: | n_2 | |||
| integer, | intent(in) | :: | n_3 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Structure), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | i_component |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Structure), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | n_1 | |||
| integer, | intent(in) | :: | n_2 | |||
| integer, | intent(in) | :: | n_3 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(out) | :: | this | |||
| class(Abstract_Periodic_Box), | intent(in) | :: | periodic_box | |||
| class(Abstract_Box_Size_Memento), | intent(in) | :: | box_size_memento | |||
| class(Abstract_Reciprocal_Lattice), | intent(in) | :: | reciprocal_lattice | |||
| type(Component_Wrapper), | intent(in) | :: | components(:) | |||
| logical, | intent(in) | :: | are_dipolar(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(inout) | :: | this | |||
| class(Abstract_Periodic_Box), | intent(in), | target | :: | periodic_box | ||
| class(Abstract_Box_Size_Memento), | intent(in), | target | :: | box_size_memento | ||
| type(Component_Wrapper), | intent(in), | target | :: | components(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(inout) | :: | this |
Structure factor update when a particle is translated: \( (\vec{x}, \vec{\mu}) \to (\vec{x}^\prime, \vec{\mu}) \). \[ \Delta S(\vec{k}) = (\vec{k}\cdot\vec{\mu}) \left( e^{i\vec{k}\cdot\vec{x}^\prime} - e^{i\vec{k}\cdot\vec{x}} \right) \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| real(kind=DP), | intent(in) | :: | new_position(:) | |||
| type(Concrete_Particle), | intent(in) | :: | old |
Structure factor update when a particle is transmuted: \( (\vec{x}, \vec{\mu}) \to (\vec{x}, \vec{\mu}^\prime) \). \[ \Delta S(\vec{k}) = \vec{k}\cdot(\vec{\mu}^\prime - \vec{\mu}) e^{i\vec{k}\cdot\vec{x}} \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | ij_components(:) | |||
| real(kind=DP), | intent(in) | :: | new_dipole_moment(:) | |||
| type(Concrete_Particle), | intent(in) | :: | old |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| real(kind=DP), | intent(in) | :: | new_dipole_moment(:) | |||
| type(Concrete_Particle), | intent(in) | :: | old |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| type(Concrete_Particle), | intent(in) | :: | particle |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| type(Concrete_Particle), | intent(in) | :: | particle |
Structure factor update when a particle of coordinates \( (\vec{x}, \vec{\mu}) \) is added (\( + )\) or removed (\( - \)). \[ \Delta S(\vec{k}) = \pm (\vec{k}\cdot\vec{\mu}) e^{i\vec{k}\cdot\vec{x}} \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| type(Concrete_Particle), | intent(in) | :: | particle | |||
| real(kind=DP), | intent(in) | :: | signed |
Structure factor update when 2 particles of coordinates \( (\vec{x}_1, \vec{\mu}_1) \) and \( (\vec{x}_2, \vec{\mu}_2) \) are switched. \[ \Delta S(\vec{k}) = \vec{k}\cdot(\vec{\mu}_1 - \vec{\mu}_2) \left( e^{i\vec{k}\cdot\vec{x}_2} - e^{i\vec{k}\cdot\vec{x}_1} \right) \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Structure), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | ij_components(:) | |||
| type(Concrete_Particle), | intent(in) | :: | particles(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Structure), | intent(out) | :: | this | |||
| class(Abstract_Periodic_Box), | intent(in) | :: | periodic_box | |||
| class(Abstract_Box_Size_Memento), | intent(in) | :: | box_size_memento | |||
| class(Abstract_Reciprocal_Lattice), | intent(in) | :: | reciprocal_lattice | |||
| type(Component_Wrapper), | intent(in) | :: | components(:) | |||
| logical, | intent(in) | :: | are_dipolar(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Structure), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Structure), | intent(inout) | :: | this | |||
| class(Abstract_Periodic_Box), | intent(in), | target | :: | periodic_box | ||
| class(Abstract_Box_Size_Memento), | intent(in), | target | :: | box_size_memento | ||
| type(Component_Wrapper), | intent(in), | target | :: | components(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Structure), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Structure), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| real(kind=DP), | intent(in) | :: | new_position(:) | |||
| type(Concrete_Particle), | intent(in) | :: | old |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Structure), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | ij_components(:) | |||
| real(kind=DP), | intent(in) | :: | new_dipole_moment(:) | |||
| type(Concrete_Particle), | intent(in) | :: | old |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Structure), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| type(Concrete_Particle), | intent(in) | :: | particle | |||
| real(kind=DP), | intent(in) | :: | signed |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Structure), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | ij_components(:) | |||
| type(Concrete_Particle), | intent(in) | :: | particles(:) |