Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove IPD #214

Closed
climbfuji opened this issue Dec 15, 2020 · 5 comments · Fixed by ufs-community/ufs-weather-model#448
Closed

Remove IPD #214

climbfuji opened this issue Dec 15, 2020 · 5 comments · Fixed by ufs-community/ufs-weather-model#448
Assignees
Labels
enhancement New feature or request

Comments

@climbfuji
Copy link
Collaborator

climbfuji commented Dec 15, 2020

Description

Now that we have a GFS v16 reference tag for the ufs-weather-model develop branch and its submodules, it is time to remove IPD.

Solution

This should be done in several steps.

  1. Remove all source files that are required for IPD only (in fv3atm) and make CCPP=Y the default in the ufs-weather-model compile/build scripts. This should not change the regression test results. However, since CCPP=Y is no longer in the MAKEOPT string, the suffices _prod and _ccpp for the regression test baseline/run directories will disappear (hence the requirement to create new baselines).

  2. Move the computation of snow cover and other variables from io/FV3GFS_io.F90 into CCPP (probably the time_vary group), and remove the soilveg initialization in GFS_driver.F90. This should not change the regression test results when the fv3atm and the dycore are compiled in double precision (64bit), but it will change the results when fv3atm and the dycore are compiled in single precision (32bit). This is because the computation fo snow cover and other variables in FV3GFS_io.F90 uses the same precision as fv3atm and the dycore, whereas it is always double precision in the CCPP physics.

  3. Remove all #ifndef CCPP and related preprocessor directives from fv3atm and the ufs-weather-model, but not GFDL_atmos_cubed_sphere (These will still be needed for compatibility with how GFDL is running physics? To be confirmed with @bensonr). Remove definition of IPD data types in fv3atm and replace use of IPD data types with GFS data types. This should not change the regression test results. Update: the preprocessor directives can also be removed from the dycore.

  4. Rename all regression tests (drop _ccpp from fv3_ccpp_xyz). All non-CCPP *_run.IN templates in tests/fv3_conf should be removed, and all CCPP templates renamed (drop ccpp_ from ccpp_xyz_run.IN). Drop suffices _ccpp/_prod from regression test baseline/run directories (but need to keep repro? add _debug in the same way? or manually change the regression test control directories for REPRO=Y to _repro?)

  5. Clean up all CMakeLists.txt files that contain legacy code to support building IPD and CCPP, using a top-level cmake or gnumake build. Now we only need to support CCPP with a cmake build.

  6. Anything that is missing in the previous bullets.

Alternatives

No alternative.

Testing:

Testing will be done on all tier-1,2,3 platforms (tier-1 pre-commit, tier-2,3 as time permits).

Dependent PRs:

Step 1 completed 12/29/2020 without removing the suffices _prod and _ccpp, see ufs-community/ufs-weather-model#331.

Step 3 completed 01/14/2021, see ufs-community/ufs-weather-model#357 and associated PRs.

Step 5 completed 01/14/2021, see ufs-community/ufs-weather-model#357 and associated PRs.

Parts of step 4 are addressed in ufs-community/ufs-weather-model#378.

Parts of step 2 are addressed in ufs-community/ufs-weather-model#407.

@climbfuji climbfuji added the enhancement New feature or request label Dec 15, 2020
@climbfuji climbfuji self-assigned this Dec 15, 2020
@DusanJovic-NOAA
Copy link
Collaborator

Also, in step 4 all non ccpp *_run.IN templates from tests/fv3_conf should be removed. And all ccpp templates renamed (drop ccpp_ from ccpp_xyz_run.IN).

@climbfuji
Copy link
Collaborator Author

Also, in step 4 all non ccpp *_run.IN templates from tests/fv3_conf should be removed. And all ccpp templates renamed (drop ccpp_ from ccpp_xyz_run.IN).

Updated the list, thanks!

@bensonr
Copy link
Contributor

bensonr commented Dec 16, 2020

@climbfuji - because the FV3 dycore project has branches for the UFS (dev/emc & ufs public releases) and for GFDL (dev/gfdl) off the common main branch, the #ifdef/#endif pairs for CCPP can safely be removed.

@climbfuji
Copy link
Collaborator Author

@climbfuji - because the FV3 dycore project has branches for the UFS (dev/emc & ufs public releases) and for GFDL (dev/gfdl) off the common main branch, the #ifdef/#endif pairs for CCPP can safely be removed.

Thanks Rusty, that's great.

@climbfuji
Copy link
Collaborator Author

Note. As of Jan 4, 2021, step 2 has gained some urgency, since several developers have encountered the problem of duplicate symbols due to the land vegetation/soil table initialization being done in gfsphysics and ccpp/physics. See https://dtcenter.org/threads/compiling-error-duplication-gfsphysics-ccppphysics-lib and #206, for example.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
3 participants