NASA-LIS / NASA-Land-Coupler

NASA Land Coupler
Apache License 2.0
6 stars 11 forks source link

Compilation of lishydro #4

Closed kbergaoui closed 2 years ago

kbergaoui commented 3 years ago

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

danrosen25 commented 3 years ago

NUOPC_UpdateTimestamp was replaced with NUOPC_SetTimestamp in newer revisions of ESMF. I put a placeholder in the code to prepare for this but I haven't gotten around to making a permanent fix to the code. You'll have to manually comment out NUOPC_UpdateTimestamp and uncomment NUOPC_SetTimestamp everywhere in the code. https://github.com/NESII/lishydro/blob/develop/src/driver/mediator.F90#L2706

kbergaoui commented 3 years ago

Thank you for your reply. I've commented the 3 lines related to NUOPC_UpdateTimestamp and uncommented NUOPC_SetTimestamp but I got the same error message:

mediator.F90(2709): error #6285: There is no matching specific subroutine for this generic subroutine call. [NUOPC_SETTIMESTAMP] call NUOPC_SetTimestamp(is%wrap%LND%extToState, mediatorClock, rc=rc) -----------^ mediator.F90(2952): error #6285: There is no matching specific subroutine for this generic subroutine call. [NUOPC_SETTIMESTAMP] call NUOPC_SetTimestamp(is%wrap%HYD%extToState, mediatorClock, rc=rc) -----------^ compilation aborted for mediator.F90 (code 1)

I am using esmf.8.1.1 which esmf library do you recommend to get around this issue (In case I can't solve the issue through the mediator.F90 program) ? Best

kbergaoui commented 3 years ago

Dear Dan,

Thank you so much for your valuable support. In fact I solved the issue by installing ESMF_7_1_0. I think that the package is not yet ready for a newer version of ESMF. All the Best,

danrosen25 commented 2 years ago

@kbergaoui FYI - The code was updated to use CMake to link all components and build the mediator/driver. During the updates the mediator was updated to support later versions of ESMF. https://github.com/NESII/lishydro/commit/d16bcd330285fa73341f05947bf596e38c72208c

FYI - The latest version of the WRF-Hydro coupling layer "Cap" only supports ESMF v 8.0.1 and later.