From 2576f46fdd66c493ffe9ac12726a9dbfa4c9b49b Mon Sep 17 00:00:00 2001 From: Anton Darmenov Date: Tue, 28 May 2024 11:04:57 -0400 Subject: [PATCH 1/3] WIP: Update Wavewatch to NOAA's develop --- .../ww3_multi_esmf/CMakeLists.txt | 186 ++++++++++-------- 1 file changed, 109 insertions(+), 77 deletions(-) diff --git a/GEOSwgcm_GridComp/GEOSwavewatch_GridComp/ww3_multi_esmf/CMakeLists.txt b/GEOSwgcm_GridComp/GEOSwavewatch_GridComp/ww3_multi_esmf/CMakeLists.txt index def626e20..da6454f9f 100644 --- a/GEOSwgcm_GridComp/GEOSwavewatch_GridComp/ww3_multi_esmf/CMakeLists.txt +++ b/GEOSwgcm_GridComp/GEOSwavewatch_GridComp/ww3_multi_esmf/CMakeLists.txt @@ -1,62 +1,61 @@ esma_set_this () - -list( APPEND WW3ESMF_FTN - constants.ftn - w3adatmd.ftn - w3arrymd.ftn - w3cspcmd.ftn - w3dispmd.ftn - w3fldsmd.ftn - w3flx1md.ftn - w3gdatmd.ftn - w3gsrumd.ftn - w3idatmd.ftn - w3initmd.ftn - w3iobcmd.ftn - w3iogomd.ftn - w3iogrmd.ftn - w3iopomd.ftn - w3iorsmd.ftn - w3iosfmd.ftn - w3iotrmd.ftn - w3nmlmultimd.ftn - w3odatmd.ftn - w3parall.ftn - w3partmd.ftn - w3pro3md.ftn - w3profsmd.ftn - w3sbt1md.ftn - w3sdb1md.ftn - w3servmd.ftn - w3snl1md.ftn - w3sln1md.ftn - w3fld1md.ftn - w3fld2md.ftn - w3src4md.ftn - w3srcemd.ftn - w3timemd.ftn - w3triamd.ftn - w3updtmd.ftn - w3uqckmd.ftn - w3wavemd.ftn - w3wdasmd.ftn - w3wdatmd.ftn - wmmaplmd.ftn - wmfinlmd.ftn - wmgridmd.ftn - wminiomd.ftn - wminitmd.ftn - wmiopomd.ftn - wmmdatmd.ftn - wmscrpmd.ftn - wmunitmd.ftn - wmupdtmd.ftn - wmwavemd.ftn +list( APPEND WW3ESMF_SRCS + constants.F90 + w3adatmd.F90 + w3arrymd.F90 + w3cspcmd.F90 + w3dispmd.F90 + w3fldsmd.F90 + w3gdatmd.F90 + w3flx1md.F90 + w3gsrumd.F90 + w3idatmd.F90 + w3initmd.F90 + w3iobcmd.F90 + w3iogomd.F90 + w3iogrmd.F90 + w3iopomd.F90 + w3iorsmd.F90 + w3iosfmd.F90 + w3iotrmd.F90 + w3nmlmultimd.F90 + w3odatmd.F90 + w3parall.F90 + w3partmd.F90 + w3pro3md.F90 + w3profsmd.F90 + w3sbt1md.F90 + w3sdb1md.F90 + w3servmd.F90 + w3snl1md.F90 + w3sln1md.F90 + w3fld1md.F90 + w3fld2md.F90 + w3src4md.F90 + w3srcemd.F90 + w3timemd.F90 + w3triamd.F90 + w3updtmd.F90 + w3uqckmd.F90 + w3wavemd.F90 + w3wdasmd.F90 + w3wdatmd.F90 + wmmaplmd.F90 + wmfinlmd.F90 + wmgridmd.F90 + wminiomd.F90 + wminitmd.F90 + wmiopomd.F90 + wmmdatmd.F90 + wmscrpmd.F90 + wmunitmd.F90 + wmupdtmd.F90 + wmwavemd.F90 SCRIP/scrip_constants.f SCRIP/scrip_errormod.f90 SCRIP/scrip_grids.f - SCRIP/scrip_interface.ftn + SCRIP/scrip_interface.F90 SCRIP/scrip_iounitsmod.f90 SCRIP/scrip_kindsmod.f90 SCRIP/scrip_netcdfmod.f90 @@ -70,33 +69,66 @@ list( APPEND WW3ESMF_FTN esma_mepo_style(ww3 WW3_rel_path REL_PATH ..) set (WW3_path ${CMAKE_CURRENT_SOURCE_DIR}/${WW3_rel_path}) -get_filename_component(aux_dir ${WW3_path}/model/aux ABSOLUTE) -get_filename_component(ftn_dir ${WW3_path}/model/ftn ABSOLUTE) - -message(STATUS "WW3 aux_dir ${aux_dir}") -message(STATUS "WW3 ftn_dir ${ftn_dir}") - -add_executable(w3adc "${aux_dir}/w3adc.f") - -set (WW3ESMF_F90) -foreach(src_file ${WW3ESMF_FTN}) - STRING(REGEX REPLACE ".ftn" ".F90" gen_src_file ${src_file}) - STRING(REGEX REPLACE "/" "_" gen_log_file ${gen_src_file}) - add_custom_command( - OUTPUT ${gen_src_file} - BYPRODUCTS ${gen_src_file} - DEPENDS w3adc ${ftn_dir}/${src_file} - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/run_w3adc.sh ${ftn_dir} ${src_file} > ${gen_log_file}.w3adc.log 2>&1 - COMMENT "Running w3adc ${src_file}") - list(APPEND WW3ESMF_F90 ${gen_src_file}) +set (SRCS) +foreach(src_file ${WW3ESMF_SRCS}) + list(APPEND SRCS ${WW3_path}/model/src/${src_file}) +# message(STATUS "WW3::file ${src_file}") +# message(STATUS "WW3::file ${WW3_path}/model/src/${src_file}") +# message(STATUS "") endforeach() - esma_add_library (${this} - SRCS ${WW3ESMF_F90} + SRCS ${SRCS} DEPENDENCIES MAPL esmf NetCDF::NetCDF_Fortran ) -target_include_directories (${this} PRIVATE - $ + +set (switch_strings "NOGRB DIST MPI SCRIP PR3 UQ FLX0 LN1 FLD2 ST4 STAB0 NL1 BT1 DB1 MLIM TR0 BS0 XX0 WNX0 WNT0 CRX0 CRT0 O0 O1 O2 O3 O4 O5 O6 O7 IC0 IS0 REF0" ) + +set_property (SOURCE ${WW3_path}/model/src/w3initmd.F90 + APPEND + PROPERTY COMPILE_DEFINITIONS + "__WW3_SWITCHES__=\'${switch_strings}\'" ) + + + +list (APPEND defs + W3_NOGRB + W3_DIST + W3_MPI + W3_SCRIP + W3_PR3 + W3_UQ + W3_FLX0 + W3_LN1 + W3_FLD2 + W3_ST4 + W3_STAB0 + W3_NL1 + W3_BT1 + W3_DB1 + W3_MLIM + W3_TR0 + W3_BS0 + W3_XX0 + W3_WNX0 + W3_WNT0 + W3_CRX0 + W3_CRT0 + W3_O0 + W3_O1 + W3_O2 + W3_O3 + W3_O4 + W3_O5 + W3_O6 + W3_O7 + W3_IC0 + W3_IS0 + W3_REF0 +) + +target_compile_definitions(${this} PRIVATE ${defs}) + + From ec1aa0471bcebb77f4789925ea56a9846303a6e6 Mon Sep 17 00:00:00 2001 From: Anton Darmenov Date: Mon, 10 Feb 2025 09:06:11 -0500 Subject: [PATCH 2/3] Remove run_w3adc.sh --- .../ww3_multi_esmf/run_w3adc.sh | 29 ------------------- 1 file changed, 29 deletions(-) delete mode 100755 GEOSwgcm_GridComp/GEOSwavewatch_GridComp/ww3_multi_esmf/run_w3adc.sh diff --git a/GEOSwgcm_GridComp/GEOSwavewatch_GridComp/ww3_multi_esmf/run_w3adc.sh b/GEOSwgcm_GridComp/GEOSwavewatch_GridComp/ww3_multi_esmf/run_w3adc.sh deleted file mode 100755 index bef344bf4..000000000 --- a/GEOSwgcm_GridComp/GEOSwavewatch_GridComp/ww3_multi_esmf/run_w3adc.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -set -eux - -if [ $# -ne 2 ]; then - echo "Error in run_w3adc.sh" - exit 1 -fi - -ftn_dir=$1 -filename=$2 - -switches=$(cat ${ftn_dir}/../esmf/switch | tr '\n' ' ') - -extension="${filename##*.}" -basename="${filename%.*}" -inputname="${filename//\//_}.input" - -mkdir -p $( dirname ${filename} ) - -if [[ $extension == "ftn" ]]; then - echo "0 0" > ${inputname} - echo "'${ftn_dir}/${filename}' '${basename}.F90'" >> ${inputname} - echo "'${switches}'" >> ${inputname} - ./w3adc < ${inputname} -else - cp ${ftn_dir}/${filename} ${filename} -fi - -echo "Done running w3adc for ${filename}" From 7ca9c34f2298ed9d36ab981b216dc0a88f311311 Mon Sep 17 00:00:00 2001 From: Anton Darmenov Date: Tue, 18 Feb 2025 13:48:48 -0500 Subject: [PATCH 3/3] Export whitecap moment (WCM) --- GEOSwgcm_GridComp/GEOS_WgcmGridComp.F90 | 4 ++++ .../GEOS_WaveWatchGridComp.F90 | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/GEOSwgcm_GridComp/GEOS_WgcmGridComp.F90 b/GEOSwgcm_GridComp/GEOS_WgcmGridComp.F90 index 69316e660..c8adea992 100644 --- a/GEOSwgcm_GridComp/GEOS_WgcmGridComp.F90 +++ b/GEOSwgcm_GridComp/GEOS_WgcmGridComp.F90 @@ -370,6 +370,10 @@ subroutine SetServices(GC, RC) SHORT_NAME = 'SWH', & CHILD_ID = WM, __RC__) + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'WCM', & + CHILD_ID = WM, __RC__) + call MAPL_AddExportSpec(GC, & SHORT_NAME = 'DCP', & CHILD_ID = WM, __RC__) diff --git a/GEOSwgcm_GridComp/GEOSwavewatch_GridComp/GEOS_WaveWatchGridComp.F90 b/GEOSwgcm_GridComp/GEOSwavewatch_GridComp/GEOS_WaveWatchGridComp.F90 index c7fc934f9..e6e569f58 100644 --- a/GEOSwgcm_GridComp/GEOSwavewatch_GridComp/GEOS_WaveWatchGridComp.F90 +++ b/GEOSwgcm_GridComp/GEOSwavewatch_GridComp/GEOS_WaveWatchGridComp.F90 @@ -239,7 +239,21 @@ subroutine SetServices(GC, RC) SHORT_NAME = 'EDF', & CHILD_ID = WW3GC, __RC__) - + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'WCC', & + CHILD_ID = WW3GC, __RC__) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'WCF', & + CHILD_ID = WW3GC, __RC__) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'WCH', & + CHILD_ID = WW3GC, __RC__) + + call MAPL_AddExportSpec(GC, & + SHORT_NAME = 'WCM', & + CHILD_ID = WW3GC, __RC__) ! Set the Profiling timers