YetAnotherCoupler 3.4.0
|
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.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"
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 |
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_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 struct src_field_config | get_src_interp_config (struct yac_couple_config *couple_config, size_t couple_idx, size_t field_couple_idx) |
static struct tgt_field_config | get_tgt_interp_config (struct yac_couple_config *couple_config, size_t couple_idx, size_t field_couple_idx) |
static int | compare_field_config_fields (struct coupling_field *a, size_t num_mask_names_a, char const *const *mask_names_a, struct coupling_field *b, size_t num_mask_names_b, char const *const *mask_names_b) |
static int | compare_field_config_field_ids (const void *a, const void *b) |
static int | compare_field_config_interp_method (const void *a, const void *b) |
static int | compare_field_config (const void *a, const void *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 void | get_field_configuration (struct yac_instance *instance, struct field_config **field_configs_, size_t *count) |
static int | compare_field_config_ids (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_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 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_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_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) |
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 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) |
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 58 of file instance.c.
#define CHECK_MIN_PHASE | ( | FUNC_NAME, | |
MIN_REF_PHASE ) |
Definition at line 48 of file instance.c.
#define CHECK_PHASE | ( | FUNC_NAME, | |
REF_PHASE, | |||
NEW_PHASE ) |
Definition at line 37 of file instance.c.
enum field_type |
Enumerator | |
---|---|
SRC | |
TGT |
Definition at line 85 of file instance.c.
enum yac_instance_phase |
Enumerator | |
---|---|
INSTANCE_DEFINITION | |
INSTANCE_DEFINITION_COMP | |
INSTANCE_DEFINITION_SYNC | |
INSTANCE_EXCHANGE | |
INSTANCE_UNKNOWN |
Definition at line 22 of file instance.c.
|
static |
|
static |
Definition at line 350 of file instance.c.
|
static |
|
static |
Definition at line 248 of file instance.c.
|
static |
|
static |
Definition at line 331 of file instance.c.
|
static |
|
static |
Definition at line 421 of file instance.c.
|
static |
Definition at line 774 of file instance.c.
|
static |
Definition at line 1002 of file instance.c.
|
static |
Definition at line 161 of file instance.c.
|
static |
Definition at line 185 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 379 of file instance.c.
|
static |
Definition at line 432 of file instance.c.
|
static |
Definition at line 789 of file instance.c.
|
static |
Definition at line 912 of file instance.c.
|
static |
Definition at line 203 of file instance.c.
|
static |
Definition at line 232 of file instance.c.
|
static |
Definition at line 958 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 1418 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 1413 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 1389 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 | 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 ) |
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] | 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) |
Definition at line 1477 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 1371 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 1339 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 1333 of file instance.c.
int yac_instance_get_comp_rank | ( | struct yac_instance * | instance, |
const char * | comp_name ) |
Definition at line 1305 of file instance.c.
int yac_instance_get_comp_size | ( | struct yac_instance * | instance, |
const char * | comp_name ) |
Definition at line 1296 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 1287 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 1356 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 1384 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 1498 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 1379 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 1314 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 1362 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 1251 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 1275 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 1241 of file instance.c.
|
static |
|
static |
Definition at line 30 of file instance.c.