| 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 | ||
| class(Abstract_DES_Reci_Weight), | private, | pointer | :: | weight | => | null() | |
| class(Abstract_DES_Reci_Structure), | private, | pointer | :: | structure | => | null() |
| procedure, public :: construct => Abstract_construct | |
| procedure, public :: destroy => Abstract_destroy | |
| procedure, public :: target => Abstract_target | |
| procedure, public :: visit => Abstract_visit | |
| procedure, public :: visit_translation => Abstract_visit_translation | |
| procedure, public :: visit_transmutation => Abstract_visit_transmutation | |
| procedure, public :: visit_rotation => Abstract_visit_rotation | |
| procedure, public :: visit_add => Abstract_visit_add | |
| procedure, public :: visit_remove => Abstract_visit_remove | |
| procedure, public :: visit_switch => Abstract_visit_switch | |
| procedure, private :: visit_exchange => Abstract_visit_exchange |
| procedure, public :: construct => Abstract_construct | |
| procedure, public :: destroy => Abstract_destroy | |
| procedure, public :: target => Abstract_target | |
| procedure, public :: visit => Abstract_visit | |
| procedure, public :: visit_translation => Abstract_visit_translation | |
| procedure, public :: visit_transmutation => Abstract_visit_transmutation | |
| procedure, public :: visit_rotation => Abstract_visit_rotation | |
| procedure, public :: visit_add => Abstract_visit_add | |
| procedure, public :: visit_remove => Abstract_visit_remove | |
| procedure, public :: visit_switch => Abstract_visit_switch |
| procedure, public :: visit_rotation => Abstract_visit_rotation | |
| procedure, public :: visit_add => Abstract_visit_add | |
| procedure, public :: visit_remove => Abstract_visit_remove | |
| procedure, public :: construct => Null_construct | |
| procedure, public :: destroy => Null_destroy | |
| procedure, public :: target => Null_target | |
| procedure, public :: visit => Null_visit | |
| procedure, public :: visit_translation => Null_visit_translation | |
| procedure, public :: visit_transmutation => Null_visit_transmutation | |
| procedure, public :: visit_switch => Null_visit_switch | |
| procedure, private :: visit_exchange => Null_visit_exchange |
\[ U = \sum_{\vec{k}} w_\alpha(\vec{k}) |S(\vec{k})|^2 \] where \( w_\alpha(\vec{k}) \) is Abstract_DES_Reci_Weight and \( S(\vec{k}) \) is Abstract_DES_Reci_Structure.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Visitor), | intent(in) | :: | this |
Energy delta when a particle is translated: \( (\vec{x}, \vec{\mu}) \to (\vec{x}^\prime, \vec{\mu}) \). \[ \Delta U = 2 \sum_{\vec{k}} w_\alpha(\vec{k}) (\vec{k}\cdot\vec{\mu}) \left\{ \Re\left[ \left( e^{i\vec{k}\cdot\vec{x}^\prime} - e^{i\vec{k}\cdot\vec{x}} \right) S^\ast(\vec{k}) \right] + (\vec{k}\cdot\vec{\mu})\left[ 1 - \Re\left( e^{i\vec{k}\cdot\vec{x}^\prime} e^{-i\vec{k}\cdot\vec{x}} \right) \right] \right\} \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Visitor), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| real(kind=DP), | intent(in) | :: | new_position(:) | |||
| type(Concrete_Particle), | intent(in) | :: | old |
Energy delta when a particle is transmuted: \( (\vec{x}, \vec{\mu}) \to (\vec{x}, \vec{\mu}^\prime) \). \[ \Delta U = \sum_{\vec{k}} w_\alpha(\vec{k}) \vec{k}\cdot(\vec{\mu}^\prime - \vec{\mu}) \left[ 2\Re\left( e^{i\vec{k}\cdot\vec{x}} S^\ast(\vec{k}) \right) + \vec{k}\cdot(\vec{\mu}^\prime - \vec{\mu}) \right] \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Visitor), | intent(in) | :: | 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_Visitor), | intent(in) | :: | 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_Visitor), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| type(Concrete_Particle), | intent(in) | :: | particle |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Visitor), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| type(Concrete_Particle), | intent(in) | :: | particle |
Energy delta when a particle of coordinates \( (\vec{x}, \vec{\mu}) \) is added (\( + \)) or removed (\( - \)). \[ \Delta U = \sum_{\vec{k}} w_\alpha(\vec{k}) (\vec{k} \cdot \vec{\mu}) \left[ \pm 2 \Re\left( e^{i\vec{k}\cdot\vec{x}} S^\ast(\vec{k}) \right) + (\vec{k} \cdot \vec{\mu}) \right] \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Visitor), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | i_component | |||
| type(Concrete_Particle), | intent(in) | :: | particle | |||
| real(kind=DP), | intent(in) | :: | signed |
Energy delta when 2 particles of coordinates \( (\vec{x}_1, \vec{\mu}_1) \) and \( (\vec{x}_2, \vec{\mu}_2) \) switch their positions. \[ \Delta U = 2 \sum_{\vec{k}} w_\alpha(\vec{k}) \vec{k}\cdot(\vec{\mu}_1 - \vec{\mu}_2) \left\{ \Re\left[ \left(e^{i\vec{k}\cdot\vec{x}_2} - e^{i\vec{k}\cdot\vec{x}_1} \right) S^\ast(\vec{k}) \right] + \vec{k}\cdot(\vec{\mu}_1 - \vec{\mu}_2) \left[ 1 - \Re\left( e^{i\vec{k}\cdot\vec{x}_1} e^{-i\vec{k}\cdot\vec{x}_2} \right) \right] \right\} \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Visitor), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | ij_components(:) | |||
| type(Concrete_Particle), | intent(in) | :: | particles(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Visitor), | intent(in) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Visitor), | intent(in) | :: | 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_Visitor), | intent(in) | :: | 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_Visitor), | intent(in) | :: | 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_Visitor), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | ij_components(:) | |||
| type(Concrete_Particle), | intent(in) | :: | particles(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Visitor), | intent(out) | :: | this | |||
| class(Abstract_Periodic_Box), | intent(in), | target | :: | periodic_box | ||
| class(Abstract_Box_Size_Memento), | intent(in) | :: | box_size_memento | |||
| class(Abstract_Reciprocal_Lattice), | intent(in) | :: | reciprocal_lattice | |||
| class(Abstract_DES_Reci_Weight), | intent(in) | :: | weight | |||
| class(Abstract_DES_Reci_Structure), | intent(in) | :: | structure |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Visitor), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_DES_Reci_Visitor), | intent(inout) | :: | this | |||
| class(Abstract_Box_Size_Memento), | intent(in), | target | :: | box_size_memento | ||
| class(Abstract_DES_Reci_Weight), | intent(in), | target | :: | weight | ||
| class(Abstract_DES_Reci_Structure), | intent(in), | target | :: | structure |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Visitor), | intent(out) | :: | this | |||
| class(Abstract_Periodic_Box), | intent(in), | target | :: | periodic_box | ||
| class(Abstract_Box_Size_Memento), | intent(in) | :: | box_size_memento | |||
| class(Abstract_Reciprocal_Lattice), | intent(in) | :: | reciprocal_lattice | |||
| class(Abstract_DES_Reci_Weight), | intent(in) | :: | weight | |||
| class(Abstract_DES_Reci_Structure), | intent(in) | :: | structure |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Visitor), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_DES_Reci_Visitor), | intent(inout) | :: | this | |||
| class(Abstract_Box_Size_Memento), | intent(in), | target | :: | box_size_memento | ||
| class(Abstract_DES_Reci_Weight), | intent(in), | target | :: | weight | ||
| class(Abstract_DES_Reci_Structure), | intent(in), | target | :: | structure |