Abstract base for all many-body expansion methods
Encapsulates shared configuration for MBE and GMBE calculations. Concrete implementations provide specific fragment representations and expansion computation logic.
| 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) |
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 |
| 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 |
type, abstract :: many_body_expansion_t !! Abstract base for all many-body expansion methods !! !! Encapsulates shared configuration for MBE and GMBE calculations. !! Concrete implementations provide specific fragment representations !! and expansion computation logic. ! Required configuration type(method_config_t) :: method_config !! Method configuration (XTB settings, etc.) integer(int32) :: calc_type = 0 !! Calculation type (energy, gradient, hessian) ! System geometry (includes connectivity via sys_geom%bonds) type(system_geometry_t), allocatable :: sys_geom !! System geometry (coordinates, elements, fragments, bonds) ! MPI configuration (optional - for distributed calculations) type(resources_t), pointer :: resources => null() !! MPI communicators and hardware resources integer, allocatable :: node_leader_ranks(:) !! Ranks of processes that lead each compute node integer :: num_nodes = 1 !! Number of compute nodes ! Driver configuration (for Hessian parameters, etc.) type(driver_config_t), pointer :: driver_config => null() !! Driver configuration with calculation-specific settings contains ! Deferred procedures - must be implemented by subclasses procedure(run_serial_sub), deferred :: run_serial procedure(run_distributed_sub), deferred :: run_distributed ! Common procedures procedure :: has_mpi => mbe_base_has_mpi procedure :: has_geometry => mbe_base_has_geometry procedure :: destroy_base => mbe_base_destroy end type many_body_expansion_t