Skip to content

Commit d01bdea

Browse files
committed
updated physics calls
1 parent 349b5fa commit d01bdea

File tree

2 files changed

+22
-21
lines changed

2 files changed

+22
-21
lines changed

pace/driver.py

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,9 @@
3737
from pace.initialization import InitializerSelector
3838
from pace.safety_checks import SafetyChecker
3939
from pace.state import DriverState
40-
from pyfv3 import DynamicalCore, DynamicalCoreConfig
41-
from pyfv3.initialization.analytic_init import AnalyticCase
42-
from pyshield import Physics, PhysicsConfig
43-
from pyshield.update import update_atmos_state
40+
from pyFV3 import DynamicalCore, DynamicalCoreConfig
41+
from pySHiELD import Physics, PhysicsConfig
42+
from pySHiELD.update import update_atmos_state
4443

4544

4645
try:
@@ -116,7 +115,6 @@ class DriverConfig:
116115
default_factory=DynamicalCoreConfig
117116
)
118117
physics_config: PhysicsConfig = dataclasses.field(default_factory=PhysicsConfig)
119-
120118
days: int = 0
121119
hours: int = 0
122120
minutes: int = 0
@@ -267,6 +265,9 @@ def from_dict(cls, kwargs: Dict[str, Any]) -> "DriverConfig":
267265
kwargs["comm_config"] = CreatesCommSelector.from_dict(
268266
kwargs.get("comm_config", {})
269267
)
268+
kwargs["initialization"] = InitializerSelector.from_dict(
269+
kwargs["initialization"]
270+
)
270271
if "grid_config" in kwargs:
271272
kwargs["grid_config"] = GridInitializerSelector.from_dict(
272273
kwargs["grid_config"]
@@ -278,17 +279,6 @@ def from_dict(cls, kwargs: Dict[str, Any]) -> "DriverConfig":
278279
if grid_type > 3:
279280
kwargs["dycore_config"].ntiles = 1
280281

281-
analytic_hooks = {}
282-
if kwargs["initialization"]["type"] == "analytic":
283-
kwargs["initialization"]["config"]["dycore_config"] = kwargs[
284-
"dycore_config"
285-
]
286-
analytic_hooks[AnalyticCase] = AnalyticCase
287-
kwargs["initialization"] = InitializerSelector.from_dict(
288-
kwargs["initialization"],
289-
hooks=analytic_hooks,
290-
)
291-
292282
if (
293283
isinstance(kwargs["stencil_config"], dict)
294284
and "dace_config" in kwargs["stencil_config"].keys()
@@ -331,9 +321,6 @@ def write_for_restart(
331321
config_dict["dycore_config"].pop(field, None)
332322
config_dict["physics_config"].pop(field, None)
333323
config_dict["initialization"]["type"] = "restart"
334-
# Remove existing initialization config and repopulate
335-
config_dict["initialization"].pop("config")
336-
config_dict["initialization"]["config"] = {}
337324
config_dict["initialization"]["config"]["start_time"] = time
338325
config_dict["initialization"]["config"]["path"] = restart_path
339326
# convert physics package enum to str
@@ -663,7 +650,13 @@ def _critical_path_step_all(
663650
timestep=dt,
664651
)
665652
if not self.config.dycore_only:
666-
self.physics(self.state.physics_state, timestep=dt)
653+
self.physics(
654+
self.state.physics_state,
655+
self.state.radiation_state,
656+
self.state.surface_state,
657+
self.time,
658+
timestep=dt,
659+
)
667660
self.end_of_step_update(
668661
dycore_state=self.state.dycore_state,
669662
phy_state=self.state.physics_state,

pace/state.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from ndsl.grid import DampingCoefficients, DriverGridData, GridData
1313
from ndsl.typing import Communicator
1414
from pyfv3 import DycoreState
15-
from pyshield import PHYSICS_PACKAGES, PhysicsState
15+
from pyshield import PHYSICS_PACKAGES, PhysicsState, RadiationState, SurfaceState
1616

1717

1818
@dataclasses.dataclass()
@@ -63,6 +63,8 @@ def init_zeros(cls, quantity_factory: QuantityFactory) -> "TendencyState":
6363
class DriverState:
6464
dycore_state: DycoreState
6565
physics_state: PhysicsState
66+
surface_state: SurfaceState
67+
radiation_state: RadiationState
6668
tendency_state: TendencyState
6769
grid_data: GridData
6870
damping_coefficients: DampingCoefficients
@@ -120,6 +122,12 @@ def save_state(self, comm, restart_path: str = "RESTART"):
120122
self.physics_state.xr_dataset.to_netcdf(
121123
f"{restart_path}/restart_physics_state_{current_rank}.nc"
122124
)
125+
self.radiation_state.xr_dataset.to_netcdf(
126+
f"{restart_path}/restart_radiation_state_{current_rank}.nc"
127+
)
128+
self.surface_state.xr_dataset.to_netcdf(
129+
f"{restart_path}/restart_surface_state_{current_rank}.nc"
130+
)
123131
# we can also convert the state to Fortran's restart format using
124132
# code similar to this commented code. We don't need this feature right
125133
# now so we haven't implemented it, but this is a good starter.

0 commit comments

Comments
 (0)