Giter Site home page Giter Site logo

nasa-land-coupler's Introduction

NASA Land Coupler

Coupled surface-hydrology application with data assimilation.

Components

NASA Land Coupler Driver and Mediator: The NASA Land Coupler driver and mediator have been designed in collaboration by NOAA, NASA, and NCAR. The custom driver couples LIS and WRF-Hydro within the NUOPC framework. Coupled system configuration is controlled via settings in the nlc.runconfig file. The custom mediator couples an in memory ensemble to multiple instances of a component, which allows users to run a coupled ensemble entirely in memory. Each component is individually configured based on the needs of the component (see documentation for each component).

Land Information System (LIS): LIS is a land surface modeling framework devloped by NASA.
Documentation: https://lis.gsfc.nasa.gov/
Repository: https://github.com/NASA-LIS/LISF

WRF-Hydro: WRF-Hydro is a hydrometeorological and hydrologic modeling system developed by the research applications labratory at NCAR.
Documentation: https://ral.ucar.edu/projects/wrf_hydro/overview
Repository: https://github.com/NCAR/wrf_hydro_nwm_public

SSH keys

We are using ssh URLs for cloning submodules, so you will need to ensure that you have added your public SSH key from your platform (Discover and/or Cheyenne) to your GitHub account. Help is available here: https://help.github.com/articles/connecting-to-github-with-ssh/

Clone Instructions

These have been tested on Discover (NASA) and Cheyenne (NCAR).

Clone the repository including the submodules.

$ git clone --recursive [email protected]:NESII/lishydro.git <directory>

LIS and WRF-Hydro are included as git submodules. The following commands provide an alternative to using the --recursive git clone option.

$ cd <directory>        # go into the cloned repository
$ git submodule init
$ git submodule update

Prerequisites

System requires ESMF v8.0.1 or later.

Build Instructions

Configure Submodules Configure LIS and WRFHYDRO using the configure.sh script. For more information run ./configure.sh --help.

$ ./configure.sh

Build Application Build NASA Land Coupler (NLC) using the build.sh script. For more information run ./build.sh --help. NLC.exe will be installed into src/driver.

$ ./build.sh

Run Instructions

NOTE: Runs are currently only supported on Discover and Cheyenne.

Use cases are preconfigured using settings in usecases directory and preprocessed data. Input data, including configuration, domain, and parameter files, is stored on Discover and Cheyenne

Current supported use cases:

Use Cases Description
coupled_irene.noahmp.nldas2 Coupled LIS-WRFHYDRO Hurricane Irene NoahMP v3.6
coupled_irene.noah.nldas2 Coupled LIS-WRFHYDRO Hurricane Irene Noah v3.6
coupled_irene_noMed.noah.nldas2 Directly Coupled LIS-WRFHYDRO Hurricane Irene (No MED)
coupled_tar.noahmp_v4.0.1_cold.nldas2 Coupled LIS-WRFHYDRO Tar River NoahMP v4.0.1
coupled_tuolumne.ens002.noahmp.nldas2 Coupled LIS-WRFHYDRO Tuolumne NoahMP v4.0.1 Ensemble
coupled_tuolumne.ens020.noahmp_v4.0.1_da.nldas2 Coupled LIS-WRFHYDRO Tuolumne NoahMP v4.0.1 Ensemble with DA
coupled_tuolumne.noahmp.nldas2 Coupled LIS-WRFHYDRO Tuolumne NoahMP v3.6
coupled_tuolumne.noahmp_v4.0.1_cold.nldas2 Coupled LIS-WRFHYDRO Tuolumne NoahMP v4.0.1
coupled_tuolumne.noahmp_v4.0.1_da.nldas2 Coupled LIS-WRFHYDRO Tuolumne NoahMP v4.0.1 with DA
coupled_tuolumne.noah.nldas2 Coupled LIS-WRFHYDRO Tuolumne Noah v3.6
coupled_tuolumne_noMed.noah.nldas2 Directly Coupled LIS-WRFHYDRO Tuolumne (No MED)
sbys_tuolumne_hyd.ens002.ldas Uncoupled LIS-WRFHYDRO Tuolumne Ensemble (2 member)
stdalone_frontrange_hyd.ldas Standalone WRFHYDRO Frontrange
stdalone_irene_lnd.nldas2 Standalone LIS Hurricane Irene
stdalone_tuolumne_hyd.ldas Standalone WRFHYDRO Tuolumne

Setup Run Directory Preconfigured use cases can be set up using the setuprun.sh script. For more information run ./setuprun.sh --help. For a list of use cases run ./setuprun.sh --list-usecases.

$ ./setuprun.sh USECASE

This will create and populate a run directory in run/<usecase>.

Submit Run

The batch script run.sh can be modified if needed, for example to change the number of MPI tasks or the project number.

$ cd run/<usecase>
$ sbatch run.sh   # Discover - SLURM
$ qsub run.sh     # Cheyenne - PBS

This will submit the run to the batch queue. Output will appear in the same directory.

nasa-land-coupler's People

Contributors

danrosen25 avatar rsdunlapiv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nasa-land-coupler's Issues

BUG- compiling LIS and generate the lis.mk file

Hi,
i'm trying to compile LIS-HYDRO on a ubuntu 20.04 workstation. I followed the steps mentioned on the readme file. The configure step runs without problems since all necessary libraries where installed, but when i execute the commands:
cd runmodes/nuopc_cpl_mode
make nuopcinstall INSTPATH=$LISHYDRO_DIR/LIS-INSTALL
the LIS executable was generated successfully, but under "runmodes/nuopc_cpl_mode" when compiling "LIS_ESMF_Extensions.F90", i get the following errors:

Compiling LIS_ESMF_Extensions.o...

mpiifort -c -g -traceback -check arg_temp_created,bounds,format,output_conversion,stack,uninit -fPIC -assume realloc_lhs -m64 -mcmodel=small -pthread -threads -qopenmp -I/home/erdms/lis/extlibs/esmf/mod/modg/Linux.intel.64.intelmpi.default -I/home/erdms/lis/extlibs/esmf/src/include -I/home/erdms/LISHYDRO/src/LISF/LISF-master/lis/make -DESMF_NO_INTEGER_1_BYTE -DESMF_NO_INTEGER_2_BYTE -DESMF_MOAB=1 -DESMF_LAPACK=1 -DESMF_LAPACK_INTERNAL=1 -DESMF_NO_ACC_SOFTWARE_STACK=1 -DESMF_YAMLCPP=1 -DESMF_YAML=1 -DESMF_PIO=1 -DESMF_MPIIO -DESMF_NO_OPENACC -DESMF_BOPT_g -DESMF_TESTCOMPTUNNEL -DSx86_64_small=1 -DESMF_OS_Linux=1 -DESMF_COMM=intelmpi -DESMF_DIR=/home/erdms/lis/extlibs/esmf -DWRF_HYDRO -DESMF_VERSION_MAJOR=8 LIS_ESMF_Extensions.F90
LIS_ESMF_Extensions.F90(40): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [NETCDF]
use NETCDF
------^
LIS_ESMF_Extensions.F90(2551): error #6404: This name does not have a type, and must have an explicit type. [NF90_NOWRITE]
stat = nf90_open(filename,nf90_NoWrite,ncid)
------------------------------^
LIS_ESMF_Extensions.F90(2551): error #6404: This name does not have a type, and must have an explicit type. [NF90_OPEN]
stat = nf90_open(filename,nf90_NoWrite,ncid)
-----------^
LIS_ESMF_Extensions.F90(2552): error #6404: This name does not have a type, and must have an explicit type. [NF90_NOERR]
if (stat /= nf90_NoErr) then
----------------^
LIS_ESMF_Extensions.F90(2559): error #6404: This name does not have a type, and must have an explicit type. [NF90_INQ_VARID]
stat = nf90_inq_varid(ncid,varname,varid)
-----------^
LIS_ESMF_Extensions.F90(2562): error #6404: This name does not have a type, and must have an explicit type. [NF90_ENOTVAR]
elseif(stat == nf90_eNotVar) then
-------------------^
LIS_ESMF_Extensions.F90(2573): error #6404: This name does not have a type, and must have an explicit type. [NF90_CLOSE]
stat = nf90_close(ncid)
-----------^
LIS_ESMF_Extensions.F90(2736): error #6404: This name does not have a type, and must have an explicit type. [NF90_OPEN]
stat = nf90_open(filename,nf90_NoWrite,ncid)
-----------^
LIS_ESMF_Extensions.F90(2744): error #6404: This name does not have a type, and must have an explicit type. [NF90_INQ_VARID]
stat = nf90_inq_varid(ncid,varname,varid)
-----------^
LIS_ESMF_Extensions.F90(2755): error #6632: Keyword arguments are invalid without an explicit interface. [DIMIDS]
stat = nf90_inquire_variable(ncid, varid, dimids = dimIDs)
----------------------------------------------^
LIS_ESMF_Extensions.F90(2755): error #6404: This name does not have a type, and must have an explicit type. [NF90_INQUIRE_VARIABLE]
stat = nf90_inquire_variable(ncid, varid, dimids = dimIDs)
-----------^
LIS_ESMF_Extensions.F90(2764): error #6632: Keyword arguments are invalid without an explicit interface. [LEN]
stat = nf90_inquire_dimension(ncid, dimIDs(1), len = dimCnt(1))
---------------------------------------------------^
LIS_ESMF_Extensions.F90(2764): error #6404: This name does not have a type, and must have an explicit type. [NF90_INQUIRE_DIMENSION]
stat = nf90_inquire_dimension(ncid, dimIDs(1), len = dimCnt(1))
-----------^
LIS_ESMF_Extensions.F90(2773): error #6632: Keyword arguments are invalid without an explicit interface. [LEN]
stat = nf90_inquire_dimension(ncid, dimIDs(2), len = dimCnt(2))
---------------------------------------------------^
LIS_ESMF_Extensions.F90(2791): error #6632: Keyword arguments are invalid without an explicit interface. [VALUES]
stat = nf90_get_var(ncid, varid, values=farray, start=(/start(1),start(2)/), &
-------------------------------------^
LIS_ESMF_Extensions.F90(2791): error #6632: Keyword arguments are invalid without an explicit interface. [START]
stat = nf90_get_var(ncid, varid, values=farray, start=(/start(1),start(2)/), &
----------------------------------------------------^
LIS_ESMF_Extensions.F90(2792): error #6632: Keyword arguments are invalid without an explicit interface. [COUNT]
count=(/size(farray,1),size(farray,2)/))
------^
LIS_ESMF_Extensions.F90(2791): error #6404: This name does not have a type, and must have an explicit type. [NF90_GET_VAR]
stat = nf90_get_var(ncid, varid, values=farray, start=(/start(1),start(2)/), &
-----------^
LIS_ESMF_Extensions.F90(2801): error #6404: This name does not have a type, and must have an explicit type. [NF90_CLOSE]
stat = nf90_close(ncid)
-----------^
LIS_ESMF_Extensions.F90(2730): error #7915: A specification expression object must be a dummy argument, a COMMON block object, or an object accessible through host or use association - may be used in multiple contained procedures. [NF90_MAX_VAR_DIMS]
integer, dimension(nf90_max_var_dims) :: dimIDs
-----------------------^
LIS_ESMF_Extensions.F90(2730): error #6404: This name does not have a type, and must have an explicit type. [NF90_MAX_VAR_DIMS]
integer, dimension(nf90_max_var_dims) :: dimIDs
-----------------------^
LIS_ESMF_Extensions.F90(2844): error #6404: This name does not have a type, and must have an explicit type. [NF90_OPEN]
stat = nf90_open(filename,nf90_NoWrite,ncid)
-----------^
LIS_ESMF_Extensions.F90(2852): error #6404: This name does not have a type, and must have an explicit type. [NF90_INQ_VARID]
stat = nf90_inq_varid(ncid,varname,varid)
-----------^
LIS_ESMF_Extensions.F90(2863): error #6632: Keyword arguments are invalid without an explicit interface. [DIMIDS]
stat = nf90_inquire_variable(ncid, varid, dimids = dimIDs)
----------------------------------------------^
LIS_ESMF_Extensions.F90(2863): error #6404: This name does not have a type, and must have an explicit type. [NF90_INQUIRE_VARIABLE]
stat = nf90_inquire_variable(ncid, varid, dimids = dimIDs)
-----------^
LIS_ESMF_Extensions.F90(2872): error #6632: Keyword arguments are invalid without an explicit interface. [LEN]
stat = nf90_inquire_dimension(ncid, dimIDs(1), len = dimCnt(1))
---------------------------------------------------^
LIS_ESMF_Extensions.F90(2872): error #6404: This name does not have a type, and must have an explicit type. [NF90_INQUIRE_DIMENSION]
stat = nf90_inquire_dimension(ncid, dimIDs(1), len = dimCnt(1))
-----------^
LIS_ESMF_Extensions.F90(2881): error #6632: Keyword arguments are invalid without an explicit interface. [LEN]
stat = nf90_inquire_dimension(ncid, dimIDs(2), len = dimCnt(2))
---------------------------------------------------^
LIS_ESMF_Extensions.F90(2899): error #6632: Keyword arguments are invalid without an explicit interface. [VALUES]
stat = nf90_get_var(ncid, varid, values=farray, start=(/start(1),start(2)/), &
-------------------------------------^
/tmp/ifortIx0prK.i90(4558): catastrophic error: Too many errors, exiting
compilation aborted for LIS_ESMF_Extensions.F90 (code 1)
make: *** [Makefile:236: LIS_ESMF_Extensions.o] Error 1

i'm expecting the lis.mk to be generated but the LIS-INSTALL directory is empty. How can i solve this?

  • Compiler: ifort 2021.3.0.3219
  • OS : Ubuntu 20.04 LTS

compile LIS failed

Describe the bug
A clear and concise description of what the bug is.

./core/LIS_timeMgrMod.F90(21): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [ESMF]
use ESMF
------^
../core/LIS_timeMgrMod.F90(78): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time), save :: LIS_twStartTime
-------^
../core/LIS_timeMgrMod.F90(79): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time), save :: LIS_twStopTime
-------^
../core/LIS_timeMgrMod.F90(80): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time), save :: LIS_twMidTime
-------^
../core/LIS_timeMgrMod.F90(113): error #6457: This derived type name has not been declared. [ESMF_CLOCK]
type(ESMF_Clock), save :: LIS_clock
-------^
../core/LIS_timeMgrMod.F90(114): error #6457: This derived type name has not been declared. [ESMF_CALENDAR]
type(ESMF_Calendar), save :: LIS_calendar
-------^
../core/LIS_timeMgrMod.F90(166): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time) :: startTime, stopTime
---------^
../core/LIS_timeMgrMod.F90(167): error #6457: This derived type name has not been declared. [ESMF_TIMEINTERVAL]
type(ESMF_TimeInterval) :: timeStep, tw
---------^
../core/LIS_timeMgrMod.F90(295): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time) :: tTime,stopTime
---------^
../core/LIS_timeMgrMod.F90(296): error #6457: This derived type name has not been declared. [ESMF_TIMEINTERVAL]
type(ESMF_TimeInterval) :: tw
---------^
../core/LIS_timeMgrMod.F90(485): error #6457: This derived type name has not been declared. [ESMF_TIMEINTERVAL]
type(ESMF_TimeInterval) :: timeStep
---------^
../core/LIS_timeMgrMod.F90(486): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time) :: startTime, stopTime
---------^
../core/LIS_timeMgrMod.F90(610): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time) :: currTime
---------^
../core/LIS_timeMgrMod.F90(717): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time) :: currTime
---------^
../core/LIS_timeMgrMod.F90(836): error #6457: This derived type name has not been declared. [ESMF_TIMEINTERVAL]
type(ESMF_TimeInterval) :: timestep
---------^
../core/LIS_timeMgrMod.F90(1526): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time) :: refTime
--------^
../core/LIS_timeMgrMod.F90(1528): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time) :: start_dekad1, end_dekad1, &
--------^
../core/LIS_timeMgrMod.F90(1532): error #6457: This derived type name has not been declared. [ESMF_TIMEINTERVAL]
type(ESMF_TimeInterval) :: offset_interval, &
--------^
../core/LIS_timeMgrMod.F90(1701): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time) :: startTime, endTime
--------^
../core/LIS_timeMgrMod.F90(1702): error #6457: This derived type name has not been declared. [ESMF_TIMEINTERVAL]
type(ESMF_TimeInterval) :: seconds
--------^
../core/LIS_timeMgrMod.F90(1915): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time) :: currTime
---------^
../core/LIS_timeMgrMod.F90(2639): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time) :: time1
---------^
../core/LIS_timeMgrMod.F90(2640): error #6457: This derived type name has not been declared. [ESMF_TIMEINTERVAL]
type(ESMF_TimeInterval) :: timeStep
---------^
../core/LIS_timeMgrMod.F90(3088): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time) :: currTime
-------^
../core/LIS_timeMgrMod.F90(3089): error #6457: This derived type name has not been declared. [ESMF_TIMEINTERVAL]
type(ESMF_TimeInterval) :: deltaT
-------^
../core/LIS_timeMgrMod.F90(3215): error #6457: This derived type name has not been declared. [ESMF_TIME]
type(ESMF_Time) :: currTime
--------^
../core/LIS_timeMgrMod.F90(3216): error #6457: This derived type name has not been declared. [ESMF_TIMEINTERVAL]
type(ESMF_TimeInterval) :: ts
--------^
../core/LIS_timeMgrMod.F90(69): error #6404: This name does not have a type, and must have an explicit type. [LIS_TWSTARTTIME]
PUBLIC :: LIS_twStartTime
------------^
../core/LIS_timeMgrMod.F90(70): error #6404: This name does not have a type, and must have an explicit type. [LIS_TWSTOPTIME]
PUBLIC :: LIS_twStopTime
------------^
../core/LIS_timeMgrMod.F90(71): error #6404: This name does not have a type, and must have an explicit type. [LIS_TWMIDTIME]
PUBLIC :: LIS_twMidTime
------------^
/tmp/ifort2kSJF5.i90(3535): catastrophic error: Too many errors, exiting
compilation aborted for ../core/LIS_timeMgrMod.F90 (code 1)
make[1]: *** [Makefile:140: LIS_timeMgrMod.o] Error 1

Compilation of lishydro

Dear Dan,

I am compiling lishydro with intel fortran compiler oneAPI 2021.
I compiled successfully LIS and WRF-Hydro but I failed on the compilation of the driver (mediator.F90) with the following error:
mediator.F90(2706): error #6285: There is no matching specific subroutine for this generic subroutine call. [NUOPC_UPDATETIMESTAMP]
call NUOPC_UpdateTimestamp(is%wrap%LND(i)%extToState, mediatorClock, rc=rc)
-----------^
mediator.F90(2949): error #6285: There is no matching specific subroutine for this generic subroutine call. [NUOPC_UPDATETIMESTAMP]
call NUOPC_UpdateTimestamp(is%wrap%HYD(i)%extToState, mediatorClock, rc=rc)

I've attached the outputs of the compilation of LIS, WRF-Hydro and the driver.
The missing routine in this error is compiled successfully in the library esmf and I include all the esmf modules mod in my compilation but still the compilation failed with no matching specific subroutine ...

After compilation of LIS and WRF-Hydro the produced files are the following:
LIS-INSTALL
liblis_nuopc.a lis_esmf_extensions.mod lis.mk lis_nuopc_datacopy.mod lis_nuopc_gluecode.mod lis_nuopc.mod VERSION
WRFHydro-INSTALL
libwrfhydro_nuopc.a VERSION wrfhydro_esmf_extensions.mod wrfhydro.mk wrfhydro_nuopc_gluecode.mod wrfhydro_nuopc.mod

Any insight is really welcome!
Best regards
compile_driver.txt
compile_lis.txt
compile_wrfhydro.txt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.