NOAA-EMC / NEMS

NEMS (NOAA Environmental Modeling System)
https://noaa-emc.github.io/NEMS_doc/index.html
Other
11 stars 46 forks source link

support for ufs-s2s-model debug compilaiton #40

Closed MinsukJi-NOAA closed 4 years ago

MinsukJi-NOAA commented 4 years ago
DeniseWorthen commented 4 years ago

I will try this in the s2s branch I am working for with CMEPS. In that case, we build the alternate mediator using COMPONENTS=( FMS FV3%CMEPS=Y MOM6 CICE CMEPS ) in the appbuilder. The debug version uses CMEPS%DEBUG=Y, so I need to add the MAKE_OPT to the component_CMEPS.mk. Will the configure_rules.mk break if a component is listed that isn't being built?

MinsukJi-NOAA commented 4 years ago

I will try this in the s2s branch I am working for with CMEPS. In that case, we build the alternate mediator using COMPONENTS=( FMS FV3%CMEPS=Y MOM6 CICE CMEPS ) in the appbuilder. The debug version uses CMEPS%DEBUG=Y, so I need to add the MAKE_OPT to the component_CMEPS.mk. Will the configure_rules.mk break if a component is listed that isn't being built?

If you specify "COMPONENTS=( FMS FV3%DEBUG=Y%CMEPS=Y MOM6%DEBUG=Y CICE%DEBUG=Y CMEPS%DEBUG=Y )", it should work.

MinsukJi-NOAA commented 4 years ago

ufs-weather-model regression tests passed on hera: RegressionTests_hera.intel.log

DeniseWorthen commented 4 years ago

I tried the CMEPS version of the build but I had two problems. 1) The auto-set of the esmf g library didn't work 2) The NEMS mediator compile still doesn't seem to pick up the compiler flags from the esmf.mk. I do see that the cice_cap, the mom_cap and the CMEP/mediator code all compiles w/ the fflags of the debug esmf library.

My test build is here: /scratch2/NCEPDEV/climate/Denise.Worthen/WORK/TSTdebug/CMEPS_br/NEMS

In NEMS/debugbuild_setg I've set the esmfg manually. See line 2213 for the compile of module_MEDIATOR.F90 using '-O2 -debug minimal'.

I will try with just the NEMS version and report back.

DeniseWorthen commented 4 years ago

I apologize for this taking so long for me to review. It appears to be working on hera; I now see the code w/in NEMS/src compiled with debug flags. I've also built the CMEPS mediator version and that also compiles w/ the correct debug flags if I add CMEPS_MAKEOPT to the component_CMEPS.mk. When we move to cmeps we'll need to add that as a debug option.

The auto-load of the esmf debug modules I now realize is problematic though. It works on Hera because we have a single module to point to (esmf8.0.0g). It is different on Cheyenne though (first load esmf_libs/8.0.0 and then a specific debug module). I think we might just have to leave it to the user to load the correct esmf debug modules.

JessicaMeixner-NOAA commented 4 years ago

At one point, we would specify which module file to use in the appBuilder file. Now that is done in conf/before_components.mk Maybe we would add a module file fv3_coupled_debug and choose that module file in conf/before_components.mk based on some setting. I don't remember the order of what gets read first.

MinsukJi-NOAA commented 4 years ago

Right...it is specified in before_components.mk. I can't remember the details now, but it was not so straightforward to auto load a different esmf module, because it was a prerequisite of build_NEMS target in NEMS.mk. For this PR, let me remove the automatic esmf module change. So... it will just be the NEMS_BUILDOPT=DEBUG=Y.

MinsukJi-NOAA commented 4 years ago