noaa-emc / nems Goto Github PK
View Code? Open in Web Editor NEWNEMS (NOAA Environmental Modeling System)
Home Page: https://noaa-emc.github.io/NEMS_doc/index.html
License: Other
NEMS (NOAA Environmental Modeling System)
Home Page: https://noaa-emc.github.io/NEMS_doc/index.html
License: Other
To include CDEPS_DATM component in ufs-weather-model, the following NEMS files need to be updated:
The module_EARTH_GRID_COM.F90 file needs to be updated to include "FRONT_CDEPS_DATM" for Setservices.
Since both CMEPS and CDEPS use PIO, the pio initialization calls need to be added to MAIN_NEMS.F90.
CMakeLists.txt file needs to be updated for new C preprocessor macros.
When running ufs-s2s-model in debug mode on Orion, I noticed that both esmf8.0.0.para and esmf8.0.0.g were present. Adding Orion to module purge takes care of this.
When compiled in debug mode, a divide by zero is detected in module_MEDIATOR in the atm_ocn_flux phase when calculating the variables thbot1 and rbot1.
In prep_ocn, the merges to ocean are currently active only if i2a exists. This does not work for the DATM because there is no i2a active. In addition, the prep_ocn merges are for a->o and i->o and so the correct conditional should be that a->o and i->o are active.
The following fields are being exported to FV3 as merges between ice and ocean in the prep_atm phase of the mediator.
mean_sensi_heat_flx
mean_laten_heat_flx
mean_up_lw_flx
mean_evap_rate
mean_zonal_moment_flx
mean_merid_moment_flx
FV3 requires these fields to be sent as ice-only fields.
I encountered this issue (as stated in the title) when testing the ADC-WW3-NWM-NEMS coupling app on the UNC Hatteras cluster.
In module_NEMS_Rusage.F90 and in the subroutine color_by_hash, the Fortran version of crc32 hash returned from the CRC algorithm (nems_c_rusage.c) is negative. I think the problem is that the C function returns the crc32 hash as an unsigned integer data type (uint32_t), but in Fortran, the only available datatype is the signed integer (int32_t).
I am not sure if this indicates a bug in my compiler (openmpi 3.0.0)'s Fortran 2003 support or not (as noted at the beginning of this module). I also wonder if taking the absolute value of the negative Fortran hash can be a workaround for this machine/compiler dependent issue.
See UFS issue #97 for more details.
To build the mom6_cice6_cdeps application, the following two files need to be updated:
For testing CMEPS integration, we require the ability to build NEMS using a second mediator (CMEPS) in place of the NEMS mediator.
The module_MEDIATOR
, module_MEDIATOR_methods
and the module_MEDIATOR_SpaceWeather
should be removed.
Various legacy ifdef settings (eg. ifdef CMEPS
, if ESMF_VERSION_MAJOR < 8
) as well as non-existent or legacy models (ifdef FRONT_GSM
) should be removed.
The large block of code for adding entries to the Field Dictionary should be removed and the fd_nems.yaml used instead.
The bail-out error checking lines should be simplified by adding a similar ChkErr
function present in the MOM6 NUOPC cap and CMEPS.
NEMS needs to support CDEPS data ocean configurations.
Since the driver and main program were moved under ufs-weather-model, should this repo move into a read-only state?
See UFS-S2S issue #44 for details
The mediator currently dumps low-resolution interpolated fields when mediator field dumping is enabled for fields sent to or from FV3. The mediator should be enabled to write tiled (native FV3 grid) files when mediator field dumping is enabled.
FV3 now exports the sensible, latent, momentum and net LW fluxes to the mediator for use in prep_ocn as only water values. The use of the mediator-calculated atmosphere-ocean fluxes in icy water can now be removed for the FV3_CPLD case. The use of the mediator calculated atm-ocean fluxes is retained for use when the DATM component replaces FV3.
@BrianCurtis-NOAA reported that in src/conf/module-setup.*.inc
, the file path for Orion is incorrect: Change /apps/lmod/init
to /apps/lmod/lmod/init
NEMS code needs to be updated to allow standalone atm to run with coupled executable. Currently the code has dependency in CMEPS when CMEPS component is defined in the executable while the standalone atm run does not need CMEPS.
For the same reason as several times before, the current hash of NEMS in ufs-weather-model (044400a) doesn't work with the GNU compilers:
module_EARTH_GRID_COMP.F90:2625:41:
2625 | standardNames = (/"ice_fraction",&
| 1
Error: Different CHARACTER lengths (12/21) in array constructor at (1)
make[1]: *** [module_EARTH_GRID_COMP.o] Error 1
The offending code is
call NUOPC_FieldDictionarySetSyno( &
standardNames = (/"ice_fraction",&
"sea_ice_concentration"/), rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
line=__LINE__, &
file=__FILE__)) &
return ! bail out
but it needs to be padded so that the character lengths match (see the other examples in the same file just below)
call NUOPC_FieldDictionarySetSyno( &
standardNames = (/"ice_fraction ",&
"sea_ice_concentration"/), rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, &
line=__LINE__, &
file=__FILE__)) &
return ! bail out
I checked the head of develop and the bug is still there (slightly different line numbers). I will be submitting a PR to fix this.
Can you please watch out for these types of errors and notify the developers? Thanks.
In the PR #76, a code change is added in src/module_EARTH_GRID_COMP.F90 to match that is used in GFSv16 implementation branch. The line will be removed in future commit.
NEMS should be ported to SSEC's S4 cluster to enable UFS and DA research efforts on that system.
To include CDEPS_DATM_CFSR and CDEPS_DATM_GEFS components in ufs-weather-model, the following two files need to be updated:
The PE_MEMBER logic in NEMS and the model_configure is no longer relevant and should be removed. This remains historically from a prior version of NEMS that supported ensembles in the same MPI world.
See here:
NEMS/src/module_NEMS_GRID_COMP.F90
Line 279 in b593c6c
and here:
NEMS/src/module_NEMS_GRID_COMP.F90
Line 308 in b593c6c
In all cases now, the NEMS EARTH DRIVER runs across all PETs and so specification of the petList parameter to ESMF_GridCompCreate() is not required.
The recommended approach is to remove all PE_MEMBER logic from NEMS.
This also allows for removal of PE_MEMBER01:
inside model_configure
. Its presence there is confusing anyway since that file is a config file for the atmosphere, and not the overall NEMS level.
A component_CICE6.mk file and an option to use a CICE6 as a component in module_EARTH_GRID_COMP.F90 needs to be added. These will not impact any other build or baseline.
The field names imported by FV3 from CICE have been changed NOAA-EMC/fv3atm#54. The custom merges in the prep_atm phase of the mediator can now be removed.
The field names for the 4 SW components imported by the mediator from CICE and merged with FV3 fields in the prep_ocn phase of the mediator need to be changed. Related CICE issue NOAA-EMC/CICE5#12
The GSDCHEM component should be replaced with GOCART in the NEMS driver to enable UFS-Aerosols (ufs-community/ufs-weather-model#590).
Two field names for the coupled model need to be changed for final cmeps integration. The field names are:
mean_zonal_moment_flx => mean_zonal_moment_flx_atm
mean_merid_moment_flx => mean_merid_moment_flx_atm
This change needs to be implemented with a corresponding change in FV3 (# 89)
These changes will break baselines for the coupled model only because of name changes in the mediator restart files. Otherwise no changes are expected.
Remove verification of fingerprint in baseline to improve portability (e.g. phase 2), and interchangeability (e.g. rt.sh). Refer to ufs-community/ufs-s2s-model#78
The NEMS driver code requires a second round of cleanup:
ifdef IBM
code that was required for compiling ufs-weather with gnu. Error code which was generated when these functions were removed was :/scratch2/NCEPDEV/nwprod/hpc-stack/src/hpc-stack/pkg/upp-upp_v10.0.6/sorc/ncep_post.fd/PROCESS.f:81: undefined reference to `timef_'
potentially remove module_NEMS_GRID_COMP.F90
with a new MAIN_NEMS.F90
that instantiates and runs Earth grid comp instead of NEMS grid comp (@DusanJovic-NOAA has provided this to test)
potentially remove the need for the module_NEMS_UTILS.F90
by moving the reading of the logical controlling PET logging.
clean up the attribute settings. Additional code was added early in the cmeps integration project in order to allow the use of the CIME driver (required by the need to use CESM's CICE code at that time). The reading and adding of the attributes should be looked at again to remove anything no longer required.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.