18rank = MPI.COMM_WORLD.rank
19size = MPI.COMM_WORLD.size
27yac_def_instance =
yac.YAC(default_instance=
True)
28yac_def_instance2 = yac.YAC.default_instance
30assert yac_def_instance.instance_id == yac_def_instance2.instance_id == yac_from_id.instance_id
31assert yac_def_instance.rank == rank
32assert yac_def_instance.size == size
33assert yac_def_instance.default_instance_id_defined ==
True
35yac_def_instance.set_config_output_file(
"foo.yaml",
36 yac.ConfigOutputFormat.YAML,
37 yac.ConfigOutputSyncLoc.ENDDEF)
38yac_def_instance.set_grid_output_file(
"foo_grid",
"foo_grid.nc")
39yac_def_instance.set_coordinates_check(
True)
40yac_def_instance.set_coordinates_mismatch_is_fatal(
True)
42del yac_def_instance, yac_def_instance2
44assert size == yac_comm.size
45assert rank == yac_comm.rank
51start_dt = datetime.datetime(
52 year=2020, month=1, day=1, hour=0, minute=0, second=0,
54end_dt = datetime.datetime(
55 year=2020, month=1, day=2, hour=0, minute=0, second=0,
57yac_instance.def_datetime(start_dt, end_dt)
60start_dt = start_dt.replace(tzinfo=datetime.timezone.utc)
61end_dt = end_dt.replace(tzinfo=datetime.timezone.utc)
62yac_instance.def_datetime(start_dt, end_dt)
66yac_instance.def_datetime(
"2020-01-01T00:00:00",
67 "2020-01-02T00:00:00")
69yac_instance.def_datetime(
"2020-01-01T00:00:00Z",
70 "2020-01-02T00:00:00Z")
72yac_instance.def_datetime(
"2020-01-01T00:00:00+00:00",
73 "2020-01-02T00:00:00+00:00")
77 comp1 = yac_instance.predef_comp(
"comp1")
78 comp2 = yac_instance.def_comp(
"comp2")
80 comp1, comp3 = yac_instance.def_comps([
"comp1",
"comp3"])
82assert yac_instance.get_component(
"comp1").comp_id == comp1.comp_id
84assert yac_instance.start_datetime ==
"2020-01-01T00:00:00.000"
85assert yac_instance.end_datetime ==
"2020-01-02T00:00:00.000"
87assert yac_instance.get_comps_comm([
"comp2",
"comp3"]).size == size
88assert comp1.comp_comm.size == size
89assert comp1.size == comp1.comp_comm.size
90assert comp1.rank == comp1.comp_comm.rank
93yac_instance.def_component_metadata(
"comp1",
"COMP_METADATA".encode())
95assert set(yac_instance.component_names) == {
"comp1",
"comp2",
"comp3"}
98x = np.array([-1., 0., 1.])
100prelim_grid1 = yac_instance.get_grid(
"grid1")
102assert grid1.grid_id == prelim_grid1.grid_id
103grid1.set_global_index(range(9), yac.Location.CORNER)
104grid1.set_global_index(np.arange(4, dtype=np.intc), yac.Location.CELL)
105print(f
"{grid1.compute_grid_cell_areas()=}")
106assert grid1.nbr_cells == 4
107assert grid1.nbr_corners == 9
108assert grid1.nbr_edges == 12
109grid1.set_core_mask([
True,
False] * 2, yac.Location.CELL)
110points1 = grid1.def_points(
111 yac.Location.CELL, [-0.5, 0.5], [-0.5, 0.5], name=
"points_grid1")
114 grid1.get_points(yac.Location.CELL,
"points_grid1").points_id
116assert points1.size == grid1.nbr_cells
117points1.set_mask([
True] * 4)
119yac_instance.def_grid_metadata(
"grid1",
"GRID_METADATA".encode())
129prelim_mask1_id = grid2.get_mask(yac.Location.CELL,
"mask1").mask_id
130mask1 = grid2.def_mask(yac.Location.CELL, [
True], name=
"mask1")
131assert mask1.mask_id == prelim_mask1_id
132points2 = grid2.def_points(
133 yac.Location.CELL, [0.5], [0.5], name=
"points_grid2")
138 [0.0, 1.0, 1.0, 0.0],
139 [0.0, 0.0, 1.0, 1.0],
145 [0.0, 1.0, 1.0, 0.0],
146 [0.0, 0.0, 1.0, 1.0])
148points4 = grid4.def_points([0.0, 1.0, 1.0, 0.0],
149 [0.0, 0.0, 1.0, 1.0],
157 [[0, 1], [1, 2], [2, 0]],
160points5 = grid5.def_points(
161 yac.Location.CELL, [0.5], [0.5], name=
"points_grid5")
165 [0.0, 1.0, 1.0, 0.0],
166 [0.0, 0.0, 1.0, 1.0],
168 [[0, 1], [1, 2], [2, 3], [3, 0]],
174points7 = grid7.def_points(
175 yac.Location.CELL, [-0.5, 0.5], [-0.5, 0.5], name=
"points_grid7")
179yac_instance.def_field_metadata(
180 "comp1",
"grid1",
"field1",
"FIELD_METADATA".encode()
182yac_instance.enable_field_frac_mask(
"comp1",
"grid1",
"field1", 42.0)
185 "field2", comp1, points2, 2,
"1", yac.TimeUnit.HOUR, mask1
188 "field3", comp1, points1, 1,
"1", yac.TimeUnit.HOUR
191 "field4", comp1, points2, 1,
"1", yac.TimeUnit.HOUR, mask1
196interp.add_nnn(yac.NNNReductionType.AVG, 1, 0.0, 1.0)
199 1, 1, 1, yac.ConservNormalizationType.FRACAREA
203 1.0, 1.0, yac.SPMAPWeightType.AVG, yac.SPMAPScaleType.NONE)
210yac_instance.def_couple(
219 yac.Reduction.TIME_NONE,
222 yaxt_exchanger_name=
"irecv_send",
223 collection_selection=[2, 0],
233 "[{\"nnn\": {\"n\": 1}}]"
238 with open(
"config.yaml",
"w")
as f:
240 """timestep_unit: minute
242 - src_component: comp1
257 yac_instance.read_config_yaml(
"config.yaml")
258 os.remove(
"config.yaml")
260yac_instance.sync_def_comps([
"comp1",
"comp2",
"comp3"])
261yac_instance.sync_def()
263assert yac_instance.get_component_metadata(
"comp1") ==
"COMP_METADATA"
264assert yac_instance.get_grid_metadata(
"grid1") ==
"GRID_METADATA"
266 yac_instance.get_field_metadata(
"comp1",
"grid1",
"field1")
270assert "grid1" in yac_instance.grid_names
271assert "grid1" in yac_instance.get_comp_grid_names(
"comp1")
272assert "field1" in yac_instance.get_field_names(
"comp1",
"grid1")
273assert yac_instance.get_field_is_defined(
"comp1",
"grid1",
"field1")
274assert not yac_instance.get_field_is_defined(
"comp1",
"grid1",
"undefined_field")
275assert not yac_instance.get_field_is_defined(
"comp1",
"undefined_grid",
"field1")
276assert not yac_instance.get_field_is_defined(
"undefined_comp",
"grid1",
"field1")
277field1_id = yac_instance.get_field_id(
"comp1",
"grid1",
"field1")
278assert (field1.component_name ==
"comp1")
279assert (field1.grid_name ==
"grid1")
281 yac_instance.get_field_timestep(
"comp1",
"grid1",
"field1")
286 yac_instance.get_field_role(
"comp1",
"grid1",
"field1")
287 == yac.ExchangeType.SOURCE
289assert (yac_instance.get_field_collection_size(
"comp1",
"grid1",
"field1")
290 == field1.collection_size
293 yac_instance.get_field_frac_mask_fallback_value(
"comp1",
"grid1",
"field1")
296assert yac_instance.get_field_source(
"comp1",
"grid2",
"field2") == (
"comp1",
"grid1",
"field1")
300assert (field1.role == yac.ExchangeType.SOURCE )
exchange(cls, send_field, recv_field, send_buf, recv_buf=None, send_frac_mask=None)
create(cls, str field_name, Component comp, points, collection_size, str timestep, TimeUnit timeunit, masks=None)
from_string_json(cls, str interp_stack_string)
from_string_yaml(cls, str interp_stack_string)
Initializies a YAC instance and provides further functionality.
def_calendar(Calendar calendar)