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_atmosphere";
68 char * grid_name =
"dummy_atmosphere_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 );
159 for ( i = 0;
i < nbr_cells; ++
i ) {
186 for ( i = 0;
i < nbr_cells; ++
i )
199 1,field_collection_size[i],
209 printf (
"Field ID %d: model step %s \n",
field_id[i], timestep_string);
233 double *point_set_data[5];
234 double **collection_data[5];
236 for (
int j = 0; j < 5; ++j) {
237 point_set_data[j] =
buffer + j * nbr_cells;
238 collection_data[j] = &(point_set_data[j]);
242 for ( i = 0;
i < nbr_cells; ++
i )
buffer[0*nbr_cells+i] = 10.1;
243 for ( i = 0;
i < nbr_cells; ++
i )
buffer[1*nbr_cells+i] = 10.2;
247 printf (
"atmosphere CPL TAUX 1 %f \n"
248 "atmosphere CPL TAUX 2 %f \n",
252 for ( i = 0;
i < nbr_cells; ++
i )
buffer[0*nbr_cells+i] = 20.1;
253 for ( i = 0;
i < nbr_cells; ++
i )
buffer[1*nbr_cells+i] = 20.2;
257 printf (
"atmosphere CPL TAUY 1 %f \n"
258 "atmosphere CPL TAUY 2 %f \n",
262 for ( i = 0;
i < nbr_cells; ++
i )
buffer[0*nbr_cells+i] = 30.1;
263 for ( i = 0;
i < nbr_cells; ++
i )
buffer[1*nbr_cells+i] = 30.2;
264 for ( i = 0;
i < nbr_cells; ++
i )
buffer[2*nbr_cells+i] = 30.3;
270 for ( i = 0;
i < nbr_cells; ++
i )
buffer[0*nbr_cells+i] = 40.1;
276 for ( i = 0;
i < nbr_cells; ++
i )
buffer[0*nbr_cells+i] = 50.1;
277 for ( i = 0;
i < nbr_cells; ++
i )
buffer[1*nbr_cells+i] = 50.2;
278 for ( i = 0;
i < nbr_cells; ++
i )
buffer[2*nbr_cells+i] = 50.3;
279 for ( i = 0;
i < nbr_cells; ++
i )
buffer[3*nbr_cells+i] = 50.4;
285 for ( i = 0;
i < nbr_cells; ++
i )
buffer[0*nbr_cells+i] = 60.1;
286 for ( i = 0;
i < nbr_cells; ++
i )
buffer[1*nbr_cells+i] = 60.2;
287 for ( i = 0;
i < nbr_cells; ++
i )
buffer[2*nbr_cells+i] = 60.3;
288 for ( i = 0;
i < nbr_cells; ++
i )
buffer[3*nbr_cells+i] = 60.4;
297 double *collection_data[5];
299 for (
int j = 0; j < 5; ++j) {
300 collection_data[j] =
buffer + j * nbr_cells;
306 if ( info > 0 ) printf (
"atmosphere CPL SST %f \n",
buffer[0] );
311 if ( info > 0 ) printf (
"atmosphere CPL OCEANU %f \n",
buffer[0] );
316 if ( info > 0 ) printf (
"atmosphere CPL OCEANV %f \n",
buffer[0] );
322 printf (
"atmosphere CPL ice 1 %f \n",
buffer[0*nbr_cells+0] );
323 printf (
"atmosphere CPL ice 2 %f \n",
buffer[1*nbr_cells+0] );
324 printf (
"atmosphere CPL ice 3 %f \n",
buffer[2*nbr_cells+0] );
325 printf (
"atmosphere CPL ice 4 %f \n",
buffer[3*nbr_cells+0] );
326 printf (
"atmosphere CPL ice 5 %f \n",
buffer[4*nbr_cells+0] );
341 int argc,
char ** argv,
char const ** configFilename) {
344 while ((opt = getopt(argc, argv,
"c:")) != -1) {
349 *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)