| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(Abstract_Periodic_Box), | private, | pointer | :: | periodic_box | => | null() | |
| integer, | private | :: | reci_numbers(2) | = | 0 | ||
| type(Component_Wrapper), | private, | pointer | :: | components(:) | => | null() | |
| logical, | private, | allocatable | :: | are_dipolar(:) | |||
| complex(kind=DP), | private, | dimension(:, :), allocatable | :: | structure_p | |||
| complex(kind=DP), | private, | dimension(:, :), allocatable | :: | structure_m |
| 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_plus => Abstract_get_plus | |
| procedure, public :: get_minus => Abstract_get_minus | |
| 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_plus => Abstract_get_plus | |
| procedure, public :: get_minus => Abstract_get_minus | |
| 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_plus => Null_get | |
| procedure, public :: get_minus => 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_DLC_Structures), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | i_component |
Structure factors \[ S_\pm(\vec{k}_{1:2}) = \sum_{\vec{x}, \vec{\mu}} (\pm k_{1:2} \mu_3 + i \vec{k}_{1:2} \cdot \vec{\mu}_{1:2}) e^{\pm k_{1:2} x_3} e^{i \vec{k}_{1:2} \cdot \vec{x}_{1:2}} \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DLC_Structures), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | n_1 | |||
| integer, | intent(in) | :: | n_2 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DLC_Structures), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | n_1 | |||
| integer, | intent(in) | :: | n_2 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DLC_Structures), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | i_component |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DLC_Structures), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | n_1 | |||
| integer, | intent(in) | :: | n_2 |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DLC_Structures), | intent(out) | :: | this | |||
| class(Abstract_Periodic_Box), | intent(in) | :: | periodic_box | |||
| 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_DLC_Structures), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DLC_Structures), | intent(inout) | :: | this | |||
| class(Abstract_Periodic_Box), | intent(in), | target | :: | periodic_box | ||
| type(Component_Wrapper), | intent(in), | target | :: | components(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DLC_Structures), | intent(inout) | :: | this |
Structure factors update when a particle is translated: \( (\vec{x}, \vec{\mu}) \to (\vec{x}^\prime, \vec{\mu}) \). \[ \Delta S_\pm(\vec{k}_{1:2}) = (\pm k_{1:2} \mu_3 + i \vec{k}_{1:2} \cdot \vec{\mu}_{1:2}) \left( e^{\pm k_{1:2} x^\prime_3} e^{i \vec{k}_{1:2} \cdot \vec{x}^\prime_{1:2}} - e^{\pm k_{1:2} x_3} e^{i \vec{k}_{1:2} \cdot \vec{x}_{1:2}} \right) \] Warning: only half wave vectors are updated.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DLC_Structures), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| real(kind=DP), | intent(in) | :: | new_position(:) | |||
| type(Concrete_Particle), | intent(in) | :: | old |
Structure factors update when a particle is transmuted: \( (\vec{x}, \vec{\mu}) \to (\vec{x}, \vec{\mu}^\prime) \). \[ \Delta S_\pm(\vec{k}_{1:2}) = \left[ \pm k_{1:2} (\mu^\prime_3 - \mu_3) + i \vec{k}_{1:2} \cdot (\vec{\mu}^\prime_{1:2} - \vec{\mu}_{1:2}) \right] e^{\pm k_{1:2} x_3} e^{i \vec{k}_{1:2} \cdot \vec{x}_{1:2}} \] Warning: only half wave vectors are updated.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DLC_Structures), | 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_DLC_Structures), | 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_DLC_Structures), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| type(Concrete_Particle), | intent(in) | :: | particle |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DLC_Structures), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| type(Concrete_Particle), | intent(in) | :: | particle |
Structure factors update when a particle of coordinates \( (\vec{x}, \vec{\mu}) \) is added (\( + )\) or removed (\( - \)): \[ \Delta S_\pm(\vec{k}_{1:2}) = {\bf\pm} (\pm k_{1:2} \mu_3 + i \vec{k}_{1:2} \cdot \vec{\mu}_{1:2}) e^{\pm k_{1:2} x_3} e^{i \vec{k}_{1:2} \cdot \vec{x}_{1:2}}. \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DLC_Structures), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| type(Concrete_Particle), | intent(in) | :: | particle | |||
| real(kind=DP), | intent(in) | :: | signed |
Structure factors update when 2 particles of coordinates \( (\vec{x}_1, \vec{\mu}_1) \) and \( (\vec{x}_2, \vec{\mu}_2) \) are switched. \[ \Delta S_\pm(\vec{k}_{1:2}) = \left[ \pm k_{1:2} (\mu_{1, 3} - \mu_{2, 3}) + i \vec{k}_{1:2} \cdot (\vec{\mu}_{1, 1:2} - \vec{\mu}_{2, 1:2}) \right] \\ \left( e^{\pm k_{1:2} x_{2, 3}} e^{i \vec{k}_{1:2} \cdot \vec{x}_{2, 1:2}} - e^{\pm k_{1:2} x_{1, 3}} e^{i \vec{k}_{1:2} \cdot \vec{x}_{1, 1:2}} \right) \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DLC_Structures), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | ij_components(:) | |||
| type(Concrete_Particle), | intent(in) | :: | particles(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DLC_Structures), | intent(out) | :: | this | |||
| class(Abstract_Periodic_Box), | intent(in) | :: | periodic_box | |||
| 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_DLC_Structures), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DLC_Structures), | intent(inout) | :: | this | |||
| class(Abstract_Periodic_Box), | intent(in), | target | :: | periodic_box | ||
| type(Component_Wrapper), | intent(in), | target | :: | components(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DLC_Structures), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DLC_Structures), | 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_DLC_Structures), | 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_DLC_Structures), | 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_DLC_Structures), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | ij_components(:) | |||
| type(Concrete_Particle), | intent(in) | :: | particles(:) |