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

Stand-alone WW3 compiling issues #15

Open
yunfangsun opened this issue Feb 6, 2025 · 10 comments
Open

Stand-alone WW3 compiling issues #15

yunfangsun opened this issue Feb 6, 2025 · 10 comments
Labels
bug Something isn't working

Comments

@yunfangsun
Copy link

Hi @uturuncoglu

For the https://github.com/oceanmodeling/WW3/tree/0a34d192fa871e5aad82ab02390d75e7f08288f0

When I am using the following switch:

NCO PDLIB SCOTCH SCRIP SCRIPNC NOGRB DIST MPI PIO PR3 UQ FLX0 SEED ST4 STAB0 NL1 BT1 DB1 MLIM FLD2 TR0 BS0 RWND WNX1 WNT1 CRX1 CRT1 O0 O1 O2 O3 O4 O5 O6 O7 O14 O15 IC0 IS0 REF0

It gives me the following error:

CMake Error at model/src/CMakeLists.txt:18 (add_library):
Cannot find source file:

/work2/noaa/nos-surge/yunfangs/duck/CDEPS-interface/ufs/cdeps_share/shr_is_restart_fh_mod.F90

Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm .h
.hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .hip .ispc

And when I try to avoid PIO, and used the following switch, it gives me the following error during compiling.
NCO PDLIB SCOTCH SCRIP SCRIPNC NOGRB DIST MPI PR3 UQ FLX0 SEED ST4 STAB0 NL1 BT1 DB1 MLIM FLD2 TR0 BS0 RWND WNX1 WNT1 CRX1 CRT1 O0 O1 O2 O3 O4 O5 O6 O7 O14 O15 IC0 IS0 REF0

ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1988: undefined reference to `esmf_clockmod_mp_esmf_clockgetnexttime_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1990: undefined reference to `esmf_timemod_mp_esmf_timeget_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1994: undefined reference to `esmf_stateapimod_mp_esmf_stategetinfo_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1997: undefined reference to `esmf_stateapimod_mp_esmf_stategetinfo_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2001: undefined reference to `esmf_stateapimod_mp_esmf_stategetfield_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2005: undefined reference to `esmf_fieldgetmod_mp_esmf_fieldgetdefault_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2007: undefined reference to `esmf_utiltypesmod_mp_esmf_typekind_r8_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2007: undefined reference to `esmf_fieldcreatemod_mp_esmf_fieldcreatemeshtkr_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2009: undefined reference to `esmf_fieldgetmod_mp_esmf_fieldgetdataptr1dr8_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2028: undefined reference to `esmf_fieldwrmod_mp_esmf_fieldwrite_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2031: undefined reference to `esmf_fieldcreatemod_mp_esmf_fielddestroy_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2033: undefined reference to `esmf_logerrmod_mp_esmf_logmsg_info_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2033: undefined reference to `esmf_logerrmod_mp_esmf_logwrite_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1983: undefined reference to `esmf_logerrmod_mp_esmf_logmsg_info_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1983: undefined reference to `esmf_logerrmod_mp_esmf_logwrite_'
ld: ../../lib/libww3.a(wav_import_export.F90.o): in function `wav_import_export_mp_set_importmask_':
/work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1883: undefined reference to `esmf_clockmod_mp_esmf_clockget_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1887: undefined reference to `esmf_timemod_mp_esmf_timeeq_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1890: undefined reference to `esmf_timemod_mp_esmf_timeinc_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1890: undefined reference to `esmf_timemod_mp_esmf_timeeq_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1915: undefined reference to `esmf_clockmod_mp_esmf_clockprint_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1928: undefined reference to `esmf_utiltypesmod_mp_esmf_reduce_min_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1928: undefined reference to `esmf_vmmod_mp_esmf_vmallreducer4_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1932: undefined reference to `esmf_logerrmod_mp_esmf_logmsg_info_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1932: undefined reference to `esmf_logerrmod_mp_esmf_logwrite_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1907: undefined reference to `esmf_clockmod_mp_esmf_clockprint_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1909: undefined reference to `esmf_logerrmod_mp_esmf_logmsg_info_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1909: undefined reference to `esmf_logerrmod_mp_esmf_logwrite_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1881: undefined reference to `esmf_logerrmod_mp_esmf_logmsg_info_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:1881: undefined reference to `esmf_logerrmod_mp_esmf_logwrite_'
ld: ../../lib/libww3.a(wav_import_export.F90.o): in function `wav_import_export_mp_readfromfile_':
/work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2131: undefined reference to `esmf_logerrmod_mp_esmf_logmsg_info_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2131: undefined reference to `esmf_logerrmod_mp_esmf_logwrite_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2091: undefined reference to `esmf_logerrmod_mp_esmf_logmsg_info_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2091: undefined reference to `esmf_logerrmod_mp_esmf_logwrite_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2094: undefined reference to `esmf_logerrmod_mp_esmf_logmsg_error_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2094: undefined reference to `esmf_logerrmod_mp_esmf_logwrite_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2084: undefined reference to `esmf_logerrmod_mp_esmf_logmsg_info_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:2084: undefined reference to `esmf_logerrmod_mp_esmf_logwrite_'
ld: ../../lib/libww3.a(wav_import_export.F90.o): in function `wav_import_export_mp_export_fields_':
/work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:678: undefined reference to `nuopc_model_mp_nuopc_modelget_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:675: undefined reference to `esmf_logerrmod_mp_esmf_logmsg_info_'
ld: /work2/noaa/nos-surge/yunfangs/duck/WW3/model/src/wav_import_export.F90:675: undefined reference to `esmf_logerrmod_mp_esmf_logwrite_'
make[2]: *** [model/src/CMakeFiles/ww3_shel.dir/build.make:103: bin/ww3_shel] Error 1
make[1]: *** [CMakeFiles/Makefile2:1241: model/src/CMakeFiles/ww3_shel.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

Do you have any suggestions to avoid the error? the second switch works for the previous versions of WWIII

@yunfangsun yunfangsun added the bug Something isn't working label Feb 6, 2025
@yunfangsun
Copy link
Author

Hi @uturuncoglu ,

Since I would like to generate the execs from WWiii, and from usf-coastal, by using ./compile.sh "hercules" "-DAPP=CSTLW -DPDLIB=ON" coastal_ww intel 0 0, no bin folder is generated for WWiii, is any extra options needed for the command?

Thank you!

@uturuncoglu
Copy link
Collaborator

@yunfangsun which version of UFS Coastal are you using. You might need yo update CDEPS and needs to be consistent with the UFS Coastal version. You could not skip PIO in the newer version of WW3 if you want to go with netcdf.

@uturuncoglu
Copy link
Collaborator

@yunfangsun you need to add -DBUILD_TOOLS=ON to your compile command if you want to get WW3 tools.

@yunfangsun
Copy link
Author

Hi @uturuncoglu ,

This is the stand-alone WW3 outside of UFS-coastal, therefore, this issue is in the WW3 repo.

I have tested the previous versions of WW3 from the https://github.com/oceanmodeling/WW3 outside the ufs-coastal by using the switch of NCO PDLIB SCOTCH SCRIP SCRIPNC NOGRB DIST MPI PR3 UQ FLX0 SEED ST4 STAB0 NL1 BT1 DB1 MLIM FLD2 TR0 BS0 RWND WNX1 WNT1 CRX1 CRT1 O0 O1 O2 O3 O4 O5 O6 O7 O14 O15 IC0 IS0 REF0.

It seems that the current version https://github.com/oceanmodeling/WW3/tree/0a34d192fa871e5aad82ab02390d75e7f08288f0 can't be compiled outside the ufs-coastal anymore.

@uturuncoglu
Copy link
Collaborator

@yunfangsun I have no idea about it. You might want to ask to WW3 developers. Maybe you could open a ticket in NOAA-EMC/WW3.

@uturuncoglu
Copy link
Collaborator

uturuncoglu commented Feb 6, 2025

@yunfangsun You could also try to use WW3 from official repository to see any change.

@yunfangsun
Copy link
Author

Hi @uturuncoglu,

I have tried to compile WWiii inside ufs-coastal as you suggested by using ./compile.sh "hercules" "-DAPP=CSTLW -DPDLIB=ON -DBUILD_TOOLS=ON" ww3 intel 0 0

It gave the following error

cd /work2/noaa/nos-surge/yunfangs/ufs-weather-model_02052025/tests/build_fv3_ww3/WW3/model/src && /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/cmake-3.23.1-uqaeynr/bin/cmake -E cmake_link_script CMakeFiles/ww3_outf.dir/link.txt --verbose=1
/apps/spack-managed/oneapi-2023.1.0/intel-oneapi-mpi-2021.9.0-a66eaipzsnyrdgaqzxmqmqz64qzvhkse/mpi/2021.9.0/bin/mpiifort -O2 -debug minimal -qoverride-limits -fp-model consistent -march=core-avx2 CMakeFiles/ww3_outf.dir/ww3_outf.F90.o -o ../../../bin/ww3_outf  -Wl,-rpath,/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/netcdf-fortran-4.6.1-ndsugbe/lib:/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/netcdf-c-4.9.2-tslbcfy/lib: ../../../lib/libww3.a /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/netcdf-fortran-4.6.1-ndsugbe/lib/libnetcdff.so -L/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/netcdf-fortran-4.6.1-ndsugbe/lib -lnetcdff -lnetcdf -lnetcdf -lm /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/netcdf-c-4.9.2-tslbcfy/lib/libnetcdf.so -L/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/netcdf-c-4.9.2-tslbcfy/lib -lnetcdf /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/esmf-8.6.0-rqrapep/lib/libesmf.a -Wl,-rpath,/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/esmf-8.6.0-rqrapep/lib -L/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/esmf-8.6.0-rqrapep/lib -L/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/esmf-8.6.0-rqrapep/lib -L/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/netcdf-c-4.9.2-tslbcfy/lib -L/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/netcdf-fortran-4.6.1-ndsugbe/lib -L/work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/parallelio-2.5.10-rdwrsed/lib -lrt -ldl -lnetcdf -lnetcdff -lnetcdf -lnetcdf -lm -lpioc -m64 -mcmodel=small -pthread -threads -cxxlib -Wl,--no-as-needed  -qopenmp /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/scotch-7.0.4-zcubcke/lib/libptscotchparmetisv3.a /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/scotch-7.0.4-zcubcke/lib/libptscotch.a /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/scotch-7.0.4-zcubcke/lib/libptscotcherr.a /work/noaa/epic/role-epic/spack-stack/hercules/spack-stack-1.6.0/envs/unified-env/install/intel/2021.9.0/scotch-7.0.4-zcubcke/lib/libscotch.a
make[2]: Leaving directory '/work2/noaa/nos-surge/yunfangs/ufs-weather-model_02052025/tests/build_fv3_ww3'
[ 95%] Built target ww3_outf
make[1]: Leaving directory '/work2/noaa/nos-surge/yunfangs/ufs-weather-model_02052025/tests/build_fv3_ww3'
make: *** [Makefile:136: all] Error 2

The compiled files are located at /work2/noaa/nos-surge/yunfangs/ufs-weather-model_02052025/tests/build_fv3_ww3.

Do you have any suggestion to fix the ufs-coastal compilation problem?

Thank you!

@uturuncoglu
Copy link
Collaborator

@yunfangsun I fix the WW3 build (e49cee9). Try to update your model and try again. I could able to compile with this change. If you are trying to compile WW3 outside of the UFS Coastal. I think you have two option; (1) remove PIO switch or (2) Point PIO installation to WW3.

@uturuncoglu
Copy link
Collaborator

@yunfangsun JFYI, I also opened an issue in NOAA-EMC side. NOAA-EMC#1362

@yunfangsun
Copy link
Author

Hi @uturuncoglu ,

Thank you for updating the code, now I can compile WW3 inside UFS-Coastal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants