17rank = MPI.COMM_WORLD.rank
18size = MPI.COMM_WORLD.size
26yac_def_instance =
yac.YAC(default_instance=
True)
27yac_def_instance2 = yac.YAC.default_instance
29assert yac_def_instance.instance_id == yac_def_instance2.instance_id == yac_from_id.instance_id
30assert yac_def_instance.rank == rank
31assert yac_def_instance.size == size
32assert yac_def_instance.default_instance_id_defined ==
True
34yac_def_instance.set_config_output_file(
"foo.yaml",
35 yac.ConfigOutputFormat.YAML,
36 yac.ConfigOutputSyncLoc.ENDDEF)
37yac_def_instance.set_grid_output_file(
"foo_grid",
"foo_grid.nc")
39del yac_def_instance, yac_def_instance2
41assert size == yac_comm.size
42assert rank == yac_comm.rank
46yac_instance.def_datetime(
"2020-01-01T00:00:00",
"2020-01-02T00:00:00")
50 comp1 = yac_instance.predef_comp(
"comp1")
51 comp2 = yac_instance.def_comp(
"comp2")
53 comp1, comp3 = yac_instance.def_comps([
"comp1",
"comp3"])
55assert yac_instance.start_datetime ==
"2020-01-01T00:00:00.000"
56assert yac_instance.end_datetime ==
"2020-01-02T00:00:00.000"
58assert yac_instance.get_comps_comm([
"comp2",
"comp3"]).size == size
59assert comp1.comp_comm.size == size
60assert comp1.size == comp1.comp_comm.size
61assert comp1.rank == comp1.comp_comm.rank
64yac_instance.def_component_metadata(
"comp1",
"COMP_METADATA".encode())
66assert set(yac_instance.component_names) == {
"comp1",
"comp2",
"comp3"}
69x = np.array([-1., 0., 1.])
72grid1.set_global_index(range(9), yac.Location.CORNER)
73grid1.set_global_index(np.arange(4, dtype=np.intc), yac.Location.CELL)
74print(f
"{grid1.compute_grid_cell_areas()=}")
75assert grid1.nbr_cells == 4
76assert grid1.nbr_corners == 9
77assert grid1.nbr_edges == 12
78grid1.set_core_mask([
True,
False] * 2, yac.Location.CELL)
79points1 = grid1.def_points(yac.Location.CELL, [-0.5, 0.5], [-0.5, 0.5])
80assert points1.size == grid1.nbr_cells
81points1.set_mask([
True] * 4)
83yac_instance.def_grid_metadata(
"grid1",
"GRID_METADATA".encode())
93mask1 = grid2.def_mask(yac.Location.CELL, [
True], name=
"mask1")
94points2 = grid2.def_points(yac.Location.CELL, [0.5], [0.5])
100 [0.0, 0.0, 1.0, 1.0],
106 [0.0, 1.0, 1.0, 0.0],
107 [0.0, 0.0, 1.0, 1.0])
109points4 = grid4.def_points([0.0, 1.0, 1.0, 0.0],
110 [0.0, 0.0, 1.0, 1.0])
117 [[0, 1], [1, 2], [2, 0]],
120points5 = grid5.def_points(yac.Location.CELL, [0.5], [0.5])
124 [0.0, 1.0, 1.0, 0.0],
125 [0.0, 0.0, 1.0, 1.0],
127 [[0, 1], [1, 2], [2, 3], [3, 0]],
133points7 = grid1.def_points(yac.Location.CELL, [-0.5, 0.5], [-0.5, 0.5])
137yac_instance.def_field_metadata(
138 "comp1",
"grid1",
"field1",
"FIELD_METADATA".encode()
140yac_instance.enable_field_frac_mask(
"comp1",
"grid1",
"field1", 42.0)
143 "field2", comp1, points2, 2,
"1", yac.TimeUnit.HOUR, mask1
146 "field3", comp1, points1, 1,
"1", yac.TimeUnit.HOUR
149 "field4", comp1, points2, 1,
"1", yac.TimeUnit.HOUR, mask1
154interp.add_nnn(yac.NNNReductionType.AVG, 1, 0.0, 1.0)
157 1, 1, 1, yac.ConservNormalizationType.FRACAREA
161 1.0, 1.0, yac.SPMAPWeightType.AVG, yac.SPMAPScaleType.NONE)
168yac_instance.def_couple(
177 yac.Reduction.TIME_NONE,
180 yaxt_exchanger_name=
"irecv_send",
181 collection_selection=[2, 0],
191 "[{\"nnn\": {\"n\": 1}}]"
196 with open(
"config.yaml",
"w")
as f:
198 """timestep_unit: minute
200 - src_component: comp1
215 yac_instance.read_config_yaml(
"config.yaml")
216 os.remove(
"config.yaml")
218yac_instance.sync_def()
220assert yac_instance.get_component_metadata(
"comp1") ==
"COMP_METADATA"
221assert yac_instance.get_grid_metadata(
"grid1") ==
"GRID_METADATA"
223 yac_instance.get_field_metadata(
"comp1",
"grid1",
"field1")
227assert "grid1" in yac_instance.grid_names
228assert "grid1" in yac_instance.get_comp_grid_names(
"comp1")
229assert "field1" in yac_instance.get_field_names(
"comp1",
"grid1")
230assert yac_instance.get_field_is_defined(
"comp1",
"grid1",
"field1")
231assert not yac_instance.get_field_is_defined(
"comp1",
"grid1",
"undefined_field")
232assert not yac_instance.get_field_is_defined(
"comp1",
"undefined_grid",
"field1")
233assert not yac_instance.get_field_is_defined(
"undefined_comp",
"grid1",
"field1")
234field1_id = yac_instance.get_field_id(
"comp1",
"grid1",
"field1")
235assert (field1.component_name ==
"comp1")
236assert (field1.grid_name ==
"grid1")
238 yac_instance.get_field_timestep(
"comp1",
"grid1",
"field1")
243 yac_instance.get_field_role(
"comp1",
"grid1",
"field1")
244 == yac.ExchangeType.SOURCE
246assert (yac_instance.get_field_collection_size(
"comp1",
"grid1",
"field1")
247 == field1.collection_size
250 yac_instance.get_field_frac_mask_fallback_value(
"comp1",
"grid1",
"field1")
253assert yac_instance.get_field_source(
"comp1",
"grid2",
"field2") == (
"comp1",
"grid1",
"field1")
257assert (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)