From 0bac0cdc50181c01ec0ba75ab903b5077dec2e7a Mon Sep 17 00:00:00 2001 From: Florian Deconinck Date: Fri, 2 Feb 2024 11:23:55 -0500 Subject: [PATCH 1/6] Move `pace.fv3core` to `pyFV3` --- driver/pace/driver/diagnostics.py | 11 +- driver/pace/driver/driver.py | 24 +- driver/pace/driver/initialization.py | 18 +- driver/pace/driver/safety_checks.py | 2 +- driver/pace/driver/state.py | 10 +- driver/setup.py | 3 +- examples/notebooks/functions.py | 6 +- fv3core/.jenkins/actions/get_test_data.sh | 5 - .../actions/run_parallel_regression_tests.sh | 26 -- .../.jenkins/actions/run_regression_tests.sh | 21 -- fv3core/.jenkins/actions/run_standalone.sh | 154 ----------- fv3core/.jenkins/actions/test_action.sh | 5 - fv3core/.jenkins/jenkins.sh | 243 ------------------ physics/pace/physics/update/fv_update_phys.py | 8 +- .../pace/physics/update/update_atmos_state.py | 10 +- {fv3core => pyFV3}/.gitignore | 0 {fv3core => pyFV3}/FORTRAN_CHANGELOG.md | 0 {fv3core => pyFV3}/LICENSE.txt | 0 {fv3core => pyFV3}/Makefile | 0 {fv3core => pyFV3}/README.md | 0 {fv3core => pyFV3}/convert_xppm_yppm.sh | 0 .../examples/standalone/benchmarks/README.md | 0 .../benchmarks/collect_memory_usage_data.py | 0 .../standalone/benchmarks/run_on_daint.sh | 0 .../examples/standalone/runfile/__init__.py | 0 .../examples/standalone/runfile/acoustics.py | 8 +- .../examples/standalone/runfile/compile.py | 2 +- .../examples/standalone/runfile/dynamics.py | 8 +- .../examples/standalone/runfile/timing.py | 0 .../pace/fv3core => pyFV3/pyFV3}/__init__.py | 0 .../pace/fv3core => pyFV3/pyFV3}/_config.py | 0 .../fv3core => pyFV3/pyFV3}/dycore_state.py | 0 .../pyFV3}/initialization/__init__.py | 0 .../pyFV3}/initialization/analytic_init.py | 6 +- .../pyFV3}/initialization/init_utils.py | 4 +- .../test_cases/initialize_baroclinic.py | 4 +- .../test_cases/initialize_tc.py | 6 +- .../pyFV3}/stencils/__init__.py | 0 .../pyFV3}/stencils/a2b_ord4.py | 2 +- .../pyFV3}/stencils/basic_operations.py | 0 .../fv3core => pyFV3/pyFV3}/stencils/c_sw.py | 2 +- .../pyFV3}/stencils/d2a2c_vect.py | 2 +- .../fv3core => pyFV3/pyFV3}/stencils/d_sw.py | 18 +- .../pyFV3}/stencils/del2cubed.py | 4 +- .../pyFV3}/stencils/delnflux.py | 0 .../pyFV3}/stencils/divergence_damping.py | 10 +- .../pyFV3}/stencils/dyn_core.py | 30 +-- .../fv3core => pyFV3/pyFV3}/stencils/fillz.py | 0 .../pyFV3}/stencils/fv_dynamics.py | 18 +- .../pyFV3}/stencils/fv_subgridz.py | 6 +- .../pyFV3}/stencils/fvtp2d.py | 6 +- .../fv3core => pyFV3/pyFV3}/stencils/fxadv.py | 2 +- .../pyFV3}/stencils/map_single.py | 4 +- .../pyFV3}/stencils/mapn_tracer.py | 4 +- .../pyFV3}/stencils/moist_cv.py | 0 .../pyFV3}/stencils/neg_adj3.py | 0 .../pyFV3}/stencils/nh_p_grad.py | 4 +- .../pyFV3}/stencils/pe_halo.py | 0 .../pyFV3}/stencils/pk3_halo.py | 4 +- .../fv3core => pyFV3/pyFV3}/stencils/ppm.py | 0 .../pyFV3}/stencils/ray_fast.py | 0 .../pyFV3}/stencils/remap_profile.py | 0 .../pyFV3}/stencils/remapping.py | 14 +- .../pyFV3}/stencils/riem_solver3.py | 4 +- .../pyFV3}/stencils/riem_solver_c.py | 2 +- .../pyFV3}/stencils/saturation_adjustment.py | 15 +- .../pyFV3}/stencils/sim1_solver.py | 0 .../pyFV3}/stencils/temperature_adjust.py | 2 +- .../pyFV3}/stencils/tracer_2d_1l.py | 2 +- .../pyFV3}/stencils/updatedzc.py | 0 .../pyFV3}/stencils/updatedzd.py | 4 +- .../fv3core => pyFV3/pyFV3}/stencils/xppm.py | 4 +- .../fv3core => pyFV3/pyFV3}/stencils/xtp_u.py | 2 +- .../fv3core => pyFV3/pyFV3}/stencils/yppm.py | 4 +- .../fv3core => pyFV3/pyFV3}/stencils/ytp_v.py | 2 +- .../pyFV3}/testing/__init__.py | 0 .../pyFV3}/testing/map_single.py | 2 +- .../pyFV3}/testing/translate_dyncore.py | 4 +- .../pyFV3}/testing/translate_fvdynamics.py | 6 +- .../pyFV3}/testing/validation.py | 12 +- .../fv3core => pyFV3/pyFV3}/utils/__init__.py | 0 .../pyFV3}/utils/functional_validation.py | 0 .../pyFV3}/wrappers/geos_wrapper.py | 10 +- {fv3core => pyFV3}/setup.py | 9 +- {fv3core => pyFV3}/tests/conftest.py | 0 .../tests/mpi/test_doubly_periodic.py | 12 +- {fv3core => pyFV3}/tests/pytest.ini | 0 .../tests/savepoint/__init__.py | 0 .../tests/savepoint/conftest.py | 6 +- .../tests/savepoint/output/.gitkeep | 0 .../tests/savepoint/test_translate.py | 0 .../tests/savepoint/translate/__init__.py | 2 +- .../savepoint/translate/overrides/README.md | 0 .../translate/overrides/baroclinic.yaml | 0 .../translate/overrides/standard.yaml | 0 .../savepoint/translate/translate_a2b_ord4.py | 4 +- .../savepoint/translate/translate_c_sw.py | 4 +- .../savepoint/translate/translate_corners.py | 2 +- .../translate/translate_cubedtolatlon.py | 0 .../translate/translate_d2a2c_vect.py | 4 +- .../savepoint/translate/translate_d_sw.py | 8 +- .../translate/translate_del2cubed.py | 4 +- .../translate/translate_del6vtflux.py | 4 +- .../savepoint/translate/translate_delnflux.py | 4 +- .../translate/translate_divergencedamping.py | 4 +- .../savepoint/translate/translate_fillz.py | 4 +- .../translate/translate_fvsubgridz.py | 2 +- .../savepoint/translate/translate_fvtp2d.py | 4 +- .../savepoint/translate/translate_fxadv.py | 6 +- .../savepoint/translate/translate_grid.py | 0 .../translate/translate_haloupdate.py | 0 .../translate/translate_init_case.py | 8 +- .../translate/translate_last_step.py | 4 +- .../translate/translate_moistcvpluspkz_2d.py | 4 +- .../translate/translate_moistcvpluspt_2d.py | 2 +- .../savepoint/translate/translate_neg_adj3.py | 4 +- .../translate/translate_nh_p_grad.py | 4 +- .../savepoint/translate/translate_pe_halo.py | 4 +- .../savepoint/translate/translate_pk3_halo.py | 4 +- ...ssureadjustedtemperature_nonhydrostatic.py | 10 +- .../savepoint/translate/translate_qsinit.py | 4 +- .../savepoint/translate/translate_ray_fast.py | 4 +- .../translate/translate_remapping.py | 6 +- .../translate/translate_riem_solver3.py | 6 +- .../translate/translate_riem_solver_c.py | 4 +- .../translate/translate_satadjust3d.py | 10 +- .../translate/translate_tracer2d1l.py | 16 +- .../translate/translate_updatedzc.py | 6 +- .../translate/translate_updatedzd.py | 14 +- .../savepoint/translate/translate_xppm.py | 4 +- .../savepoint/translate/translate_xtp_u.py | 2 +- .../savepoint/translate/translate_yppm.py | 4 +- .../savepoint/translate/translate_ytp_v.py | 8 +- requirements_dev.txt | 2 +- setup.cfg | 12 +- tests/main/driver/test_diagnostics_config.py | 2 +- tests/main/fv3core/test_config.py | 12 +- tests/main/fv3core/test_dycore_call.py | 12 +- tests/main/fv3core/test_init_from_geos.py | 8 +- .../main/fv3core/test_selective_validation.py | 2 +- tests/mpi_54rank/test_grid_init.py | 6 +- tests/savepoint/test_checkpoints.py | 14 +- tests/savepoint/translate/translate_driver.py | 8 +- 143 files changed, 308 insertions(+), 774 deletions(-) delete mode 100755 fv3core/.jenkins/actions/get_test_data.sh delete mode 100755 fv3core/.jenkins/actions/run_parallel_regression_tests.sh delete mode 100755 fv3core/.jenkins/actions/run_regression_tests.sh delete mode 100755 fv3core/.jenkins/actions/run_standalone.sh delete mode 100755 fv3core/.jenkins/actions/test_action.sh delete mode 100755 fv3core/.jenkins/jenkins.sh rename {fv3core => pyFV3}/.gitignore (100%) rename {fv3core => pyFV3}/FORTRAN_CHANGELOG.md (100%) rename {fv3core => pyFV3}/LICENSE.txt (100%) rename {fv3core => pyFV3}/Makefile (100%) rename {fv3core => pyFV3}/README.md (100%) rename {fv3core => pyFV3}/convert_xppm_yppm.sh (100%) rename {fv3core => pyFV3}/examples/standalone/benchmarks/README.md (100%) rename {fv3core => pyFV3}/examples/standalone/benchmarks/collect_memory_usage_data.py (100%) rename {fv3core => pyFV3}/examples/standalone/benchmarks/run_on_daint.sh (100%) rename {fv3core => pyFV3}/examples/standalone/runfile/__init__.py (100%) rename {fv3core => pyFV3}/examples/standalone/runfile/acoustics.py (97%) rename {fv3core => pyFV3}/examples/standalone/runfile/compile.py (98%) rename {fv3core => pyFV3}/examples/standalone/runfile/dynamics.py (97%) rename {fv3core => pyFV3}/examples/standalone/runfile/timing.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/__init__.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/_config.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/dycore_state.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/initialization/__init__.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/initialization/analytic_init.py (90%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/initialization/init_utils.py (99%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/initialization/test_cases/initialize_baroclinic.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/initialization/test_cases/initialize_tc.py (99%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/__init__.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/a2b_ord4.py (99%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/basic_operations.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/c_sw.py (99%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/d2a2c_vect.py (99%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/d_sw.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/del2cubed.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/delnflux.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/divergence_damping.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/dyn_core.py (97%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/fillz.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/fv_dynamics.py (97%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/fv_subgridz.py (99%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/fvtp2d.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/fxadv.py (99%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/map_single.py (97%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/mapn_tracer.py (95%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/moist_cv.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/neg_adj3.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/nh_p_grad.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/pe_halo.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/pk3_halo.py (96%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/ppm.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/ray_fast.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/remap_profile.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/remapping.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/riem_solver3.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/riem_solver_c.py (99%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/saturation_adjustment.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/sim1_solver.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/temperature_adjust.py (96%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/tracer_2d_1l.py (99%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/updatedzc.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/updatedzd.py (99%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/xppm.py (99%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/xtp_u.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/yppm.py (99%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/stencils/ytp_v.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/testing/__init__.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/testing/map_single.py (94%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/testing/translate_dyncore.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/testing/translate_fvdynamics.py (98%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/testing/validation.py (95%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/utils/__init__.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/utils/functional_validation.py (100%) rename {fv3core/pace/fv3core => pyFV3/pyFV3}/wrappers/geos_wrapper.py (98%) rename {fv3core => pyFV3}/setup.py (82%) rename {fv3core => pyFV3}/tests/conftest.py (100%) rename {fv3core => pyFV3}/tests/mpi/test_doubly_periodic.py (93%) rename {fv3core => pyFV3}/tests/pytest.ini (100%) rename {fv3core => pyFV3}/tests/savepoint/__init__.py (100%) rename {fv3core => pyFV3}/tests/savepoint/conftest.py (73%) rename {fv3core => pyFV3}/tests/savepoint/output/.gitkeep (100%) rename {fv3core => pyFV3}/tests/savepoint/test_translate.py (100%) rename {fv3core => pyFV3}/tests/savepoint/translate/__init__.py (97%) rename {fv3core => pyFV3}/tests/savepoint/translate/overrides/README.md (100%) rename {fv3core => pyFV3}/tests/savepoint/translate/overrides/baroclinic.yaml (100%) rename {fv3core => pyFV3}/tests/savepoint/translate/overrides/standard.yaml (100%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_a2b_ord4.py (95%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_c_sw.py (98%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_corners.py (98%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_cubedtolatlon.py (100%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_d2a2c_vect.py (91%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_d_sw.py (97%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_del2cubed.py (87%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_del6vtflux.py (93%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_delnflux.py (94%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_divergencedamping.py (94%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_fillz.py (96%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_fvsubgridz.py (99%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_fvtp2d.py (96%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_fxadv.py (92%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_grid.py (100%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_haloupdate.py (100%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_init_case.py (98%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_last_step.py (92%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_moistcvpluspkz_2d.py (97%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_moistcvpluspt_2d.py (98%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_neg_adj3.py (93%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_nh_p_grad.py (92%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_pe_halo.py (93%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_pk3_halo.py (85%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_pressureadjustedtemperature_nonhydrostatic.py (83%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_qsinit.py (92%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_ray_fast.py (88%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_remapping.py (95%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_riem_solver3.py (93%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_riem_solver_c.py (87%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_satadjust3d.py (88%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_tracer2d1l.py (90%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_updatedzc.py (92%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_updatedzd.py (88%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_xppm.py (96%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_xtp_u.py (98%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_yppm.py (96%) rename {fv3core => pyFV3}/tests/savepoint/translate/translate_ytp_v.py (93%) diff --git a/driver/pace/driver/diagnostics.py b/driver/pace/driver/diagnostics.py index 6843a6e7..1ee49822 100644 --- a/driver/pace/driver/diagnostics.py +++ b/driver/pace/driver/diagnostics.py @@ -12,7 +12,7 @@ from ndsl.monitor import Monitor, NetCDFMonitor, ZarrMonitor from ndsl.quantity import Quantity -from pace.fv3core.dycore_state import DycoreState +from pyFV3.dycore_state import DycoreState from .state import DriverState @@ -25,16 +25,13 @@ class Diagnostics(abc.ABC): @abc.abstractmethod - def store(self, time: Union[datetime, timedelta], state: DriverState): - ... + def store(self, time: Union[datetime, timedelta], state: DriverState): ... @abc.abstractmethod - def store_grid(self, grid_data: GridData): - ... + def store_grid(self, grid_data: GridData): ... @abc.abstractmethod - def cleanup(self): - ... + def cleanup(self): ... @dataclasses.dataclass diff --git a/driver/pace/driver/driver.py b/driver/pace/driver/driver.py index bd350a4d..9771598e 100644 --- a/driver/pace/driver/driver.py +++ b/driver/pace/driver/driver.py @@ -31,7 +31,7 @@ import pace.driver import pace.physics -from pace import fv3core +import pyFV3 from pace.driver.safety_checks import SafetyChecker # TODO: move update_atmos_state into pace.driver @@ -113,8 +113,8 @@ class DriverConfig: comm_config: CreatesCommSelector = dataclasses.field( default_factory=CreatesCommSelector ) - dycore_config: fv3core.DynamicalCoreConfig = dataclasses.field( - default_factory=fv3core.DynamicalCoreConfig + dycore_config: pyFV3.DynamicalCoreConfig = dataclasses.field( + default_factory=pyFV3.DynamicalCoreConfig ) physics_config: pace.physics.PhysicsConfig = dataclasses.field( default_factory=pace.physics.PhysicsConfig @@ -243,7 +243,7 @@ def from_dict(cls, kwargs: Dict[str, Any]) -> "DriverConfig": ) kwargs["dycore_config"] = dacite.from_dict( - data_class=fv3core.DynamicalCoreConfig, + data_class=pyFV3.DynamicalCoreConfig, data=kwargs.get("dycore_config", {}), config=dacite.Config(strict=True), ) @@ -293,10 +293,10 @@ def from_dict(cls, kwargs: Dict[str, Any]) -> "DriverConfig": isinstance(kwargs["stencil_config"], dict) and "compilation_config" in kwargs["stencil_config"].keys() ): - kwargs["stencil_config"][ - "compilation_config" - ] = CompilationConfig.from_dict( - data=kwargs["stencil_config"]["compilation_config"] + kwargs["stencil_config"]["compilation_config"] = ( + CompilationConfig.from_dict( + data=kwargs["stencil_config"]["compilation_config"] + ) ) return dacite.from_dict( @@ -473,7 +473,11 @@ def exit_instead_of_build(self): stencil_compare_comm=stencil_compare_comm, ) ndsl_log.info("setting up grid started") - (damping_coefficients, driver_grid_data, grid_data,) = self.config.get_grid( + ( + damping_coefficients, + driver_grid_data, + grid_data, + ) = self.config.get_grid( quantity_factory=self.quantity_factory, communicator=communicator, ) @@ -490,7 +494,7 @@ def exit_instead_of_build(self): self._start_time = self.config.initialization.start_time ndsl_log.info("setting up dycore object started") - self.dycore = fv3core.DynamicalCore( + self.dycore = pyFV3.DynamicalCore( comm=communicator, grid_data=self.state.grid_data, stencil_factory=self.stencil_factory, diff --git a/driver/pace/driver/initialization.py b/driver/pace/driver/initialization.py index 1e6e9b87..91064bb8 100644 --- a/driver/pace/driver/initialization.py +++ b/driver/pace/driver/initialization.py @@ -17,10 +17,10 @@ from ndsl.stencils.testing import TranslateGrid, grid import pace.driver -import pace.fv3core.initialization.analytic_init as analytic_init +import pyFV3.initialization.analytic_init as analytic_init import pace.physics -from pace import fv3core -from pace.fv3core.testing import TranslateFVDynamics +import pyFV3 +from pyFV3.testing import TranslateFVDynamics from .registry import Registry from .state import DriverState, TendencyState, _restart_driver_state @@ -29,8 +29,7 @@ class Initializer(abc.ABC): @property @abc.abstractmethod - def start_time(self) -> datetime: - ... + def start_time(self) -> datetime: ... @abc.abstractmethod def get_driver_state( @@ -41,8 +40,7 @@ def get_driver_state( driver_grid_data: DriverGridData, grid_data: GridData, schemes: List[pace.physics.PHYSICS_PACKAGES], - ) -> DriverState: - ... + ) -> DriverState: ... IT = TypeVar("IT", bound=Type[Initializer]) @@ -306,7 +304,7 @@ def _initialize_dycore_state( self, communicator: Communicator, backend: str, - ) -> fv3core.DycoreState: + ) -> pyFV3.DycoreState: grid = self._get_serialized_grid(communicator=communicator, backend=backend) ser = self._serializer(communicator) @@ -343,7 +341,7 @@ class PredefinedStateInit(Initializer): used to construct the class. """ - dycore_state: fv3core.DycoreState + dycore_state: pyFV3.DycoreState physics_state: pace.physics.PhysicsState tendency_state: TendencyState grid_data: GridData @@ -370,7 +368,7 @@ def get_driver_state( ) -# TODO: refactor fv3core so that pe and peln are internal temporaries +# TODO: refactor pyFV3 so that pe and peln are internal temporaries # of the dynamical core, computed automatically, so that this helper # can be eliminated from initialization def _update_fortran_restart_pe_peln(state: DriverState) -> None: diff --git a/driver/pace/driver/safety_checks.py b/driver/pace/driver/safety_checks.py index 6c2911ec..86ae5dc7 100644 --- a/driver/pace/driver/safety_checks.py +++ b/driver/pace/driver/safety_checks.py @@ -3,7 +3,7 @@ import numpy as np from ndsl.quantity import Quantity -from pace.fv3core.dycore_state import DycoreState +from pyFV3.dycore_state import DycoreState class VariableBounds: diff --git a/driver/pace/driver/state.py b/driver/pace/driver/state.py index 136f1f98..32f65349 100644 --- a/driver/pace/driver/state.py +++ b/driver/pace/driver/state.py @@ -14,7 +14,7 @@ from ndsl.quantity import Quantity import pace.physics -from pace import fv3core +import pyFV3 @dataclasses.dataclass() @@ -63,7 +63,7 @@ def init_zeros(cls, quantity_factory: QuantityFactory) -> "TendencyState": @dataclasses.dataclass class DriverState: - dycore_state: fv3core.DycoreState + dycore_state: pyFV3.DycoreState physics_state: pace.physics.PhysicsState tendency_state: TendencyState grid_data: GridData @@ -155,7 +155,7 @@ def save_state(self, comm, restart_path: str = "RESTART"): def _overwrite_state_from_restart( path: str, rank: int, - state: fv3core.DycoreState, + state: pyFV3.DycoreState, restart_file_prefix: str, ): """ @@ -192,11 +192,11 @@ def _restart_driver_state( ) if is_fortran_restart: - dycore_state = fv3core.DycoreState.from_fortran_restart( + dycore_state = pyFV3.DycoreState.from_fortran_restart( quantity_factory=quantity_factory, communicator=communicator, path=path ) else: - dycore_state = fv3core.DycoreState.init_zeros(quantity_factory=quantity_factory) + dycore_state = pyFV3.DycoreState.init_zeros(quantity_factory=quantity_factory) _overwrite_state_from_restart( path, rank, diff --git a/driver/setup.py b/driver/setup.py index 6f217e23..aca6aa7e 100644 --- a/driver/setup.py +++ b/driver/setup.py @@ -6,7 +6,8 @@ setup_requirements: List[str] = [] requirements = [ - "pace-fv3core", + "ndsl", + "pyFV3", "pace-physics", "dacite", "pyyaml", diff --git a/examples/notebooks/functions.py b/examples/notebooks/functions.py index 2a797a66..ae68e1ee 100644 --- a/examples/notebooks/functions.py +++ b/examples/notebooks/functions.py @@ -29,9 +29,9 @@ from ndsl.quantity import Quantity from units_config import units -from pace.fv3core.stencils.fvtp2d import FiniteVolumeTransport -from pace.fv3core.stencils.fxadv import FiniteVolumeFluxPrep -from pace.fv3core.stencils.tracer_2d_1l import TracerAdvection +from pyFV3.stencils.fvtp2d import FiniteVolumeTransport +from pyFV3.stencils.fxadv import FiniteVolumeFluxPrep +from pyFV3.stencils.tracer_2d_1l import TracerAdvection class GridType(enum.Enum): diff --git a/fv3core/.jenkins/actions/get_test_data.sh b/fv3core/.jenkins/actions/get_test_data.sh deleted file mode 100755 index 07f31067..00000000 --- a/fv3core/.jenkins/actions/get_test_data.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -set -e -x -for dataset in c12_6ranks_standard c12_54ranks_standard c128_6ranks_baroclinic ; do - EXPERIMENT=${dataset} make get_test_data -done diff --git a/fv3core/.jenkins/actions/run_parallel_regression_tests.sh b/fv3core/.jenkins/actions/run_parallel_regression_tests.sh deleted file mode 100755 index ea8b7168..00000000 --- a/fv3core/.jenkins/actions/run_parallel_regression_tests.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -set -e -x -BACKEND=$1 -EXPNAME=$2 -export TEST_ARGS="${EXTRA_TEST_ARGS} -v -s -rsx --backend=${BACKEND} " - -# sync the test data -make get_test_data - -export CPPFLAGS="${CPPFLAGS} -Wno-unused-but-set-variable" - -if [ ${python_env} == "virtualenv" ]; then - CONTAINER_CMD="" MPIRUN_ARGS="" DEV=n make savepoint_tests_mpi - TARGET=init CONTAINER_CMD="" MPIRUN_ARGS="" DEV=n make savepoint_tests_mpi -else - DEV=n make savepoint_tests_mpi - TARGET=init DEV=n make savepoint_tests_mpi -fi -export TEST_ARGS="${TEST_ARGS} --compute_grid" -if [ ${python_env} == "virtualenv" ]; then - CONTAINER_CMD="" MPIRUN_ARGS="" DEV=n make savepoint_tests_mpi - TARGET=init CONTAINER_CMD="" MPIRUN_ARGS="" DEV=n make savepoint_tests_mpi -else - DEV=n make savepoint_tests_mpi - TARGET=init DEV=n make savepoint_tests_mpi -fi diff --git a/fv3core/.jenkins/actions/run_regression_tests.sh b/fv3core/.jenkins/actions/run_regression_tests.sh deleted file mode 100755 index 861ac09d..00000000 --- a/fv3core/.jenkins/actions/run_regression_tests.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -set -e -x -BACKEND=$1 -EXPNAME=$2 -XML_REPORT="sequential_test_results.xml" -export TEST_ARGS="-v -s -rsx --backend=${BACKEND} " - -JENKINS_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )/../" - -# sync the test data -make get_test_data - -if [ ${python_env} == "virtualenv" ]; then - export TEST_ARGS="${TEST_ARGS} --junitxml=${JENKINS_DIR}/${XML_REPORT}" - export CONTAINER_CMD="srun" -else - export TEST_ARGS="${TEST_ARGS} --junitxml=/.jenkins/${XML_REPORT}" - export VOLUMES="-v ${SCRIPT_DIR}/../:/.jenkins" -fi - -DEV=n make savepoint_tests diff --git a/fv3core/.jenkins/actions/run_standalone.sh b/fv3core/.jenkins/actions/run_standalone.sh deleted file mode 100755 index 8546645d..00000000 --- a/fv3core/.jenkins/actions/run_standalone.sh +++ /dev/null @@ -1,154 +0,0 @@ -#!/bin/bash - -# Jenkins action to run a benchmark of dynamics.py on Piz Daint -# 3/11/2021, Tobias Wicky, Vulcan Inc - -# Syntax: -# .jenkins/action/run_standlone.sh