19#define YAC_RAD (0.01745329251994329576923690768489)
21#define STR_USAGE "Usage: %s -c configFilename\n"
22#define YAC_ASSERT_ARGS(exp, msg) \
25 fprintf(stderr, "ERROR: %s\n" STR_USAGE, msg, argv[0]); \
31 int argc,
char ** argv,
char const ** configFilename);
33int main (
int argc,
char *argv[]) {
37 const char *
fieldName[] = {
"surface_downward_eastward_stress",
38 "surface_downward_northward_stress",
39 "surface_fresh_water_flux",
40 "surface_temperature",
42 "atmosphere_sea_ice_bundle",
43 "sea_surface_temperature",
44 "eastward_sea_water_velocity",
45 "northward_sea_water_velocity",
46 "ocean_sea_ice_bundle",
51 int field_collection_size[] = {
67 char * comp_name =
"dummy_ocean";
68 char * grid_name =
"dummy_ocean_grid";
99 char const * configFilename =
"toy_dummy.yaml";
111 MPI_Comm_rank ( local_comm, &rank );
112 MPI_Comm_size ( local_comm, &size );
114 printf (
" %s rank %d : local size %d \n", comp_name, rank, size );
154 for (
int i = 0;
i < nbr_cells; ++
i ) {
178 for (
int i = 0;
i < nbr_cells; ++
i)
cell_mask[i] = 1;
190 1,field_collection_size[i],
200 printf (
"Field ID %d: model step %s \n",
field_id[i], timestep_string);
224 double *point_set_data[5];
225 double **collection_data[5];
227 for (
int j = 0; j < 5; ++j) {
228 point_set_data[j] =
buffer + j * nbr_cells;
229 collection_data[j] = &(point_set_data[j]);
233 for ( i = 0;
i < nbr_cells; ++
i )
buffer[0*nbr_cells+i] = 110.1;
236 if ( info > 0 ) printf (
"ocean CPL SST %f \n",
buffer[0*nbr_cells+0]);
240 for ( i = 0;
i < nbr_cells; ++
i )
buffer[0*nbr_cells+i] = 120.1;
243 if ( info > 0 ) printf (
"ocean CPL U %f \n",
buffer[0*nbr_cells+0]);
247 for ( i = 0;
i < nbr_cells; ++
i )
buffer[0*nbr_cells+i] = 130.1;
250 if ( info > 0 ) printf (
"ocean CPL V %f \n",
buffer[0*nbr_cells+0]);
254 for ( i = 0;
i < nbr_cells; ++
i ) {
261 point_set_data[0] =
buffer;
266 "ocean CPL ice 1 %f \n"
267 "ocean CPL ice 2 %f \n"
268 "ocean CPL ice 3 %f \n"
269 "ocean CPL ice 4 %f \n"
270 "ocean CPL ice 5 %f \n",
279 double *collection_data[5];
281 for (
int j = 0; j < 5; ++j) {
282 collection_data[j] =
buffer + j * nbr_cells;
320 int argc,
char ** argv,
char const ** configFilename) {
323 while ((opt = getopt(argc, argv,
"c:")) != -1) {
328 *configFilename = optarg;
int nbr_vertices_per_cell[NBR_CELLS]
static void parse_arguments(int argc, char **argv, enum experiment_type *experiment)
#define YAC_ASSERT_ARGS(exp, msg)
void yac_cset_global_index(int const *global_index, int location, int grid_id)
int const YAC_LOCATION_CELL
const char * yac_cget_timestep_from_field_id(int field_id)
void yac_cfinalize()
Finalises YAC.
void yac_cget_comp_comm(int comp_id, MPI_Comm *comp_comm)
void yac_cget(int const field_id, int collection_size, double **recv_field, int *info, int *ierr)
int const YAC_TIME_UNIT_SECOND
void yac_cdef_grid_unstruct(const char *grid_name, int nbr_vertices, int nbr_cells, int *num_vertices_per_cell, double *x_vertices, double *y_vertices, int *cell_to_vertex, int *grid_id)
void yac_cdef_points_unstruct(int const grid_id, int const nbr_points, int const located, double const *x_points, double const *y_points, int *point_id)
char * yac_cget_version(void)
void yac_cput(int const field_id, int const collection_size, double ***const send_field, int *info, int *ierr)
void yac_cread_config_yaml(const char *yaml_filename)
void yac_cset_core_mask(int const *is_core, int location, int grid_id)
void yac_cset_mask(int const *is_valid, int points_id)
void yac_cdef_comp(char const *comp_name, int *comp_id)
void yac_cdef_field(char const *name, int const comp_id, int const *point_ids, int const num_pointsets, int collection_size, const char *timestep, int time_unit, int *field_id)