diff --git a/.gitignore b/.gitignore index e627e4845..aa41f14b2 100644 --- a/.gitignore +++ b/.gitignore @@ -61,6 +61,38 @@ regtests/ww3_tp2.14/input*/*.nc.OAS*CM* regtests/ww3_tp2.14/input*/*/*.nc.OAS*CM* regtests/ww3_tp2.14/input/toy/*.o regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/cmplr +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/*.mod +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/*_scratch.f +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/Makefile.conf +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/*.lst +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/*.mod +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/mpeu +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/Makefile.conf +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/*.lst +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/texsrc/*.F90 +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/texsrc/*.tex +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/*.toc +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/*.log +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/*.dvi +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/*.aux +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/*.blg +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/*.bbl +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/*.pdf +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/climate +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/*.mod +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/poe.* +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/twocon +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/twoseq +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/twosequn +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/twoseqNB +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/MCT.* +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/*.mod +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/climate +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/Makefile.conf +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/config.log +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/config.status +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/config.h +regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/autom4te.cache regtests/ww3_tp2.14/input/toy/toy_model regtests/ww3_tp2.14/input/ww3_shel.inp regtests/ww3_tp2.14/input/ww3_shel.nml diff --git a/model/bin/ww3_from_ftp.sh b/model/bin/ww3_from_ftp.sh index e1e9f7842..23a9c158d 100755 --- a/model/bin/ww3_from_ftp.sh +++ b/model/bin/ww3_from_ftp.sh @@ -77,9 +77,17 @@ cp -r data_regtests/ww3_tp2.8/input/*.nc regtests/ww3_tp2.8/input/ cp -r data_regtests/ww3_tp2.12/input/* regtests/ww3_tp2.12/input/ cp -r data_regtests/ww3_tp2.12/input_be/* regtests/ww3_tp2.12/input_be/ cp -r data_regtests/ww3_tp2.12/input_le/* regtests/ww3_tp2.12/input_le/ -cp -r data_regtests/ww3_tp2.14/input/r-ww3.nc.OAS*CM regtests/ww3_tp2.14/input/ -cp -r data_regtests/ww3_tp2.14/input/r-ww3.nc.OASACM regtests/ww3_tp2.14/input/r-ww3.nc.OASACM2 -cp -r data_regtests/ww3_tp2.14/input/rmp_* regtests/ww3_tp2.14/input/ +cp -r data_regtests/ww3_tp2.14/input/r-ww3.nc.OASOCM regtests/ww3_tp2.14/input_oasocm/r-ww3.nc +cp -r data_regtests/ww3_tp2.14/input/r-ww3.nc.OASICM regtests/ww3_tp2.14/input_oasicm/r-ww3.nc +cp -r data_regtests/ww3_tp2.14/input/r-ww3.nc.OASACM regtests/ww3_tp2.14/input_oasacm/r-ww3.nc +cp -r data_regtests/ww3_tp2.14/input/r-ww3.nc.OASACM regtests/ww3_tp2.14/input_oasacm2/r-ww3.nc +cp -r data_regtests/ww3_tp2.14/input/rmp_* regtests/ww3_tp2.14/input_oasocm/ +cp -r data_regtests/ww3_tp2.14/input/rmp_* regtests/ww3_tp2.14/input_oasicm/ +cp -r data_regtests/ww3_tp2.14/input/rmp_* regtests/ww3_tp2.14/input_oasacm/ +cp -r data_regtests/ww3_tp2.14/input/rmp_* regtests/ww3_tp2.14/input_oasacm2/ +cp -r data_regtests/ww3_tp2.14/input/rmp_* regtests/ww3_tp2.14/input_oasacm4/ +cp -r data_regtests/ww3_tp2.14/input/rmp_* regtests/ww3_tp2.14/input_oasacm5/ +cp -r data_regtests/ww3_tp2.14/input/rmp_* regtests/ww3_tp2.14/input_oasacm6/ if [ ! -d regtests/ww3_tp2.14/input/oasis3-mct/doc ] then mkdir regtests/ww3_tp2.14/input/oasis3-mct/doc diff --git a/model/src/w3ogcmmd.F90 b/model/src/w3ogcmmd.F90 index da408e5ba..cfe365c43 100644 --- a/model/src/w3ogcmmd.F90 +++ b/model/src/w3ogcmmd.F90 @@ -147,7 +147,9 @@ SUBROUTINE SND_FIELDS_TO_OCEAN() ! Mask - wet-drying ! --------------------------------------------------------------------- IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3_ODRY') THEN - RLA_OASIS_SND(:,1) = DBLE(MASK(1:NSEAL)) + TMP(1:NSEAL) = 0.0 + WHERE(MASK(1:NSEAL) /= UNDEF) TMP(1:NSEAL)=MASK(1:NSEAL) + RLA_OASIS_SND(:,1) = DBLE(TMP(1:NSEAL)) CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) ENDIF ! @@ -181,14 +183,18 @@ SUBROUTINE SND_FIELDS_TO_OCEAN() ! Charnock coefficient (-) ! --------------------------------------------------------------------- IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3_OCHA') THEN - RLA_OASIS_SND(:,1) = DBLE(CHARN(1:NSEAL)) + TMP(1:NSEAL) = 0.0 + WHERE(CHARN(1:NSEAL) /= UNDEF) TMP(1:NSEAL)=CHARN(1:NSEAL) + RLA_OASIS_SND(:,1) = DBLE(TMP(1:NSEAL)) CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) ENDIF ! ! Wave height (hs in m) ! --------------------------------------------------------------------- IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3__OHS') THEN - RLA_OASIS_SND(:,1) = DBLE(HS(1:NSEAL)) + TMP(1:NSEAL) = 0.0 + WHERE(HS(1:NSEAL) /= UNDEF) TMP(1:NSEAL)=HS(1:NSEAL) + RLA_OASIS_SND(:,1) = DBLE(TMP(1:NSEAL)) CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) ENDIF ! @@ -198,7 +204,7 @@ SUBROUTINE SND_FIELDS_TO_OCEAN() IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3_CDIR') THEN TMP(1:NSEAL) = 0.0 WHERE(THM(1:NSEAL) /= UNDEF) TMP(1:NSEAL)=COS(THM(1:NSEAL)) - RLA_OASIS_SND(:,1) = TMP(1:NSEAL) + RLA_OASIS_SND(:,1) = DBLE(TMP(1:NSEAL)) CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) ENDIF ! @@ -208,7 +214,7 @@ SUBROUTINE SND_FIELDS_TO_OCEAN() IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3_SDIR') THEN TMP(1:NSEAL) = 0.0 WHERE(THM(1:NSEAL) /= UNDEF) TMP(1:NSEAL)=SIN(THM(1:NSEAL)) - RLA_OASIS_SND(:,1) = TMP(1:NSEAL) + RLA_OASIS_SND(:,1) = DBLE(TMP(1:NSEAL)) CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) ENDIF ! @@ -217,7 +223,7 @@ SUBROUTINE SND_FIELDS_TO_OCEAN() ! dir : nautical convention (GRIDDED files) - 0 degree from north, 90 from east IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3__DIR') THEN TMP(1:NSEAL) = 0.0 - WHERE(THM /= UNDEF) TMP=THM + WHERE(THM /= UNDEF) TMP(1:NSEAL)=THM(1:NSEAL) RLA_OASIS_SND(:,1) = DBLE(TMP(1:NSEAL)) CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) ENDIF @@ -225,7 +231,9 @@ SUBROUTINE SND_FIELDS_TO_OCEAN() ! Wave-induced Bernoulli head pressure (bhd in N.m-1) (J term, Smith JPO 2006) ! --------------------------------------------------------------------- IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3__BHD') THEN - RLA_OASIS_SND(:,1) = DBLE(BHD(1:NSEAL)) + TMP(1:NSEAL) = 0.0 + WHERE(BHD(1:NSEAL) /= UNDEF) TMP(1:NSEAL)=BHD(1:NSEAL) + RLA_OASIS_SND(:,1) = DBLE(TMP(1:NSEAL)) CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) ENDIF ! @@ -304,7 +312,9 @@ SUBROUTINE SND_FIELDS_TO_OCEAN() ! rms amplitude of orbital velocity of the waves (ubr in m.s-1) ! --------------------------------------------------------------------- IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3__UBR') THEN - RLA_OASIS_SND(:,1) = DBLE(UBA(1:NSEAL)) + TMP(1:NSEAL) = 0.0 + WHERE(UBA(1:NSEAL) /= UNDEF) TMP(1:NSEAL)=UBA(1:NSEAL) + RLA_OASIS_SND(:,1) = DBLE(TMP(1:NSEAL)) CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) ENDIF ! diff --git a/regtests/bin/matrix.base b/regtests/bin/matrix.base index 98566c4ad..798362e81 100755 --- a/regtests/bin/matrix.base +++ b/regtests/bin/matrix.base @@ -2075,28 +2075,19 @@ if [ "$oasis" = 'y' ] && [ "$dist" = 'y' ] then echo ' ' >> matrix.body - echo "$rtst -s OASACM -w work_OASACM -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body - echo "$rtst -s OASACM2 -w work_OASACM2 -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body - echo "mkdir -p ww3_tp2.14/work_OASACM3" >> matrix.body - echo "cp ww3_tp2.14/input/ww3_shel_OASACM3.nml ww3_tp2.14/work_OASACM3/ww3_shel.nml" >> matrix.body + echo "$rtst -s OASACM -i input_oasacm -w work_OASACM -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body + echo "$rtst -s OASACM2 -i input_oasacm2 -w work_OASACM2 -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body halfnp=$(($np / 2)) - echo "$rtst -s OASACM3 -w work_OASACM3 -f -p $mpi -n $halfnp $ww3 ww3_tp2.14" >> matrix.body + echo "$rtst -s OASACM3 -i input_oasacm3 -w work_OASACM3 -f -p $mpi -n $halfnp $ww3 ww3_tp2.14" >> matrix.body echo "mkdir -p ww3_tp2.14/work_OASACM4" >> matrix.body echo "ln -sf ../work_OASACM3/restart001.ww3 ww3_tp2.14/work_OASACM4/restart.ww3" >> matrix.body - echo "$rtst -r ww3_grid -s OASACM4 -w work_OASACM4 -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body - echo "$rtst -r ww3_shel -s OASACM4 -w work_OASACM4 -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body - echo "$rtst -r ww3_ounf -s OASACM4 -w work_OASACM4 -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body + echo "$rtst -s OASACM4 -i input_oasacm4 -w work_OASACM4 -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body echo "mkdir -p ww3_tp2.14/work_OASACM5" >> matrix.body echo "ln -sf ../work_OASACM4/restart001.ww3 ww3_tp2.14/work_OASACM5/restart.ww3" >> matrix.body - echo "$rtst -r ww3_grid -s OASACM5 -w work_OASACM5 -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body - echo "$rtst -r ww3_shel -s OASACM5 -w work_OASACM5 -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body - echo "$rtst -r ww3_ounf -s OASACM5 -w work_OASACM5 -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body - echo "mv ww3_tp2.14/input/ww3_ounf.inp ww3_tp2.14/input/ww3_ounf.inp.bak" >> matrix.body - echo "cp ww3_tp2.14/input/ww3_ounf.inp-OASACM6 ww3_tp2.14/input/ww3_ounf.inp" >> matrix.body - echo "$rtst -g OASACM6 -s OASACM6 -w work_OASACM6 -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body - echo "mv ww3_tp2.14/input/ww3_ounf.inp.bak ww3_tp2.14/input/ww3_ounf.inp" >> matrix.body - echo "$rtst -s OASOCM -w work_OASOCM -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body - echo "$rtst -s OASICM -w work_OASICM -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body + echo "$rtst -s OASACM5 -i input_oasacm5 -w work_OASACM5 -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body + echo "$rtst -s OASACM6 -i input_oasacm6 -w work_OASACM6 -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body + echo "$rtst -s OASOCM -i input_oasocm -w work_OASOCM -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body + echo "$rtst -s OASICM -i input_oasicm -w work_OASICM -C OASIS -f -p $mpi -n $np $ww3 ww3_tp2.14" >> matrix.body fi #Test of UFS applications with ww3_multi and grib2 output diff --git a/regtests/bin/matrix.comp b/regtests/bin/matrix.comp index 054a6691f..6a4acc294 100755 --- a/regtests/bin/matrix.comp +++ b/regtests/bin/matrix.comp @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e # --------------------------------------------------------------------------- # # matrix.comp Compare output of matrix for two model versions. # # # @@ -111,13 +111,7 @@ # 3. Looping over work directories # # --------------------------------------------------------------------------- # - cases=$(find . -maxdepth 1 -type d -name "work*" | grep -v work_oasis) - # skip to next tst if no work directory - echo 'run : ' $cases - if [ -z "$cases" ] ; then - echo "skip" - continue - fi + cases=$(find . -maxdepth 1 -type d -name "work*" ) for run in $cases do @@ -153,20 +147,58 @@ cd $return_base ; cd $run rm -f diff_tempfile - files_1=`find -type f | sed "s#^./##"` - + files_0=`ls` + files_1="" + for file in $files_0 + do + if [[ -d $file ]]; then + if [[ $file == build* ]] || [[ $file == exe* ]] || + [[ $file == *oasis3-mct* ]] || [[ $file == toy* ]]; then + echo "do not compare build or exe directories $file" + else + #add files: + files_dir=`ls $file` + for file1 in $files_dir + do + files_1="$files_1 $file1" + done + fi + else + files_1="$files_1 $file" + fi + done + #Generate list of binary files in the directory binaryfiles=`grep . -r * | grep 'Binary file' | sed -e "s/^Binary file //" -e "s/ matches$//"` #Generate list of files to skip - skipfiles="ww3_shel.out ww3_multi.out prf.*.mww3 finished ww3_systrk.out gmon.out time_count.txt oasis_make.out oasis_clean.out toy_make.out toy_clean.out" + skipfiles="ww3_shel.out ww3_multi.out prf.*.mww3 finished ww3_systrk.out gmon.out time_count.txt oasis_make.out oasis_clean.out toy_model toy_make.out toy_clean.out build.log" nf_1=`echo $files_1 | wc -w | awk '{print $1}'` echo " found $nf_1 files in base directory" >> $home_dir/fulldiff.tmp cd $return_comp ; cd $run rm -f diff_tempfile - files_2=`find -type f | sed "s#^./##"` + files_0=`ls` + files_2="" + for file in $files_0 + do + if [[ -d $file ]]; then + if [[ $file == build* ]] || [[ $file == exe* ]] || + [[ $file == *oasis3-mct* ]] || [[ $file == toy* ]]; then + echo "do not compare build or exe directories $file" + else + #add files: + files_dir=`ls $file` + for file1 in $files_dir + do + files_2="$files_1 $file1" + done + fi + else + files_2="$files_2 $file" + fi + done nf_2=`echo $files_2 | wc -w | awk '{print $1}'` echo " found $nf_2 files in compare directory" >> $home_dir/fulldiff.tmp @@ -402,19 +434,6 @@ rm -f $home_dir/summary.tmp rm -f $home_dir/fulldiff.tmp - -# echo ' ' -# cat $home_dir/fulldiff.tmp -# echo '**********************************************************************' -# -# echo ' ' -# cat $home_dir/isIdenticalList.tmp -# echo '**********************************************************************' -# -# echo ' ' -# cat $home_dir/notIdenticalList.tmp -# echo '**********************************************************************' - echo ' ' echo " Saved summary to $home_dir/matrixCompSummary.txt" echo " Saved full output to $home_dir/matrixCompFull.txt" diff --git a/regtests/bin/run_test b/regtests/bin/run_test index b14739b46..c509b574c 100755 --- a/regtests/bin/run_test +++ b/regtests/bin/run_test @@ -442,7 +442,7 @@ then errmsg "Error occured during WW3 $prog build" exit 1 fi - export OASISDIR=$path_i/../work_oasis3-mct + export OASISDIR=$path_w/work_oasis3-mct fi # 3.b Header @@ -560,7 +560,7 @@ then fi # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -688,7 +688,7 @@ then fi # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -823,7 +823,7 @@ then fi # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -958,7 +958,7 @@ then fi # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -1096,7 +1096,7 @@ then do # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -1268,7 +1268,7 @@ then do # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -1417,7 +1417,7 @@ then do # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -1617,7 +1617,7 @@ then ofile="$path_w/$prog.out" # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -1808,7 +1808,7 @@ then fi # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -1991,7 +1991,7 @@ do ifile=`( ls ${path_i}/${prog}${gu}.??? )` # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $path_i/$prog${gu}.nml $prog.nml @@ -2049,7 +2049,7 @@ do do # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -2090,6 +2090,7 @@ do then \rm -f $prog.inp \rm -f $prog.nml + \rm -f ounfmeta.inp if [ $multi -eq 2 ] then \rm -f mod_def.ww3 @@ -2274,7 +2275,7 @@ do do # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -2449,7 +2450,7 @@ do fi # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -2582,7 +2583,7 @@ then # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml @@ -2720,7 +2721,7 @@ then fi # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $nml_input ] && [ ! -z "`basename ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml diff --git a/regtests/ww3_tp2.14/info b/regtests/ww3_tp2.14/info index 9e9d412e7..2847e2268 100644 --- a/regtests/ww3_tp2.14/info +++ b/regtests/ww3_tp2.14/info @@ -68,7 +68,7 @@ # - fields are I/O coupling between the two models # # - remark : these fields must also be defined in type 1 # # * prep_env.sh : # -# + compile the toy model, the oasis coupler and coy the inputs # +# + compile the toy model, the oasis coupler and copy the inputs # # * namcouple : # # + defines the configuration for the oasis coupler # # - remark : grid dimensions for ww3 must be -2 to remove the halo # @@ -86,45 +86,31 @@ # Sample run_test commands : # #(Note: Altix and mpirun commands differ by local system) # # # -# ./bin/run_test -C OASIS -c Altix -s OASACM -f -o netcdf -w work_OASACM # -# -p mpirun -n 4 ../model ww3_tp2.14 # -# ./bin/run_test -C OASIS -c Altix -s OASOCM -f -o netcdf -w work_OASOCM # -# -p mpirun -n 4 ../model ww3_tp2.14 # -# ./bin/run_test -C OASIS -c Altix -s OASICM -f -o netcdf -w work_OASICM # -# -p mpirun -n 4 ../model ww3_tp2.14 # -# ./bin/run_rest -s OASACM2 -w work_OASACM2 -C OASIS -f -p mpirun -n 4 # -# -o netcdf ../model ww3_tp2.14 # -# mkdir -p ww3_tp2.14/work_OASACM3 # -# cp ww3_tp2.14/input/ww3_shel_OASACM3.nml # -# ww3_tp2.14/work_OASACM3/ww3_shel.nml # -# ./bin/run_test -s OASACM3 -w work_OASACM3 -f -p mpirun -n 2 -o netcdf # -# ../model ww3_tp2.14 # +# ./bin/run_test -C OASIS -s OASACM -f -o netcdf -w work_OASACM # +# -i input_oasacm -p mpirun -n 4 ../model ww3_tp2.14 # +# ./bin/run_test -C OASIS -s OASOCM -f -o netcdf -w work_OASOCM # +# -i input_oasocm -p mpirun -n 4 ../model ww3_tp2.14 # +# ./bin/run_test -C OASIS -s OASICM -f -o netcdf -w work_OASICM # +# -i input_oasicm -p mpirun -n 4 ../model ww3_tp2.14 # +# ./bin/run_rest -C OASIS -s OASACM2 -f -o netcdf -w work_OASACM2 # +# -i input_oasacm2 -p mpirun -n 4 ../model ww3_tp2.14 # +# ./bin/run_test -s OASACM3 -f -o netcdf -w work_OASACM3 # +# -i input_oasacm3 -p mpirun -n 2 ../model ww3_tp2.14 # # mkdir -p ww3_tp2.14/work_OASACM4 # # ln -sf ../work_OASACM3/restart001.ww3 # # ww3_tp2.14/work_OASACM4/restart.ww3 # -# ./bin/run_test -r ww3_grid -s OASACM4 -w work_OASACM4 -C OASIS -f # -# -p mpirun -n 4 -o netcdf ../model ww3_tp2.14 # -# ./bin/run_test -r ww3_shel -s OASACM4 -w work_OASACM4 -C OASIS -f # -# -p mpirun -n 4 -o netcdf ../model ww3_tp2.14 # -# ./bin/run_test -r ww3_ounf -s OASACM4 -w work_OASACM4 -C OASIS -f # -# -p mpirun -n 4 -o netcdf ../model ww3_tp2.14 # +# ./bin/run_test -C OASIS -s OASACM4 -f -o netcdf -w work_OASACM4 # +# -i input_oasacm4 -p mpirun -n 4 ../model ww3_tp2.14 # # mkdir -p ww3_tp2.14/work_OASACM5 # # ln -sf ../work_OASACM4/restart001.ww3 # -# ww3_tp2.14/work_OASACM5/restart.ww3" # -# ./bin/run_test -r ww3_grid -s OASACM5 -w work_OASACM5 -C OASIS -f # -# -p mpirun -n 4 -o netcdf ../model ww3_tp2.14 # -# ./bin/run_test -r ww3_shel -s OASACM5 -w work_OASACM5 -C OASIS -f # -# -p mpirun -n 4 -o netcdf ../model ww3_tp2.14 # -# ./bin/run_test -r ww3_ounf -s OASACM5 -w work_OASACM5 -C OASIS -f # -# -p mpirun -n 4 -o netcdf ../model ww3_tp2.14 # -# mv ww3_tp2.14/input/ww3_ounf.inp ww3_tp2.14/input/ww3_ounf.inp.bak # -# cp ww3_tp2.14/input/ww3_ounf.inp-OASACM6 ww3_tp2.14/input/ww3_ounf.inp # -# ./bin/run_test -g OASACM6 -s OASACM6 -w work_OASACM6 -C OASIS -f # -# -p mpirun -n 4 -o netcdf ../model ww3_tp2.14 # -# mv ww3_tp2.14/input/ww3_ounf.inp.bak ww3_tp2.14/input/ww3_ounf.inp # +# ww3_tp2.14/work_OASACM5/restart.ww3 # +# ./bin/run_test -C OASIS -s OASACM5 -f -o netcdf -w work_OASACM5 # +# -i input_oasacm5 -p mpirun -n 4 ../model ww3_tp2.14 # +# ./bin/run_test -C OASIS -s OASACM6 -f -o netcdf -w work_OASACM6 # +# -i input_oasacm6 -p mpirun -n 4 ../model ww3_tp2.14 # # # # M. Accensi, Feb 2015 # # Ifremer Institute # -# Last Mod : Oct 2020 # +# Last Mod : Oct 2021 # # # ############################################################################# diff --git a/regtests/ww3_tp2.14/input/namelists_BREST.nml b/regtests/ww3_tp2.14/input/namelists_BREST.nml deleted file mode 100644 index 9216a3692..000000000 --- a/regtests/ww3_tp2.14/input/namelists_BREST.nml +++ /dev/null @@ -1,2 +0,0 @@ -&PSMC DTIME=10800., RFMAXD=36., LvSMC=2, NBISMC=0, CFLTM=0.1 / -END OF NAMELISTS diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/.cvsignore b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/.cvsignore deleted file mode 100644 index 49afb9b8d..000000000 --- a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -Makefile.conf config.log config.status config.h autom4te.cache diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/.cvsignore b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/.cvsignore deleted file mode 100644 index d6ff6a7a3..000000000 --- a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.toc *.log *.dvi *.aux *.blg *.bbl *.pdf diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/texsrc/.cvsignore b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/texsrc/.cvsignore deleted file mode 100644 index 9d81d8f20..000000000 --- a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/doc/texsrc/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.F90 *.tex diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/.cvsignore b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/.cvsignore deleted file mode 100644 index 901ef75c8..000000000 --- a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_concur1/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -climate *.mod poe.* diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/.cvsignore b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/.cvsignore deleted file mode 100644 index 90747e204..000000000 --- a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/climate_sequen1/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -MCT.* *.mod climate diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/.cvsignore b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/.cvsignore deleted file mode 100644 index 96170cb25..000000000 --- a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/examples/simple/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -twocon twoseq twosequn twoseqNB diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/.cvsignore b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/.cvsignore deleted file mode 100644 index edf6a4e0c..000000000 --- a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mct/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.mod *_scratch.f Makefile.conf *.lst diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/.cvsignore b/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/.cvsignore deleted file mode 100644 index 6594adcb7..000000000 --- a/regtests/ww3_tp2.14/input/oasis3-mct/lib/mct/mpeu/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.mod mpeu Makefile.conf *.lst diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/cmplr.tmpl b/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/cmplr.tmpl index b40fc4ad7..bfd08de42 100644 --- a/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/cmplr.tmpl +++ b/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/cmplr.tmpl @@ -24,10 +24,10 @@ CHAN = MPI1 # Paths for libraries, object files and binaries # # COUPLE : path for oasis3-mct main directory -COUPLE = $(WWATCH3_DIR)/../regtests/ww3_tp2.14/input/oasis3-mct +COUPLE = # # ARCHDIR : directory created when compiling -ARCHDIR = $(WWATCH3_DIR)/../regtests/ww3_tp2.14/work_oasis3-mct +ARCHDIR = # # NetCDF library NETCDF_INCLUDE = $(shell $(NETCDF_CONFIG) --cflags) diff --git a/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/make.inc b/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/make.inc.tmpl similarity index 81% rename from regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/make.inc rename to regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/make.inc.tmpl index d98a83253..9aaa891d9 100644 --- a/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/make.inc +++ b/regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/make.inc.tmpl @@ -10,6 +10,6 @@ # Note: Choose one of these includes files and modify it according to your # local settings. Replace the currently active file with your own. # -include $(WWATCH3_DIR)/../regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/cmplr +include /util/make_dir/cmplr # ### End User configurable options ### diff --git a/regtests/ww3_tp2.14/input/prep_env.sh b/regtests/ww3_tp2.14/input/prep_env.sh deleted file mode 100755 index d4f51a1b6..000000000 --- a/regtests/ww3_tp2.14/input/prep_env.sh +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/bash -e - -if [ $# -ne 4 ] -then - echo "need four arguments:" - echo '$1 : path_i' - echo '$2 : path_w' - echo '$3 : complr' - echo '$4 : switch' - exit 1 -fi - -path_i=$1 -path_w=$2 -cmplr=$3 -swtstr=$4 - -echo '' -echo ' setup coupling environment' -export WWATCH3_DIR=`grep WWATCH3_DIR $WWATCH3_ENV | awk -F' ' '{print $2}' ` -export WWATCH3_CC=`grep WWATCH3_CC $WWATCH3_ENV | awk -F' ' '{print $2}' ` - -echo ' compile oasis coupler' -cd $path_i/oasis3-mct/util/make_dir -if [ $cmplr ] -then - echo ' ' - echo ' Setup cmplr file' - if [ "$cmplr" == "mpt" ] || [ "$cmplr" == "mpt_debug" ] || \ - [ "$cmplr" == "datarmor_mpt" ] || [ "$cmplr" == "datarmor_mpt_debug" ] || \ - [ "$cmplr" == "intel" ] || [ "$cmplr" == "intel_debug" ] || \ - [ "$cmplr" == "so_intel" ] || [ "$cmplr" == "so_intel_debug" ] || \ - [ "$cmplr" == "datarmor_intel" ] || [ "$cmplr" == "datarmor_intel_debug" ] || \ - [ "$cmplr" == "gnu" ] || [ "$cmplr" == "gnu_debug" ] || \ - [ "$cmplr" == "hera.intel" ] || [ "$cmplr" == "orion.intel" ] || \ - [ "$cmplr" == "hera.gnu" ] || [ "$cmplr" == "jet.intel" ] || \ - [ "$cmplr" == "stampede.intel" ] || [ "$cmplr" == "gaea.intel" ] || \ - [ "$cmplr" == "cheyenne.intel" ] || [ "$cmplr" == "cheyenne.gnu" ] || \ - [ "$cmplr" == "s4.intel" ] || \ - [ "$cmplr" == "wcoss_cray" ] || [ "$cmplr" == "wcoss_dell_p3" ] || \ - [ "$cmplr" == "datarmor_gnu" ] || [ "$cmplr" == "datarmor_gnu_debug" ] || \ - [ "$cmplr" == "pgi" ] || [ "$cmplr" == "pgi_debug" ] || \ - [ "$cmplr" == "datarmor_pgi" ] || [ "$cmplr" == "datarmor_pgi_debug" ] || \ - [ "$cmplr" == "ukmo_cray" ] || [ "$cmplr" == "ukmo_cray_debug" ] || \ - [ "$cmplr" == "ukmo_cray_gnu" ] || [ "$cmplr" == "ukmo_cray_gnu_debug" ]; then - source $WWATCH3_DIR/bin/cmplr.env - # shortlist optl - alloptl=( $optl ) - for ioptl in $(seq 2 ${#alloptl[@]}); do - optls="${optls}${alloptl[$ioptl]} " - done - # shortlist optc - alloptc=( $optc ) - for ioptc in $(seq 3 ${#alloptc[@]}); do - optcs="${optcs}${alloptc[$ioptc]} " - done - # shorten comp_mpi - comp_mpi_exe="$(echo $comp_mpi | awk -F' ' '{print $1}')" - # sed cmplr.tmpl - sed -e "s//$optcs/" -e "s//$optls/" -e "s//$comp_mpi/" -e "s//$WWATCH3_CC/" -e "s//$comp_mpi_exe/" cmplr.tmpl > cmplr - echo " sed cmplr.tmpl => cmplr" - else - echo "ERROR: cmplr.$cmplr not found" 2>&1 - exit 1 - fi - chmod 775 cmplr -fi - -make realclean -f TopMakefileOasis3 > $path_w/oasis_clean.out -make -f TopMakefileOasis3 > $path_w/oasis_make.out - -echo ' compile toy model' -cd $path_i/toy -make clean > $path_w/toy_clean.out -make > $path_w/toy_make.out - -echo ' copy oasis coupler inputs' -cd $path_w -ln -sf ../input/namcouple.$swtstr namcouple - -echo ' copy toy model inputs' -cd $path_w -if [ -f ../input/toy/r-toy.nc.$swtstr ]; then - cp ../input/toy/r-toy.nc.$swtstr r-toy.nc -else - echo "WARNING: model input ../input/toy/r-toy.nc.$swtstr does not exist" -fi -ln -sf ../input/toy/grid_toy_model.nc . -ln -sf ../input/toy/toy_coupled_field.nc.$swtstr toy_coupled_field.nc -ln -sf ../input/TOYNAMELIST.nam.$swtstr TOYNAMELIST.nam -ln -sf ../input/toy/toy_model . - -echo ' copy ww3 model inputs' -cd $path_w -if [ -f ../input/r-ww3.nc.$swtstr ]; then - cp ../input/r-ww3.nc.$swtstr r-ww3.nc -else - echo "WARNING: model input ../input/toy/r-ww3.nc.$swtstr does not exist" -fi -cp ../input/ww3_shel_${swtstr}.inp ../input/ww3_shel.inp -cp ../input/ww3_shel_${swtstr}.nml ../input/ww3_shel.nml -echo '' diff --git a/regtests/ww3_tp2.14/input/toy/Makefile b/regtests/ww3_tp2.14/input/toy/Makefile.tmpl similarity index 97% rename from regtests/ww3_tp2.14/input/toy/Makefile rename to regtests/ww3_tp2.14/input/toy/Makefile.tmpl index 03409fe25..c080f1cdf 100755 --- a/regtests/ww3_tp2.14/input/toy/Makefile +++ b/regtests/ww3_tp2.14/input/toy/Makefile.tmpl @@ -1,5 +1,5 @@ # -include $(WWATCH3_DIR)/../regtests/ww3_tp2.14/input/oasis3-mct/util/make_dir/make.inc +include /util/make_dir/make.inc # LIBPSMILE = $(ARCHDIR)/lib/libpsmile.${CHAN}.a $(ARCHDIR)/lib/libmct.a $(ARCHDIR)/lib/libmpeu.a $(ARCHDIR)/lib/libscrip.a # diff --git a/regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASACM b/regtests/ww3_tp2.14/input_oasacm/TOYNAMELIST.nam similarity index 100% rename from regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASACM rename to regtests/ww3_tp2.14/input_oasacm/TOYNAMELIST.nam diff --git a/regtests/ww3_tp2.14/input/namcouple.OASACM b/regtests/ww3_tp2.14/input_oasacm/namcouple similarity index 100% rename from regtests/ww3_tp2.14/input/namcouple.OASACM rename to regtests/ww3_tp2.14/input_oasacm/namcouple diff --git a/regtests/ww3_tp2.14/input/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasacm/namelists_IROISE.nml similarity index 100% rename from regtests/ww3_tp2.14/input/namelists_IROISE.nml rename to regtests/ww3_tp2.14/input_oasacm/namelists_IROISE.nml diff --git a/regtests/ww3_tp2.14/input_oasacm/prep_env.sh b/regtests/ww3_tp2.14/input_oasacm/prep_env.sh new file mode 100755 index 000000000..ee03d4033 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm/prep_env.sh @@ -0,0 +1,101 @@ +#!/bin/bash -e + +if [ $# -ne 4 ] +then + echo "need four arguments:" + echo '$1 : path_i' + echo '$2 : path_w' + echo '$3 : complr' + echo '$4 : switch' + exit 1 +fi + +path_i=$1 +path_w=$2 +cmplr=$3 +swtstr=$4 + +echo '' +echo ' setup coupling environment' +export WWATCH3_DIR=`grep WWATCH3_DIR $WWATCH3_ENV | awk -F' ' '{print $2}' ` +export WWATCH3_CC=`grep WWATCH3_CC $WWATCH3_ENV | awk -F' ' '{print $2}' ` + + +echo ' copy oasis and toy in $path_w' +cp -r $path_i/../input/toy $path_w/ +cp -r $path_i/../input/oasis3-mct $path_w/ + + +echo ' Setup oasis cmplr file' +cd $path_w/oasis3-mct/util/make_dir +source $WWATCH3_DIR/bin/cmplr.env +# shortlist optl +alloptl=( $optl ) +for ioptl in $(seq 2 ${#alloptl[@]}); do + optls="${optls}${alloptl[$ioptl]} " +done +# shortlist optc +alloptc=( $optc ) +for ioptc in $(seq 3 ${#alloptc[@]}); do + optcs="${optcs}${alloptc[$ioptc]} " +done +# shorten comp_mpi +comp_mpi_exe="$(echo $comp_mpi | awk -F' ' '{print $1}')" +# sed cmplr.tmpl +sed -e "s::$path_w/oasis3-mct:" \ + -e "s::$path_w/work_oasis3-mct:" \ + -e "s//$optcs/" -e "s//$optls/" \ + -e "s//$comp_mpi/" -e "s//$comp_mpi_exe/" \ + -e "s//$WWATCH3_CC/" cmplr.tmpl > cmplr +echo " sed cmplr.tmpl => cmplr" +chmod 775 cmplr + + +echo ' setup oasis make.inc file' +sed -e "s::$path_w/oasis3-mct:" make.inc.tmpl > make.inc + + +echo ' compile oasis coupler' +make realclean -f TopMakefileOasis3 > $path_w/oasis_clean.out +make -f TopMakefileOasis3 > $path_w/oasis_make.out + + +echo ' setup toy Makefile' +cd $path_w/toy +sed -e "s::$path_w/oasis3-mct:" Makefile.tmpl > Makefile + + +echo ' compile toy model' +make clean > $path_w/toy_clean.out +make > $path_w/toy_make.out + + +echo ' copy oasis coupler inputs' +cp $path_i/namcouple $path_w/namcouple + + +echo ' copy toy model inputs' +if [ -f $path_w/toy/r-toy.nc.$swtstr ]; then + cp $path_w/toy/r-toy.nc.$swtstr $path_w/r-toy.nc +else + echo "WARNING: model input $path_w/toy/r-toy.nc.$swtstr does not exist" +fi + +cp $path_w/toy/grid_toy_model.nc $path_w/ +cp $path_w/toy/toy_coupled_field.nc.$swtstr $path_w/toy_coupled_field.nc +cp $path_w/toy/toy_model $path_w/ + +cp $path_i/TOYNAMELIST.nam $path_w/TOYNAMELIST.nam + + +echo ' copy ww3 model inputs' +cd $path_w +if [ -f $path_i/r-ww3.nc ]; then + cp $path_i/r-ww3.nc $path_w/r-ww3.nc +else + echo "WARNING: model input $path_i/toy/r-ww3.nc does not exist" +fi + + + +echo '' diff --git a/regtests/ww3_tp2.14/input/switch_OASACM b/regtests/ww3_tp2.14/input_oasacm/switch_OASACM similarity index 100% rename from regtests/ww3_tp2.14/input/switch_OASACM rename to regtests/ww3_tp2.14/input_oasacm/switch_OASACM diff --git a/regtests/ww3_tp2.14/input/ww3_grid.inp b/regtests/ww3_tp2.14/input_oasacm/ww3_grid.inp similarity index 100% rename from regtests/ww3_tp2.14/input/ww3_grid.inp rename to regtests/ww3_tp2.14/input_oasacm/ww3_grid.inp diff --git a/regtests/ww3_tp2.14/input/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasacm/ww3_grid.nml similarity index 99% rename from regtests/ww3_tp2.14/input/ww3_grid.nml rename to regtests/ww3_tp2.14/input_oasacm/ww3_grid.nml index b426c59b1..9b8394098 100644 --- a/regtests/ww3_tp2.14/input/ww3_grid.nml +++ b/regtests/ww3_tp2.14/input_oasacm/ww3_grid.nml @@ -137,7 +137,7 @@ ! -------------------------------------------------------------------- ! &GRID_NML GRID%NAME = 'IROISE 1.5KM' - GRID%NML = '../input/namelists_IROISE.nml' + GRID%NML = '../input_oasacm/namelists_IROISE.nml' GRID%TYPE = 'RECT' GRID%COORD = 'SPHE' GRID%CLOS = 'NONE' diff --git a/regtests/ww3_tp2.14/input_oasacm/ww3_ounf.inp b/regtests/ww3_tp2.14/input_oasacm/ww3_ounf.inp new file mode 100755 index 000000000..b8bbf80f6 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm/ww3_ounf.inp @@ -0,0 +1,41 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid output post-processing $ +$--------------------------------------------------------------------- $ +$ First output time (yyyymmdd hhmmss), increment of output (s), +$ and number of output times. +$ + 20080310 000000 180 100 +$ +$ Output request flags identifying fields as in ww3_shel.inp. See that +$ file for a full documentation of field output options. Namelist type +$ selection is used here (for alternative F/T flags, see ww3_shel.inp). +$ + N + HS FP DIR DP CHA UST DPT CUR WND +$ +$--------------------------------------------------------------------- $ +$ netCDF version [3,4] +$ and variable type 4 [2 = SHORT, 3 = it depends , 4 = REAL] +$ swell partitions [0 1 2 3 4 5] +$ variables in same file [T] or not [F] +$ + 3 4 + 0 + T +$ +$ -------------------------------------------------------------------- $ +$ File prefix +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +$ IX and IY ranges [regular:IX NX IY NY DX DY, unstructured:IP NP DP DP] +$ +ww3. +6 +1 10000 1 10000 +$ +$ For each field and time a new file is generated with the file name +$ ww3.date_xxx.nc , where date is a conventional time indicator with S3 +$ characters, and xxx is a field identifier. +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasacm/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasacm/ww3_ounf.nml new file mode 100644 index 000000000..fc0386ff8 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm/ww3_ounf.nml @@ -0,0 +1,60 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_ounf.nml - Grid output post-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the output fields to postprocess via FIELD_NML namelist +! +! * the detailed list of field names FIELD%LIST is given in ww3_shel.nml +! DPT CUR WND AST WLV ICE IBG D50 IC1 IC5 +! HS LM T02 T0M1 T01 FP DIR SPR DP HIG +! EF TH1M STH1M TH2M STH2M WN +! PHS PTP PLP PDIR PSPR PWS PDP PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR +! UST CHA CGE FAW TAW TWA WCC WCF WCH WCM FWS +! SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC +! ABR UBR BED FBB TBB +! MSS MSC WL02 AXT AYT AXY +! DTD FC CFX CFD CFK +! U1 U2 +! +! * namelist must be terminated with / +! * definitions & defaults: +! FIELD%TIMESTART = '19000101 000000' ! Stop date for the output field +! FIELD%TIMESTRIDE = '0' ! Time stride for the output field +! FIELD%TIMESTOP = '29001231 000000' ! Stop date for the output field +! FIELD%TIMECOUNT = '1000000000' ! Number of time steps +! FIELD%TIMESPLIT = 6 ! [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +! FIELD%LIST = 'unset' ! List of output fields +! FIELD%PARTITION = '0 1 2 3' ! List of wave partitions ['0 1 2 3 4 5'] +! FIELD%SAMEFILE = T ! All the variables in the same file [T|F] +! FIELD%TYPE = 3 ! [2 = SHORT, 3 = it depends , 4 = REAL] +! -------------------------------------------------------------------- ! +&FIELD_NML + FIELD%TIMESTART = '20080310 000000' + FIELD%TIMESTRIDE = '180' + FIELD%TIMECOUNT = '100' + FIELD%LIST = 'HS FP DIR DP CHA UST DPT CUR WND' + FIELD%PARTITION = '0' + FIELD%TYPE = 4 +/ + +! -------------------------------------------------------------------- ! +! Define the content of the output file via FILE_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%PREFIX = 'ww3.' ! Prefix for output file name +! FILE%NETCDF = 3 ! Netcdf version [3|4] +! FILE%IX0 = 1 ! First X-axis or node index +! FILE%IXN = 1000000000 ! Last X-axis or node index +! FILE%IY0 = 1 ! First Y-axis index +! FILE%IYN = 1000000000 ! Last Y-axis index +! -------------------------------------------------------------------- ! +&FILE_NML + FILE%IXN = 10000 + FILE%IYN = 10000 +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM.inp b/regtests/ww3_tp2.14/input_oasacm/ww3_shel.inp similarity index 100% rename from regtests/ww3_tp2.14/input/ww3_shel_OASACM.inp rename to regtests/ww3_tp2.14/input_oasacm/ww3_shel.inp diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM.nml b/regtests/ww3_tp2.14/input_oasacm/ww3_shel.nml similarity index 95% rename from regtests/ww3_tp2.14/input/ww3_shel_OASACM.nml rename to regtests/ww3_tp2.14/input_oasacm/ww3_shel.nml index f134548da..65c1784fb 100644 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASACM.nml +++ b/regtests/ww3_tp2.14/input_oasacm/ww3_shel.nml @@ -44,6 +44,8 @@ ! INPUT%FORCING%WATER_LEVELS = 'F' ! INPUT%FORCING%CURRENTS = 'F' ! INPUT%FORCING%WINDS = 'F' +! INPUT%FORCING%ATM_MOMENTUM = 'F' +! INPUT%FORCING%AIR_DENSITY = 'F' ! INPUT%FORCING%ICE_CONC = 'F' ! INPUT%FORCING%ICE_PARAM1 = 'F' ! INPUT%FORCING%ICE_PARAM2 = 'F' @@ -94,9 +96,11 @@ ! T T 1 5 WLV WLV Water levels. ! T T 1 6 ICE ICE Ice concentration. ! T T 1 7 IBG IBG Iceberg-induced damping. -! T T 1 8 D50 D50 Median sediment grain size. -! T T 1 9 IC1 IC1 Ice thickness. -! T T 1 10 IC5 IC5 Ice flow diameter. +! T T 1 8 TAUA TAU Atm. momentum. +! T T 1 9 RHOAIR RHO Air density. +! T T 1 10 D50 D50 Median sediment grain size. +! T T 1 11 IC1 IC1 Ice thickness. +! T T 1 12 IC5 IC5 Ice flow diameter. ! ------------------------------------------------- ! 2 Standard mean wave Parameters ! ------------------------------------------------- @@ -117,6 +121,7 @@ ! T T 2 15 HMAXD SDMH St Dev of MXC (STE) ! T T 2 16 HCMAXD SDMHC St Dev of MXHC (STE) ! F T 2 17 WBT WBT Domiant wave breaking probability bT +! F F 2 18 FP0 TP Peak period (from peak freq) ! ------------------------------------------------- ! 3 Spectral Parameters (first 5) ! ------------------------------------------------- @@ -174,6 +179,7 @@ ! F F 6 9 P2SMS P2L Micro seism source term ! F F 6 10 TAUICE TWI Wave to sea ice stress ! F F 6 11 PHICE FIC Wave to sea ice energy flux +! F F 6 12 USSP USP Partitioned surface Stokes drift ! ------------------------------------------------- ! 7 Wave-bottom layer ! ------------------------------------------------- @@ -219,9 +225,14 @@ ! - Ice model : IC5 TWI ! - Received fields by ww3: ! - Ocean model : SSH CUR -! - Atmospheric model : WND +! - Atmospheric model : WND TAU RHO ! - Ice model : ICE IC1 IC5 ! +! * Coupling flag (T) or (F) at T+0 (extra fields in the restart needed) +! +! * extra fields to be written to the restart: +! - The list includes all fields sent by coupling exchange only +! ! * namelist must be terminated with / ! * definitions & defaults: ! TYPE%FIELD%LIST = 'unset' @@ -236,6 +247,8 @@ ! TYPE%PARTITION%FORMAT = T ! TYPE%COUPLING%SENT = 'unset' ! TYPE%COUPLING%RECEIVED = 'unset' +! TYPE%COUPLING%COUPLET0 = F +! TYPE%RESTART%EXTRA = 'unset' ! ! -------------------------------------------------------------------- ! &OUTPUT_TYPE_NML diff --git a/regtests/ww3_tp2.14/input/ww3_strt.inp b/regtests/ww3_tp2.14/input_oasacm/ww3_strt.inp similarity index 100% rename from regtests/ww3_tp2.14/input/ww3_strt.inp rename to regtests/ww3_tp2.14/input_oasacm/ww3_strt.inp diff --git a/regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASACM2 b/regtests/ww3_tp2.14/input_oasacm2/TOYNAMELIST.nam similarity index 100% rename from regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASACM2 rename to regtests/ww3_tp2.14/input_oasacm2/TOYNAMELIST.nam diff --git a/regtests/ww3_tp2.14/input/namcouple.OASACM2 b/regtests/ww3_tp2.14/input_oasacm2/namcouple similarity index 100% rename from regtests/ww3_tp2.14/input/namcouple.OASACM2 rename to regtests/ww3_tp2.14/input_oasacm2/namcouple diff --git a/regtests/ww3_tp2.14/input_oasacm2/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasacm2/namelists_IROISE.nml new file mode 100644 index 000000000..8b5707b65 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm2/namelists_IROISE.nml @@ -0,0 +1 @@ +END OF NAMELISTS diff --git a/regtests/ww3_tp2.14/input_oasacm2/prep_env.sh b/regtests/ww3_tp2.14/input_oasacm2/prep_env.sh new file mode 100755 index 000000000..ee03d4033 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm2/prep_env.sh @@ -0,0 +1,101 @@ +#!/bin/bash -e + +if [ $# -ne 4 ] +then + echo "need four arguments:" + echo '$1 : path_i' + echo '$2 : path_w' + echo '$3 : complr' + echo '$4 : switch' + exit 1 +fi + +path_i=$1 +path_w=$2 +cmplr=$3 +swtstr=$4 + +echo '' +echo ' setup coupling environment' +export WWATCH3_DIR=`grep WWATCH3_DIR $WWATCH3_ENV | awk -F' ' '{print $2}' ` +export WWATCH3_CC=`grep WWATCH3_CC $WWATCH3_ENV | awk -F' ' '{print $2}' ` + + +echo ' copy oasis and toy in $path_w' +cp -r $path_i/../input/toy $path_w/ +cp -r $path_i/../input/oasis3-mct $path_w/ + + +echo ' Setup oasis cmplr file' +cd $path_w/oasis3-mct/util/make_dir +source $WWATCH3_DIR/bin/cmplr.env +# shortlist optl +alloptl=( $optl ) +for ioptl in $(seq 2 ${#alloptl[@]}); do + optls="${optls}${alloptl[$ioptl]} " +done +# shortlist optc +alloptc=( $optc ) +for ioptc in $(seq 3 ${#alloptc[@]}); do + optcs="${optcs}${alloptc[$ioptc]} " +done +# shorten comp_mpi +comp_mpi_exe="$(echo $comp_mpi | awk -F' ' '{print $1}')" +# sed cmplr.tmpl +sed -e "s::$path_w/oasis3-mct:" \ + -e "s::$path_w/work_oasis3-mct:" \ + -e "s//$optcs/" -e "s//$optls/" \ + -e "s//$comp_mpi/" -e "s//$comp_mpi_exe/" \ + -e "s//$WWATCH3_CC/" cmplr.tmpl > cmplr +echo " sed cmplr.tmpl => cmplr" +chmod 775 cmplr + + +echo ' setup oasis make.inc file' +sed -e "s::$path_w/oasis3-mct:" make.inc.tmpl > make.inc + + +echo ' compile oasis coupler' +make realclean -f TopMakefileOasis3 > $path_w/oasis_clean.out +make -f TopMakefileOasis3 > $path_w/oasis_make.out + + +echo ' setup toy Makefile' +cd $path_w/toy +sed -e "s::$path_w/oasis3-mct:" Makefile.tmpl > Makefile + + +echo ' compile toy model' +make clean > $path_w/toy_clean.out +make > $path_w/toy_make.out + + +echo ' copy oasis coupler inputs' +cp $path_i/namcouple $path_w/namcouple + + +echo ' copy toy model inputs' +if [ -f $path_w/toy/r-toy.nc.$swtstr ]; then + cp $path_w/toy/r-toy.nc.$swtstr $path_w/r-toy.nc +else + echo "WARNING: model input $path_w/toy/r-toy.nc.$swtstr does not exist" +fi + +cp $path_w/toy/grid_toy_model.nc $path_w/ +cp $path_w/toy/toy_coupled_field.nc.$swtstr $path_w/toy_coupled_field.nc +cp $path_w/toy/toy_model $path_w/ + +cp $path_i/TOYNAMELIST.nam $path_w/TOYNAMELIST.nam + + +echo ' copy ww3 model inputs' +cd $path_w +if [ -f $path_i/r-ww3.nc ]; then + cp $path_i/r-ww3.nc $path_w/r-ww3.nc +else + echo "WARNING: model input $path_i/toy/r-ww3.nc does not exist" +fi + + + +echo '' diff --git a/regtests/ww3_tp2.14/input/switch_OASACM2 b/regtests/ww3_tp2.14/input_oasacm2/switch_OASACM2 similarity index 100% rename from regtests/ww3_tp2.14/input/switch_OASACM2 rename to regtests/ww3_tp2.14/input_oasacm2/switch_OASACM2 diff --git a/regtests/ww3_tp2.14/input_oasacm2/ww3_grid.inp b/regtests/ww3_tp2.14/input_oasacm2/ww3_grid.inp new file mode 100755 index 000000000..e367379b4 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm2/ww3_grid.inp @@ -0,0 +1,276 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid preprocessor input file $ +$ -------------------------------------------------------------------- $ +$ Grid name (C*30, in quotes) +$ + 'IROISE 1.5KM' +$ +$ Frequency increment factor and first frequency (Hz) ---------------- $ +$ number of frequencies (wavenumbers) and directions +$ +1.1 0.0373 32 24 0. +$ +$ Set model flags ---------------------------------------------------- $ +$ - FLDRY Dry run (input/output only, no calculation). +$ - FLCX, FLCY Activate X and Y component of propagation. +$ - FLCTH, FLCK Activate direction and wavenumber shifts. +$ - FLSOU Activate source terms. +$ + F T T T T T +$ +$ Set time steps ----------------------------------------------------- $ +$ - Time step information (this information is always read) +$ maximum global time step, maximum CFL time step for x-y and +$ k-theta, minimum source term time step (all in seconds). +$ + 180. 45. 45. 10. +$ +$ Start of namelist input section ------------------------------------ $ +$ Starting with WAVEWATCH III version 2.00, the tunable parameters +$ for source terms, propagation schemes, and numerics are read using +$ namelists. Any namelist found in the folowing sections up to the +$ end-of-section identifier string (see below) is temporarily written +$ to ww3_grid.scratch, and read from there if necessary. Namelists +$ not needed for the given switch settings will be skipped +$ automatically, and the order of the namelists is immaterial. +$ As an example, namelist input to change SWELLF and ZWND in the +$ Tolman and Chalikov input would be +$ +$ &SIN2 SWELLF = 0.1, ZWND = 15. / +$ +$ Define constants in source terms ----------------------------------- $ +$ +$ Input - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SIN1 +$ CINP : Proportionality constant. +$ &SIN1 CINP= 0.25 / +$ Tolman and Chalikov : Namelist SIN2 +$ ZWND : Height of wind (m). +$ SWELLF : swell factor in (2.48). +$ STABSH, STABOF, CNEG, CPOS, FNEG : +$ c0, ST0, c1, c2 and f1 in . (2.63) +$ through (2.65) for definition of +$ effective wind speed (!/STAB2). +$ +$ Nonlinear interactions - - - - - - - - - - - - - - - - - - - - - - - +$ Discrete I.A. : Namelist SNL1 +$ LAMBDA : Lambda in source term. +$ NLPROP : C in sourc term. NOTE : default +$ value depends on other source +$ terms selected. +$ KDCONV : Factor before kd in Eq. (2.24). +$ KDMIN, SNLCS1, SNLCS2, SNLCS3 : +$ Minimum kd, and constants c1-3 +$ in depth scaling function. +$ Exact interactions : Namelist SNL2 +$ IQTYPE : Type of depth treatment +$ 1 : Deep water +$ 2 : Deep water / WAM scaling +$ 3 : Shallow water +$ TAILNL : Parametric tail power. +$ NDEPTH : Number of depths in for which +$ integration space is established. +$ Used for IQTYPE = 3 only +$ Namelist ANL2 +$ DEPTHS : Array with depths for NDEPTH = 3 +$ +$ Dissipation - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SDS1 +$ CDIS, APM : As in source term. +$ +$ Tolman and Chalikov : Namelist SDS2 +$ SDSA0, SDSA1, SDSA2, SDSB0, SDSB1, PHIMIN : +$ Constants a0, a1, a2, b0, b1 and +$ PHImin. +$ +$ Bottom friction - - - - - - - - - - - - - - - - - - - - - - - - - - +$ JONSWAP : Namelist SBT1 +$ GAMMA : As it says. +$ +$ Propagation schemes ------------------------------------------------ $ +$ First order : Namelist PRO1 +$ CFLTM : Maximum CFL number for refraction. +$ +$ UQ with diffusion : Namelist PRO2 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ DTIME : Swell age (s) in garden sprinkler +$ correction. If 0., all diffusion +$ switched off. If small non-zero +$ (DEFAULT !!!) only wave growth +$ diffusion. +$ LATMIN : Maximum latitude used in calc. of +$ strength of diffusion for prop. +$ +$ UQ with averaging : Namelist PRO3 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ WDTHCG : Tuning factor propag. direction. +$ WDTHTH : Tuning factor normal direction. +$ +$ UQ with divergence : Namelist PRO4 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ QTFAC : Tuning factor Eq. (3.41). +$ RSFAC : Tuning factor Eq. (3.42). +$ RNFAC : Tuning factor Eq. (3.43). +$ +$ Miscellaneous ------------------------------------------------------ $ +$ Misc. parameters : Namelist MISC +$ CICE0 : Ice concentration cut-off. +$ CICEN : Ice concentration cut-off. +$ XSEED : Xseed in seeding alg. (!/SEED). +$ FLAGTR : Indicating presence and type of +$ subgrid information : +$ 0 : No subgrid information. +$ 1 : Transparancies at cell boun- +$ daries between grid points. +$ 2 : Transp. at cell centers. +$ 3 : Like 1 with cont. ice. +$ 4 : Like 2 with cont. ice. +$ XP, XR, XFILT +$ Xp, Xr and Xf for the dynamic +$ integration scheme. +$ +$ In the 'Out of the box' test setup we run with sub-grid obstacles +$ and with continuous ice treatment. +$ +$ &MISC CICE0 = 0.25, CICEN = 0.75, FLAGTR = 4 / +$ +$ Mandatory string to identify end of namelist input section. +$ +END OF NAMELISTS +$ +$ Define grid -------------------------------------------------------- $ +$ Four records containing : +$ 1 NX, NY. As the outer grid lines are always defined as land +$ points, the minimum size is 3x3. +$ 2 Grid increments SX, SY (degr.or m) and scaling (division) factor. +$ If NX*SX = 360., latitudinal closure is applied. +$ 3 Coordinates of (1,1) (degr.) and scaling (division) factor. +$ 4 Limiting bottom depth (m) to discriminate between land and sea +$ points, minimum water depth (m) as allowed in model, unit number +$ of file with bottom depths, scale factor for bottom depths (mult.), +$ IDLA, IDFM, format for formatted read, FROM and filename. +$ IDLA : Layout indicator : +$ 1 : Read line-by-line bottom to top. +$ 2 : Like 1, single read statement. +$ 3 : Read line-by-line top to bottom. +$ 4 : Like 3, single read statement. +$ IDFM : format indicator : +$ 1 : Free format. +$ 2 : Fixed format with above format descriptor. +$ 3 : Unformatted. +$ FROM : file type parameter +$ 'UNIT' : open file by unit number only. +$ 'NAME' : open file by name and assign to unit. +$ +$ Example for longitude-latitude grid (switch !/LLG), for Cartesian +$ grid the unit is meters (NOT km). +$ + 'RECT' T 'NONE' + 103 119 + 0.019 0.0125 1. + -6.119 47.6375 1. + 0.0 1.0 20 -1. 1 1 '(20f10.2)' 'NAME' '../input/iro_1p5k.bot' +$ +$ If the above unit number equals 10, the bottom data is read from +$ this file and follows below (no intermediate comment lines allowed). +$ +$ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +$ +$ If sub-grid information is avalaible as indicated by FLAGTR above, +$ additional input to define this is needed below. In such cases a +$ field of fractional obstructions at or between grid points needs to +$ be supplied. First the location and format of the data is defined +$ by (as above) : +$ - Unit number of file (can be 10, and/or identical to bottem depth +$ unit), scale factor for fractional obstruction, IDLA, IDFM, +$ format for formatted read, FROM and filename +$ +$ 10 0.2 3 1 '(....)' 'NAME' 'obstr.inp' +$ +$ *** NOTE if this unit number is the same as the previous bottom +$ depth unit number, it is assumed that this is the same file +$ without further checks. *** +$ +$ If the above unit number equals 10, the bottom data is read from +$ this file and follows below (no intermediate comment lines allowed, +$ except between the two fields). +$ +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 4 0 0 0 0 0 +$ 0 0 0 0 0 0 4 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 5 5 5 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ *** NOTE size of fields is always NX * NY *** +$ + 10 3 1 '(....)' 'PART' 'mapsta.inp' +$ *** NOTE size of fields is always NX * NY *** +$ +$ Input boundary points ---------------------------------------------- $ +$ An unlimited number of lines identifying points at which input +$ boundary conditions are to be defined. If the actual input data is +$ not defined in the actual wave model run, the initial conditions +$ will be applied as constant boundary conditions. Each line contains: +$ Discrete grid counters (IX,IY) of the active point and a +$ connect flag. If this flag is true, and the present and previous +$ point are on a grid line or diagonal, all intermediate points +$ are also defined as boundary points. +$ + 103 86 F + 103 119 T + 1 119 T + 1 1 T + 103 1 T + 103 11 T +$ +$ Close list by defining point (0,0) (mandatory) +$ + 0 0 F +$ Excluded grid points from segment data ( FROM != PART ) +$ First defined as lines, identical to the definition of the input +$ boundary points, and closed the same way. +$ + 0 0 F +$ +$ Second, define a point in a closed body of sea points to remove +$ the entire body os sea points. Also close by point (0,0) +$ + 0 0 +$ +$ Output boundary points --------------------------------------------- $ +$ Output boundary points are defined as a number of straight lines, +$ defined by its starting point (X0,Y0), increments (DX,DY) and number +$ of points. A negative number of points starts a new output file. +$ Note that this data is only generated if requested by the actual +$ program. Example again for spherical grid in degrees. +$ +$ Close list by defining line with 0 points (mandatory) +$ + 0. 0. 0. 0. 0 +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasacm2/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasacm2/ww3_grid.nml new file mode 100644 index 000000000..db4314d17 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm2/ww3_grid.nml @@ -0,0 +1,276 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III - ww3_grid.nml - Grid pre-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the spectrum parameterization via SPECTRUM_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! SPECTRUM%XFR = 0. ! frequency increment +! SPECTRUM%FREQ1 = 0. ! first frequency (Hz) +! SPECTRUM%NK = 0 ! number of frequencies (wavenumbers) +! SPECTRUM%NTH = 0 ! number of direction bins +! SPECTRUM%THOFF = 0. ! relative offset of first direction [-0.5,0.5] +! -------------------------------------------------------------------- ! +&SPECTRUM_NML + SPECTRUM%XFR = 1.1 + SPECTRUM%FREQ1 = 0.0373 + SPECTRUM%NK = 32 + SPECTRUM%NTH = 24 +/ + +! -------------------------------------------------------------------- ! +! Define the run parameterization via RUN_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! RUN%FLDRY = F ! dry run (I/O only, no calculation) +! RUN%FLCX = F ! x-component of propagation +! RUN%FLCY = F ! y-component of propagation +! RUN%FLCTH = F ! direction shift +! RUN%FLCK = F ! wavenumber shift +! RUN%FLSOU = F ! source terms +! -------------------------------------------------------------------- ! +&RUN_NML + RUN%FLCX = T + RUN%FLCY = T + RUN%FLCTH = T + RUN%FLCK = T + RUN%FLSOU = T +/ + +! -------------------------------------------------------------------- ! +! Define the timesteps parameterization via TIMESTEPS_NML namelist +! +! * It is highly recommended to set up time steps which are multiple +! between them. +! +! * The first time step to calculate is the maximum CFL time step +! which depend on the lowest frequency FREQ1 previously set up and the +! lowest spatial grid resolution in meters DXY. +! reminder : 1 degree=60minutes // 1minute=1mile // 1mile=1.852km +! The formula for the CFL time is : +! Tcfl = DXY / (G / (FREQ1*4*Pi) ) with the constants Pi=3,14 and G=9.8m/s²; +! DTXY ~= 90% Tcfl +! DTMAX ~= 3 * DTXY (maximum global time step limit) +! +! * The refraction time step depends on how strong can be the current velocities +! on your grid : +! DTKTH ~= DTMAX / 2 ! in case of no or light current velocities +! DTKTH ~= DTMAX / 10 ! in case of strong current velocities +! +! * The source terms time step is usually defined between 5s and 60s. +! A common value is 10s. +! DTMIN ~= 10 +! +! * namelist must be terminated with / +! * definitions & defaults: +! TIMESTEPS%DTMAX = 0. ! maximum global time step (s) +! TIMESTEPS%DTXY = 0. ! maximum CFL time step for x-y (s) +! TIMESTEPS%DTKTH = 0. ! maximum CFL time step for k-th (s) +! TIMESTEPS%DTMIN = 0. ! minimum source term time step (s) +! -------------------------------------------------------------------- ! +&TIMESTEPS_NML + TIMESTEPS%DTMAX = 180. + TIMESTEPS%DTXY = 45. + TIMESTEPS%DTKTH = 45. + TIMESTEPS%DTMIN = 10. +/ + +! -------------------------------------------------------------------- ! +! Define the grid to preprocess via GRID_NML namelist +! +! * the tunable parameters for source terms, propagation schemes, and +! numerics are read using namelists. +! * Any namelist found in the folowing sections is temporarily written +! to param.scratch, and read from there if necessary. +! * The order of the namelists is immaterial. +! * Namelists not needed for the given switch settings will be skipped +! automatically +! +! * grid type can be : +! 'RECT' : rectilinear +! 'CURV' : curvilinear +! 'UNST' : unstructured (triangle-based) +! +! * coordinate system can be : +! 'SPHE' : Spherical (degrees) +! 'CART' : Cartesian (meters) +! +! * grid closure can only be applied in spherical coordinates +! +! * grid closure can be : +! 'NONE' : No closure is applied +! 'SMPL' : Simple grid closure. Grid is periodic in the +! : i-index and wraps at i=NX+1. In other words, +! : (NX+1,J) => (1,J). A grid with simple closure +! : may be rectilinear or curvilinear. +! 'TRPL' : Tripole grid closure : Grid is periodic in the +! : i-index and wraps at i=NX+1 and has closure at +! : j=NY+1. In other words, (NX+1,J<=NY) => (1,J) +! : and (I,NY+1) => (NX-I+1,NY). Tripole +! : grid closure requires that NX be even. A grid +! : with tripole closure must be curvilinear. +! +! * The coastline limit depth is the value which distinguish the sea +! points to the land points. All the points with depth values (ZBIN) +! greater than this limit (ZLIM) will be considered as excluded points +! and will never be wet points, even if the water level grows over. +! It can only overwrite the status of a sea point to a land point. +! The value must have a negative value under the mean sea level +! +! * The minimum water depth allowed to compute the model is the absolute +! depth value (DMIN) used in the model if the input depth is lower to +! avoid the model to blow up. +! +! * namelist must be terminated with / +! * definitions & defaults: +! GRID%NAME = 'unset' ! grid name (30 char) +! GRID%NML = 'namelists.nml' ! namelists filename +! GRID%TYPE = 'unset' ! grid type +! GRID%COORD = 'unset' ! coordinate system +! GRID%CLOS = 'unset' ! grid closure +! +! GRID%ZLIM = 0. ! coastline limit depth (m) +! GRID%DMIN = 0. ! abs. minimum water depth (m) +! -------------------------------------------------------------------- ! +&GRID_NML + GRID%NAME = 'IROISE 1.5KM' + GRID%NML = '../input_oasacm2/namelists_IROISE.nml' + GRID%TYPE = 'RECT' + GRID%COORD = 'SPHE' + GRID%CLOS = 'NONE' + GRID%ZLIM = 0.0 + GRID%DMIN = 1.0 +/ + +! -------------------------------------------------------------------- ! +! Define the rectilinear grid type via RECT_NML namelist +! - only for RECT grids - +! +! * The minimum grid size is 3x3. +! +! * If the grid increments SX and SY are given in minutes of arc, the scaling +! factor SF must be set to 60. to provide an increment factor in degree. +! +! * If CSTRG='SMPL', then SX is forced to 360/NX. +! +! * value <= value_read / scale_fac +! +! * namelist must be terminated with / +! * definitions & defaults: +! RECT%NX = 0 ! number of points along x-axis +! RECT%NY = 0 ! number of points along y-axis +! +! RECT%SX = 0. ! grid increment along x-axis +! RECT%SY = 0. ! grid increment along y-axis +! RECT%SF = 1. ! scaling division factor for x-y axis +! +! RECT%X0 = 0. ! x-coordinate of lower-left corner (deg) +! RECT%Y0 = 0. ! y-coordinate of lower-left corner (deg) +! RECT%SF0 = 1. ! scaling division factor for x0,y0 coord +! -------------------------------------------------------------------- ! +&RECT_NML + RECT%NX = 103 + RECT%NY = 119 + RECT%SX = 0.019 + RECT%SY = 0.0125 + RECT%X0 = -6.119 + RECT%Y0 = 47.6375 +/ + +! -------------------------------------------------------------------- ! +! Define the depth to preprocess via DEPTH_NML namelist +! - for RECT and CURV grids - +! +! * if no obstruction subgrid, need to set &MISC FLAGTR = 0 +! +! * The depth value must have negative values under the mean sea level +! +! * value <= value_read * scale_fac +! +! * IDLA : Layout indicator : +! 1 : Read line-by-line bottom to top. (default) +! 2 : Like 1, single read statement. +! 3 : Read line-by-line top to bottom. +! 4 : Like 3, single read statement. +! * IDFM : format indicator : +! 1 : Free format. (default) +! 2 : Fixed format. +! 3 : Unformatted. +! * FORMAT : element format to read : +! '(....)' : auto detected (default) +! '(f10.6)' : float type +! +! * Example : +! IDF SF IDLA IDFM FORMAT FILENAME +! 50 0.001 1 1 '(....)' 'GLOB-30M.bot' +! +! * namelist must be terminated with / +! * definitions & defaults: +! DEPTH%SF = 1. ! scale factor +! DEPTH%FILENAME = 'unset' ! filename +! DEPTH%IDF = 50 ! file unit number +! DEPTH%IDLA = 1 ! layout indicator +! DEPTH%IDFM = 1 ! format indicator +! DEPTH%FORMAT = '(....)' ! formatted read format +! -------------------------------------------------------------------- ! +&DEPTH_NML + DEPTH%SF = -1. + DEPTH%FILENAME = '../input/iro_1p5k.bot' + DEPTH%FORMAT = '(20f10.2)' +/ + +! -------------------------------------------------------------------- ! +! Define the input boundary points via INBND_COUNT_NML and +! INBND_POINT_NML namelist +! - for RECT, CURV and UNST grids - +! +! * If no mask defined, INBOUND can be used +! +! * If the actual input data is not defined in the actual wave model run +! the initial conditions will be applied as constant boundary conditions. +! +! * The number of points is defined by INBND_COUNT +! +! * The points must start from index 1 to N +! +! * Each line contains: +! Discrete grid counters (IX,IY) of the active point and a +! connect flag. If this flag is true, and the present and previous +! point are on a grid line or diagonal, all intermediate points +! are also defined as boundary points. +! +! * Included point : +! grid points from segment data +! Defines as lines identifying points at which +! input boundary conditions are to be defined. +! +! * namelist must be terminated with / +! * definitions & defaults: +! INBND_COUNT%N_POINT = 0 ! number of segments +! +! INBND_POINT(I)%X_INDEX = 0 ! x index included point +! INBND_POINT(I)%Y_INDEX = 0 ! y index included point +! INBND_POINT(I)%CONNECT = F ! connect flag +! +! OR +! INBND_POINT(I) = 0 0 F ! included point +! -------------------------------------------------------------------- ! +&INBND_COUNT_NML + INBND_COUNT%N_POINT = 6 +/ + +&INBND_POINT_NML + INBND_POINT(1) = 103 86 F + INBND_POINT(2) = 103 119 T + INBND_POINT(3) = 1 119 T + INBND_POINT(4) = 1 1 T + INBND_POINT(5) = 103 1 T + INBND_POINT(6) = 103 11 T +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input_oasacm2/ww3_ounf.inp b/regtests/ww3_tp2.14/input_oasacm2/ww3_ounf.inp new file mode 100755 index 000000000..b8bbf80f6 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm2/ww3_ounf.inp @@ -0,0 +1,41 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid output post-processing $ +$--------------------------------------------------------------------- $ +$ First output time (yyyymmdd hhmmss), increment of output (s), +$ and number of output times. +$ + 20080310 000000 180 100 +$ +$ Output request flags identifying fields as in ww3_shel.inp. See that +$ file for a full documentation of field output options. Namelist type +$ selection is used here (for alternative F/T flags, see ww3_shel.inp). +$ + N + HS FP DIR DP CHA UST DPT CUR WND +$ +$--------------------------------------------------------------------- $ +$ netCDF version [3,4] +$ and variable type 4 [2 = SHORT, 3 = it depends , 4 = REAL] +$ swell partitions [0 1 2 3 4 5] +$ variables in same file [T] or not [F] +$ + 3 4 + 0 + T +$ +$ -------------------------------------------------------------------- $ +$ File prefix +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +$ IX and IY ranges [regular:IX NX IY NY DX DY, unstructured:IP NP DP DP] +$ +ww3. +6 +1 10000 1 10000 +$ +$ For each field and time a new file is generated with the file name +$ ww3.date_xxx.nc , where date is a conventional time indicator with S3 +$ characters, and xxx is a field identifier. +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasacm2/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasacm2/ww3_ounf.nml new file mode 100644 index 000000000..fc0386ff8 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm2/ww3_ounf.nml @@ -0,0 +1,60 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_ounf.nml - Grid output post-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the output fields to postprocess via FIELD_NML namelist +! +! * the detailed list of field names FIELD%LIST is given in ww3_shel.nml +! DPT CUR WND AST WLV ICE IBG D50 IC1 IC5 +! HS LM T02 T0M1 T01 FP DIR SPR DP HIG +! EF TH1M STH1M TH2M STH2M WN +! PHS PTP PLP PDIR PSPR PWS PDP PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR +! UST CHA CGE FAW TAW TWA WCC WCF WCH WCM FWS +! SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC +! ABR UBR BED FBB TBB +! MSS MSC WL02 AXT AYT AXY +! DTD FC CFX CFD CFK +! U1 U2 +! +! * namelist must be terminated with / +! * definitions & defaults: +! FIELD%TIMESTART = '19000101 000000' ! Stop date for the output field +! FIELD%TIMESTRIDE = '0' ! Time stride for the output field +! FIELD%TIMESTOP = '29001231 000000' ! Stop date for the output field +! FIELD%TIMECOUNT = '1000000000' ! Number of time steps +! FIELD%TIMESPLIT = 6 ! [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +! FIELD%LIST = 'unset' ! List of output fields +! FIELD%PARTITION = '0 1 2 3' ! List of wave partitions ['0 1 2 3 4 5'] +! FIELD%SAMEFILE = T ! All the variables in the same file [T|F] +! FIELD%TYPE = 3 ! [2 = SHORT, 3 = it depends , 4 = REAL] +! -------------------------------------------------------------------- ! +&FIELD_NML + FIELD%TIMESTART = '20080310 000000' + FIELD%TIMESTRIDE = '180' + FIELD%TIMECOUNT = '100' + FIELD%LIST = 'HS FP DIR DP CHA UST DPT CUR WND' + FIELD%PARTITION = '0' + FIELD%TYPE = 4 +/ + +! -------------------------------------------------------------------- ! +! Define the content of the output file via FILE_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%PREFIX = 'ww3.' ! Prefix for output file name +! FILE%NETCDF = 3 ! Netcdf version [3|4] +! FILE%IX0 = 1 ! First X-axis or node index +! FILE%IXN = 1000000000 ! Last X-axis or node index +! FILE%IY0 = 1 ! First Y-axis index +! FILE%IYN = 1000000000 ! Last Y-axis index +! -------------------------------------------------------------------- ! +&FILE_NML + FILE%IXN = 10000 + FILE%IYN = 10000 +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM2.inp b/regtests/ww3_tp2.14/input_oasacm2/ww3_shel.inp similarity index 100% rename from regtests/ww3_tp2.14/input/ww3_shel_OASACM2.inp rename to regtests/ww3_tp2.14/input_oasacm2/ww3_shel.inp diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM2.nml b/regtests/ww3_tp2.14/input_oasacm2/ww3_shel.nml similarity index 95% rename from regtests/ww3_tp2.14/input/ww3_shel_OASACM2.nml rename to regtests/ww3_tp2.14/input_oasacm2/ww3_shel.nml index 0e05a1a9d..3ee373343 100644 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASACM2.nml +++ b/regtests/ww3_tp2.14/input_oasacm2/ww3_shel.nml @@ -44,6 +44,8 @@ ! INPUT%FORCING%WATER_LEVELS = 'F' ! INPUT%FORCING%CURRENTS = 'F' ! INPUT%FORCING%WINDS = 'F' +! INPUT%FORCING%ATM_MOMENTUM = 'F' +! INPUT%FORCING%AIR_DENSITY = 'F' ! INPUT%FORCING%ICE_CONC = 'F' ! INPUT%FORCING%ICE_PARAM1 = 'F' ! INPUT%FORCING%ICE_PARAM2 = 'F' @@ -94,9 +96,11 @@ ! T T 1 5 WLV WLV Water levels. ! T T 1 6 ICE ICE Ice concentration. ! T T 1 7 IBG IBG Iceberg-induced damping. -! T T 1 8 D50 D50 Median sediment grain size. -! T T 1 9 IC1 IC1 Ice thickness. -! T T 1 10 IC5 IC5 Ice flow diameter. +! T T 1 8 TAUA TAU Atm. momentum. +! T T 1 9 RHOAIR RHO Air density. +! T T 1 10 D50 D50 Median sediment grain size. +! T T 1 11 IC1 IC1 Ice thickness. +! T T 1 12 IC5 IC5 Ice flow diameter. ! ------------------------------------------------- ! 2 Standard mean wave Parameters ! ------------------------------------------------- @@ -117,6 +121,7 @@ ! T T 2 15 HMAXD SDMH St Dev of MXC (STE) ! T T 2 16 HCMAXD SDMHC St Dev of MXHC (STE) ! F T 2 17 WBT WBT Domiant wave breaking probability bT +! F F 2 18 FP0 TP Peak period (from peak freq) ! ------------------------------------------------- ! 3 Spectral Parameters (first 5) ! ------------------------------------------------- @@ -174,6 +179,7 @@ ! F F 6 9 P2SMS P2L Micro seism source term ! F F 6 10 TAUICE TWI Wave to sea ice stress ! F F 6 11 PHICE FIC Wave to sea ice energy flux +! F F 6 12 USSP USP Partitioned surface Stokes drift ! ------------------------------------------------- ! 7 Wave-bottom layer ! ------------------------------------------------- @@ -219,9 +225,14 @@ ! - Ice model : IC5 TWI ! - Received fields by ww3: ! - Ocean model : SSH CUR -! - Atmospheric model : WND +! - Atmospheric model : WND TAU RHO ! - Ice model : ICE IC1 IC5 ! +! * Coupling flag (T) or (F) at T+0 (extra fields in the restart needed) +! +! * extra fields to be written to the restart: +! - The list includes all fields sent by coupling exchange only +! ! * namelist must be terminated with / ! * definitions & defaults: ! TYPE%FIELD%LIST = 'unset' @@ -236,6 +247,8 @@ ! TYPE%PARTITION%FORMAT = T ! TYPE%COUPLING%SENT = 'unset' ! TYPE%COUPLING%RECEIVED = 'unset' +! TYPE%COUPLING%COUPLET0 = F +! TYPE%RESTART%EXTRA = 'unset' ! ! -------------------------------------------------------------------- ! &OUTPUT_TYPE_NML diff --git a/regtests/ww3_tp2.14/input_oasacm2/ww3_strt.inp b/regtests/ww3_tp2.14/input_oasacm2/ww3_strt.inp new file mode 100755 index 000000000..948c42911 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm2/ww3_strt.inp @@ -0,0 +1,72 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Initial conditions input file $ +$--------------------------------------------------------------------- $ +$ type of initial field ITYPE . +$ + 1 +$ +$ ITYPE = 1 ---------------------------------------------------------- $ +$ Gaussian in frequency and space, cos type in direction. +$ - fp and spread (Hz), mean direction (degr., oceanographic +$ convention) and cosine power, Xm and spread (degr. or m) Ym and +$ spread (degr. or m), Hmax (m) (Example for lon-lat grid in degr.). +$ +$ 0.10 0.01 270. 2 1. 0.5 1. 0.5 2.5 + 0.10 0.01 270. 2 0. 1000. 1. 1000. 2.5 +$ 0.10 0.01 270. 2 0. 1000. 1. 1000. 0.01 +$ 0.10 0.01 270. 2 0. 1000. 1. 1000. 0. +$ +$ ITYPE = 2 ---------------------------------------------------------- $ +$ JONSWAP spectrum with Hasselmann et al. (1980) direct. distribution. +$ - alfa, peak freq. (Hz), mean direction (degr., oceanographical +$ convention), gamma, sigA, sigB, Xm and spread (degr. or m) Ym and +$ spread (degr. or m) (Example for lon-lat grid in degr.). +$ alfa, sigA, sigB give default values if less than or equal to 0. +$ +$ 0.0081 0.1 270. 1.0 0. 0. 1. 100. 1. 100. +$ +$ ITYPE = 3 ---------------------------------------------------------- $ +$ Fetch-limited JONSWAP +$ - No additional data, the local spectrum is calculated using the +$ local wind speed and direction, using the spatial grid size as +$ fetch, and assuring that the spectrum is within the discrete +$ frequency range. +$ +$ ITYPE = 4 ---------------------------------------------------------- $ +$ User-defined spectrum +$ - Scale factor., defaults to 1 if less than or equal 0. +$ - Spectrum F(f,theta) (single read statement) +$ +$ -0.1 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 1 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 1 2 3 2 1 1 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 1 3 9 7 5 3 2 1 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 1 3 4 3 2 1 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ ITYPE = 5 ---------------------------------------------------------- $ +$ Starting from calm conditions. +$ - No additional data. +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasacm3/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasacm3/namelists_IROISE.nml new file mode 100644 index 000000000..8b5707b65 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm3/namelists_IROISE.nml @@ -0,0 +1 @@ +END OF NAMELISTS diff --git a/regtests/ww3_tp2.14/input/switch_OASACM3 b/regtests/ww3_tp2.14/input_oasacm3/switch_OASACM3 similarity index 100% rename from regtests/ww3_tp2.14/input/switch_OASACM3 rename to regtests/ww3_tp2.14/input_oasacm3/switch_OASACM3 diff --git a/regtests/ww3_tp2.14/input_oasacm3/ww3_grid.inp b/regtests/ww3_tp2.14/input_oasacm3/ww3_grid.inp new file mode 100755 index 000000000..e367379b4 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm3/ww3_grid.inp @@ -0,0 +1,276 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid preprocessor input file $ +$ -------------------------------------------------------------------- $ +$ Grid name (C*30, in quotes) +$ + 'IROISE 1.5KM' +$ +$ Frequency increment factor and first frequency (Hz) ---------------- $ +$ number of frequencies (wavenumbers) and directions +$ +1.1 0.0373 32 24 0. +$ +$ Set model flags ---------------------------------------------------- $ +$ - FLDRY Dry run (input/output only, no calculation). +$ - FLCX, FLCY Activate X and Y component of propagation. +$ - FLCTH, FLCK Activate direction and wavenumber shifts. +$ - FLSOU Activate source terms. +$ + F T T T T T +$ +$ Set time steps ----------------------------------------------------- $ +$ - Time step information (this information is always read) +$ maximum global time step, maximum CFL time step for x-y and +$ k-theta, minimum source term time step (all in seconds). +$ + 180. 45. 45. 10. +$ +$ Start of namelist input section ------------------------------------ $ +$ Starting with WAVEWATCH III version 2.00, the tunable parameters +$ for source terms, propagation schemes, and numerics are read using +$ namelists. Any namelist found in the folowing sections up to the +$ end-of-section identifier string (see below) is temporarily written +$ to ww3_grid.scratch, and read from there if necessary. Namelists +$ not needed for the given switch settings will be skipped +$ automatically, and the order of the namelists is immaterial. +$ As an example, namelist input to change SWELLF and ZWND in the +$ Tolman and Chalikov input would be +$ +$ &SIN2 SWELLF = 0.1, ZWND = 15. / +$ +$ Define constants in source terms ----------------------------------- $ +$ +$ Input - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SIN1 +$ CINP : Proportionality constant. +$ &SIN1 CINP= 0.25 / +$ Tolman and Chalikov : Namelist SIN2 +$ ZWND : Height of wind (m). +$ SWELLF : swell factor in (2.48). +$ STABSH, STABOF, CNEG, CPOS, FNEG : +$ c0, ST0, c1, c2 and f1 in . (2.63) +$ through (2.65) for definition of +$ effective wind speed (!/STAB2). +$ +$ Nonlinear interactions - - - - - - - - - - - - - - - - - - - - - - - +$ Discrete I.A. : Namelist SNL1 +$ LAMBDA : Lambda in source term. +$ NLPROP : C in sourc term. NOTE : default +$ value depends on other source +$ terms selected. +$ KDCONV : Factor before kd in Eq. (2.24). +$ KDMIN, SNLCS1, SNLCS2, SNLCS3 : +$ Minimum kd, and constants c1-3 +$ in depth scaling function. +$ Exact interactions : Namelist SNL2 +$ IQTYPE : Type of depth treatment +$ 1 : Deep water +$ 2 : Deep water / WAM scaling +$ 3 : Shallow water +$ TAILNL : Parametric tail power. +$ NDEPTH : Number of depths in for which +$ integration space is established. +$ Used for IQTYPE = 3 only +$ Namelist ANL2 +$ DEPTHS : Array with depths for NDEPTH = 3 +$ +$ Dissipation - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SDS1 +$ CDIS, APM : As in source term. +$ +$ Tolman and Chalikov : Namelist SDS2 +$ SDSA0, SDSA1, SDSA2, SDSB0, SDSB1, PHIMIN : +$ Constants a0, a1, a2, b0, b1 and +$ PHImin. +$ +$ Bottom friction - - - - - - - - - - - - - - - - - - - - - - - - - - +$ JONSWAP : Namelist SBT1 +$ GAMMA : As it says. +$ +$ Propagation schemes ------------------------------------------------ $ +$ First order : Namelist PRO1 +$ CFLTM : Maximum CFL number for refraction. +$ +$ UQ with diffusion : Namelist PRO2 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ DTIME : Swell age (s) in garden sprinkler +$ correction. If 0., all diffusion +$ switched off. If small non-zero +$ (DEFAULT !!!) only wave growth +$ diffusion. +$ LATMIN : Maximum latitude used in calc. of +$ strength of diffusion for prop. +$ +$ UQ with averaging : Namelist PRO3 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ WDTHCG : Tuning factor propag. direction. +$ WDTHTH : Tuning factor normal direction. +$ +$ UQ with divergence : Namelist PRO4 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ QTFAC : Tuning factor Eq. (3.41). +$ RSFAC : Tuning factor Eq. (3.42). +$ RNFAC : Tuning factor Eq. (3.43). +$ +$ Miscellaneous ------------------------------------------------------ $ +$ Misc. parameters : Namelist MISC +$ CICE0 : Ice concentration cut-off. +$ CICEN : Ice concentration cut-off. +$ XSEED : Xseed in seeding alg. (!/SEED). +$ FLAGTR : Indicating presence and type of +$ subgrid information : +$ 0 : No subgrid information. +$ 1 : Transparancies at cell boun- +$ daries between grid points. +$ 2 : Transp. at cell centers. +$ 3 : Like 1 with cont. ice. +$ 4 : Like 2 with cont. ice. +$ XP, XR, XFILT +$ Xp, Xr and Xf for the dynamic +$ integration scheme. +$ +$ In the 'Out of the box' test setup we run with sub-grid obstacles +$ and with continuous ice treatment. +$ +$ &MISC CICE0 = 0.25, CICEN = 0.75, FLAGTR = 4 / +$ +$ Mandatory string to identify end of namelist input section. +$ +END OF NAMELISTS +$ +$ Define grid -------------------------------------------------------- $ +$ Four records containing : +$ 1 NX, NY. As the outer grid lines are always defined as land +$ points, the minimum size is 3x3. +$ 2 Grid increments SX, SY (degr.or m) and scaling (division) factor. +$ If NX*SX = 360., latitudinal closure is applied. +$ 3 Coordinates of (1,1) (degr.) and scaling (division) factor. +$ 4 Limiting bottom depth (m) to discriminate between land and sea +$ points, minimum water depth (m) as allowed in model, unit number +$ of file with bottom depths, scale factor for bottom depths (mult.), +$ IDLA, IDFM, format for formatted read, FROM and filename. +$ IDLA : Layout indicator : +$ 1 : Read line-by-line bottom to top. +$ 2 : Like 1, single read statement. +$ 3 : Read line-by-line top to bottom. +$ 4 : Like 3, single read statement. +$ IDFM : format indicator : +$ 1 : Free format. +$ 2 : Fixed format with above format descriptor. +$ 3 : Unformatted. +$ FROM : file type parameter +$ 'UNIT' : open file by unit number only. +$ 'NAME' : open file by name and assign to unit. +$ +$ Example for longitude-latitude grid (switch !/LLG), for Cartesian +$ grid the unit is meters (NOT km). +$ + 'RECT' T 'NONE' + 103 119 + 0.019 0.0125 1. + -6.119 47.6375 1. + 0.0 1.0 20 -1. 1 1 '(20f10.2)' 'NAME' '../input/iro_1p5k.bot' +$ +$ If the above unit number equals 10, the bottom data is read from +$ this file and follows below (no intermediate comment lines allowed). +$ +$ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +$ +$ If sub-grid information is avalaible as indicated by FLAGTR above, +$ additional input to define this is needed below. In such cases a +$ field of fractional obstructions at or between grid points needs to +$ be supplied. First the location and format of the data is defined +$ by (as above) : +$ - Unit number of file (can be 10, and/or identical to bottem depth +$ unit), scale factor for fractional obstruction, IDLA, IDFM, +$ format for formatted read, FROM and filename +$ +$ 10 0.2 3 1 '(....)' 'NAME' 'obstr.inp' +$ +$ *** NOTE if this unit number is the same as the previous bottom +$ depth unit number, it is assumed that this is the same file +$ without further checks. *** +$ +$ If the above unit number equals 10, the bottom data is read from +$ this file and follows below (no intermediate comment lines allowed, +$ except between the two fields). +$ +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 4 0 0 0 0 0 +$ 0 0 0 0 0 0 4 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 5 5 5 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ *** NOTE size of fields is always NX * NY *** +$ + 10 3 1 '(....)' 'PART' 'mapsta.inp' +$ *** NOTE size of fields is always NX * NY *** +$ +$ Input boundary points ---------------------------------------------- $ +$ An unlimited number of lines identifying points at which input +$ boundary conditions are to be defined. If the actual input data is +$ not defined in the actual wave model run, the initial conditions +$ will be applied as constant boundary conditions. Each line contains: +$ Discrete grid counters (IX,IY) of the active point and a +$ connect flag. If this flag is true, and the present and previous +$ point are on a grid line or diagonal, all intermediate points +$ are also defined as boundary points. +$ + 103 86 F + 103 119 T + 1 119 T + 1 1 T + 103 1 T + 103 11 T +$ +$ Close list by defining point (0,0) (mandatory) +$ + 0 0 F +$ Excluded grid points from segment data ( FROM != PART ) +$ First defined as lines, identical to the definition of the input +$ boundary points, and closed the same way. +$ + 0 0 F +$ +$ Second, define a point in a closed body of sea points to remove +$ the entire body os sea points. Also close by point (0,0) +$ + 0 0 +$ +$ Output boundary points --------------------------------------------- $ +$ Output boundary points are defined as a number of straight lines, +$ defined by its starting point (X0,Y0), increments (DX,DY) and number +$ of points. A negative number of points starts a new output file. +$ Note that this data is only generated if requested by the actual +$ program. Example again for spherical grid in degrees. +$ +$ Close list by defining line with 0 points (mandatory) +$ + 0. 0. 0. 0. 0 +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasacm3/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasacm3/ww3_grid.nml new file mode 100644 index 000000000..fcffb0601 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm3/ww3_grid.nml @@ -0,0 +1,276 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III - ww3_grid.nml - Grid pre-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the spectrum parameterization via SPECTRUM_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! SPECTRUM%XFR = 0. ! frequency increment +! SPECTRUM%FREQ1 = 0. ! first frequency (Hz) +! SPECTRUM%NK = 0 ! number of frequencies (wavenumbers) +! SPECTRUM%NTH = 0 ! number of direction bins +! SPECTRUM%THOFF = 0. ! relative offset of first direction [-0.5,0.5] +! -------------------------------------------------------------------- ! +&SPECTRUM_NML + SPECTRUM%XFR = 1.1 + SPECTRUM%FREQ1 = 0.0373 + SPECTRUM%NK = 32 + SPECTRUM%NTH = 24 +/ + +! -------------------------------------------------------------------- ! +! Define the run parameterization via RUN_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! RUN%FLDRY = F ! dry run (I/O only, no calculation) +! RUN%FLCX = F ! x-component of propagation +! RUN%FLCY = F ! y-component of propagation +! RUN%FLCTH = F ! direction shift +! RUN%FLCK = F ! wavenumber shift +! RUN%FLSOU = F ! source terms +! -------------------------------------------------------------------- ! +&RUN_NML + RUN%FLCX = T + RUN%FLCY = T + RUN%FLCTH = T + RUN%FLCK = T + RUN%FLSOU = T +/ + +! -------------------------------------------------------------------- ! +! Define the timesteps parameterization via TIMESTEPS_NML namelist +! +! * It is highly recommended to set up time steps which are multiple +! between them. +! +! * The first time step to calculate is the maximum CFL time step +! which depend on the lowest frequency FREQ1 previously set up and the +! lowest spatial grid resolution in meters DXY. +! reminder : 1 degree=60minutes // 1minute=1mile // 1mile=1.852km +! The formula for the CFL time is : +! Tcfl = DXY / (G / (FREQ1*4*Pi) ) with the constants Pi=3,14 and G=9.8m/s²; +! DTXY ~= 90% Tcfl +! DTMAX ~= 3 * DTXY (maximum global time step limit) +! +! * The refraction time step depends on how strong can be the current velocities +! on your grid : +! DTKTH ~= DTMAX / 2 ! in case of no or light current velocities +! DTKTH ~= DTMAX / 10 ! in case of strong current velocities +! +! * The source terms time step is usually defined between 5s and 60s. +! A common value is 10s. +! DTMIN ~= 10 +! +! * namelist must be terminated with / +! * definitions & defaults: +! TIMESTEPS%DTMAX = 0. ! maximum global time step (s) +! TIMESTEPS%DTXY = 0. ! maximum CFL time step for x-y (s) +! TIMESTEPS%DTKTH = 0. ! maximum CFL time step for k-th (s) +! TIMESTEPS%DTMIN = 0. ! minimum source term time step (s) +! -------------------------------------------------------------------- ! +&TIMESTEPS_NML + TIMESTEPS%DTMAX = 180. + TIMESTEPS%DTXY = 45. + TIMESTEPS%DTKTH = 45. + TIMESTEPS%DTMIN = 10. +/ + +! -------------------------------------------------------------------- ! +! Define the grid to preprocess via GRID_NML namelist +! +! * the tunable parameters for source terms, propagation schemes, and +! numerics are read using namelists. +! * Any namelist found in the folowing sections is temporarily written +! to param.scratch, and read from there if necessary. +! * The order of the namelists is immaterial. +! * Namelists not needed for the given switch settings will be skipped +! automatically +! +! * grid type can be : +! 'RECT' : rectilinear +! 'CURV' : curvilinear +! 'UNST' : unstructured (triangle-based) +! +! * coordinate system can be : +! 'SPHE' : Spherical (degrees) +! 'CART' : Cartesian (meters) +! +! * grid closure can only be applied in spherical coordinates +! +! * grid closure can be : +! 'NONE' : No closure is applied +! 'SMPL' : Simple grid closure. Grid is periodic in the +! : i-index and wraps at i=NX+1. In other words, +! : (NX+1,J) => (1,J). A grid with simple closure +! : may be rectilinear or curvilinear. +! 'TRPL' : Tripole grid closure : Grid is periodic in the +! : i-index and wraps at i=NX+1 and has closure at +! : j=NY+1. In other words, (NX+1,J<=NY) => (1,J) +! : and (I,NY+1) => (NX-I+1,NY). Tripole +! : grid closure requires that NX be even. A grid +! : with tripole closure must be curvilinear. +! +! * The coastline limit depth is the value which distinguish the sea +! points to the land points. All the points with depth values (ZBIN) +! greater than this limit (ZLIM) will be considered as excluded points +! and will never be wet points, even if the water level grows over. +! It can only overwrite the status of a sea point to a land point. +! The value must have a negative value under the mean sea level +! +! * The minimum water depth allowed to compute the model is the absolute +! depth value (DMIN) used in the model if the input depth is lower to +! avoid the model to blow up. +! +! * namelist must be terminated with / +! * definitions & defaults: +! GRID%NAME = 'unset' ! grid name (30 char) +! GRID%NML = 'namelists.nml' ! namelists filename +! GRID%TYPE = 'unset' ! grid type +! GRID%COORD = 'unset' ! coordinate system +! GRID%CLOS = 'unset' ! grid closure +! +! GRID%ZLIM = 0. ! coastline limit depth (m) +! GRID%DMIN = 0. ! abs. minimum water depth (m) +! -------------------------------------------------------------------- ! +&GRID_NML + GRID%NAME = 'IROISE 1.5KM' + GRID%NML = '../input_oasacm3/namelists_IROISE.nml' + GRID%TYPE = 'RECT' + GRID%COORD = 'SPHE' + GRID%CLOS = 'NONE' + GRID%ZLIM = 0.0 + GRID%DMIN = 1.0 +/ + +! -------------------------------------------------------------------- ! +! Define the rectilinear grid type via RECT_NML namelist +! - only for RECT grids - +! +! * The minimum grid size is 3x3. +! +! * If the grid increments SX and SY are given in minutes of arc, the scaling +! factor SF must be set to 60. to provide an increment factor in degree. +! +! * If CSTRG='SMPL', then SX is forced to 360/NX. +! +! * value <= value_read / scale_fac +! +! * namelist must be terminated with / +! * definitions & defaults: +! RECT%NX = 0 ! number of points along x-axis +! RECT%NY = 0 ! number of points along y-axis +! +! RECT%SX = 0. ! grid increment along x-axis +! RECT%SY = 0. ! grid increment along y-axis +! RECT%SF = 1. ! scaling division factor for x-y axis +! +! RECT%X0 = 0. ! x-coordinate of lower-left corner (deg) +! RECT%Y0 = 0. ! y-coordinate of lower-left corner (deg) +! RECT%SF0 = 1. ! scaling division factor for x0,y0 coord +! -------------------------------------------------------------------- ! +&RECT_NML + RECT%NX = 103 + RECT%NY = 119 + RECT%SX = 0.019 + RECT%SY = 0.0125 + RECT%X0 = -6.119 + RECT%Y0 = 47.6375 +/ + +! -------------------------------------------------------------------- ! +! Define the depth to preprocess via DEPTH_NML namelist +! - for RECT and CURV grids - +! +! * if no obstruction subgrid, need to set &MISC FLAGTR = 0 +! +! * The depth value must have negative values under the mean sea level +! +! * value <= value_read * scale_fac +! +! * IDLA : Layout indicator : +! 1 : Read line-by-line bottom to top. (default) +! 2 : Like 1, single read statement. +! 3 : Read line-by-line top to bottom. +! 4 : Like 3, single read statement. +! * IDFM : format indicator : +! 1 : Free format. (default) +! 2 : Fixed format. +! 3 : Unformatted. +! * FORMAT : element format to read : +! '(....)' : auto detected (default) +! '(f10.6)' : float type +! +! * Example : +! IDF SF IDLA IDFM FORMAT FILENAME +! 50 0.001 1 1 '(....)' 'GLOB-30M.bot' +! +! * namelist must be terminated with / +! * definitions & defaults: +! DEPTH%SF = 1. ! scale factor +! DEPTH%FILENAME = 'unset' ! filename +! DEPTH%IDF = 50 ! file unit number +! DEPTH%IDLA = 1 ! layout indicator +! DEPTH%IDFM = 1 ! format indicator +! DEPTH%FORMAT = '(....)' ! formatted read format +! -------------------------------------------------------------------- ! +&DEPTH_NML + DEPTH%SF = -1. + DEPTH%FILENAME = '../input/iro_1p5k.bot' + DEPTH%FORMAT = '(20f10.2)' +/ + +! -------------------------------------------------------------------- ! +! Define the input boundary points via INBND_COUNT_NML and +! INBND_POINT_NML namelist +! - for RECT, CURV and UNST grids - +! +! * If no mask defined, INBOUND can be used +! +! * If the actual input data is not defined in the actual wave model run +! the initial conditions will be applied as constant boundary conditions. +! +! * The number of points is defined by INBND_COUNT +! +! * The points must start from index 1 to N +! +! * Each line contains: +! Discrete grid counters (IX,IY) of the active point and a +! connect flag. If this flag is true, and the present and previous +! point are on a grid line or diagonal, all intermediate points +! are also defined as boundary points. +! +! * Included point : +! grid points from segment data +! Defines as lines identifying points at which +! input boundary conditions are to be defined. +! +! * namelist must be terminated with / +! * definitions & defaults: +! INBND_COUNT%N_POINT = 0 ! number of segments +! +! INBND_POINT(I)%X_INDEX = 0 ! x index included point +! INBND_POINT(I)%Y_INDEX = 0 ! y index included point +! INBND_POINT(I)%CONNECT = F ! connect flag +! +! OR +! INBND_POINT(I) = 0 0 F ! included point +! -------------------------------------------------------------------- ! +&INBND_COUNT_NML + INBND_COUNT%N_POINT = 6 +/ + +&INBND_POINT_NML + INBND_POINT(1) = 103 86 F + INBND_POINT(2) = 103 119 T + INBND_POINT(3) = 1 119 T + INBND_POINT(4) = 1 1 T + INBND_POINT(5) = 103 1 T + INBND_POINT(6) = 103 11 T +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input_oasacm3/ww3_ounf.inp b/regtests/ww3_tp2.14/input_oasacm3/ww3_ounf.inp new file mode 100755 index 000000000..b8bbf80f6 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm3/ww3_ounf.inp @@ -0,0 +1,41 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid output post-processing $ +$--------------------------------------------------------------------- $ +$ First output time (yyyymmdd hhmmss), increment of output (s), +$ and number of output times. +$ + 20080310 000000 180 100 +$ +$ Output request flags identifying fields as in ww3_shel.inp. See that +$ file for a full documentation of field output options. Namelist type +$ selection is used here (for alternative F/T flags, see ww3_shel.inp). +$ + N + HS FP DIR DP CHA UST DPT CUR WND +$ +$--------------------------------------------------------------------- $ +$ netCDF version [3,4] +$ and variable type 4 [2 = SHORT, 3 = it depends , 4 = REAL] +$ swell partitions [0 1 2 3 4 5] +$ variables in same file [T] or not [F] +$ + 3 4 + 0 + T +$ +$ -------------------------------------------------------------------- $ +$ File prefix +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +$ IX and IY ranges [regular:IX NX IY NY DX DY, unstructured:IP NP DP DP] +$ +ww3. +6 +1 10000 1 10000 +$ +$ For each field and time a new file is generated with the file name +$ ww3.date_xxx.nc , where date is a conventional time indicator with S3 +$ characters, and xxx is a field identifier. +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasacm3/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasacm3/ww3_ounf.nml new file mode 100644 index 000000000..fc0386ff8 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm3/ww3_ounf.nml @@ -0,0 +1,60 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_ounf.nml - Grid output post-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the output fields to postprocess via FIELD_NML namelist +! +! * the detailed list of field names FIELD%LIST is given in ww3_shel.nml +! DPT CUR WND AST WLV ICE IBG D50 IC1 IC5 +! HS LM T02 T0M1 T01 FP DIR SPR DP HIG +! EF TH1M STH1M TH2M STH2M WN +! PHS PTP PLP PDIR PSPR PWS PDP PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR +! UST CHA CGE FAW TAW TWA WCC WCF WCH WCM FWS +! SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC +! ABR UBR BED FBB TBB +! MSS MSC WL02 AXT AYT AXY +! DTD FC CFX CFD CFK +! U1 U2 +! +! * namelist must be terminated with / +! * definitions & defaults: +! FIELD%TIMESTART = '19000101 000000' ! Stop date for the output field +! FIELD%TIMESTRIDE = '0' ! Time stride for the output field +! FIELD%TIMESTOP = '29001231 000000' ! Stop date for the output field +! FIELD%TIMECOUNT = '1000000000' ! Number of time steps +! FIELD%TIMESPLIT = 6 ! [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +! FIELD%LIST = 'unset' ! List of output fields +! FIELD%PARTITION = '0 1 2 3' ! List of wave partitions ['0 1 2 3 4 5'] +! FIELD%SAMEFILE = T ! All the variables in the same file [T|F] +! FIELD%TYPE = 3 ! [2 = SHORT, 3 = it depends , 4 = REAL] +! -------------------------------------------------------------------- ! +&FIELD_NML + FIELD%TIMESTART = '20080310 000000' + FIELD%TIMESTRIDE = '180' + FIELD%TIMECOUNT = '100' + FIELD%LIST = 'HS FP DIR DP CHA UST DPT CUR WND' + FIELD%PARTITION = '0' + FIELD%TYPE = 4 +/ + +! -------------------------------------------------------------------- ! +! Define the content of the output file via FILE_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%PREFIX = 'ww3.' ! Prefix for output file name +! FILE%NETCDF = 3 ! Netcdf version [3|4] +! FILE%IX0 = 1 ! First X-axis or node index +! FILE%IXN = 1000000000 ! Last X-axis or node index +! FILE%IY0 = 1 ! First Y-axis index +! FILE%IYN = 1000000000 ! Last Y-axis index +! -------------------------------------------------------------------- ! +&FILE_NML + FILE%IXN = 10000 + FILE%IYN = 10000 +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM3.inp b/regtests/ww3_tp2.14/input_oasacm3/ww3_shel.inp similarity index 100% rename from regtests/ww3_tp2.14/input/ww3_shel_OASACM3.inp rename to regtests/ww3_tp2.14/input_oasacm3/ww3_shel.inp diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM3.nml b/regtests/ww3_tp2.14/input_oasacm3/ww3_shel.nml similarity index 94% rename from regtests/ww3_tp2.14/input/ww3_shel_OASACM3.nml rename to regtests/ww3_tp2.14/input_oasacm3/ww3_shel.nml index fbd9fb30e..3f81e8666 100644 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASACM3.nml +++ b/regtests/ww3_tp2.14/input_oasacm3/ww3_shel.nml @@ -44,6 +44,8 @@ ! INPUT%FORCING%WATER_LEVELS = 'F' ! INPUT%FORCING%CURRENTS = 'F' ! INPUT%FORCING%WINDS = 'F' +! INPUT%FORCING%ATM_MOMENTUM = 'F' +! INPUT%FORCING%AIR_DENSITY = 'F' ! INPUT%FORCING%ICE_CONC = 'F' ! INPUT%FORCING%ICE_PARAM1 = 'F' ! INPUT%FORCING%ICE_PARAM2 = 'F' @@ -58,13 +60,12 @@ ! INPUT%ASSIM%SPEC2D = 'F' ! -------------------------------------------------------------------- ! &INPUT_NML - INPUT%FORCING%WINDS = 'F' / ! -------------------------------------------------------------------- ! ! Define the output types point parameters via OUTPUT_TYPE_NML namelist ! -! * the point file is a space separated values per line : lon lat 'name' +! * the point file is a space separated values per line : ! longitude latitude 'name' (C*40) ! ! * the full list of field names is : @@ -94,9 +95,11 @@ ! T T 1 5 WLV WLV Water levels. ! T T 1 6 ICE ICE Ice concentration. ! T T 1 7 IBG IBG Iceberg-induced damping. -! T T 1 8 D50 D50 Median sediment grain size. -! T T 1 9 IC1 IC1 Ice thickness. -! T T 1 10 IC5 IC5 Ice flow diameter. +! T T 1 8 TAUA TAU Atm. momentum. +! T T 1 9 RHOAIR RHO Air density. +! T T 1 10 D50 D50 Median sediment grain size. +! T T 1 11 IC1 IC1 Ice thickness. +! T T 1 12 IC5 IC5 Ice flow diameter. ! ------------------------------------------------- ! 2 Standard mean wave Parameters ! ------------------------------------------------- @@ -117,6 +120,7 @@ ! T T 2 15 HMAXD SDMH St Dev of MXC (STE) ! T T 2 16 HCMAXD SDMHC St Dev of MXHC (STE) ! F T 2 17 WBT WBT Domiant wave breaking probability bT +! F F 2 18 FP0 TP Peak period (from peak freq) ! ------------------------------------------------- ! 3 Spectral Parameters (first 5) ! ------------------------------------------------- @@ -174,6 +178,7 @@ ! F F 6 9 P2SMS P2L Micro seism source term ! F F 6 10 TAUICE TWI Wave to sea ice stress ! F F 6 11 PHICE FIC Wave to sea ice energy flux +! F F 6 12 USSP USP Partitioned surface Stokes drift ! ------------------------------------------------- ! 7 Wave-bottom layer ! ------------------------------------------------- @@ -219,9 +224,14 @@ ! - Ice model : IC5 TWI ! - Received fields by ww3: ! - Ocean model : SSH CUR -! - Atmospheric model : WND +! - Atmospheric model : WND TAU RHO ! - Ice model : ICE IC1 IC5 ! +! * Coupling flag (T) or (F) at T+0 (extra fields in the restart needed) +! +! * extra fields to be written to the restart: +! - The list includes all fields sent by coupling exchange only +! ! * namelist must be terminated with / ! * definitions & defaults: ! TYPE%FIELD%LIST = 'unset' @@ -236,6 +246,8 @@ ! TYPE%PARTITION%FORMAT = T ! TYPE%COUPLING%SENT = 'unset' ! TYPE%COUPLING%RECEIVED = 'unset' +! TYPE%COUPLING%COUPLET0 = F +! TYPE%RESTART%EXTRA = 'unset' ! ! -------------------------------------------------------------------- ! &OUTPUT_TYPE_NML diff --git a/regtests/ww3_tp2.14/input_oasacm3/ww3_strt.inp b/regtests/ww3_tp2.14/input_oasacm3/ww3_strt.inp new file mode 100755 index 000000000..948c42911 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm3/ww3_strt.inp @@ -0,0 +1,72 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Initial conditions input file $ +$--------------------------------------------------------------------- $ +$ type of initial field ITYPE . +$ + 1 +$ +$ ITYPE = 1 ---------------------------------------------------------- $ +$ Gaussian in frequency and space, cos type in direction. +$ - fp and spread (Hz), mean direction (degr., oceanographic +$ convention) and cosine power, Xm and spread (degr. or m) Ym and +$ spread (degr. or m), Hmax (m) (Example for lon-lat grid in degr.). +$ +$ 0.10 0.01 270. 2 1. 0.5 1. 0.5 2.5 + 0.10 0.01 270. 2 0. 1000. 1. 1000. 2.5 +$ 0.10 0.01 270. 2 0. 1000. 1. 1000. 0.01 +$ 0.10 0.01 270. 2 0. 1000. 1. 1000. 0. +$ +$ ITYPE = 2 ---------------------------------------------------------- $ +$ JONSWAP spectrum with Hasselmann et al. (1980) direct. distribution. +$ - alfa, peak freq. (Hz), mean direction (degr., oceanographical +$ convention), gamma, sigA, sigB, Xm and spread (degr. or m) Ym and +$ spread (degr. or m) (Example for lon-lat grid in degr.). +$ alfa, sigA, sigB give default values if less than or equal to 0. +$ +$ 0.0081 0.1 270. 1.0 0. 0. 1. 100. 1. 100. +$ +$ ITYPE = 3 ---------------------------------------------------------- $ +$ Fetch-limited JONSWAP +$ - No additional data, the local spectrum is calculated using the +$ local wind speed and direction, using the spatial grid size as +$ fetch, and assuring that the spectrum is within the discrete +$ frequency range. +$ +$ ITYPE = 4 ---------------------------------------------------------- $ +$ User-defined spectrum +$ - Scale factor., defaults to 1 if less than or equal 0. +$ - Spectrum F(f,theta) (single read statement) +$ +$ -0.1 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 1 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 1 2 3 2 1 1 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 1 3 9 7 5 3 2 1 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 1 3 4 3 2 1 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ ITYPE = 5 ---------------------------------------------------------- $ +$ Starting from calm conditions. +$ - No additional data. +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASACM4 b/regtests/ww3_tp2.14/input_oasacm4/TOYNAMELIST.nam similarity index 100% rename from regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASACM4 rename to regtests/ww3_tp2.14/input_oasacm4/TOYNAMELIST.nam diff --git a/regtests/ww3_tp2.14/input/namcouple.OASACM4 b/regtests/ww3_tp2.14/input_oasacm4/namcouple similarity index 100% rename from regtests/ww3_tp2.14/input/namcouple.OASACM4 rename to regtests/ww3_tp2.14/input_oasacm4/namcouple diff --git a/regtests/ww3_tp2.14/input_oasacm4/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasacm4/namelists_IROISE.nml new file mode 100644 index 000000000..8b5707b65 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm4/namelists_IROISE.nml @@ -0,0 +1 @@ +END OF NAMELISTS diff --git a/regtests/ww3_tp2.14/input_oasacm4/prep_env.sh b/regtests/ww3_tp2.14/input_oasacm4/prep_env.sh new file mode 100755 index 000000000..ee03d4033 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm4/prep_env.sh @@ -0,0 +1,101 @@ +#!/bin/bash -e + +if [ $# -ne 4 ] +then + echo "need four arguments:" + echo '$1 : path_i' + echo '$2 : path_w' + echo '$3 : complr' + echo '$4 : switch' + exit 1 +fi + +path_i=$1 +path_w=$2 +cmplr=$3 +swtstr=$4 + +echo '' +echo ' setup coupling environment' +export WWATCH3_DIR=`grep WWATCH3_DIR $WWATCH3_ENV | awk -F' ' '{print $2}' ` +export WWATCH3_CC=`grep WWATCH3_CC $WWATCH3_ENV | awk -F' ' '{print $2}' ` + + +echo ' copy oasis and toy in $path_w' +cp -r $path_i/../input/toy $path_w/ +cp -r $path_i/../input/oasis3-mct $path_w/ + + +echo ' Setup oasis cmplr file' +cd $path_w/oasis3-mct/util/make_dir +source $WWATCH3_DIR/bin/cmplr.env +# shortlist optl +alloptl=( $optl ) +for ioptl in $(seq 2 ${#alloptl[@]}); do + optls="${optls}${alloptl[$ioptl]} " +done +# shortlist optc +alloptc=( $optc ) +for ioptc in $(seq 3 ${#alloptc[@]}); do + optcs="${optcs}${alloptc[$ioptc]} " +done +# shorten comp_mpi +comp_mpi_exe="$(echo $comp_mpi | awk -F' ' '{print $1}')" +# sed cmplr.tmpl +sed -e "s::$path_w/oasis3-mct:" \ + -e "s::$path_w/work_oasis3-mct:" \ + -e "s//$optcs/" -e "s//$optls/" \ + -e "s//$comp_mpi/" -e "s//$comp_mpi_exe/" \ + -e "s//$WWATCH3_CC/" cmplr.tmpl > cmplr +echo " sed cmplr.tmpl => cmplr" +chmod 775 cmplr + + +echo ' setup oasis make.inc file' +sed -e "s::$path_w/oasis3-mct:" make.inc.tmpl > make.inc + + +echo ' compile oasis coupler' +make realclean -f TopMakefileOasis3 > $path_w/oasis_clean.out +make -f TopMakefileOasis3 > $path_w/oasis_make.out + + +echo ' setup toy Makefile' +cd $path_w/toy +sed -e "s::$path_w/oasis3-mct:" Makefile.tmpl > Makefile + + +echo ' compile toy model' +make clean > $path_w/toy_clean.out +make > $path_w/toy_make.out + + +echo ' copy oasis coupler inputs' +cp $path_i/namcouple $path_w/namcouple + + +echo ' copy toy model inputs' +if [ -f $path_w/toy/r-toy.nc.$swtstr ]; then + cp $path_w/toy/r-toy.nc.$swtstr $path_w/r-toy.nc +else + echo "WARNING: model input $path_w/toy/r-toy.nc.$swtstr does not exist" +fi + +cp $path_w/toy/grid_toy_model.nc $path_w/ +cp $path_w/toy/toy_coupled_field.nc.$swtstr $path_w/toy_coupled_field.nc +cp $path_w/toy/toy_model $path_w/ + +cp $path_i/TOYNAMELIST.nam $path_w/TOYNAMELIST.nam + + +echo ' copy ww3 model inputs' +cd $path_w +if [ -f $path_i/r-ww3.nc ]; then + cp $path_i/r-ww3.nc $path_w/r-ww3.nc +else + echo "WARNING: model input $path_i/toy/r-ww3.nc does not exist" +fi + + + +echo '' diff --git a/regtests/ww3_tp2.14/input/switch_OASACM4 b/regtests/ww3_tp2.14/input_oasacm4/switch_OASACM4 similarity index 100% rename from regtests/ww3_tp2.14/input/switch_OASACM4 rename to regtests/ww3_tp2.14/input_oasacm4/switch_OASACM4 diff --git a/regtests/ww3_tp2.14/input_oasacm4/ww3_grid.inp b/regtests/ww3_tp2.14/input_oasacm4/ww3_grid.inp new file mode 100755 index 000000000..e367379b4 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm4/ww3_grid.inp @@ -0,0 +1,276 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid preprocessor input file $ +$ -------------------------------------------------------------------- $ +$ Grid name (C*30, in quotes) +$ + 'IROISE 1.5KM' +$ +$ Frequency increment factor and first frequency (Hz) ---------------- $ +$ number of frequencies (wavenumbers) and directions +$ +1.1 0.0373 32 24 0. +$ +$ Set model flags ---------------------------------------------------- $ +$ - FLDRY Dry run (input/output only, no calculation). +$ - FLCX, FLCY Activate X and Y component of propagation. +$ - FLCTH, FLCK Activate direction and wavenumber shifts. +$ - FLSOU Activate source terms. +$ + F T T T T T +$ +$ Set time steps ----------------------------------------------------- $ +$ - Time step information (this information is always read) +$ maximum global time step, maximum CFL time step for x-y and +$ k-theta, minimum source term time step (all in seconds). +$ + 180. 45. 45. 10. +$ +$ Start of namelist input section ------------------------------------ $ +$ Starting with WAVEWATCH III version 2.00, the tunable parameters +$ for source terms, propagation schemes, and numerics are read using +$ namelists. Any namelist found in the folowing sections up to the +$ end-of-section identifier string (see below) is temporarily written +$ to ww3_grid.scratch, and read from there if necessary. Namelists +$ not needed for the given switch settings will be skipped +$ automatically, and the order of the namelists is immaterial. +$ As an example, namelist input to change SWELLF and ZWND in the +$ Tolman and Chalikov input would be +$ +$ &SIN2 SWELLF = 0.1, ZWND = 15. / +$ +$ Define constants in source terms ----------------------------------- $ +$ +$ Input - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SIN1 +$ CINP : Proportionality constant. +$ &SIN1 CINP= 0.25 / +$ Tolman and Chalikov : Namelist SIN2 +$ ZWND : Height of wind (m). +$ SWELLF : swell factor in (2.48). +$ STABSH, STABOF, CNEG, CPOS, FNEG : +$ c0, ST0, c1, c2 and f1 in . (2.63) +$ through (2.65) for definition of +$ effective wind speed (!/STAB2). +$ +$ Nonlinear interactions - - - - - - - - - - - - - - - - - - - - - - - +$ Discrete I.A. : Namelist SNL1 +$ LAMBDA : Lambda in source term. +$ NLPROP : C in sourc term. NOTE : default +$ value depends on other source +$ terms selected. +$ KDCONV : Factor before kd in Eq. (2.24). +$ KDMIN, SNLCS1, SNLCS2, SNLCS3 : +$ Minimum kd, and constants c1-3 +$ in depth scaling function. +$ Exact interactions : Namelist SNL2 +$ IQTYPE : Type of depth treatment +$ 1 : Deep water +$ 2 : Deep water / WAM scaling +$ 3 : Shallow water +$ TAILNL : Parametric tail power. +$ NDEPTH : Number of depths in for which +$ integration space is established. +$ Used for IQTYPE = 3 only +$ Namelist ANL2 +$ DEPTHS : Array with depths for NDEPTH = 3 +$ +$ Dissipation - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SDS1 +$ CDIS, APM : As in source term. +$ +$ Tolman and Chalikov : Namelist SDS2 +$ SDSA0, SDSA1, SDSA2, SDSB0, SDSB1, PHIMIN : +$ Constants a0, a1, a2, b0, b1 and +$ PHImin. +$ +$ Bottom friction - - - - - - - - - - - - - - - - - - - - - - - - - - +$ JONSWAP : Namelist SBT1 +$ GAMMA : As it says. +$ +$ Propagation schemes ------------------------------------------------ $ +$ First order : Namelist PRO1 +$ CFLTM : Maximum CFL number for refraction. +$ +$ UQ with diffusion : Namelist PRO2 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ DTIME : Swell age (s) in garden sprinkler +$ correction. If 0., all diffusion +$ switched off. If small non-zero +$ (DEFAULT !!!) only wave growth +$ diffusion. +$ LATMIN : Maximum latitude used in calc. of +$ strength of diffusion for prop. +$ +$ UQ with averaging : Namelist PRO3 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ WDTHCG : Tuning factor propag. direction. +$ WDTHTH : Tuning factor normal direction. +$ +$ UQ with divergence : Namelist PRO4 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ QTFAC : Tuning factor Eq. (3.41). +$ RSFAC : Tuning factor Eq. (3.42). +$ RNFAC : Tuning factor Eq. (3.43). +$ +$ Miscellaneous ------------------------------------------------------ $ +$ Misc. parameters : Namelist MISC +$ CICE0 : Ice concentration cut-off. +$ CICEN : Ice concentration cut-off. +$ XSEED : Xseed in seeding alg. (!/SEED). +$ FLAGTR : Indicating presence and type of +$ subgrid information : +$ 0 : No subgrid information. +$ 1 : Transparancies at cell boun- +$ daries between grid points. +$ 2 : Transp. at cell centers. +$ 3 : Like 1 with cont. ice. +$ 4 : Like 2 with cont. ice. +$ XP, XR, XFILT +$ Xp, Xr and Xf for the dynamic +$ integration scheme. +$ +$ In the 'Out of the box' test setup we run with sub-grid obstacles +$ and with continuous ice treatment. +$ +$ &MISC CICE0 = 0.25, CICEN = 0.75, FLAGTR = 4 / +$ +$ Mandatory string to identify end of namelist input section. +$ +END OF NAMELISTS +$ +$ Define grid -------------------------------------------------------- $ +$ Four records containing : +$ 1 NX, NY. As the outer grid lines are always defined as land +$ points, the minimum size is 3x3. +$ 2 Grid increments SX, SY (degr.or m) and scaling (division) factor. +$ If NX*SX = 360., latitudinal closure is applied. +$ 3 Coordinates of (1,1) (degr.) and scaling (division) factor. +$ 4 Limiting bottom depth (m) to discriminate between land and sea +$ points, minimum water depth (m) as allowed in model, unit number +$ of file with bottom depths, scale factor for bottom depths (mult.), +$ IDLA, IDFM, format for formatted read, FROM and filename. +$ IDLA : Layout indicator : +$ 1 : Read line-by-line bottom to top. +$ 2 : Like 1, single read statement. +$ 3 : Read line-by-line top to bottom. +$ 4 : Like 3, single read statement. +$ IDFM : format indicator : +$ 1 : Free format. +$ 2 : Fixed format with above format descriptor. +$ 3 : Unformatted. +$ FROM : file type parameter +$ 'UNIT' : open file by unit number only. +$ 'NAME' : open file by name and assign to unit. +$ +$ Example for longitude-latitude grid (switch !/LLG), for Cartesian +$ grid the unit is meters (NOT km). +$ + 'RECT' T 'NONE' + 103 119 + 0.019 0.0125 1. + -6.119 47.6375 1. + 0.0 1.0 20 -1. 1 1 '(20f10.2)' 'NAME' '../input/iro_1p5k.bot' +$ +$ If the above unit number equals 10, the bottom data is read from +$ this file and follows below (no intermediate comment lines allowed). +$ +$ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +$ +$ If sub-grid information is avalaible as indicated by FLAGTR above, +$ additional input to define this is needed below. In such cases a +$ field of fractional obstructions at or between grid points needs to +$ be supplied. First the location and format of the data is defined +$ by (as above) : +$ - Unit number of file (can be 10, and/or identical to bottem depth +$ unit), scale factor for fractional obstruction, IDLA, IDFM, +$ format for formatted read, FROM and filename +$ +$ 10 0.2 3 1 '(....)' 'NAME' 'obstr.inp' +$ +$ *** NOTE if this unit number is the same as the previous bottom +$ depth unit number, it is assumed that this is the same file +$ without further checks. *** +$ +$ If the above unit number equals 10, the bottom data is read from +$ this file and follows below (no intermediate comment lines allowed, +$ except between the two fields). +$ +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 4 0 0 0 0 0 +$ 0 0 0 0 0 0 4 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 5 5 5 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ *** NOTE size of fields is always NX * NY *** +$ + 10 3 1 '(....)' 'PART' 'mapsta.inp' +$ *** NOTE size of fields is always NX * NY *** +$ +$ Input boundary points ---------------------------------------------- $ +$ An unlimited number of lines identifying points at which input +$ boundary conditions are to be defined. If the actual input data is +$ not defined in the actual wave model run, the initial conditions +$ will be applied as constant boundary conditions. Each line contains: +$ Discrete grid counters (IX,IY) of the active point and a +$ connect flag. If this flag is true, and the present and previous +$ point are on a grid line or diagonal, all intermediate points +$ are also defined as boundary points. +$ + 103 86 F + 103 119 T + 1 119 T + 1 1 T + 103 1 T + 103 11 T +$ +$ Close list by defining point (0,0) (mandatory) +$ + 0 0 F +$ Excluded grid points from segment data ( FROM != PART ) +$ First defined as lines, identical to the definition of the input +$ boundary points, and closed the same way. +$ + 0 0 F +$ +$ Second, define a point in a closed body of sea points to remove +$ the entire body os sea points. Also close by point (0,0) +$ + 0 0 +$ +$ Output boundary points --------------------------------------------- $ +$ Output boundary points are defined as a number of straight lines, +$ defined by its starting point (X0,Y0), increments (DX,DY) and number +$ of points. A negative number of points starts a new output file. +$ Note that this data is only generated if requested by the actual +$ program. Example again for spherical grid in degrees. +$ +$ Close list by defining line with 0 points (mandatory) +$ + 0. 0. 0. 0. 0 +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasacm4/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasacm4/ww3_grid.nml new file mode 100644 index 000000000..8e5d957f3 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm4/ww3_grid.nml @@ -0,0 +1,276 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III - ww3_grid.nml - Grid pre-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the spectrum parameterization via SPECTRUM_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! SPECTRUM%XFR = 0. ! frequency increment +! SPECTRUM%FREQ1 = 0. ! first frequency (Hz) +! SPECTRUM%NK = 0 ! number of frequencies (wavenumbers) +! SPECTRUM%NTH = 0 ! number of direction bins +! SPECTRUM%THOFF = 0. ! relative offset of first direction [-0.5,0.5] +! -------------------------------------------------------------------- ! +&SPECTRUM_NML + SPECTRUM%XFR = 1.1 + SPECTRUM%FREQ1 = 0.0373 + SPECTRUM%NK = 32 + SPECTRUM%NTH = 24 +/ + +! -------------------------------------------------------------------- ! +! Define the run parameterization via RUN_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! RUN%FLDRY = F ! dry run (I/O only, no calculation) +! RUN%FLCX = F ! x-component of propagation +! RUN%FLCY = F ! y-component of propagation +! RUN%FLCTH = F ! direction shift +! RUN%FLCK = F ! wavenumber shift +! RUN%FLSOU = F ! source terms +! -------------------------------------------------------------------- ! +&RUN_NML + RUN%FLCX = T + RUN%FLCY = T + RUN%FLCTH = T + RUN%FLCK = T + RUN%FLSOU = T +/ + +! -------------------------------------------------------------------- ! +! Define the timesteps parameterization via TIMESTEPS_NML namelist +! +! * It is highly recommended to set up time steps which are multiple +! between them. +! +! * The first time step to calculate is the maximum CFL time step +! which depend on the lowest frequency FREQ1 previously set up and the +! lowest spatial grid resolution in meters DXY. +! reminder : 1 degree=60minutes // 1minute=1mile // 1mile=1.852km +! The formula for the CFL time is : +! Tcfl = DXY / (G / (FREQ1*4*Pi) ) with the constants Pi=3,14 and G=9.8m/s²; +! DTXY ~= 90% Tcfl +! DTMAX ~= 3 * DTXY (maximum global time step limit) +! +! * The refraction time step depends on how strong can be the current velocities +! on your grid : +! DTKTH ~= DTMAX / 2 ! in case of no or light current velocities +! DTKTH ~= DTMAX / 10 ! in case of strong current velocities +! +! * The source terms time step is usually defined between 5s and 60s. +! A common value is 10s. +! DTMIN ~= 10 +! +! * namelist must be terminated with / +! * definitions & defaults: +! TIMESTEPS%DTMAX = 0. ! maximum global time step (s) +! TIMESTEPS%DTXY = 0. ! maximum CFL time step for x-y (s) +! TIMESTEPS%DTKTH = 0. ! maximum CFL time step for k-th (s) +! TIMESTEPS%DTMIN = 0. ! minimum source term time step (s) +! -------------------------------------------------------------------- ! +&TIMESTEPS_NML + TIMESTEPS%DTMAX = 180. + TIMESTEPS%DTXY = 45. + TIMESTEPS%DTKTH = 45. + TIMESTEPS%DTMIN = 10. +/ + +! -------------------------------------------------------------------- ! +! Define the grid to preprocess via GRID_NML namelist +! +! * the tunable parameters for source terms, propagation schemes, and +! numerics are read using namelists. +! * Any namelist found in the folowing sections is temporarily written +! to param.scratch, and read from there if necessary. +! * The order of the namelists is immaterial. +! * Namelists not needed for the given switch settings will be skipped +! automatically +! +! * grid type can be : +! 'RECT' : rectilinear +! 'CURV' : curvilinear +! 'UNST' : unstructured (triangle-based) +! +! * coordinate system can be : +! 'SPHE' : Spherical (degrees) +! 'CART' : Cartesian (meters) +! +! * grid closure can only be applied in spherical coordinates +! +! * grid closure can be : +! 'NONE' : No closure is applied +! 'SMPL' : Simple grid closure. Grid is periodic in the +! : i-index and wraps at i=NX+1. In other words, +! : (NX+1,J) => (1,J). A grid with simple closure +! : may be rectilinear or curvilinear. +! 'TRPL' : Tripole grid closure : Grid is periodic in the +! : i-index and wraps at i=NX+1 and has closure at +! : j=NY+1. In other words, (NX+1,J<=NY) => (1,J) +! : and (I,NY+1) => (NX-I+1,NY). Tripole +! : grid closure requires that NX be even. A grid +! : with tripole closure must be curvilinear. +! +! * The coastline limit depth is the value which distinguish the sea +! points to the land points. All the points with depth values (ZBIN) +! greater than this limit (ZLIM) will be considered as excluded points +! and will never be wet points, even if the water level grows over. +! It can only overwrite the status of a sea point to a land point. +! The value must have a negative value under the mean sea level +! +! * The minimum water depth allowed to compute the model is the absolute +! depth value (DMIN) used in the model if the input depth is lower to +! avoid the model to blow up. +! +! * namelist must be terminated with / +! * definitions & defaults: +! GRID%NAME = 'unset' ! grid name (30 char) +! GRID%NML = 'namelists.nml' ! namelists filename +! GRID%TYPE = 'unset' ! grid type +! GRID%COORD = 'unset' ! coordinate system +! GRID%CLOS = 'unset' ! grid closure +! +! GRID%ZLIM = 0. ! coastline limit depth (m) +! GRID%DMIN = 0. ! abs. minimum water depth (m) +! -------------------------------------------------------------------- ! +&GRID_NML + GRID%NAME = 'IROISE 1.5KM' + GRID%NML = '../input_oasacm4/namelists_IROISE.nml' + GRID%TYPE = 'RECT' + GRID%COORD = 'SPHE' + GRID%CLOS = 'NONE' + GRID%ZLIM = 0.0 + GRID%DMIN = 1.0 +/ + +! -------------------------------------------------------------------- ! +! Define the rectilinear grid type via RECT_NML namelist +! - only for RECT grids - +! +! * The minimum grid size is 3x3. +! +! * If the grid increments SX and SY are given in minutes of arc, the scaling +! factor SF must be set to 60. to provide an increment factor in degree. +! +! * If CSTRG='SMPL', then SX is forced to 360/NX. +! +! * value <= value_read / scale_fac +! +! * namelist must be terminated with / +! * definitions & defaults: +! RECT%NX = 0 ! number of points along x-axis +! RECT%NY = 0 ! number of points along y-axis +! +! RECT%SX = 0. ! grid increment along x-axis +! RECT%SY = 0. ! grid increment along y-axis +! RECT%SF = 1. ! scaling division factor for x-y axis +! +! RECT%X0 = 0. ! x-coordinate of lower-left corner (deg) +! RECT%Y0 = 0. ! y-coordinate of lower-left corner (deg) +! RECT%SF0 = 1. ! scaling division factor for x0,y0 coord +! -------------------------------------------------------------------- ! +&RECT_NML + RECT%NX = 103 + RECT%NY = 119 + RECT%SX = 0.019 + RECT%SY = 0.0125 + RECT%X0 = -6.119 + RECT%Y0 = 47.6375 +/ + +! -------------------------------------------------------------------- ! +! Define the depth to preprocess via DEPTH_NML namelist +! - for RECT and CURV grids - +! +! * if no obstruction subgrid, need to set &MISC FLAGTR = 0 +! +! * The depth value must have negative values under the mean sea level +! +! * value <= value_read * scale_fac +! +! * IDLA : Layout indicator : +! 1 : Read line-by-line bottom to top. (default) +! 2 : Like 1, single read statement. +! 3 : Read line-by-line top to bottom. +! 4 : Like 3, single read statement. +! * IDFM : format indicator : +! 1 : Free format. (default) +! 2 : Fixed format. +! 3 : Unformatted. +! * FORMAT : element format to read : +! '(....)' : auto detected (default) +! '(f10.6)' : float type +! +! * Example : +! IDF SF IDLA IDFM FORMAT FILENAME +! 50 0.001 1 1 '(....)' 'GLOB-30M.bot' +! +! * namelist must be terminated with / +! * definitions & defaults: +! DEPTH%SF = 1. ! scale factor +! DEPTH%FILENAME = 'unset' ! filename +! DEPTH%IDF = 50 ! file unit number +! DEPTH%IDLA = 1 ! layout indicator +! DEPTH%IDFM = 1 ! format indicator +! DEPTH%FORMAT = '(....)' ! formatted read format +! -------------------------------------------------------------------- ! +&DEPTH_NML + DEPTH%SF = -1. + DEPTH%FILENAME = '../input/iro_1p5k.bot' + DEPTH%FORMAT = '(20f10.2)' +/ + +! -------------------------------------------------------------------- ! +! Define the input boundary points via INBND_COUNT_NML and +! INBND_POINT_NML namelist +! - for RECT, CURV and UNST grids - +! +! * If no mask defined, INBOUND can be used +! +! * If the actual input data is not defined in the actual wave model run +! the initial conditions will be applied as constant boundary conditions. +! +! * The number of points is defined by INBND_COUNT +! +! * The points must start from index 1 to N +! +! * Each line contains: +! Discrete grid counters (IX,IY) of the active point and a +! connect flag. If this flag is true, and the present and previous +! point are on a grid line or diagonal, all intermediate points +! are also defined as boundary points. +! +! * Included point : +! grid points from segment data +! Defines as lines identifying points at which +! input boundary conditions are to be defined. +! +! * namelist must be terminated with / +! * definitions & defaults: +! INBND_COUNT%N_POINT = 0 ! number of segments +! +! INBND_POINT(I)%X_INDEX = 0 ! x index included point +! INBND_POINT(I)%Y_INDEX = 0 ! y index included point +! INBND_POINT(I)%CONNECT = F ! connect flag +! +! OR +! INBND_POINT(I) = 0 0 F ! included point +! -------------------------------------------------------------------- ! +&INBND_COUNT_NML + INBND_COUNT%N_POINT = 6 +/ + +&INBND_POINT_NML + INBND_POINT(1) = 103 86 F + INBND_POINT(2) = 103 119 T + INBND_POINT(3) = 1 119 T + INBND_POINT(4) = 1 1 T + INBND_POINT(5) = 103 1 T + INBND_POINT(6) = 103 11 T +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input_oasacm4/ww3_ounf.inp b/regtests/ww3_tp2.14/input_oasacm4/ww3_ounf.inp new file mode 100755 index 000000000..b8bbf80f6 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm4/ww3_ounf.inp @@ -0,0 +1,41 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid output post-processing $ +$--------------------------------------------------------------------- $ +$ First output time (yyyymmdd hhmmss), increment of output (s), +$ and number of output times. +$ + 20080310 000000 180 100 +$ +$ Output request flags identifying fields as in ww3_shel.inp. See that +$ file for a full documentation of field output options. Namelist type +$ selection is used here (for alternative F/T flags, see ww3_shel.inp). +$ + N + HS FP DIR DP CHA UST DPT CUR WND +$ +$--------------------------------------------------------------------- $ +$ netCDF version [3,4] +$ and variable type 4 [2 = SHORT, 3 = it depends , 4 = REAL] +$ swell partitions [0 1 2 3 4 5] +$ variables in same file [T] or not [F] +$ + 3 4 + 0 + T +$ +$ -------------------------------------------------------------------- $ +$ File prefix +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +$ IX and IY ranges [regular:IX NX IY NY DX DY, unstructured:IP NP DP DP] +$ +ww3. +6 +1 10000 1 10000 +$ +$ For each field and time a new file is generated with the file name +$ ww3.date_xxx.nc , where date is a conventional time indicator with S3 +$ characters, and xxx is a field identifier. +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasacm4/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasacm4/ww3_ounf.nml new file mode 100644 index 000000000..fc0386ff8 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm4/ww3_ounf.nml @@ -0,0 +1,60 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_ounf.nml - Grid output post-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the output fields to postprocess via FIELD_NML namelist +! +! * the detailed list of field names FIELD%LIST is given in ww3_shel.nml +! DPT CUR WND AST WLV ICE IBG D50 IC1 IC5 +! HS LM T02 T0M1 T01 FP DIR SPR DP HIG +! EF TH1M STH1M TH2M STH2M WN +! PHS PTP PLP PDIR PSPR PWS PDP PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR +! UST CHA CGE FAW TAW TWA WCC WCF WCH WCM FWS +! SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC +! ABR UBR BED FBB TBB +! MSS MSC WL02 AXT AYT AXY +! DTD FC CFX CFD CFK +! U1 U2 +! +! * namelist must be terminated with / +! * definitions & defaults: +! FIELD%TIMESTART = '19000101 000000' ! Stop date for the output field +! FIELD%TIMESTRIDE = '0' ! Time stride for the output field +! FIELD%TIMESTOP = '29001231 000000' ! Stop date for the output field +! FIELD%TIMECOUNT = '1000000000' ! Number of time steps +! FIELD%TIMESPLIT = 6 ! [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +! FIELD%LIST = 'unset' ! List of output fields +! FIELD%PARTITION = '0 1 2 3' ! List of wave partitions ['0 1 2 3 4 5'] +! FIELD%SAMEFILE = T ! All the variables in the same file [T|F] +! FIELD%TYPE = 3 ! [2 = SHORT, 3 = it depends , 4 = REAL] +! -------------------------------------------------------------------- ! +&FIELD_NML + FIELD%TIMESTART = '20080310 000000' + FIELD%TIMESTRIDE = '180' + FIELD%TIMECOUNT = '100' + FIELD%LIST = 'HS FP DIR DP CHA UST DPT CUR WND' + FIELD%PARTITION = '0' + FIELD%TYPE = 4 +/ + +! -------------------------------------------------------------------- ! +! Define the content of the output file via FILE_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%PREFIX = 'ww3.' ! Prefix for output file name +! FILE%NETCDF = 3 ! Netcdf version [3|4] +! FILE%IX0 = 1 ! First X-axis or node index +! FILE%IXN = 1000000000 ! Last X-axis or node index +! FILE%IY0 = 1 ! First Y-axis index +! FILE%IYN = 1000000000 ! Last Y-axis index +! -------------------------------------------------------------------- ! +&FILE_NML + FILE%IXN = 10000 + FILE%IYN = 10000 +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM4.inp b/regtests/ww3_tp2.14/input_oasacm4/ww3_shel.inp similarity index 100% rename from regtests/ww3_tp2.14/input/ww3_shel_OASACM4.inp rename to regtests/ww3_tp2.14/input_oasacm4/ww3_shel.inp diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM4.nml b/regtests/ww3_tp2.14/input_oasacm4/ww3_shel.nml similarity index 94% rename from regtests/ww3_tp2.14/input/ww3_shel_OASACM4.nml rename to regtests/ww3_tp2.14/input_oasacm4/ww3_shel.nml index 74b1348fa..4ee10f9e0 100644 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASACM4.nml +++ b/regtests/ww3_tp2.14/input_oasacm4/ww3_shel.nml @@ -44,6 +44,8 @@ ! INPUT%FORCING%WATER_LEVELS = 'F' ! INPUT%FORCING%CURRENTS = 'F' ! INPUT%FORCING%WINDS = 'F' +! INPUT%FORCING%ATM_MOMENTUM = 'F' +! INPUT%FORCING%AIR_DENSITY = 'F' ! INPUT%FORCING%ICE_CONC = 'F' ! INPUT%FORCING%ICE_PARAM1 = 'F' ! INPUT%FORCING%ICE_PARAM2 = 'F' @@ -64,7 +66,7 @@ ! -------------------------------------------------------------------- ! ! Define the output types point parameters via OUTPUT_TYPE_NML namelist ! -! * the point file is a space separated values per line : lon lat 'name' +! * the point file is a space separated values per line : ! longitude latitude 'name' (C*40) ! ! * the full list of field names is : @@ -94,9 +96,11 @@ ! T T 1 5 WLV WLV Water levels. ! T T 1 6 ICE ICE Ice concentration. ! T T 1 7 IBG IBG Iceberg-induced damping. -! T T 1 8 D50 D50 Median sediment grain size. -! T T 1 9 IC1 IC1 Ice thickness. -! T T 1 10 IC5 IC5 Ice flow diameter. +! T T 1 8 TAUA TAU Atm. momentum. +! T T 1 9 RHOAIR RHO Air density. +! T T 1 10 D50 D50 Median sediment grain size. +! T T 1 11 IC1 IC1 Ice thickness. +! T T 1 12 IC5 IC5 Ice flow diameter. ! ------------------------------------------------- ! 2 Standard mean wave Parameters ! ------------------------------------------------- @@ -117,6 +121,7 @@ ! T T 2 15 HMAXD SDMH St Dev of MXC (STE) ! T T 2 16 HCMAXD SDMHC St Dev of MXHC (STE) ! F T 2 17 WBT WBT Domiant wave breaking probability bT +! F F 2 18 FP0 TP Peak period (from peak freq) ! ------------------------------------------------- ! 3 Spectral Parameters (first 5) ! ------------------------------------------------- @@ -174,6 +179,7 @@ ! F F 6 9 P2SMS P2L Micro seism source term ! F F 6 10 TAUICE TWI Wave to sea ice stress ! F F 6 11 PHICE FIC Wave to sea ice energy flux +! F F 6 12 USSP USP Partitioned surface Stokes drift ! ------------------------------------------------- ! 7 Wave-bottom layer ! ------------------------------------------------- @@ -219,9 +225,14 @@ ! - Ice model : IC5 TWI ! - Received fields by ww3: ! - Ocean model : SSH CUR -! - Atmospheric model : WND +! - Atmospheric model : WND TAU RHO ! - Ice model : ICE IC1 IC5 ! +! * Coupling flag (T) or (F) at T+0 (extra fields in the restart needed) +! +! * extra fields to be written to the restart: +! - The list includes all fields sent by coupling exchange only +! ! * namelist must be terminated with / ! * definitions & defaults: ! TYPE%FIELD%LIST = 'unset' @@ -236,13 +247,15 @@ ! TYPE%PARTITION%FORMAT = T ! TYPE%COUPLING%SENT = 'unset' ! TYPE%COUPLING%RECEIVED = 'unset' +! TYPE%COUPLING%COUPLET0 = F +! TYPE%RESTART%EXTRA = 'unset' ! ! -------------------------------------------------------------------- ! &OUTPUT_TYPE_NML TYPE%FIELD%LIST = 'HS FP DIR DP CHA UST DPT CUR WND' TYPE%COUPLING%SENT = 'ACHA' TYPE%COUPLING%RECEIVED = 'WND' - TYPE%COUPLING%COUPLET0 = .TRUE. + TYPE%COUPLING%COUPLET0 = T TYPE%RESTART%EXTRA = 'CHA RHO' / diff --git a/regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASACM5 b/regtests/ww3_tp2.14/input_oasacm5/TOYNAMELIST.nam similarity index 100% rename from regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASACM5 rename to regtests/ww3_tp2.14/input_oasacm5/TOYNAMELIST.nam diff --git a/regtests/ww3_tp2.14/input/namcouple.OASACM5 b/regtests/ww3_tp2.14/input_oasacm5/namcouple similarity index 100% rename from regtests/ww3_tp2.14/input/namcouple.OASACM5 rename to regtests/ww3_tp2.14/input_oasacm5/namcouple diff --git a/regtests/ww3_tp2.14/input_oasacm5/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasacm5/namelists_IROISE.nml new file mode 100644 index 000000000..8b5707b65 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm5/namelists_IROISE.nml @@ -0,0 +1 @@ +END OF NAMELISTS diff --git a/regtests/ww3_tp2.14/input_oasacm5/prep_env.sh b/regtests/ww3_tp2.14/input_oasacm5/prep_env.sh new file mode 100755 index 000000000..ee03d4033 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm5/prep_env.sh @@ -0,0 +1,101 @@ +#!/bin/bash -e + +if [ $# -ne 4 ] +then + echo "need four arguments:" + echo '$1 : path_i' + echo '$2 : path_w' + echo '$3 : complr' + echo '$4 : switch' + exit 1 +fi + +path_i=$1 +path_w=$2 +cmplr=$3 +swtstr=$4 + +echo '' +echo ' setup coupling environment' +export WWATCH3_DIR=`grep WWATCH3_DIR $WWATCH3_ENV | awk -F' ' '{print $2}' ` +export WWATCH3_CC=`grep WWATCH3_CC $WWATCH3_ENV | awk -F' ' '{print $2}' ` + + +echo ' copy oasis and toy in $path_w' +cp -r $path_i/../input/toy $path_w/ +cp -r $path_i/../input/oasis3-mct $path_w/ + + +echo ' Setup oasis cmplr file' +cd $path_w/oasis3-mct/util/make_dir +source $WWATCH3_DIR/bin/cmplr.env +# shortlist optl +alloptl=( $optl ) +for ioptl in $(seq 2 ${#alloptl[@]}); do + optls="${optls}${alloptl[$ioptl]} " +done +# shortlist optc +alloptc=( $optc ) +for ioptc in $(seq 3 ${#alloptc[@]}); do + optcs="${optcs}${alloptc[$ioptc]} " +done +# shorten comp_mpi +comp_mpi_exe="$(echo $comp_mpi | awk -F' ' '{print $1}')" +# sed cmplr.tmpl +sed -e "s::$path_w/oasis3-mct:" \ + -e "s::$path_w/work_oasis3-mct:" \ + -e "s//$optcs/" -e "s//$optls/" \ + -e "s//$comp_mpi/" -e "s//$comp_mpi_exe/" \ + -e "s//$WWATCH3_CC/" cmplr.tmpl > cmplr +echo " sed cmplr.tmpl => cmplr" +chmod 775 cmplr + + +echo ' setup oasis make.inc file' +sed -e "s::$path_w/oasis3-mct:" make.inc.tmpl > make.inc + + +echo ' compile oasis coupler' +make realclean -f TopMakefileOasis3 > $path_w/oasis_clean.out +make -f TopMakefileOasis3 > $path_w/oasis_make.out + + +echo ' setup toy Makefile' +cd $path_w/toy +sed -e "s::$path_w/oasis3-mct:" Makefile.tmpl > Makefile + + +echo ' compile toy model' +make clean > $path_w/toy_clean.out +make > $path_w/toy_make.out + + +echo ' copy oasis coupler inputs' +cp $path_i/namcouple $path_w/namcouple + + +echo ' copy toy model inputs' +if [ -f $path_w/toy/r-toy.nc.$swtstr ]; then + cp $path_w/toy/r-toy.nc.$swtstr $path_w/r-toy.nc +else + echo "WARNING: model input $path_w/toy/r-toy.nc.$swtstr does not exist" +fi + +cp $path_w/toy/grid_toy_model.nc $path_w/ +cp $path_w/toy/toy_coupled_field.nc.$swtstr $path_w/toy_coupled_field.nc +cp $path_w/toy/toy_model $path_w/ + +cp $path_i/TOYNAMELIST.nam $path_w/TOYNAMELIST.nam + + +echo ' copy ww3 model inputs' +cd $path_w +if [ -f $path_i/r-ww3.nc ]; then + cp $path_i/r-ww3.nc $path_w/r-ww3.nc +else + echo "WARNING: model input $path_i/toy/r-ww3.nc does not exist" +fi + + + +echo '' diff --git a/regtests/ww3_tp2.14/input/switch_OASACM5 b/regtests/ww3_tp2.14/input_oasacm5/switch_OASACM5 similarity index 100% rename from regtests/ww3_tp2.14/input/switch_OASACM5 rename to regtests/ww3_tp2.14/input_oasacm5/switch_OASACM5 diff --git a/regtests/ww3_tp2.14/input_oasacm5/ww3_grid.inp b/regtests/ww3_tp2.14/input_oasacm5/ww3_grid.inp new file mode 100755 index 000000000..e367379b4 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm5/ww3_grid.inp @@ -0,0 +1,276 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid preprocessor input file $ +$ -------------------------------------------------------------------- $ +$ Grid name (C*30, in quotes) +$ + 'IROISE 1.5KM' +$ +$ Frequency increment factor and first frequency (Hz) ---------------- $ +$ number of frequencies (wavenumbers) and directions +$ +1.1 0.0373 32 24 0. +$ +$ Set model flags ---------------------------------------------------- $ +$ - FLDRY Dry run (input/output only, no calculation). +$ - FLCX, FLCY Activate X and Y component of propagation. +$ - FLCTH, FLCK Activate direction and wavenumber shifts. +$ - FLSOU Activate source terms. +$ + F T T T T T +$ +$ Set time steps ----------------------------------------------------- $ +$ - Time step information (this information is always read) +$ maximum global time step, maximum CFL time step for x-y and +$ k-theta, minimum source term time step (all in seconds). +$ + 180. 45. 45. 10. +$ +$ Start of namelist input section ------------------------------------ $ +$ Starting with WAVEWATCH III version 2.00, the tunable parameters +$ for source terms, propagation schemes, and numerics are read using +$ namelists. Any namelist found in the folowing sections up to the +$ end-of-section identifier string (see below) is temporarily written +$ to ww3_grid.scratch, and read from there if necessary. Namelists +$ not needed for the given switch settings will be skipped +$ automatically, and the order of the namelists is immaterial. +$ As an example, namelist input to change SWELLF and ZWND in the +$ Tolman and Chalikov input would be +$ +$ &SIN2 SWELLF = 0.1, ZWND = 15. / +$ +$ Define constants in source terms ----------------------------------- $ +$ +$ Input - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SIN1 +$ CINP : Proportionality constant. +$ &SIN1 CINP= 0.25 / +$ Tolman and Chalikov : Namelist SIN2 +$ ZWND : Height of wind (m). +$ SWELLF : swell factor in (2.48). +$ STABSH, STABOF, CNEG, CPOS, FNEG : +$ c0, ST0, c1, c2 and f1 in . (2.63) +$ through (2.65) for definition of +$ effective wind speed (!/STAB2). +$ +$ Nonlinear interactions - - - - - - - - - - - - - - - - - - - - - - - +$ Discrete I.A. : Namelist SNL1 +$ LAMBDA : Lambda in source term. +$ NLPROP : C in sourc term. NOTE : default +$ value depends on other source +$ terms selected. +$ KDCONV : Factor before kd in Eq. (2.24). +$ KDMIN, SNLCS1, SNLCS2, SNLCS3 : +$ Minimum kd, and constants c1-3 +$ in depth scaling function. +$ Exact interactions : Namelist SNL2 +$ IQTYPE : Type of depth treatment +$ 1 : Deep water +$ 2 : Deep water / WAM scaling +$ 3 : Shallow water +$ TAILNL : Parametric tail power. +$ NDEPTH : Number of depths in for which +$ integration space is established. +$ Used for IQTYPE = 3 only +$ Namelist ANL2 +$ DEPTHS : Array with depths for NDEPTH = 3 +$ +$ Dissipation - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SDS1 +$ CDIS, APM : As in source term. +$ +$ Tolman and Chalikov : Namelist SDS2 +$ SDSA0, SDSA1, SDSA2, SDSB0, SDSB1, PHIMIN : +$ Constants a0, a1, a2, b0, b1 and +$ PHImin. +$ +$ Bottom friction - - - - - - - - - - - - - - - - - - - - - - - - - - +$ JONSWAP : Namelist SBT1 +$ GAMMA : As it says. +$ +$ Propagation schemes ------------------------------------------------ $ +$ First order : Namelist PRO1 +$ CFLTM : Maximum CFL number for refraction. +$ +$ UQ with diffusion : Namelist PRO2 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ DTIME : Swell age (s) in garden sprinkler +$ correction. If 0., all diffusion +$ switched off. If small non-zero +$ (DEFAULT !!!) only wave growth +$ diffusion. +$ LATMIN : Maximum latitude used in calc. of +$ strength of diffusion for prop. +$ +$ UQ with averaging : Namelist PRO3 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ WDTHCG : Tuning factor propag. direction. +$ WDTHTH : Tuning factor normal direction. +$ +$ UQ with divergence : Namelist PRO4 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ QTFAC : Tuning factor Eq. (3.41). +$ RSFAC : Tuning factor Eq. (3.42). +$ RNFAC : Tuning factor Eq. (3.43). +$ +$ Miscellaneous ------------------------------------------------------ $ +$ Misc. parameters : Namelist MISC +$ CICE0 : Ice concentration cut-off. +$ CICEN : Ice concentration cut-off. +$ XSEED : Xseed in seeding alg. (!/SEED). +$ FLAGTR : Indicating presence and type of +$ subgrid information : +$ 0 : No subgrid information. +$ 1 : Transparancies at cell boun- +$ daries between grid points. +$ 2 : Transp. at cell centers. +$ 3 : Like 1 with cont. ice. +$ 4 : Like 2 with cont. ice. +$ XP, XR, XFILT +$ Xp, Xr and Xf for the dynamic +$ integration scheme. +$ +$ In the 'Out of the box' test setup we run with sub-grid obstacles +$ and with continuous ice treatment. +$ +$ &MISC CICE0 = 0.25, CICEN = 0.75, FLAGTR = 4 / +$ +$ Mandatory string to identify end of namelist input section. +$ +END OF NAMELISTS +$ +$ Define grid -------------------------------------------------------- $ +$ Four records containing : +$ 1 NX, NY. As the outer grid lines are always defined as land +$ points, the minimum size is 3x3. +$ 2 Grid increments SX, SY (degr.or m) and scaling (division) factor. +$ If NX*SX = 360., latitudinal closure is applied. +$ 3 Coordinates of (1,1) (degr.) and scaling (division) factor. +$ 4 Limiting bottom depth (m) to discriminate between land and sea +$ points, minimum water depth (m) as allowed in model, unit number +$ of file with bottom depths, scale factor for bottom depths (mult.), +$ IDLA, IDFM, format for formatted read, FROM and filename. +$ IDLA : Layout indicator : +$ 1 : Read line-by-line bottom to top. +$ 2 : Like 1, single read statement. +$ 3 : Read line-by-line top to bottom. +$ 4 : Like 3, single read statement. +$ IDFM : format indicator : +$ 1 : Free format. +$ 2 : Fixed format with above format descriptor. +$ 3 : Unformatted. +$ FROM : file type parameter +$ 'UNIT' : open file by unit number only. +$ 'NAME' : open file by name and assign to unit. +$ +$ Example for longitude-latitude grid (switch !/LLG), for Cartesian +$ grid the unit is meters (NOT km). +$ + 'RECT' T 'NONE' + 103 119 + 0.019 0.0125 1. + -6.119 47.6375 1. + 0.0 1.0 20 -1. 1 1 '(20f10.2)' 'NAME' '../input/iro_1p5k.bot' +$ +$ If the above unit number equals 10, the bottom data is read from +$ this file and follows below (no intermediate comment lines allowed). +$ +$ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +$ +$ If sub-grid information is avalaible as indicated by FLAGTR above, +$ additional input to define this is needed below. In such cases a +$ field of fractional obstructions at or between grid points needs to +$ be supplied. First the location and format of the data is defined +$ by (as above) : +$ - Unit number of file (can be 10, and/or identical to bottem depth +$ unit), scale factor for fractional obstruction, IDLA, IDFM, +$ format for formatted read, FROM and filename +$ +$ 10 0.2 3 1 '(....)' 'NAME' 'obstr.inp' +$ +$ *** NOTE if this unit number is the same as the previous bottom +$ depth unit number, it is assumed that this is the same file +$ without further checks. *** +$ +$ If the above unit number equals 10, the bottom data is read from +$ this file and follows below (no intermediate comment lines allowed, +$ except between the two fields). +$ +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 4 0 0 0 0 0 +$ 0 0 0 0 0 0 4 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 5 5 5 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ *** NOTE size of fields is always NX * NY *** +$ + 10 3 1 '(....)' 'PART' 'mapsta.inp' +$ *** NOTE size of fields is always NX * NY *** +$ +$ Input boundary points ---------------------------------------------- $ +$ An unlimited number of lines identifying points at which input +$ boundary conditions are to be defined. If the actual input data is +$ not defined in the actual wave model run, the initial conditions +$ will be applied as constant boundary conditions. Each line contains: +$ Discrete grid counters (IX,IY) of the active point and a +$ connect flag. If this flag is true, and the present and previous +$ point are on a grid line or diagonal, all intermediate points +$ are also defined as boundary points. +$ + 103 86 F + 103 119 T + 1 119 T + 1 1 T + 103 1 T + 103 11 T +$ +$ Close list by defining point (0,0) (mandatory) +$ + 0 0 F +$ Excluded grid points from segment data ( FROM != PART ) +$ First defined as lines, identical to the definition of the input +$ boundary points, and closed the same way. +$ + 0 0 F +$ +$ Second, define a point in a closed body of sea points to remove +$ the entire body os sea points. Also close by point (0,0) +$ + 0 0 +$ +$ Output boundary points --------------------------------------------- $ +$ Output boundary points are defined as a number of straight lines, +$ defined by its starting point (X0,Y0), increments (DX,DY) and number +$ of points. A negative number of points starts a new output file. +$ Note that this data is only generated if requested by the actual +$ program. Example again for spherical grid in degrees. +$ +$ Close list by defining line with 0 points (mandatory) +$ + 0. 0. 0. 0. 0 +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasacm5/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasacm5/ww3_grid.nml new file mode 100644 index 000000000..234443601 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm5/ww3_grid.nml @@ -0,0 +1,276 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III - ww3_grid.nml - Grid pre-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the spectrum parameterization via SPECTRUM_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! SPECTRUM%XFR = 0. ! frequency increment +! SPECTRUM%FREQ1 = 0. ! first frequency (Hz) +! SPECTRUM%NK = 0 ! number of frequencies (wavenumbers) +! SPECTRUM%NTH = 0 ! number of direction bins +! SPECTRUM%THOFF = 0. ! relative offset of first direction [-0.5,0.5] +! -------------------------------------------------------------------- ! +&SPECTRUM_NML + SPECTRUM%XFR = 1.1 + SPECTRUM%FREQ1 = 0.0373 + SPECTRUM%NK = 32 + SPECTRUM%NTH = 24 +/ + +! -------------------------------------------------------------------- ! +! Define the run parameterization via RUN_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! RUN%FLDRY = F ! dry run (I/O only, no calculation) +! RUN%FLCX = F ! x-component of propagation +! RUN%FLCY = F ! y-component of propagation +! RUN%FLCTH = F ! direction shift +! RUN%FLCK = F ! wavenumber shift +! RUN%FLSOU = F ! source terms +! -------------------------------------------------------------------- ! +&RUN_NML + RUN%FLCX = T + RUN%FLCY = T + RUN%FLCTH = T + RUN%FLCK = T + RUN%FLSOU = T +/ + +! -------------------------------------------------------------------- ! +! Define the timesteps parameterization via TIMESTEPS_NML namelist +! +! * It is highly recommended to set up time steps which are multiple +! between them. +! +! * The first time step to calculate is the maximum CFL time step +! which depend on the lowest frequency FREQ1 previously set up and the +! lowest spatial grid resolution in meters DXY. +! reminder : 1 degree=60minutes // 1minute=1mile // 1mile=1.852km +! The formula for the CFL time is : +! Tcfl = DXY / (G / (FREQ1*4*Pi) ) with the constants Pi=3,14 and G=9.8m/s²; +! DTXY ~= 90% Tcfl +! DTMAX ~= 3 * DTXY (maximum global time step limit) +! +! * The refraction time step depends on how strong can be the current velocities +! on your grid : +! DTKTH ~= DTMAX / 2 ! in case of no or light current velocities +! DTKTH ~= DTMAX / 10 ! in case of strong current velocities +! +! * The source terms time step is usually defined between 5s and 60s. +! A common value is 10s. +! DTMIN ~= 10 +! +! * namelist must be terminated with / +! * definitions & defaults: +! TIMESTEPS%DTMAX = 0. ! maximum global time step (s) +! TIMESTEPS%DTXY = 0. ! maximum CFL time step for x-y (s) +! TIMESTEPS%DTKTH = 0. ! maximum CFL time step for k-th (s) +! TIMESTEPS%DTMIN = 0. ! minimum source term time step (s) +! -------------------------------------------------------------------- ! +&TIMESTEPS_NML + TIMESTEPS%DTMAX = 180. + TIMESTEPS%DTXY = 45. + TIMESTEPS%DTKTH = 45. + TIMESTEPS%DTMIN = 10. +/ + +! -------------------------------------------------------------------- ! +! Define the grid to preprocess via GRID_NML namelist +! +! * the tunable parameters for source terms, propagation schemes, and +! numerics are read using namelists. +! * Any namelist found in the folowing sections is temporarily written +! to param.scratch, and read from there if necessary. +! * The order of the namelists is immaterial. +! * Namelists not needed for the given switch settings will be skipped +! automatically +! +! * grid type can be : +! 'RECT' : rectilinear +! 'CURV' : curvilinear +! 'UNST' : unstructured (triangle-based) +! +! * coordinate system can be : +! 'SPHE' : Spherical (degrees) +! 'CART' : Cartesian (meters) +! +! * grid closure can only be applied in spherical coordinates +! +! * grid closure can be : +! 'NONE' : No closure is applied +! 'SMPL' : Simple grid closure. Grid is periodic in the +! : i-index and wraps at i=NX+1. In other words, +! : (NX+1,J) => (1,J). A grid with simple closure +! : may be rectilinear or curvilinear. +! 'TRPL' : Tripole grid closure : Grid is periodic in the +! : i-index and wraps at i=NX+1 and has closure at +! : j=NY+1. In other words, (NX+1,J<=NY) => (1,J) +! : and (I,NY+1) => (NX-I+1,NY). Tripole +! : grid closure requires that NX be even. A grid +! : with tripole closure must be curvilinear. +! +! * The coastline limit depth is the value which distinguish the sea +! points to the land points. All the points with depth values (ZBIN) +! greater than this limit (ZLIM) will be considered as excluded points +! and will never be wet points, even if the water level grows over. +! It can only overwrite the status of a sea point to a land point. +! The value must have a negative value under the mean sea level +! +! * The minimum water depth allowed to compute the model is the absolute +! depth value (DMIN) used in the model if the input depth is lower to +! avoid the model to blow up. +! +! * namelist must be terminated with / +! * definitions & defaults: +! GRID%NAME = 'unset' ! grid name (30 char) +! GRID%NML = 'namelists.nml' ! namelists filename +! GRID%TYPE = 'unset' ! grid type +! GRID%COORD = 'unset' ! coordinate system +! GRID%CLOS = 'unset' ! grid closure +! +! GRID%ZLIM = 0. ! coastline limit depth (m) +! GRID%DMIN = 0. ! abs. minimum water depth (m) +! -------------------------------------------------------------------- ! +&GRID_NML + GRID%NAME = 'IROISE 1.5KM' + GRID%NML = '../input_oasacm5/namelists_IROISE.nml' + GRID%TYPE = 'RECT' + GRID%COORD = 'SPHE' + GRID%CLOS = 'NONE' + GRID%ZLIM = 0.0 + GRID%DMIN = 1.0 +/ + +! -------------------------------------------------------------------- ! +! Define the rectilinear grid type via RECT_NML namelist +! - only for RECT grids - +! +! * The minimum grid size is 3x3. +! +! * If the grid increments SX and SY are given in minutes of arc, the scaling +! factor SF must be set to 60. to provide an increment factor in degree. +! +! * If CSTRG='SMPL', then SX is forced to 360/NX. +! +! * value <= value_read / scale_fac +! +! * namelist must be terminated with / +! * definitions & defaults: +! RECT%NX = 0 ! number of points along x-axis +! RECT%NY = 0 ! number of points along y-axis +! +! RECT%SX = 0. ! grid increment along x-axis +! RECT%SY = 0. ! grid increment along y-axis +! RECT%SF = 1. ! scaling division factor for x-y axis +! +! RECT%X0 = 0. ! x-coordinate of lower-left corner (deg) +! RECT%Y0 = 0. ! y-coordinate of lower-left corner (deg) +! RECT%SF0 = 1. ! scaling division factor for x0,y0 coord +! -------------------------------------------------------------------- ! +&RECT_NML + RECT%NX = 103 + RECT%NY = 119 + RECT%SX = 0.019 + RECT%SY = 0.0125 + RECT%X0 = -6.119 + RECT%Y0 = 47.6375 +/ + +! -------------------------------------------------------------------- ! +! Define the depth to preprocess via DEPTH_NML namelist +! - for RECT and CURV grids - +! +! * if no obstruction subgrid, need to set &MISC FLAGTR = 0 +! +! * The depth value must have negative values under the mean sea level +! +! * value <= value_read * scale_fac +! +! * IDLA : Layout indicator : +! 1 : Read line-by-line bottom to top. (default) +! 2 : Like 1, single read statement. +! 3 : Read line-by-line top to bottom. +! 4 : Like 3, single read statement. +! * IDFM : format indicator : +! 1 : Free format. (default) +! 2 : Fixed format. +! 3 : Unformatted. +! * FORMAT : element format to read : +! '(....)' : auto detected (default) +! '(f10.6)' : float type +! +! * Example : +! IDF SF IDLA IDFM FORMAT FILENAME +! 50 0.001 1 1 '(....)' 'GLOB-30M.bot' +! +! * namelist must be terminated with / +! * definitions & defaults: +! DEPTH%SF = 1. ! scale factor +! DEPTH%FILENAME = 'unset' ! filename +! DEPTH%IDF = 50 ! file unit number +! DEPTH%IDLA = 1 ! layout indicator +! DEPTH%IDFM = 1 ! format indicator +! DEPTH%FORMAT = '(....)' ! formatted read format +! -------------------------------------------------------------------- ! +&DEPTH_NML + DEPTH%SF = -1. + DEPTH%FILENAME = '../input/iro_1p5k.bot' + DEPTH%FORMAT = '(20f10.2)' +/ + +! -------------------------------------------------------------------- ! +! Define the input boundary points via INBND_COUNT_NML and +! INBND_POINT_NML namelist +! - for RECT, CURV and UNST grids - +! +! * If no mask defined, INBOUND can be used +! +! * If the actual input data is not defined in the actual wave model run +! the initial conditions will be applied as constant boundary conditions. +! +! * The number of points is defined by INBND_COUNT +! +! * The points must start from index 1 to N +! +! * Each line contains: +! Discrete grid counters (IX,IY) of the active point and a +! connect flag. If this flag is true, and the present and previous +! point are on a grid line or diagonal, all intermediate points +! are also defined as boundary points. +! +! * Included point : +! grid points from segment data +! Defines as lines identifying points at which +! input boundary conditions are to be defined. +! +! * namelist must be terminated with / +! * definitions & defaults: +! INBND_COUNT%N_POINT = 0 ! number of segments +! +! INBND_POINT(I)%X_INDEX = 0 ! x index included point +! INBND_POINT(I)%Y_INDEX = 0 ! y index included point +! INBND_POINT(I)%CONNECT = F ! connect flag +! +! OR +! INBND_POINT(I) = 0 0 F ! included point +! -------------------------------------------------------------------- ! +&INBND_COUNT_NML + INBND_COUNT%N_POINT = 6 +/ + +&INBND_POINT_NML + INBND_POINT(1) = 103 86 F + INBND_POINT(2) = 103 119 T + INBND_POINT(3) = 1 119 T + INBND_POINT(4) = 1 1 T + INBND_POINT(5) = 103 1 T + INBND_POINT(6) = 103 11 T +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input_oasacm5/ww3_ounf.inp b/regtests/ww3_tp2.14/input_oasacm5/ww3_ounf.inp new file mode 100755 index 000000000..b8bbf80f6 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm5/ww3_ounf.inp @@ -0,0 +1,41 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid output post-processing $ +$--------------------------------------------------------------------- $ +$ First output time (yyyymmdd hhmmss), increment of output (s), +$ and number of output times. +$ + 20080310 000000 180 100 +$ +$ Output request flags identifying fields as in ww3_shel.inp. See that +$ file for a full documentation of field output options. Namelist type +$ selection is used here (for alternative F/T flags, see ww3_shel.inp). +$ + N + HS FP DIR DP CHA UST DPT CUR WND +$ +$--------------------------------------------------------------------- $ +$ netCDF version [3,4] +$ and variable type 4 [2 = SHORT, 3 = it depends , 4 = REAL] +$ swell partitions [0 1 2 3 4 5] +$ variables in same file [T] or not [F] +$ + 3 4 + 0 + T +$ +$ -------------------------------------------------------------------- $ +$ File prefix +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +$ IX and IY ranges [regular:IX NX IY NY DX DY, unstructured:IP NP DP DP] +$ +ww3. +6 +1 10000 1 10000 +$ +$ For each field and time a new file is generated with the file name +$ ww3.date_xxx.nc , where date is a conventional time indicator with S3 +$ characters, and xxx is a field identifier. +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasacm5/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasacm5/ww3_ounf.nml new file mode 100644 index 000000000..fc0386ff8 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm5/ww3_ounf.nml @@ -0,0 +1,60 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_ounf.nml - Grid output post-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the output fields to postprocess via FIELD_NML namelist +! +! * the detailed list of field names FIELD%LIST is given in ww3_shel.nml +! DPT CUR WND AST WLV ICE IBG D50 IC1 IC5 +! HS LM T02 T0M1 T01 FP DIR SPR DP HIG +! EF TH1M STH1M TH2M STH2M WN +! PHS PTP PLP PDIR PSPR PWS PDP PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR +! UST CHA CGE FAW TAW TWA WCC WCF WCH WCM FWS +! SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC +! ABR UBR BED FBB TBB +! MSS MSC WL02 AXT AYT AXY +! DTD FC CFX CFD CFK +! U1 U2 +! +! * namelist must be terminated with / +! * definitions & defaults: +! FIELD%TIMESTART = '19000101 000000' ! Stop date for the output field +! FIELD%TIMESTRIDE = '0' ! Time stride for the output field +! FIELD%TIMESTOP = '29001231 000000' ! Stop date for the output field +! FIELD%TIMECOUNT = '1000000000' ! Number of time steps +! FIELD%TIMESPLIT = 6 ! [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +! FIELD%LIST = 'unset' ! List of output fields +! FIELD%PARTITION = '0 1 2 3' ! List of wave partitions ['0 1 2 3 4 5'] +! FIELD%SAMEFILE = T ! All the variables in the same file [T|F] +! FIELD%TYPE = 3 ! [2 = SHORT, 3 = it depends , 4 = REAL] +! -------------------------------------------------------------------- ! +&FIELD_NML + FIELD%TIMESTART = '20080310 000000' + FIELD%TIMESTRIDE = '180' + FIELD%TIMECOUNT = '100' + FIELD%LIST = 'HS FP DIR DP CHA UST DPT CUR WND' + FIELD%PARTITION = '0' + FIELD%TYPE = 4 +/ + +! -------------------------------------------------------------------- ! +! Define the content of the output file via FILE_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%PREFIX = 'ww3.' ! Prefix for output file name +! FILE%NETCDF = 3 ! Netcdf version [3|4] +! FILE%IX0 = 1 ! First X-axis or node index +! FILE%IXN = 1000000000 ! Last X-axis or node index +! FILE%IY0 = 1 ! First Y-axis index +! FILE%IYN = 1000000000 ! Last Y-axis index +! -------------------------------------------------------------------- ! +&FILE_NML + FILE%IXN = 10000 + FILE%IYN = 10000 +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM5.inp b/regtests/ww3_tp2.14/input_oasacm5/ww3_shel.inp similarity index 100% rename from regtests/ww3_tp2.14/input/ww3_shel_OASACM5.inp rename to regtests/ww3_tp2.14/input_oasacm5/ww3_shel.inp diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM5.nml b/regtests/ww3_tp2.14/input_oasacm5/ww3_shel.nml similarity index 94% rename from regtests/ww3_tp2.14/input/ww3_shel_OASACM5.nml rename to regtests/ww3_tp2.14/input_oasacm5/ww3_shel.nml index ebf38d427..4f56bcf3d 100644 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASACM5.nml +++ b/regtests/ww3_tp2.14/input_oasacm5/ww3_shel.nml @@ -44,6 +44,8 @@ ! INPUT%FORCING%WATER_LEVELS = 'F' ! INPUT%FORCING%CURRENTS = 'F' ! INPUT%FORCING%WINDS = 'F' +! INPUT%FORCING%ATM_MOMENTUM = 'F' +! INPUT%FORCING%AIR_DENSITY = 'F' ! INPUT%FORCING%ICE_CONC = 'F' ! INPUT%FORCING%ICE_PARAM1 = 'F' ! INPUT%FORCING%ICE_PARAM2 = 'F' @@ -64,7 +66,7 @@ ! -------------------------------------------------------------------- ! ! Define the output types point parameters via OUTPUT_TYPE_NML namelist ! -! * the point file is a space separated values per line : lon lat 'name' +! * the point file is a space separated values per line : ! longitude latitude 'name' (C*40) ! ! * the full list of field names is : @@ -94,9 +96,11 @@ ! T T 1 5 WLV WLV Water levels. ! T T 1 6 ICE ICE Ice concentration. ! T T 1 7 IBG IBG Iceberg-induced damping. -! T T 1 8 D50 D50 Median sediment grain size. -! T T 1 9 IC1 IC1 Ice thickness. -! T T 1 10 IC5 IC5 Ice flow diameter. +! T T 1 8 TAUA TAU Atm. momentum. +! T T 1 9 RHOAIR RHO Air density. +! T T 1 10 D50 D50 Median sediment grain size. +! T T 1 11 IC1 IC1 Ice thickness. +! T T 1 12 IC5 IC5 Ice flow diameter. ! ------------------------------------------------- ! 2 Standard mean wave Parameters ! ------------------------------------------------- @@ -117,6 +121,7 @@ ! T T 2 15 HMAXD SDMH St Dev of MXC (STE) ! T T 2 16 HCMAXD SDMHC St Dev of MXHC (STE) ! F T 2 17 WBT WBT Domiant wave breaking probability bT +! F F 2 18 FP0 TP Peak period (from peak freq) ! ------------------------------------------------- ! 3 Spectral Parameters (first 5) ! ------------------------------------------------- @@ -174,6 +179,7 @@ ! F F 6 9 P2SMS P2L Micro seism source term ! F F 6 10 TAUICE TWI Wave to sea ice stress ! F F 6 11 PHICE FIC Wave to sea ice energy flux +! F F 6 12 USSP USP Partitioned surface Stokes drift ! ------------------------------------------------- ! 7 Wave-bottom layer ! ------------------------------------------------- @@ -219,9 +225,14 @@ ! - Ice model : IC5 TWI ! - Received fields by ww3: ! - Ocean model : SSH CUR -! - Atmospheric model : WND +! - Atmospheric model : WND TAU RHO ! - Ice model : ICE IC1 IC5 ! +! * Coupling flag (T) or (F) at T+0 (extra fields in the restart needed) +! +! * extra fields to be written to the restart: +! - The list includes all fields sent by coupling exchange only +! ! * namelist must be terminated with / ! * definitions & defaults: ! TYPE%FIELD%LIST = 'unset' @@ -236,13 +247,15 @@ ! TYPE%PARTITION%FORMAT = T ! TYPE%COUPLING%SENT = 'unset' ! TYPE%COUPLING%RECEIVED = 'unset' +! TYPE%COUPLING%COUPLET0 = F +! TYPE%RESTART%EXTRA = 'unset' ! ! -------------------------------------------------------------------- ! &OUTPUT_TYPE_NML TYPE%FIELD%LIST = 'HS FP DIR DP CHA UST DPT CUR WND' TYPE%COUPLING%SENT = 'ACHA' TYPE%COUPLING%RECEIVED = 'WND' - TYPE%COUPLING%COUPLET0 = .TRUE. + TYPE%COUPLING%COUPLET0 = T / ! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input/BrestISides.dat b/regtests/ww3_tp2.14/input_oasacm6/BrestISides.dat similarity index 100% rename from regtests/ww3_tp2.14/input/BrestISides.dat rename to regtests/ww3_tp2.14/input_oasacm6/BrestISides.dat diff --git a/regtests/ww3_tp2.14/input/BrestJSides.dat b/regtests/ww3_tp2.14/input_oasacm6/BrestJSides.dat similarity index 100% rename from regtests/ww3_tp2.14/input/BrestJSides.dat rename to regtests/ww3_tp2.14/input_oasacm6/BrestJSides.dat diff --git a/regtests/ww3_tp2.14/input/BrestObstrs.dat b/regtests/ww3_tp2.14/input_oasacm6/BrestObstrs.dat similarity index 100% rename from regtests/ww3_tp2.14/input/BrestObstrs.dat rename to regtests/ww3_tp2.14/input_oasacm6/BrestObstrs.dat diff --git a/regtests/ww3_tp2.14/input/BrestSMCels.dat b/regtests/ww3_tp2.14/input_oasacm6/BrestSMCels.dat similarity index 100% rename from regtests/ww3_tp2.14/input/BrestSMCels.dat rename to regtests/ww3_tp2.14/input_oasacm6/BrestSMCels.dat diff --git a/regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASACM6 b/regtests/ww3_tp2.14/input_oasacm6/TOYNAMELIST.nam similarity index 100% rename from regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASACM6 rename to regtests/ww3_tp2.14/input_oasacm6/TOYNAMELIST.nam diff --git a/regtests/ww3_tp2.14/input/namcouple.OASACM6 b/regtests/ww3_tp2.14/input_oasacm6/namcouple similarity index 97% rename from regtests/ww3_tp2.14/input/namcouple.OASACM6 rename to regtests/ww3_tp2.14/input_oasacm6/namcouple index 390a7b3ff..f3bee9dd1 100755 --- a/regtests/ww3_tp2.14/input/namcouple.OASACM6 +++ b/regtests/ww3_tp2.14/input_oasacm6/namcouple @@ -108,7 +108,7 @@ TOY_U10M WW3__U10 1 180 1 r-toy.nc EXPOUT 80 80 2889 1 toyt ww3t R 0 R 0 MAPPING -../input/rmp_toyt_to_ww3t_NEARESTSTOD.nc +../input_oasacm6/rmp_toyt_to_ww3t_NEARESTSTOD.nc # #~~~~~~~~~~~ # Field 2 : @@ -117,7 +117,7 @@ TOY_V10M WW3__V10 1 180 1 r-toy.nc EXPOUT 80 80 2889 1 toyt ww3t R 0 R 0 MAPPING -../input/rmp_toyt_to_ww3t_NEARESTSTOD.nc +../input_oasacm6/rmp_toyt_to_ww3t_NEARESTSTOD.nc # # ----------------------------------------- # WW3 (wwatch) ==> TOY (toyexe) @@ -130,6 +130,6 @@ WW3_ACHA TOY__CHA 1 180 1 r-ww3.nc EXPOUT 2889 1 80 80 ww3t toyt R 0 R 0 MAPPING -../input/rmp_ww3t_to_toyt_NEARESTSTOD.nc +../input_oasacm6/rmp_ww3t_to_toyt_NEARESTSTOD.nc # $END diff --git a/regtests/ww3_tp2.14/input_oasacm6/namelists_BREST.nml b/regtests/ww3_tp2.14/input_oasacm6/namelists_BREST.nml new file mode 100644 index 000000000..6bf9bd247 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm6/namelists_BREST.nml @@ -0,0 +1,2 @@ +&PSMC DTIMS=10800.,LvSMC=2,CFLSM=0.1,AVERG=.FALSE. / +END OF NAMELISTS diff --git a/regtests/ww3_tp2.14/input_oasacm6/prep_env.sh b/regtests/ww3_tp2.14/input_oasacm6/prep_env.sh new file mode 100755 index 000000000..ee03d4033 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm6/prep_env.sh @@ -0,0 +1,101 @@ +#!/bin/bash -e + +if [ $# -ne 4 ] +then + echo "need four arguments:" + echo '$1 : path_i' + echo '$2 : path_w' + echo '$3 : complr' + echo '$4 : switch' + exit 1 +fi + +path_i=$1 +path_w=$2 +cmplr=$3 +swtstr=$4 + +echo '' +echo ' setup coupling environment' +export WWATCH3_DIR=`grep WWATCH3_DIR $WWATCH3_ENV | awk -F' ' '{print $2}' ` +export WWATCH3_CC=`grep WWATCH3_CC $WWATCH3_ENV | awk -F' ' '{print $2}' ` + + +echo ' copy oasis and toy in $path_w' +cp -r $path_i/../input/toy $path_w/ +cp -r $path_i/../input/oasis3-mct $path_w/ + + +echo ' Setup oasis cmplr file' +cd $path_w/oasis3-mct/util/make_dir +source $WWATCH3_DIR/bin/cmplr.env +# shortlist optl +alloptl=( $optl ) +for ioptl in $(seq 2 ${#alloptl[@]}); do + optls="${optls}${alloptl[$ioptl]} " +done +# shortlist optc +alloptc=( $optc ) +for ioptc in $(seq 3 ${#alloptc[@]}); do + optcs="${optcs}${alloptc[$ioptc]} " +done +# shorten comp_mpi +comp_mpi_exe="$(echo $comp_mpi | awk -F' ' '{print $1}')" +# sed cmplr.tmpl +sed -e "s::$path_w/oasis3-mct:" \ + -e "s::$path_w/work_oasis3-mct:" \ + -e "s//$optcs/" -e "s//$optls/" \ + -e "s//$comp_mpi/" -e "s//$comp_mpi_exe/" \ + -e "s//$WWATCH3_CC/" cmplr.tmpl > cmplr +echo " sed cmplr.tmpl => cmplr" +chmod 775 cmplr + + +echo ' setup oasis make.inc file' +sed -e "s::$path_w/oasis3-mct:" make.inc.tmpl > make.inc + + +echo ' compile oasis coupler' +make realclean -f TopMakefileOasis3 > $path_w/oasis_clean.out +make -f TopMakefileOasis3 > $path_w/oasis_make.out + + +echo ' setup toy Makefile' +cd $path_w/toy +sed -e "s::$path_w/oasis3-mct:" Makefile.tmpl > Makefile + + +echo ' compile toy model' +make clean > $path_w/toy_clean.out +make > $path_w/toy_make.out + + +echo ' copy oasis coupler inputs' +cp $path_i/namcouple $path_w/namcouple + + +echo ' copy toy model inputs' +if [ -f $path_w/toy/r-toy.nc.$swtstr ]; then + cp $path_w/toy/r-toy.nc.$swtstr $path_w/r-toy.nc +else + echo "WARNING: model input $path_w/toy/r-toy.nc.$swtstr does not exist" +fi + +cp $path_w/toy/grid_toy_model.nc $path_w/ +cp $path_w/toy/toy_coupled_field.nc.$swtstr $path_w/toy_coupled_field.nc +cp $path_w/toy/toy_model $path_w/ + +cp $path_i/TOYNAMELIST.nam $path_w/TOYNAMELIST.nam + + +echo ' copy ww3 model inputs' +cd $path_w +if [ -f $path_i/r-ww3.nc ]; then + cp $path_i/r-ww3.nc $path_w/r-ww3.nc +else + echo "WARNING: model input $path_i/toy/r-ww3.nc does not exist" +fi + + + +echo '' diff --git a/regtests/ww3_tp2.14/input/switch_OASACM6 b/regtests/ww3_tp2.14/input_oasacm6/switch_OASACM6 similarity index 100% rename from regtests/ww3_tp2.14/input/switch_OASACM6 rename to regtests/ww3_tp2.14/input_oasacm6/switch_OASACM6 diff --git a/regtests/ww3_tp2.14/input/ww3_grid_OASACM6.inp b/regtests/ww3_tp2.14/input_oasacm6/ww3_grid.inp similarity index 98% rename from regtests/ww3_tp2.14/input/ww3_grid_OASACM6.inp rename to regtests/ww3_tp2.14/input_oasacm6/ww3_grid.inp index f0b2827e3..2e9ee949f 100755 --- a/regtests/ww3_tp2.14/input/ww3_grid_OASACM6.inp +++ b/regtests/ww3_tp2.14/input_oasacm6/ww3_grid.inp @@ -237,10 +237,10 @@ $ The first line of each file will have the array dimension parameters. $ So the first line are read first to determine the array sizes for the $ following array read calls. JGLi18Dec2012 $ - 32 1 1 '(....)' '../input/BrestSMCels.dat' - 33 1 1 '(....)' '../input/BrestISides.dat' - 34 1 1 '(....)' '../input/BrestJSides.dat' - 31 1 1 '(....)' '../input/BrestObstrs.dat' + 32 1 1 '(....)' '../input_oasacm6/BrestSMCels.dat' + 33 1 1 '(....)' '../input_oasacm6/BrestISides.dat' + 34 1 1 '(....)' '../input_oasacm6/BrestJSides.dat' + 31 1 1 '(....)' '../input_oasacm6/BrestObstrs.dat' $ $ Input boundary points ---------------------------------------------- $ $ An unlimited number of lines identifying points at which input diff --git a/regtests/ww3_tp2.14/input/ww3_grid_OASACM6.nml b/regtests/ww3_tp2.14/input_oasacm6/ww3_grid.nml similarity index 97% rename from regtests/ww3_tp2.14/input/ww3_grid_OASACM6.nml rename to regtests/ww3_tp2.14/input_oasacm6/ww3_grid.nml index 52aa47525..d18a17e02 100644 --- a/regtests/ww3_tp2.14/input/ww3_grid_OASACM6.nml +++ b/regtests/ww3_tp2.14/input_oasacm6/ww3_grid.nml @@ -138,7 +138,7 @@ ! -------------------------------------------------------------------- ! &GRID_NML GRID%NAME = '***** WW3 Brest3km Grid ***** ' - GRID%NML = '../input/namelists_BREST.nml' + GRID%NML = '../input_oasacm6/namelists_BREST.nml' GRID%TYPE = 'SMCG' GRID%COORD = 'SPHE' GRID%CLOS = 'NONE' @@ -233,25 +233,25 @@ SMC%MCELS%IDLA = 1 SMC%MCELS%IDFM = 1 SMC%MCELS%FORMAT = '(....)' - SMC%MCELS%FILENAME = '../input/BrestSMCels.dat' + SMC%MCELS%FILENAME = '../input_oasacm6/BrestSMCels.dat' SMC%ISIDE%IDF = 33 SMC%ISIDE%IDLA = 1 SMC%ISIDE%IDFM = 1 SMC%ISIDE%FORMAT = '(....)' - SMC%ISIDE%FILENAME = '../input/BrestISides.dat' + SMC%ISIDE%FILENAME = '../input_oasacm6/BrestISides.dat' SMC%JSIDE%IDF = 34 SMC%JSIDE%IDLA = 1 SMC%JSIDE%IDFM = 1 SMC%JSIDE%FORMAT = '(....)' - SMC%JSIDE%FILENAME = '../input/BrestJSides.dat' + SMC%JSIDE%FILENAME = '../input_oasacm6/BrestJSides.dat' SMC%SUBTR%IDF = 31 SMC%SUBTR%IDLA = 1 SMC%SUBTR%IDFM = 1 SMC%SUBTR%FORMAT = '(....)' - SMC%SUBTR%FILENAME = '../input/BrestObstrs.dat' + SMC%SUBTR%FILENAME = '../input_oasacm6/BrestObstrs.dat' / ! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input/ww3_ounf.inp-OASACM6 b/regtests/ww3_tp2.14/input_oasacm6/ww3_ounf.inp similarity index 96% rename from regtests/ww3_tp2.14/input/ww3_ounf.inp-OASACM6 rename to regtests/ww3_tp2.14/input_oasacm6/ww3_ounf.inp index b192de6cd..1b775c3d9 100755 --- a/regtests/ww3_tp2.14/input/ww3_ounf.inp-OASACM6 +++ b/regtests/ww3_tp2.14/input_oasacm6/ww3_ounf.inp @@ -11,7 +11,7 @@ $ file for a full documentation of field output options. Namelist type $ selection is used here (for alternative F/T flags, see ww3_shel.inp). $ N - HS FP DIR DP CHA UST DPT CUR WND ICE IC1 IC5 TWI + HS FP DIR DP CHA UST DPT CUR WND $ $--------------------------------------------------------------------- $ $ netCDF version [3,4] diff --git a/regtests/ww3_tp2.14/input_oasacm6/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasacm6/ww3_ounf.nml new file mode 100644 index 000000000..1a011a818 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm6/ww3_ounf.nml @@ -0,0 +1,87 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_ounf.nml - Grid output post-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the output fields to postprocess via FIELD_NML namelist +! +! * the detailed list of field names FIELD%LIST is given in ww3_shel.nml +! DPT CUR WND AST WLV ICE IBG D50 IC1 IC5 +! HS LM T02 T0M1 T01 FP DIR SPR DP HIG +! EF TH1M STH1M TH2M STH2M WN +! PHS PTP PLP PDIR PSPR PWS PDP PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR +! UST CHA CGE FAW TAW TWA WCC WCF WCH WCM FWS +! SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC +! ABR UBR BED FBB TBB +! MSS MSC WL02 AXT AYT AXY +! DTD FC CFX CFD CFK +! U1 U2 +! +! * namelist must be terminated with / +! * definitions & defaults: +! FIELD%TIMESTART = '19000101 000000' ! Stop date for the output field +! FIELD%TIMESTRIDE = '0' ! Time stride for the output field +! FIELD%TIMESTOP = '29001231 000000' ! Stop date for the output field +! FIELD%TIMECOUNT = '1000000000' ! Number of time steps +! FIELD%TIMESPLIT = 6 ! [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +! FIELD%LIST = 'unset' ! List of output fields +! FIELD%PARTITION = '0 1 2 3' ! List of wave partitions ['0 1 2 3 4 5'] +! FIELD%SAMEFILE = T ! All the variables in the same file [T|F] +! FIELD%TYPE = 3 ! [2 = SHORT, 3 = it depends , 4 = REAL] +! -------------------------------------------------------------------- ! +&FIELD_NML + FIELD%TIMESTART = '20080310 000000' + FIELD%TIMESTRIDE = '180' + FIELD%TIMECOUNT = '100' + FIELD%LIST = 'HS FP DIR DP CHA UST DPT CUR WND' + FIELD%PARTITION = '0' + FIELD%TYPE = 4 +/ + +! -------------------------------------------------------------------- ! +! Define the content of the output file via FILE_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%PREFIX = 'ww3.' ! Prefix for output file name +! FILE%NETCDF = 3 ! Netcdf version [3|4] +! FILE%IX0 = 1 ! First X-axis or node index +! FILE%IXN = 1000000000 ! Last X-axis or node index +! FILE%IY0 = 1 ! First Y-axis index +! FILE%IYN = 1000000000 ! Last Y-axis index +! -------------------------------------------------------------------- ! +&FILE_NML +/ + +! -------------------------------------------------------------------- ! +! Define the content of the output file via SMC_NML namelist +! +! * For SMC grids, IX0, IXN, IY0 and IYN from FILE_NML are not used. +! Two types of output are available: +! * TYPE=1: Flat 1D "seapoint" array of grid cells. +! * TYPE=2: Re-gridded regular grid with cell sizes being an integer +! * multiple of the smallest SMC grid cells size. +! +! * Note that the first/last longitudes and latitudes will be adjusted +! to snap to the underlying SMC grid edges. CELFAC is only used for +! type 2 output and defines the output cell sizes as an integer +! multiple of the smallest SMC Grid cell size. CELFAC should be a +! power of 2, e.g: 1,2,4,8,16, etc... +! +! * namelist must be terminated with / +! * definitions & defaults: +! SMC%TYPE = 1 ! SMC Grid type (1 or 2) +! SMC%SXO = -999.9 ! First longitude +! SMC%EXO = -999.9 ! Last longitude +! SMC%SYO = -999.9 ! First latitude +! SMC%EYO = -999.9 ! Last latitude +! SMC%CELFAC = 1 ! Cell size factor (SMCTYPE=2 only) +! SMC%NOVAL = UNDEF ! Fill value for wet cells with no data +! -------------------------------------------------------------------- ! +&SMC_NML + SMC%TYPE = 2 +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM6.inp b/regtests/ww3_tp2.14/input_oasacm6/ww3_shel.inp similarity index 100% rename from regtests/ww3_tp2.14/input/ww3_shel_OASACM6.inp rename to regtests/ww3_tp2.14/input_oasacm6/ww3_shel.inp diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM6.nml b/regtests/ww3_tp2.14/input_oasacm6/ww3_shel.nml similarity index 94% rename from regtests/ww3_tp2.14/input/ww3_shel_OASACM6.nml rename to regtests/ww3_tp2.14/input_oasacm6/ww3_shel.nml index 84d3e15c6..af2daa7bd 100644 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASACM6.nml +++ b/regtests/ww3_tp2.14/input_oasacm6/ww3_shel.nml @@ -44,6 +44,8 @@ ! INPUT%FORCING%WATER_LEVELS = 'F' ! INPUT%FORCING%CURRENTS = 'F' ! INPUT%FORCING%WINDS = 'F' +! INPUT%FORCING%ATM_MOMENTUM = 'F' +! INPUT%FORCING%AIR_DENSITY = 'F' ! INPUT%FORCING%ICE_CONC = 'F' ! INPUT%FORCING%ICE_PARAM1 = 'F' ! INPUT%FORCING%ICE_PARAM2 = 'F' @@ -64,7 +66,7 @@ ! -------------------------------------------------------------------- ! ! Define the output types point parameters via OUTPUT_TYPE_NML namelist ! -! * the point file is a space separated values per line : lon lat 'name' +! * the point file is a space separated values per line : ! longitude latitude 'name' (C*40) ! ! * the full list of field names is : @@ -94,9 +96,11 @@ ! T T 1 5 WLV WLV Water levels. ! T T 1 6 ICE ICE Ice concentration. ! T T 1 7 IBG IBG Iceberg-induced damping. -! T T 1 8 D50 D50 Median sediment grain size. -! T T 1 9 IC1 IC1 Ice thickness. -! T T 1 10 IC5 IC5 Ice flow diameter. +! T T 1 8 TAUA TAU Atm. momentum. +! T T 1 9 RHOAIR RHO Air density. +! T T 1 10 D50 D50 Median sediment grain size. +! T T 1 11 IC1 IC1 Ice thickness. +! T T 1 12 IC5 IC5 Ice flow diameter. ! ------------------------------------------------- ! 2 Standard mean wave Parameters ! ------------------------------------------------- @@ -117,6 +121,7 @@ ! T T 2 15 HMAXD SDMH St Dev of MXC (STE) ! T T 2 16 HCMAXD SDMHC St Dev of MXHC (STE) ! F T 2 17 WBT WBT Domiant wave breaking probability bT +! F F 2 18 FP0 TP Peak period (from peak freq) ! ------------------------------------------------- ! 3 Spectral Parameters (first 5) ! ------------------------------------------------- @@ -174,6 +179,7 @@ ! F F 6 9 P2SMS P2L Micro seism source term ! F F 6 10 TAUICE TWI Wave to sea ice stress ! F F 6 11 PHICE FIC Wave to sea ice energy flux +! F F 6 12 USSP USP Partitioned surface Stokes drift ! ------------------------------------------------- ! 7 Wave-bottom layer ! ------------------------------------------------- @@ -219,9 +225,14 @@ ! - Ice model : IC5 TWI ! - Received fields by ww3: ! - Ocean model : SSH CUR -! - Atmospheric model : WND +! - Atmospheric model : WND TAU RHO ! - Ice model : ICE IC1 IC5 ! +! * Coupling flag (T) or (F) at T+0 (extra fields in the restart needed) +! +! * extra fields to be written to the restart: +! - The list includes all fields sent by coupling exchange only +! ! * namelist must be terminated with / ! * definitions & defaults: ! TYPE%FIELD%LIST = 'unset' @@ -236,14 +247,15 @@ ! TYPE%PARTITION%FORMAT = T ! TYPE%COUPLING%SENT = 'unset' ! TYPE%COUPLING%RECEIVED = 'unset' -! TYPE%COUPLING%COUPLET0 = .FALSE. +! TYPE%COUPLING%COUPLET0 = F +! TYPE%RESTART%EXTRA = 'unset' ! ! -------------------------------------------------------------------- ! &OUTPUT_TYPE_NML TYPE%FIELD%LIST = 'HS FP DIR DP CHA UST DPT CUR WND' TYPE%COUPLING%SENT = 'ACHA' TYPE%COUPLING%RECEIVED = 'WND' - TYPE%COUPLING%COUPLET0 = .TRUE. + TYPE%COUPLING%COUPLET0 = T / ! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input_oasacm6/ww3_strt.inp b/regtests/ww3_tp2.14/input_oasacm6/ww3_strt.inp new file mode 100755 index 000000000..948c42911 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasacm6/ww3_strt.inp @@ -0,0 +1,72 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Initial conditions input file $ +$--------------------------------------------------------------------- $ +$ type of initial field ITYPE . +$ + 1 +$ +$ ITYPE = 1 ---------------------------------------------------------- $ +$ Gaussian in frequency and space, cos type in direction. +$ - fp and spread (Hz), mean direction (degr., oceanographic +$ convention) and cosine power, Xm and spread (degr. or m) Ym and +$ spread (degr. or m), Hmax (m) (Example for lon-lat grid in degr.). +$ +$ 0.10 0.01 270. 2 1. 0.5 1. 0.5 2.5 + 0.10 0.01 270. 2 0. 1000. 1. 1000. 2.5 +$ 0.10 0.01 270. 2 0. 1000. 1. 1000. 0.01 +$ 0.10 0.01 270. 2 0. 1000. 1. 1000. 0. +$ +$ ITYPE = 2 ---------------------------------------------------------- $ +$ JONSWAP spectrum with Hasselmann et al. (1980) direct. distribution. +$ - alfa, peak freq. (Hz), mean direction (degr., oceanographical +$ convention), gamma, sigA, sigB, Xm and spread (degr. or m) Ym and +$ spread (degr. or m) (Example for lon-lat grid in degr.). +$ alfa, sigA, sigB give default values if less than or equal to 0. +$ +$ 0.0081 0.1 270. 1.0 0. 0. 1. 100. 1. 100. +$ +$ ITYPE = 3 ---------------------------------------------------------- $ +$ Fetch-limited JONSWAP +$ - No additional data, the local spectrum is calculated using the +$ local wind speed and direction, using the spatial grid size as +$ fetch, and assuring that the spectrum is within the discrete +$ frequency range. +$ +$ ITYPE = 4 ---------------------------------------------------------- $ +$ User-defined spectrum +$ - Scale factor., defaults to 1 if less than or equal 0. +$ - Spectrum F(f,theta) (single read statement) +$ +$ -0.1 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 1 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 1 2 3 2 1 1 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 1 3 9 7 5 3 2 1 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 1 3 4 3 2 1 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ ITYPE = 5 ---------------------------------------------------------- $ +$ Starting from calm conditions. +$ - No additional data. +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASICM b/regtests/ww3_tp2.14/input_oasicm/TOYNAMELIST.nam similarity index 100% rename from regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASICM rename to regtests/ww3_tp2.14/input_oasicm/TOYNAMELIST.nam diff --git a/regtests/ww3_tp2.14/input/namcouple.OASICM b/regtests/ww3_tp2.14/input_oasicm/namcouple similarity index 100% rename from regtests/ww3_tp2.14/input/namcouple.OASICM rename to regtests/ww3_tp2.14/input_oasicm/namcouple diff --git a/regtests/ww3_tp2.14/input_oasicm/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasicm/namelists_IROISE.nml new file mode 100644 index 000000000..8b5707b65 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasicm/namelists_IROISE.nml @@ -0,0 +1 @@ +END OF NAMELISTS diff --git a/regtests/ww3_tp2.14/input_oasicm/prep_env.sh b/regtests/ww3_tp2.14/input_oasicm/prep_env.sh new file mode 100755 index 000000000..ee03d4033 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasicm/prep_env.sh @@ -0,0 +1,101 @@ +#!/bin/bash -e + +if [ $# -ne 4 ] +then + echo "need four arguments:" + echo '$1 : path_i' + echo '$2 : path_w' + echo '$3 : complr' + echo '$4 : switch' + exit 1 +fi + +path_i=$1 +path_w=$2 +cmplr=$3 +swtstr=$4 + +echo '' +echo ' setup coupling environment' +export WWATCH3_DIR=`grep WWATCH3_DIR $WWATCH3_ENV | awk -F' ' '{print $2}' ` +export WWATCH3_CC=`grep WWATCH3_CC $WWATCH3_ENV | awk -F' ' '{print $2}' ` + + +echo ' copy oasis and toy in $path_w' +cp -r $path_i/../input/toy $path_w/ +cp -r $path_i/../input/oasis3-mct $path_w/ + + +echo ' Setup oasis cmplr file' +cd $path_w/oasis3-mct/util/make_dir +source $WWATCH3_DIR/bin/cmplr.env +# shortlist optl +alloptl=( $optl ) +for ioptl in $(seq 2 ${#alloptl[@]}); do + optls="${optls}${alloptl[$ioptl]} " +done +# shortlist optc +alloptc=( $optc ) +for ioptc in $(seq 3 ${#alloptc[@]}); do + optcs="${optcs}${alloptc[$ioptc]} " +done +# shorten comp_mpi +comp_mpi_exe="$(echo $comp_mpi | awk -F' ' '{print $1}')" +# sed cmplr.tmpl +sed -e "s::$path_w/oasis3-mct:" \ + -e "s::$path_w/work_oasis3-mct:" \ + -e "s//$optcs/" -e "s//$optls/" \ + -e "s//$comp_mpi/" -e "s//$comp_mpi_exe/" \ + -e "s//$WWATCH3_CC/" cmplr.tmpl > cmplr +echo " sed cmplr.tmpl => cmplr" +chmod 775 cmplr + + +echo ' setup oasis make.inc file' +sed -e "s::$path_w/oasis3-mct:" make.inc.tmpl > make.inc + + +echo ' compile oasis coupler' +make realclean -f TopMakefileOasis3 > $path_w/oasis_clean.out +make -f TopMakefileOasis3 > $path_w/oasis_make.out + + +echo ' setup toy Makefile' +cd $path_w/toy +sed -e "s::$path_w/oasis3-mct:" Makefile.tmpl > Makefile + + +echo ' compile toy model' +make clean > $path_w/toy_clean.out +make > $path_w/toy_make.out + + +echo ' copy oasis coupler inputs' +cp $path_i/namcouple $path_w/namcouple + + +echo ' copy toy model inputs' +if [ -f $path_w/toy/r-toy.nc.$swtstr ]; then + cp $path_w/toy/r-toy.nc.$swtstr $path_w/r-toy.nc +else + echo "WARNING: model input $path_w/toy/r-toy.nc.$swtstr does not exist" +fi + +cp $path_w/toy/grid_toy_model.nc $path_w/ +cp $path_w/toy/toy_coupled_field.nc.$swtstr $path_w/toy_coupled_field.nc +cp $path_w/toy/toy_model $path_w/ + +cp $path_i/TOYNAMELIST.nam $path_w/TOYNAMELIST.nam + + +echo ' copy ww3 model inputs' +cd $path_w +if [ -f $path_i/r-ww3.nc ]; then + cp $path_i/r-ww3.nc $path_w/r-ww3.nc +else + echo "WARNING: model input $path_i/toy/r-ww3.nc does not exist" +fi + + + +echo '' diff --git a/regtests/ww3_tp2.14/input/switch_OASICM b/regtests/ww3_tp2.14/input_oasicm/switch_OASICM similarity index 100% rename from regtests/ww3_tp2.14/input/switch_OASICM rename to regtests/ww3_tp2.14/input_oasicm/switch_OASICM diff --git a/regtests/ww3_tp2.14/input_oasicm/ww3_grid.inp b/regtests/ww3_tp2.14/input_oasicm/ww3_grid.inp new file mode 100755 index 000000000..e367379b4 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasicm/ww3_grid.inp @@ -0,0 +1,276 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid preprocessor input file $ +$ -------------------------------------------------------------------- $ +$ Grid name (C*30, in quotes) +$ + 'IROISE 1.5KM' +$ +$ Frequency increment factor and first frequency (Hz) ---------------- $ +$ number of frequencies (wavenumbers) and directions +$ +1.1 0.0373 32 24 0. +$ +$ Set model flags ---------------------------------------------------- $ +$ - FLDRY Dry run (input/output only, no calculation). +$ - FLCX, FLCY Activate X and Y component of propagation. +$ - FLCTH, FLCK Activate direction and wavenumber shifts. +$ - FLSOU Activate source terms. +$ + F T T T T T +$ +$ Set time steps ----------------------------------------------------- $ +$ - Time step information (this information is always read) +$ maximum global time step, maximum CFL time step for x-y and +$ k-theta, minimum source term time step (all in seconds). +$ + 180. 45. 45. 10. +$ +$ Start of namelist input section ------------------------------------ $ +$ Starting with WAVEWATCH III version 2.00, the tunable parameters +$ for source terms, propagation schemes, and numerics are read using +$ namelists. Any namelist found in the folowing sections up to the +$ end-of-section identifier string (see below) is temporarily written +$ to ww3_grid.scratch, and read from there if necessary. Namelists +$ not needed for the given switch settings will be skipped +$ automatically, and the order of the namelists is immaterial. +$ As an example, namelist input to change SWELLF and ZWND in the +$ Tolman and Chalikov input would be +$ +$ &SIN2 SWELLF = 0.1, ZWND = 15. / +$ +$ Define constants in source terms ----------------------------------- $ +$ +$ Input - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SIN1 +$ CINP : Proportionality constant. +$ &SIN1 CINP= 0.25 / +$ Tolman and Chalikov : Namelist SIN2 +$ ZWND : Height of wind (m). +$ SWELLF : swell factor in (2.48). +$ STABSH, STABOF, CNEG, CPOS, FNEG : +$ c0, ST0, c1, c2 and f1 in . (2.63) +$ through (2.65) for definition of +$ effective wind speed (!/STAB2). +$ +$ Nonlinear interactions - - - - - - - - - - - - - - - - - - - - - - - +$ Discrete I.A. : Namelist SNL1 +$ LAMBDA : Lambda in source term. +$ NLPROP : C in sourc term. NOTE : default +$ value depends on other source +$ terms selected. +$ KDCONV : Factor before kd in Eq. (2.24). +$ KDMIN, SNLCS1, SNLCS2, SNLCS3 : +$ Minimum kd, and constants c1-3 +$ in depth scaling function. +$ Exact interactions : Namelist SNL2 +$ IQTYPE : Type of depth treatment +$ 1 : Deep water +$ 2 : Deep water / WAM scaling +$ 3 : Shallow water +$ TAILNL : Parametric tail power. +$ NDEPTH : Number of depths in for which +$ integration space is established. +$ Used for IQTYPE = 3 only +$ Namelist ANL2 +$ DEPTHS : Array with depths for NDEPTH = 3 +$ +$ Dissipation - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SDS1 +$ CDIS, APM : As in source term. +$ +$ Tolman and Chalikov : Namelist SDS2 +$ SDSA0, SDSA1, SDSA2, SDSB0, SDSB1, PHIMIN : +$ Constants a0, a1, a2, b0, b1 and +$ PHImin. +$ +$ Bottom friction - - - - - - - - - - - - - - - - - - - - - - - - - - +$ JONSWAP : Namelist SBT1 +$ GAMMA : As it says. +$ +$ Propagation schemes ------------------------------------------------ $ +$ First order : Namelist PRO1 +$ CFLTM : Maximum CFL number for refraction. +$ +$ UQ with diffusion : Namelist PRO2 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ DTIME : Swell age (s) in garden sprinkler +$ correction. If 0., all diffusion +$ switched off. If small non-zero +$ (DEFAULT !!!) only wave growth +$ diffusion. +$ LATMIN : Maximum latitude used in calc. of +$ strength of diffusion for prop. +$ +$ UQ with averaging : Namelist PRO3 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ WDTHCG : Tuning factor propag. direction. +$ WDTHTH : Tuning factor normal direction. +$ +$ UQ with divergence : Namelist PRO4 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ QTFAC : Tuning factor Eq. (3.41). +$ RSFAC : Tuning factor Eq. (3.42). +$ RNFAC : Tuning factor Eq. (3.43). +$ +$ Miscellaneous ------------------------------------------------------ $ +$ Misc. parameters : Namelist MISC +$ CICE0 : Ice concentration cut-off. +$ CICEN : Ice concentration cut-off. +$ XSEED : Xseed in seeding alg. (!/SEED). +$ FLAGTR : Indicating presence and type of +$ subgrid information : +$ 0 : No subgrid information. +$ 1 : Transparancies at cell boun- +$ daries between grid points. +$ 2 : Transp. at cell centers. +$ 3 : Like 1 with cont. ice. +$ 4 : Like 2 with cont. ice. +$ XP, XR, XFILT +$ Xp, Xr and Xf for the dynamic +$ integration scheme. +$ +$ In the 'Out of the box' test setup we run with sub-grid obstacles +$ and with continuous ice treatment. +$ +$ &MISC CICE0 = 0.25, CICEN = 0.75, FLAGTR = 4 / +$ +$ Mandatory string to identify end of namelist input section. +$ +END OF NAMELISTS +$ +$ Define grid -------------------------------------------------------- $ +$ Four records containing : +$ 1 NX, NY. As the outer grid lines are always defined as land +$ points, the minimum size is 3x3. +$ 2 Grid increments SX, SY (degr.or m) and scaling (division) factor. +$ If NX*SX = 360., latitudinal closure is applied. +$ 3 Coordinates of (1,1) (degr.) and scaling (division) factor. +$ 4 Limiting bottom depth (m) to discriminate between land and sea +$ points, minimum water depth (m) as allowed in model, unit number +$ of file with bottom depths, scale factor for bottom depths (mult.), +$ IDLA, IDFM, format for formatted read, FROM and filename. +$ IDLA : Layout indicator : +$ 1 : Read line-by-line bottom to top. +$ 2 : Like 1, single read statement. +$ 3 : Read line-by-line top to bottom. +$ 4 : Like 3, single read statement. +$ IDFM : format indicator : +$ 1 : Free format. +$ 2 : Fixed format with above format descriptor. +$ 3 : Unformatted. +$ FROM : file type parameter +$ 'UNIT' : open file by unit number only. +$ 'NAME' : open file by name and assign to unit. +$ +$ Example for longitude-latitude grid (switch !/LLG), for Cartesian +$ grid the unit is meters (NOT km). +$ + 'RECT' T 'NONE' + 103 119 + 0.019 0.0125 1. + -6.119 47.6375 1. + 0.0 1.0 20 -1. 1 1 '(20f10.2)' 'NAME' '../input/iro_1p5k.bot' +$ +$ If the above unit number equals 10, the bottom data is read from +$ this file and follows below (no intermediate comment lines allowed). +$ +$ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +$ +$ If sub-grid information is avalaible as indicated by FLAGTR above, +$ additional input to define this is needed below. In such cases a +$ field of fractional obstructions at or between grid points needs to +$ be supplied. First the location and format of the data is defined +$ by (as above) : +$ - Unit number of file (can be 10, and/or identical to bottem depth +$ unit), scale factor for fractional obstruction, IDLA, IDFM, +$ format for formatted read, FROM and filename +$ +$ 10 0.2 3 1 '(....)' 'NAME' 'obstr.inp' +$ +$ *** NOTE if this unit number is the same as the previous bottom +$ depth unit number, it is assumed that this is the same file +$ without further checks. *** +$ +$ If the above unit number equals 10, the bottom data is read from +$ this file and follows below (no intermediate comment lines allowed, +$ except between the two fields). +$ +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 4 0 0 0 0 0 +$ 0 0 0 0 0 0 4 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 5 5 5 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ *** NOTE size of fields is always NX * NY *** +$ + 10 3 1 '(....)' 'PART' 'mapsta.inp' +$ *** NOTE size of fields is always NX * NY *** +$ +$ Input boundary points ---------------------------------------------- $ +$ An unlimited number of lines identifying points at which input +$ boundary conditions are to be defined. If the actual input data is +$ not defined in the actual wave model run, the initial conditions +$ will be applied as constant boundary conditions. Each line contains: +$ Discrete grid counters (IX,IY) of the active point and a +$ connect flag. If this flag is true, and the present and previous +$ point are on a grid line or diagonal, all intermediate points +$ are also defined as boundary points. +$ + 103 86 F + 103 119 T + 1 119 T + 1 1 T + 103 1 T + 103 11 T +$ +$ Close list by defining point (0,0) (mandatory) +$ + 0 0 F +$ Excluded grid points from segment data ( FROM != PART ) +$ First defined as lines, identical to the definition of the input +$ boundary points, and closed the same way. +$ + 0 0 F +$ +$ Second, define a point in a closed body of sea points to remove +$ the entire body os sea points. Also close by point (0,0) +$ + 0 0 +$ +$ Output boundary points --------------------------------------------- $ +$ Output boundary points are defined as a number of straight lines, +$ defined by its starting point (X0,Y0), increments (DX,DY) and number +$ of points. A negative number of points starts a new output file. +$ Note that this data is only generated if requested by the actual +$ program. Example again for spherical grid in degrees. +$ +$ Close list by defining line with 0 points (mandatory) +$ + 0. 0. 0. 0. 0 +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasicm/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasicm/ww3_grid.nml new file mode 100644 index 000000000..c62679719 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasicm/ww3_grid.nml @@ -0,0 +1,276 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III - ww3_grid.nml - Grid pre-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the spectrum parameterization via SPECTRUM_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! SPECTRUM%XFR = 0. ! frequency increment +! SPECTRUM%FREQ1 = 0. ! first frequency (Hz) +! SPECTRUM%NK = 0 ! number of frequencies (wavenumbers) +! SPECTRUM%NTH = 0 ! number of direction bins +! SPECTRUM%THOFF = 0. ! relative offset of first direction [-0.5,0.5] +! -------------------------------------------------------------------- ! +&SPECTRUM_NML + SPECTRUM%XFR = 1.1 + SPECTRUM%FREQ1 = 0.0373 + SPECTRUM%NK = 32 + SPECTRUM%NTH = 24 +/ + +! -------------------------------------------------------------------- ! +! Define the run parameterization via RUN_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! RUN%FLDRY = F ! dry run (I/O only, no calculation) +! RUN%FLCX = F ! x-component of propagation +! RUN%FLCY = F ! y-component of propagation +! RUN%FLCTH = F ! direction shift +! RUN%FLCK = F ! wavenumber shift +! RUN%FLSOU = F ! source terms +! -------------------------------------------------------------------- ! +&RUN_NML + RUN%FLCX = T + RUN%FLCY = T + RUN%FLCTH = T + RUN%FLCK = T + RUN%FLSOU = T +/ + +! -------------------------------------------------------------------- ! +! Define the timesteps parameterization via TIMESTEPS_NML namelist +! +! * It is highly recommended to set up time steps which are multiple +! between them. +! +! * The first time step to calculate is the maximum CFL time step +! which depend on the lowest frequency FREQ1 previously set up and the +! lowest spatial grid resolution in meters DXY. +! reminder : 1 degree=60minutes // 1minute=1mile // 1mile=1.852km +! The formula for the CFL time is : +! Tcfl = DXY / (G / (FREQ1*4*Pi) ) with the constants Pi=3,14 and G=9.8m/s²; +! DTXY ~= 90% Tcfl +! DTMAX ~= 3 * DTXY (maximum global time step limit) +! +! * The refraction time step depends on how strong can be the current velocities +! on your grid : +! DTKTH ~= DTMAX / 2 ! in case of no or light current velocities +! DTKTH ~= DTMAX / 10 ! in case of strong current velocities +! +! * The source terms time step is usually defined between 5s and 60s. +! A common value is 10s. +! DTMIN ~= 10 +! +! * namelist must be terminated with / +! * definitions & defaults: +! TIMESTEPS%DTMAX = 0. ! maximum global time step (s) +! TIMESTEPS%DTXY = 0. ! maximum CFL time step for x-y (s) +! TIMESTEPS%DTKTH = 0. ! maximum CFL time step for k-th (s) +! TIMESTEPS%DTMIN = 0. ! minimum source term time step (s) +! -------------------------------------------------------------------- ! +&TIMESTEPS_NML + TIMESTEPS%DTMAX = 180. + TIMESTEPS%DTXY = 45. + TIMESTEPS%DTKTH = 45. + TIMESTEPS%DTMIN = 10. +/ + +! -------------------------------------------------------------------- ! +! Define the grid to preprocess via GRID_NML namelist +! +! * the tunable parameters for source terms, propagation schemes, and +! numerics are read using namelists. +! * Any namelist found in the folowing sections is temporarily written +! to param.scratch, and read from there if necessary. +! * The order of the namelists is immaterial. +! * Namelists not needed for the given switch settings will be skipped +! automatically +! +! * grid type can be : +! 'RECT' : rectilinear +! 'CURV' : curvilinear +! 'UNST' : unstructured (triangle-based) +! +! * coordinate system can be : +! 'SPHE' : Spherical (degrees) +! 'CART' : Cartesian (meters) +! +! * grid closure can only be applied in spherical coordinates +! +! * grid closure can be : +! 'NONE' : No closure is applied +! 'SMPL' : Simple grid closure. Grid is periodic in the +! : i-index and wraps at i=NX+1. In other words, +! : (NX+1,J) => (1,J). A grid with simple closure +! : may be rectilinear or curvilinear. +! 'TRPL' : Tripole grid closure : Grid is periodic in the +! : i-index and wraps at i=NX+1 and has closure at +! : j=NY+1. In other words, (NX+1,J<=NY) => (1,J) +! : and (I,NY+1) => (NX-I+1,NY). Tripole +! : grid closure requires that NX be even. A grid +! : with tripole closure must be curvilinear. +! +! * The coastline limit depth is the value which distinguish the sea +! points to the land points. All the points with depth values (ZBIN) +! greater than this limit (ZLIM) will be considered as excluded points +! and will never be wet points, even if the water level grows over. +! It can only overwrite the status of a sea point to a land point. +! The value must have a negative value under the mean sea level +! +! * The minimum water depth allowed to compute the model is the absolute +! depth value (DMIN) used in the model if the input depth is lower to +! avoid the model to blow up. +! +! * namelist must be terminated with / +! * definitions & defaults: +! GRID%NAME = 'unset' ! grid name (30 char) +! GRID%NML = 'namelists.nml' ! namelists filename +! GRID%TYPE = 'unset' ! grid type +! GRID%COORD = 'unset' ! coordinate system +! GRID%CLOS = 'unset' ! grid closure +! +! GRID%ZLIM = 0. ! coastline limit depth (m) +! GRID%DMIN = 0. ! abs. minimum water depth (m) +! -------------------------------------------------------------------- ! +&GRID_NML + GRID%NAME = 'IROISE 1.5KM' + GRID%NML = '../input_oasicm/namelists_IROISE.nml' + GRID%TYPE = 'RECT' + GRID%COORD = 'SPHE' + GRID%CLOS = 'NONE' + GRID%ZLIM = 0.0 + GRID%DMIN = 1.0 +/ + +! -------------------------------------------------------------------- ! +! Define the rectilinear grid type via RECT_NML namelist +! - only for RECT grids - +! +! * The minimum grid size is 3x3. +! +! * If the grid increments SX and SY are given in minutes of arc, the scaling +! factor SF must be set to 60. to provide an increment factor in degree. +! +! * If CSTRG='SMPL', then SX is forced to 360/NX. +! +! * value <= value_read / scale_fac +! +! * namelist must be terminated with / +! * definitions & defaults: +! RECT%NX = 0 ! number of points along x-axis +! RECT%NY = 0 ! number of points along y-axis +! +! RECT%SX = 0. ! grid increment along x-axis +! RECT%SY = 0. ! grid increment along y-axis +! RECT%SF = 1. ! scaling division factor for x-y axis +! +! RECT%X0 = 0. ! x-coordinate of lower-left corner (deg) +! RECT%Y0 = 0. ! y-coordinate of lower-left corner (deg) +! RECT%SF0 = 1. ! scaling division factor for x0,y0 coord +! -------------------------------------------------------------------- ! +&RECT_NML + RECT%NX = 103 + RECT%NY = 119 + RECT%SX = 0.019 + RECT%SY = 0.0125 + RECT%X0 = -6.119 + RECT%Y0 = 47.6375 +/ + +! -------------------------------------------------------------------- ! +! Define the depth to preprocess via DEPTH_NML namelist +! - for RECT and CURV grids - +! +! * if no obstruction subgrid, need to set &MISC FLAGTR = 0 +! +! * The depth value must have negative values under the mean sea level +! +! * value <= value_read * scale_fac +! +! * IDLA : Layout indicator : +! 1 : Read line-by-line bottom to top. (default) +! 2 : Like 1, single read statement. +! 3 : Read line-by-line top to bottom. +! 4 : Like 3, single read statement. +! * IDFM : format indicator : +! 1 : Free format. (default) +! 2 : Fixed format. +! 3 : Unformatted. +! * FORMAT : element format to read : +! '(....)' : auto detected (default) +! '(f10.6)' : float type +! +! * Example : +! IDF SF IDLA IDFM FORMAT FILENAME +! 50 0.001 1 1 '(....)' 'GLOB-30M.bot' +! +! * namelist must be terminated with / +! * definitions & defaults: +! DEPTH%SF = 1. ! scale factor +! DEPTH%FILENAME = 'unset' ! filename +! DEPTH%IDF = 50 ! file unit number +! DEPTH%IDLA = 1 ! layout indicator +! DEPTH%IDFM = 1 ! format indicator +! DEPTH%FORMAT = '(....)' ! formatted read format +! -------------------------------------------------------------------- ! +&DEPTH_NML + DEPTH%SF = -1. + DEPTH%FILENAME = '../input/iro_1p5k.bot' + DEPTH%FORMAT = '(20f10.2)' +/ + +! -------------------------------------------------------------------- ! +! Define the input boundary points via INBND_COUNT_NML and +! INBND_POINT_NML namelist +! - for RECT, CURV and UNST grids - +! +! * If no mask defined, INBOUND can be used +! +! * If the actual input data is not defined in the actual wave model run +! the initial conditions will be applied as constant boundary conditions. +! +! * The number of points is defined by INBND_COUNT +! +! * The points must start from index 1 to N +! +! * Each line contains: +! Discrete grid counters (IX,IY) of the active point and a +! connect flag. If this flag is true, and the present and previous +! point are on a grid line or diagonal, all intermediate points +! are also defined as boundary points. +! +! * Included point : +! grid points from segment data +! Defines as lines identifying points at which +! input boundary conditions are to be defined. +! +! * namelist must be terminated with / +! * definitions & defaults: +! INBND_COUNT%N_POINT = 0 ! number of segments +! +! INBND_POINT(I)%X_INDEX = 0 ! x index included point +! INBND_POINT(I)%Y_INDEX = 0 ! y index included point +! INBND_POINT(I)%CONNECT = F ! connect flag +! +! OR +! INBND_POINT(I) = 0 0 F ! included point +! -------------------------------------------------------------------- ! +&INBND_COUNT_NML + INBND_COUNT%N_POINT = 6 +/ + +&INBND_POINT_NML + INBND_POINT(1) = 103 86 F + INBND_POINT(2) = 103 119 T + INBND_POINT(3) = 1 119 T + INBND_POINT(4) = 1 1 T + INBND_POINT(5) = 103 1 T + INBND_POINT(6) = 103 11 T +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input/ww3_ounf.inp b/regtests/ww3_tp2.14/input_oasicm/ww3_ounf.inp similarity index 100% rename from regtests/ww3_tp2.14/input/ww3_ounf.inp rename to regtests/ww3_tp2.14/input_oasicm/ww3_ounf.inp diff --git a/regtests/ww3_tp2.14/input/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasicm/ww3_ounf.nml similarity index 100% rename from regtests/ww3_tp2.14/input/ww3_ounf.nml rename to regtests/ww3_tp2.14/input_oasicm/ww3_ounf.nml diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASICM.inp b/regtests/ww3_tp2.14/input_oasicm/ww3_shel.inp similarity index 100% rename from regtests/ww3_tp2.14/input/ww3_shel_OASICM.inp rename to regtests/ww3_tp2.14/input_oasicm/ww3_shel.inp diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASICM.nml b/regtests/ww3_tp2.14/input_oasicm/ww3_shel.nml similarity index 95% rename from regtests/ww3_tp2.14/input/ww3_shel_OASICM.nml rename to regtests/ww3_tp2.14/input_oasicm/ww3_shel.nml index 6f6418635..d48edfbd8 100644 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASICM.nml +++ b/regtests/ww3_tp2.14/input_oasicm/ww3_shel.nml @@ -44,6 +44,8 @@ ! INPUT%FORCING%WATER_LEVELS = 'F' ! INPUT%FORCING%CURRENTS = 'F' ! INPUT%FORCING%WINDS = 'F' +! INPUT%FORCING%ATM_MOMENTUM = 'F' +! INPUT%FORCING%AIR_DENSITY = 'F' ! INPUT%FORCING%ICE_CONC = 'F' ! INPUT%FORCING%ICE_PARAM1 = 'F' ! INPUT%FORCING%ICE_PARAM2 = 'F' @@ -58,6 +60,7 @@ ! INPUT%ASSIM%SPEC2D = 'F' ! -------------------------------------------------------------------- ! &INPUT_NML + INPUT%FORCING%ICE_CONC = 'C' INPUT%FORCING%ICE_PARAM1 = 'C' INPUT%FORCING%ICE_PARAM5 = 'C' / @@ -95,9 +98,11 @@ ! T T 1 5 WLV WLV Water levels. ! T T 1 6 ICE ICE Ice concentration. ! T T 1 7 IBG IBG Iceberg-induced damping. -! T T 1 8 D50 D50 Median sediment grain size. -! T T 1 9 IC1 IC1 Ice thickness. -! T T 1 10 IC5 IC5 Ice flow diameter. +! T T 1 8 TAUA TAU Atm. momentum. +! T T 1 9 RHOAIR RHO Air density. +! T T 1 10 D50 D50 Median sediment grain size. +! T T 1 11 IC1 IC1 Ice thickness. +! T T 1 12 IC5 IC5 Ice flow diameter. ! ------------------------------------------------- ! 2 Standard mean wave Parameters ! ------------------------------------------------- @@ -118,6 +123,7 @@ ! T T 2 15 HMAXD SDMH St Dev of MXC (STE) ! T T 2 16 HCMAXD SDMHC St Dev of MXHC (STE) ! F T 2 17 WBT WBT Domiant wave breaking probability bT +! F F 2 18 FP0 TP Peak period (from peak freq) ! ------------------------------------------------- ! 3 Spectral Parameters (first 5) ! ------------------------------------------------- @@ -175,6 +181,7 @@ ! F F 6 9 P2SMS P2L Micro seism source term ! F F 6 10 TAUICE TWI Wave to sea ice stress ! F F 6 11 PHICE FIC Wave to sea ice energy flux +! F F 6 12 USSP USP Partitioned surface Stokes drift ! ------------------------------------------------- ! 7 Wave-bottom layer ! ------------------------------------------------- @@ -220,9 +227,14 @@ ! - Ice model : IC5 TWI ! - Received fields by ww3: ! - Ocean model : SSH CUR -! - Atmospheric model : WND +! - Atmospheric model : WND TAU RHO ! - Ice model : ICE IC1 IC5 ! +! * Coupling flag (T) or (F) at T+0 (extra fields in the restart needed) +! +! * extra fields to be written to the restart: +! - The list includes all fields sent by coupling exchange only +! ! * namelist must be terminated with / ! * definitions & defaults: ! TYPE%FIELD%LIST = 'unset' @@ -237,6 +249,8 @@ ! TYPE%PARTITION%FORMAT = T ! TYPE%COUPLING%SENT = 'unset' ! TYPE%COUPLING%RECEIVED = 'unset' +! TYPE%COUPLING%COUPLET0 = F +! TYPE%RESTART%EXTRA = 'unset' ! ! -------------------------------------------------------------------- ! &OUTPUT_TYPE_NML diff --git a/regtests/ww3_tp2.14/input_oasicm/ww3_strt.inp b/regtests/ww3_tp2.14/input_oasicm/ww3_strt.inp new file mode 100755 index 000000000..948c42911 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasicm/ww3_strt.inp @@ -0,0 +1,72 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Initial conditions input file $ +$--------------------------------------------------------------------- $ +$ type of initial field ITYPE . +$ + 1 +$ +$ ITYPE = 1 ---------------------------------------------------------- $ +$ Gaussian in frequency and space, cos type in direction. +$ - fp and spread (Hz), mean direction (degr., oceanographic +$ convention) and cosine power, Xm and spread (degr. or m) Ym and +$ spread (degr. or m), Hmax (m) (Example for lon-lat grid in degr.). +$ +$ 0.10 0.01 270. 2 1. 0.5 1. 0.5 2.5 + 0.10 0.01 270. 2 0. 1000. 1. 1000. 2.5 +$ 0.10 0.01 270. 2 0. 1000. 1. 1000. 0.01 +$ 0.10 0.01 270. 2 0. 1000. 1. 1000. 0. +$ +$ ITYPE = 2 ---------------------------------------------------------- $ +$ JONSWAP spectrum with Hasselmann et al. (1980) direct. distribution. +$ - alfa, peak freq. (Hz), mean direction (degr., oceanographical +$ convention), gamma, sigA, sigB, Xm and spread (degr. or m) Ym and +$ spread (degr. or m) (Example for lon-lat grid in degr.). +$ alfa, sigA, sigB give default values if less than or equal to 0. +$ +$ 0.0081 0.1 270. 1.0 0. 0. 1. 100. 1. 100. +$ +$ ITYPE = 3 ---------------------------------------------------------- $ +$ Fetch-limited JONSWAP +$ - No additional data, the local spectrum is calculated using the +$ local wind speed and direction, using the spatial grid size as +$ fetch, and assuring that the spectrum is within the discrete +$ frequency range. +$ +$ ITYPE = 4 ---------------------------------------------------------- $ +$ User-defined spectrum +$ - Scale factor., defaults to 1 if less than or equal 0. +$ - Spectrum F(f,theta) (single read statement) +$ +$ -0.1 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 1 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 1 2 3 2 1 1 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 1 3 9 7 5 3 2 1 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 1 3 4 3 2 1 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ ITYPE = 5 ---------------------------------------------------------- $ +$ Starting from calm conditions. +$ - No additional data. +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASOCM b/regtests/ww3_tp2.14/input_oasocm/TOYNAMELIST.nam similarity index 100% rename from regtests/ww3_tp2.14/input/TOYNAMELIST.nam.OASOCM rename to regtests/ww3_tp2.14/input_oasocm/TOYNAMELIST.nam diff --git a/regtests/ww3_tp2.14/input/namcouple.OASOCM b/regtests/ww3_tp2.14/input_oasocm/namcouple similarity index 100% rename from regtests/ww3_tp2.14/input/namcouple.OASOCM rename to regtests/ww3_tp2.14/input_oasocm/namcouple diff --git a/regtests/ww3_tp2.14/input_oasocm/namelists_IROISE.nml b/regtests/ww3_tp2.14/input_oasocm/namelists_IROISE.nml new file mode 100644 index 000000000..8b5707b65 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasocm/namelists_IROISE.nml @@ -0,0 +1 @@ +END OF NAMELISTS diff --git a/regtests/ww3_tp2.14/input_oasocm/prep_env.sh b/regtests/ww3_tp2.14/input_oasocm/prep_env.sh new file mode 100755 index 000000000..ee03d4033 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasocm/prep_env.sh @@ -0,0 +1,101 @@ +#!/bin/bash -e + +if [ $# -ne 4 ] +then + echo "need four arguments:" + echo '$1 : path_i' + echo '$2 : path_w' + echo '$3 : complr' + echo '$4 : switch' + exit 1 +fi + +path_i=$1 +path_w=$2 +cmplr=$3 +swtstr=$4 + +echo '' +echo ' setup coupling environment' +export WWATCH3_DIR=`grep WWATCH3_DIR $WWATCH3_ENV | awk -F' ' '{print $2}' ` +export WWATCH3_CC=`grep WWATCH3_CC $WWATCH3_ENV | awk -F' ' '{print $2}' ` + + +echo ' copy oasis and toy in $path_w' +cp -r $path_i/../input/toy $path_w/ +cp -r $path_i/../input/oasis3-mct $path_w/ + + +echo ' Setup oasis cmplr file' +cd $path_w/oasis3-mct/util/make_dir +source $WWATCH3_DIR/bin/cmplr.env +# shortlist optl +alloptl=( $optl ) +for ioptl in $(seq 2 ${#alloptl[@]}); do + optls="${optls}${alloptl[$ioptl]} " +done +# shortlist optc +alloptc=( $optc ) +for ioptc in $(seq 3 ${#alloptc[@]}); do + optcs="${optcs}${alloptc[$ioptc]} " +done +# shorten comp_mpi +comp_mpi_exe="$(echo $comp_mpi | awk -F' ' '{print $1}')" +# sed cmplr.tmpl +sed -e "s::$path_w/oasis3-mct:" \ + -e "s::$path_w/work_oasis3-mct:" \ + -e "s//$optcs/" -e "s//$optls/" \ + -e "s//$comp_mpi/" -e "s//$comp_mpi_exe/" \ + -e "s//$WWATCH3_CC/" cmplr.tmpl > cmplr +echo " sed cmplr.tmpl => cmplr" +chmod 775 cmplr + + +echo ' setup oasis make.inc file' +sed -e "s::$path_w/oasis3-mct:" make.inc.tmpl > make.inc + + +echo ' compile oasis coupler' +make realclean -f TopMakefileOasis3 > $path_w/oasis_clean.out +make -f TopMakefileOasis3 > $path_w/oasis_make.out + + +echo ' setup toy Makefile' +cd $path_w/toy +sed -e "s::$path_w/oasis3-mct:" Makefile.tmpl > Makefile + + +echo ' compile toy model' +make clean > $path_w/toy_clean.out +make > $path_w/toy_make.out + + +echo ' copy oasis coupler inputs' +cp $path_i/namcouple $path_w/namcouple + + +echo ' copy toy model inputs' +if [ -f $path_w/toy/r-toy.nc.$swtstr ]; then + cp $path_w/toy/r-toy.nc.$swtstr $path_w/r-toy.nc +else + echo "WARNING: model input $path_w/toy/r-toy.nc.$swtstr does not exist" +fi + +cp $path_w/toy/grid_toy_model.nc $path_w/ +cp $path_w/toy/toy_coupled_field.nc.$swtstr $path_w/toy_coupled_field.nc +cp $path_w/toy/toy_model $path_w/ + +cp $path_i/TOYNAMELIST.nam $path_w/TOYNAMELIST.nam + + +echo ' copy ww3 model inputs' +cd $path_w +if [ -f $path_i/r-ww3.nc ]; then + cp $path_i/r-ww3.nc $path_w/r-ww3.nc +else + echo "WARNING: model input $path_i/toy/r-ww3.nc does not exist" +fi + + + +echo '' diff --git a/regtests/ww3_tp2.14/input/switch_OASOCM b/regtests/ww3_tp2.14/input_oasocm/switch_OASOCM similarity index 100% rename from regtests/ww3_tp2.14/input/switch_OASOCM rename to regtests/ww3_tp2.14/input_oasocm/switch_OASOCM diff --git a/regtests/ww3_tp2.14/input_oasocm/ww3_grid.inp b/regtests/ww3_tp2.14/input_oasocm/ww3_grid.inp new file mode 100755 index 000000000..e367379b4 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasocm/ww3_grid.inp @@ -0,0 +1,276 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid preprocessor input file $ +$ -------------------------------------------------------------------- $ +$ Grid name (C*30, in quotes) +$ + 'IROISE 1.5KM' +$ +$ Frequency increment factor and first frequency (Hz) ---------------- $ +$ number of frequencies (wavenumbers) and directions +$ +1.1 0.0373 32 24 0. +$ +$ Set model flags ---------------------------------------------------- $ +$ - FLDRY Dry run (input/output only, no calculation). +$ - FLCX, FLCY Activate X and Y component of propagation. +$ - FLCTH, FLCK Activate direction and wavenumber shifts. +$ - FLSOU Activate source terms. +$ + F T T T T T +$ +$ Set time steps ----------------------------------------------------- $ +$ - Time step information (this information is always read) +$ maximum global time step, maximum CFL time step for x-y and +$ k-theta, minimum source term time step (all in seconds). +$ + 180. 45. 45. 10. +$ +$ Start of namelist input section ------------------------------------ $ +$ Starting with WAVEWATCH III version 2.00, the tunable parameters +$ for source terms, propagation schemes, and numerics are read using +$ namelists. Any namelist found in the folowing sections up to the +$ end-of-section identifier string (see below) is temporarily written +$ to ww3_grid.scratch, and read from there if necessary. Namelists +$ not needed for the given switch settings will be skipped +$ automatically, and the order of the namelists is immaterial. +$ As an example, namelist input to change SWELLF and ZWND in the +$ Tolman and Chalikov input would be +$ +$ &SIN2 SWELLF = 0.1, ZWND = 15. / +$ +$ Define constants in source terms ----------------------------------- $ +$ +$ Input - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SIN1 +$ CINP : Proportionality constant. +$ &SIN1 CINP= 0.25 / +$ Tolman and Chalikov : Namelist SIN2 +$ ZWND : Height of wind (m). +$ SWELLF : swell factor in (2.48). +$ STABSH, STABOF, CNEG, CPOS, FNEG : +$ c0, ST0, c1, c2 and f1 in . (2.63) +$ through (2.65) for definition of +$ effective wind speed (!/STAB2). +$ +$ Nonlinear interactions - - - - - - - - - - - - - - - - - - - - - - - +$ Discrete I.A. : Namelist SNL1 +$ LAMBDA : Lambda in source term. +$ NLPROP : C in sourc term. NOTE : default +$ value depends on other source +$ terms selected. +$ KDCONV : Factor before kd in Eq. (2.24). +$ KDMIN, SNLCS1, SNLCS2, SNLCS3 : +$ Minimum kd, and constants c1-3 +$ in depth scaling function. +$ Exact interactions : Namelist SNL2 +$ IQTYPE : Type of depth treatment +$ 1 : Deep water +$ 2 : Deep water / WAM scaling +$ 3 : Shallow water +$ TAILNL : Parametric tail power. +$ NDEPTH : Number of depths in for which +$ integration space is established. +$ Used for IQTYPE = 3 only +$ Namelist ANL2 +$ DEPTHS : Array with depths for NDEPTH = 3 +$ +$ Dissipation - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SDS1 +$ CDIS, APM : As in source term. +$ +$ Tolman and Chalikov : Namelist SDS2 +$ SDSA0, SDSA1, SDSA2, SDSB0, SDSB1, PHIMIN : +$ Constants a0, a1, a2, b0, b1 and +$ PHImin. +$ +$ Bottom friction - - - - - - - - - - - - - - - - - - - - - - - - - - +$ JONSWAP : Namelist SBT1 +$ GAMMA : As it says. +$ +$ Propagation schemes ------------------------------------------------ $ +$ First order : Namelist PRO1 +$ CFLTM : Maximum CFL number for refraction. +$ +$ UQ with diffusion : Namelist PRO2 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ DTIME : Swell age (s) in garden sprinkler +$ correction. If 0., all diffusion +$ switched off. If small non-zero +$ (DEFAULT !!!) only wave growth +$ diffusion. +$ LATMIN : Maximum latitude used in calc. of +$ strength of diffusion for prop. +$ +$ UQ with averaging : Namelist PRO3 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ WDTHCG : Tuning factor propag. direction. +$ WDTHTH : Tuning factor normal direction. +$ +$ UQ with divergence : Namelist PRO4 +$ CFLTM : Maximum CFL number for refraction. +$ FLSOFT : Flag for 'soft' land boundaries. +$ QTFAC : Tuning factor Eq. (3.41). +$ RSFAC : Tuning factor Eq. (3.42). +$ RNFAC : Tuning factor Eq. (3.43). +$ +$ Miscellaneous ------------------------------------------------------ $ +$ Misc. parameters : Namelist MISC +$ CICE0 : Ice concentration cut-off. +$ CICEN : Ice concentration cut-off. +$ XSEED : Xseed in seeding alg. (!/SEED). +$ FLAGTR : Indicating presence and type of +$ subgrid information : +$ 0 : No subgrid information. +$ 1 : Transparancies at cell boun- +$ daries between grid points. +$ 2 : Transp. at cell centers. +$ 3 : Like 1 with cont. ice. +$ 4 : Like 2 with cont. ice. +$ XP, XR, XFILT +$ Xp, Xr and Xf for the dynamic +$ integration scheme. +$ +$ In the 'Out of the box' test setup we run with sub-grid obstacles +$ and with continuous ice treatment. +$ +$ &MISC CICE0 = 0.25, CICEN = 0.75, FLAGTR = 4 / +$ +$ Mandatory string to identify end of namelist input section. +$ +END OF NAMELISTS +$ +$ Define grid -------------------------------------------------------- $ +$ Four records containing : +$ 1 NX, NY. As the outer grid lines are always defined as land +$ points, the minimum size is 3x3. +$ 2 Grid increments SX, SY (degr.or m) and scaling (division) factor. +$ If NX*SX = 360., latitudinal closure is applied. +$ 3 Coordinates of (1,1) (degr.) and scaling (division) factor. +$ 4 Limiting bottom depth (m) to discriminate between land and sea +$ points, minimum water depth (m) as allowed in model, unit number +$ of file with bottom depths, scale factor for bottom depths (mult.), +$ IDLA, IDFM, format for formatted read, FROM and filename. +$ IDLA : Layout indicator : +$ 1 : Read line-by-line bottom to top. +$ 2 : Like 1, single read statement. +$ 3 : Read line-by-line top to bottom. +$ 4 : Like 3, single read statement. +$ IDFM : format indicator : +$ 1 : Free format. +$ 2 : Fixed format with above format descriptor. +$ 3 : Unformatted. +$ FROM : file type parameter +$ 'UNIT' : open file by unit number only. +$ 'NAME' : open file by name and assign to unit. +$ +$ Example for longitude-latitude grid (switch !/LLG), for Cartesian +$ grid the unit is meters (NOT km). +$ + 'RECT' T 'NONE' + 103 119 + 0.019 0.0125 1. + -6.119 47.6375 1. + 0.0 1.0 20 -1. 1 1 '(20f10.2)' 'NAME' '../input/iro_1p5k.bot' +$ +$ If the above unit number equals 10, the bottom data is read from +$ this file and follows below (no intermediate comment lines allowed). +$ +$ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 +$ +$ If sub-grid information is avalaible as indicated by FLAGTR above, +$ additional input to define this is needed below. In such cases a +$ field of fractional obstructions at or between grid points needs to +$ be supplied. First the location and format of the data is defined +$ by (as above) : +$ - Unit number of file (can be 10, and/or identical to bottem depth +$ unit), scale factor for fractional obstruction, IDLA, IDFM, +$ format for formatted read, FROM and filename +$ +$ 10 0.2 3 1 '(....)' 'NAME' 'obstr.inp' +$ +$ *** NOTE if this unit number is the same as the previous bottom +$ depth unit number, it is assumed that this is the same file +$ without further checks. *** +$ +$ If the above unit number equals 10, the bottom data is read from +$ this file and follows below (no intermediate comment lines allowed, +$ except between the two fields). +$ +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 4 0 0 0 0 0 +$ 0 0 0 0 0 0 4 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 5 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 5 5 5 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ *** NOTE size of fields is always NX * NY *** +$ + 10 3 1 '(....)' 'PART' 'mapsta.inp' +$ *** NOTE size of fields is always NX * NY *** +$ +$ Input boundary points ---------------------------------------------- $ +$ An unlimited number of lines identifying points at which input +$ boundary conditions are to be defined. If the actual input data is +$ not defined in the actual wave model run, the initial conditions +$ will be applied as constant boundary conditions. Each line contains: +$ Discrete grid counters (IX,IY) of the active point and a +$ connect flag. If this flag is true, and the present and previous +$ point are on a grid line or diagonal, all intermediate points +$ are also defined as boundary points. +$ + 103 86 F + 103 119 T + 1 119 T + 1 1 T + 103 1 T + 103 11 T +$ +$ Close list by defining point (0,0) (mandatory) +$ + 0 0 F +$ Excluded grid points from segment data ( FROM != PART ) +$ First defined as lines, identical to the definition of the input +$ boundary points, and closed the same way. +$ + 0 0 F +$ +$ Second, define a point in a closed body of sea points to remove +$ the entire body os sea points. Also close by point (0,0) +$ + 0 0 +$ +$ Output boundary points --------------------------------------------- $ +$ Output boundary points are defined as a number of straight lines, +$ defined by its starting point (X0,Y0), increments (DX,DY) and number +$ of points. A negative number of points starts a new output file. +$ Note that this data is only generated if requested by the actual +$ program. Example again for spherical grid in degrees. +$ +$ Close list by defining line with 0 points (mandatory) +$ + 0. 0. 0. 0. 0 +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasocm/ww3_grid.nml b/regtests/ww3_tp2.14/input_oasocm/ww3_grid.nml new file mode 100644 index 000000000..a2f8f0900 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasocm/ww3_grid.nml @@ -0,0 +1,276 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III - ww3_grid.nml - Grid pre-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the spectrum parameterization via SPECTRUM_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! SPECTRUM%XFR = 0. ! frequency increment +! SPECTRUM%FREQ1 = 0. ! first frequency (Hz) +! SPECTRUM%NK = 0 ! number of frequencies (wavenumbers) +! SPECTRUM%NTH = 0 ! number of direction bins +! SPECTRUM%THOFF = 0. ! relative offset of first direction [-0.5,0.5] +! -------------------------------------------------------------------- ! +&SPECTRUM_NML + SPECTRUM%XFR = 1.1 + SPECTRUM%FREQ1 = 0.0373 + SPECTRUM%NK = 32 + SPECTRUM%NTH = 24 +/ + +! -------------------------------------------------------------------- ! +! Define the run parameterization via RUN_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! RUN%FLDRY = F ! dry run (I/O only, no calculation) +! RUN%FLCX = F ! x-component of propagation +! RUN%FLCY = F ! y-component of propagation +! RUN%FLCTH = F ! direction shift +! RUN%FLCK = F ! wavenumber shift +! RUN%FLSOU = F ! source terms +! -------------------------------------------------------------------- ! +&RUN_NML + RUN%FLCX = T + RUN%FLCY = T + RUN%FLCTH = T + RUN%FLCK = T + RUN%FLSOU = T +/ + +! -------------------------------------------------------------------- ! +! Define the timesteps parameterization via TIMESTEPS_NML namelist +! +! * It is highly recommended to set up time steps which are multiple +! between them. +! +! * The first time step to calculate is the maximum CFL time step +! which depend on the lowest frequency FREQ1 previously set up and the +! lowest spatial grid resolution in meters DXY. +! reminder : 1 degree=60minutes // 1minute=1mile // 1mile=1.852km +! The formula for the CFL time is : +! Tcfl = DXY / (G / (FREQ1*4*Pi) ) with the constants Pi=3,14 and G=9.8m/s²; +! DTXY ~= 90% Tcfl +! DTMAX ~= 3 * DTXY (maximum global time step limit) +! +! * The refraction time step depends on how strong can be the current velocities +! on your grid : +! DTKTH ~= DTMAX / 2 ! in case of no or light current velocities +! DTKTH ~= DTMAX / 10 ! in case of strong current velocities +! +! * The source terms time step is usually defined between 5s and 60s. +! A common value is 10s. +! DTMIN ~= 10 +! +! * namelist must be terminated with / +! * definitions & defaults: +! TIMESTEPS%DTMAX = 0. ! maximum global time step (s) +! TIMESTEPS%DTXY = 0. ! maximum CFL time step for x-y (s) +! TIMESTEPS%DTKTH = 0. ! maximum CFL time step for k-th (s) +! TIMESTEPS%DTMIN = 0. ! minimum source term time step (s) +! -------------------------------------------------------------------- ! +&TIMESTEPS_NML + TIMESTEPS%DTMAX = 180. + TIMESTEPS%DTXY = 45. + TIMESTEPS%DTKTH = 45. + TIMESTEPS%DTMIN = 10. +/ + +! -------------------------------------------------------------------- ! +! Define the grid to preprocess via GRID_NML namelist +! +! * the tunable parameters for source terms, propagation schemes, and +! numerics are read using namelists. +! * Any namelist found in the folowing sections is temporarily written +! to param.scratch, and read from there if necessary. +! * The order of the namelists is immaterial. +! * Namelists not needed for the given switch settings will be skipped +! automatically +! +! * grid type can be : +! 'RECT' : rectilinear +! 'CURV' : curvilinear +! 'UNST' : unstructured (triangle-based) +! +! * coordinate system can be : +! 'SPHE' : Spherical (degrees) +! 'CART' : Cartesian (meters) +! +! * grid closure can only be applied in spherical coordinates +! +! * grid closure can be : +! 'NONE' : No closure is applied +! 'SMPL' : Simple grid closure. Grid is periodic in the +! : i-index and wraps at i=NX+1. In other words, +! : (NX+1,J) => (1,J). A grid with simple closure +! : may be rectilinear or curvilinear. +! 'TRPL' : Tripole grid closure : Grid is periodic in the +! : i-index and wraps at i=NX+1 and has closure at +! : j=NY+1. In other words, (NX+1,J<=NY) => (1,J) +! : and (I,NY+1) => (NX-I+1,NY). Tripole +! : grid closure requires that NX be even. A grid +! : with tripole closure must be curvilinear. +! +! * The coastline limit depth is the value which distinguish the sea +! points to the land points. All the points with depth values (ZBIN) +! greater than this limit (ZLIM) will be considered as excluded points +! and will never be wet points, even if the water level grows over. +! It can only overwrite the status of a sea point to a land point. +! The value must have a negative value under the mean sea level +! +! * The minimum water depth allowed to compute the model is the absolute +! depth value (DMIN) used in the model if the input depth is lower to +! avoid the model to blow up. +! +! * namelist must be terminated with / +! * definitions & defaults: +! GRID%NAME = 'unset' ! grid name (30 char) +! GRID%NML = 'namelists.nml' ! namelists filename +! GRID%TYPE = 'unset' ! grid type +! GRID%COORD = 'unset' ! coordinate system +! GRID%CLOS = 'unset' ! grid closure +! +! GRID%ZLIM = 0. ! coastline limit depth (m) +! GRID%DMIN = 0. ! abs. minimum water depth (m) +! -------------------------------------------------------------------- ! +&GRID_NML + GRID%NAME = 'IROISE 1.5KM' + GRID%NML = '../input_oasocm/namelists_IROISE.nml' + GRID%TYPE = 'RECT' + GRID%COORD = 'SPHE' + GRID%CLOS = 'NONE' + GRID%ZLIM = 0.0 + GRID%DMIN = 1.0 +/ + +! -------------------------------------------------------------------- ! +! Define the rectilinear grid type via RECT_NML namelist +! - only for RECT grids - +! +! * The minimum grid size is 3x3. +! +! * If the grid increments SX and SY are given in minutes of arc, the scaling +! factor SF must be set to 60. to provide an increment factor in degree. +! +! * If CSTRG='SMPL', then SX is forced to 360/NX. +! +! * value <= value_read / scale_fac +! +! * namelist must be terminated with / +! * definitions & defaults: +! RECT%NX = 0 ! number of points along x-axis +! RECT%NY = 0 ! number of points along y-axis +! +! RECT%SX = 0. ! grid increment along x-axis +! RECT%SY = 0. ! grid increment along y-axis +! RECT%SF = 1. ! scaling division factor for x-y axis +! +! RECT%X0 = 0. ! x-coordinate of lower-left corner (deg) +! RECT%Y0 = 0. ! y-coordinate of lower-left corner (deg) +! RECT%SF0 = 1. ! scaling division factor for x0,y0 coord +! -------------------------------------------------------------------- ! +&RECT_NML + RECT%NX = 103 + RECT%NY = 119 + RECT%SX = 0.019 + RECT%SY = 0.0125 + RECT%X0 = -6.119 + RECT%Y0 = 47.6375 +/ + +! -------------------------------------------------------------------- ! +! Define the depth to preprocess via DEPTH_NML namelist +! - for RECT and CURV grids - +! +! * if no obstruction subgrid, need to set &MISC FLAGTR = 0 +! +! * The depth value must have negative values under the mean sea level +! +! * value <= value_read * scale_fac +! +! * IDLA : Layout indicator : +! 1 : Read line-by-line bottom to top. (default) +! 2 : Like 1, single read statement. +! 3 : Read line-by-line top to bottom. +! 4 : Like 3, single read statement. +! * IDFM : format indicator : +! 1 : Free format. (default) +! 2 : Fixed format. +! 3 : Unformatted. +! * FORMAT : element format to read : +! '(....)' : auto detected (default) +! '(f10.6)' : float type +! +! * Example : +! IDF SF IDLA IDFM FORMAT FILENAME +! 50 0.001 1 1 '(....)' 'GLOB-30M.bot' +! +! * namelist must be terminated with / +! * definitions & defaults: +! DEPTH%SF = 1. ! scale factor +! DEPTH%FILENAME = 'unset' ! filename +! DEPTH%IDF = 50 ! file unit number +! DEPTH%IDLA = 1 ! layout indicator +! DEPTH%IDFM = 1 ! format indicator +! DEPTH%FORMAT = '(....)' ! formatted read format +! -------------------------------------------------------------------- ! +&DEPTH_NML + DEPTH%SF = -1. + DEPTH%FILENAME = '../input/iro_1p5k.bot' + DEPTH%FORMAT = '(20f10.2)' +/ + +! -------------------------------------------------------------------- ! +! Define the input boundary points via INBND_COUNT_NML and +! INBND_POINT_NML namelist +! - for RECT, CURV and UNST grids - +! +! * If no mask defined, INBOUND can be used +! +! * If the actual input data is not defined in the actual wave model run +! the initial conditions will be applied as constant boundary conditions. +! +! * The number of points is defined by INBND_COUNT +! +! * The points must start from index 1 to N +! +! * Each line contains: +! Discrete grid counters (IX,IY) of the active point and a +! connect flag. If this flag is true, and the present and previous +! point are on a grid line or diagonal, all intermediate points +! are also defined as boundary points. +! +! * Included point : +! grid points from segment data +! Defines as lines identifying points at which +! input boundary conditions are to be defined. +! +! * namelist must be terminated with / +! * definitions & defaults: +! INBND_COUNT%N_POINT = 0 ! number of segments +! +! INBND_POINT(I)%X_INDEX = 0 ! x index included point +! INBND_POINT(I)%Y_INDEX = 0 ! y index included point +! INBND_POINT(I)%CONNECT = F ! connect flag +! +! OR +! INBND_POINT(I) = 0 0 F ! included point +! -------------------------------------------------------------------- ! +&INBND_COUNT_NML + INBND_COUNT%N_POINT = 6 +/ + +&INBND_POINT_NML + INBND_POINT(1) = 103 86 F + INBND_POINT(2) = 103 119 T + INBND_POINT(3) = 1 119 T + INBND_POINT(4) = 1 1 T + INBND_POINT(5) = 103 1 T + INBND_POINT(6) = 103 11 T +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input_oasocm/ww3_ounf.inp b/regtests/ww3_tp2.14/input_oasocm/ww3_ounf.inp new file mode 100755 index 000000000..b8bbf80f6 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasocm/ww3_ounf.inp @@ -0,0 +1,41 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Grid output post-processing $ +$--------------------------------------------------------------------- $ +$ First output time (yyyymmdd hhmmss), increment of output (s), +$ and number of output times. +$ + 20080310 000000 180 100 +$ +$ Output request flags identifying fields as in ww3_shel.inp. See that +$ file for a full documentation of field output options. Namelist type +$ selection is used here (for alternative F/T flags, see ww3_shel.inp). +$ + N + HS FP DIR DP CHA UST DPT CUR WND +$ +$--------------------------------------------------------------------- $ +$ netCDF version [3,4] +$ and variable type 4 [2 = SHORT, 3 = it depends , 4 = REAL] +$ swell partitions [0 1 2 3 4 5] +$ variables in same file [T] or not [F] +$ + 3 4 + 0 + T +$ +$ -------------------------------------------------------------------- $ +$ File prefix +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +$ IX and IY ranges [regular:IX NX IY NY DX DY, unstructured:IP NP DP DP] +$ +ww3. +6 +1 10000 1 10000 +$ +$ For each field and time a new file is generated with the file name +$ ww3.date_xxx.nc , where date is a conventional time indicator with S3 +$ characters, and xxx is a field identifier. +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.14/input_oasocm/ww3_ounf.nml b/regtests/ww3_tp2.14/input_oasocm/ww3_ounf.nml new file mode 100644 index 000000000..fc0386ff8 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasocm/ww3_ounf.nml @@ -0,0 +1,60 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_ounf.nml - Grid output post-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the output fields to postprocess via FIELD_NML namelist +! +! * the detailed list of field names FIELD%LIST is given in ww3_shel.nml +! DPT CUR WND AST WLV ICE IBG D50 IC1 IC5 +! HS LM T02 T0M1 T01 FP DIR SPR DP HIG +! EF TH1M STH1M TH2M STH2M WN +! PHS PTP PLP PDIR PSPR PWS PDP PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR +! UST CHA CGE FAW TAW TWA WCC WCF WCH WCM FWS +! SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC +! ABR UBR BED FBB TBB +! MSS MSC WL02 AXT AYT AXY +! DTD FC CFX CFD CFK +! U1 U2 +! +! * namelist must be terminated with / +! * definitions & defaults: +! FIELD%TIMESTART = '19000101 000000' ! Stop date for the output field +! FIELD%TIMESTRIDE = '0' ! Time stride for the output field +! FIELD%TIMESTOP = '29001231 000000' ! Stop date for the output field +! FIELD%TIMECOUNT = '1000000000' ! Number of time steps +! FIELD%TIMESPLIT = 6 ! [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +! FIELD%LIST = 'unset' ! List of output fields +! FIELD%PARTITION = '0 1 2 3' ! List of wave partitions ['0 1 2 3 4 5'] +! FIELD%SAMEFILE = T ! All the variables in the same file [T|F] +! FIELD%TYPE = 3 ! [2 = SHORT, 3 = it depends , 4 = REAL] +! -------------------------------------------------------------------- ! +&FIELD_NML + FIELD%TIMESTART = '20080310 000000' + FIELD%TIMESTRIDE = '180' + FIELD%TIMECOUNT = '100' + FIELD%LIST = 'HS FP DIR DP CHA UST DPT CUR WND' + FIELD%PARTITION = '0' + FIELD%TYPE = 4 +/ + +! -------------------------------------------------------------------- ! +! Define the content of the output file via FILE_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%PREFIX = 'ww3.' ! Prefix for output file name +! FILE%NETCDF = 3 ! Netcdf version [3|4] +! FILE%IX0 = 1 ! First X-axis or node index +! FILE%IXN = 1000000000 ! Last X-axis or node index +! FILE%IY0 = 1 ! First Y-axis index +! FILE%IYN = 1000000000 ! Last Y-axis index +! -------------------------------------------------------------------- ! +&FILE_NML + FILE%IXN = 10000 + FILE%IYN = 10000 +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASOCM.inp b/regtests/ww3_tp2.14/input_oasocm/ww3_shel.inp similarity index 100% rename from regtests/ww3_tp2.14/input/ww3_shel_OASOCM.inp rename to regtests/ww3_tp2.14/input_oasocm/ww3_shel.inp diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASOCM.nml b/regtests/ww3_tp2.14/input_oasocm/ww3_shel.nml similarity index 95% rename from regtests/ww3_tp2.14/input/ww3_shel_OASOCM.nml rename to regtests/ww3_tp2.14/input_oasocm/ww3_shel.nml index 7ae1a54c1..d111d193a 100644 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASOCM.nml +++ b/regtests/ww3_tp2.14/input_oasocm/ww3_shel.nml @@ -44,6 +44,8 @@ ! INPUT%FORCING%WATER_LEVELS = 'F' ! INPUT%FORCING%CURRENTS = 'F' ! INPUT%FORCING%WINDS = 'F' +! INPUT%FORCING%ATM_MOMENTUM = 'F' +! INPUT%FORCING%AIR_DENSITY = 'F' ! INPUT%FORCING%ICE_CONC = 'F' ! INPUT%FORCING%ICE_PARAM1 = 'F' ! INPUT%FORCING%ICE_PARAM2 = 'F' @@ -94,9 +96,11 @@ ! T T 1 5 WLV WLV Water levels. ! T T 1 6 ICE ICE Ice concentration. ! T T 1 7 IBG IBG Iceberg-induced damping. -! T T 1 8 D50 D50 Median sediment grain size. -! T T 1 9 IC1 IC1 Ice thickness. -! T T 1 10 IC5 IC5 Ice flow diameter. +! T T 1 8 TAUA TAU Atm. momentum. +! T T 1 9 RHOAIR RHO Air density. +! T T 1 10 D50 D50 Median sediment grain size. +! T T 1 11 IC1 IC1 Ice thickness. +! T T 1 12 IC5 IC5 Ice flow diameter. ! ------------------------------------------------- ! 2 Standard mean wave Parameters ! ------------------------------------------------- @@ -117,6 +121,7 @@ ! T T 2 15 HMAXD SDMH St Dev of MXC (STE) ! T T 2 16 HCMAXD SDMHC St Dev of MXHC (STE) ! F T 2 17 WBT WBT Domiant wave breaking probability bT +! F F 2 18 FP0 TP Peak period (from peak freq) ! ------------------------------------------------- ! 3 Spectral Parameters (first 5) ! ------------------------------------------------- @@ -174,6 +179,7 @@ ! F F 6 9 P2SMS P2L Micro seism source term ! F F 6 10 TAUICE TWI Wave to sea ice stress ! F F 6 11 PHICE FIC Wave to sea ice energy flux +! F F 6 12 USSP USP Partitioned surface Stokes drift ! ------------------------------------------------- ! 7 Wave-bottom layer ! ------------------------------------------------- @@ -219,9 +225,14 @@ ! - Ice model : IC5 TWI ! - Received fields by ww3: ! - Ocean model : SSH CUR -! - Atmospheric model : WND +! - Atmospheric model : WND TAU RHO ! - Ice model : ICE IC1 IC5 ! +! * Coupling flag (T) or (F) at T+0 (extra fields in the restart needed) +! +! * extra fields to be written to the restart: +! - The list includes all fields sent by coupling exchange only +! ! * namelist must be terminated with / ! * definitions & defaults: ! TYPE%FIELD%LIST = 'unset' @@ -236,6 +247,8 @@ ! TYPE%PARTITION%FORMAT = T ! TYPE%COUPLING%SENT = 'unset' ! TYPE%COUPLING%RECEIVED = 'unset' +! TYPE%COUPLING%COUPLET0 = F +! TYPE%RESTART%EXTRA = 'unset' ! ! -------------------------------------------------------------------- ! &OUTPUT_TYPE_NML diff --git a/regtests/ww3_tp2.14/input_oasocm/ww3_strt.inp b/regtests/ww3_tp2.14/input_oasocm/ww3_strt.inp new file mode 100755 index 000000000..948c42911 --- /dev/null +++ b/regtests/ww3_tp2.14/input_oasocm/ww3_strt.inp @@ -0,0 +1,72 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Initial conditions input file $ +$--------------------------------------------------------------------- $ +$ type of initial field ITYPE . +$ + 1 +$ +$ ITYPE = 1 ---------------------------------------------------------- $ +$ Gaussian in frequency and space, cos type in direction. +$ - fp and spread (Hz), mean direction (degr., oceanographic +$ convention) and cosine power, Xm and spread (degr. or m) Ym and +$ spread (degr. or m), Hmax (m) (Example for lon-lat grid in degr.). +$ +$ 0.10 0.01 270. 2 1. 0.5 1. 0.5 2.5 + 0.10 0.01 270. 2 0. 1000. 1. 1000. 2.5 +$ 0.10 0.01 270. 2 0. 1000. 1. 1000. 0.01 +$ 0.10 0.01 270. 2 0. 1000. 1. 1000. 0. +$ +$ ITYPE = 2 ---------------------------------------------------------- $ +$ JONSWAP spectrum with Hasselmann et al. (1980) direct. distribution. +$ - alfa, peak freq. (Hz), mean direction (degr., oceanographical +$ convention), gamma, sigA, sigB, Xm and spread (degr. or m) Ym and +$ spread (degr. or m) (Example for lon-lat grid in degr.). +$ alfa, sigA, sigB give default values if less than or equal to 0. +$ +$ 0.0081 0.1 270. 1.0 0. 0. 1. 100. 1. 100. +$ +$ ITYPE = 3 ---------------------------------------------------------- $ +$ Fetch-limited JONSWAP +$ - No additional data, the local spectrum is calculated using the +$ local wind speed and direction, using the spatial grid size as +$ fetch, and assuring that the spectrum is within the discrete +$ frequency range. +$ +$ ITYPE = 4 ---------------------------------------------------------- $ +$ User-defined spectrum +$ - Scale factor., defaults to 1 if less than or equal 0. +$ - Spectrum F(f,theta) (single read statement) +$ +$ -0.1 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 1 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 1 2 3 2 1 1 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 1 3 9 7 5 3 2 1 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 1 3 4 3 2 1 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +$ +$ ITYPE = 5 ---------------------------------------------------------- $ +$ Starting from calm conditions. +$ - No additional data. +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $