|
YAC 3.14.0
Yet Another Coupler
|
#include "config.h"#include <stdlib.h>#include <stdio.h>#include <string.h>#include <mpi.h>#include "utils_core.h"#include "yac.h"#include "instance.h"#include "event.h"#include "yac_mpi_common.h"#include "fields.h"#include "component.h"#include "config_yaml.h"#include "interpolation/interpolation_exchange.h"#include "interpolation/interpolation_internal.h"#include "interpolation/interpolation_gen_config_internal.h"
Go to the source code of this file.
Data Structures | |
| struct | yac_instance |
| struct | comp_grid_config |
| struct | comp_grid_pair_config |
| struct | field_config_event_data |
| struct | src_field_config |
| struct | tgt_field_config |
| struct | field_config |
| struct | output_grid |
| struct | dist_flag |
Macros | |
| #define | CHECK_PHASE(FUNC_NAME, REF_PHASE, NEW_PHASE) |
| #define | CHECK_MIN_PHASE(FUNC_NAME, MIN_REF_PHASE) |
| #define | CHECK_MAX_PHASE(FUNC_NAME, MAX_REF_PHASE) |
Enumerations | |
| enum | yac_instance_phase { INSTANCE_DEFINITION = 0 , INSTANCE_DEFINITION_COMP = 1 , INSTANCE_DEFINITION_SYNC = 2 , INSTANCE_EXCHANGE = 3 , INSTANCE_UNKNOWN = 4 } |
| enum | field_availability_type { SOURCE_FLAG = 1 << 0 , TARGET_FLAG = 1 << 1 , SOURCE_TARGET_FLAG = (1 << 0) | (1 << 1) } |
| enum | field_type { SRC = 1 , TGT = 2 } |
Functions | |
| static struct yac_basic_grid * | get_basic_grid (const char *grid_name, struct yac_basic_grid **grids, size_t num_grids, int *delete_flag) |
| static int | compare_comp_grid_config (const void *a, const void *b) |
| static struct coupling_field * | get_coupling_field (char const *component_name, const char *field_name, const char *grid_name, size_t num_fields, struct coupling_field **coupling_fields) |
| static int | compare_field_config_interpolation_build_config (struct field_config *a, struct field_config *b) |
| struct field_config_event_data | get_event_data (struct yac_instance *instance, int couple_idx, int field_couple_idx, enum field_type field_type) |
| static struct event * | generate_event (struct field_config_event_data event_data) |
| static int * | determine_valid_field_configurations (struct yac_couple_config *couple_config, MPI_Comm comm, struct coupling_field **coupling_fields, size_t num_fields) |
| static void | get_interp_fields_from_coupling_field (struct coupling_field *field, char const *const *mask_names, size_t num_mask_names, struct yac_interp_field **interp_fields, size_t *num_fields, MPI_Comm comm) |
| static struct src_field_config | get_src_interp_config (struct yac_couple_config *couple_config, size_t couple_idx, size_t field_couple_idx, struct coupling_field *field, MPI_Comm comm) |
| static struct tgt_field_config | get_tgt_interp_config (struct yac_couple_config *couple_config, size_t couple_idx, size_t field_couple_idx, struct coupling_field *field, MPI_Comm comm) |
| static int | compare_dist_flags (const void *a_, const void *b_) |
| static void | generate_dist_flag_config_ids (uint64_t *local_flags, size_t flag_count, uint64_t *global_flags_buffer, struct dist_flag *dist_flags, int *dist_flag_ids, MPI_Comm comm) |
| static void | generate_coupling_field_avail_config_ids (struct field_config *field_configs, size_t num_fields, int *is_valid_field_configuration, MPI_Comm comm) |
| static void | get_field_configuration (struct yac_instance *instance, struct field_config **field_configs_, size_t *count) |
| static int | compare_interp_field (struct yac_interp_field *a, struct yac_interp_field *b) |
| static int | compare_field_config_interp_fields (struct field_config *a, struct field_config *b) |
| static int | compare_field_config (const void *a, const void *b) |
| static struct yac_interp_weights * | generate_interp_weights (struct src_field_config src_interp_config, struct yac_interp_grid *interp_grid) |
| static void | get_output_grids (struct yac_instance *instance, struct yac_basic_grid **local_grids, size_t num_local_grids, struct output_grid **output_grids, size_t *output_grid_count) |
| static int | compare_output_grids (const void *a, const void *b) |
| static void | write_grids_to_file (struct yac_instance *instance, struct yac_basic_grid **grids, size_t num_grids) |
| static void | generate_interpolations (struct yac_instance *instance, struct yac_basic_grid **grids, size_t num_grids) |
| void | yac_instance_sync_def (struct yac_instance *instance) |
| void | yac_instance_sync_def_comps (struct yac_instance *instance, char const **comp_names, size_t num_comp_names) |
| void | yac_instance_setup (struct yac_instance *instance, struct yac_basic_grid **grids, size_t num_grids) |
| char * | yac_instance_setup_and_emit_config (struct yac_instance *instance, struct yac_basic_grid **grids, size_t num_grids, int emit_flags) |
| MPI_Comm | yac_instance_get_comps_comm (struct yac_instance *instance, char const **comp_names, size_t num_comp_names) |
| int | yac_instance_get_nbr_comps (struct yac_instance *instance) |
| int | yac_instance_get_comp_size (struct yac_instance *instance, const char *comp_name) |
| int | yac_instance_get_comp_rank (struct yac_instance *instance, const char *comp_name) |
| struct yac_instance * | yac_instance_new (MPI_Comm comm) |
| void | yac_instance_dummy_new (MPI_Comm comm) |
| void | yac_instance_delete (struct yac_instance *instance) |
| MPI_Comm | yac_instance_get_comm (struct yac_instance *instance) |
| struct yac_couple_config * | yac_instance_get_couple_config (struct yac_instance *instance) |
| void | yac_instance_set_couple_config (struct yac_instance *instance, struct yac_couple_config *couple_config) |
| void | yac_instance_def_datetime (struct yac_instance *instance, const char *start_datetime, const char *end_datetime) |
| char * | yac_instance_get_start_datetime (struct yac_instance *instance) |
| char * | yac_instance_get_end_datetime (struct yac_instance *instance) |
| void | yac_instance_def_components (struct yac_instance *instance, char const **comp_names, size_t num_comps) |
| int | yac_instance_components_are_defined (struct yac_instance *instance) |
| struct coupling_field * | yac_instance_add_field (struct yac_instance *instance, char const *field_name, char const *comp_name, struct yac_basic_grid *grid, struct yac_interp_field *interp_fields, size_t num_interp_fields, int collection_size, char const *timestep) |
| void | yac_instance_def_couple (struct yac_instance *instance, char const *src_comp_name, char const *src_grid_name, char const *src_field_name, char const *tgt_comp_name, char const *tgt_grid_name, char const *tgt_field_name, char const *coupling_period, int time_reduction, struct yac_interp_stack_config *interp_stack_config, int src_lag, int tgt_lag, const char *weight_file_name, int weight_file_on_existing, int mapping_on_source, double scale_factor, double scale_summand, size_t num_src_mask_names, char const *const *src_mask_names, char const *tgt_mask_name, char const *yaxt_exchanger_name, struct yac_collection_selection const *collection_selection, int use_raw_exchange) |
| struct coupling_field * | yac_instance_get_field (struct yac_instance *instance, const char *comp_name, const char *grid_name, const char *field_name) |
Variables | |
| static const char * | yac_instance_phase_str [] |
| static struct field_config_event_data | empty_event_data |
| #define CHECK_MAX_PHASE | ( | FUNC_NAME, | |
| MAX_REF_PHASE ) |
Definition at line 72 of file instance.c.
| #define CHECK_MIN_PHASE | ( | FUNC_NAME, | |
| MIN_REF_PHASE ) |
Definition at line 62 of file instance.c.
| #define CHECK_PHASE | ( | FUNC_NAME, | |
| REF_PHASE, | |||
| NEW_PHASE ) |
Definition at line 51 of file instance.c.
| Enumerator | |
|---|---|
| SOURCE_FLAG | |
| TARGET_FLAG | |
| SOURCE_TARGET_FLAG | |
Definition at line 36 of file instance.c.
| enum field_type |
| Enumerator | |
|---|---|
| SRC | |
| TGT | |
Definition at line 105 of file instance.c.
| enum yac_instance_phase |
| Enumerator | |
|---|---|
| INSTANCE_DEFINITION | |
| INSTANCE_DEFINITION_COMP | |
| INSTANCE_DEFINITION_SYNC | |
| INSTANCE_EXCHANGE | |
| INSTANCE_UNKNOWN | |
Definition at line 27 of file instance.c.
|
static |
|
static |
|
static |
Definition at line 916 of file instance.c.


|
static |
Definition at line 890 of file instance.c.


|
static |
Definition at line 227 of file instance.c.


|
static |
|
static |
|
static |
Definition at line 300 of file instance.c.


|
static |
Definition at line 681 of file instance.c.


|
static |
Definition at line 620 of file instance.c.


|
static |
Definition at line 286 of file instance.c.


|
static |
Definition at line 967 of file instance.c.


|
static |
Definition at line 1072 of file instance.c.


|
static |
Definition at line 185 of file instance.c.


|
static |
Definition at line 209 of file instance.c.


| struct field_config_event_data get_event_data | ( | struct yac_instance * | instance, |
| int | couple_idx, | ||
| int | field_couple_idx, | ||
| enum field_type | field_type ) |
Definition at line 244 of file instance.c.


|
static |
Definition at line 765 of file instance.c.


|
static |
Definition at line 419 of file instance.c.


|
static |
Definition at line 982 of file instance.c.


|
static |
Definition at line 542 of file instance.c.


|
static |
Definition at line 583 of file instance.c.


|
static |
Definition at line 1028 of file instance.c.


| struct coupling_field * yac_instance_add_field | ( | struct yac_instance * | instance, |
| char const * | field_name, | ||
| char const * | comp_name, | ||
| struct yac_basic_grid * | grid, | ||
| struct yac_interp_field * | interp_fields, | ||
| size_t | num_interp_fields, | ||
| int | collection_size, | ||
| char const * | timestep ) |
Adds a coupling field to a YAC instance
| [in] | instance | YAC instance |
| [in] | field_name | name of the coupling field |
| [in] | comp_name | component name |
| [in] | grid | grid |
| [in] | interp_fields | interpolation fields |
| [in] | num_interp_fields | number of entries in interp_fields |
| [in] | collection_size | collection size of field |
| [in] | timestep | timestep at which put/get is called for this field in ISO 8601 format |
Definition at line 1513 of file instance.c.


| int yac_instance_components_are_defined | ( | struct yac_instance * | instance | ) |
Returns true if the components for this instance have already been defined
| [in] | instance | YAC instance |
Definition at line 1508 of file instance.c.

| void yac_instance_def_components | ( | struct yac_instance * | instance, |
| char const ** | comp_names, | ||
| size_t | num_comps ) |
Defines the components for a YAC instance
| [in] | instance | YAC instance |
| [in] | comp_names | names of components |
| [in] | num_comps | number of entries in comp_names |
Definition at line 1484 of file instance.c.


| void yac_instance_def_couple | ( | struct yac_instance * | instance, |
| char const * | src_comp_name, | ||
| char const * | src_grid_name, | ||
| char const * | src_field_name, | ||
| char const * | tgt_comp_name, | ||
| char const * | tgt_grid_name, | ||
| char const * | tgt_field_name, | ||
| char const * | coupling_period, | ||
| int | time_reduction, | ||
| struct yac_interp_stack_config * | interp_stack_config, | ||
| int | src_lag, | ||
| int | tgt_lag, | ||
| const char * | weight_file_name, | ||
| int | weight_file_on_existing, | ||
| int | mapping_on_source, | ||
| double | scale_factor, | ||
| double | scale_summand, | ||
| size_t | num_src_mask_names, | ||
| char const *const * | src_mask_names, | ||
| char const * | tgt_mask_name, | ||
| char const * | yaxt_exchanger_name, | ||
| struct yac_collection_selection const * | collection_selection, | ||
| int | use_raw_exchange ) |
Defines a couple for a YAC instance
| [in] | instance | YAC instance |
| [in] | src_comp_name | component name of the source component |
| [in] | src_grid_name | grid name of the source grid |
| [in] | src_field_name | field name of the source field |
| [in] | tgt_comp_name | component name of the target component |
| [in] | tgt_grid_name | grid name of the target grid |
| [in] | tgt_field_name | field name of the target field |
| [in] | coupling_period | time step for the coupling |
| [in] | time_reduction | type for reducing multiple timesteps ( |
| [in] | interp_stack_config | interpolation stack config to be used |
| [in] | src_lag | lag for this couple on the source component |
| [in] | tgt_lag | lag for this couple on the target component |
| [in] | weight_file_name | file name for the weights file. NULL to disable this feature |
| [in] | weight_file_on_existing | specifies how YAC is supposed to handle the case of an already existing file with the same name |
| [in] | mapping_on_source | side where the mapping is computed. Currently only source = 1 and target = 0 are allowed |
| [in] | scale_factor | scale factor |
| [in] | scale_summand | scale summand |
| [in] | num_src_mask_names | number of source field mask names ("0" if no source field mask names are provided) |
| [in] | src_mask_names | array of source field mask names ("NULL" if num_src_mask_names == 0) |
| [in] | tgt_mask_name | target field mask name ("NULL" if no target field mask name is provided) |
| [in] | yaxt_exchanger_name | yaxt exchanger method to be used for the interpoolation |
| [in] | collection_selection | collection selection for this couple |
| [in] | use_raw_exchange | enables the use of raw exchange (YAC only transfers data required for interpolation to target process, afterwards user has to apply the interpolation himself) |
Definition at line 1572 of file instance.c.


| void yac_instance_def_datetime | ( | struct yac_instance * | instance, |
| const char * | start_datetime, | ||
| const char * | end_datetime ) |
Definition of job start and end datetime
| [in] | instance | YAC instance |
| [in] | start_datetime | calendar job start datetime |
| [in] | end_datetime | calendar job end datetime |
Definition at line 1466 of file instance.c.


| void yac_instance_delete | ( | struct yac_instance * | instance | ) |
Destructor for a YAC instance
| [in] | instance | YAC instance to be deleted |
Definition at line 1427 of file instance.c.


| void yac_instance_dummy_new | ( | MPI_Comm | comm | ) |
Dummy constructor, which can be called instead of yac_instance_new.
| [in] | comm |
Definition at line 1421 of file instance.c.

| MPI_Comm yac_instance_get_comm | ( | struct yac_instance * | instance | ) |
Query routine for the MPI communicator associated with the instance.
| [in] | instance | YAC instance |
Definition at line 1444 of file instance.c.

| int yac_instance_get_comp_rank | ( | struct yac_instance * | instance, |
| const char * | comp_name ) |
Definition at line 1393 of file instance.c.


| int yac_instance_get_comp_size | ( | struct yac_instance * | instance, |
| const char * | comp_name ) |
Definition at line 1384 of file instance.c.


| MPI_Comm yac_instance_get_comps_comm | ( | struct yac_instance * | instance, |
| char const ** | comp_names, | ||
| size_t | num_comp_names ) |
returns a communicator containing all processes of the provided components
| [in] | instance | YAC instance |
| [in] | comp_names | component names |
| [in] | num_comp_names |
Definition at line 1368 of file instance.c.


| struct yac_couple_config * yac_instance_get_couple_config | ( | struct yac_instance * | instance | ) |
Get the coupling configuration data from a YAC instance
| [in] | instance | YAC instance |
Definition at line 1451 of file instance.c.

| char * yac_instance_get_end_datetime | ( | struct yac_instance * | instance | ) |
query routine for the end datetime of the job
| [in] | instance | YAC instance |
Definition at line 1479 of file instance.c.


| struct coupling_field * yac_instance_get_field | ( | struct yac_instance * | instance, |
| const char * | comp_name, | ||
| const char * | grid_name, | ||
| const char * | field_name ) |
Definition at line 1598 of file instance.c.


| int yac_instance_get_nbr_comps | ( | struct yac_instance * | instance | ) |
Definition at line 1377 of file instance.c.


| char * yac_instance_get_start_datetime | ( | struct yac_instance * | instance | ) |
query routine for the start datetime of the job
| [in] | instance | YAC instance |
Definition at line 1474 of file instance.c.


| struct yac_instance * yac_instance_new | ( | MPI_Comm | comm | ) |
Constructor for a YAC instance.
| [in] | comm | MPI communicator that contains the processes of all components that will be registered with this YAC instance |
Definition at line 1402 of file instance.c.


| void yac_instance_set_couple_config | ( | struct yac_instance * | instance, |
| struct yac_couple_config * | couple_config ) |
Sets the coupling configuration data for a YAC instance
| [in] | instance | YAC instance |
| [in] | couple_config | coupling configuration data |
Definition at line 1457 of file instance.c.

| void yac_instance_setup | ( | struct yac_instance * | instance, |
| struct yac_basic_grid ** | grids, | ||
| size_t | num_grids ) |
initiates the generation of all data structures required for interpolation
| [in] | instance | YAC instance |
| [in] | grids | all locally available basic grids |
| [in] | num_grids | number of locally available basic grids |
Definition at line 1332 of file instance.c.


| char * yac_instance_setup_and_emit_config | ( | struct yac_instance * | instance, |
| struct yac_basic_grid ** | grids, | ||
| size_t | num_grids, | ||
| int | emit_flags ) |
initiates the generation of all data structures required for interpolation
| [in] | instance | YAC instance |
| [in] | grids | all locally available basic grids |
| [in] | num_grids | number of locally available basic grids |
| [in] | emit_flags | flags for configuring the generated coupling configuration output (YAC_YAML_EMITTER_DEFAULT or YAC_YAML_EMITTER_JSON) |
Definition at line 1356 of file instance.c.


| void yac_instance_sync_def | ( | struct yac_instance * | instance | ) |
synchronizes the grid and field definitions
| [in] | instance | YAC instance |
Definition at line 1298 of file instance.c.


| void yac_instance_sync_def_comps | ( | struct yac_instance * | instance, |
| char const ** | comp_names, | ||
| size_t | num_comp_names ) |
synchronizes the grid and field definitions for provided components
| [in] | instance | YAC instance |
| [in] | comp_names | component names |
| [in] | num_comp_names | number of entries in comp_names |
comp_names. comp_names. Definition at line 1308 of file instance.c.


|
static |
|
static |
Definition at line 44 of file instance.c.