Boxes size exchange such that: \[ \ln \left( \frac{V_{\boldsymbol{I}}^\prime}{V_{\boldsymbol{J}}^\prime} \right) = \ln \left( \frac{V_{\boldsymbol{I}}}{V_{\boldsymbol{J}}} \right) + \mathrm{rand}[-1/2, +1/2] \delta \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_Exchanged_Boxes_Size), | intent(in) | :: | this | \( \vec{L}_{\boldsymbol{I}} / \vec{L}_{\boldsymbol{J}} \) |
||
| real(kind=DP), | intent(in) | :: | boxes_size_ratio(:) |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=DP), | private | :: | frequency_ratio | = | 0._DP | ||
| real(kind=DP), | private | :: | delta | = | 0._DP | ||
| type(Concrete_Move_Tuning_Parameters), | private | :: | tuning_parameters | ||||
| real(kind=DP), | private | :: | current_increase_factor | = | 1._DP | ||
| logical, | private | :: | max_factor_reached | = | .false. |
| procedure, public :: set => Abstract_set | |
| procedure, public :: get_frequency_ratio => Abstract_get_frequency_ratio | |
| procedure(Abstract_get_ratios), public :: get_ratios | |
| procedure, public :: increase_delta => Abstract_increase_delta | |
| procedure, public :: decrease_delta => Abstract_decrease_delta |
| procedure, public :: set => Abstract_set | |
| procedure, public :: get_frequency_ratio => Abstract_get_frequency_ratio | |
| procedure, public :: increase_delta => Abstract_increase_delta | |
| procedure, public :: decrease_delta => Abstract_decrease_delta | |
| procedure, public :: get_ratios => XYZ_get_ratios |
| procedure, public :: set => Abstract_set | |
| procedure, public :: get_frequency_ratio => Abstract_get_frequency_ratio | |
| procedure, public :: increase_delta => Abstract_increase_delta | |
| procedure, public :: decrease_delta => Abstract_decrease_delta | |
| procedure, public :: get_ratios => XY_get_ratios |
| procedure, public :: set => Null_set | |
| procedure, public :: get_frequency_ratio => Null_get_frequency_ratio | |
| procedure, public :: get_ratios => Null_get_ratios | |
| procedure, public :: increase_delta => Null_increase_delta | |
| procedure, public :: decrease_delta => Null_decrease_delta |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(Abstract_Exchanged_Boxes_Size), | public, | allocatable | :: | exchanged |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(Exchanged_Boxes_Size_Wrapper), | public, | allocatable | :: | line(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_Exchanged_Boxes_Size), | intent(in) | :: | this |
\[ \frac{V_{\boldsymbol{I}}^\prime}{V_{\boldsymbol{I}}} = \frac{\left( 1 + \frac{V_{\boldsymbol{I}}}{V_{\boldsymbol{J}}} \right) e^{\mathrm{rand}[-1/2, +1/2] \delta}} {1 + \frac{V_{\boldsymbol{I}}} {V_{\boldsymbol{J}}}e^{\mathrm{rand}[-1/2, +1/2] \delta}} \] \[ \frac{V_{\boldsymbol{J}}^\prime}{V_{\boldsymbol{J}}} = \frac{V_{\boldsymbol{I}}^\prime}{V_{\boldsymbol{I}}} e^{-\mathrm{rand}[-1/2, +1/2] \delta} \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(XYZ_Exchanged_Boxes_Size), | intent(in) | :: | this | |||
| real(kind=DP), | intent(in) | :: | boxes_size_ratio(:) |
\[ \frac{S_{\boldsymbol{I}}^\prime}{S_{\boldsymbol{I}}} = \frac{\left( 1 + \frac{S_{\boldsymbol{I}}}{S_{\boldsymbol{J}}} \right) e^{\mathrm{rand}[-1/2, +1/2] \delta}} {1 + \frac{S_{\boldsymbol{I}}}{S_{\boldsymbol{J}}} e^{\mathrm{rand}[-1/2, +1/2] \delta}} \] \[ \frac{S_{\boldsymbol{J}}^\prime}{S_{\boldsymbol{J}}} = \frac{S_{\boldsymbol{I}}^\prime}{S_{\boldsymbol{I}}} e^{-\mathrm{rand}[-1/2, +1/2] \delta} \]
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(XY_Exchanged_Boxes_Size), | intent(in) | :: | this | |||
| real(kind=DP), | intent(in) | :: | boxes_size_ratio(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_Exchanged_Boxes_Size), | intent(in) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_Exchanged_Boxes_Size), | intent(in) | :: | this | |||
| real(kind=DP), | intent(in) | :: | boxes_size_ratio(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_Exchanged_Boxes_Size), | intent(out) | :: | this | |||
| real(kind=DP), | intent(in) | :: | frequency_ratio | |||
| real(kind=DP), | intent(in) | :: | initial_delta | |||
| type(Concrete_Move_Tuning_Parameters), | intent(in) | :: | tuning_parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_Exchanged_Boxes_Size), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Abstract_Exchanged_Boxes_Size), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_Exchanged_Boxes_Size), | intent(out) | :: | this | |||
| real(kind=DP), | intent(in) | :: | frequency_ratio | |||
| real(kind=DP), | intent(in) | :: | initial_delta | |||
| type(Concrete_Move_Tuning_Parameters), | intent(in) | :: | tuning_parameters |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_Exchanged_Boxes_Size), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(Null_Exchanged_Boxes_Size), | intent(inout) | :: | this |