|
YAC 3.21.0
Yet Another Coupler
|
#include "config.h"#include <limits.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <mpi.h>#include "utils_core.h"#include "io_utils.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 "yac_pak.h"#include "yac_pak_instrument.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(REF_PHASE, NEW_PHASE) |
| #define | CHECK_MIN_PHASE(MIN_REF_PHASE) |
| #define | CHECK_MAX_PHASE(MAX_REF_PHASE) |
| #define | YAC_PAK_TRACE_SETUP_START(CALLER, TYPE) |
| #define | YAC_PAK_TRACE_SETUP_STOP() |
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 | |
| DEF_NAME_TYPE_PAIRS (calendar_type_table, DEF_NAME_TYPE_PAIR(CALENDAR_NOT_SET, CALENDAR_NOT_SET), DEF_NAME_TYPE_PAIR(PROLEPTIC_GREGORIAN, PROLEPTIC_GREGORIAN), DEF_NAME_TYPE_PAIR(YEAR_OF_360_DAYS, YEAR_OF_360_DAYS), DEF_NAME_TYPE_PAIR(YEAR_OF_365_DAYS, YEAR_OF_365_DAYS)) | |
| 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) |
| static 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, 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 yac_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_calendar (int calendar_type, char const *source) |
| 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) |
| static bool | check_timedelta_positive (const char *timestep) |
| 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 | ( | MAX_REF_PHASE | ) |
Definition at line 74 of file instance.c.
| #define CHECK_MIN_PHASE | ( | MIN_REF_PHASE | ) |
Definition at line 65 of file instance.c.
| #define CHECK_PHASE | ( | REF_PHASE, | |
| NEW_PHASE ) |
Definition at line 55 of file instance.c.
| #define YAC_PAK_TRACE_SETUP_START | ( | CALLER, | |
| TYPE ) |
Definition at line 85 of file instance.c.
| #define YAC_PAK_TRACE_SETUP_STOP | ( | ) |
Definition at line 91 of file instance.c.
| Enumerator | |
|---|---|
| SOURCE_FLAG | |
| TARGET_FLAG | |
| SOURCE_TARGET_FLAG | |
Definition at line 40 of file instance.c.
| enum field_type |
| Enumerator | |
|---|---|
| SRC | |
| TGT | |
Definition at line 118 of file instance.c.
| enum yac_instance_phase |
| Enumerator | |
|---|---|
| INSTANCE_DEFINITION | |
| INSTANCE_DEFINITION_COMP | |
| INSTANCE_DEFINITION_SYNC | |
| INSTANCE_EXCHANGE | |
| INSTANCE_UNKNOWN | |
Definition at line 31 of file instance.c.
|
static |
|
static |
|
static |
|
static |
Definition at line 936 of file instance.c.


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


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


|
static |
|
static |
| DEF_NAME_TYPE_PAIRS | ( | calendar_type_table | , |
| DEF_NAME_TYPE_PAIR(CALENDAR_NOT_SET, CALENDAR_NOT_SET) | , | ||
| DEF_NAME_TYPE_PAIR(PROLEPTIC_GREGORIAN, PROLEPTIC_GREGORIAN) | , | ||
| DEF_NAME_TYPE_PAIR(YEAR_OF_360_DAYS, YEAR_OF_360_DAYS) | , | ||
| DEF_NAME_TYPE_PAIR(YEAR_OF_365_DAYS, YEAR_OF_365_DAYS) | ) |
|
static |
Definition at line 325 of file instance.c.


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


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


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


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


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


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


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


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


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


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


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


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


|
static |
Definition at line 1060 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 1666 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 1653 of file instance.c.

| void yac_instance_def_calendar | ( | int | calendar_type, |
| char const * | source ) |
Definition of calendar type
The definition is global for all instances. This function will set the calendar type, if it was unset before, or check that the provided calendar type is the same as the already set calendar type, if it was set before.
| [in] | calendar_type | calendar type to be set or checked |
| [in] | source | source of the calendar definition |
Definition at line 1557 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 1603 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 1729 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 1585 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 1509 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 1503 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 1535 of file instance.c.

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


| int yac_instance_get_comp_size | ( | struct yac_instance * | instance, |
| const char * | comp_name ) |
Definition at line 1447 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 1431 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 1542 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 1598 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 1755 of file instance.c.


| int yac_instance_get_nbr_comps | ( | struct yac_instance * | instance | ) |
Definition at line 1440 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 1593 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 1465 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 1548 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 1369 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 1419 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 1336 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 1348 of file instance.c.


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