Build fragment payload arrays for a given fragment index. Caller owns the returned fragment_indices and must deallocate it.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int64), | intent(in) | :: | fragment_idx | |||
| integer, | intent(in) | :: | polymers(:,:) | |||
| integer(kind=int32), | intent(out) | :: | fragment_type | |||
| integer(kind=int32), | intent(out) | :: | fragment_size | |||
| integer, | intent(out), | allocatable | :: | fragment_indices(:) |
Build fragment payload arrays for a given polymer row. Caller owns the returned fragment_indices and must deallocate it.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | polymer_row(:) | |||
| integer(kind=int32), | intent(out) | :: | fragment_type | |||
| integer(kind=int32), | intent(out) | :: | fragment_size | |||
| integer, | intent(out), | allocatable | :: | fragment_indices(:) |
Resolve group leader rank and group id for the given node leader rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(many_body_expansion_t), | intent(in) | :: | ctx | |||
| integer, | intent(in) | :: | node_rank | |||
| integer, | intent(out) | :: | group_leader_rank | |||
| integer, | intent(out) | :: | group_id |
Internal implementation of global_coordinator with typed context
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mbe_context_t), | intent(in) | :: | ctx | |||
| type(json_output_data_t), | intent(out), | optional | :: | json_data |
JSON output data |
Group-global coordinator for distributing a fragment shard to node coordinators.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(many_body_expansion_t), | intent(in) | :: | ctx |
Handle a single pending node coordinator request for a group shard, if any.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(many_body_expansion_t), | intent(in) | :: | ctx | |||
| type(queue_t), | intent(inout) | :: | fragment_queue | |||
| integer(kind=int64), | intent(in) | :: | group_fragment_ids(:) | |||
| integer, | intent(in) | :: | group_polymers(:,:) | |||
| integer, | intent(inout) | :: | finished_nodes |
Handle a single pending local worker request, if any.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mbe_context_t), | intent(in) | :: | ctx | |||
| type(queue_t), | intent(inout) | :: | fragment_queue | |||
| integer(kind=int64), | intent(inout) | :: | worker_fragment_map(:) | |||
| integer, | intent(inout) | :: | local_finished_workers |
Handle a single pending local worker request for a group shard, if any.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(many_body_expansion_t), | intent(in) | :: | ctx | |||
| type(queue_t), | intent(inout) | :: | fragment_queue | |||
| integer(kind=int64), | intent(in) | :: | group_fragment_ids(:) | |||
| integer, | intent(in) | :: | group_polymers(:,:) | |||
| integer(kind=int64), | intent(inout) | :: | worker_fragment_map(:) | |||
| integer, | intent(inout) | :: | local_finished_workers |
Drain results from local workers and update tracking state.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mbe_context_t), | intent(in) | :: | ctx | |||
| integer(kind=int64), | intent(inout) | :: | worker_fragment_map(:) | |||
| type(calculation_result_t), | intent(inout) | :: | results(:) | |||
| integer(kind=int64), | intent(inout) | :: | results_received | |||
| type(timer_type), | intent(in) | :: | coord_timer |
Handle a single pending node coordinator request, if any.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mbe_context_t), | intent(in) | :: | ctx | |||
| type(queue_t), | intent(inout) | :: | fragment_queue | |||
| integer, | intent(inout) | :: | finished_nodes |
Drain results from remote node coordinators and update tracking state.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mbe_context_t), | intent(in) | :: | ctx | |||
| type(calculation_result_t), | intent(inout) | :: | results(:) | |||
| integer(kind=int64), | intent(inout) | :: | results_received | |||
| type(timer_type), | intent(in) | :: | coord_timer |
Internal implementation of node_coordinator with typed context
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(many_body_expansion_t), | intent(in) | :: | ctx |
Internal implementation of node_worker with typed context
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(many_body_expansion_t), | intent(in) | :: | ctx |
Send fragment payload over the specified communicator/tag. Uses int64 for fragment_idx to handle large fragment indices.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(comm_t), | intent(in) | :: | comm | |||
| integer, | intent(in) | :: | tag | |||
| integer(kind=int64), | intent(in) | :: | fragment_idx | |||
| integer, | intent(in) | :: | polymers(:,:) | |||
| integer, | intent(in) | :: | dest_rank |
Send fragment payload over the specified communicator/tag using a polymer row.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(comm_t), | intent(in) | :: | comm | |||
| integer, | intent(in) | :: | tag | |||
| integer(kind=int64), | intent(in) | :: | fragment_idx | |||
| integer, | intent(in) | :: | polymer_row(:) | |||
| integer, | intent(in) | :: | dest_rank |
Send fragment data to remote node coordinator Uses int64 for fragment_idx to handle large fragment indices that overflow int32.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(comm_t), | intent(in) | :: | world_comm | |||
| integer(kind=int64), | intent(in) | :: | fragment_idx | |||
| integer, | intent(in) | :: | polymers(:,:) | |||
| integer, | intent(in) | :: | dest_rank |
Send fragment data to local worker Uses int64 for fragment_idx to handle large fragment indices that overflow int32.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(comm_t), | intent(in) | :: | node_comm | |||
| integer(kind=int64), | intent(in) | :: | fragment_idx | |||
| integer, | intent(in) | :: | polymers(:,:) | |||
| integer, | intent(in) | :: | dest_rank |
Process a single fragment for quantum chemistry calculation
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int64), | intent(in) | :: | fragment_idx |
Fragment index for identification |
||
| type(calculation_result_t), | intent(out) | :: | result |
Computation results |
||
| type(method_config_t), | intent(in) | :: | method_config |
Method configuration |
||
| type(physical_fragment_t), | intent(in), | optional | :: | phys_frag |
Fragment geometry |
|
| integer(kind=int32), | intent(in) | :: | calc_type |
Calculation type |
||
| type(comm_t), | intent(in), | optional | :: | world_comm |
MPI communicator for abort |
Global coordinator for distributing fragments to node coordinators will act as a node coordinator for a single node calculation Uses int64 for total_fragments to handle large fragment counts that overflow int32. Bond connectivity is accessed via ctx%sys_geom%bonds
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(*), | intent(in) | :: | ctx | |||
| type(json_output_data_t), | intent(out), | optional | :: | json_data |
JSON output data |
Node coordinator for distributing fragments to local workers Handles work requests and result collection from local workers
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(*), | intent(in) | :: | ctx |
Node worker for processing fragments assigned by node coordinator Bond connectivity is accessed via ctx%sys_geom%bonds
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(*), | intent(in) | :: | ctx |