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

Moving Nest Functionality (#179) #7

Merged
merged 1 commit into from
Apr 11, 2022

Conversation

JiliDong-NOAA
Copy link
Owner

  • Remove the hardcoded L64 source code line in tools/external_ic.F90, so that the
    model can run with other vertical level configurations.

  • Moving Nest Initial Implementation

  • Change speed of moving nest to avoid it going off edge of parent tile.

  • Corrected range of value checking for sina and cosa.

  • Turned down debugging logging.

  • Added bounds checking so moving nest stays on parent tile. Only read static latlon grid file once. Reduced number of variables output by mn_prog_dump_to_netcdf.

  • Added call to bounds checking so nest stays on parent tile. Modified to read from static grid files for moving nest only once. Added crude scaling of nest motion speed based on timestep.

  • Added moving nest code for delz variable. Improved scaling of automated nest motion. Removed forced exit at timestep 4800.

  • Adjusted moving nest edge subroutine. Will stop motion when 5 points from edge, and block motion for the rest of model run.

  • Output nest center lat/lon after nest motion. Reduce logging from permit_move_nest().

  • Added moving nest support to shift SST/skin temperature. Added 2D subroutines to moving nest interfaces. Added performance tracking to init_grid and setup_aligned_nest.

  • Optimized init_grid/setup_aligned_nest. Added performance timers.

  • Brought back if-statement that was lost in merge.

  • Removed obsolete MPP subroutine from use clause.

  • Add merge_import and debug_merge options of atmos_model_nml in driver/fvGFS/atmosphere.F90.

  • Added nest motion for terrain from static file.

  • Restructured calls to move nest.

  • *Add the capability of dealing with soil variables for moving nest.
    *Update the moving nesting interface.
    Note: Coding session among Bill, Xuejin, Kyle, Zhan, Chunxi, Weiguo, Bin

  • Updates to moving nest for physics variables so code complies and runs. Added new subroutines for high precision physics variables.

  • *Define the internal vortex tracker needed variables
    *Add a fv_diag_tracker subroutine to obtain the tracker needed variables
    *Identify and add the call interfaces for the internal vortex tracker in driver/fvGFS/atmosphere.F90.
    Note: These are outcome from the coding sessions among Xuejin, Chunxi, Zhan, and Bin.

  • Working version of mn_phys_dump_to_netcdf

  • Added soil variables to mn_phys_dump_to_netcdf. Required changes to pass in IPD data structures.

  • Added phy_f2d and phy_f3d physics variables to moving nest. Added land fraction and terrain std to moving nest.

  • Reinitialize zsurf in fv_diagnostics.F90. Perform vertical remapping after nest move. Added nest move for static physics variables read in from file.

  • Update xlat, xlon, and related arrays in physics after nest move. Code changes to preserve 64 bit precision of values read in from netCDF, needed for physics variables.

  • Added many 2D surface physics variables to nest motion. Corrected call signature for GFS_grid_populate.

  • Added NSST variables to moving nest functionality.

  • Removed some logging to speed performance testing. Initial implementation of physics IFD variable.

  • Set physics variable IFD from land sea mask (with values flipped).

  • Handle strong/weak zenith angle albedos facsf facwf by interpolating from parent for moving nest.

  • Added terrain_smoother options to namelist, for smoothing edges of terrain in moving nest.

  • Turn off vertical remapping with nest moves. Seems not to be needed.

  • Added 10m winds, total precip, surface temperature to physics nest motion code.

  • Added comment headers, connected some moving nest main routine variables to namelist.

  • Removed some logging statements

  • Revert "Add merge_import and debug_merge options of atmos_model_nml in driver/fvGFS/atmosphere.F90."

This reverts commit cd2879d.

  • *Add model/fv_tracker.F90 containing the FV internal tracker ported from HWRF.
    *Add mp_reduce_[min/max][val/loc] in tools/fv_mp_mod.F90 needed by the internal
    tracker
    *Add internal tracker needed variables and interface in model/fv_arrays.F90,
    model/fv_control.F90, and driver/fvGFS/atmosphere.F90.

Contributors: @XuejinZhang-NOAA, @BinLiu-NOAA, @WilliamRamstrom-NOAA,
@ChunxiZhang-NOAA, @ZhanZhang-NOAA

  • Add get_distsq in fv_tracker.F90 to calculate the square of the approximate
    distance to the domain center at all points.

  • Internal vortex tracker related clean up in atmosphere.F90 and fv_tracker.F90

  • Fixes for internal tracker related changes so that it can build successfully.

  • Fixes for internal tracker related changes so that it can build successfully.

  • Connect internal tracker with the nest move interface for moving nesting.
    Code sprint: @XuejinZhang-NOAA, @WilliamRamstrom-NOAA, @ChunxiZhang-NOAA,
    @KyleAhern-NOAA, @ZhanZhang-NOAA, @BinLiu-NOAA

  • Debug FV3 internal vortex tracker and it now can find the storm properly.
    Connecting with nest-moving needs further debug though.

  • Connect automatic storm-following and prescribed moving with the nest moving procedure properly.
    Contributors: @BinLiu-NOAA, @XuejinZhang-NOAA, @WilliamRamstrom-NOAA.

  • Commented out call to fms_io_exit() that was needed for moving nest debug outputs.

  • Added moving nest handling of physics variables - hprime, zorlo, zorlw

  • Fixed off-by-one error with moving nest terrain data, updated physics version of orography.

  • Moved temporary moving nest physics grids into fv_atmos_type. Plus removed some dead code.

  • Fixed bug in the moving nest physics transfer to fv_arrays.F90

  • Fixed bug in fv_moving_nest_main.F90 where profiling timers were started repeatedly.

  • Disabled some debug logging statements.

  • Switched off detailed moving nest performance profiling. Moved timestep logging from print statements to call to mpp_error.

  • Separated moving nest physics code into separate module. Merged logging code into fv_moving_nest_utils.F90.

  • Moved physics-related routines into separate file.

  • Remove model/fv_moving_nest_logging.F90, which is no longer needed (Bill).

  • Improved handling of 32bit/64bit reals as subroutine arguments, to permit 64 bit compiles.

  • Additional changes to permit 32bit/64bit compiles.

  • Added handling of new albedo variables to moving nest. Added handling of lakes to moving nest.

  • Added t-dependent lon-lat (grid_mlont, grid_mlatt) to fv_diagnostics

  • Added moving nest functionality for neststruct%i/j stagger.

  • Added preliminary land masked interpolation for moving nest.

  • fix center-finding arguments in tracker; add debug routine

  • Regional Moving Nest Enabled. Fixed moving nest for land emissivity and land albedo. Static surface files renamed.

  • Better handling of longitudes > 180.

  • Removed logging statements

  • Moving Nest updates for emis_lnd and emis_wat.

  • Set the default value for surface_dir as INPUT/moving_nest needed by moving
    nesting and remove the fix_sfc directory structure inside INPUT/moving_nest.

  • Added patch for nest motion of surface emissivity and albedo.

  • Comment out the dump_surface_physics related debug output in
    tools/fv_diagnostics.F90. Other the Cmake build fails due to circular
    dependency.

  • Only enter moving nest code for moving nest configurations

  • Code cleanup of moving nest modules

  • Added doxygen comments and regularized indentation.

  • *Add the capability of downscaling the coupling variables (e.g., SST) from the
    parent grid into the nested grid. This is needed since only the atmospheric
    parent grid is coupled to other model components currently.
    *Update the logic to determine the moving_nesting property.

  • Connected move_nsst to namelist option.

  • Revised namelist options for move_nsst in moving nest.

  • Moving nest for physics ifd only if using NSST.

  • Modify atmosphere_domain interface to pass both moving_nest_parent and is_moving_nest up to FV3ATM.

  • Expand and add the capability to output the grid_mspec (similar to grid_spec)
    variables for the moving-nesting configuration.

  • Added full_zs_filter when nest moves.

  • Upgrade to read in monthly high-resolution albedo information for moving nest.

  • Use same real kind for centers and corner... now that ESMF is directly referencing these data arrays.

  • Handle moving nest interpolation of sfc roughness variables with land mask

  • Reapply handling of NSST being turned off for coupled runs.

  • Added Doxygen documentation and code cleanup.

  • add zsurf to diag fields for moving nest

  • Updated formatting of header comments.

  • Fix syntax error in bounding_box.F90

Corrected syntax error in bounding_box.F90 that was uncovered with gfortran.

  • Update Coriolis terms after nest move.

  • Simplified call to EOSHIFT for compiler portability. Now omits BOUNDARY argument to use the default value of 0.0 (in single or double precision), instead of explicitly setting it to 0

  • Moving-nesting related code clean-ups (Bill, Kyle, Bin).

  • Fix a typo in fill_nested_grid_cpl in driver/fvGFS/atmosphere.F90.

  • Modularization of moving nest and automated storm tracker.

  • Separate moving_nest code into its own directory.

  • *fv_tracker.F90 related clean-ups.
    *fv_moving_nest_types.F90 clean-ups.

  • Clean up mzsurf from fv_diagnostics.F90 and fv_diagnostics.h (Kyle and Bin).

  • Made call to EOSHIFT portable to gfortran.

  • Removed commented-out code from fv_control.F90.

  • Revert logging output in fv_diagnostics.F90 to original format.

  • Rename downcpl2d into parent2nest_2d to reduce confusion. And the
    parent2nest_2d variable is to downscale/remap a 2d variable from the parent to
    its nest.

  • Remove moving nest debugging statements from dycore core.

  • Moving nest bug fix for nest edge on prime meridian.

Co-authored-by: Bin.Liu Bin.Liu@noaa.gov
Co-authored-by: A-Kyle kyle.ahern@noaa.gov
Co-authored-by: Gerhard Theurich theurich@sourcespring.net

Description

Include a summary of the change and which issue is fixed. Please also include
relevant motivation and context. List any dependencies that are required for
this change.

Fixes # (issue)

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Please also note
any relevant details for your test configuration (e.g. compiler, OS). Include
enough information so someone can reproduce your tests.

Checklist:

Please check all whether they apply or not

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • Any dependent changes have been merged and published in downstream modules

* Remove the hardcoded L64 source code line in tools/external_ic.F90, so that the
model can run with other vertical level configurations.

* Moving Nest Initial Implementation

* Change speed of moving nest to avoid it going off edge of parent tile.

* Corrected range of value checking for sina and cosa.

* Turned down debugging logging.

* Added bounds checking so moving nest stays on parent tile.  Only read static latlon grid file once.  Reduced number of variables output by mn_prog_dump_to_netcdf.

* Added call to bounds checking so nest stays on parent tile.  Modified to read from static grid files for moving nest only once.  Added crude scaling of nest motion speed based on timestep.

* Added moving nest code for delz variable.  Improved scaling of automated nest motion.  Removed forced exit at timestep 4800.

* Adjusted moving nest edge subroutine.  Will stop motion when 5 points from edge, and block motion for the rest of model run.

* Output nest center lat/lon after nest motion.  Reduce logging from permit_move_nest().

* Added moving nest support to shift SST/skin temperature.  Added 2D subroutines to moving nest interfaces.  Added performance tracking to init_grid and setup_aligned_nest.

* Optimized init_grid/setup_aligned_nest.  Added performance timers.

* Brought back if-statement that was lost in merge.

* Removed obsolete MPP subroutine from use clause.

* Add merge_import and debug_merge options of atmos_model_nml in driver/fvGFS/atmosphere.F90.

* Added nest motion for terrain from static file.

* Restructured calls to move nest.

* *Add the capability of dealing with soil variables for moving nest.
*Update the moving nesting interface.
Note: Coding session among Bill, Xuejin, Kyle, Zhan, Chunxi, Weiguo, Bin

* Updates to moving nest for physics variables so code complies and runs.  Added new subroutines for high precision physics variables.

* *Define the internal vortex tracker needed variables
*Add a fv_diag_tracker subroutine to obtain the tracker needed variables
*Identify and add the call interfaces for the internal vortex tracker in driver/fvGFS/atmosphere.F90.
Note: These are outcome from the coding sessions among Xuejin, Chunxi, Zhan, and Bin.

* Working version of mn_phys_dump_to_netcdf

* Added soil variables to mn_phys_dump_to_netcdf.  Required changes to pass in IPD data structures.

* Added phy_f2d and phy_f3d physics variables to moving nest.  Added land fraction and terrain std to moving nest.

* Reinitialize zsurf in fv_diagnostics.F90.  Perform vertical remapping after nest move.  Added nest move for static physics variables read in from file.

* Update xlat, xlon, and related arrays in physics after nest move.  Code changes to preserve 64 bit precision of values read in from netCDF, needed for physics variables.

* Added many 2D surface physics variables to nest motion.  Corrected call signature for GFS_grid_populate.

* Added NSST variables to moving nest functionality.

* Removed some logging to speed performance testing.  Initial implementation of physics IFD variable.

* Set physics variable IFD from land sea mask (with values flipped).

* Handle strong/weak zenith angle albedos facsf facwf by interpolating from parent for moving nest.

* Added terrain_smoother options to namelist, for smoothing edges of terrain in moving nest.

* Turn off vertical remapping with nest moves.  Seems not to be needed.

* Added 10m winds, total precip, surface temperature to physics nest motion code.

* Added comment headers, connected some moving nest main routine variables to namelist.

* Removed some logging statements

* Revert "Add merge_import and debug_merge options of atmos_model_nml in driver/fvGFS/atmosphere.F90."

This reverts commit cd2879d.

* *Add model/fv_tracker.F90 containing the FV internal tracker ported from HWRF.
*Add mp_reduce_[min/max][val/loc] in tools/fv_mp_mod.F90 needed by the internal
tracker
*Add internal tracker needed variables and interface in model/fv_arrays.F90,
model/fv_control.F90, and driver/fvGFS/atmosphere.F90.

Contributors: @XuejinZhang-NOAA, @BinLiu-NOAA, @WilliamRamstrom-NOAA,
@ChunxiZhang-NOAA, @ZhanZhang-NOAA

* Add get_distsq in fv_tracker.F90 to calculate the square of the approximate
distance to the domain center at all points.

* Internal vortex tracker related clean up in atmosphere.F90 and fv_tracker.F90

* Fixes for internal tracker related changes so that it can build successfully.

* Fixes for internal tracker related changes so that it can build successfully.

* Connect internal tracker with the nest move interface for moving nesting.
Code sprint: @XuejinZhang-NOAA, @WilliamRamstrom-NOAA, @ChunxiZhang-NOAA,
@KyleAhern-NOAA, @ZhanZhang-NOAA, @BinLiu-NOAA

* Debug FV3 internal vortex tracker and it now can find the storm properly.
Connecting with nest-moving needs further debug though.

* Connect automatic storm-following and prescribed moving with the nest moving procedure properly.
Contributors: @BinLiu-NOAA, @XuejinZhang-NOAA, @WilliamRamstrom-NOAA.

* Commented out call to fms_io_exit() that was needed for moving nest debug outputs.

* Added moving nest handling of physics variables - hprime, zorlo, zorlw

* Fixed off-by-one error with moving nest terrain data, updated physics version of orography.

* Moved temporary moving nest physics grids into fv_atmos_type.  Plus removed some dead code.

* Fixed bug in the moving nest physics transfer to fv_arrays.F90

* Fixed bug in fv_moving_nest_main.F90 where profiling timers were started repeatedly.

* Disabled some debug logging statements.

* Switched off detailed moving nest performance profiling.  Moved timestep logging from print statements to call to mpp_error.

* Separated moving nest physics code into separate module.  Merged logging code into fv_moving_nest_utils.F90.

* Moved physics-related routines into separate file.

* Remove model/fv_moving_nest_logging.F90, which is no longer needed (Bill).

* Improved handling of 32bit/64bit reals as subroutine arguments, to permit 64 bit compiles.

* Additional changes to permit 32bit/64bit compiles.

* Added handling of new albedo variables to moving nest.  Added handling of lakes to moving nest.

* Added t-dependent lon-lat (grid_mlont, grid_mlatt) to fv_diagnostics

* Added moving nest functionality for neststruct%i/j stagger.

* Added preliminary land masked interpolation for moving nest.

* fix center-finding arguments in tracker; add debug routine

* Regional Moving Nest Enabled. Fixed moving nest for land emissivity and land albedo. Static surface files renamed.

* Better handling of longitudes > 180.

* Removed logging statements

* Moving Nest updates for emis_lnd and emis_wat.

* Set the default value for surface_dir as INPUT/moving_nest needed by moving
nesting and remove the fix_sfc directory structure inside INPUT/moving_nest.

* Added patch for nest motion of surface emissivity and albedo.

* Comment out the dump_surface_physics related debug output in
tools/fv_diagnostics.F90. Other the Cmake build fails due to circular
dependency.

* Only enter moving nest code for moving nest configurations

* Code cleanup of moving nest modules

* Added doxygen comments and regularized indentation.

* *Add the capability of downscaling the coupling variables (e.g., SST) from the
parent grid into the nested grid. This is needed since only the atmospheric
parent grid is coupled to other model components currently.
*Update the logic to determine the moving_nesting property.

* Connected move_nsst to namelist option.

* Revised namelist options for move_nsst in moving nest.

* Moving nest for physics ifd only if using NSST.

* Modify atmosphere_domain interface to pass both moving_nest_parent and is_moving_nest up to FV3ATM.

* Expand and add the capability to output the grid_mspec (similar to grid_spec)
variables for the moving-nesting configuration.

* Added full_zs_filter when nest moves.

* Upgrade to read in monthly high-resolution albedo information for moving nest.

* Use same real kind for centers and corner... now that ESMF is directly referencing these data arrays.

* Handle moving nest interpolation of sfc roughness variables with land mask

* Reapply handling of NSST being turned off for coupled runs.

* Added Doxygen documentation and code cleanup.

* add zsurf to diag fields for moving nest

* Updated formatting of header comments.

* Fix syntax error in bounding_box.F90

Corrected syntax error in bounding_box.F90 that was uncovered with gfortran.

* Update Coriolis terms after nest move.

* Simplified call to EOSHIFT for compiler portability.  Now omits BOUNDARY argument to use the default value of 0.0 (in single or double precision), instead of explicitly setting it to 0

* Moving-nesting related code clean-ups (Bill, Kyle, Bin).

* Fix a typo in fill_nested_grid_cpl in driver/fvGFS/atmosphere.F90.

* Modularization of moving nest and automated storm tracker.

* Separate moving_nest code into its own directory.

* *fv_tracker.F90 related clean-ups.
*fv_moving_nest_types.F90 clean-ups.

* Clean up mzsurf from fv_diagnostics.F90 and fv_diagnostics.h (Kyle and Bin).

* Made call to EOSHIFT portable to gfortran.

* Removed commented-out code from fv_control.F90.

* Revert logging output in fv_diagnostics.F90 to original format.

* Rename downcpl2d into parent2nest_2d to reduce confusion. And the
parent2nest_2d variable is to downscale/remap a 2d variable from the parent to
its nest.

* Remove moving nest debugging statements from dycore core.

* Moving nest bug fix for nest edge on prime meridian.

Co-authored-by: Bin.Liu <Bin.Liu@noaa.gov>
Co-authored-by: A-Kyle <kyle.ahern@noaa.gov>
Co-authored-by: Gerhard Theurich <theurich@sourcespring.net>
@JiliDong-NOAA JiliDong-NOAA merged commit 32f4886 into JiliDong-NOAA:dev/emc Apr 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants