In Abstract_visit, Abstract_visit_translation, Abstract_visit_transmutation, Abstract_visit_switch, Abstract_visit_exchange only half wave vectors are visited (symmetry). Hence energy is doubled.
| 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() |
| 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 |
\[ 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 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(:) |
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 |