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

WPS 4.3.1 #22

Open
wants to merge 67 commits into
base: wps-cmake
Choose a base branch
from
Open

WPS 4.3.1 #22

wants to merge 67 commits into from

Conversation

letmaik
Copy link

@letmaik letmaik commented Mar 1, 2022

No description provided.

gthompsnWRF and others added 30 commits April 10, 2019 16:00
Merge bug-fixes from the v4.1 release into the develop branch.
This merge also connects the v4.1 tag to future development on
the develop branch.

* master:
  Remove "(PRE-RELEASE)" from the version number in the README file
  Add 'modis_15s_lake' option for LANDUSEF data in GEOGRID.TBL.ARW
  eliminate the output=no option to the QNC (cloud drop number concentration) variable
  Update grib tables to add new HRRR fields. Ammend one varaible name.
  Leave old code in g2 library's intmath.f code with comment
  Fix string comparison
  Add configuration stanza for POWER running Linux with XL compilers
  Fix mismatch integer kind in IAND intrinsic calls in g2 library
  Update comments in Vtable.GFS. Add history of important GFS changes.
  Adjust pressure-level RH from GEFS as is done for GFS, CDAS, and ECMWF.
  Add LOGSFP entry to METGRID.TBL.ARW
  Update version number to 4.1
This merge adds a new optional dataset of irrigation to the GEOGRID.TBL. This
dataset is 0.0833 degree (1/12 degree) resolution, about 9 km. The resulting
field, named irrigation, is a 2-d field of percentages (0 - 100).

In anticipation of other irrigation data sets becoming available, this dataset
is located under the generic directory "irrigation" and then in the data-specific
"fao" subdirectory.

The data is sourced from
http://www.fao.org/aquastat/en/geospatial-information/global-maps-irrigated-areas.

The dataset supports the new WRF model option sf_surf_irr_scheme =1, 2 and 3.

* irrigation:
  change the path and interp option as default
  add new irrigation dataset to table
All of the soil data is missing in domain 252
This merge updates the GRIB codes in the Vtable.RAP.hybrid.ncep table, and it
also adds additional microphysical (QNC) and aerosol (QNWFA, QNIFA) fields.

* varTable_RAP_hybrid_mp:
  31 MB, not 15.5 MB size
  domain 252 does not have sufficient data, domain 130 does
  update GRIB2 parameters based on newer version RAP and HRRR models at NCEP
The version number is set in the top-level README, the compile script,
and the geogrid and metgrid global attributes.
…culation

When the calc_ecmwf_p utility is provided with a subset of ECMWF model levels,
it may happen that the allocated 'tt' array contains non-zero values (because
it was not previously initialized). This leads to errors in the calculation of
the GHT field due to the use of uninitialized memory.

Thanks to Hugo Hartmann (GitHub: hugohartmann) for identifying this issue
and suggesting the fix in this commit.
Prior to this commit, the code in rd_grib2.F compared the starting latitude for
a field on a Gaussian grid with the scaling factor, and if the starting latitude
was larger than the scaling factor, the starting latitude was scaled. However,
this fails when the starting latitude is negative, in which case no scaling is
applied, and downstream code fails due to an invalid starting latitude in
the resulting intermediate file.

The fix in this commit is to simply compare the magnitude of the starting
latitude with the scaling factor, and if the former exceeds the latter, then
scaling of the starting latitude is applied.
…land use

The 'landmask_water' entry in the GEOGRID.TBL.ARW file for the 'modis_15s_lake'
land use dataset previously only identified category 17 as a water category,
leading to an incorrect landmask field in the geogrid output.

This commit updates the 'landmask_water' entry to identify both category 17
and category 21 as water categories.

Thanks to GitHub user markelg for finding the issue addressed by this commit.
…f-model#144)

This merge fixes a potential error in the calculation of the GHT field in
the calc_ecmwf_p utility due to the use of uninitialized memory.

When the calc_ecmwf_p utility is provided with a subset of ECMWF model levels,
it may happen that the allocated 'tt' array contains non-zero values (because
it was not previously initialized). This leads to errors in the calculation of
the GHT field due to the use of uninitialized memory.

Thanks to Hugo Hartmann for identifying this issue and suggesting the fix in
this merge.

This merge fixes issue wrf-model#136 .

* calc_ecmwf_mem_initialization:
  Initialize arrays in calc_ecmwf_p to avoid potential error in GHT calculation
This merge adds category 21 as a water category for the modis_15s_lake land use
dataset to give correct computation of the landmask field.

The 'landmask_water' entry in the GEOGRID.TBL.ARW file for the 'modis_15s_lake'
land use dataset previously only identified category 17 as a water category,
leading to an incorrect landmask field in the geogrid output.

This merge updates the 'landmask_water' entry to identify both category 17
and category 21 as water categories.

Thanks to GitHub user markelg for finding the issue addressed by this merge.

This merge fixes issue wrf-model#132 .

* modis_15s_lake_bug:
  Add missing category 21 for landmask calculation with modis_15s_lake land use
The XL compiler identified calls to the MIN and MAX intrinsics in
module_map_utils with inconsistent kind type parameters of the arguments:

    "module_map_utils.f90", line 819.44: 1513-041 (S) Arguments of the wrong type were specified for the INTRINSIC procedure "max".
    ** map_utils   === End of Compilation 1 ===
    1501-511  Compilation failed for file module_map_utils.f90.

This commit changes the kind type parameter of the literal arguments
to MIN and MAX at line 808 of module_map_utils.F in the ijll_ps
routine to HIGH.
… stanza

For compatibility with other systems, the binary files (principally,
the intermediate files) created by the WPS programs should be written in
big-endian byte order. Accordingly, the -qufmt=be option has been added to
the FFLAGS and F77FLAGS variables in the POWER/Linux stanza.
…del#147)

This PR adds the -qufmt=be option to FFLAGS and F77FLAGS in the XL/POWER/Linux
configuration stanza.

For compatibility with other systems, the binary files (principally,
the intermediate files) created by the WPS programs should be written in
big-endian byte order. Adding the -qufmt=be compiler option to the FFLAGS and
F77FLAGS variables in the POWER/Linux stanza accomplishes this.

This PR fixes issue wrf-model#129 .

* xl_power_linux_big_endian:
  Add -qufmt=be to FFLAGS and F77FLAGS for XL/POWER/Linux configuration stanza
…odel#148)

This merge fixes an inconsistency in the kind types of arguments to the MIN and
MAX intrinsics in module_map_utils.

The XL compiler identified calls to the MIN and MAX intrinsics in
module_map_utils with inconsistent kind type parameters of the arguments:

    "module_map_utils.f90", line 819.44: 1513-041 (S) Arguments of the wrong type were specified for the INTRINSIC procedure "max".
    ** map_utils   === End of Compilation 1 ===
    1501-511  Compilation failed for file module_map_utils.f90.

This merge changes the kind type parameter of the literal arguments to MIN and
MAX at line 808 of module_map_utils.F in the ijll_ps routine to HIGH.

* xl_map_utils_intrinsic_fix:
  Fix inconsistent kind types of arguments to MIN/MAX in module_map_utils
This configuration stanza has been used to successfully build the WPS
on ORNL Summit using the PGI 19.9 compilers.
Following the change in the preceding commit, this commit modifies the g2print
code to ensure that negative starting latitudes for Gaussian grids are scaled
appropriately.
This merge adds a new configuration stanza for building with the PGI compilers
on Linux/POWER9 systems.

This configuration stanza has been used to successfully build the WPS
on ORNL Summit using the PGI 19.9 compilers.

* pgi_power_stanza:
  Add configuration stanza for PGI compilers on Linux/POWER9
…#145)

This merge fixes an issue in scaling negative starting latitudes in GRIB2
datasets on a Gaussian grid.

Prior to the changes in this merge, the code in rd_grib2.F compared the starting
latitude for a field on a Gaussian grid with the scaling factor, and if
the starting latitude was larger than the scaling factor, the starting latitude
was scaled. However, this fails when the starting latitude is negative, in which
case no scaling is applied, and downstream code fails due to an invalid starting
latitude in the resulting intermediate file.

The fix in this merge is to simply compare the magnitude of the starting
latitude with the scaling factor, and if the former exceeds the latter, then
scaling of the starting latitude is performed.

Thanks to Linda Maoyi for identifying the issue addressed in this merge.

This merge fixes issue wrf-model#142 .

* fix_negative_start_lat:
  Fix scaling of negative starting latitude for Gaussian grids in g2print
  Fix scaling of starting latitude in GRIB2 datasets on a Gaussian grid
This merge finalizes the v4.2 release by adding changes from the 'release-v4.2'
branch onto the 'master' branch.

* release-v4.2:
  Fix scaling of negative starting latitude for Gaussian grids in g2print
  Add configuration stanza for PGI compilers on Linux/POWER9
  Add -qufmt=be to FFLAGS and F77FLAGS for XL/POWER/Linux configuration stanza
  Fix inconsistent kind types of arguments to MIN/MAX in module_map_utils
  Add missing category 21 for landmask calculation with modis_15s_lake land use
  Fix scaling of starting latitude in GRIB2 datasets on a Gaussian grid
  Initialize arrays in calc_ecmwf_p to avoid potential error in GHT calculation
  Update version number to 4.2
  31 MB, not 15.5 MB size
  domain 252 does not have sufficient data, domain 130 does
  change the path and interp option as default
  add new irrigation dataset to table
  update GRIB2 parameters based on newer version RAP and HRRR models at NCEP
The util/plotfmt.ncl script did not work with Lambert Conformal (LC) projections.
```
>ncl util/plotfmt.ncl 'filename="FILE:2020-04-19_00"'

 Copyright (C) 1995-2019 - All Rights Reserved
 University Corporation for Atmospheric Research
 NCAR Command Language Version 6.6.2
 The use of this software is governed by a License Agreement.
 See http://www.ncl.ucar.edu/ for more details.
(0)	==================================================
(0)	VAR = PMSL__201300
(0)	hdate         = '2020-04-19_00:00:00'
(0)	units         = 'Pa'
(0)	desc          = 'Sea-level Pressure'
(0)	field         = 'PMSL'
(0)	map_source    = 'NCEP RAP Model          GRID 130'
(0)	version       = 5
(0)	xfcst         = 0
(0)	xlvl          = 201300
(0)	nx/ny         = 451/337
(0)	iproj         = 3
(0)	lat0/lon0     = 16.281/233.862
(0)	head_real(8)  = 13.545
(0)	head_real(9)  = 13.545
(0)	head_real(10) = 265
(0)	head_real(11) = 25
(0)	head_real(12) = 25
(0)	head_real(13) = 6371.23
fatal:Variable (lon) is undefined
fatal:["Execute.c":8637]:Execute: Error occurred at or near line 196 in file util/plotfmt.ncl
```

Here is line 196
```
    189       ; Read 2D data
    190
    191       slab = wrf_wps_rddata_int(istatus,nx,ny)
    192
    193       slab@_FillValue = -1e+30
    194       slab!1 = "lon"
    195       slab!0 = "lat"
    196       slab&lon = lon
    197       slab&lat = lat
    198       slab@units = units
```

For the LC projections, the fields `lat` and `lon` are not required, and so are never defined. The assignments
using `lat` and `lon`, and the subsequent deallocation of those two fields are both removed from the run-time
processing with `if` tests for the LC projection.

While providing a fix for this, Ming additionally added the lat lon lines on the LC plots. This is by adding
two extra lines in the LC projection `if` block.

Only a single file is modified:
util/plotfmt.ncl
This merge enables plotfmt.ncl to be used datasets on a Lambert Conformal projection

* plotfmt_lambert:
  Fix plotfmt.ncl for use with Lambert Conformal projections
This merge brings changes from the v4.2 release into the develop branch.
It also connects the v4.2 tag to future development on the develop branch.

* master:
  Fix scaling of negative starting latitude for Gaussian grids in g2print
  Add configuration stanza for PGI compilers on Linux/POWER9
  Add -qufmt=be to FFLAGS and F77FLAGS for XL/POWER/Linux configuration stanza
  Fix inconsistent kind types of arguments to MIN/MAX in module_map_utils
  Add missing category 21 for landmask calculation with modis_15s_lake land use
  Fix scaling of starting latitude in GRIB2 datasets on a Gaussian grid
  Initialize arrays in calc_ecmwf_p to avoid potential error in GHT calculation
  Update version number to 4.2
I am doing some paleo-downscaling with WRF, and have to ungrib a set of files that contain data at 3-digit years (e.g. year 450). Ungrib.exe was unable to extract data from these files, as

hdate 450-01-01_00:00:00 > hsave 0000-00-00_00:00:00

was not evaluated as true in one of the internal loops.
This was apparently caused by a formatting error when hdate was created.

I simply turned the year format from 'i4' to 'i4.4' on lines 26,30,34 and 38; which forces a leading zero (just as in other formatted time units). I did the same in 'geth_newdate.F', too.	

hdate 0450-01-01_00:00:00 > hsave 0000-00-00_00:00:00

The above is now .true., so ungrib.exe works for 3-digit years as well.
I am doing some paleo-downscaling with WRF, and have to ungrib a set of files that contain data at 3-digit years (e.g. year 450). Ungrib.exe was unable to extract data from these files, as

hdate 450-01-01_00:00:00 > hsave 0000-00-00_00:00:00

was not evaluated as true in one of the internal loops.
This was apparently caused by a formatting error when hdate was created.

I simply turned the year format from 'I4' to 'I4.4' on lines 241,245,249 and 253; which forces a leading zero (just as in other formatted time units). I did the same in 'build_hdate.F', too.	

hdate 0450-01-01_00:00:00 > hsave 0000-00-00_00:00:00

The above is now .true., so ungrib.exe works for 3-digit years as well.
The information for users in the NARR Vtable accidentally includes
an additional letter after "www". Once this change is made, sure
enough, we can download the NARR static data.

This is not a compiled file, so has no impact on the source build.

This part of the NARR Vtable is not processed by ungrib, it is purely
a comment.

Changes to be committed:
    modified:   ungrib/Variable_Tables/Vtable.NARR
jimbresch and others added 25 commits May 4, 2021 17:47
…unt for new

missing values and that the GEFS Landsea field doesn't match the soil fields.
Update rrpr.F to correctly process the land surface fields in the September 2020
GEFS files. The GEFS changes were similar to the GFS changes in July 2017 which
includes a new missing value for soil fields. The landmask in the grib file does
not match the soil fields, so a landmask is created from the soil temperature
field. Without this fix the soil temperature and moisture can be zero which
causes WRF to blow up.

If NCEP eventually fixes this problem we may need to revisit this processing.

* GEFS_Sep2020_landmask_fix:
  Changes to rrpr.F for the September 2020 update to GEFS.
Only three of the WPS components -- geogrid, metgrid, and int2nc -- require
the WRF I/O libraries. Even if none of these components was needed, it was
previously still necessary to either compile WRF or to make manual changes to
the configure script.

This commit introduces logic in the configure script to check for a command-
line argument, --nowrf, that, if present, disables checks in the configure
script for a compiled WRF directory. This enables, for example, the compilation
of the ungrib program without needing to compile the WRF model.
This merge adds a new option, --nowrf, to the configure script so that the WPS
can be configured without a compiled WRF model.

Only three of the WPS components -- geogrid, metgrid, and int2nc -- require
the WRF I/O libraries. Even if none of these components was needed, it was
previously still necessary to either compile WRF or to make manual changes to
the configure script.

This merge introduces logic in the configure script to check for a command-
line argument, --nowrf, that, if present, disables checks in the configure
script for a compiled WRF directory. This enables, for example, the compilation
of the ungrib program without needing to compile the WRF model.

* configure_no_wrf:
  Add --nowrf option to configure script, for configuring without WRF
This merge corrects the default resolution for the OL3SS field in
the GEOGRID.TBL.ARW file.

The previous default resolution for the OL3SS field was 2.5 minutes, which
doesn't agree with the default resolution for related fields. The correct
default resolution for this field should 10 minutes.

* fix-gwd-tbl:
  correct default resolution data for OL3SS
This merge adds the 20 new GWD fields needed by gwd_opt=3 to the NoahMP, Chem,
and Fire GEOGRID.TBL files.

* fix-tables:
  add new GWD fields to NoahMP, Chem and Fire tables
The version number is set in the top-level README, the compile script,
and the geogrid and metgrid global attributes.
- Set interval_seconds to 10800
- Removed io_form_geogrid and io_form_metgrid variables, as currently
  we only recommend setting these to 2 (default)
- Removed comment regarding using V3.9 settings for geog_data_res
  (outdated)
…rf-model#178)

This merge updates the namelist.wps file for consistency with updates to WRF's
namelist.input (see WRF #1513), and it also makes minor improvements to decrease
user confusion.

- Set interval_seconds to 10800 - namelists are set up specifically for GFS
  data, which is usually available every three hours.

- Remove io_form_geogrid and io_form_metgrid variables, as currently we
  recommend only setting these to 2, which is the default value.

- Removed old comment regarding using V3.9 settings for geog_data_res.

* update_namelist_wrf_consistency:
  Updated namelist.wps for consistency with updates to namelist.input
This merge finalizes the v4.3 release by adding changes from the 'release-v4.3'
branch onto the 'master' branch.

* release-v4.3:
  Updated namelist.wps for consistency with updates to namelist.input
  Update version number to 4.3
  add new GWD fields to NoahMP, Chem and Fire tables
  correct default resolution data for OL3SS
  Add --nowrf option to configure script, for configuring without WRF
  Changes to rrpr.F for the September 2020 update to GEFS.
  updated namelist values to match case updates for default namelist.input
  Add 20 new GWD fields for WRF gwd_opt = 3
  update GEOGRID tables for NoahMP, fire and chem
  remove tile drainage
  dynamic irrigation added GEOGRID.TBL.ARW.noahmp
  Fix URL for NARR static data grib1 data
  Update geth_newdate.F
  Update build_hdate.F
  Fix plotfmt.ncl for use with Lambert Conformal projections
The version number is set in the top-level README, the compile script,
and the geogrid and metgrid global attributes.
…module.F

In calls to ext_{int,ncd,gr1}_put_dom_ti_{integer,real} in output_module.F, the
'Data' dummy argument is an array, but a scalar actual argument was provided.
This error was picked up by the GNU Fortran 11.1.0 compiler:

  output_module.f90:1733:41:

   1733 |                                          var_value, &
        |                                         1
  ......
   1761 |                                          var_value, &
        |                                         2
  Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
  output_module.f90:1678:41:

   1678 |                                          var_value, &
        |                                         1
  ......
   1706 |                                          var_value, &
        |                                         2
  Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)

The fix adopted by this commit is to simply make the scalar var_value into a
temporary size-1 array with (/var_value/).
…odule.F

In calls to ext_{int,ncd,gr1}_get_dom_ti_{integer,real} in input_module.F, the
'Data' dummy argument is an array, but a scalar actual argument was provided.
This error was picked up by the GNU Fortran 11.1.0 compiler:

  input_module.f90:881:41:

    881 |                                          var_value, &
        |                                         1
  ......
    909 |                                          var_value, &
        |                                         2
  Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)
  input_module.f90:822:41:

    822 |                                          var_value, &
        |                                         1
  ......
    854 |                                          var_value, &
        |                                         2
  Error: Rank mismatch between actual argument at (1) and actual argument at (2) (rank-1 and scalar)

The fix adopted by this commit is to declare a local array for use as the actual
argument, and to copy the first element of this array to var_value after a
successful call to ext_{int,ncd,gr1}_get_dom_ti_{integer,real}.
…el#184)

This merge corrects the actual argument rank in several calls to WRF I/O API
routines for reading and writing domain time-independent attributes.

For more details, see the commit messages of the two commits in this merge.

* fix_ioapi_put_get_args:
  Fix incorrect argument rank in calls to ext_*_get_dom_ti_* in input_module.F
  Fix incorrect argument rank in calls to ext_*_put_dom_ti_* in output_module.F
…pilers

Newer GNU compilers (in particular, major versions later than 9) appear to
require the -fallow-argument-mismatch option in order to successfully compile
certain modules that make calls to Fortran 77 routines that operate on various
datatypes: for example, the MPI_Bcast call can broadcast various data types, and
without the Fortran 90+ module interface, there are no overloaded explicit
interfaces for supported argument types, leading newer GNU Fortran compiler
releases to generate errors about inconsistent/mismatched argument types.

The configure script now builds a test program that determines whether the
Fortran compiler being used is GNU Fortran with a major version later than 9,
and sets the FCCOMPAT variable to -fallow-argument-mismatch in the configure.wps
file if so (and sets FCCOMPAT to an empty string otherwise).

Since Make treats undefined variables as empty strings, the FCCOMPAT variable
only needs to be defined for configuration options where it will be needed,
i.e., configuration options that use the GNU Fortran compiler.

Other compiler could follow what has been done in this commit to define FCCOMPAT
as needed through the use of additional test programs (and through the addition
of FCCOMPAT to other configuration stanzas).
This merge adds new variables to the HRRR variable list in the params.f file
(found in ungrib/src/ngl/g2).

* add-vars:
  Add newer variables to HRRR var list
This merge changes several print statements in g2print.F to use an explicit
format statement rather than list-directed output.

* print1:
  Fix print format in g2print.F by using an explicit format statement rather than list-directed output
…l#187)

This merge addresses build failures when newer GNU compilers are used.

Newer GNU compilers (in particular, major versions later than 9) appear to
require the -fallow-argument-mismatch option in order to successfully compile
certain modules that make calls to Fortran 77 routines that operate on various
datatypes: for example, the MPI_Bcast call can broadcast various data types, and
without the Fortran 90+ module interface, there are no overloaded explicit
interfaces for supported argument types, leading newer GNU Fortran compiler
releases to generate errors about inconsistent/mismatched argument types.

The configure script now builds a test program that determines whether the
Fortran compiler being used is GNU Fortran with a major version later than 9,
and sets the FCCOMPAT variable to -fallow-argument-mismatch in the configure.wps
file if so (and sets FCCOMPAT to an empty string otherwise).

Since Make treats undefined variables as empty strings, the FCCOMPAT variable
only needs to be defined for configuration options where it will be needed,
i.e., configuration options that use the GNU Fortran compiler.

Other compiler could follow what has been done in this commit to define FCCOMPAT
as needed through the use of additional test programs (and through the addition
of FCCOMPAT to other configuration stanzas).

* gnu_argument_mismatch:
  Add FCCOMPAT flags to postamble and throughout Makefiles when compiling Fortran
  Allow configure script to define new FCCOMPAT flags for newer GNU compilers
This merge finalizes the v4.3.1 release by adding changes from the 'release-v4.3.1'
branch onto the 'master' branch.

* release-v4.3.1:
  Fix print format in g2print.F by using an explicit format statement rather than list-directed output
  Add FCCOMPAT flags to postamble and throughout Makefiles when compiling Fortran
  Allow configure script to define new FCCOMPAT flags for newer GNU compilers
  Add newer variables to HRRR var list
  Fix incorrect argument rank in calls to ext_*_get_dom_ti_* in input_module.F
  Fix incorrect argument rank in calls to ext_*_put_dom_ti_* in output_module.F
  Update version number to 4.3.1
WPS Version 4.3.1

This minor release of the WPS fixes several small issues in the WPS code and
should have no impact on the WPS output.

* Modify several print statements in the g2print utility
* Add new HRRR variables to variable tables in the g2 library
* Correct compilation issues with newer GNU Fortran compiler versions (10.1.0
  and later)
@letmaik letmaik force-pushed the letmaik/4.3.1 branch 3 times, most recently from bac970b to 2521970 Compare March 1, 2022 21:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

9 participants