Provides an abstract base class for all many-body expansion methods with concrete implementations for standard MBE and generalized MBE (GMBE).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(many_body_expansion_t), | intent(inout) | :: | this | |||
| type(json_output_data_t), | intent(out), | optional | :: | json_data |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(many_body_expansion_t), | intent(inout) | :: | this | |||
| type(json_output_data_t), | intent(out), | optional | :: | json_data |
Generalized Many-Body Expansion for overlapping fragments
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=int32), | public | :: | calc_type | = | 0 |
Calculation type (energy, gradient, hessian) |
|
| type(driver_config_t), | public, | pointer | :: | driver_config | => | null() |
Driver configuration with calculation-specific settings |
| type(method_config_t), | public | :: | method_config |
Method configuration (XTB settings, etc.) |
|||
| integer(kind=int64), | public | :: | n_pie_terms | = | 0 |
Number of unique PIE terms to evaluate |
|
| integer, | public, | allocatable | :: | node_leader_ranks(:) |
Ranks of processes that lead each compute node |
||
| integer, | public | :: | num_nodes | = | 1 |
Number of compute nodes |
|
| integer, | public, | allocatable | :: | pie_atom_sets(:,:) |
Unique atom sets (max_atoms, n_pie_terms) |
||
| integer, | public, | allocatable | :: | pie_coefficients(:) |
PIE coefficient for each term (+1 or -1) |
||
| type(resources_t), | public, | pointer | :: | resources | => | null() |
MPI communicators and hardware resources |
| type(system_geometry_t), | public, | allocatable | :: | sys_geom |
System geometry (coordinates, elements, fragments, bonds) |
| procedure, public :: destroy => gmbe_destroy | |
| procedure, public :: destroy_base => mbe_base_destroy | |
| procedure, public :: has_geometry => mbe_base_has_geometry | |
| procedure, public :: has_mpi => mbe_base_has_mpi | |
| procedure, public :: init => gmbe_init | |
| procedure, public :: run_distributed => gmbe_run_distributed | |
| procedure, public :: run_serial => gmbe_run_serial |
Abstract base for all many-body expansion methods
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=int32), | public | :: | calc_type | = | 0 |
Calculation type (energy, gradient, hessian) |
|
| type(driver_config_t), | public, | pointer | :: | driver_config | => | null() |
Driver configuration with calculation-specific settings |
| type(method_config_t), | public | :: | method_config |
Method configuration (XTB settings, etc.) |
|||
| integer, | public, | allocatable | :: | node_leader_ranks(:) |
Ranks of processes that lead each compute node |
||
| integer, | public | :: | num_nodes | = | 1 |
Number of compute nodes |
|
| type(resources_t), | public, | pointer | :: | resources | => | null() |
MPI communicators and hardware resources |
| type(system_geometry_t), | public, | allocatable | :: | sys_geom |
System geometry (coordinates, elements, fragments, bonds) |
| procedure, public :: destroy_base => mbe_base_destroy | |
| procedure, public :: has_geometry => mbe_base_has_geometry | |
| procedure, public :: has_mpi => mbe_base_has_mpi | |
| procedure(run_distributed_sub), public, deferred :: run_distributed | |
| procedure(run_serial_sub), public, deferred :: run_serial |
Standard Many-Body Expansion for non-overlapping fragments
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=int32), | public | :: | calc_type | = | 0 |
Calculation type (energy, gradient, hessian) |
|
| type(driver_config_t), | public, | pointer | :: | driver_config | => | null() |
Driver configuration with calculation-specific settings |
| integer, | public | :: | max_level | = | 0 |
Maximum MBE level (e.g., 2 for dimers, 3 for trimers) |
|
| type(method_config_t), | public | :: | method_config |
Method configuration (XTB settings, etc.) |
|||
| integer, | public, | allocatable | :: | node_leader_ranks(:) |
Ranks of processes that lead each compute node |
||
| integer, | public | :: | num_nodes | = | 1 |
Number of compute nodes |
|
| integer, | public, | allocatable | :: | polymers(:,:) |
Fragment composition array (fragment_idx, monomer_indices) |
||
| type(resources_t), | public, | pointer | :: | resources | => | null() |
MPI communicators and hardware resources |
| type(system_geometry_t), | public, | allocatable | :: | sys_geom |
System geometry (coordinates, elements, fragments, bonds) |
||
| integer(kind=int64), | public | :: | total_fragments | = | 0 |
Total number of fragments to process |
| procedure, public :: destroy => mbe_destroy | |
| procedure, public :: destroy_base => mbe_base_destroy | |
| procedure, public :: has_geometry => mbe_base_has_geometry | |
| procedure, public :: has_mpi => mbe_base_has_mpi | |
| procedure, public :: init => mbe_init | |
| procedure, public :: run_distributed => mbe_run_distributed | |
| procedure, public :: run_serial => mbe_run_serial |
Check if system geometry is available
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(many_body_expansion_t), | intent(in) | :: | this |
Check if MPI resources are available
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(many_body_expansion_t), | intent(in) | :: | this |
Clean up GMBE context
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(gmbe_context_t), | intent(inout) | :: | this |
Initialize GMBE context with required configuration
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(gmbe_context_t), | intent(out) | :: | this | |||
| type(method_config_t), | intent(in) | :: | method_config | |||
| integer(kind=int32), | intent(in) | :: | calc_type |
Run distributed GMBE calculation
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(gmbe_context_t), | intent(inout) | :: | this | |||
| type(json_output_data_t), | intent(out), | optional | :: | json_data |
Run serial GMBE calculation
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(gmbe_context_t), | intent(inout) | :: | this | |||
| type(json_output_data_t), | intent(out), | optional | :: | json_data |
Clean up base class resources
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(many_body_expansion_t), | intent(inout) | :: | this |
Clean up MBE context
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mbe_context_t), | intent(inout) | :: | this |
Initialize MBE context with required configuration
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mbe_context_t), | intent(out) | :: | this | |||
| type(method_config_t), | intent(in) | :: | method_config | |||
| integer(kind=int32), | intent(in) | :: | calc_type |
Run distributed MBE calculation
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mbe_context_t), | intent(inout) | :: | this | |||
| type(json_output_data_t), | intent(out), | optional | :: | json_data |
Run serial MBE calculation
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mbe_context_t), | intent(inout) | :: | this | |||
| type(json_output_data_t), | intent(out), | optional | :: | json_data |