Generalized Many-Body Expansion for overlapping fragments
Uses PIE (Principle of Inclusion-Exclusion) representation where each term is defined by atom indices with explicit coefficients from the inclusion-exclusion principle.
| 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) |
Clean up GMBE context
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(gmbe_context_t), | intent(inout) | :: | this |
Clean up base class resources
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(many_body_expansion_t), | intent(inout) | :: | this |
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 |
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 |
type, extends(many_body_expansion_t) :: gmbe_context_t !! Generalized Many-Body Expansion for overlapping fragments !! !! Uses PIE (Principle of Inclusion-Exclusion) representation where !! each term is defined by atom indices with explicit coefficients !! from the inclusion-exclusion principle. integer, allocatable :: pie_atom_sets(:, :) !! Unique atom sets (max_atoms, n_pie_terms) integer, allocatable :: pie_coefficients(:) !! PIE coefficient for each term (+1 or -1) integer(int64) :: n_pie_terms = 0 !! Number of unique PIE terms to evaluate contains procedure :: run_serial => gmbe_run_serial procedure :: run_distributed => gmbe_run_distributed procedure :: init => gmbe_init procedure :: destroy => gmbe_destroy end type gmbe_context_t