From edb73a36d25250b5f97cfeeff0f3f956f55cb751 Mon Sep 17 00:00:00 2001 From: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Thu, 27 Jun 2019 15:54:51 -0400 Subject: [PATCH 01/13] Hotfix/hf master (#45) (#54) Pull request for HF to master featuring: * bugfix for netcdf file id allocation * remove extra line due to copy/paste error * add WCOR to switch list * add check on array index * undo modification on ndates * add feature for fixed filename with ndates=0 for ww3_ounf --- model/aux/bash/ww3_ounf_inp2nml.sh | 2 +- model/bin/make_makefile.sh | 7 ++++++- model/ftn/w3triamd.ftn | 5 ++++- model/ftn/ww3_ounf.ftn | 19 ++++++++++--------- model/ftn/ww3_shel.ftn | 1 - model/inp/ww3_ounf.inp | 2 +- model/nml/ww3_ounf.nml | 2 +- regtests/mww3_test_01/input/ww3_ounf.nml | 2 +- regtests/mww3_test_02/input/ww3_ounf.nml | 2 +- regtests/mww3_test_03/input/ww3_ounf.nml | 2 +- regtests/mww3_test_04/input/ww3_ounf.inp | 2 +- regtests/mww3_test_04/input/ww3_ounf.nml | 2 +- regtests/mww3_test_05/input/ww3_ounf.inp | 2 +- regtests/mww3_test_05/input/ww3_ounf.nml | 2 +- regtests/mww3_test_06/input/ww3_ounf.inp | 2 +- regtests/mww3_test_06/input/ww3_ounf.nml | 2 +- regtests/mww3_test_07/input/ww3_ounf.nml | 2 +- .../mww3_test_07/input/ww3_ounf_rect1.nml | 2 +- .../mww3_test_07/input/ww3_ounf_zcmpl.nml | 2 +- .../mww3_test_08/i_highres_multi/ww3_ounf.inp | 2 +- .../mww3_test_08/i_highres_multi/ww3_ounf.nml | 2 +- .../mww3_test_08/i_highres_shel/ww3_ounf.inp | 2 +- .../mww3_test_08/i_highres_shel/ww3_ounf.nml | 2 +- .../i_highres_shel_IC1/ww3_ounf.inp | 2 +- .../i_highres_shel_IC1/ww3_ounf.nml | 2 +- .../mww3_test_08/i_lowres_multi/ww3_ounf.inp | 2 +- .../mww3_test_08/i_lowres_multi/ww3_ounf.nml | 2 +- .../mww3_test_08/i_lowres_shel/ww3_ounf.inp | 2 +- .../mww3_test_08/i_lowres_shel/ww3_ounf.nml | 2 +- .../i_lowres_shel_IC1/ww3_ounf.inp | 2 +- .../i_lowres_shel_IC1/ww3_ounf.nml | 2 +- regtests/mww3_test_08/input/ww3_ounf.inp | 2 +- regtests/mww3_test_08/input/ww3_ounf.nml | 2 +- regtests/ww3_ta1/input_UPD0F_O/ww3_ounf.nml | 2 +- regtests/ww3_ta1/input_UPD0F_U/ww3_ounf.nml | 2 +- regtests/ww3_ta1/input_UPD2_O/ww3_ounf.nml | 2 +- regtests/ww3_ta1/input_UPD2_U/ww3_ounf.nml | 2 +- .../ww3_ta1/input_UPD2_U_cap/ww3_ounf.nml | 2 +- regtests/ww3_ta1/input_UPD3_O/ww3_ounf.nml | 2 +- regtests/ww3_ta1/input_UPD3_U/ww3_ounf.nml | 2 +- .../ww3_ta1/input_UPD3_U_cap/ww3_ounf.nml | 2 +- regtests/ww3_tbt1.1/input/ww3_ounf.inp | 2 +- regtests/ww3_tbt1.1/input/ww3_ounf.nml | 2 +- regtests/ww3_tbt2.1/input/ww3_ounf.inp | 2 +- regtests/ww3_tbt2.1/input/ww3_ounf.nml | 2 +- regtests/ww3_tic1.1/input_IC1/ww3_ounf.inp | 2 +- regtests/ww3_tic1.1/input_IC1/ww3_ounf.nml | 2 +- .../ww3_tic1.1/input_IC1_156x3/ww3_ounf.inp | 2 +- .../ww3_tic1.1/input_IC1_156x3/ww3_ounf.nml | 2 +- .../ww3_tic1.1/input_IC2_ifr/ww3_ounf.inp | 2 +- .../ww3_tic1.1/input_IC2_ifr/ww3_ounf.nml | 2 +- .../ww3_tic1.1/input_IC2_nondisp/ww3_ounf.inp | 2 +- .../ww3_tic1.1/input_IC2_nondisp/ww3_ounf.nml | 2 +- .../ww3_tic1.1/input_IC2_nrl/ww3_ounf.inp | 2 +- .../ww3_tic1.1/input_IC2_nrl/ww3_ounf.nml | 2 +- regtests/ww3_tic1.1/input_IC3/ww3_ounf.inp | 2 +- regtests/ww3_tic1.1/input_IC3/ww3_ounf.nml | 2 +- .../ww3_tic1.1/input_IC3_nondisp/ww3_ounf.inp | 2 +- .../ww3_tic1.1/input_IC3_nondisp/ww3_ounf.nml | 2 +- regtests/ww3_tic1.1/input_IC4_M1/ww3_ounf.nml | 2 +- regtests/ww3_tic1.1/input_IC4_M2/ww3_ounf.nml | 2 +- regtests/ww3_tic1.1/input_IC4_M3/ww3_ounf.nml | 2 +- regtests/ww3_tic1.1/input_IC4_M4/ww3_ounf.nml | 2 +- regtests/ww3_tic1.1/input_IC4_M5/ww3_ounf.nml | 2 +- regtests/ww3_tic1.1/input_IC4_M6/ww3_ounf.nml | 2 +- regtests/ww3_tic1.1/input_IC4_M7/ww3_ounf.nml | 2 +- regtests/ww3_tic1.1/input_IC5/ww3_ounf.inp | 2 +- regtests/ww3_tic1.1/input_IC5/ww3_ounf.nml | 2 +- regtests/ww3_tic1.1/input_IS2/ww3_ounf.inp | 2 +- regtests/ww3_tic1.1/input_IS2/ww3_ounf.nml | 2 +- .../ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.inp | 2 +- .../ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.nml | 2 +- .../ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.inp | 2 +- .../ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.nml | 2 +- .../ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.inp | 2 +- .../ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.nml | 2 +- .../ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.inp | 2 +- .../ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.nml | 2 +- .../ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.inp | 2 +- .../ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.nml | 2 +- .../ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.inp | 2 +- .../ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.nml | 2 +- .../ww3_tic1.2/input_IC3_CHENG/ww3_ounf.inp | 2 +- .../ww3_tic1.2/input_IC3_CHENG/ww3_ounf.nml | 2 +- .../ww3_tic1.2/input_IC3_V1_G/ww3_ounf.inp | 2 +- .../ww3_tic1.2/input_IC3_V1_G/ww3_ounf.nml | 2 +- .../ww3_tic1.2/input_IC3_V1_h/ww3_ounf.inp | 2 +- .../ww3_tic1.2/input_IC3_V1_h/ww3_ounf.nml | 2 +- .../ww3_tic1.3/input_IC3_0.5k/ww3_ounf.inp | 2 +- .../ww3_tic1.3/input_IC3_0.5k/ww3_ounf.nml | 2 +- .../ww3_tic1.3/input_IC3_2.5k/ww3_ounf.inp | 2 +- .../ww3_tic1.3/input_IC3_2.5k/ww3_ounf.nml | 2 +- .../ww3_tic1.3/input_IC3_CHENG/ww3_ounf.inp | 2 +- .../ww3_tic1.3/input_IC3_CHENG/ww3_ounf.nml | 2 +- .../ww3_tic1.3/input_IC3_V1_G/ww3_ounf.inp | 2 +- .../ww3_tic1.3/input_IC3_V1_G/ww3_ounf.nml | 2 +- .../ww3_tic1.3/input_IC3_V1_h/ww3_ounf.inp | 2 +- .../ww3_tic1.3/input_IC3_V1_h/ww3_ounf.nml | 2 +- regtests/ww3_tic1.4/input/ww3_ounf.inp | 2 +- regtests/ww3_tic1.4/input/ww3_ounf.nml | 2 +- regtests/ww3_tic2.1/input_IC1/ww3_ounf.inp | 2 +- regtests/ww3_tic2.1/input_IC1/ww3_ounf.nml | 2 +- regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.inp | 2 +- regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.nml | 2 +- regtests/ww3_tic2.2/input/ww3_ounf.inp | 2 +- regtests/ww3_tic2.2/input/ww3_ounf.nml | 2 +- regtests/ww3_tic2.2/input_IC2/ww3_ounf.inp | 2 +- regtests/ww3_tic2.2/input_IC2/ww3_ounf.nml | 2 +- regtests/ww3_tic2.3/input/ww3_ounf.inp | 2 +- regtests/ww3_tic2.3/input/ww3_ounf.nml | 2 +- regtests/ww3_tp1.1/input/ww3_ounf.inp | 2 +- regtests/ww3_tp1.1/input/ww3_ounf.nml | 2 +- regtests/ww3_tp1.1/input2/ww3_ounf.nml | 2 +- regtests/ww3_tp1.10/input/ww3_ounf.inp | 2 +- regtests/ww3_tp1.10/input/ww3_ounf.nml | 2 +- regtests/ww3_tp1.2/input/ww3_ounf.inp | 2 +- regtests/ww3_tp1.2/input/ww3_ounf.nml | 2 +- regtests/ww3_tp1.3/input/ww3_ounf.inp | 2 +- regtests/ww3_tp1.3/input/ww3_ounf.nml | 3 ++- regtests/ww3_tp1.4/input/ww3_ounf.inp | 2 +- regtests/ww3_tp1.4/input/ww3_ounf.nml | 2 +- regtests/ww3_tp1.5/input/ww3_ounf.inp | 2 +- regtests/ww3_tp1.5/input/ww3_ounf.nml | 2 +- regtests/ww3_tp1.6/input/ww3_ounf.inp | 2 +- regtests/ww3_tp1.6/input/ww3_ounf.nml | 2 +- regtests/ww3_tp1.7/input/ww3_ounf.inp | 2 +- regtests/ww3_tp1.7/input/ww3_ounf.nml | 2 +- regtests/ww3_tp1.7/input_OBST/ww3_ounf.nml | 2 +- regtests/ww3_tp1.8/input/ww3_ounf.inp | 2 +- regtests/ww3_tp1.8/input/ww3_ounf.nml | 2 +- regtests/ww3_tp1.8/input_BJ/ww3_ounf.nml | 2 +- regtests/ww3_tp1.9/input/ww3_ounf.inp | 2 +- regtests/ww3_tp1.9/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.1/input/ww3_ounf.inp | 2 +- regtests/ww3_tp2.1/input/ww3_ounf.nml | 2 +- .../ww3_tp2.1/input/ww3_ounf_flds_hrly.inp | 2 +- .../ww3_tp2.1/input/ww3_ounf_flds_hrly.nml | 2 +- regtests/ww3_tp2.10/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.11/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.13/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.14/input/ww3_ounf.inp | 2 +- regtests/ww3_tp2.14/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.15/input/ww3_ounf.inp | 2 +- regtests/ww3_tp2.15/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.16/input/ww3_ounf.inp | 2 +- regtests/ww3_tp2.16/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.17/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.2/input/ww3_ounf.inp | 2 +- regtests/ww3_tp2.2/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.3/input/ww3_ounf.inp | 2 +- regtests/ww3_tp2.3/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.4/input/ww3_ounf.inp | 2 +- regtests/ww3_tp2.4/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.5/input/ww3_ounf.inp | 2 +- regtests/ww3_tp2.5/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.5/input_REF/ww3_ounf.nml | 2 +- regtests/ww3_tp2.6/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.7/input/ww3_ounf.inp | 2 +- regtests/ww3_tp2.7/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.8/input/ww3_ounf.inp | 2 +- regtests/ww3_tp2.8/input/ww3_ounf.nml | 2 +- regtests/ww3_tp2.9/input/ww3_ounf.nml | 2 +- .../ww3_tp2.9/input/ww3_ounf_flds_hrly.nml | 2 +- regtests/ww3_ts1/input/ww3_ounf.nml | 2 +- regtests/ww3_ts1/input_fld/ww3_ounf.nml | 2 +- regtests/ww3_ts3/input/ww3_ounf.inp | 2 +- regtests/ww3_ts3/input/ww3_ounf.nml | 2 +- regtests/ww3_ts4/input_rg_multi/ww3_ounf.nml | 2 +- regtests/ww3_ts4/input_rg_shel/ww3_ounf.nml | 2 +- regtests/ww3_ts4/input_ug/ww3_ounf.nml | 2 +- 170 files changed, 187 insertions(+), 178 deletions(-) diff --git a/model/aux/bash/ww3_ounf_inp2nml.sh b/model/aux/bash/ww3_ounf_inp2nml.sh index 4cc002225..db64c24e9 100755 --- a/model/aux/bash/ww3_ounf_inp2nml.sh +++ b/model/aux/bash/ww3_ounf_inp2nml.sh @@ -182,7 +182,7 @@ cat >> $nmlfile << EOF ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/model/bin/make_makefile.sh b/model/bin/make_makefile.sh index 0afcd5406..a0313397e 100755 --- a/model/bin/make_makefile.sh +++ b/model/bin/make_makefile.sh @@ -97,7 +97,7 @@ shared mpp mpiexp thread GSE prop \ stress s_ln source stab s_nl snls s_bot s_db miche s_tr s_bs \ dstress s_ice s_is reflection s_xx \ - wind windx rwind curr currx mgwind mgprop mggse \ + wind windx wcor rwind curr currx mgwind mgprop mggse \ subsec tdyn dss0 pdif tide refrx ig rotag arctic nnt mprf \ cou oasis agcm ogcm igcm trknc setup pdlib memck uost do @@ -247,6 +247,11 @@ windx ) TY='one' ID='wind interpolation in space' OK='WNX0 WNX1 WNX2' ;; +#sort:wcor: + wcor ) TY='upto1' + ID='wind speed correction' + TS='WCOR' + OK='WCOR' ;; #sort:rwind: rwind ) TY='upto1' ID='wind vs. current definition' diff --git a/model/ftn/w3triamd.ftn b/model/ftn/w3triamd.ftn index 9c8199d57..57b8250cb 100755 --- a/model/ftn/w3triamd.ftn +++ b/model/ftn/w3triamd.ftn @@ -666,7 +666,10 @@ CONTAINS DO IBC = 1, N_OUTSIDE_BOUNDARY IX = OUTSIDE_BOUNDARY(IBC) !write(*,*) 'TEST1', IX, TMPSTA(1,IX), CCON(IX), COUNTCON(IX), ZBIN(1,IX), ZLIM - IF (IX.NE.0) THEN ! There was a bug in the mesh conversion, OUTSIDE_BOUNDARY(IBC) should not be zero + + ! OUTSIDE_BOUNDARY(IBC) is defined over the full nodes NODES indexes + ! whereas TMPSTA and ZBIN are defined over the clean up list of nodes NX + IF ((IX.NE.0).AND.(IX.LE.NX)) THEN IF ((TMPSTA(1,IX).EQ.1).AND.(STATUS(IX).EQ.0) & .AND.(ZBIN(1,IX).LT.ZLIM)) TMPSTA(1,IX)=2 END IF diff --git a/model/ftn/ww3_ounf.ftn b/model/ftn/ww3_ounf.ftn index 5d6d9e9a7..6c27d39ff 100644 --- a/model/ftn/ww3_ounf.ftn +++ b/model/ftn/ww3_ounf.ftn @@ -157,10 +157,9 @@ IOUT, S3, IRET, HASNC4, & NBIPART, CNTIPART, NCVARTYPE, IPART, & RTDNX, RTDNY - INTEGER :: TOUT(2), TDUM(2), & - NCIDS(NOGRP,NGRPP,6), STOPDATE(8) + INTEGER :: TOUT(2), TDUM(2), STOPDATE(8) ! - INTEGER, ALLOCATABLE :: TABIPART(:) + INTEGER, ALLOCATABLE :: TABIPART(:), NCIDS(:,:,:) ! !/S INTEGER, SAVE :: IENT = 0 ! @@ -383,6 +382,7 @@ ! Alternative processing of TABIPART to capture requests ! greater than NOSWLL (C.Bunney): ALLOCATE(TABIPART(NOSWLL + 1)) + ALLOCATE(NCIDS(NOGRP,NGRPP,NOSWLL + 1)) NBIPART=0 DO I=1,30 IF(STRINGIPART(I:I) .EQ. ' ') CYCLE @@ -874,17 +874,21 @@ ! 1.2 Sets the date as ISO8601 convention ! S3 defines the number of characters in the date for the filename - ! S3=4-> YYYY, S3=6 -> YYYYMM, S3=10 -> YYYYMMDDHH + ! S3=0 -> field, S3=4-> YYYY, S3=6 -> YYYYMM, S3=10 -> YYYYMMDDHH ! Setups min and max date format - IF (S3.LT.4) S3=4 + IF (S3.GT.0 .AND. S3.LT.4) S3=4 IF (S3.GT.10) S3=10 ! ! Defines the format of FILETIME S5=S3-8 S4=S3 OLDTIMEID=TIMEID + ! if S3=>nodate then filetime='field' + IF (S3.EQ.0) THEN + S4=5 + TIMEID="field" ! if S3=>YYYYMMDDHH then filetime='YYYYMMDDTHHZ' - IF (S3.EQ.10) THEN + ELSE IF (S3.EQ.10) THEN S4=S4+2 ! add chars for ISO8601 : day T hours Z WRITE(FORMAT1,'(A,I1,A,I1,A)') '(I8.8,A1,I',S5,'.',S5,',A1)' WRITE (TIMEID,FORMAT1) TIME(1), 'T', & @@ -3398,9 +3402,6 @@ FNAMENC(S1+S2+1:S1+S2+3) = '.nc' FNAMENC(S1+S2+4:S1+S2+6) = ' ' -!/NCO ! For NCEP application, requires fixed netcdf file name -!/NCO FNAMENC='ww3.gridded.nc' - ! If the flag frequency is .TRUE., defines the fourth dimension IF (FLFRQ) THEN UNITVAR(:)=UNITS diff --git a/model/ftn/ww3_shel.ftn b/model/ftn/ww3_shel.ftn index a288125ce..c123ea717 100644 --- a/model/ftn/ww3_shel.ftn +++ b/model/ftn/ww3_shel.ftn @@ -1297,7 +1297,6 @@ ELSE IF ( J .EQ. 6 ) THEN ! IPRT: IX0, IXN, IXS, IY0, IYN, IYS CALL NEXTLN ( COMSTR , NDSI , NDSEN ) - READ (NDSI,*,END=2001,ERR=2002) IPRT, PRTFRM !/DEBUGINIT write(740+IAPROC,*), 'Before reading IPRT' !/DEBUGINIT write(740+IAPROC,*), 'Before read 2002, case 10' READ (NDSI,*) IPRT, PRTFRM diff --git a/model/inp/ww3_ounf.inp b/model/inp/ww3_ounf.inp index f30b18f2f..162a7d0ba 100644 --- a/model/inp/ww3_ounf.inp +++ b/model/inp/ww3_ounf.inp @@ -33,7 +33,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/model/nml/ww3_ounf.nml b/model/nml/ww3_ounf.nml index fa8177278..d57d22c5a 100644 --- a/model/nml/ww3_ounf.nml +++ b/model/nml/ww3_ounf.nml @@ -23,7 +23,7 @@ ! FIELD%TIMESTART = '19000101 000000' ! Stop date for the output field ! FIELD%TIMESTRIDE = '0' ! Time stride for the output field ! FIELD%TIMECOUNT = '1000000000' ! Number of time steps -! FIELD%TIMESPLIT = 6 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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 diff --git a/regtests/mww3_test_01/input/ww3_ounf.nml b/regtests/mww3_test_01/input/ww3_ounf.nml index b0a860836..dce88981e 100644 --- a/regtests/mww3_test_01/input/ww3_ounf.nml +++ b/regtests/mww3_test_01/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_02/input/ww3_ounf.nml b/regtests/mww3_test_02/input/ww3_ounf.nml index c4d430428..466e66cda 100644 --- a/regtests/mww3_test_02/input/ww3_ounf.nml +++ b/regtests/mww3_test_02/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_03/input/ww3_ounf.nml b/regtests/mww3_test_03/input/ww3_ounf.nml index b0a860836..dce88981e 100644 --- a/regtests/mww3_test_03/input/ww3_ounf.nml +++ b/regtests/mww3_test_03/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_04/input/ww3_ounf.inp b/regtests/mww3_test_04/input/ww3_ounf.inp index 0626cdb1d..704c8997c 100644 --- a/regtests/mww3_test_04/input/ww3_ounf.inp +++ b/regtests/mww3_test_04/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/mww3_test_04/input/ww3_ounf.nml b/regtests/mww3_test_04/input/ww3_ounf.nml index 24593c224..9f12b73a3 100644 --- a/regtests/mww3_test_04/input/ww3_ounf.nml +++ b/regtests/mww3_test_04/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_05/input/ww3_ounf.inp b/regtests/mww3_test_05/input/ww3_ounf.inp index f003b3ff8..b9aba86e3 100644 --- a/regtests/mww3_test_05/input/ww3_ounf.inp +++ b/regtests/mww3_test_05/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/mww3_test_05/input/ww3_ounf.nml b/regtests/mww3_test_05/input/ww3_ounf.nml index f5fc6d7c9..215362f9d 100644 --- a/regtests/mww3_test_05/input/ww3_ounf.nml +++ b/regtests/mww3_test_05/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_06/input/ww3_ounf.inp b/regtests/mww3_test_06/input/ww3_ounf.inp index 8e244f1c0..a9abd4a3f 100644 --- a/regtests/mww3_test_06/input/ww3_ounf.inp +++ b/regtests/mww3_test_06/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/mww3_test_06/input/ww3_ounf.nml b/regtests/mww3_test_06/input/ww3_ounf.nml index 0e38e3c57..edaa6389f 100644 --- a/regtests/mww3_test_06/input/ww3_ounf.nml +++ b/regtests/mww3_test_06/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_07/input/ww3_ounf.nml b/regtests/mww3_test_07/input/ww3_ounf.nml index 7f92a7ae1..03c16bef8 100644 --- a/regtests/mww3_test_07/input/ww3_ounf.nml +++ b/regtests/mww3_test_07/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_07/input/ww3_ounf_rect1.nml b/regtests/mww3_test_07/input/ww3_ounf_rect1.nml index 7f92a7ae1..03c16bef8 100644 --- a/regtests/mww3_test_07/input/ww3_ounf_rect1.nml +++ b/regtests/mww3_test_07/input/ww3_ounf_rect1.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_07/input/ww3_ounf_zcmpl.nml b/regtests/mww3_test_07/input/ww3_ounf_zcmpl.nml index 7f92a7ae1..03c16bef8 100644 --- a/regtests/mww3_test_07/input/ww3_ounf_zcmpl.nml +++ b/regtests/mww3_test_07/input/ww3_ounf_zcmpl.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_ounf.inp b/regtests/mww3_test_08/i_highres_multi/ww3_ounf.inp index dc78ec82d..665a23525 100644 --- a/regtests/mww3_test_08/i_highres_multi/ww3_ounf.inp +++ b/regtests/mww3_test_08/i_highres_multi/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_ounf.nml b/regtests/mww3_test_08/i_highres_multi/ww3_ounf.nml index 13e86563d..88698915f 100644 --- a/regtests/mww3_test_08/i_highres_multi/ww3_ounf.nml +++ b/regtests/mww3_test_08/i_highres_multi/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_ounf.inp b/regtests/mww3_test_08/i_highres_shel/ww3_ounf.inp index dc78ec82d..665a23525 100644 --- a/regtests/mww3_test_08/i_highres_shel/ww3_ounf.inp +++ b/regtests/mww3_test_08/i_highres_shel/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_ounf.nml b/regtests/mww3_test_08/i_highres_shel/ww3_ounf.nml index 13e86563d..88698915f 100644 --- a/regtests/mww3_test_08/i_highres_shel/ww3_ounf.nml +++ b/regtests/mww3_test_08/i_highres_shel/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_ounf.inp b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_ounf.inp index dc78ec82d..665a23525 100644 --- a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_ounf.inp +++ b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_ounf.nml b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_ounf.nml index 13e86563d..88698915f 100644 --- a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_ounf.nml +++ b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_ounf.inp b/regtests/mww3_test_08/i_lowres_multi/ww3_ounf.inp index dc78ec82d..665a23525 100644 --- a/regtests/mww3_test_08/i_lowres_multi/ww3_ounf.inp +++ b/regtests/mww3_test_08/i_lowres_multi/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_ounf.nml b/regtests/mww3_test_08/i_lowres_multi/ww3_ounf.nml index 13e86563d..88698915f 100644 --- a/regtests/mww3_test_08/i_lowres_multi/ww3_ounf.nml +++ b/regtests/mww3_test_08/i_lowres_multi/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_ounf.inp b/regtests/mww3_test_08/i_lowres_shel/ww3_ounf.inp index dc78ec82d..665a23525 100644 --- a/regtests/mww3_test_08/i_lowres_shel/ww3_ounf.inp +++ b/regtests/mww3_test_08/i_lowres_shel/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_ounf.nml b/regtests/mww3_test_08/i_lowres_shel/ww3_ounf.nml index 13e86563d..88698915f 100644 --- a/regtests/mww3_test_08/i_lowres_shel/ww3_ounf.nml +++ b/regtests/mww3_test_08/i_lowres_shel/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_ounf.inp b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_ounf.inp index dc78ec82d..665a23525 100644 --- a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_ounf.inp +++ b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_ounf.nml b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_ounf.nml index 13e86563d..88698915f 100644 --- a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_ounf.nml +++ b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/mww3_test_08/input/ww3_ounf.inp b/regtests/mww3_test_08/input/ww3_ounf.inp index dc78ec82d..665a23525 100644 --- a/regtests/mww3_test_08/input/ww3_ounf.inp +++ b/regtests/mww3_test_08/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/mww3_test_08/input/ww3_ounf.nml b/regtests/mww3_test_08/input/ww3_ounf.nml index 13e86563d..88698915f 100644 --- a/regtests/mww3_test_08/input/ww3_ounf.nml +++ b/regtests/mww3_test_08/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD0F_O/ww3_ounf.nml index 2eef25018..1d58e1dcb 100644 --- a/regtests/ww3_ta1/input_UPD0F_O/ww3_ounf.nml +++ b/regtests/ww3_ta1/input_UPD0F_O/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD0F_U/ww3_ounf.nml index 2eef25018..1d58e1dcb 100644 --- a/regtests/ww3_ta1/input_UPD0F_U/ww3_ounf.nml +++ b/regtests/ww3_ta1/input_UPD0F_U/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD2_O/ww3_ounf.nml index 2eef25018..1d58e1dcb 100644 --- a/regtests/ww3_ta1/input_UPD2_O/ww3_ounf.nml +++ b/regtests/ww3_ta1/input_UPD2_O/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD2_U/ww3_ounf.nml index 2eef25018..1d58e1dcb 100644 --- a/regtests/ww3_ta1/input_UPD2_U/ww3_ounf.nml +++ b/regtests/ww3_ta1/input_UPD2_U/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_ounf.nml index 2eef25018..1d58e1dcb 100644 --- a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_ounf.nml +++ b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD3_O/ww3_ounf.nml index 2eef25018..1d58e1dcb 100644 --- a/regtests/ww3_ta1/input_UPD3_O/ww3_ounf.nml +++ b/regtests/ww3_ta1/input_UPD3_O/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD3_U/ww3_ounf.nml index 2eef25018..1d58e1dcb 100644 --- a/regtests/ww3_ta1/input_UPD3_U/ww3_ounf.nml +++ b/regtests/ww3_ta1/input_UPD3_U/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_ounf.nml b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_ounf.nml index 2eef25018..1d58e1dcb 100644 --- a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_ounf.nml +++ b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tbt1.1/input/ww3_ounf.inp b/regtests/ww3_tbt1.1/input/ww3_ounf.inp index 2ffd8881f..050f3b8bb 100644 --- a/regtests/ww3_tbt1.1/input/ww3_ounf.inp +++ b/regtests/ww3_tbt1.1/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tbt1.1/input/ww3_ounf.nml b/regtests/ww3_tbt1.1/input/ww3_ounf.nml index a9ee93f03..205bfe693 100644 --- a/regtests/ww3_tbt1.1/input/ww3_ounf.nml +++ b/regtests/ww3_tbt1.1/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tbt2.1/input/ww3_ounf.inp b/regtests/ww3_tbt2.1/input/ww3_ounf.inp index 2ffd8881f..050f3b8bb 100644 --- a/regtests/ww3_tbt2.1/input/ww3_ounf.inp +++ b/regtests/ww3_tbt2.1/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tbt2.1/input/ww3_ounf.nml b/regtests/ww3_tbt2.1/input/ww3_ounf.nml index a9ee93f03..205bfe693 100644 --- a/regtests/ww3_tbt2.1/input/ww3_ounf.nml +++ b/regtests/ww3_tbt2.1/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC1/ww3_ounf.inp index 7840039dc..9e017400a 100644 --- a/regtests/ww3_tic1.1/input_IC1/ww3_ounf.inp +++ b/regtests/ww3_tic1.1/input_IC1/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC1/ww3_ounf.nml index 4880e853d..bb8f38547 100644 --- a/regtests/ww3_tic1.1/input_IC1/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC1/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_ounf.inp index 7840039dc..9e017400a 100644 --- a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_ounf.inp +++ b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_ounf.nml index 4880e853d..bb8f38547 100644 --- a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_ounf.inp index 417f9c976..e74db75f4 100644 --- a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_ounf.inp +++ b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_ounf.nml index 7cb7aa9d6..50b21f3cb 100644 --- a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_ounf.inp index 7840039dc..9e017400a 100644 --- a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_ounf.inp +++ b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_ounf.nml index 4880e853d..bb8f38547 100644 --- a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_ounf.inp index 7840039dc..9e017400a 100644 --- a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_ounf.inp +++ b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_ounf.nml index 4880e853d..bb8f38547 100644 --- a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC3/ww3_ounf.inp index 7840039dc..9e017400a 100644 --- a/regtests/ww3_tic1.1/input_IC3/ww3_ounf.inp +++ b/regtests/ww3_tic1.1/input_IC3/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC3/ww3_ounf.nml index 4880e853d..bb8f38547 100644 --- a/regtests/ww3_tic1.1/input_IC3/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC3/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_ounf.inp index 7840039dc..9e017400a 100644 --- a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_ounf.inp +++ b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_ounf.nml index 4880e853d..bb8f38547 100644 --- a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M1/ww3_ounf.nml index 9629765e1..d13d4d034 100644 --- a/regtests/ww3_tic1.1/input_IC4_M1/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC4_M1/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M2/ww3_ounf.nml index 9629765e1..d13d4d034 100644 --- a/regtests/ww3_tic1.1/input_IC4_M2/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC4_M2/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M3/ww3_ounf.nml index 9629765e1..d13d4d034 100644 --- a/regtests/ww3_tic1.1/input_IC4_M3/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC4_M3/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M4/ww3_ounf.nml index 9629765e1..d13d4d034 100644 --- a/regtests/ww3_tic1.1/input_IC4_M4/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC4_M4/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M5/ww3_ounf.nml index 9629765e1..d13d4d034 100644 --- a/regtests/ww3_tic1.1/input_IC4_M5/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC4_M5/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M6/ww3_ounf.nml index 9629765e1..d13d4d034 100644 --- a/regtests/ww3_tic1.1/input_IC4_M6/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC4_M6/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC4_M7/ww3_ounf.nml index 9629765e1..d13d4d034 100644 --- a/regtests/ww3_tic1.1/input_IC4_M7/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC4_M7/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IC5/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IC5/ww3_ounf.inp index 7840039dc..9e017400a 100644 --- a/regtests/ww3_tic1.1/input_IC5/ww3_ounf.inp +++ b/regtests/ww3_tic1.1/input_IC5/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.1/input_IC5/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IC5/ww3_ounf.nml index 4880e853d..bb8f38547 100644 --- a/regtests/ww3_tic1.1/input_IC5/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IC5/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_ounf.inp b/regtests/ww3_tic1.1/input_IS2/ww3_ounf.inp index ee3bc1b98..6b487b802 100644 --- a/regtests/ww3_tic1.1/input_IS2/ww3_ounf.inp +++ b/regtests/ww3_tic1.1/input_IS2/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_ounf.nml b/regtests/ww3_tic1.1/input_IS2/ww3_ounf.nml index 2741ad07e..58191cda2 100644 --- a/regtests/ww3_tic1.1/input_IS2/ww3_ounf.nml +++ b/regtests/ww3_tic1.1/input_IS2/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.inp index c091215e8..44e810c23 100644 --- a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.inp +++ b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.nml index f58ba1795..b28efebc9 100644 --- a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.nml +++ b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.inp index c091215e8..44e810c23 100644 --- a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.inp +++ b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.nml index f58ba1795..b28efebc9 100644 --- a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.nml +++ b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.inp index c091215e8..44e810c23 100644 --- a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.inp +++ b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.nml index f58ba1795..b28efebc9 100644 --- a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.nml +++ b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.inp index c091215e8..44e810c23 100644 --- a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.inp +++ b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.nml index f58ba1795..b28efebc9 100644 --- a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.nml +++ b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.inp index c091215e8..44e810c23 100644 --- a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.inp +++ b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.nml index f58ba1795..b28efebc9 100644 --- a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.nml +++ b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.inp index c091215e8..44e810c23 100644 --- a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.inp +++ b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.nml index f58ba1795..b28efebc9 100644 --- a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.nml +++ b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounf.inp index 4b3f935c2..1feeb5659 100644 --- a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounf.inp +++ b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounf.nml index 1c9d3690f..87b76936b 100644 --- a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounf.nml +++ b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounf.inp index ac02b4890..e4bd5fd37 100644 --- a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounf.inp +++ b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounf.nml index 207192bea..f742adafd 100644 --- a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounf.nml +++ b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounf.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounf.inp index ac02b4890..e4bd5fd37 100644 --- a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounf.inp +++ b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounf.nml b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounf.nml index 207192bea..f742adafd 100644 --- a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounf.nml +++ b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounf.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounf.inp index ac02b4890..e4bd5fd37 100644 --- a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounf.inp +++ b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounf.nml b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounf.nml index 207192bea..f742adafd 100644 --- a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounf.nml +++ b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounf.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounf.inp index ac02b4890..e4bd5fd37 100644 --- a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounf.inp +++ b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounf.nml b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounf.nml index 207192bea..f742adafd 100644 --- a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounf.nml +++ b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounf.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounf.inp index ac02b4890..e4bd5fd37 100644 --- a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounf.inp +++ b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounf.nml b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounf.nml index 207192bea..f742adafd 100644 --- a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounf.nml +++ b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounf.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounf.inp index ac02b4890..e4bd5fd37 100644 --- a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounf.inp +++ b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounf.nml b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounf.nml index 207192bea..f742adafd 100644 --- a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounf.nml +++ b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounf.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounf.inp index ac02b4890..e4bd5fd37 100644 --- a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounf.inp +++ b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounf.nml b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounf.nml index 207192bea..f742adafd 100644 --- a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounf.nml +++ b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic1.4/input/ww3_ounf.inp b/regtests/ww3_tic1.4/input/ww3_ounf.inp index 5a9e09ee9..fd9ab4d08 100755 --- a/regtests/ww3_tic1.4/input/ww3_ounf.inp +++ b/regtests/ww3_tic1.4/input/ww3_ounf.inp @@ -33,7 +33,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic1.4/input/ww3_ounf.nml b/regtests/ww3_tic1.4/input/ww3_ounf.nml index 8fc0013b2..a559cdbbb 100644 --- a/regtests/ww3_tic1.4/input/ww3_ounf.nml +++ b/regtests/ww3_tic1.4/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_ounf.inp b/regtests/ww3_tic2.1/input_IC1/ww3_ounf.inp index 93dcedd5b..ec8a30542 100644 --- a/regtests/ww3_tic2.1/input_IC1/ww3_ounf.inp +++ b/regtests/ww3_tic2.1/input_IC1/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_ounf.nml b/regtests/ww3_tic2.1/input_IC1/ww3_ounf.nml index d3a3a2916..f1eaa40da 100644 --- a/regtests/ww3_tic2.1/input_IC1/ww3_ounf.nml +++ b/regtests/ww3_tic2.1/input_IC1/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.inp index 93dcedd5b..ec8a30542 100644 --- a/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.inp +++ b/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.nml b/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.nml index d3a3a2916..f1eaa40da 100644 --- a/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.nml +++ b/regtests/ww3_tic2.1/input_IC2IS2/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic2.2/input/ww3_ounf.inp b/regtests/ww3_tic2.2/input/ww3_ounf.inp index c77330395..5bef7ef7a 100644 --- a/regtests/ww3_tic2.2/input/ww3_ounf.inp +++ b/regtests/ww3_tic2.2/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic2.2/input/ww3_ounf.nml b/regtests/ww3_tic2.2/input/ww3_ounf.nml index 99c986fe1..9c21eb069 100644 --- a/regtests/ww3_tic2.2/input/ww3_ounf.nml +++ b/regtests/ww3_tic2.2/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_ounf.inp b/regtests/ww3_tic2.2/input_IC2/ww3_ounf.inp index c77330395..5bef7ef7a 100644 --- a/regtests/ww3_tic2.2/input_IC2/ww3_ounf.inp +++ b/regtests/ww3_tic2.2/input_IC2/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_ounf.nml b/regtests/ww3_tic2.2/input_IC2/ww3_ounf.nml index 99c986fe1..9c21eb069 100644 --- a/regtests/ww3_tic2.2/input_IC2/ww3_ounf.nml +++ b/regtests/ww3_tic2.2/input_IC2/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tic2.3/input/ww3_ounf.inp b/regtests/ww3_tic2.3/input/ww3_ounf.inp index fbcbdeca3..8ba98aa5e 100755 --- a/regtests/ww3_tic2.3/input/ww3_ounf.inp +++ b/regtests/ww3_tic2.3/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tic2.3/input/ww3_ounf.nml b/regtests/ww3_tic2.3/input/ww3_ounf.nml index a456c135b..4aa585d07 100644 --- a/regtests/ww3_tic2.3/input/ww3_ounf.nml +++ b/regtests/ww3_tic2.3/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp1.1/input/ww3_ounf.inp b/regtests/ww3_tp1.1/input/ww3_ounf.inp index 18fee4a56..b863b4fe4 100644 --- a/regtests/ww3_tp1.1/input/ww3_ounf.inp +++ b/regtests/ww3_tp1.1/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp1.1/input/ww3_ounf.nml b/regtests/ww3_tp1.1/input/ww3_ounf.nml index e764b41b1..2b11b0451 100644 --- a/regtests/ww3_tp1.1/input/ww3_ounf.nml +++ b/regtests/ww3_tp1.1/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp1.1/input2/ww3_ounf.nml b/regtests/ww3_tp1.1/input2/ww3_ounf.nml index 1249cceda..7b1f707ea 100644 --- a/regtests/ww3_tp1.1/input2/ww3_ounf.nml +++ b/regtests/ww3_tp1.1/input2/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp1.10/input/ww3_ounf.inp b/regtests/ww3_tp1.10/input/ww3_ounf.inp index 527ea7902..57665d0e3 100644 --- a/regtests/ww3_tp1.10/input/ww3_ounf.inp +++ b/regtests/ww3_tp1.10/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp1.10/input/ww3_ounf.nml b/regtests/ww3_tp1.10/input/ww3_ounf.nml index c58576e60..8c982e9f3 100644 --- a/regtests/ww3_tp1.10/input/ww3_ounf.nml +++ b/regtests/ww3_tp1.10/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp1.2/input/ww3_ounf.inp b/regtests/ww3_tp1.2/input/ww3_ounf.inp index 1a5fb9f56..03f00553c 100644 --- a/regtests/ww3_tp1.2/input/ww3_ounf.inp +++ b/regtests/ww3_tp1.2/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp1.2/input/ww3_ounf.nml b/regtests/ww3_tp1.2/input/ww3_ounf.nml index 90861d44b..fb956d680 100644 --- a/regtests/ww3_tp1.2/input/ww3_ounf.nml +++ b/regtests/ww3_tp1.2/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp1.3/input/ww3_ounf.inp b/regtests/ww3_tp1.3/input/ww3_ounf.inp index 2ca999afb..7371ea97f 100644 --- a/regtests/ww3_tp1.3/input/ww3_ounf.inp +++ b/regtests/ww3_tp1.3/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp1.3/input/ww3_ounf.nml b/regtests/ww3_tp1.3/input/ww3_ounf.nml index c0c714b7b..6619cf3d8 100644 --- a/regtests/ww3_tp1.3/input/ww3_ounf.nml +++ b/regtests/ww3_tp1.3/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] @@ -33,6 +33,7 @@ FIELD%TIMESTART = '19680606 000000' FIELD%TIMESTRIDE = '3600.' FIELD%TIMECOUNT = '1000' + FIELD%TIMESPLIT = 6 FIELD%LIST = 'DPT HS FC CFX' FIELD%PARTITION = '0 1 2' FIELD%TYPE = 4 diff --git a/regtests/ww3_tp1.4/input/ww3_ounf.inp b/regtests/ww3_tp1.4/input/ww3_ounf.inp index 5492fd164..3195e813d 100644 --- a/regtests/ww3_tp1.4/input/ww3_ounf.inp +++ b/regtests/ww3_tp1.4/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp1.4/input/ww3_ounf.nml b/regtests/ww3_tp1.4/input/ww3_ounf.nml index 6fe800a28..de17d91be 100644 --- a/regtests/ww3_tp1.4/input/ww3_ounf.nml +++ b/regtests/ww3_tp1.4/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp1.5/input/ww3_ounf.inp b/regtests/ww3_tp1.5/input/ww3_ounf.inp index b519a575a..a9be6f2cd 100644 --- a/regtests/ww3_tp1.5/input/ww3_ounf.inp +++ b/regtests/ww3_tp1.5/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp1.5/input/ww3_ounf.nml b/regtests/ww3_tp1.5/input/ww3_ounf.nml index cf0b1b66e..e81b7a530 100644 --- a/regtests/ww3_tp1.5/input/ww3_ounf.nml +++ b/regtests/ww3_tp1.5/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp1.6/input/ww3_ounf.inp b/regtests/ww3_tp1.6/input/ww3_ounf.inp index 31d88a584..8ab4cf90d 100644 --- a/regtests/ww3_tp1.6/input/ww3_ounf.inp +++ b/regtests/ww3_tp1.6/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp1.6/input/ww3_ounf.nml b/regtests/ww3_tp1.6/input/ww3_ounf.nml index 67ce6acc8..dd7fb918a 100644 --- a/regtests/ww3_tp1.6/input/ww3_ounf.nml +++ b/regtests/ww3_tp1.6/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp1.7/input/ww3_ounf.inp b/regtests/ww3_tp1.7/input/ww3_ounf.inp index 66a9477d6..7d0438ed9 100644 --- a/regtests/ww3_tp1.7/input/ww3_ounf.inp +++ b/regtests/ww3_tp1.7/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp1.7/input/ww3_ounf.nml b/regtests/ww3_tp1.7/input/ww3_ounf.nml index a14907b20..174936359 100644 --- a/regtests/ww3_tp1.7/input/ww3_ounf.nml +++ b/regtests/ww3_tp1.7/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp1.7/input_OBST/ww3_ounf.nml b/regtests/ww3_tp1.7/input_OBST/ww3_ounf.nml index 3402bd08c..27ee0f599 100644 --- a/regtests/ww3_tp1.7/input_OBST/ww3_ounf.nml +++ b/regtests/ww3_tp1.7/input_OBST/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp1.8/input/ww3_ounf.inp b/regtests/ww3_tp1.8/input/ww3_ounf.inp index 0a075dd65..7dfef7253 100755 --- a/regtests/ww3_tp1.8/input/ww3_ounf.inp +++ b/regtests/ww3_tp1.8/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp1.8/input/ww3_ounf.nml b/regtests/ww3_tp1.8/input/ww3_ounf.nml index 2a61be067..d6c8c59ce 100644 --- a/regtests/ww3_tp1.8/input/ww3_ounf.nml +++ b/regtests/ww3_tp1.8/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp1.8/input_BJ/ww3_ounf.nml b/regtests/ww3_tp1.8/input_BJ/ww3_ounf.nml index 0e4300c21..9b1045771 100644 --- a/regtests/ww3_tp1.8/input_BJ/ww3_ounf.nml +++ b/regtests/ww3_tp1.8/input_BJ/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp1.9/input/ww3_ounf.inp b/regtests/ww3_tp1.9/input/ww3_ounf.inp index 164aeea7f..b2dca6d70 100644 --- a/regtests/ww3_tp1.9/input/ww3_ounf.inp +++ b/regtests/ww3_tp1.9/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp1.9/input/ww3_ounf.nml b/regtests/ww3_tp1.9/input/ww3_ounf.nml index ce690708f..82bbd73fa 100644 --- a/regtests/ww3_tp1.9/input/ww3_ounf.nml +++ b/regtests/ww3_tp1.9/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.1/input/ww3_ounf.inp b/regtests/ww3_tp2.1/input/ww3_ounf.inp index fe1a2940c..56774896a 100644 --- a/regtests/ww3_tp2.1/input/ww3_ounf.inp +++ b/regtests/ww3_tp2.1/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp2.1/input/ww3_ounf.nml b/regtests/ww3_tp2.1/input/ww3_ounf.nml index 86bbe08b2..807d2576c 100644 --- a/regtests/ww3_tp2.1/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.1/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.inp b/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.inp index 6873a0300..d50d9d096 100644 --- a/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.inp +++ b/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.nml b/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.nml index 209bd1384..b7972bdeb 100644 --- a/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.nml +++ b/regtests/ww3_tp2.1/input/ww3_ounf_flds_hrly.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.10/input/ww3_ounf.nml b/regtests/ww3_tp2.10/input/ww3_ounf.nml index 4d85daba1..eeff7aac3 100644 --- a/regtests/ww3_tp2.10/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.10/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.11/input/ww3_ounf.nml b/regtests/ww3_tp2.11/input/ww3_ounf.nml index d6c1d0051..a7109f70c 100644 --- a/regtests/ww3_tp2.11/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.11/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.13/input/ww3_ounf.nml b/regtests/ww3_tp2.13/input/ww3_ounf.nml index 339b1ebd8..59a71ab9d 100644 --- a/regtests/ww3_tp2.13/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.13/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.14/input/ww3_ounf.inp b/regtests/ww3_tp2.14/input/ww3_ounf.inp index b0e17e2bd..d5a240375 100755 --- a/regtests/ww3_tp2.14/input/ww3_ounf.inp +++ b/regtests/ww3_tp2.14/input/ww3_ounf.inp @@ -25,7 +25,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ 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. diff --git a/regtests/ww3_tp2.14/input/ww3_ounf.nml b/regtests/ww3_tp2.14/input/ww3_ounf.nml index 61816516b..6157d667d 100644 --- a/regtests/ww3_tp2.14/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.14/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.15/input/ww3_ounf.inp b/regtests/ww3_tp2.15/input/ww3_ounf.inp index 5262627b6..ff7cbbcdf 100644 --- a/regtests/ww3_tp2.15/input/ww3_ounf.inp +++ b/regtests/ww3_tp2.15/input/ww3_ounf.inp @@ -12,7 +12,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp2.15/input/ww3_ounf.nml b/regtests/ww3_tp2.15/input/ww3_ounf.nml index 4872fecf2..bdd7e13c2 100644 --- a/regtests/ww3_tp2.15/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.15/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.16/input/ww3_ounf.inp b/regtests/ww3_tp2.16/input/ww3_ounf.inp index d7a4dd2c0..940b4a05f 100644 --- a/regtests/ww3_tp2.16/input/ww3_ounf.inp +++ b/regtests/ww3_tp2.16/input/ww3_ounf.inp @@ -33,7 +33,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp2.16/input/ww3_ounf.nml b/regtests/ww3_tp2.16/input/ww3_ounf.nml index 74539ef0a..6dd44ba6c 100644 --- a/regtests/ww3_tp2.16/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.16/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.17/input/ww3_ounf.nml b/regtests/ww3_tp2.17/input/ww3_ounf.nml index 800fae20e..df701f8d5 100644 --- a/regtests/ww3_tp2.17/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.17/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.2/input/ww3_ounf.inp b/regtests/ww3_tp2.2/input/ww3_ounf.inp index 973dbacbf..1d901574c 100644 --- a/regtests/ww3_tp2.2/input/ww3_ounf.inp +++ b/regtests/ww3_tp2.2/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp2.2/input/ww3_ounf.nml b/regtests/ww3_tp2.2/input/ww3_ounf.nml index 862ffa888..3fdd6fb1b 100644 --- a/regtests/ww3_tp2.2/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.2/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.3/input/ww3_ounf.inp b/regtests/ww3_tp2.3/input/ww3_ounf.inp index 62ee03dda..b0c2404f0 100644 --- a/regtests/ww3_tp2.3/input/ww3_ounf.inp +++ b/regtests/ww3_tp2.3/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp2.3/input/ww3_ounf.nml b/regtests/ww3_tp2.3/input/ww3_ounf.nml index d73186f7b..b2e4ef753 100644 --- a/regtests/ww3_tp2.3/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.3/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.4/input/ww3_ounf.inp b/regtests/ww3_tp2.4/input/ww3_ounf.inp index 666d78f4e..ee08f49c3 100644 --- a/regtests/ww3_tp2.4/input/ww3_ounf.inp +++ b/regtests/ww3_tp2.4/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp2.4/input/ww3_ounf.nml b/regtests/ww3_tp2.4/input/ww3_ounf.nml index 5cc21c71c..a7e9dbaa3 100644 --- a/regtests/ww3_tp2.4/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.4/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.5/input/ww3_ounf.inp b/regtests/ww3_tp2.5/input/ww3_ounf.inp index d4295cd4f..5d77fdfdc 100644 --- a/regtests/ww3_tp2.5/input/ww3_ounf.inp +++ b/regtests/ww3_tp2.5/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp2.5/input/ww3_ounf.nml b/regtests/ww3_tp2.5/input/ww3_ounf.nml index 2472bbf34..c47276da3 100644 --- a/regtests/ww3_tp2.5/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.5/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.5/input_REF/ww3_ounf.nml b/regtests/ww3_tp2.5/input_REF/ww3_ounf.nml index b80a5ecbf..f12445fa5 100644 --- a/regtests/ww3_tp2.5/input_REF/ww3_ounf.nml +++ b/regtests/ww3_tp2.5/input_REF/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.6/input/ww3_ounf.nml b/regtests/ww3_tp2.6/input/ww3_ounf.nml index 7b47a0063..38b15c686 100644 --- a/regtests/ww3_tp2.6/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.6/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.7/input/ww3_ounf.inp b/regtests/ww3_tp2.7/input/ww3_ounf.inp index e636e699d..587f472a4 100644 --- a/regtests/ww3_tp2.7/input/ww3_ounf.inp +++ b/regtests/ww3_tp2.7/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp2.7/input/ww3_ounf.nml b/regtests/ww3_tp2.7/input/ww3_ounf.nml index 2adadfcd0..c26a22b9f 100644 --- a/regtests/ww3_tp2.7/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.7/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.8/input/ww3_ounf.inp b/regtests/ww3_tp2.8/input/ww3_ounf.inp index 4bbecaaa0..0f78cc437 100644 --- a/regtests/ww3_tp2.8/input/ww3_ounf.inp +++ b/regtests/ww3_tp2.8/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_tp2.8/input/ww3_ounf.nml b/regtests/ww3_tp2.8/input/ww3_ounf.nml index 45a9f84cb..3c0ab164b 100644 --- a/regtests/ww3_tp2.8/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.8/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.9/input/ww3_ounf.nml b/regtests/ww3_tp2.9/input/ww3_ounf.nml index 8fe90968c..f26d976d0 100644 --- a/regtests/ww3_tp2.9/input/ww3_ounf.nml +++ b/regtests/ww3_tp2.9/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_tp2.9/input/ww3_ounf_flds_hrly.nml b/regtests/ww3_tp2.9/input/ww3_ounf_flds_hrly.nml index 8fe90968c..f26d976d0 100644 --- a/regtests/ww3_tp2.9/input/ww3_ounf_flds_hrly.nml +++ b/regtests/ww3_tp2.9/input/ww3_ounf_flds_hrly.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ts1/input/ww3_ounf.nml b/regtests/ww3_ts1/input/ww3_ounf.nml index 3ee0de65e..892b30bd8 100644 --- a/regtests/ww3_ts1/input/ww3_ounf.nml +++ b/regtests/ww3_ts1/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ts1/input_fld/ww3_ounf.nml b/regtests/ww3_ts1/input_fld/ww3_ounf.nml index a22e156f7..c22b2d835 100644 --- a/regtests/ww3_ts1/input_fld/ww3_ounf.nml +++ b/regtests/ww3_ts1/input_fld/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ts3/input/ww3_ounf.inp b/regtests/ww3_ts3/input/ww3_ounf.inp index f003b3ff8..b9aba86e3 100644 --- a/regtests/ww3_ts3/input/ww3_ounf.inp +++ b/regtests/ww3_ts3/input/ww3_ounf.inp @@ -27,7 +27,7 @@ $ $ $ -------------------------------------------------------------------- $ $ File prefix -$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] $ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] $ ww3. diff --git a/regtests/ww3_ts3/input/ww3_ounf.nml b/regtests/ww3_ts3/input/ww3_ounf.nml index f5fc6d7c9..215362f9d 100644 --- a/regtests/ww3_ts3/input/ww3_ounf.nml +++ b/regtests/ww3_ts3/input/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_ounf.nml b/regtests/ww3_ts4/input_rg_multi/ww3_ounf.nml index 386ec76d6..670165267 100644 --- a/regtests/ww3_ts4/input_rg_multi/ww3_ounf.nml +++ b/regtests/ww3_ts4/input_rg_multi/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ts4/input_rg_shel/ww3_ounf.nml b/regtests/ww3_ts4/input_rg_shel/ww3_ounf.nml index 386ec76d6..670165267 100644 --- a/regtests/ww3_ts4/input_rg_shel/ww3_ounf.nml +++ b/regtests/ww3_ts4/input_rg_shel/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] diff --git a/regtests/ww3_ts4/input_ug/ww3_ounf.nml b/regtests/ww3_ts4/input_ug/ww3_ounf.nml index 386ec76d6..670165267 100644 --- a/regtests/ww3_ts4/input_ug/ww3_ounf.nml +++ b/regtests/ww3_ts4/input_ug/ww3_ounf.nml @@ -23,7 +23,7 @@ ! 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 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! 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] From 6bcb9b5867bd909751570de29e6f974051f50511 Mon Sep 17 00:00:00 2001 From: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Mon, 1 Jul 2019 12:22:13 -0400 Subject: [PATCH 02/13] HF_slurm_regtests Timing option -T added to run_test, option to run batch queue [slurm] -b added to run_test, created new matrix_ncep with slurm directives for R&D testing, corrected bug in matrix.base ww3_ts4 [mpi run were missing -p -n flags. (#67)(cherry picked from commit 972106c8af8b72cdd54aada91908856934912f06) --- regtests/bin/matrix.base | 6 +- regtests/bin/matrix.comp | 30 +- regtests/bin/matrix_ncep | 157 +++ regtests/bin/run_test | 2509 ++++++++++++++++++++++---------------- 4 files changed, 1638 insertions(+), 1064 deletions(-) create mode 100755 regtests/bin/matrix_ncep diff --git a/regtests/bin/matrix.base b/regtests/bin/matrix.base index 72b4e736a..24de249a9 100755 --- a/regtests/bin/matrix.base +++ b/regtests/bin/matrix.base @@ -1965,9 +1965,9 @@ echo ' ' >> matrix.body if [ "$dist" = 'y' ] then - echo "$rtst -s MPI -w work_rg_shel_MPI -i input_rg_shel $ww3 ww3_ts4" >> matrix.body - echo "$rtst -s MPI -w work_rg_multi_MPI -i input_rg_multi -m grdset $ww3 ww3_ts4" >> matrix.body - echo "$rtst -s MPI -w work_ug_MPI -i input_ug $ww3 ww3_ts4" >> matrix.body + echo "$rtst -s MPI -w work_rg_shel_MPI -i input_rg_shel -f -p $mpi -n $np $ww3 ww3_ts4" >> matrix.body + echo "$rtst -s MPI -w work_rg_multi_MPI -i input_rg_multi -m grdset -f -p $mpi -n $np $ww3 ww3_ts4" >> matrix.body + echo "$rtst -s MPI -w work_ug_MPI -i input_ug -f -p $mpi -n $np $ww3 ww3_ts4" >> matrix.body else echo "$rtst -w work_rg_shel -i input_rg_shel $ww3 ww3_ts4" >> matrix.body echo "$rtst -w work_rg_multi -i input_rg_multi -m grdset $ww3 ww3_ts4" >> matrix.body diff --git a/regtests/bin/matrix.comp b/regtests/bin/matrix.comp index f6dade828..8c20ffdb1 100755 --- a/regtests/bin/matrix.comp +++ b/regtests/bin/matrix.comp @@ -19,9 +19,21 @@ # 1. Set up # 1.a Computer/ user dependent set up + if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] + then + printf "\n ERROR ABORTING \n" + printf "\n matrix.comp requires 3 arguments: " + printf " 1: test type (eg, all or test-name), 2: base directory and 3: reference directory. \n" + printf "\n Usage:" + printf " ./bin/matrix.comp all basedir compdir \n\n" + exit + fi + + ctest=$1 + base_dir=$2 + comp_dir=$3 home_dir=`pwd` - base_dir='.' - comp_dir='../../EMC_ww3_master/regtests' + rm -rf $home_dir/output rm -f $home_dir/matrixDiff.out @@ -58,18 +70,12 @@ echo '**********************************************************************' >> $home_dir/fulldiff.tmp - if [ "$#" != '1' ] ; then - echo "usage: matrix.comp test" - echo " test can be 'all'" ; exit 1 ; fi - - test=$1 - - if [ "$test" = 'all' ] ; then - test=`ls -d ww3_tp1.? ww3_tp2.? ww3_ts? ww3_tbt1.? ww3_tbt2.? ww3_tic1.? ww3_tic2.? ww3_tig1.? ww3_tp2.1? mww3_test_0?` ; fi + if [ "$ctest" = 'all' ] ; then + ctest=`ls -d ww3_tp1.? ww3_tp2.? ww3_ts? ww3_tbt1.? ww3_tbt2.? ww3_tic1.? ww3_tic2.? ww3_tig1.? ww3_tp2.1? mww3_test_0?` ; fi echo "base directory : $base_dir" >> $home_dir/header.tmp echo "comp directory : $comp_dir" >> $home_dir/header.tmp echo "test(s) : " >> $home_dir/header.tmp - echo $test >> $home_dir/header.tmp + echo $ctest >> $home_dir/header.tmp echo " " >> $home_dir/header.tmp cat $home_dir/header.tmp @@ -84,7 +90,7 @@ # 2. Looping over tests # # --------------------------------------------------------------------------- # - for tst in $test + for tst in $ctest do cd $home_dir ; cd $base_dir if [ ! -d $tst ] diff --git a/regtests/bin/matrix_ncep b/regtests/bin/matrix_ncep new file mode 100755 index 000000000..2fff488b2 --- /dev/null +++ b/regtests/bin/matrix_ncep @@ -0,0 +1,157 @@ +#!/bin/bash +# --------------------------------------------------------------------------- # +# matrix.go: Run matrix of regression tests on target machine. # +# # +# Remarks: # +# - This version is set up for automatic w3_setenv script and for the # +# NOAA RDHPC 'zeus' system. When using this for your own setup and # +# computer, please copy rather than modify. # +# # +# Hendrik L. Tolman # +# August 2013 # +# December 2013 # +# April 2018 # +# # +# Copyright 2013 National Weather Service (NWS), # +# National Oceanic and Atmospheric Administration. All rights # +# reserved. WAVEWATCH III is a trademark of the NWS. # +# No unauthorized use without permission. # +# # +# --------------------------------------------------------------------------- # +# 0. Environment file + + source $(dirname $0)/../../model/bin/w3_setenv + main_dir=$WWATCH3_DIR + temp_dir=$WWATCH3_TMP + source=$WWATCH3_SOURCE + list=$WWATCH3_LIST + + echo "Main directory : $main_dir" + echo "Scratch directory : $temp_dir" + echo "Save source codes : $source" + echo "Save listings : $list" + +# Set batchq queue to define headers etc (default to original version if empty) +batchq="slurm" + +# 1. Set up +# 1.a Computer/ user dependent set up + + echo '#!/bin/sh --login' > matrix.head + echo ' ' >> matrix.head +if [ $batchq = "slurm" ] +then + echo '#SBATCH -n 24' >> matrix.head + echo '#SBATCH -q batch' >> matrix.head + echo '#SBATCH -t 08:00:00' >> matrix.head + echo '#SBATCH -A marine-cpu' >> matrix.head + echo '#SBATCH -J ww3_regtest' >> matrix.head + echo '#SBATCH -o matrix.out' >> matrix.head +else + echo '#PBS -l procs=24' >> matrix.head + echo '#PBS -q batch' >> matrix.head + echo '#PBS -l walltime=08:00:00' >> matrix.head + echo '#PBS -A marine-cpu' >> matrix.head + echo '#PBS -N ww3_regtest' >> matrix.head + echo '#PBS -j oe' >> matrix.head + echo '#PBS -o matrix.out' >> matrix.head + echo ' ' >> matrix.head +fi + echo " cd $(dirname $main_dir)/regtests" >> matrix.head + echo ' ' >> matrix.head + +# Netcdf and Parmetis modules & variables + +istheia=`hostname | grep tfe` +if [ $istheia ] +then + modcomp='intel/14.0.2' + modmpi='impi/5.1.2.150' + modnetcdf='netcdf/4.3.0' +fi + + echo " module load $modcomp $modmpi $modnetcdf" >> matrix.head + echo " export WWATCH3_NETCDF=NC4" >> matrix.head + echo " export NETCDF_CONFIG=`which nc-config`" >> matrix.head + echo " export METIS_PATH=/scratch3/NCEPDEV/stmp2/Jessica.Meixner/parmetis-4.0.3" >> matrix.head + echo " export WW3_PARCOMPN=4" >> matrix.head + echo ' ' + +# Compiler option. Choose appropriate compiler and set cmplOption to +# y if using for the first time or using a different compiler + + cmplr=Intel + export cmplOption='y' + + if [ "$batchq" = 'slurm' ] + then + export mpi='srun' + else + export mpi='mpirun' + fi + export np='24' + export nr='4' + export nth='6' +# Compile option + if [ "$cmplOption" = 'y' ] + then + opt="-c $cmplr -S -T" + else + opt="-S" + fi +# Batch queue option + if [ "$batchq" = 'slurm' ] + then + opt="-b $batchq $opt" + fi + +# Base run_test command line + export rtst="./bin/run_test $opt" + + export ww3='../model' + +# 1.b Flags to do course selection - - - - - - - - - - - - - - - - - - - - - - +# Addition selection by commenting out lines as below + + export shrd='y' # Do shared architecture tests + export dist='y' # Do distributed architecture (MPI) tests + export omp='y' # Threaded (OpenMP) tests + export hybd='n' # Hybrid options + + export prop1D='y' # 1-D propagation tests (ww3_tp1.X) + export prop2D='y' # 2-D propagation tests (ww3_tp2.X) + export time='y' # time linmited growth + export fetch='y' # fetch linmited growth + export hur1mg='y' # Hurricane with one moving grid + export shwtr='y' # shallow water tests + export unstr='y' # unstructured grid tests + export pdlib='y' # unstr with pdlib for domain decomposition and implicit solver + export smcgr='y' # SMC/Rotated grid test + export mudice='y' # Mud/Ice and wave interaction tests + export infgrv='y' # Second harmonic generation tests + export uost='y' # ww3_ts4 Unresolved Obstacles Source Term (UOST) + export assim='y' # Restart spectra update + + export multi01='y' # mww3_test_01 (wetting and drying) + export multi02='y' # mww3_test_02 (basic two-way nesting test)) + export multi03='y' # mww3_test_03 (three high and three low res grids). + export multi04='y' # mww3_test_04 (swell on sea mount and/or current) + export multi05='y' # mww3_test_05 (three-grid moving hurricane) + export multi06='y' # mww3_test_06 (curvilinear grid tests) + export multi07='y' # mww3_test_07 (unstructured grid tests) + export multi08='y' # mww3_test_08 (wind and ice tests) + +# export filter='PR3 ST2 UQ' + # The filter does a set of consecutinve greps on the + # command lines generated by filter.base with the above + # selected options. + +# --------------------------------------------------------------------------- # +# 2. Execute matrix.base ... # +# --------------------------------------------------------------------------- # + + $main_dir/../regtests/bin/matrix.base + +# --------------------------------------------------------------------------- # +# End to the matrix # +# --------------------------------------------------------------------------- # diff --git a/regtests/bin/run_test b/regtests/bin/run_test index 858e84171..91b5acd5f 100755 --- a/regtests/bin/run_test +++ b/regtests/bin/run_test @@ -40,7 +40,7 @@ errmsg () # 1.b Usage function myname="`basename $0`" #name of script -optstr="a:c:C:defg:Ghi:m:n:No:Op:q:r:s:t:Sw:" #option string for getopt function +optstr="a:b:c:C:defg:Ghi:m:n:No:Op:q:r:s:t:STw:" #option string for getopt function usage () { @@ -54,6 +54,7 @@ Options: -a ww3_env : use WW3 environment setup file : *default is /bin/wwatch3.env : *file will be created if it does not already exist + -b batchq : optional setting to determine batch queue type (for slurm now) -c cmplr : setup comp & link files for specified cmplr -C coupl : invoke test using coupled application : OASIS : OASIS3-mct ww3_shel coupled application @@ -97,6 +98,7 @@ Options: tests not executed if file is found. -t nthrd : Threading option. (this is system dependant and can be used : only for the hybrid option) + -T : Run w3_make under time command to create compile-time metric -w work_dir : run test case in test_name/work_dir (default test_name/work) EOF @@ -107,6 +109,10 @@ EOF # 2. Preparations # # --------------------------------------------------------------------------- # +echo ' ' +echo " Running now options: run_test $*" +echo ' ' + # 2.a Setup array of command-line arguments args=`getopt $optstr $*` if [ $? != 0 ] @@ -116,6 +122,8 @@ then fi set -- $args +ARGS=$args + # 2.b Process command-line options exit_p=none exec_p=none @@ -129,6 +137,7 @@ while : do case "$1" in -a) shift; ww3_env="$1" ;; + -b) shift; batchq="$1" ;; -c) shift; cmplr="$1" ;; -C) shift; coupl="$1" ;; -d) use_gdb=1 ;; @@ -155,6 +164,7 @@ do -s) shift; swtstr="$1" ;; -S) stub=1 ;; -t) shift; nthrd="$1" ;; + -T) time_count=1 ;; -w) shift; wrkdir="$1" ;; --) break ;; esac @@ -276,6 +286,7 @@ then else file_c="$path_i/switch" fi + if [ ! -f $file_c ] then errmsg "switch file $file_c not found" @@ -387,6 +398,12 @@ fi # $path_b/w3_setup $path_s -s $file_c -q #fi +# 2.m Initialize time counter if time_count option +if [ $time_count ] +then # Add time counter if -T + cumult_comp=0 + cumult_run=0 +fi # --------------------------------------------------------------------------- # # 3. Execute Test # @@ -405,6 +422,11 @@ then fi fi +if [ $time_count ] +then # Add time counter if -T + echo " REGTESTS Time counter: run_test $ARGS" >> time_count.txt +fi + if [ $multi -eq 0 ] && [ $coupl = "OASIS" ] then if $path_i/prep_env.sh $path_i $path_w $cmplr $swtstr @@ -464,6 +486,12 @@ then cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch rm $path_b/switch_noST fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + if $path_b/w3_make $prog then : else @@ -471,6 +499,14 @@ then exit 1 fi + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + fi + for g in $all_grids do @@ -521,6 +557,11 @@ then echo " Processing $ifile" echo " Screen output routed to $ofile" + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + if $path_e/$prog > $ofile then \rm -f $prog.inp @@ -538,6 +579,14 @@ then exit 1 fi + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt + fi + done fi @@ -554,100 +603,128 @@ if [ $exec_p = $prog -o $exec_p = "none" ] then # select inp/nml files -if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}.nml 2>/dev/null`" ] -then - ifile="`ls ${path_i}/${prog}.nml 2>/dev/null`" -else - ifile="`ls $path_i/$prog.inp 2>/dev/null`" -fi + if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}.nml 2>/dev/null`" ] + then + ifile="`ls ${path_i}/${prog}.nml 2>/dev/null`" + else + ifile="`ls $path_i/$prog.inp 2>/dev/null`" + fi -if [ $? = 0 ] -then + if [ $? = 0 ] + then - echo ' ' - echo '+--------------------+' - echo '| Initial conditions |' - echo '+--------------------+' - echo ' ' + echo ' ' + echo '+--------------------+' + echo '| Initial conditions |' + echo '+--------------------+' + echo ' ' - if [ $force_shrd ] - then # build pre- & post-processing programs with SHRD only - cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ + if [ $force_shrd ] + then # build pre- & post-processing programs with SHRD only + cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ sed 's/OMPG //' | sed 's/OMPX //'| \ sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch - else - \cp -f $file_c $path_b/switch - fi - if [ $testST ] - then #add S T switches - \cp -f $path_b/switch $path_b/switch_noST - cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch - rm $path_b/switch_noST - fi - if $path_b/w3_make $prog - then : - else - errmsg "Error occured during WW3 $prog build" - exit 1 - fi - - if [ ! -f $path_e/$prog ] - then - errmsg "$path_e/$prog not found" - exit 1 - fi - - for g in $model_grids - do + else + \cp -f $file_c $path_b/switch + fi + if [ $testST ] + then #add S T switches + \cp -f $path_b/switch $path_b/switch_noST + cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch + rm $path_b/switch_noST + fi - if [ $multi -eq 2 ] - then - gu="_$g" + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` fi - # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] - then - \rm -f $prog.nml - \ln -s $ifile $prog.nml - ofile="$path_w/`basename $ifile .nml`${gu}.out" + if $path_b/w3_make $prog + then : else - \rm -f $prog.inp - \ln -s $ifile $prog.inp - ofile="$path_w/`basename $ifile .inp`${gu}.out" + errmsg "Error occured during WW3 $prog build" + exit 1 fi - echo " Processing $ifile" - echo " Screen output routed to $ofile" - - if [ $multi -eq 2 ] - then - \rm -f mod_def.ww3 - \ln -s mod_def.$g mod_def.ww3 + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` fi - if $path_e/$prog > $ofile + + if [ ! -f $path_e/$prog ] then - \rm -f $prog.inp - \rm -f $prog.nml + errmsg "$path_e/$prog not found" + exit 1 + fi + + for g in $model_grids + do + + if [ $multi -eq 2 ] + then + gu="_$g" + fi + + # link conf file + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + \rm -f $prog.nml + \ln -s $ifile $prog.nml + ofile="$path_w/`basename $ifile .nml`${gu}.out" + else + \rm -f $prog.inp + \ln -s $ifile $prog.inp + ofile="$path_w/`basename $ifile .inp`${gu}.out" + fi + + echo " Processing $ifile" + echo " Screen output routed to $ofile" + if [ $multi -eq 2 ] then - mv restart.ww3 restart.$g \rm -f mod_def.ww3 - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + \ln -s mod_def.$g mod_def.ww3 + fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_e/$prog > $ofile + then + \rm -f $prog.inp + \rm -f $prog.nml + if [ $multi -eq 2 ] then - mv $prog.nml.log ${prog}_$g.nml.log + mv restart.ww3 restart.$g + \rm -f mod_def.ww3 + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + mv $prog.nml.log ${prog}_$g.nml.log + fi fi + else + errmsg "Error occured during $path_e/$prog execution" + exit 1 fi - else - errmsg "Error occured during $path_e/$prog execution" - exit 1 - fi - - done - -fi - + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt + fi + + done + + fi + fi if [ $exit_p = $prog ] @@ -655,104 +732,132 @@ then exit fi -# 3.d boundary conditions -------------------------------------------------- # +# 3.d.1 boundary conditions -------------------------------------------------- # prog=ww3_bound if [ $exec_p = $prog -o $exec_p = "none" ] then # select inp/nml files -if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}.nml 2>/dev/null`" ] -then - ifile="`ls ${path_i}/${prog}.nml 2>/dev/null`" -else - ifile="`ls $path_i/$prog.inp 2>/dev/null`" -fi - -if [ $? = 0 ] -then - - echo ' ' - echo '+---------------------+' - echo '| Boundary conditions |' - echo '+---------------------+' - echo ' ' - - if [ $force_shrd ] - then # build pre- & post-processing programs with SHRD only - cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ - sed 's/OMPG //' | sed 's/OMPX //'| \ - sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch - else - \cp -f $file_c $path_b/switch - fi - if [ $testST ] - then #add S T switches - \cp -f $path_b/switch $path_b/switch_noST - cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch - rm $path_b/switch_noST - fi - if $path_b/w3_make $prog - then : + if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}.nml 2>/dev/null`" ] + then + ifile="`ls ${path_i}/${prog}.nml 2>/dev/null`" else - errmsg "Error occured during WW3 $prog build" - exit 1 + ifile="`ls $path_i/$prog.inp 2>/dev/null`" fi - if [ ! -f $path_e/$prog ] + if [ $? = 0 ] then - errmsg "$path_e/$prog not found" - exit 1 - fi - - for g in $model_grids - do - if [ $multi -eq 2 ] - then - gu="_$g" + + echo ' ' + echo '+---------------------+' + echo '| Boundary conditions |' + echo '+---------------------+' + echo ' ' + + if [ $force_shrd ] + then # build pre- & post-processing programs with SHRD only + cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ + sed 's/OMPG //' | sed 's/OMPX //'| \ + sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch + else + \cp -f $file_c $path_b/switch fi - - # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] - then - \rm -f $prog.nml - \ln -s $ifile $prog.nml - ofile="$path_w/`basename $ifile .nml`${gu}.out" + if [ $testST ] + then #add S T switches + \cp -f $path_b/switch $path_b/switch_noST + cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch + rm $path_b/switch_noST + fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_b/w3_make $prog + then : else - \rm -f $prog.inp - \ln -s $ifile $prog.inp - ofile="$path_w/`basename $ifile .inp`${gu}.out" + errmsg "Error occured during WW3 $prog build" + exit 1 fi - - echo " Processing $ifile" - echo " Screen output routed to $ofile" - - if [ $multi -eq 2 ] - then - \rm -f mod_def.ww3 - \ln -s mod_def.$g mod_def.ww3 + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` fi - if $path_e/$prog > $ofile + + if [ ! -f $path_e/$prog ] then - \rm -f $prog.inp - \rm -f $prog.nml + errmsg "$path_e/$prog not found" + exit 1 + fi + + for g in $model_grids + do + if [ $multi -eq 2 ] + then + gu="_$g" + fi + + # link conf file + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + \rm -f $prog.nml + \ln -s $ifile $prog.nml + ofile="$path_w/`basename $ifile .nml`${gu}.out" + else + \rm -f $prog.inp + \ln -s $ifile $prog.inp + ofile="$path_w/`basename $ifile .inp`${gu}.out" + fi + + echo " Processing $ifile" + echo " Screen output routed to $ofile" + if [ $multi -eq 2 ] then - mv nest.ww3 nest.$g \rm -f mod_def.ww3 - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + \ln -s mod_def.$g mod_def.ww3 + fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_e/$prog > $ofile + then + \rm -f $prog.inp + \rm -f $prog.nml + if [ $multi -eq 2 ] then - mv $prog.nml.log ${prog}_$g.nml.log + mv nest.ww3 nest.$g + \rm -f mod_def.ww3 + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + mv $prog.nml.log ${prog}_$g.nml.log + fi fi + else + errmsg "Error occured during $path_e/$prog execution" + exit 1 fi - else - errmsg "Error occured during $path_e/$prog execution" - exit 1 - fi - - done - -fi + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt + fi + + done + + fi fi @@ -761,202 +866,111 @@ then exit fi -# 3.d boundary conditions -------------------------------------------------- # +# 3.d.2 boundary conditions -------------------------------------------------- # prog=ww3_bounc if [ $exec_p = $prog -o $exec_p = "none" ] then # select inp/nml files -if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}.nml 2>/dev/null`" ] -then - ifile="`ls ${path_i}/${prog}.nml 2>/dev/null`" -else - ifile="`ls $path_i/$prog.inp 2>/dev/null`" -fi - -if [ $? = 0 ] -then - - echo ' ' - echo '+---------------------+' - echo '| Boundary conditions |' - echo '+---------------------+' - echo ' ' - - if [ $force_shrd ] - then # build pre- & post-processing programs with SHRD only - cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ - sed 's/OMPG //' | sed 's/OMPX //'| \ - sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch - else - \cp -f $file_c $path_b/switch - fi - if [ $testST ] - then #add S T switches - \cp -f $path_b/switch $path_b/switch_noST - cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch - rm $path_b/switch_noST - fi - if $path_b/w3_make $prog - then : + if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}.nml 2>/dev/null`" ] + then + ifile="`ls ${path_i}/${prog}.nml 2>/dev/null`" else - errmsg "Error occured during WW3 $prog build" - exit 1 + ifile="`ls $path_i/$prog.inp 2>/dev/null`" fi - - if [ ! -f $path_e/$prog ] + + if [ $? = 0 ] then - errmsg "$path_e/$prog not found" - exit 1 - fi - - for g in $model_grids - do - if [ $multi -eq 2 ] - then - gu="_$g" - fi - - # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] - then - \rm -f $prog.nml - \ln -s $ifile $prog.nml - ofile="$path_w/`basename $ifile .nml`${gu}.out" + + echo ' ' + echo '+---------------------+' + echo '| Boundary conditions |' + echo '+---------------------+' + echo ' ' + + if [ $force_shrd ] + then # build pre- & post-processing programs with SHRD only + cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ + sed 's/OMPG //' | sed 's/OMPX //'| \ + sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch else - \rm -f $prog.inp - \ln -s $ifile $prog.inp - ofile="$path_w/`basename $ifile .inp`${gu}.out" + \cp -f $file_c $path_b/switch fi - - echo " Processing $ifile" - echo " Screen output routed to $ofile" - - if [ $multi -eq 2 ] - then - \rm -f mod_def.ww3 - \ln -s mod_def.$g mod_def.ww3 + if [ $testST ] + then #add S T switches + \cp -f $path_b/switch $path_b/switch_noST + cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch + rm $path_b/switch_noST fi - if $path_e/$prog > $ofile - then - \rm -f $prog.inp - \rm -f $prog.nml - if [ $multi -eq 2 ] - then - mv nest.ww3 nest.$g - \rm -f mod_def.ww3 - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] - then - mv $prog.nml.log ${prog}_$g.nml.log - fi - fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_b/w3_make $prog + then : else - errmsg "Error occured during $path_e/$prog execution" + errmsg "Error occured during WW3 $prog build" exit 1 fi + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` + fi - done - -fi - -fi - -if [ $exit_p = $prog ] -then - exit -fi - -# 3.e Prep forcing fields --------------------------------------------------- # - -prog=ww3_prep -if [ $exec_p = $prog -o $exec_p = "none" ] -then - -# select inp/nml files -if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}*.nml 2>/dev/null`" ] -then - inputs="`ls ${path_i}/${prog}*.nml 2>/dev/null`" -else - inputs="`ls $path_i/$prog*.inp 2>/dev/null`" -fi - -if [ $? = 0 ] -then - echo ' ' - echo '+---------------------+' - echo '| Prep forcing fields |' - echo '+---------------------+' - echo ' ' - - if [ $force_shrd ] - then # build pre- & post-processing programs with SHRD only - cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ - sed 's/OMPG //' | sed 's/OMPX //'| \ - sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch - else - \cp -f $file_c $path_b/switch - fi - if [ $testST ] - then #add S T switches - \cp -f $path_b/switch $path_b/switch_noST - cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch - rm $path_b/switch_noST - fi - if $path_b/w3_make $prog - then : - else - errmsg "Error occured during WW3 $prog build" - exit 1 - fi - - if [ ! -f $path_e/$prog ] - then - errmsg "$path_e/$prog not found" - exit 1 - fi - - for g in $input_grids - do - - if [ $multi -eq 2 ] + if [ ! -f $path_e/$prog ] then - gu="_$g" + errmsg "$path_e/$prog not found" + exit 1 fi - - for ifile in $inputs + + for g in $model_grids do - + if [ $multi -eq 2 ] + then + gu="_$g" + fi + # link conf file if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml - otype="`basename $ifile .nml | sed s/^${prog}_//`" - ofile="$path_w/`basename $ifile .nml`.out" + ofile="$path_w/`basename $ifile .nml`${gu}.out" else \rm -f $prog.inp \ln -s $ifile $prog.inp - otype="`basename $ifile .inp | sed s/^${prog}_//`" - ofile="$path_w/`basename $ifile .inp`.out" + ofile="$path_w/`basename $ifile .inp`${gu}.out" fi - - echo " Processing $ifile for $otype" + + echo " Processing $ifile" echo " Screen output routed to $ofile" - + if [ $multi -eq 2 ] then \rm -f mod_def.ww3 \ln -s mod_def.$g mod_def.ww3 fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + if $path_e/$prog > $ofile then \rm -f $prog.inp \rm -f $prog.nml if [ $multi -eq 2 ] then + mv nest.ww3 nest.$g \rm -f mod_def.ww3 - mv $otype.ww3 $otype.$g if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then mv $prog.nml.log ${prog}_$g.nml.log @@ -966,12 +980,18 @@ then errmsg "Error occured during $path_e/$prog execution" exit 1 fi - + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt + fi + done - - done - -fi + + fi fi @@ -980,112 +1000,281 @@ then exit fi -# 3.e Prep forcing fields --------------------------------------------------- # +# 3.e.1 Prep forcing fields --------------------------------------------------- # -prog=ww3_prnc +prog=ww3_prep if [ $exec_p = $prog -o $exec_p = "none" ] then # select inp/nml files -if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}*.nml 2>/dev/null`" ] -then - inputs="`ls ${path_i}/${prog}*.nml 2>/dev/null`" -else - inputs="`ls $path_i/$prog*.inp 2>/dev/null`" -fi - -if [ $? = 0 ] -then - echo ' ' - echo '+-------------------------------+' - echo '| Prep of NetCDF forcing fields |' - echo '+-------------------------------+' - echo ' ' - - if [ $force_shrd ] - then # build pre- & post-processing programs with SHRD only - cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ - sed 's/OMPG //' | sed 's/OMPX //'| \ - sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch - else - \cp -f $file_c $path_b/switch - fi - if [ $testST ] - then #add S T switches - \cp -f $path_b/switch $path_b/switch_noST - cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch - rm $path_b/switch_noST - fi - if $path_b/w3_make $prog - then : + if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}*.nml 2>/dev/null`" ] + then + inputs="`ls ${path_i}/${prog}*.nml 2>/dev/null`" else - errmsg "Error occured during WW3 $prog build" - exit 1 + inputs="`ls $path_i/$prog*.inp 2>/dev/null`" fi - if [ ! -f $path_e/$prog ] + if [ $? = 0 ] then - errmsg "$path_e/$prog not found" - exit 1 - fi + echo ' ' + echo '+---------------------+' + echo '| Prep forcing fields |' + echo '+---------------------+' + echo ' ' + + if [ $force_shrd ] + then # build pre- & post-processing programs with SHRD only + cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ + sed 's/OMPG //' | sed 's/OMPX //'| \ + sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch + else + \cp -f $file_c $path_b/switch + fi + if [ $testST ] + then #add S T switches + \cp -f $path_b/switch $path_b/switch_noST + cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch + rm $path_b/switch_noST + fi - for g in $input_grids - do + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi - if [ $multi -eq 2 ] + if $path_b/w3_make $prog + then : + else + errmsg "Error occured during WW3 $prog build" + exit 1 + fi + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` + fi + + if [ ! -f $path_e/$prog ] then - gu="_$g" + errmsg "$path_e/$prog not found" + exit 1 fi - for ifile in $inputs + for g in $input_grids do - - # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + + if [ $multi -eq 2 ] then - \rm -f $prog.nml - \ln -s $ifile $prog.nml - otype="`basename $ifile .nml | sed s/^${prog}_//`" - ofile="$path_w/`basename $ifile .nml`.out" - else - \rm -f $prog.inp - \ln -s $ifile $prog.inp - otype="`basename $ifile .inp | sed s/^${prog}_//`" - ofile="$path_w/`basename $ifile .inp`.out" + gu="_$g" fi + + for ifile in $inputs + do - echo " Processing $ifile" - echo " Screen output routed to $ofile" +# link conf file + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + \rm -f $prog.nml + \ln -s $ifile $prog.nml + otype="`basename $ifile .nml | sed s/^${prog}_//`" + ofile="$path_w/`basename $ifile .nml`.out" + else + \rm -f $prog.inp + \ln -s $ifile $prog.inp + otype="`basename $ifile .inp | sed s/^${prog}_//`" + ofile="$path_w/`basename $ifile .inp`.out" + fi + + echo " Processing $ifile for $otype" + echo " Screen output routed to $ofile" - if [ $multi -eq 2 ] - then - \rm -f mod_def.ww3 - \ln -s mod_def.$g mod_def.ww3 - fi - if $path_e/$prog > $ofile - then - \rm -f $prog.inp - \rm -f $prog.nml if [ $multi -eq 2 ] then \rm -f mod_def.ww3 - mv $otype.ww3 $otype.$g - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + \ln -s mod_def.$g mod_def.ww3 + fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_e/$prog > $ofile + then + \rm -f $prog.inp + \rm -f $prog.nml + if [ $multi -eq 2 ] then - mv $prog.nml.log ${prog}_$g.nml.log + \rm -f mod_def.ww3 + mv $otype.ww3 $otype.$g + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + mv $prog.nml.log ${prog}_$g.nml.log + fi fi + else + errmsg "Error occured during $path_e/$prog execution" + exit 1 + fi + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt fi - else - errmsg "Error occured during $path_e/$prog execution" - exit 1 - fi + + done done - done + fi fi +if [ $exit_p = $prog ] +then + exit +fi + +# 3.e.2 Prep forcing fields --------------------------------------------------- # + +prog=ww3_prnc +if [ $exec_p = $prog -o $exec_p = "none" ] +then + +# select inp/nml files + if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}*.nml 2>/dev/null`" ] + then + inputs="`ls ${path_i}/${prog}*.nml 2>/dev/null`" + else + inputs="`ls $path_i/$prog*.inp 2>/dev/null`" + fi + + if [ $? = 0 ] + then + echo ' ' + echo '+-------------------------------+' + echo '| Prep of NetCDF forcing fields |' + echo '+-------------------------------+' + echo ' ' + + if [ $force_shrd ] + then # build pre- & post-processing programs with SHRD only + cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ + sed 's/OMPG //' | sed 's/OMPX //'| \ + sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch + else + \cp -f $file_c $path_b/switch + fi + if [ $testST ] + then #add S T switches + \cp -f $path_b/switch $path_b/switch_noST + cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch + rm $path_b/switch_noST + fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_b/w3_make $prog + then : + else + errmsg "Error occured during WW3 $prog build" + exit 1 + fi + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` + fi + + if [ ! -f $path_e/$prog ] + then + errmsg "$path_e/$prog not found" + exit 1 + fi + + for g in $input_grids + do + + if [ $multi -eq 2 ] + then + gu="_$g" + fi + + for ifile in $inputs + do + +# link conf file + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + \rm -f $prog.nml + \ln -s $ifile $prog.nml + otype="`basename $ifile .nml | sed s/^${prog}_//`" + ofile="$path_w/`basename $ifile .nml`.out" + else + \rm -f $prog.inp + \ln -s $ifile $prog.inp + otype="`basename $ifile .inp | sed s/^${prog}_//`" + ofile="$path_w/`basename $ifile .inp`.out" + fi + + echo " Processing $ifile" + echo " Screen output routed to $ofile" + + if [ $multi -eq 2 ] + then + \rm -f mod_def.ww3 + \ln -s mod_def.$g mod_def.ww3 + fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_e/$prog > $ofile + then + \rm -f $prog.inp + \rm -f $prog.nml + if [ $multi -eq 2 ] + then + \rm -f mod_def.ww3 + mv $otype.ww3 $otype.$g + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + mv $prog.nml.log ${prog}_$g.nml.log + fi + fi + else + errmsg "Error occured during $path_e/$prog execution" + exit 1 + fi + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt + fi + + done + + done + + fi + fi if [ $exit_p = $prog ] @@ -1113,173 +1302,206 @@ else prog=ww3_shel prgb=ww3_shel fi + if [ $exec_p = $prog -o $exec_p = "none" ] then # track file - multigrid option (ge 1) -if [ $multi -ge 1 ] -then - for g in $all_grids - do - ifile="`ls $path_i/track_i.$g 2>/dev/null`" + if [ $multi -ge 1 ] + then + for g in $all_grids + do + ifile="`ls $path_i/track_i.$g 2>/dev/null`" + if [ $? = 0 ] + then + \rm -f track_i.$g + \ln -s $ifile + fi + done + else + ifile="`ls $path_i/track_i.ww3 2>/dev/null`" if [ $? = 0 ] then - \rm -f track_i.$g + \rm -f track_i.ww3 \ln -s $ifile fi - done -else - ifile="`ls $path_i/track_i.ww3 2>/dev/null`" - if [ $? = 0 ] - then - \rm -f track_i.ww3 - \ln -s $ifile fi -fi - + # config filename - gridset option (eq 2) -if [ $multi -eq 2 ] -then - fileconf="${prog}_${grdset}" -else - fileconf="${prog}" -fi - -# select inp/nml files -if [ $nml_input ] && [ ! -z "`ls ${path_i}/${fileconf}.nml 2>/dev/null`" ] -then - ifile="`ls ${path_i}/${fileconf}.nml 2>/dev/null`" -else - ifile="`ls $path_i/${fileconf}.inp 2>/dev/null`" -fi - - -if [ $? = 0 ] -then - - echo ' ' - echo '+--------------------+' - echo '| Main program |' - echo '+--------------------+' - echo ' ' - - \cp -f $file_c $path_b/switch - if [ $testST ] - then #add S T switches - \cp -f $path_b/switch $path_b/switch_noST - cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch - rm $path_b/switch_noST + if [ $multi -eq 2 ] + then + fileconf="${prog}_${grdset}" + else + fileconf="${prog}" fi - if $path_b/w3_make $prgb - then : + +# select inp/nml files + if [ $nml_input ] && [ ! -z "`ls ${path_i}/${fileconf}.nml 2>/dev/null`" ] + then + ifile="`ls ${path_i}/${fileconf}.nml 2>/dev/null`" else - errmsg "Error occured during WW3 $prgb build" - exit 1 + ifile="`ls $path_i/${fileconf}.inp 2>/dev/null`" fi - if [ $multi -ge 1 ] && [ $coupl = "ESMF" ] + + + if [ $? = 0 ] then - if [ $cmplr ] - then - export WW3_COMP=$cmplr + + echo ' ' + echo '+--------------------+' + echo '| Main program |' + echo '+--------------------+' + echo ' ' + + \cp -f $file_c $path_b/switch + if [ $testST ] + then #add S T switches + \cp -f $path_b/switch $path_b/switch_noST + cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch + rm $path_b/switch_noST fi - if make -C $path_s/esmf $prgb + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_b/w3_make $prgb then : else - errmsg "Error occured during WW3 ESMF build" + errmsg "Error occured during WW3 $prgb build" exit 1 fi - fi - - if [ ! -f $path_e/$prgb ] - then - errmsg "$path_e/$prgb not found" - exit 1 - fi - - ofile="$path_w/$prog.out" - - # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] - then - \rm -f $prog.nml - \ln -s $ifile $prog.nml - else - \rm -f $prog.inp - \ln -s $ifile $prog.inp - fi - - if [ $multi -ge 1 ] && [ $coupl = "ESMF" ] - then - \rm -f PET*.ESMF_LogFile - \rm -f ww3_esmf.rc - \cp -f ${path_i}/ww3_esmf.rc ww3_esmf.rc - if [ ! -z "`echo ${ifile} | grep -o nml`" ] + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` + fi + + if [ $multi -ge 1 ] && [ $coupl = "ESMF" ] then - echo "WAV_input_file_name: $prog.nml" >> ww3_esmf.rc + if [ $cmplr ] + then + export WW3_COMP=$cmplr + fi + if make -C $path_s/esmf $prgb + then : + else + errmsg "Error occured during WW3 ESMF build" + exit 1 + fi fi - if [ $nproc ] + + if [ ! -f $path_e/$prgb ] then - echo "pet_count: $nproc" >> ww3_esmf.rc - else - echo "pet_count: 1" >> ww3_esmf.rc + errmsg "$path_e/$prgb not found" + exit 1 fi - fi - - echo " Processing $ifile" - echo " Screen output copied to $ofile" - if [ $pmpi ] - then - if [ $nproc ] + + ofile="$path_w/$prog.out" + +# link conf file + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then - runcmd="$runcmd -np $nproc" + \rm -f $prog.nml + \ln -s $ifile $prog.nml + else + \rm -f $prog.inp + \ln -s $ifile $prog.inp fi - if [ $nthrd ] + + if [ $multi -ge 1 ] && [ $coupl = "ESMF" ] then - if ( which omplace ) ; then - runcmd="$runcmd omplace -nt $nthrd" + \rm -f PET*.ESMF_LogFile + \rm -f ww3_esmf.rc + \cp -f ${path_i}/ww3_esmf.rc ww3_esmf.rc + if [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + echo "WAV_input_file_name: $prog.nml" >> ww3_esmf.rc + fi + if [ $nproc ] + then + echo "pet_count: $nproc" >> ww3_esmf.rc else - runcmd="$runcmd /usr/bin/env OMP_NUM_THREADS=$nthrd" + echo "pet_count: 1" >> ww3_esmf.rc fi fi - fi - if [ $pomp ] - then - if [ $nproc ] + + echo " Processing $ifile" + echo " Screen output copied to $ofile" + if [ $pmpi ] then - export OMP_NUM_THREADS=$nproc + if [ $nproc ] + then + if [ $batchq = "slurm" ] + then + runcmd="$runcmd -n $nproc" + + else + runcmd="$runcmd -np $nproc" + fi + fi + if [ $nthrd ] + then + if ( which omplace ) ; then + runcmd="$runcmd omplace -nt $nthrd" + else + runcmd="$runcmd /usr/bin/env OMP_NUM_THREADS=$nthrd" + fi + fi fi - fi - - if [ $multi -eq 0 ] && [ $coupl = "OASIS" ] - then - halfnproc=$(($nproc / 2)) - if $runcmd1 -np $halfnproc $path_e/$prgb : -np $halfnproc $path_w/toy_model | tee $ofile + if [ $pomp ] then - \rm -f track_i.ww3 - \rm -f $prog.inp - else - errmsg "Error occured during $path_e/$prog execution" - exit 1 + if [ $nproc ] + then + export OMP_NUM_THREADS=$nproc + fi fi - else - if $runcmd $path_e/$prgb | tee $ofile + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if [ $multi -eq 0 ] && [ $coupl = "OASIS" ] then - \rm -f track_i.ww3 - \rm -f $prog.inp - \rm -f $prog.nml - for file_p in ${files_p} - do - \rm -f ${file_p} - done + halfnproc=$(($nproc / 2)) + if $runcmd1 -np $halfnproc $path_e/$prgb : -np $halfnproc $path_w/toy_model | tee $ofile + then + \rm -f track_i.ww3 + \rm -f $prog.inp + else + errmsg "Error occured during $path_e/$prog execution" + exit 1 + fi else - errmsg "Error occured during $path_e/$prog execution" - exit 1 + if $runcmd $path_e/$prgb | tee $ofile + then + \rm -f track_i.ww3 + \rm -f $prog.inp + \rm -f $prog.nml + for file_p in ${files_p} + do + \rm -f ${file_p} + done + else + errmsg "Error occured during $path_e/$prog execution" + exit 1 + fi + fi + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt fi fi fi -fi - if [ $exit_p = $prog ] then exit @@ -1292,85 +1514,111 @@ if [ $exec_p = $prog -o $exec_p = "none" ] then # config filename - gridset option (eq 2) -if [ $multi -eq 2 ] -then - fileconf="${prog}_${grdset}" -else - fileconf="${prog}" -fi - -# select inp/nml files -if [ $nml_input ] && [ ! -z "`ls ${path_i}/${fileconf}.nml 2>/dev/null`" ] -then - ifile="`ls ${path_i}/${fileconf}.nml 2>/dev/null`" -else - ifile="`ls $path_i/${fileconf}.inp 2>/dev/null`" -fi - - -if [ $? = 0 ] -then - - echo ' ' - echo '+-------------------------+' - echo '| Integrated output |' - echo '+-------------------------+' - echo ' ' - - if [ $force_shrd ] - then # build pre- & post-processing programs with SHRD only - cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ - sed 's/OMPG //' | sed 's/OMPX //'| \ - sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch - else - \cp -f $file_c $path_b/switch - fi - if [ $testST ] - then #add S T switches - \cp -f $path_b/switch $path_b/switch_noST - cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch - rm $path_b/switch_noST - fi - if $path_b/w3_make $prog - then : + if [ $multi -eq 2 ] + then + fileconf="${prog}_${grdset}" else - errmsg "Error occured during WW3 $prog build" - exit 1 + fileconf="${prog}" fi - - # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] +# select inp/nml files + if [ $nml_input ] && [ ! -z "`ls ${path_i}/${fileconf}.nml 2>/dev/null`" ] then - \rm -f $prog.nml - \ln -s $ifile $prog.nml - ofile="$path_w/`basename $ifile .nml`.out" + ifile="`ls ${path_i}/${fileconf}.nml 2>/dev/null`" else - \rm -f $prog.inp - \ln -s $ifile $prog.inp - ofile="$path_w/`basename $ifile .inp`.out" + ifile="`ls $path_i/${fileconf}.inp 2>/dev/null`" fi - echo " Processing $ifile" - echo " Screen output copied to $ofile" - if $path_e/$prog > $ofile + if [ $? = 0 ] then - \rm -f $prog.inp - \rm -f $prog.nml - for g in $intgl_grids - do - if [ -f "out_grd.$g" ] - then - model_grids="$model_grids $g" - fi - done - else - errmsg "Error occured during $path_e/$prog execution" - exit 1 - fi -fi + echo ' ' + echo '+-------------------------+' + echo '| Integrated output |' + echo '+-------------------------+' + echo ' ' + + if [ $force_shrd ] + then # build pre- & post-processing programs with SHRD only + cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ + sed 's/OMPG //' | sed 's/OMPX //'| \ + sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch + else + \cp -f $file_c $path_b/switch + fi + if [ $testST ] + then #add S T switches + \cp -f $path_b/switch $path_b/switch_noST + cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch + rm $path_b/switch_noST + fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_b/w3_make $prog + then : + else + errmsg "Error occured during WW3 $prog build" + exit 1 + fi + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` + fi + +# link conf file + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + \rm -f $prog.nml + \ln -s $ifile $prog.nml + ofile="$path_w/`basename $ifile .nml`.out" + else + \rm -f $prog.inp + \ln -s $ifile $prog.inp + ofile="$path_w/`basename $ifile .inp`.out" + fi + + echo " Processing $ifile" + echo " Screen output copied to $ofile" + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_e/$prog > $ofile + then + \rm -f $prog.inp + \rm -f $prog.nml + for g in $intgl_grids + do + if [ -f "out_grd.$g" ] + then + model_grids="$model_grids $g" + fi + done + else + errmsg "Error occured during $path_e/$prog execution" + exit 1 + fi + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt + fi + + fi fi @@ -1402,169 +1650,197 @@ fi for prog in $out_progs do -rline='| Gridded output |' -if [ $prog = ww3_ounf ] -then - rline='| NC Gridded output |' -fi -if [ $prog = gx_outf ] -then - rline='|GrADS Gridded output|' -fi - -if [ $exec_p = $prog -o $exec_p = "none" ] -then - -# select inp/nml files -if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}*.nml 2>/dev/null`" ] -then - inputs="`ls ${path_i}/${prog}*.nml 2>/dev/null`" -else - inputs="`ls $path_i/$prog*.inp 2>/dev/null`" -fi - - -if [ $? = 0 ] -then - - echo ' ' - echo '+--------------------+' - echo "$rline" - echo '+--------------------+' - echo ' ' - - if [ $force_shrd ] - then # build pre- & post-processing programs with SHRD only - cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ - sed 's/OMPG //' | sed 's/OMPX //'| \ - sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch - else - \cp -f $file_c $path_b/switch - fi - if [ $testST ] - then #add S T switches - \cp -f $path_b/switch $path_b/switch_noST - cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch - rm $path_b/switch_noST - fi - if $path_b/w3_make $prog - then : - else - errmsg "Error occured during WW3 $prog build" - exit 1 + rline='| Gridded output |' + if [ $prog = ww3_ounf ] + then + rline='| NC Gridded output |' fi - - if [ ! -f $path_e/$prog ] + if [ $prog = gx_outf ] then - errmsg "$path_e/$prog not found" - exit 1 + rline='|GrADS Gridded output|' fi - for g in $model_grids - do + if [ $exec_p = $prog -o $exec_p = "none" ] + then - if [ $multi -eq 2 ] +# select inp/nml files + if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}*.nml 2>/dev/null`" ] then - if [ ! -e out_grd.$g ] - then - continue - fi - gu="_$g" + inputs="`ls ${path_i}/${prog}*.nml 2>/dev/null`" + else + inputs="`ls $path_i/$prog*.inp 2>/dev/null`" fi - for ifile in $inputs - do - # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] - then - \rm -f $prog.nml - \ln -s $ifile $prog.nml - otype="`basename $ifile .nml | sed s/^${prog}_//`" - ofile="$path_w/`basename $ifile .nml`${gu}.out" + if [ $? = 0 ] + then + + echo ' ' + echo '+--------------------+' + echo "$rline" + echo '+--------------------+' + echo ' ' + + if [ $force_shrd ] + then # build pre- & post-processing programs with SHRD only + cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ + sed 's/OMPG //' | sed 's/OMPX //'| \ + sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch else - \rm -f $prog.inp - \ln -s $ifile $prog.inp - otype="`basename $ifile .inp | sed s/^${prog}_//`" - ofile="$path_w/`basename $ifile .inp`${gu}.out" + \cp -f $file_c $path_b/switch + fi + if [ $testST ] + then #add S T switches + \cp -f $path_b/switch $path_b/switch_noST + cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch + rm $path_b/switch_noST + fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` fi - echo " Processing $ifile" - echo " Screen output routed to $ofile" + if $path_b/w3_make $prog + then : + else + errmsg "Error occured during WW3 $prog build" + exit 1 + fi + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` + fi - if [ $multi -eq 2 ] + if [ ! -f $path_e/$prog ] then - \rm -f mod_def.ww3 - \rm -f out_grd.ww3 - \ln -s mod_def.$g mod_def.ww3 - \ln -s out_grd.$g out_grd.ww3 - \rm -f ww3.????????.* - \rm -fr ${otype}_$g + errmsg "$path_e/$prog not found" + exit 1 fi - if $path_e/$prog > $ofile - then - \rm -f $prog.inp - \rm -f $prog.nml + + for g in $model_grids + do + if [ $multi -eq 2 ] then - \rm -f mod_def.ww3 - \rm -f out_grd.ww3 - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ ! -e out_grd.$g ] then - mv $prog.nml.log ${prog}_$g.nml.log + continue fi - ofiles="`ls ww3.????????.* 2>/dev/null`" - if [ $? = 0 ] + gu="_$g" + fi + + for ifile in $inputs + do + +# link conf file + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then - mkdir ${otype}_$g - mv -f $ofiles ${otype}_$g/. - echo " ASCII output files moved to ${otype}_$g" + \rm -f $prog.nml + \ln -s $ifile $prog.nml + otype="`basename $ifile .nml | sed s/^${prog}_//`" + ofile="$path_w/`basename $ifile .nml`${gu}.out" + else + \rm -f $prog.inp + \ln -s $ifile $prog.inp + otype="`basename $ifile .inp | sed s/^${prog}_//`" + ofile="$path_w/`basename $ifile .inp`${gu}.out" fi - ofiles="`ls ww3.????*.nc 2>/dev/null`" - if [ $? = 0 ] + + echo " Processing $ifile" + echo " Screen output routed to $ofile" + + if [ $multi -eq 2 ] then - mkdir ${otype}_$g - mv -f $ofiles ${otype}_$g/. - echo " NetCDF output files moved to ${otype}_$g" + \rm -f mod_def.ww3 + \rm -f out_grd.ww3 + \ln -s mod_def.$g mod_def.ww3 + \ln -s out_grd.$g out_grd.ww3 + \rm -f ww3.????????.* + \rm -fr ${otype}_$g fi -# - if [ "$prog" = 'gx_outf' ] + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_e/$prog > $ofile then - case $g in - 'grd2' ) sed -e "s/ww3\.grads/ww3\.$g/g" \ - -e "s/37\.5/3\.75/g" \ - -e "s/1\.50/0\.15/g" \ - ww3.ctl > $g.ctl ;; - 'grd3' ) sed -e "s/ww3\.grads/ww3\.$g/g" \ - -e "s/12\.5/1\.25/g" \ - -e "s/0\.50/0\.05/g" \ - ww3.ctl > $g.ctl ;; - * ) sed -e "s/ww3\.grads/ww3\.$g/g" \ - -e "s/0\.25/2\.50/g" ww3.ctl > $g.ctl ;; - esac - rm -f ww3.ctl - echo " ww3.ctl moved to $g.ctl" - mv ww3.grads ww3.$g - echo " ww3.grads moved to ww3.$g" + \rm -f $prog.inp + \rm -f $prog.nml + if [ $multi -eq 2 ] + then + \rm -f mod_def.ww3 + \rm -f out_grd.ww3 + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + mv $prog.nml.log ${prog}_$g.nml.log + fi + ofiles="`ls ww3.????????.* 2>/dev/null`" + if [ $? = 0 ] + then + mkdir ${otype}_$g + mv -f $ofiles ${otype}_$g/. + echo " ASCII output files moved to ${otype}_$g" + fi + ofiles="`ls ww3.????*.nc 2>/dev/null`" + if [ $? = 0 ] + then + mkdir ${otype}_$g + mv -f $ofiles ${otype}_$g/. + echo " NetCDF output files moved to ${otype}_$g" + fi +# + if [ "$prog" = 'gx_outf' ] + then + case $g in + 'grd2' ) sed -e "s/ww3\.grads/ww3\.$g/g" \ + -e "s/37\.5/3\.75/g" \ + -e "s/1\.50/0\.15/g" \ + ww3.ctl > $g.ctl ;; + 'grd3' ) sed -e "s/ww3\.grads/ww3\.$g/g" \ + -e "s/12\.5/1\.25/g" \ + -e "s/0\.50/0\.05/g" \ + ww3.ctl > $g.ctl ;; + * ) sed -e "s/ww3\.grads/ww3\.$g/g" \ + -e "s/0\.25/2\.50/g" ww3.ctl > $g.ctl ;; + esac + rm -f ww3.ctl + echo " ww3.ctl moved to $g.ctl" + mv ww3.grads ww3.$g + echo " ww3.grads moved to ww3.$g" + fi + fi + else + errmsg "Error occured during $path_e/$prog execution" + exit 1 fi - fi - else - errmsg "Error occured during $path_e/$prog execution" - exit 1 - fi - done + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt + fi - done + done -fi + done -fi + fi -if [ $exit_p = $prog ] -then - exit -fi + fi + + if [ $exit_p = $prog ] + then + exit + fi done # end of loop on progs @@ -1593,356 +1869,447 @@ fi for prog in $out_progs do -rline='| Point output |' -if [ $prog = ww3_ounp ] -then - rline='| NC Point output |' -fi + rline='| Point output |' + if [ $prog = ww3_ounp ] + then + rline='| NC Point output |' + fi -if [ $exec_p = $prog -o $exec_p = "none" ] -then + if [ $exec_p = $prog -o $exec_p = "none" ] + then # select inp/nml format for input file to program $prog -if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}*.nml 2>/dev/null`" ] -then - inputs="`ls ${path_i}/${prog}*.nml 2>/dev/null`" -else - inputs="`ls $path_i/$prog*.inp 2>/dev/null`" -fi + if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}*.nml 2>/dev/null`" ] + then + inputs="`ls ${path_i}/${prog}*.nml 2>/dev/null`" + else + inputs="`ls $path_i/$prog*.inp 2>/dev/null`" + fi + if [ $? = 0 ] + then -if [ $? = 0 ] -then + echo ' ' + echo '+--------------------+' + echo "$rline" + echo '+--------------------+' + echo ' ' + + if [ $force_shrd ] + then # build pre- & post-processing programs with SHRD only + cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ + sed 's/OMPG //' | sed 's/OMPX //'| \ + sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch + else + \cp -f $file_c $path_b/switch + fi + if [ $testST ] + then #add S T switches + \cp -f $path_b/switch $path_b/switch_noST + cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch + rm $path_b/switch_noST + fi - echo ' ' - echo '+--------------------+' - echo "$rline" - echo '+--------------------+' - echo ' ' + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_b/w3_make $prog + then : + else + errmsg "Error occured during WW3 $prog build" + exit 1 + fi + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` + fi + + if [ ! -f $path_e/$prog ] + then + errmsg "$path_e/$prog not found" + exit 1 + fi + + for g in $point_grids + do + + if [ $multi -eq 2 ] + then + if [ ! -e out_pnt.$g ] + then + continue + fi + gu="_$g" + fi + + for ifile in $inputs + do + + # link conf file + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + \rm -f $prog.nml + \ln -s $ifile $prog.nml + otype="`basename $ifile .nml | sed s/^${prog}_//`" + ofile="$path_w/`basename $ifile .nml`${gu}.out" + else + \rm -f $prog.inp + \ln -s $ifile $prog.inp + otype="`basename $ifile .inp | sed s/^${prog}_//`" + ofile="$path_w/`basename $ifile .inp`${gu}.out" + fi + + echo " Processing $ifile" + echo " Screen output routed to $ofile" + + if [ $multi -eq 2 ] + then + \rm -f mod_def.ww3 + \rm -f out_pnt.ww3 + \ln -s mod_def.$g mod_def.ww3 + \ln -s out_pnt.$g out_pnt.ww3 + fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_e/$prog > $ofile + then + \rm -f $prog.inp + \rm -f $prog.nml + if [ $multi -eq 2 ] + then + \rm -f mod_def.ww3 + \rm -f out_pnt.ww3 + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + mv $prog.nml.log ${prog}_$g.nml.log + fi + fi + else + errmsg "Error occured during $path_e/$prog execution" + exit 1 + fi + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt + fi + + done + + done + + fi - if [ $force_shrd ] - then # build pre- & post-processing programs with SHRD only - cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ - sed 's/OMPG //' | sed 's/OMPX //'| \ - sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch - else - \cp -f $file_c $path_b/switch - fi - if [ $testST ] - then #add S T switches - \cp -f $path_b/switch $path_b/switch_noST - cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch - rm $path_b/switch_noST - fi - if $path_b/w3_make $prog - then : - else - errmsg "Error occured during WW3 $prog build" - exit 1 fi - if [ ! -f $path_e/$prog ] + if [ $exit_p = $prog ] then - errmsg "$path_e/$prog not found" - exit 1 + exit fi - for g in $point_grids - do +done # end of loop on progs - if [ $multi -eq 2 ] +# 3.i Track output ---------------------------------------------------------- # + +case $outopt in + native) out_progs="ww3_trck" ;; + netcdf) out_progs="ww3_trnc" ;; + both) out_progs="ww3_trck ww3_trnc" ;; + *) out_progs="" ;; +esac + +for prog in $out_progs +do + + if [ $exec_p = $prog -o $exec_p = "none" ] + then + +# select inp/nml files + if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}*.nml 2>/dev/null`" ] then - if [ ! -e out_pnt.$g ] - then - continue - fi - gu="_$g" + inputs="`ls ${path_i}/${prog}*.nml 2>/dev/null`" + else + inputs="`ls $path_i/$prog*.inp 2>/dev/null`" fi - for ifile in $inputs - do - # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] - then - \rm -f $prog.nml - \ln -s $ifile $prog.nml - otype="`basename $ifile .nml | sed s/^${prog}_//`" - ofile="$path_w/`basename $ifile .nml`${gu}.out" + if [ $? = 0 ] + then + + echo ' ' + echo '+--------------------+' + echo '| Track output |' + echo '+--------------------+' + echo ' ' + + if [ $force_shrd ] + then # build pre- & post-processing programs with SHRD only + cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ + sed 's/OMPG //' | sed 's/OMPX //'| \ + sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch else - \rm -f $prog.inp - \ln -s $ifile $prog.inp - otype="`basename $ifile .inp | sed s/^${prog}_//`" - ofile="$path_w/`basename $ifile .inp`${gu}.out" + \cp -f $file_c $path_b/switch + fi + if [ $testST ] + then #add S T switches + \cp -f $path_b/switch $path_b/switch_noST + cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch + rm $path_b/switch_noST fi - echo " Processing $ifile" - echo " Screen output routed to $ofile" + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi - if [ $multi -eq 2 ] - then - \rm -f mod_def.ww3 - \rm -f out_pnt.ww3 - \ln -s mod_def.$g mod_def.ww3 - \ln -s out_pnt.$g out_pnt.ww3 + if $path_b/w3_make $prog + then : + else + errmsg "Error occured during WW3 $prog build" + exit 1 fi - if $path_e/$prog > $ofile + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` + fi + + if [ ! -f $path_e/$prog ] then - \rm -f $prog.inp - \rm -f $prog.nml + errmsg "$path_e/$prog not found" + exit 1 + fi + + for g in $point_grids + do + + if [ $multi -eq 2 ] + then + if [ ! -e track_o.$g ] + then + continue + fi + gu="_$g" + fileconf="$prog${gu}" + else + fileconf="$prog" + fi + +# select inp/nml files + if [ $nml_input ] && [ ! -z "`ls ${path_i}/${fileconf}.nml 2>/dev/null`" ] + then + ifile="`ls ${path_i}/${fileconf}.nml 2>/dev/null`" + else + ifile="`ls $path_i/${fileconf}.inp 2>/dev/null`" + fi + + if [ ! -f $ifile ] + then + errmsg "$ifile not found" + exit 1 + fi + +# link conf file + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + \rm -f $prog.nml + \ln -s $ifile $prog.nml + otype="`basename $ifile .nml | sed s/^${prog}_//`" + ofile="$path_w/`basename $ifile .nml`.out" + else + \rm -f $prog.inp + \ln -s $ifile $prog.inp + otype="`basename $ifile .inp | sed s/^${prog}_//`" + ofile="$path_w/`basename $ifile .inp`.out" + fi + + echo " Processing $ifile" + echo " Screen output routed to $ofile" + if [ $multi -eq 2 ] then - \rm -f mod_def.ww3 - \rm -f out_pnt.ww3 - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + \rm -f track_o.ww3 + \ln -s track_o.$g track_o.ww3 + fi + + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_e/$prog > $ofile + then + \rm -f $prog.inp + \rm -f $prog.nml + if [ $multi -eq 2 ] then - mv $prog.nml.log ${prog}_$g.nml.log + \rm -f track_o.ww3 + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + then + mv $prog.nml.log ${prog}_$g.nml.log + fi + if [ -e track.ww3 ] + then + mv track.ww3 track.$g + elif [ -e track.nc ] + then + mv track.nc track_$g.nc + fi fi + else + errmsg "Error occured during $path_e/$prog execution" + exit 1 fi - else - errmsg "Error occured during $path_e/$prog execution" - exit 1 - fi - - done - done + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt + fi + done -fi + fi -fi + fi -if [ $exit_p = $prog ] -then - exit -fi + if [ $exit_p = $prog ] + then + exit + fi done # end of loop on progs -# 3.i Track output ---------------------------------------------------------- # - -case $outopt in - native) out_progs="ww3_trck" ;; - netcdf) out_progs="ww3_trnc" ;; - both) out_progs="ww3_trck ww3_trnc" ;; - *) out_progs="" ;; -esac - -for prog in $out_progs -do +# 3.j Wave system tracking -------------------------------------------------- # +prog=ww3_systrk if [ $exec_p = $prog -o $exec_p = "none" ] then # select inp/nml files -if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}*.nml 2>/dev/null`" ] -then - inputs="`ls ${path_i}/${prog}*.nml 2>/dev/null`" -else - inputs="`ls $path_i/$prog*.inp 2>/dev/null`" -fi - - -if [ $? = 0 ] -then - - echo ' ' - echo '+--------------------+' - echo '| Track output |' - echo '+--------------------+' - echo ' ' - - if [ $force_shrd ] - then # build pre- & post-processing programs with SHRD only - cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ - sed 's/OMPG //' | sed 's/OMPX //'| \ - sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switch - else - \cp -f $file_c $path_b/switch - fi - if [ $testST ] - then #add S T switches - \cp -f $path_b/switch $path_b/switch_noST - cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch - rm $path_b/switch_noST - fi - if $path_b/w3_make $prog - then : + if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}.nml 2>/dev/null`" ] + then + ifile="`ls ${path_i}/${prog}.nml 2>/dev/null`" else - errmsg "Error occured during WW3 $prog build" - exit 1 + ifile="`ls $path_i/$prog.inp 2>/dev/null`" fi - if [ ! -f $path_e/$prog ] + + if [ $? = 0 ] then - errmsg "$path_e/$prog not found" - exit 1 - fi - for g in $point_grids - do + echo ' ' + echo '+-------------------------+' + echo '| Wave system tracking |' + echo '+-------------------------+' + echo ' ' - if [ $multi -eq 2 ] - then - if [ ! -e track_o.$g ] - then - continue - fi - gu="_$g" - fileconf="$prog${gu}" - else - fileconf="$prog" + \cp -f $file_c $path_b/switch +# if [ $force_shrd ] +# then # build pre- & post-processing programs with SHRD only +# cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ +# sed 's/OMPG //' | sed 's/OMPX //'| \ +# sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switchh +# else +# \cp -f $file_c $path_b/switch +# fi + if [ $testST ] + then #add S T switches + \cp -f $path_b/switch $path_b/switch_noST + cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch + rm $path_b/switch_noST fi - # select inp/nml files - if [ $nml_input ] && [ ! -z "`ls ${path_i}/${fileconf}.nml 2>/dev/null`" ] - then - ifile="`ls ${path_i}/${fileconf}.nml 2>/dev/null`" - else - ifile="`ls $path_i/${fileconf}.inp 2>/dev/null`" + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` fi - if [ ! -f $ifile ] - then - errmsg "$ifile not found" + if $path_b/w3_make $prog + then : + else + errmsg "Error occured during WW3 $prog build" exit 1 fi - # link conf file + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` + fi + + +# link conf file if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then \rm -f $prog.nml \ln -s $ifile $prog.nml - otype="`basename $ifile .nml | sed s/^${prog}_//`" ofile="$path_w/`basename $ifile .nml`.out" else \rm -f $prog.inp \ln -s $ifile $prog.inp - otype="`basename $ifile .inp | sed s/^${prog}_//`" ofile="$path_w/`basename $ifile .inp`.out" fi echo " Processing $ifile" - echo " Screen output routed to $ofile" + echo " Screen output copied to $ofile" - if [ $multi -eq 2 ] + if [ $pmpi ] then - \rm -f track_o.ww3 - \ln -s track_o.$g track_o.ww3 - fi - if $path_e/$prog > $ofile - then - \rm -f $prog.inp - \rm -f $prog.nml - if [ $multi -eq 2 ] + if [ $nproc ] then - \rm -f track_o.ww3 - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $batchq = "slurm" ] then - mv $prog.nml.log ${prog}_$g.nml.log + runcmd="$runcmd -n $nproc" + + else + runcmd="$runcmd -np $nproc" fi - if [ -e track.ww3 ] - then - mv track.ww3 track.$g - elif [ -e track.nc ] - then - mv track.nc track_$g.nc - fi fi + fi + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + if $runcmd $path_e/$prog | tee $ofile + then + \rm -f $prog.inp + \rm -f $prog.nml else errmsg "Error occured during $path_e/$prog execution" exit 1 fi - done - -fi - -fi - -if [ $exit_p = $prog ] -then - exit -fi - -done # end of loop on progs - -# 3.j Wave system tracking -------------------------------------------------- # - -prog=ww3_systrk -if [ $exec_p = $prog -o $exec_p = "none" ] -then - -# select inp/nml files -if [ $nml_input ] && [ ! -z "`ls ${path_i}/${prog}.nml 2>/dev/null`" ] -then - ifile="`ls ${path_i}/${prog}.nml 2>/dev/null`" -else - ifile="`ls $path_i/$prog.inp 2>/dev/null`" -fi - - -if [ $? = 0 ] -then - - echo ' ' - echo '+-------------------------+' - echo '| Wave system tracking |' - echo '+-------------------------+' - echo ' ' - - \cp -f $file_c $path_b/switch -# if [ $force_shrd ] -# then # build pre- & post-processing programs with SHRD only -# cat $file_c | sed 's/DIST/SHRD/' | sed 's/MPI //' | \ -# sed 's/OMPG //' | sed 's/OMPX //'| \ -# sed 's/OMPH //' | sed 's/PDLIB //' > $path_b/switchh -# else -# \cp -f $file_c $path_b/switch -# fi - if [ $testST ] - then #add S T switches - \cp -f $path_b/switch $path_b/switch_noST - cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch - rm $path_b/switch_noST - fi - if $path_b/w3_make $prog - then : - else - errmsg "Error occured during WW3 $prog build" - exit 1 - fi - - - # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] - then - \rm -f $prog.nml - \ln -s $ifile $prog.nml - ofile="$path_w/`basename $ifile .nml`.out" - else - \rm -f $prog.inp - \ln -s $ifile $prog.inp - ofile="$path_w/`basename $ifile .inp`.out" - fi - - echo " Processing $ifile" - echo " Screen output copied to $ofile" - - if [ $pmpi ] - then - if [ $nproc ] - then - runcmd="$runcmd -np $nproc" + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt fi - fi - if $runcmd $path_e/$prog | tee $ofile - then - \rm -f $prog.inp - \rm -f $prog.nml - else - errmsg "Error occured during $path_e/$prog execution" - exit 1 - fi +# if [ $time_count ] +# then # Add time counter if -T +# Tstart=`date +"%s.%2N"` +# fi +# # if $path_e/$prog > $ofile # then # \rm -f $prog.inp @@ -1957,8 +2324,16 @@ then # errmsg "Error occured during $path_e/$prog execution" # exit 1 # fi +# +# if [ $time_count ] +# then # Add time counter if -T +# Tend=`date +"%s.%2N"` +# Maketime=`echo "$Tend - $Tstart" | bc` +# cumult_run=`echo "$Maketime + $cumult_run" | bc` +# printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt +# fi -fi + fi fi @@ -1983,68 +2358,99 @@ then ifile="`ls $path_i/$prog.inp 2>/dev/null`" #fi -if [ $? = 0 ] -then - - echo ' ' - echo '+-------------------------+' - echo '| Update Restart File |' - echo '+-------------------------+' - echo ' ' - - \cp -f $file_c $path_b/switch - if [ $testST ] - then #add S T switches - \cp -f $path_b/switch $path_b/switch_noST - cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch - rm $path_b/switch_noST - fi - if $path_b/w3_make $prog - then : - else - errmsg "Error occured during WW3 $prog build" - exit 1 - fi - - # link conf file - if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] + if [ $? = 0 ] then - \rm -f $prog.nml - \ln -s $ifile $prog.nml - ofile="$path_w/`basename $ifile .nml`.out" - else - \rm -f $prog.inp - \ln -s $ifile $prog.inp - ofile="$path_w/`basename $ifile .inp`.out" - fi - echo " Processing $ifile" - echo " Screen output copied to $ofile" + echo ' ' + echo '+-------------------------+' + echo '| Update Restart File |' + echo '+-------------------------+' + echo ' ' -# Additional Files - \rm -f anl.grbtxt - \ln -s "$path_i/anl.grbtxt" anl.grbtxt - - mv -f restart001.ww3 restart.ww3 + \cp -f $file_c $path_b/switch + if [ $testST ] + then #add S T switches + \cp -f $path_b/switch $path_b/switch_noST + cat $path_b/switch_noST | sed 's/F90/F90 S T /' > $path_b/switch + rm $path_b/switch_noST + fi - if [ $pmpi ] - then - if [ $nproc ] + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $path_b/w3_make $prog + then : + else + errmsg "Error occured during WW3 $prog build" + exit 1 + fi + + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + printf "\n $prog \n %8.2f sec compile time" $Maketime >> time_count.txt + cumult_comp=`echo "$Maketime + $cumult_comp" | bc` + fi + +# link conf file + if [ $nml_input ] && [ ! -z "`echo ${ifile} | grep -o nml`" ] then - runcmd="$runcmd -np $nproc" + \rm -f $prog.nml + \ln -s $ifile $prog.nml + ofile="$path_w/`basename $ifile .nml`.out" + else + \rm -f $prog.inp + \ln -s $ifile $prog.inp + ofile="$path_w/`basename $ifile .inp`.out" fi + + echo " Processing $ifile" + echo " Screen output copied to $ofile" + +# Additional Files + \rm -f anl.grbtxt + \ln -s "$path_i/anl.grbtxt" anl.grbtxt + + mv -f restart001.ww3 restart.ww3 + + if [ $pmpi ] + then + if [ $nproc ] + then + if [ $batchq = "slurm" ] + then + runcmd="$runcmd -n $nproc" + else + runcmd="$runcmd -np $nproc" + fi + fi + fi + if [ $time_count ] + then # Add time counter if -T + Tstart=`date +"%s.%2N"` + fi + + if $runcmd $path_e/$prog | tee $ofile + then + \rm -f $prog.inp + \rm -f $prog.nml + else + errmsg "Error occured during $path_e/$prog execution" + exit 1 + fi + if [ $time_count ] + then # Add time counter if -T + Tend=`date +"%s.%2N"` + Maketime=`echo "$Tend - $Tstart" | bc` + cumult_run=`echo "$Maketime + $cumult_run" | bc` + printf "\n %8.2f sec run time \n" $Maketime >> time_count.txt + fi + fi - if $runcmd $path_e/$prog | tee $ofile - then - \rm -f $prog.inp - \rm -f $prog.nml - else - errmsg "Error occured during $path_e/$prog execution" - exit 1 - fi - -fi - + fi if [ $exit_p = $prog ] @@ -2052,8 +2458,6 @@ then exit fi - - # 3.k End ------------------------------------------------------------------- # if [ "$stub" ] @@ -2061,6 +2465,13 @@ then date > finished fi +if [ $time_count ] +then # Export cumultive time if time_count + printf "\n\n Total compile time: %8.2f sec" $cumult_comp >> time_count.txt + printf "\n Total run time : %8.2f sec" $cumult_run >> time_count.txt + printf "\n" >> time_count.txt +fi + echo ' ' ; echo ' ' ; echo "Files in `pwd` :" ; echo ' ' ls -l From 0c9be538fd066a89b34b13862bb88638c9875f2d Mon Sep 17 00:00:00 2001 From: ajhenrique Date: Mon, 1 Jul 2019 14:55:38 -0400 Subject: [PATCH 03/13] Branch FB_InputInterp: preparing general arrays and loop blocks for generalized interpolation to curvilinear grids. --- model/ftn/wmupdtmd.ftn | 534 +++++++++++++++++++++-------------------- 1 file changed, 276 insertions(+), 258 deletions(-) diff --git a/model/ftn/wmupdtmd.ftn b/model/ftn/wmupdtmd.ftn index 84cf4439f..420ebd99e 100644 --- a/model/ftn/wmupdtmd.ftn +++ b/model/ftn/wmupdtmd.ftn @@ -21,6 +21,8 @@ !/ (T. J. Campbell, NRL) !/ 20-Jan-2017 : Enable using input from coupler ( version 6.02 ) !/ (T. J. Campbell, NRL) +!/ 01-Jul-2019 : Generalize output to curv grids ( version 7.XX ) +!/ (R. Padilla-Hernandez, J.H. Alves, EMC/NOAA) !/ !/ Copyright 2009 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -1122,7 +1124,8 @@ !/ USE W3GDATMD, ONLY: NX, NY, X0, Y0, SX, SY, GRIDS, FLAGLL, & GTYPE, RLGTYPE, CLGTYPE, UNGTYPE, & - ICLOSE_NONE, ICLOSE_SMPL, ICLOSE_TRPL + ICLOSE_NONE, ICLOSE_SMPL, ICLOSE_TRPL, & + HPFAC, HQFAC USE WMMDATMD, ONLY: IMPROC, NMPERR, NMPSCR, MDST, MDSE, MDSO, & MDSS !/ @@ -1155,7 +1158,7 @@ MAP3(NX,NY), FLAGUP ! INTEGER, POINTER :: NXI, NYI, MAP(:,:), MAPI(:,:) - REAL, POINTER :: X0I, Y0I, SXI, SYI + REAL, POINTER :: X0I, Y0I, SXI, SYI, HPFACI, HQFACI INTEGER, POINTER :: ICLOSE !/T1 CHARACTER(LEN=17) :: FORMAT1 !/ @@ -1166,12 +1169,7 @@ !/S CALL STRACE (IENT, 'WMUPDV') ! - IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & - GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN - WRITE (MDSE,'(/2A)') ' *** ERROR WMUPDV: ', & - 'CURVILINEAR GRID SUPPORT NOT YET IMPLEMENTED ***' - CALL EXTCDE ( 999 ) - ELSE IF ( GRIDS(IMOD)%GTYPE .EQ. UNGTYPE .OR. & + IF ( GRIDS(IMOD)%GTYPE .EQ. UNGTYPE .OR. & GRIDS(JMOD)%GTYPE .EQ. UNGTYPE ) THEN WRITE (MDSE,'(/2A)') ' *** ERROR WMUPDV: ', & 'UNSTRUCTURED GRID SUPPORT NOT YET IMPLEMENTED ***' @@ -1184,6 +1182,8 @@ Y0I => GRIDS(JMOD)%Y0 SXI => GRIDS(JMOD)%SX SYI => GRIDS(JMOD)%SY + HPFACI => GRIDS(JMOD)%HPFAC + HQFACI => GRIDS(JMOD)%HQFAC MAP => GRIDS(IMOD)%MAPSTA MAPI => GRIDS(JMOD)%MAPSTA ICLOSE => GRIDS(JMOD)%ICLOSE @@ -1205,7 +1205,6 @@ ! ! 1. Case of identical resolution and coinciding grids --------------- / ! - IF ( ABS(SX/SXI-1.) .LT. 1.E-3 .AND. & ABS(SY/SYI-1.) .LT. 1.E-3 .AND. & ABS(MOD((ABS(X0-X0I))/SX+0.5,1.)-0.5) .LT. 1.E-2 .AND. & @@ -1261,9 +1260,18 @@ ! ! 2. General case --------------------------------------------------- / ! -! 2.a Interpolation / averaging data for X axis +! 2.a Curvilinear grids +! + IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & + GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN + + ELSE +! +! 2.b Rectilinear grids +! +! 2.b.1 Interpolation / averaging data for X axis ! - IF ( SX/SXI .LT. 1.0001 ) THEN + IF ( SX/SXI .LT. 1.0001 ) THEN MXA = 2 ELSE MXA = 2 + INT(SX/SXI) @@ -1273,47 +1281,47 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MXA+1,'I5,',MXA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NX, MXA ! - ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) - NXA = 0 - RXA = 0. + ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) + NXA = 0 + RXA = 0. ! - IF ( MXA .EQ. 2 ) THEN + IF ( MXA .EQ. 2 ) THEN ! DO IX=1, NX IF ( FLAGLL ) THEN - XR = 1. + MOD & + XR = 1. + MOD & ( 1080.+X0+REAL(IX-1)*SX-X0I , 360. ) / SXI - ELSE - XR = 1. + ( X0+REAL(IX-1)*SX - X0I ) / SXI - END IF + ELSE + XR = 1. + ( X0+REAL(IX-1)*SX - X0I ) / SXI + END IF IF ( XR.GT.0. ) THEN - J1 = INT(XR) - J2 = J1 + 1 - R2 = MAX ( 0. , XR-REAL(J1) ) - R1 = 1. - R2 - IF ( FLAGLL .AND. ICLOSE.NE.ICLOSE_NONE ) THEN - J1 = 1 + MOD(J1-1,NXI) - J2 = 1 + MOD(J2-1,NXI) - END IF - IF ( J1.GE.1 .AND. J1.LE.NXI .AND. R1.GT.0.05 ) THEN - NXA(IX,0) = NXA(IX,0) + 1 - NXA(IX,NXA(IX,0)) = J1 - RXA(IX,NXA(IX,0)) = R1 - END IF - IF ( J2.GE.1 .AND. J2.LE.NXI .AND. R2.GT.0.05 ) THEN - NXA(IX,0) = NXA(IX,0) + 1 - NXA(IX,NXA(IX,0)) = J2 - RXA(IX,NXA(IX,0)) = R2 - END IF - IF ( NXA(IX,0) .GT. 0 ) THEN - RT = SUM ( RXA(IX,:) ) - IF ( RT .LT. 0.7 ) THEN - NXA(IX,:) = 0 - RXA(IX,:) = 0. - END IF - END IF + J1 = INT(XR) + J2 = J1 + 1 + R2 = MAX ( 0. , XR-REAL(J1) ) + R1 = 1. - R2 + IF ( FLAGLL .AND. ICLOSE.NE.ICLOSE_NONE ) THEN + J1 = 1 + MOD(J1-1,NXI) + J2 = 1 + MOD(J2-1,NXI) END IF - END DO + IF ( J1.GE.1 .AND. J1.LE.NXI .AND. R1.GT.0.05 ) THEN + NXA(IX,0) = NXA(IX,0) + 1 + NXA(IX,NXA(IX,0)) = J1 + RXA(IX,NXA(IX,0)) = R1 + END IF + IF ( J2.GE.1 .AND. J2.LE.NXI .AND. R2.GT.0.05 ) THEN + NXA(IX,0) = NXA(IX,0) + 1 + NXA(IX,NXA(IX,0)) = J2 + RXA(IX,NXA(IX,0)) = R2 + END IF + IF ( NXA(IX,0) .GT. 0 ) THEN + RT = SUM ( RXA(IX,:) ) + IF ( RT .LT. 0.7 ) THEN + NXA(IX,:) = 0 + RXA(IX,:) = 0. + END IF + END IF + END IF + END DO ! ELSE ! @@ -1322,45 +1330,45 @@ XFL = X0 + REAL(IX-1)*SX - 0.5*SX XFR = X0 + REAL(IX-1)*SX + 0.5*SX IF ( FLAGLL ) THEN - IXC = 1 + NINT ( MOD ( & - 1080.+X0+REAL(IX-1)*SX-X0I , 360. ) / SXI ) - IXS0 = IXC - 1 - MXA/2 - IXSN = IXC + 1 + MXA/2 - ELSE - IXC = NINT ( 1. + ( X0+REAL(IX-1)*SX - X0I ) / SXI ) - IXS0 = MAX ( 1 , IXC - 1 - MXA/2 ) - IXSN = MIN ( NXI , IXC + 1 + MXA/2 ) - END IF + IXC = 1 + NINT ( MOD ( & + 1080.+X0+REAL(IX-1)*SX-X0I , 360. ) / SXI ) + IXS0 = IXC - 1 - MXA/2 + IXSN = IXC + 1 + MXA/2 + ELSE + IXC = NINT ( 1. + ( X0+REAL(IX-1)*SX - X0I ) / SXI ) + IXS0 = MAX ( 1 , IXC - 1 - MXA/2 ) + IXSN = MIN ( NXI , IXC + 1 + MXA/2 ) + END IF DO J=IXS0, IXSN - JJ=J + JJ=J IF ( FLAGLL ) THEN - IF ( ICLOSE.NE.ICLOSE_NONE ) JJ = 1 + MOD(J-1,NXI) - IF ( JJ.LT.1 .OR. JJ.GT. NXI ) CYCLE - IXC = NINT((0.5*(XFL+XFR)-X0I-REAL(JJ-1)*SXI)/360.) - IF ( IXC .NE. 0 ) THEN - XFL = XFL - REAL(IXC) * 360. - XFR = XFR - REAL(IXC) * 360. - END IF - ELSE - JJ = J + IF ( ICLOSE.NE.ICLOSE_NONE ) JJ = 1 + MOD(J-1,NXI) + IF ( JJ.LT.1 .OR. JJ.GT. NXI ) CYCLE + IXC = NINT((0.5*(XFL+XFR)-X0I-REAL(JJ-1)*SXI)/360.) + IF ( IXC .NE. 0 ) THEN + XFL = XFL - REAL(IXC) * 360. + XFR = XFR - REAL(IXC) * 360. END IF + ELSE + JJ = J + END IF XSL = MAX ( XFL , X0I + REAL(JJ-1)*SXI - 0.5*SXI ) XSR = MIN ( XFR , X0I + REAL(JJ-1)*SXI + 0.5*SXI ) R1 = MAX ( 0. , XSR - XSL ) / SX IF ( R1 .GT. 0 ) THEN - NXA(IX,0) = NXA(IX,0) + 1 - NXA(IX,NXA(IX,0)) = JJ - RXA(IX,NXA(IX,0)) = R1 - END IF - END DO - IF ( NXA(IX,0) .GT. 0 ) THEN - RT = SUM ( RXA(IX,:) ) - IF ( RT .LT. 0.7 ) THEN - NXA(IX,:) = 0 - RXA(IX,:) = 0. - END IF + NXA(IX,0) = NXA(IX,0) + 1 + NXA(IX,NXA(IX,0)) = JJ + RXA(IX,NXA(IX,0)) = R1 END IF END DO + IF ( NXA(IX,0) .GT. 0 ) THEN + RT = SUM ( RXA(IX,:) ) + IF ( RT .LT. 0.7 ) THEN + NXA(IX,:) = 0 + RXA(IX,:) = 0. + END IF + END IF + END DO ! END IF ! @@ -1369,9 +1377,9 @@ !/T1 IX, NXA(IX,1:MXA), RXA(IX,1:MXA), SUM(RXA(IX,1:MXA)) !/T1 END DO ! -! 2.b Interpolation / averaging data for Y axis +! 2.b.2 Interpolation / averaging data for Y axis ! - IF ( SY/SYI .LT. 1.0001 ) THEN + IF ( SY/SYI .LT. 1.0001 ) THEN MYA = 2 ELSE MYA = 2 + INT(SY/SYI) @@ -1382,38 +1390,38 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MYA+1,'I5,',MYA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NY, MYA ! - ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) - NYA = 0 - RYA = 0. + ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) + NYA = 0 + RYA = 0. ! - IF ( MYA .EQ. 2 ) THEN + IF ( MYA .EQ. 2 ) THEN ! DO IY=1, NY YR = 1. + ( Y0+REAL(IY-1)*SY - Y0I ) / SYI IF ( YR.GT.0. ) THEN - J1 = INT(YR) - J2 = J1 + 1 - R2 = MAX ( 0. , YR-REAL(J1) ) - R1 = 1. - R2 - IF ( J1.GE.1 .AND. J1.LE.NYI .AND. R1.GT.0.05 ) THEN - NYA(IY,0) = NYA(IY,0) + 1 - NYA(IY,NYA(IY,0)) = J1 - RYA(IY,NYA(IY,0)) = R1 - END IF - IF ( J2.GE.1 .AND. J2.LE.NYI .AND. R2.GT.0.05 ) THEN - NYA(IY,0) = NYA(IY,0) + 1 - NYA(IY,NYA(IY,0)) = J2 - RYA(IY,NYA(IY,0)) = R2 - END IF - IF ( NYA(IY,0) .GT. 0 ) THEN - RT = SUM ( RYA(IY,:) ) - IF ( RT .LT. 0.7 ) THEN - NYA(IY,:) = 0 - RYA(IY,:) = 0. - END IF - END IF + J1 = INT(YR) + J2 = J1 + 1 + R2 = MAX ( 0. , YR-REAL(J1) ) + R1 = 1. - R2 + IF ( J1.GE.1 .AND. J1.LE.NYI .AND. R1.GT.0.05 ) THEN + NYA(IY,0) = NYA(IY,0) + 1 + NYA(IY,NYA(IY,0)) = J1 + RYA(IY,NYA(IY,0)) = R1 END IF - END DO + IF ( J2.GE.1 .AND. J2.LE.NYI .AND. R2.GT.0.05 ) THEN + NYA(IY,0) = NYA(IY,0) + 1 + NYA(IY,NYA(IY,0)) = J2 + RYA(IY,NYA(IY,0)) = R2 + END IF + IF ( NYA(IY,0) .GT. 0 ) THEN + RT = SUM ( RYA(IY,:) ) + IF ( RT .LT. 0.7 ) THEN + NYA(IY,:) = 0 + RYA(IY,:) = 0. + END IF + END IF + END IF + END DO ! ELSE ! @@ -1428,21 +1436,23 @@ YSR = MIN ( YFR , Y0I + REAL(J-1)*SYI + 0.5*SYI ) R1 = MAX ( 0. , YSR - YSL ) / SY IF ( R1 .GT. 0 ) THEN - NYA(IY,0) = NYA(IY,0) + 1 - NYA(IY,NYA(IY,0)) = J - RYA(IY,NYA(IY,0)) = R1 - END IF - END DO - IF ( NYA(IY,0) .GT. 0 ) THEN - RT = SUM ( RYA(IY,:) ) - IF ( RT .LT. 0.7 ) THEN - NYA(IY,:) = 0 - RYA(IY,:) = 0. - END IF + NYA(IY,0) = NYA(IY,0) + 1 + NYA(IY,NYA(IY,0)) = J + RYA(IY,NYA(IY,0)) = R1 END IF END DO + IF ( NYA(IY,0) .GT. 0 ) THEN + RT = SUM ( RYA(IY,:) ) + IF ( RT .LT. 0.7 ) THEN + NYA(IY,:) = 0 + RYA(IY,:) = 0. + END IF + END IF + END DO ! END IF +! + END IF ! !/T1 DO, IY=1, NY !/T1 IF ( NYA(IY,0) .GT. 0 ) WRITE (MDST,FORMAT1) & @@ -1672,7 +1682,8 @@ !/ USE W3GDATMD, ONLY: NX, NY, X0, Y0, SX, SY, GRIDS, FLAGLL, & GTYPE, RLGTYPE, CLGTYPE, UNGTYPE, & - ICLOSE_NONE, ICLOSE_SMPL, ICLOSE_TRPL + ICLOSE_NONE, ICLOSE_SMPL, ICLOSE_TRPL, & + HPFAC, HQFAC USE WMMDATMD, ONLY: IMPROC, NMPERR, NMPSCR, MDST, MDSE, MDSO, & MDSS !/ @@ -1703,7 +1714,7 @@ MAP3(NX,NY), FLAGUP ! INTEGER, POINTER :: NXI, NYI, MAP(:,:), MAPI(:,:) - REAL, POINTER :: X0I, Y0I, SXI, SYI + REAL, POINTER :: X0I, Y0I, SXI, SYI, HPFACI, HQFACI INTEGER, POINTER :: ICLOSE !/T1 CHARACTER(LEN=17) :: FORMAT1 !/ @@ -1712,13 +1723,6 @@ ! 0.a Subroutine tracing and test output ! !/S CALL STRACE (IENT, 'WMUPDS') -! - IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & - GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN - WRITE (MDSE,'(/2A)') ' *** ERROR WMUPDS: ', & - 'CURVILINEAR GRID SUPPORT NOT YET IMPLEMENTED ***' - CALL EXTCDE ( 999 ) - END IF ! NXI => GRIDS(JMOD)%NX NYI => GRIDS(JMOD)%NY @@ -1726,6 +1730,8 @@ Y0I => GRIDS(JMOD)%Y0 SXI => GRIDS(JMOD)%SX SYI => GRIDS(JMOD)%SY + HPFACI => GRIDS(JMOD)%HPFACI + HQFACI => GRIDS(JMOD)%HQFACI MAP => GRIDS(IMOD)%MAPSTA MAPI => GRIDS(JMOD)%MAPSTA ICLOSE => GRIDS(JMOD)%ICLOSE @@ -1735,7 +1741,6 @@ ' NOT YET ADAPTED FOR TRIPOLE GRIDS. STOPPING NOW.' CALL EXTCDE ( 1 ) END IF - ! !/T WRITE (MDST,9000) IMOD, NX, NY, X0, Y0, SX, SY, & !/T JMOD, NXI, NYI, X0I, Y0I, SXI, SYI, UNDEF @@ -1753,57 +1758,68 @@ ! ! 1.a Offsets ! - IXO = NINT((X0-X0I)/SX) + IXO = NINT((X0-X0I)/SX) ! - IF ( FLAGLL ) THEN - IXF0 = 1 - IXFN = NX - IXS0 = -999 - IXSN = -999 - ELSE - IXF0 = MAX ( 1 , 1-IXO ) - IXFN = MIN ( NX , NXI-IXO ) - IXS0 = MAX ( 1 , 1+IXO ) - IXSN = IXS0 + IXFN - IXF0 - END IF + IF ( FLAGLL ) THEN + IXF0 = 1 + IXFN = NX + IXS0 = -999 + IXSN = -999 + ELSE + IXF0 = MAX ( 1 , 1-IXO ) + IXFN = MIN ( NX , NXI-IXO ) + IXS0 = MAX ( 1 , 1+IXO ) + IXSN = IXS0 + IXFN - IXF0 + END IF ! - IYO = NINT((Y0-Y0I)/SY) + IYO = NINT((Y0-Y0I)/SY) ! - IYF0 = MAX ( 1 , 1-IYO ) - IYFN = MIN ( NY , NYI-IYO ) - IYS0 = MAX ( 1 , 1+IYO ) - IYSN = IYS0 + IYFN - IYF0 + IYF0 = MAX ( 1 , 1-IYO ) + IYFN = MIN ( NY , NYI-IYO ) + IYS0 = MAX ( 1 , 1+IYO ) + IYSN = IYS0 + IYFN - IYF0 ! !/T WRITE (MDST,9010) IXO, IYO, IXF0, IXFN, IYF0, IYFN, & !/T IXS0, IXSN, IYS0, IYSN ! ! 1.b Fill arrays for sea points only ! - IF ( FLAGLL ) THEN - DO IX=IXF0, IXFN - IXS = 1 + NINT ( MOD ( & + IF ( FLAGLL ) THEN + DO IX=IXF0, IXFN + IXS = 1 + NINT ( MOD ( & 1080.+X0+(REAL(IX)-0.5)*SX-X0I , 360. ) / SX - 0.5 ) - IF ( IXS .GT. NXI ) CYCLE - FD(IX,IYF0:IYFN) = FDI(IXS,IYS0:IYSN) - END DO - ELSE - DO IX=IXF0, IXFN - IXS = IX + IXO - FD(IX,IYF0:IYFN) = FDI(IXS,IYS0:IYSN) - END DO - END IF + IF ( IXS .GT. NXI ) CYCLE + FD(IX,IYF0:IYFN) = FDI(IXS,IYS0:IYSN) + END DO + ELSE + DO IX=IXF0, IXFN + IXS = IX + IXO + FD(IX,IYF0:IYFN) = FDI(IXS,IYS0:IYSN) + END DO + END IF ! ! 1.c Return to calling routine ! - RETURN + RETURN ! - END IF + END IF ! ! 2. General case --------------------------------------------------- / ! -! 2.a Interpolation / averaging data for X axis ! - IF ( SX/SXI .LT. 1.0001 ) THEN +! 2.a Curvilinear grids +! + IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & + GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN + + + ELSE +! +! 2.b Rectilinear grids +! +! 2.b.1 Interpolation / averaging data for X axis +! + IF ( SX/SXI .LT. 1.0001 ) THEN MXA = 2 ELSE MXA = 2 + INT(SX/SXI) @@ -1814,47 +1830,47 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MXA+1,'I5,',MXA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NX, MXA ! - ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) - NXA = 0 - RXA = 0. + ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) + NXA = 0 + RXA = 0. ! - IF ( MXA .EQ. 2 ) THEN + IF ( MXA .EQ. 2 ) THEN ! DO IX=1, NX IF ( FLAGLL ) THEN - XR = 1. + MOD & + XR = 1. + MOD & ( 1080.+X0+REAL(IX-1)*SX-X0I , 360. ) / SXI - ELSE + ELSE XR = 1. + ( X0+REAL(IX-1)*SX - X0I ) / SXI - END IF + END IF IF ( XR.GT.0. ) THEN - J1 = INT(XR) - J2 = J1 + 1 - R2 = MAX ( 0. , XR-REAL(J1) ) - R1 = 1. - R2 - IF ( FLAGLL .AND. ICLOSE.NE.ICLOSE_NONE ) THEN - J1 = 1 + MOD(J1-1,NXI) - J2 = 1 + MOD(J2-1,NXI) - END IF - IF ( J1.GE.1 .AND. J1.LE.NXI .AND. R1.GT.0.05 ) THEN - NXA(IX,0) = NXA(IX,0) + 1 - NXA(IX,NXA(IX,0)) = J1 - RXA(IX,NXA(IX,0)) = R1 - END IF - IF ( J2.GE.1 .AND. J2.LE.NXI .AND. R2.GT.0.05 ) THEN - NXA(IX,0) = NXA(IX,0) + 1 - NXA(IX,NXA(IX,0)) = J2 - RXA(IX,NXA(IX,0)) = R2 - END IF - IF ( NXA(IX,0) .GT. 0 ) THEN - RT = SUM ( RXA(IX,:) ) - IF ( RT .LT. 0.7 ) THEN - NXA(IX,:) = 0 - RXA(IX,:) = 0. - END IF - END IF + J1 = INT(XR) + J2 = J1 + 1 + R2 = MAX ( 0. , XR-REAL(J1) ) + R1 = 1. - R2 + IF ( FLAGLL .AND. ICLOSE.NE.ICLOSE_NONE ) THEN + J1 = 1 + MOD(J1-1,NXI) + J2 = 1 + MOD(J2-1,NXI) END IF - END DO + IF ( J1.GE.1 .AND. J1.LE.NXI .AND. R1.GT.0.05 ) THEN + NXA(IX,0) = NXA(IX,0) + 1 + NXA(IX,NXA(IX,0)) = J1 + RXA(IX,NXA(IX,0)) = R1 + END IF + IF ( J2.GE.1 .AND. J2.LE.NXI .AND. R2.GT.0.05 ) THEN + NXA(IX,0) = NXA(IX,0) + 1 + NXA(IX,NXA(IX,0)) = J2 + RXA(IX,NXA(IX,0)) = R2 + END IF + IF ( NXA(IX,0) .GT. 0 ) THEN + RT = SUM ( RXA(IX,:) ) + IF ( RT .LT. 0.7 ) THEN + NXA(IX,:) = 0 + RXA(IX,:) = 0. + END IF + END IF + END IF + END DO ! ELSE ! @@ -1863,44 +1879,44 @@ XFL = X0 + REAL(IX-1)*SX - 0.5*SX XFR = X0 + REAL(IX-1)*SX + 0.5*SX IF ( FLAGLL ) THEN - IXC = 1 + NINT ( MOD ( & + IXC = 1 + NINT ( MOD ( & 1080.+X0+REAL(IX-1)*SX-X0I , 360. ) / SXI ) - IXS0 = IXC - 1 - MXA/2 - IXSN = IXC + 1 + MXA/2 - ELSE - IXC = NINT ( 1. + ( X0+REAL(IX-1)*SX - X0I ) / SXI ) - IXS0 = MAX ( 1 , IXC - 1 - MXA/2 ) - IXSN = MIN ( NXI , IXC + 1 + MXA/2 ) - END IF + IXS0 = IXC - 1 - MXA/2 + IXSN = IXC + 1 + MXA/2 + ELSE + IXC = NINT ( 1. + ( X0+REAL(IX-1)*SX - X0I ) / SXI ) + IXS0 = MAX ( 1 , IXC - 1 - MXA/2 ) + IXSN = MIN ( NXI , IXC + 1 + MXA/2 ) + END IF DO J=IXS0, IXSN IF ( FLAGLL ) THEN - IF ( ICLOSE.NE.ICLOSE_NONE ) JJ = 1 + MOD(J-1,NXI) - IF ( JJ.LT.1 .OR. JJ.GT. NXI ) CYCLE - IXC = NINT((0.5*(XFL+XFR)-X0I-REAL(JJ-1)*SXI)/360.) - IF ( IXC .NE. 0 ) THEN - XFL = XFL - REAL(IXC) * 360. - XFR = XFR - REAL(IXC) * 360. - END IF - ELSE - JJ = J + IF ( ICLOSE.NE.ICLOSE_NONE ) JJ = 1 + MOD(J-1,NXI) + IF ( JJ.LT.1 .OR. JJ.GT. NXI ) CYCLE + IXC = NINT((0.5*(XFL+XFR)-X0I-REAL(JJ-1)*SXI)/360.) + IF ( IXC .NE. 0 ) THEN + XFL = XFL - REAL(IXC) * 360. + XFR = XFR - REAL(IXC) * 360. END IF + ELSE + JJ = J + END IF XSL = MAX ( XFL , X0I + REAL(JJ-1)*SXI - 0.5*SXI ) XSR = MIN ( XFR , X0I + REAL(JJ-1)*SXI + 0.5*SXI ) R1 = MAX ( 0. , XSR - XSL ) / SX IF ( R1 .GT. 0 ) THEN - NXA(IX,0) = NXA(IX,0) + 1 - NXA(IX,NXA(IX,0)) = JJ - RXA(IX,NXA(IX,0)) = R1 - END IF - END DO - IF ( NXA(IX,0) .GT. 0 ) THEN - RT = SUM ( RXA(IX,:) ) - IF ( RT .LT. 0.7 ) THEN - NXA(IX,:) = 0 - RXA(IX,:) = 0. - END IF + NXA(IX,0) = NXA(IX,0) + 1 + NXA(IX,NXA(IX,0)) = JJ + RXA(IX,NXA(IX,0)) = R1 END IF END DO + IF ( NXA(IX,0) .GT. 0 ) THEN + RT = SUM ( RXA(IX,:) ) + IF ( RT .LT. 0.7 ) THEN + NXA(IX,:) = 0 + RXA(IX,:) = 0. + END IF + END IF + END DO ! END IF ! @@ -1909,9 +1925,9 @@ !/T1 IX, NXA(IX,1:MXA), RXA(IX,1:MXA), SUM(RXA(IX,1:MXA)) !/T1 END DO ! -! 2.b Interpolation / averaging data for Y axis +! 2.b.2 Interpolation / averaging data for Y axis ! - IF ( SY/SYI .LT. 1.0001 ) THEN + IF ( SY/SYI .LT. 1.0001 ) THEN MYA = 2 ELSE MYA = 2 + INT(SY/SYI) @@ -1921,38 +1937,38 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MYA+1,'I5,',MYA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NY, MYA ! - ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) - NYA = 0 - RYA = 0. + ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) + NYA = 0 + RYA = 0. ! - IF ( MYA .EQ. 2 ) THEN + IF ( MYA .EQ. 2 ) THEN ! DO IY=1, NY YR = 1. + ( Y0+REAL(IY-1)*SY - Y0I ) / SYI IF ( YR.GT.0. ) THEN - J1 = INT(YR) - J2 = J1 + 1 - R2 = MAX ( 0. , YR-REAL(J1) ) - R1 = 1. - R2 - IF ( J1.GE.1 .AND. J1.LE.NYI .AND. R1.GT.0.05 ) THEN - NYA(IY,0) = NYA(IY,0) + 1 - NYA(IY,NYA(IY,0)) = J1 - RYA(IY,NYA(IY,0)) = R1 - END IF - IF ( J2.GE.1 .AND. J2.LE.NYI .AND. R2.GT.0.05 ) THEN - NYA(IY,0) = NYA(IY,0) + 1 - NYA(IY,NYA(IY,0)) = J2 - RYA(IY,NYA(IY,0)) = R2 - END IF - IF ( NYA(IY,0) .GT. 0 ) THEN - RT = SUM ( RYA(IY,:) ) - IF ( RT .LT. 0.7 ) THEN - NYA(IY,:) = 0 - RYA(IY,:) = 0. - END IF - END IF + J1 = INT(YR) + J2 = J1 + 1 + R2 = MAX ( 0. , YR-REAL(J1) ) + R1 = 1. - R2 + IF ( J1.GE.1 .AND. J1.LE.NYI .AND. R1.GT.0.05 ) THEN + NYA(IY,0) = NYA(IY,0) + 1 + NYA(IY,NYA(IY,0)) = J1 + RYA(IY,NYA(IY,0)) = R1 END IF - END DO + IF ( J2.GE.1 .AND. J2.LE.NYI .AND. R2.GT.0.05 ) THEN + NYA(IY,0) = NYA(IY,0) + 1 + NYA(IY,NYA(IY,0)) = J2 + RYA(IY,NYA(IY,0)) = R2 + END IF + IF ( NYA(IY,0) .GT. 0 ) THEN + RT = SUM ( RYA(IY,:) ) + IF ( RT .LT. 0.7 ) THEN + NYA(IY,:) = 0 + RYA(IY,:) = 0. + END IF + END IF + END IF + END DO ! ELSE ! @@ -1966,22 +1982,24 @@ YSL = MAX ( YFL , Y0I + REAL(J-1)*SYI - 0.5*SYI ) YSR = MIN ( YFR , Y0I + REAL(J-1)*SYI + 0.5*SYI ) R1 = MAX ( 0. , YSR - YSL ) / SY - IF ( R1 .GT. 0 ) THEN - NYA(IY,0) = NYA(IY,0) + 1 - NYA(IY,NYA(IY,0)) = J - RYA(IY,NYA(IY,0)) = R1 - END IF - END DO + IF ( R1 .GT. 0 ) THEN + NYA(IY,0) = NYA(IY,0) + 1 + NYA(IY,NYA(IY,0)) = J + RYA(IY,NYA(IY,0)) = R1 + END IF + END DO IF ( NYA(IY,0) .GT. 0 ) THEN - RT = SUM ( RYA(IY,:) ) - IF ( RT .LT. 0.7 ) THEN - NYA(IY,:) = 0 - RYA(IY,:) = 0. - END IF + RT = SUM ( RYA(IY,:) ) + IF ( RT .LT. 0.7 ) THEN + NYA(IY,:) = 0 + RYA(IY,:) = 0. END IF - END DO + END IF + END DO ! END IF +! + END IF ! !/T1 DO, IY=1, NY !/T1 IF ( NYA(IY,0) .GT. 0 ) WRITE (MDST,FORMAT1) & From 1d1ba8b81d1a595f4ee89fc733a226085cee6570 Mon Sep 17 00:00:00 2001 From: Roberto Padilla Date: Tue, 9 Jul 2019 12:58:15 -0400 Subject: [PATCH 04/13] Adding interpolation code and functions in wmupdtmd.ftn --- model/ftn/wmupdtmd.ftn | 345 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 339 insertions(+), 6 deletions(-) diff --git a/model/ftn/wmupdtmd.ftn b/model/ftn/wmupdtmd.ftn index 420ebd99e..681bda83e 100644 --- a/model/ftn/wmupdtmd.ftn +++ b/model/ftn/wmupdtmd.ftn @@ -1125,7 +1125,7 @@ USE W3GDATMD, ONLY: NX, NY, X0, Y0, SX, SY, GRIDS, FLAGLL, & GTYPE, RLGTYPE, CLGTYPE, UNGTYPE, & ICLOSE_NONE, ICLOSE_SMPL, ICLOSE_TRPL, & - HPFAC, HQFAC + HPFAC, HQFAC, XGRD, YGRD USE WMMDATMD, ONLY: IMPROC, NMPERR, NMPSCR, MDST, MDSE, MDSO, & MDSS !/ @@ -1147,18 +1147,31 @@ IYFN, IXS0, IXSN, IYS0, IYSN, IXS, & MXA, MYA, J, J1, J2, IXC, IYC, JJ, & JX, JY + INTEGER :: NPOIX, NPOIY, I, IFIELDS !RP + !/S INTEGER, SAVE :: IENT = 0 INTEGER, ALLOCATABLE :: NXA(:,:), NYA(:,:) REAL :: XR, YR, R1, R2, RT, XFL, XFR, XSL, & XSR, YFL, YFR, YSL, YSR REAL :: VXL, VYL, VA0, VA, VA2, FACTOR, & WTOT, WL + + REAL :: LONC, LATC, SXC, SYC, SXYC, & + XDI, DTOLER, VALUEINTER !RP + REAL, ALLOCATABLE :: RXA(:,:), RYA(:,:) + + REAL, ALLOCATABLE :: VARIN(:,:) !RP + LOGICAL :: MAP1(NX,NY), MAP2(NX,NY), & MAP3(NX,NY), FLAGUP ! INTEGER, POINTER :: NXI, NYI, MAP(:,:), MAPI(:,:) - REAL, POINTER :: X0I, Y0I, SXI, SYI, HPFACI, HQFACI + REAL, POINTER :: X0I, Y0I, SXI, SYI !RP , HPFACI, HQFACI + + REAL, POINTER :: XGRDI(:,:), YGRDI(:,:), XGRDC(:,:), & + YGRDC(:,:), HPFACI(:,:), HQFACI(:,:) !RP + INTEGER, POINTER :: ICLOSE !/T1 CHARACTER(LEN=17) :: FORMAT1 !/ @@ -1264,7 +1277,85 @@ ! IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN +!====================================================================== +!====================================================================== + + ALLOCATE (VARIN(NXI,NYI)) + +! GETTING THE INFO FOR THE INPUT FIELD +! NXI => GRIDS(JMOD)%NX +! NYI => GRIDS(JMOD)%NY +! X0I => GRIDS(JMOD)%X0 +! Y0I => GRIDS(JMOD)%Y0 +! SXI => GRIDS(JMOD)%SX +! SYI => GRIDS(JMOD)%SY + XGRDI => GRIDS(JMOD)%XGRD !LONS FOR INPUT FIELD + YGRDI => GRIDS(JMOD)%YGRD !LATS FOR INPUT FIELD +! HPFACI => GRIDS(JMOD)%HPFAC !DELTAS IN LON FOR INPUT +! HQFACI => GRIDS(JMOD)%HQFAC !DELTAS IN LAT FOR INPUT + +! LONI=XGRDI +! LATI=YGRDI + +! GETTING THE INFO FOR THE CURVILINEAR GRID + XGRDC => GRIDS(IMOD)%XGRD !LONS FOR CURVI GRID + YGRDC => GRIDS(IMOD)%YGRD !LATS FOR CURVI GRID + + HPFAC => GRIDS(IMOD)%HPFAC !DELTAS IN LON FOR CURVI GRID + HQFAC => GRIDS(IMOD)%HQFAC !DELTAS IN LAT FOR CURVI GRID + +! 2.a.1 running over the vector components + DO IFIELDS=1,2 + VARIN = UNDEF + IF(IFIELDS==1) THEN + VARIN=VXI + ELSE + VARIN=VYI + END IF +! 2.a.2 running over the curvilinear grid + DO J=1,NY + DO I=1,NX + + LONC=XGRDC(I,J) !LON FOR EVERY CURVL GRID POINT + LATC=YGRDC(I,J) !LAT FOR EVERY CURVL GRID POINT + SXC =HPFAC(I,J) !DELTA IN LON FOR CURVI GRID + SYC =HQFAC(I,J) !DELTA IN LAT FOR CURVI GRID + + !CHOOSING THE LARGEST DELTA + SXYC=MAX(SXC,SYC) + XDI=SXYC/SXI + IF(XDI .LT. 2.00) THEN + MXA=2 + ELSE + MXA=2+INT(XDI) + ENDIF + + + IF (MXA .EQ. 2) THEN + VALUEINTER=INTERPOLATE(NXI,XGRDI,NYI,YGRDI, & + VARIN,LONC,LATC,DTOLER) + ELSE + ! COMPUTING THE NUMBER OF POINTS IN THE REGULAR GRID THAT + ! SURROUND THE POINT IN THE CURVILINEAR GRID, COULD BE + ! DIFFERENT FOR LAT AND LONG, IN THE AVERAGING PROCESS. + NPOIX=INT(SXC/SXI) + NPOIY=INT(SYC/SYI) + VALUEINTER=AVERAGING(NXI,XGRDI,NYI,YGRDI, & + VARIN,LONC,LATC,NPOIX,NPOIY,MXA) + ENDIF + + IF(IFIELDS==1) THEN + VX(I,J)=VALUEINTER + ELSE + VY(I,J)=VALUEINTER + END IF + END DO !END I + END DO !END J + END DO !END IFIELDS + DEALLOCATE (VARIN) +!======================================================================= +!======================================================================= ELSE ! ! 2.b Rectilinear grids @@ -1683,7 +1774,7 @@ USE W3GDATMD, ONLY: NX, NY, X0, Y0, SX, SY, GRIDS, FLAGLL, & GTYPE, RLGTYPE, CLGTYPE, UNGTYPE, & ICLOSE_NONE, ICLOSE_SMPL, ICLOSE_TRPL, & - HPFAC, HQFAC + HPFAC, HQFAC, XGRD, YGRD USE WMMDATMD, ONLY: IMPROC, NMPERR, NMPSCR, MDST, MDSE, MDSO, & MDSS !/ @@ -1704,17 +1795,30 @@ IYFN, IXS0, IXSN, IYS0, IYSN, IXS, & MXA, MYA, J, J1, J2, IXC, IYC, JJ, & JX, JY + + INTEGER :: NPOIX, NPOIY, I !RP + !/S INTEGER, SAVE :: IENT = 0 INTEGER, ALLOCATABLE :: NXA(:,:), NYA(:,:) REAL :: XR, YR, R1, R2, RT, XFL, XFR, XSL, & XSR, YFL, YFR, YSL, YSR REAL :: FDL, WTOT, WL + + REAL :: LONC, LATC, SXC, SYC, SXYC, & + XDI, DTOLER, VALUEINTER !RP + REAL, ALLOCATABLE :: RXA(:,:), RYA(:,:) + + LOGICAL :: MAP1(NX,NY), MAP2(NX,NY), & MAP3(NX,NY), FLAGUP ! INTEGER, POINTER :: NXI, NYI, MAP(:,:), MAPI(:,:) - REAL, POINTER :: X0I, Y0I, SXI, SYI, HPFACI, HQFACI + + REAL, POINTER :: XGRDI(:,:), YGRDI(:,:), XGRDC(:,:), & + YGRDC(:,:), HPFACI(:,:), HQFACI(:,:) !RP + + REAL, POINTER :: X0I, Y0I, SXI, SYI !RPXXX , HPFACI, HQFACI INTEGER, POINTER :: ICLOSE !/T1 CHARACTER(LEN=17) :: FORMAT1 !/ @@ -1730,8 +1834,8 @@ Y0I => GRIDS(JMOD)%Y0 SXI => GRIDS(JMOD)%SX SYI => GRIDS(JMOD)%SY - HPFACI => GRIDS(JMOD)%HPFACI - HQFACI => GRIDS(JMOD)%HQFACI + HPFACI => GRIDS(JMOD)%HPFAC + HQFACI => GRIDS(JMOD)%HQFAC MAP => GRIDS(IMOD)%MAPSTA MAPI => GRIDS(JMOD)%MAPSTA ICLOSE => GRIDS(JMOD)%ICLOSE @@ -1811,7 +1915,71 @@ ! IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN +!====================================================================== +!====================================================================== + +! 2.a.1 Getting the info for reg and curvi grids +! NXI => GRIDS(JMOD)%NX +! NYI => GRIDS(JMOD)%NY +! X0I => GRIDS(JMOD)%X0 +! Y0I => GRIDS(JMOD)%Y0 +! SXI => GRIDS(JMOD)%SX +! SYI => GRIDS(JMOD)%SY + XGRDI => GRIDS(JMOD)%XGRD !LONS FOR INPUT FIELD + YGRDI => GRIDS(JMOD)%YGRD !LATS FOR INPUT FIELD +! HPFACI => GRIDS(JMOD)%HPFAC !DELTAS IN LON FOR INPUT +! HQFACI => GRIDS(JMOD)%HQFAC !DELTAS IN LAT FOR INPUT +! LONI=XGRDI +! LATI=YGRDI + +! GETTING THE INFO FOR THE CURVILINEAR GRID + XGRDC => GRIDS(IMOD)%XGRD !LONS FOR CURVI GRID + YGRDC => GRIDS(IMOD)%YGRD !LATS FOR CURVI GRID + + HPFAC => GRIDS(IMOD)%HPFAC !DELTAS IN LON FOR CURVI GRID + HQFAC => GRIDS(IMOD)%HQFAC !DELTAS IN LAT FOR CURVI GRID + + + + +! 2.a.2 running over the curvilinear grid + DO J=1,NY + DO I=1,NX + LONC=XGRDC(I,J) !LON FOR EVERY CURVL GRID POINT + LATC=YGRDC(I,J) !LAT FOR EVERY CURVL GRID POINT + SXC =HPFAC(I,J) !DELTA IN LON FOR CURVI GRID + SYC =HQFAC(I,J) !DELTA IN LAT FOR CURVI GRID + + !CHOOSING THE LARGEST DELTA + SXYC=MAX(SXC,SYC) + XDI=SXYC/SXI + IF(XDI .LT. 2.00) THEN + MXA=2 + ELSE + MXA=2+INT(XDI) + ENDIF + + + IF (MXA .EQ. 2) THEN + VALUEINTER=INTERPOLATE(NXI,XGRDI,NYI,YGRDI, & + FDI,LONC,LATC,DTOLER) + ELSE + ! COMPUTING THE NUMBER OF POINTS IN THE REGULAR GRID THAT + ! SURROUND THE POINT IN THE CURVILINEAR GRID, COULD BE + ! DIFFERENT FOR LAT AND LONG, IN THE AVERAGING PROCESS. + NPOIX=INT(SXC/SXI) + NPOIY=INT(SYC/SYI) + VALUEINTER=AVERAGING(NXI,XGRDI,NYI,YGRDI, & + FDI,LONC,LATC, NPOIX,NPOIY,MXA) + ENDIF + + FD(I,J)=VALUEINTER + END DO !END I + END DO !END J + +!======================================================================= +!======================================================================= ELSE ! @@ -2125,6 +2293,171 @@ !/ End of WMUPDS ----------------------------------------------------- / !/ END SUBROUTINE WMUPDS +!======================================================================= + +! !!MODULE INTERPREC2ANY + +! CONTAINS + + FUNCTION XYCURVISEARCH(LENGTH, ARRAY, VALUE, DELTA) + ! GIVEN AN ARRAY AND A VALUE TO SEARCH, IT RETURNS THE INDEX OF + ! THE ELEMENT ON THE RECTILINEAR GRID THAT IS CLOSEST TO, BUT + ! LESS THAN, THE GIVEN VALUE. + ! "DELTA" IS THE THERSHOLD USED TO DETERMINE IF TWO VALUES ARE EQUAL + ! IF ( ABS(X1 - X2) <= DELTA) THEN + ! ASSUME X1 = X2 + ! ENDIF + + !IMPLICIT NONE + INTEGER, INTENT(IN) :: LENGTH + REAL, DIMENSION(LENGTH), INTENT(IN) :: ARRAY + REAL, INTENT(IN) :: VALUE + REAL, INTENT(IN), OPTIONAL :: DELTA + + INTEGER :: XYCURVISEARCH + + INTEGER :: LEFT, MIDDLE, RIGHT + REAL :: D + + LEFT = 1 + RIGHT = LENGTH + DO + IF (LEFT > RIGHT) THEN + EXIT + ENDIF + MIDDLE = NINT((LEFT+RIGHT) / 2.0) + IF ( ABS(ARRAY(MIDDLE) - VALUE) <= D) THEN + XYCURVISEARCH = MIDDLE + RETURN + ELSE IF (ARRAY(MIDDLE) > VALUE) THEN + RIGHT = MIDDLE - 1 + ELSE + LEFT = MIDDLE + 1 + END IF + END DO + XYCURVISEARCH = RIGHT + + END FUNCTION XYCURVISEARCH + + + REAL FUNCTION INTERPOLATE(X_LEN,XARRAY,Y_LEN,YARRAY,FUNC, & + X,Y,DELTA) + ! THIS FUNCTION USES BILINEAR INTERPOLATION TO ESTIMATE THE VALUE + ! OF A FUNCTION F AT POINT (X,Y) + ! F IS ASSUMED TO BE ON A REGULAR GRID, WITH THE GRID X VALUES SPECIFIED + ! BY XARRAY WITH DIMENSION X_LEN + ! AND THE GRID Y VALUES SPECIFIED BY YARRAY WITH DIMENSION Y_LEN + + !IMPLICIT NONE + INTEGER, INTENT(IN) :: X_LEN, Y_LEN + REAL, DIMENSION(X_LEN), INTENT(IN) :: XARRAY + REAL, DIMENSION(Y_LEN), INTENT(IN) :: YARRAY + REAL, DIMENSION(X_LEN, Y_LEN), INTENT(IN) :: FUNC + REAL, INTENT(IN) :: X,Y + REAL, INTENT(IN), OPTIONAL :: DELTA + + + REAL :: DENOM, X1, X2, Y1, Y2 + INTEGER :: INX,JNX + + INX = XYCURVISEARCH(X_LEN, XARRAY, X) + JNX = XYCURVISEARCH(Y_LEN, YARRAY, Y) + + X1 = XARRAY(INX) + X2 = XARRAY(INX+1) + + Y1 = YARRAY(JNX) + Y2 = YARRAY(JNX+1) + + DENOM = (X2 - X1)*(Y2 - Y1) + + + INTERPOLATE = (FUNC(INX,JNX)*(X2-X)*(Y2-Y) + & + FUNC(INX+1,JNX)*(X-X1)*(Y2-Y) + & + FUNC(INX,JNX+1)*(X2-X)*(Y-Y1)+ & + FUNC(INX+1, JNX+1)*(X-X1)*(Y-Y1))/DENOM + + END FUNCTION INTERPOLATE + + + REAL FUNCTION AVERAGING(X_LEN,XARRAY,Y_LEN,YARRAY,FUNC, & + X,Y,NPX,NPY,MAM) + ! THIS FUNCTION USES AVERAGING TO ESTIMATE THE VALUE + ! OF A FUNCTION F AT POINT (X,Y) + ! F IS ASSUMED TO BE ON A REGULAR GRID, WITH THE GRID X VALUES SPECIFIED + ! BY XARRAY WITH DIMENSION X_LEN + ! AND THE GRID Y VALUES SPECIFIED BY YARRAY WITH DIMENSION Y_LEN + ! ININI AND INEND, THE NUMBER OF POINT TO BE TAKEN INTO ACCOUNT + ! IN X AND Y + + !IMPLICIT NONE + INTEGER X_LEN, Y_LEN, MAM, INXEND, INYEND, NPX,NPY + REAL, DIMENSION(X_LEN) :: XARRAY + REAL, DIMENSION(Y_LEN) :: YARRAY + REAL, DIMENSION(X_LEN, Y_LEN) :: FUNC + REAL :: X,Y + + REAL :: X1, X2, Y1, Y2, SUM + INTEGER :: INX,INY, INITIALX, INITIALY + INTEGER :: INFINX, INFINY,ICOUNT,I,J + + INX = XYCURVISEARCH(X_LEN, XARRAY, X) + INY = XYCURVISEARCH(Y_LEN, YARRAY, Y) + + X1 = XARRAY(INX) + !X2 = XARRAY(INX+1) + + Y1 = YARRAY(INY) + !Y2 = YARRAY(INY+1) + + INXEND=NPX+1 + INYEND=NPY+1 + ! LETS FIX THE INITIAL INDEX =1 NEGATIVE INDEXES IN LONG + IF (INX-NPX .LT. 1) THEN + INITIALX=1 + ELSE + INITIALX=INX-NPX + END IF + ! LETS FIX THE FINAL INDEX =NX IF LOOKING FOR INDEXES > NX + IF (INX+INXEND .GT. X_LEN) THEN + INFINX=X_LEN + ELSE + INFINX=INX+INXEND + END IF + ! LETS FIX THE INITIAL INDEX =1 FOR NEGATIVE INDEXES FOR LAT + IF (INY-NPY .LT. 1) THEN + INITIALY=1 + ELSE + INITIALY=INY-NPY + END IF + ! LETS FIX THE FINAL INDEX =NX IF LOOKING FOR INDEXES > NX + IF (INY+INYEND .GT. Y_LEN) THEN + INFINY=Y_LEN + ELSE + INFINY=INY+INYEND + END IF + + +! PRINT*,'AVERAGE MXA NPX NPY INITIALX INFINX INITIALY INFINY:', +! 1 MAM, NPX, NPY, INITIALX, INFINX, INITIALY, INFINY + + + SUM=0.0 + ICOUNT=0 + DO J=INITIALY,INFINY + DO I=INITIALX,INFINX + ICOUNT=ICOUNT+1 + SUM=SUM+FUNC(I,J) + END DO + END DO + AVERAGING=SUM/REAL(ICOUNT) + + END FUNCTION AVERAGING + +! END MODULE INTERPREC2ANY + +!======================================================================= + !/ !/ End of module WMUPDTMD -------------------------------------------- / !/ From 314c100fba77942471cbc3cf61776cbfcb8ef3e8 Mon Sep 17 00:00:00 2001 From: wx21rph Date: Fri, 26 Jul 2019 12:19:12 +0000 Subject: [PATCH 05/13] adding interpolation function and subroutine in wmupdtmd.ftn --- model/ftn/wmupdtmd.ftn | 311 ++++++++++++++++++++++++++++------------- 1 file changed, 211 insertions(+), 100 deletions(-) diff --git a/model/ftn/wmupdtmd.ftn b/model/ftn/wmupdtmd.ftn index 681bda83e..69238e18c 100644 --- a/model/ftn/wmupdtmd.ftn +++ b/model/ftn/wmupdtmd.ftn @@ -329,7 +329,13 @@ CALL W3SETG ( IMOD, MDSE, MDST ) CALL W3SETI ( IMOD, MDSE, MDST ) ! +! XXX RPH +! write(900,*) "CALLING WMUPD2" + CALL WMUPD2 ( IMOD, J, JJ, IERR ) +! XXX RPH +! write(900,*) " WMUPD2 FINISH" + ! ! 4. Forcing input from CPL ----------------------------------------- / ! @@ -905,6 +911,7 @@ ! 2.a-3 Ice parameter 5 ! CASE (-3) + CALL WMUPDS ( IMOD, INPUTS(IMOD)%ICEP5, & JMOD, INPUTS(JMOD)%ICEP5, 0. ) ! @@ -942,16 +949,27 @@ ! 2.c Wind speeds ! CASE (3) +! XXX RPH +! write(900,*) "CALLING WMUPDV FOR WIND" + CALL WMUPDV ( IMOD, INPUTS(IMOD)%WXN, INPUTS(IMOD)%WYN, & JMOD, INPUTS(JMOD)%WXN, INPUTS(JMOD)%WYN, & 0., ICONSW ) +! XXX RPH +! write(900,*) " WMUPDV getting out FOR WIND" IF ( IDINP(IMOD,J) .EQ. 'WNS' ) CALL WMUPDS & ( IMOD, INPUTS(IMOD)%DTN, & JMOD, INPUTS(JMOD)%DTN, 0. ) +! XXX RPH +! write(900,*) "IDINP(IMOD,J)= ",IDINP(IMOD,J) + ! ! 2.d Ice concentrations ! CASE (4) +! XXX RPH + !write(900,*) "CALLING WMUPDS FOR ICE CONCENTRTION" + CALL WMUPDS ( IMOD, INPUTS(IMOD)%ICEI, & JMOD, INPUTS(JMOD)%ICEI, 0. ) IF ( IDINP(IMOD,J) .EQ. 'ISI' ) CALL WMUPDS & @@ -1057,6 +1075,8 @@ !/ 06-Dec-2010 : Change from GLOBAL (logical) to ICLOSE (integer) to !/ specify index closure for a grid. ( version 3.14 ) !/ (T. J. Campbell, NRL) +!/ 01-Jul-2019 : Generalize output to curv grids ( version 7.XX ) +!/ (R. Padilla-Hernandez, J.H. Alves, EMC/NOAA) !/ ! 1. Purpose : ! @@ -1157,11 +1177,11 @@ WTOT, WL REAL :: LONC, LATC, SXC, SYC, SXYC, & - XDI, DTOLER, VALUEINTER !RP + XDI, DTOLER, VALUEX, VALUEY !RP REAL, ALLOCATABLE :: RXA(:,:), RYA(:,:) - REAL, ALLOCATABLE :: VARIN(:,:) !RP +! REAL, ALLOCATABLE :: VARIN(:,:) !RP LOGICAL :: MAP1(NX,NY), MAP2(NX,NY), & MAP3(NX,NY), FLAGUP @@ -1201,6 +1221,16 @@ MAPI => GRIDS(JMOD)%MAPSTA ICLOSE => GRIDS(JMOD)%ICLOSE +!XXX RPH NEW HERE + + ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) + NXA = 0 + RXA = 0. + ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) + NYA = 0 + RYA = 0. + + IF ( ICLOSE .EQ. ICLOSE_TRPL ) THEN IF ( IMPROC.EQ.NMPERR ) WRITE(MDSE,*)'SUBROUTINE WMUPDV IS'// & ' NOT YET ADAPTED FOR TRIPOLE GRIDS. STOPPING NOW.' @@ -1279,48 +1309,34 @@ GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN !====================================================================== !====================================================================== + !ALLOCATE (VARIN(NXI,NYI)) - ALLOCATE (VARIN(NXI,NYI)) - -! GETTING THE INFO FOR THE INPUT FIELD -! NXI => GRIDS(JMOD)%NX -! NYI => GRIDS(JMOD)%NY -! X0I => GRIDS(JMOD)%X0 -! Y0I => GRIDS(JMOD)%Y0 -! SXI => GRIDS(JMOD)%SX -! SYI => GRIDS(JMOD)%SY XGRDI => GRIDS(JMOD)%XGRD !LONS FOR INPUT FIELD YGRDI => GRIDS(JMOD)%YGRD !LATS FOR INPUT FIELD -! HPFACI => GRIDS(JMOD)%HPFAC !DELTAS IN LON FOR INPUT -! HQFACI => GRIDS(JMOD)%HQFAC !DELTAS IN LAT FOR INPUT - -! LONI=XGRDI -! LATI=YGRDI ! GETTING THE INFO FOR THE CURVILINEAR GRID XGRDC => GRIDS(IMOD)%XGRD !LONS FOR CURVI GRID YGRDC => GRIDS(IMOD)%YGRD !LATS FOR CURVI GRID - HPFAC => GRIDS(IMOD)%HPFAC !DELTAS IN LON FOR CURVI GRID HQFAC => GRIDS(IMOD)%HQFAC !DELTAS IN LAT FOR CURVI GRID - ! 2.a.1 running over the vector components - DO IFIELDS=1,2 - VARIN = UNDEF - IF(IFIELDS==1) THEN - VARIN=VXI - ELSE - VARIN=VYI - END IF +!! DO IFIELDS=1,2 +!XX VARIN = UNDEF +!XX IF(IFIELDS==1) THEN +!XX VARIN=VXI +!XX ELSE +!XX VARIN=VYI +!XX END IF + + ! 2.a.2 running over the curvilinear grid DO J=1,NY DO I=1,NX - - LONC=XGRDC(I,J) !LON FOR EVERY CURVL GRID POINT - LATC=YGRDC(I,J) !LAT FOR EVERY CURVL GRID POINT - SXC =HPFAC(I,J) !DELTA IN LON FOR CURVI GRID - SYC =HQFAC(I,J) !DELTA IN LAT FOR CURVI GRID + LONC=XGRDC(J,I) !LON FOR EVERY CURVL GRID POINT + LATC=YGRDC(J,I) !LAT FOR EVERY CURVL GRID POINT + SXC =HPFAC(J,I) !DELTA IN LON FOR CURVI GRID + SYC =HQFAC(J,I) !DELTA IN LAT FOR CURVI GRID !CHOOSING THE LARGEST DELTA SXYC=MAX(SXC,SYC) @@ -1332,28 +1348,36 @@ ENDIF - IF (MXA .EQ. 2) THEN - VALUEINTER=INTERPOLATE(NXI,XGRDI,NYI,YGRDI, & - VARIN,LONC,LATC,DTOLER) + !IF (MXA .EQ. 2) THEN + IF (.TRUE.) THEN + !write(998,*) " CALLING INTERPOLATE" + CALL INTERPOLATE2D(NXI,XGRDI(1,:),NYI,YGRDI(:,1), & + VXI,VYI,LONC,LATC,DTOLER,VALUEX,VALUEY) ELSE ! COMPUTING THE NUMBER OF POINTS IN THE REGULAR GRID THAT ! SURROUND THE POINT IN THE CURVILINEAR GRID, COULD BE ! DIFFERENT FOR LAT AND LONG, IN THE AVERAGING PROCESS. NPOIX=INT(SXC/SXI) NPOIY=INT(SYC/SYI) - VALUEINTER=AVERAGING(NXI,XGRDI,NYI,YGRDI, & - VARIN,LONC,LATC,NPOIX,NPOIY,MXA) + !write(998,*) " CALLING AVERAGING" + ! XXX RPH delete MXA from the input list when cleaning up + !!VALUEX=AVERAGING(NXI,XGRDI(1,:),NYI,YGRDI(:,1), & + !! VARIN,LONC,LATC,NPOIX,NPOIY,MXA) ENDIF - - IF(IFIELDS==1) THEN - VX(I,J)=VALUEINTER - ELSE - VY(I,J)=VALUEINTER - END IF + ! XXX RPH VX and VY have dimensions NX, NY !! + !!IF(IFIELDS==1) THEN + VX(I,J)=VALUEX + !write(990,*) LONC, LATC, VX(I,J) + !!ELSE + VY(I,J)=VALUEY + !write(991,*) LONC, LATC, VY(I,J) + !!END IF + END DO !END I END DO !END J - END DO !END IFIELDS - DEALLOCATE (VARIN) + !!END DO !END IFIELDS + !!DEALLOCATE (VARIN) + !======================================================================= !======================================================================= ELSE @@ -1372,9 +1396,9 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MXA+1,'I5,',MXA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NX, MXA ! - ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) - NXA = 0 - RXA = 0. +! XXX RPH ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) +! XXX RPH NXA = 0 +! XXX RPH RXA = 0. ! IF ( MXA .EQ. 2 ) THEN ! @@ -1481,9 +1505,9 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MYA+1,'I5,',MYA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NY, MYA ! - ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) - NYA = 0 - RYA = 0. +! XXX RPH ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) +! XXX RPH NYA = 0 +! XXX RPH RYA = 0. ! IF ( MYA .EQ. 2 ) THEN ! @@ -1544,6 +1568,7 @@ END IF ! END IF + ! !/T1 DO, IY=1, NY !/T1 IF ( NYA(IY,0) .GT. 0 ) WRITE (MDST,FORMAT1) & @@ -1556,6 +1581,7 @@ MAP2 = .FALSE. FACTOR = 1. ! + DO IX=1, NX IF ( NXA(IX,0) .EQ. 0 ) CYCLE DO IY=1, NY @@ -1602,6 +1628,7 @@ END IF END DO END DO + ! ! 2.d Reconcile mask differences ! @@ -1668,6 +1695,7 @@ EXIT END IF END DO + ! ! 3. End of routine -------------------------------------------------- / ! @@ -1710,6 +1738,8 @@ !/ specify index closure for a grid. ( version 3.14 ) !/ (T. J. Campbell, NRL) !/ 11-May-2015 : Updates to 2-ways nestings for UG ( version 5.08 ) +!/ 01-Jul-2019 : Generalize output to curv grids ( version 7.XX ) +!/ (R. Padilla-Hernandez, J.H. Alves, EMC/NOAA) !/ ! 1. Purpose : ! @@ -1840,6 +1870,18 @@ MAPI => GRIDS(JMOD)%MAPSTA ICLOSE => GRIDS(JMOD)%ICLOSE + +!XXX RPH NEW HERE=================================== + + ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) + NXA = 0 + RXA = 0. + ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) + NYA = 0 + RYA = 0. +!==================================================== + + IF ( ICLOSE .EQ. ICLOSE_TRPL ) THEN IF ( IMPROC.EQ.NMPERR ) WRITE(MDSE,*)'SUBROUTINE WMUPDS IS'// & ' NOT YET ADAPTED FOR TRIPOLE GRIDS. STOPPING NOW.' @@ -1917,39 +1959,24 @@ GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN !====================================================================== !====================================================================== - ! 2.a.1 Getting the info for reg and curvi grids -! NXI => GRIDS(JMOD)%NX -! NYI => GRIDS(JMOD)%NY -! X0I => GRIDS(JMOD)%X0 -! Y0I => GRIDS(JMOD)%Y0 -! SXI => GRIDS(JMOD)%SX -! SYI => GRIDS(JMOD)%SY + XGRDI => GRIDS(JMOD)%XGRD !LONS FOR INPUT FIELD YGRDI => GRIDS(JMOD)%YGRD !LATS FOR INPUT FIELD -! HPFACI => GRIDS(JMOD)%HPFAC !DELTAS IN LON FOR INPUT -! HQFACI => GRIDS(JMOD)%HQFAC !DELTAS IN LAT FOR INPUT - -! LONI=XGRDI -! LATI=YGRDI ! GETTING THE INFO FOR THE CURVILINEAR GRID XGRDC => GRIDS(IMOD)%XGRD !LONS FOR CURVI GRID YGRDC => GRIDS(IMOD)%YGRD !LATS FOR CURVI GRID - HPFAC => GRIDS(IMOD)%HPFAC !DELTAS IN LON FOR CURVI GRID HQFAC => GRIDS(IMOD)%HQFAC !DELTAS IN LAT FOR CURVI GRID - - - ! 2.a.2 running over the curvilinear grid DO J=1,NY DO I=1,NX - LONC=XGRDC(I,J) !LON FOR EVERY CURVL GRID POINT - LATC=YGRDC(I,J) !LAT FOR EVERY CURVL GRID POINT - SXC =HPFAC(I,J) !DELTA IN LON FOR CURVI GRID - SYC =HQFAC(I,J) !DELTA IN LAT FOR CURVI GRID + LONC=XGRDC(J,I) !LON FOR EVERY CURVL GRID POINT + LATC=YGRDC(J,I) !LAT FOR EVERY CURVL GRID POINT + SXC =HPFAC(J,I) !DELTA IN LON FOR CURVI GRID + SYC =HQFAC(J,I) !DELTA IN LAT FOR CURVI GRID !CHOOSING THE LARGEST DELTA SXYC=MAX(SXC,SYC) @@ -1961,19 +1988,23 @@ ENDIF - IF (MXA .EQ. 2) THEN - VALUEINTER=INTERPOLATE(NXI,XGRDI,NYI,YGRDI, & + !IF (MXA .EQ. 2) THEN + !IF (.TRUE.) THEN + + VALUEINTER=INTERPOLATE(NXI,XGRDI(1,:),NYI,YGRDI(:,1), & FDI,LONC,LATC,DTOLER) - ELSE + + !ELSE ! COMPUTING THE NUMBER OF POINTS IN THE REGULAR GRID THAT ! SURROUND THE POINT IN THE CURVILINEAR GRID, COULD BE ! DIFFERENT FOR LAT AND LONG, IN THE AVERAGING PROCESS. - NPOIX=INT(SXC/SXI) - NPOIY=INT(SYC/SYI) - VALUEINTER=AVERAGING(NXI,XGRDI,NYI,YGRDI, & - FDI,LONC,LATC, NPOIX,NPOIY,MXA) - ENDIF - + !NPOIX=INT(SXC/SXI) + !NPOIY=INT(SYC/SYI) + !write(999,*) " FLAG 06.3" + !VALUEINTER=AVERAGING(NXI,XGRDI(1,:),NYI,YGRDI(:,1), & + ! FDI,LONC,LATC, NPOIX,NPOIY,MXA) + !write(999,*) " FLAG 06.1" + !ENDIF FD(I,J)=VALUEINTER END DO !END I END DO !END J @@ -1998,9 +2029,11 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MXA+1,'I5,',MXA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NX, MXA ! - ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) - NXA = 0 - RXA = 0. +! XXX RPH COMMENTING OUT and adding on the top of the subroutine +! ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) +! NXA = 0 +! RXA = 0. +! ! IF ( MXA .EQ. 2 ) THEN ! @@ -2105,9 +2138,11 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MYA+1,'I5,',MYA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NY, MYA ! - ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) - NYA = 0 - RYA = 0. +! XXX RPH COMMENTIG OUT and adding these lines ad the top +! ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) +! NYA = 0 +! RYA = 0. +! ! IF ( MYA .EQ. 2 ) THEN ! @@ -2295,20 +2330,55 @@ END SUBROUTINE WMUPDS !======================================================================= -! !!MODULE INTERPREC2ANY - -! CONTAINS - FUNCTION XYCURVISEARCH(LENGTH, ARRAY, VALUE, DELTA) - ! GIVEN AN ARRAY AND A VALUE TO SEARCH, IT RETURNS THE INDEX OF - ! THE ELEMENT ON THE RECTILINEAR GRID THAT IS CLOSEST TO, BUT - ! LESS THAN, THE GIVEN VALUE. - ! "DELTA" IS THE THERSHOLD USED TO DETERMINE IF TWO VALUES ARE EQUAL - ! IF ( ABS(X1 - X2) <= DELTA) THEN - ! ASSUME X1 = X2 - ! ENDIF +!/ +-----------------------------------+ +!/ | WAVEWATCH III NOAA/NCEP | +!/ | H. L. Tolman | +!/ | FORTRAN 90 | +!/ | Last update : 20-Jan-2017 | +!/ +-----------------------------------+ +!/ +!/ 01-Jul-2019 : Origination. ( version 7.XX ) +!/ 01-Jul-2019 : Generalize output to curv grids ( version 7.XX ) +!/ (R. Padilla-Hernandez, EMC/NOAA) +!/ +!/ Copyright 2009 National Weather Service (NWS), +!/ National Oceanic and Atmospheric Administration. All rights +!/ reserved. WAVEWATCH III is a trademark of the NWS. +!/ No unauthorized use without permission. +!/ +! 1. Purpose : +! +! Search the location of a point(XC,YC) in a regular grid +! +! +! 2. Variables and types : +! +! 3. Subroutines and functions : +! +! Name Type Scope Description +! ---------------------------------------------------------------- +! +! ---------------------------------------------------------------- +! +! 4. Subroutines and functions used : +! +! See subroutine documentation. +! +! 5. Remarks : +! GIVEN AN ARRAY AND A VALUE TO SEARCH, IT RETURNS THE INDEX OF +! THE ELEMENT ON THE RECTILINEAR GRID THAT IS CLOSEST TO, BUT +! LESS THAN, THE GIVEN VALUE. +! "DELTA" IS THE THERSHOLD USED TO DETERMINE IF TWO VALUES ARE EQUAL +! IF ( ABS(X1 - X2) <= DELTA) THEN +! ASSUME X1 = X2 +! ENDIF +! +! 6. Switches : +! +! +! 7. Source code : - !IMPLICIT NONE INTEGER, INTENT(IN) :: LENGTH REAL, DIMENSION(LENGTH), INTENT(IN) :: ARRAY REAL, INTENT(IN) :: VALUE @@ -2348,7 +2418,6 @@ ! BY XARRAY WITH DIMENSION X_LEN ! AND THE GRID Y VALUES SPECIFIED BY YARRAY WITH DIMENSION Y_LEN - !IMPLICIT NONE INTEGER, INTENT(IN) :: X_LEN, Y_LEN REAL, DIMENSION(X_LEN), INTENT(IN) :: XARRAY REAL, DIMENSION(Y_LEN), INTENT(IN) :: YARRAY @@ -2370,7 +2439,6 @@ Y2 = YARRAY(JNX+1) DENOM = (X2 - X1)*(Y2 - Y1) - INTERPOLATE = (FUNC(INX,JNX)*(X2-X)*(Y2-Y) + & FUNC(INX+1,JNX)*(X-X1)*(Y2-Y) + & @@ -2379,6 +2447,49 @@ END FUNCTION INTERPOLATE +!======================================================================== + + SUBROUTINE INTERPOLATE2D(X_LEN,XARRAY,Y_LEN,YARRAY,FUNC1, & + FUNC2,X,Y,DELTA,VAL1,VAL2) + ! THIS FUNCTION USES BILINEAR INTERPOLATION TO ESTIMATE THE VALUE + ! OF A FUNCTION F AT POINT (X,Y) + ! F IS ASSUMED TO BE ON A REGULAR GRID, WITH THE GRID X VALUES SPECIFIED + ! BY XARRAY WITH DIMENSION X_LEN + ! AND THE GRID Y VALUES SPECIFIED BY YARRAY WITH DIMENSION Y_LEN + + INTEGER, INTENT(IN) :: X_LEN, Y_LEN + REAL, DIMENSION(X_LEN), INTENT(IN) :: XARRAY + REAL, DIMENSION(Y_LEN), INTENT(IN) :: YARRAY + REAL, DIMENSION(X_LEN, Y_LEN), INTENT(IN) :: FUNC1, FUNC2 + REAL, INTENT(IN) :: X,Y + REAL, INTENT(IN), OPTIONAL :: DELTA + REAL, INTENT(OUT) :: VAL1,VAL2 + + REAL :: DENOM, X1, X2, Y1, Y2 + INTEGER :: INX,JNX + + INX = XYCURVISEARCH(X_LEN, XARRAY, X) + JNX = XYCURVISEARCH(Y_LEN, YARRAY, Y) + + X1 = XARRAY(INX) + X2 = XARRAY(INX+1) + + Y1 = YARRAY(JNX) + Y2 = YARRAY(JNX+1) + + DENOM = (X2 - X1)*(Y2 - Y1) + + VAL1 = (FUNC1(INX,JNX)*(X2-X)*(Y2-Y) + & + FUNC1(INX+1,JNX)*(X-X1)*(Y2-Y) + & + FUNC1(INX,JNX+1)*(X2-X)*(Y-Y1)+ & + FUNC1(INX+1, JNX+1)*(X-X1)*(Y-Y1))/DENOM + VAL2 = (FUNC2(INX,JNX)*(X2-X)*(Y2-Y) + & + FUNC2(INX+1,JNX)*(X-X1)*(Y2-Y) + & + FUNC2(INX,JNX+1)*(X2-X)*(Y-Y1)+ & + FUNC2(INX+1, JNX+1)*(X-X1)*(Y-Y1))/DENOM + + END SUBROUTINE INTERPOLATE2D +!==================================================================== REAL FUNCTION AVERAGING(X_LEN,XARRAY,Y_LEN,YARRAY,FUNC, & X,Y,NPX,NPY,MAM) @@ -2438,8 +2549,8 @@ END IF -! PRINT*,'AVERAGE MXA NPX NPY INITIALX INFINX INITIALY INFINY:', -! 1 MAM, NPX, NPY, INITIALX, INFINX, INITIALY, INFINY + !WRITE(998,*)'AVERAGE MXA NPX NPY INITIALX INFINX INITIALY & + !INFINY:', MAM, NPX, NPY, INITIALX, INFINX, INITIALY, INFINY SUM=0.0 From e58e0a66767b3d50b75cb9148e554237689d2ad0 Mon Sep 17 00:00:00 2001 From: wx21rph Date: Tue, 30 Jul 2019 20:16:34 +0000 Subject: [PATCH 06/13] Adding Func & Subr to interp recti to curvi grids --- model/ftn/wmupdtmd.ftn | 392 ++++++++++++++++++++++++++--------------- model/ftn/wmwavemd.ftn | 2 + 2 files changed, 255 insertions(+), 139 deletions(-) diff --git a/model/ftn/wmupdtmd.ftn b/model/ftn/wmupdtmd.ftn index 69238e18c..639dc6678 100644 --- a/model/ftn/wmupdtmd.ftn +++ b/model/ftn/wmupdtmd.ftn @@ -1176,8 +1176,8 @@ REAL :: VXL, VYL, VA0, VA, VA2, FACTOR, & WTOT, WL - REAL :: LONC, LATC, SXC, SYC, SXYC, & - XDI, DTOLER, VALUEX, VALUEY !RP + REAL :: LONC, LATC, SXYC, & + XDI, DTOLER, VALUEX, VALUEY REAL, ALLOCATABLE :: RXA(:,:), RYA(:,:) @@ -1307,9 +1307,6 @@ ! IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN -!====================================================================== -!====================================================================== - !ALLOCATE (VARIN(NXI,NYI)) XGRDI => GRIDS(JMOD)%XGRD !LONS FOR INPUT FIELD YGRDI => GRIDS(JMOD)%YGRD !LATS FOR INPUT FIELD @@ -1317,69 +1314,46 @@ ! GETTING THE INFO FOR THE CURVILINEAR GRID XGRDC => GRIDS(IMOD)%XGRD !LONS FOR CURVI GRID YGRDC => GRIDS(IMOD)%YGRD !LATS FOR CURVI GRID - HPFAC => GRIDS(IMOD)%HPFAC !DELTAS IN LON FOR CURVI GRID - HQFAC => GRIDS(IMOD)%HQFAC !DELTAS IN LAT FOR CURVI GRID - -! 2.a.1 running over the vector components -!! DO IFIELDS=1,2 -!XX VARIN = UNDEF -!XX IF(IFIELDS==1) THEN -!XX VARIN=VXI -!XX ELSE -!XX VARIN=VYI -!XX END IF - - -! 2.a.2 running over the curvilinear grid + !HPFAC => GRIDS(IMOD)%HPFAC !DELTAS IN LON FOR CURVI GRID + !HQFAC => GRIDS(IMOD)%HQFAC !DELTAS IN LAT FOR CURVI GRID +!IS THE TOLERANCE USED TO DETERMINE IF TWO VALUES ARE EQUAL IN LOCATION + DTOLER = 1E-5 +! 2.a.1 running over the curvilinear grid DO J=1,NY DO I=1,NX LONC=XGRDC(J,I) !LON FOR EVERY CURVL GRID POINT LATC=YGRDC(J,I) !LAT FOR EVERY CURVL GRID POINT - SXC =HPFAC(J,I) !DELTA IN LON FOR CURVI GRID - SYC =HQFAC(J,I) !DELTA IN LAT FOR CURVI GRID + !SXC =HPFAC(J,I) !DELTA IN LON FOR CURVI GRID + !SYC =HQFAC(J,I) !DELTA IN LAT FOR CURVI GRID !CHOOSING THE LARGEST DELTA - SXYC=MAX(SXC,SYC) - XDI=SXYC/SXI - IF(XDI .LT. 2.00) THEN - MXA=2 - ELSE - MXA=2+INT(XDI) - ENDIF - + !!SXYC=MAX(SXC,SYC) + !!XDI=SXYC/SXI + !!IF(XDI .LT. 2.00) THEN + !! MXA=2 + !!ELSE + !! MXA=2+INT(XDI) + !!ENDIF !IF (MXA .EQ. 2) THEN - IF (.TRUE.) THEN - !write(998,*) " CALLING INTERPOLATE" - CALL INTERPOLATE2D(NXI,XGRDI(1,:),NYI,YGRDI(:,1), & - VXI,VYI,LONC,LATC,DTOLER,VALUEX,VALUEY) - ELSE - ! COMPUTING THE NUMBER OF POINTS IN THE REGULAR GRID THAT - ! SURROUND THE POINT IN THE CURVILINEAR GRID, COULD BE - ! DIFFERENT FOR LAT AND LONG, IN THE AVERAGING PROCESS. - NPOIX=INT(SXC/SXI) - NPOIY=INT(SYC/SYI) - !write(998,*) " CALLING AVERAGING" - ! XXX RPH delete MXA from the input list when cleaning up - !!VALUEX=AVERAGING(NXI,XGRDI(1,:),NYI,YGRDI(:,1), & - !! VARIN,LONC,LATC,NPOIX,NPOIY,MXA) - ENDIF - ! XXX RPH VX and VY have dimensions NX, NY !! - !!IF(IFIELDS==1) THEN - VX(I,J)=VALUEX - !write(990,*) LONC, LATC, VX(I,J) - !!ELSE - VY(I,J)=VALUEY - !write(991,*) LONC, LATC, VY(I,J) - !!END IF + CALL INTERPOLATE2D(NXI,XGRDI(1,:),NYI,YGRDI(:,1), & + VXI,VYI,LONC,LATC,DTOLER,VALUEX,VALUEY) + !ELSE + ! COMPUTING THE NUMBER OF POINTS IN THE REGULAR GRID THAT + ! SURROUND THE POINT IN THE CURVILINEAR GRID, COULD BE + ! DIFFERENT FOR LAT AND LONG, IN THE AVERAGING PROCESS. + !NPOIX=INT(SXC/SXI) + !NPOIY=INT(SYC/SYI) + !!VALUEX=AVERAGING(NXI,XGRDI(1,:),NYI,YGRDI(:,1), & + !! VARIN,LONC,LATC,NPOIX,NPOIY) + !ENDIF + + VX(I,J)=VALUEX + VY(I,J)=VALUEY END DO !END I END DO !END J - !!END DO !END IFIELDS - !!DEALLOCATE (VARIN) -!======================================================================= -!======================================================================= ELSE ! ! 2.b Rectilinear grids @@ -1396,9 +1370,9 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MXA+1,'I5,',MXA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NX, MXA ! -! XXX RPH ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) -! XXX RPH NXA = 0 -! XXX RPH RXA = 0. +! XXX ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) +! XXX NXA = 0 +! XXX RXA = 0. ! IF ( MXA .EQ. 2 ) THEN ! @@ -1505,9 +1479,9 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MYA+1,'I5,',MYA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NY, MYA ! -! XXX RPH ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) -! XXX RPH NYA = 0 -! XXX RPH RYA = 0. +! XXX ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) +! XXX NYA = 0 +! XXX RYA = 0. ! IF ( MYA .EQ. 2 ) THEN ! @@ -1834,8 +1808,8 @@ XSR, YFL, YFR, YSL, YSR REAL :: FDL, WTOT, WL - REAL :: LONC, LATC, SXC, SYC, SXYC, & - XDI, DTOLER, VALUEINTER !RP + REAL :: LONC, LATC, SXYC, & + XDI, DTOLER, VALUEINTER REAL, ALLOCATABLE :: RXA(:,:), RYA(:,:) @@ -1957,61 +1931,32 @@ ! IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN -!====================================================================== -!====================================================================== -! 2.a.1 Getting the info for reg and curvi grids +! 2.a.1 Getting the info for reg and curvi grids XGRDI => GRIDS(JMOD)%XGRD !LONS FOR INPUT FIELD YGRDI => GRIDS(JMOD)%YGRD !LATS FOR INPUT FIELD ! GETTING THE INFO FOR THE CURVILINEAR GRID XGRDC => GRIDS(IMOD)%XGRD !LONS FOR CURVI GRID YGRDC => GRIDS(IMOD)%YGRD !LATS FOR CURVI GRID - HPFAC => GRIDS(IMOD)%HPFAC !DELTAS IN LON FOR CURVI GRID - HQFAC => GRIDS(IMOD)%HQFAC !DELTAS IN LAT FOR CURVI GRID - + !HPFAC => GRIDS(IMOD)%HPFAC !DELTAS IN LON FOR CURVI GRID + !HQFAC => GRIDS(IMOD)%HQFAC !DELTAS IN LAT FOR CURVI GRID +!IS THE TOLERANCE USED TO DETERMINE IF TWO VALUES ARE EQUAL IN LOCATION + DTOLER = 1E-5 ! 2.a.2 running over the curvilinear grid DO J=1,NY DO I=1,NX LONC=XGRDC(J,I) !LON FOR EVERY CURVL GRID POINT LATC=YGRDC(J,I) !LAT FOR EVERY CURVL GRID POINT - SXC =HPFAC(J,I) !DELTA IN LON FOR CURVI GRID - SYC =HQFAC(J,I) !DELTA IN LAT FOR CURVI GRID - - !CHOOSING THE LARGEST DELTA - SXYC=MAX(SXC,SYC) - XDI=SXYC/SXI - IF(XDI .LT. 2.00) THEN - MXA=2 - ELSE - MXA=2+INT(XDI) - ENDIF - + !SXC =HPFAC(J,I) !DELTA IN LON FOR CURVI GRID + !SYC =HQFAC(J,I) !DELTA IN LAT FOR CURVI GRID - !IF (MXA .EQ. 2) THEN - !IF (.TRUE.) THEN - - VALUEINTER=INTERPOLATE(NXI,XGRDI(1,:),NYI,YGRDI(:,1), & - FDI,LONC,LATC,DTOLER) - - !ELSE - ! COMPUTING THE NUMBER OF POINTS IN THE REGULAR GRID THAT - ! SURROUND THE POINT IN THE CURVILINEAR GRID, COULD BE - ! DIFFERENT FOR LAT AND LONG, IN THE AVERAGING PROCESS. - !NPOIX=INT(SXC/SXI) - !NPOIY=INT(SYC/SYI) - !write(999,*) " FLAG 06.3" - !VALUEINTER=AVERAGING(NXI,XGRDI(1,:),NYI,YGRDI(:,1), & - ! FDI,LONC,LATC, NPOIX,NPOIY,MXA) - !write(999,*) " FLAG 06.1" - !ENDIF + VALUEINTER=INTERPOLATE(NXI,XGRDI(1,:),NYI,YGRDI(:,1), & + FDI,LONC,LATC,DTOLER) FD(I,J)=VALUEINTER END DO !END I END DO !END J -!======================================================================= -!======================================================================= - ELSE ! ! 2.b Rectilinear grids @@ -2029,7 +1974,6 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MXA+1,'I5,',MXA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NX, MXA ! -! XXX RPH COMMENTING OUT and adding on the top of the subroutine ! ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) ! NXA = 0 ! RXA = 0. @@ -2337,10 +2281,10 @@ !/ | FORTRAN 90 | !/ | Last update : 20-Jan-2017 | !/ +-----------------------------------+ +!/ (R. Padilla-Hernandez, EMC/NOAA) !/ !/ 01-Jul-2019 : Origination. ( version 7.XX ) !/ 01-Jul-2019 : Generalize output to curv grids ( version 7.XX ) -!/ (R. Padilla-Hernandez, EMC/NOAA) !/ !/ Copyright 2009 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -2352,18 +2296,32 @@ ! Search the location of a point(XC,YC) in a regular grid ! ! -! 2. Variables and types : +! 2. Parameters : ! -! 3. Subroutines and functions : +! Parameter list +! ---------------------------------------------------------------- +! LENGTH Int. Input Dimension of input array +! ARRAY Int. Input 1D array for lats or longs +! VALUE Real Input Value to be located in ARRAY +! DELTA Real Input Threshold to determine if two values +! are equal +! ---------------------------------------------------------------- ! -! Name Type Scope Description +! Internal parameters ! ---------------------------------------------------------------- +! +! ---------------------------------------------------------------- +! +! 3. Subroutines and functions : ! +! Name Type Scope Description +! ---------------------------------------------------------------- +! XYCURVISEARCH Function Find indexes See bellow ! ---------------------------------------------------------------- ! ! 4. Subroutines and functions used : ! -! See subroutine documentation. +! - ! ! 5. Remarks : ! GIVEN AN ARRAY AND A VALUE TO SEARCH, IT RETURNS THE INDEX OF @@ -2375,7 +2333,7 @@ ! ENDIF ! ! 6. Switches : -! +! - ! ! 7. Source code : @@ -2387,7 +2345,7 @@ INTEGER :: XYCURVISEARCH INTEGER :: LEFT, MIDDLE, RIGHT - REAL :: D + LEFT = 1 RIGHT = LENGTH @@ -2396,7 +2354,7 @@ EXIT ENDIF MIDDLE = NINT((LEFT+RIGHT) / 2.0) - IF ( ABS(ARRAY(MIDDLE) - VALUE) <= D) THEN + IF ( ABS(ARRAY(MIDDLE) - VALUE) <= DELTA) THEN XYCURVISEARCH = MIDDLE RETURN ELSE IF (ARRAY(MIDDLE) > VALUE) THEN @@ -2408,10 +2366,86 @@ XYCURVISEARCH = RIGHT END FUNCTION XYCURVISEARCH - +! End of function -------------------------------------------------- / REAL FUNCTION INTERPOLATE(X_LEN,XARRAY,Y_LEN,YARRAY,FUNC, & X,Y,DELTA) +!/ +!/ +-----------------------------------+ +!/ | WAVEWATCH III NOAA/NCEP | +!/ | H. L. Tolman | +!/ | FORTRAN 90 | +!/ | Last update : 25-July-2019 | +!/ +-----------------------------------+ +!/ +!/ (R. Padilla-Hernandez, EMC/NOAA) +!/ +!/ 29-July-2019 : ( version 7.XX ) +!/ +! 1. Purpose : +! +! Perform interpolation from regular to curvilinear grid for a +! scalar field. THIS FUNCTION USES BILINEAR INTERPOLATION TO +! ESTIMATE THE VALUE OF A FUNCTION F AT POINT (X,Y) F IS ASSUMED +! TO BE ON A REGULAR GRID, WITH THE GRID X VALUES SPECIFIED BY +! XARRAY WITH DIMENSION X_LEN AND THE GRID Y VALUES SPECIFIED BY +! YARRAY WITH DIMENSION Y_LEN +! +! 2. Parameters : +! +! Parameter list +! ---------------------------------------------------------------- +! X_LEN Int. Dimension in X +! XARRAY Int. 1D array for Longitudes +! Y_LEN Int. Dimension in Y +! YARRAY Int. 1D array for Latitudes +! FUNC Int. 1D Field +! X,Y Real Long-Lat for point in the curv grid +! DELTA Real Threshold to determine if two values are equal +! ---------------------------------------------------------------- +! +! Internal parameters +! ---------------------------------------------------------------- +! INX Int. Index in X on the rectiliniear grid that is +! closest to, but less than, the given value for a +! point in the curvilinear grid. +! JNX Int. Idem INX for for Y. +! X1,Y1 Real (Long, Lat) left-bottom corner for the square in +! regular grid, where the given value for the point +! in the curvilinear grid lies +! X2,Y2 Real (Long, Lat) right-upper corner for the square in +! regular grid, where the given value for the point +! in the curvilinear grid lies +! ---------------------------------------------------------------- +! +! 3. Subroutines used : +! +! Name Type Module Description +! ---------------------------------------------------------------- +! XYCURVISEARCH Func. wmupdtmd Look for indexes in 1D array. +! ---------------------------------------------------------------- +! +! 4. Called by : +! +! Main program in which it is contained. +! +! 5. Error messages : +! +! None. +! +! 6. Remarks : +! +! - +! +! 7. Structure : +! +! See source code. +! +! 8. Switches : +! +! - +! +! 9. Source code : ! THIS FUNCTION USES BILINEAR INTERPOLATION TO ESTIMATE THE VALUE ! OF A FUNCTION F AT POINT (X,Y) ! F IS ASSUMED TO BE ON A REGULAR GRID, WITH THE GRID X VALUES SPECIFIED @@ -2429,8 +2463,8 @@ REAL :: DENOM, X1, X2, Y1, Y2 INTEGER :: INX,JNX - INX = XYCURVISEARCH(X_LEN, XARRAY, X) - JNX = XYCURVISEARCH(Y_LEN, YARRAY, Y) + INX = XYCURVISEARCH(X_LEN, XARRAY, X, DELTA) + JNX = XYCURVISEARCH(Y_LEN, YARRAY, Y, DELTA) X1 = XARRAY(INX) X2 = XARRAY(INX+1) @@ -2451,12 +2485,85 @@ SUBROUTINE INTERPOLATE2D(X_LEN,XARRAY,Y_LEN,YARRAY,FUNC1, & FUNC2,X,Y,DELTA,VAL1,VAL2) - ! THIS FUNCTION USES BILINEAR INTERPOLATION TO ESTIMATE THE VALUE - ! OF A FUNCTION F AT POINT (X,Y) - ! F IS ASSUMED TO BE ON A REGULAR GRID, WITH THE GRID X VALUES SPECIFIED - ! BY XARRAY WITH DIMENSION X_LEN - ! AND THE GRID Y VALUES SPECIFIED BY YARRAY WITH DIMENSION Y_LEN - +!/ +!/ +-----------------------------------+ +!/ | WAVEWATCH III NOAA/NCEP | +!/ | H. L. Tolman | +!/ | FORTRAN 90 | +!/ | Last update : 25-July-2019 | +!/ +-----------------------------------+ +!/ +!/ (R. Padilla-Hernandez, EMC/NOAA) +!/ +!/ 29-July-2019 : ( version 7.XX ) +!/ +! 1. Purpose : +! +! Perform interpolation from regular to curvilinear grid for a +! Vector field. THIS FUNCTION USES BILINEAR INTERPOLATION TO +! ESTIMATE THE VALUE OF A FUNCTION F AT POINT (X,Y) F IS ASSUMED +! TO BE ON A REGULAR GRID, WITH THE GRID X VALUES SPECIFIED BY +! XARRAY WITH DIMENSION X_LEN AND THE GRID Y VALUES SPECIFIED BY +! YARRAY WITH DIMENSION Y_LEN +! +! 3. Parameters : +! +! Parameter list +! ---------------------------------------------------------------- +! X_LEN Int. Dimension in X +! XARRAY Int. 1D array for Longitudes +! Y_LEN Int. Dimension in Y +! YARRAY Int. 1D array for Latitudes +! FUNC1 Int. First componen of the 2D array +! FUNC2 Int. Second component of the 2D array +! X,Y Real Long-Lat for point in the curv grid +! DELTA Real Threshold to determine if two values are equal +! VAL1,VAL2 Real Interpolated values at a point in curvi grid +! ---------------------------------------------------------------- +! +! Internal parameters +! ---------------------------------------------------------------- +! INX Int. Index in X on the rectiliniear grid that is +! closest to, but less than, the given value for a +! point in the curvilinear grid. +! JNX Int. Idem INX for for Y. +! X1,Y1 Real (Long, Lat) left-bottom corner for the square in +! regular grid, where the given value for the point +! in the curvilinear grid lies +! X2,Y2 Real (Long, Lat) right-upper corner for the square in +! regular grid, where the given value for the point +! in the curvilinear grid lies +! ---------------------------------------------------------------- +! +! 4. Subroutines used : +! +! Name Type Module Description +! ---------------------------------------------------------------- +! XYCURVISEARCH Func. wmupdtmd Look for indexes in 1D array. +! ---------------------------------------------------------------- +! +! 5. Called by : +! +! Main program in which it is contained. +! +! 6. Error messages : +! +! None. +! +! 7. Remarks : +! +! - +! +! 8. Structure : +! +! See source code. +! +! 9. Switches : +! +! - +! +! 10. Source code : +! INTEGER, INTENT(IN) :: X_LEN, Y_LEN REAL, DIMENSION(X_LEN), INTENT(IN) :: XARRAY REAL, DIMENSION(Y_LEN), INTENT(IN) :: YARRAY @@ -2465,11 +2572,11 @@ REAL, INTENT(IN), OPTIONAL :: DELTA REAL, INTENT(OUT) :: VAL1,VAL2 - REAL :: DENOM, X1, X2, Y1, Y2 + REAL :: DENOM, X1, X2, Y1, Y2,C1,C2,C3,C4 INTEGER :: INX,JNX - INX = XYCURVISEARCH(X_LEN, XARRAY, X) - JNX = XYCURVISEARCH(Y_LEN, YARRAY, Y) + INX = XYCURVISEARCH(X_LEN, XARRAY, X, DELTA) + JNX = XYCURVISEARCH(Y_LEN, YARRAY, Y, DELTA) X1 = XARRAY(INX) X2 = XARRAY(INX+1) @@ -2478,21 +2585,34 @@ Y2 = YARRAY(JNX+1) DENOM = (X2 - X1)*(Y2 - Y1) + C1=(X2-X)*(Y2-Y) + C2=(X-X1)*(Y2-Y) + C3=(X2-X)*(Y-Y1) + C4=(X-X1)*(Y-Y1) + VAL1 = (FUNC1(INX,JNX) *C1 + FUNC1(INX+1,JNX) *C2 + & + FUNC1(INX,JNX+1)*C3 + FUNC1(INX+1,JNX+1)*C4)/DENOM - VAL1 = (FUNC1(INX,JNX)*(X2-X)*(Y2-Y) + & - FUNC1(INX+1,JNX)*(X-X1)*(Y2-Y) + & - FUNC1(INX,JNX+1)*(X2-X)*(Y-Y1)+ & - FUNC1(INX+1, JNX+1)*(X-X1)*(Y-Y1))/DENOM - VAL2 = (FUNC2(INX,JNX)*(X2-X)*(Y2-Y) + & - FUNC2(INX+1,JNX)*(X-X1)*(Y2-Y) + & - FUNC2(INX,JNX+1)*(X2-X)*(Y-Y1)+ & - FUNC2(INX+1, JNX+1)*(X-X1)*(Y-Y1))/DENOM + VAL2 = (FUNC2(INX,JNX) *C1 + FUNC2(INX+1,JNX) *C2 + & + FUNC2(INX,JNX+1)*C3 + FUNC2(INX+1,JNX+1)*C4)/DENOM END SUBROUTINE INTERPOLATE2D !==================================================================== REAL FUNCTION AVERAGING(X_LEN,XARRAY,Y_LEN,YARRAY,FUNC, & - X,Y,NPX,NPY,MAM) + X,Y,NPX,NPY) +!/ +!/ +-----------------------------------+ +!/ | WAVEWATCH III NOAA/NCEP | +!/ | H. L. Tolman | +!/ | FORTRAN 90 | +!/ | Last update : 25-July-2019 | +!/ +-----------------------------------+ +!/ +!/ (R. Padilla-Hernandez, EMC/NOAA) +!/ +!/ 29-July-2019 : ( version 7.XX ) +!/ + ! THIS FUNCTION USES AVERAGING TO ESTIMATE THE VALUE ! OF A FUNCTION F AT POINT (X,Y) ! F IS ASSUMED TO BE ON A REGULAR GRID, WITH THE GRID X VALUES SPECIFIED @@ -2502,7 +2622,7 @@ ! IN X AND Y !IMPLICIT NONE - INTEGER X_LEN, Y_LEN, MAM, INXEND, INYEND, NPX,NPY + INTEGER X_LEN, Y_LEN, INXEND, INYEND, NPX,NPY REAL, DIMENSION(X_LEN) :: XARRAY REAL, DIMENSION(Y_LEN) :: YARRAY REAL, DIMENSION(X_LEN, Y_LEN) :: FUNC @@ -2549,10 +2669,6 @@ END IF - !WRITE(998,*)'AVERAGE MXA NPX NPY INITIALX INFINX INITIALY & - !INFINY:', MAM, NPX, NPY, INITIALX, INFINX, INITIALY, INFINY - - SUM=0.0 ICOUNT=0 DO J=INITIALY,INFINY @@ -2565,8 +2681,6 @@ END FUNCTION AVERAGING -! END MODULE INTERPREC2ANY - !======================================================================= !/ diff --git a/model/ftn/wmwavemd.ftn b/model/ftn/wmwavemd.ftn index 65aaecf76..861e4ba22 100644 --- a/model/ftn/wmwavemd.ftn +++ b/model/ftn/wmwavemd.ftn @@ -494,6 +494,7 @@ ! ! 3.b Normal processing ! + IF ( GRSTAT(I) .EQ. 1 ) THEN !/T WRITE (MDST,9002) I, GRSTAT(I), 'SECOND PART' !/MPRF CALL PRTIME ( PRFT0 ) @@ -915,6 +916,7 @@ END IF ! END IF + ! ! 7.c Stage data ! From 35040048983087cc76ab3858a747a356625e917f Mon Sep 17 00:00:00 2001 From: James Dykes <48799938+nacbrother@users.noreply.github.com> Date: Thu, 10 Oct 2019 13:49:48 -0500 Subject: [PATCH 07/13] Corrected th2m and sth2m calculations. (#103) On lines 1439 and 1440, the calculations for ABX2 and ABY2 were like that of ABX and ABY. This may have been an oversight when inserted. --- model/ftn/w3iogomd.ftn | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/model/ftn/w3iogomd.ftn b/model/ftn/w3iogomd.ftn index 787b7be70..955be59d3 100644 --- a/model/ftn/w3iogomd.ftn +++ b/model/ftn/w3iogomd.ftn @@ -1145,6 +1145,8 @@ !/ 01-Mar-2018 : Removed RTD code (now used in post ( version 6.02 ) !/ processing code) !/ 22-Aug-2018 : Add WBT parameter ( version 6.06 ) +!/ 25-Sep-2019 : Corrected th2m and sth2m ( version 6.07 ) +!/ calculations. (J Dykes, NRL) !/ ! 1. Purpose : ! @@ -1433,8 +1435,9 @@ AB (JSEA) = AB (JSEA) + A(ITH,IK,JSEA) ABX(JSEA) = ABX(JSEA) + A(ITH,IK,JSEA)*ECOS(ITH) ABY(JSEA) = ABY(JSEA) + A(ITH,IK,JSEA)*ESIN(ITH) - ABX2(JSEA) = ABX2(JSEA) + A(ITH,IK,JSEA)*EC2(ITH) - ABY2(JSEA) = ABY2(JSEA) + A(ITH,IK,JSEA)*ES2(ITH) +! Using trig identities to represent cos2theta and sin2theta. + ABX2(JSEA) = ABX2(JSEA) + A(ITH,IK,JSEA)*(2*EC2(ITH) - 1) + ABY2(JSEA) = ABY2(JSEA) + A(ITH,IK,JSEA)*(2*ESC(ITH)) ABYX(JSEA) = ABYX(JSEA) + A(ITH,IK,JSEA)*ESC(ITH) IF (ITH.LE.NTH/2) THEN ABST(JSEA) = ABST(JSEA) + & From 7823bd245ed98df295ac8b6c437903e131101666 Mon Sep 17 00:00:00 2001 From: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Thu, 10 Oct 2019 14:52:45 -0400 Subject: [PATCH 08/13] Revert "Corrected th2m and sth2m calculations. (#103)" (#111) This reverts commit 35040048983087cc76ab3858a747a356625e917f. --- model/ftn/w3iogomd.ftn | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/model/ftn/w3iogomd.ftn b/model/ftn/w3iogomd.ftn index 955be59d3..787b7be70 100644 --- a/model/ftn/w3iogomd.ftn +++ b/model/ftn/w3iogomd.ftn @@ -1145,8 +1145,6 @@ !/ 01-Mar-2018 : Removed RTD code (now used in post ( version 6.02 ) !/ processing code) !/ 22-Aug-2018 : Add WBT parameter ( version 6.06 ) -!/ 25-Sep-2019 : Corrected th2m and sth2m ( version 6.07 ) -!/ calculations. (J Dykes, NRL) !/ ! 1. Purpose : ! @@ -1435,9 +1433,8 @@ AB (JSEA) = AB (JSEA) + A(ITH,IK,JSEA) ABX(JSEA) = ABX(JSEA) + A(ITH,IK,JSEA)*ECOS(ITH) ABY(JSEA) = ABY(JSEA) + A(ITH,IK,JSEA)*ESIN(ITH) -! Using trig identities to represent cos2theta and sin2theta. - ABX2(JSEA) = ABX2(JSEA) + A(ITH,IK,JSEA)*(2*EC2(ITH) - 1) - ABY2(JSEA) = ABY2(JSEA) + A(ITH,IK,JSEA)*(2*ESC(ITH)) + ABX2(JSEA) = ABX2(JSEA) + A(ITH,IK,JSEA)*EC2(ITH) + ABY2(JSEA) = ABY2(JSEA) + A(ITH,IK,JSEA)*ES2(ITH) ABYX(JSEA) = ABYX(JSEA) + A(ITH,IK,JSEA)*ESC(ITH) IF (ITH.LE.NTH/2) THEN ABST(JSEA) = ABST(JSEA) + & From 8d26126cc9ec6ed7df4e1484e85199d37ade28d4 Mon Sep 17 00:00:00 2001 From: wx21rph Date: Fri, 18 Oct 2019 15:02:16 +0000 Subject: [PATCH 09/13] Solving bugs in wmupdtmd.ftn for curvi interp --- model/ftn/wmupdtmd.ftn | 160 ++++++++++++++++++++++++++++------------- 1 file changed, 111 insertions(+), 49 deletions(-) diff --git a/model/ftn/wmupdtmd.ftn b/model/ftn/wmupdtmd.ftn index 639dc6678..3c541c71e 100644 --- a/model/ftn/wmupdtmd.ftn +++ b/model/ftn/wmupdtmd.ftn @@ -1167,7 +1167,7 @@ IYFN, IXS0, IXSN, IYS0, IYSN, IXS, & MXA, MYA, J, J1, J2, IXC, IYC, JJ, & JX, JY - INTEGER :: NPOIX, NPOIY, I, IFIELDS !RP + INTEGER :: NPOIX, NPOIY, I, IFIELDS,curvi !RP !/S INTEGER, SAVE :: IENT = 0 INTEGER, ALLOCATABLE :: NXA(:,:), NYA(:,:) @@ -1221,16 +1221,7 @@ MAPI => GRIDS(JMOD)%MAPSTA ICLOSE => GRIDS(JMOD)%ICLOSE -!XXX RPH NEW HERE - - ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) - NXA = 0 - RXA = 0. - ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) - NYA = 0 - RYA = 0. - - +! IF ( ICLOSE .EQ. ICLOSE_TRPL ) THEN IF ( IMPROC.EQ.NMPERR ) WRITE(MDSE,*)'SUBROUTINE WMUPDV IS'// & ' NOT YET ADAPTED FOR TRIPOLE GRIDS. STOPPING NOW.' @@ -1245,8 +1236,22 @@ ! VX = UNDEF VY = UNDEF +!XXX + + write(124,*) '-----STARTING WMUPDV ------ ' + write(124,*) GRIDS(IMOD)%GTYPE, CLGTYPE + write(124,*) GRIDS(JMOD)%GTYPE, CLGTYPE + CURVI=0 + IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & + GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN + CURVI=1 + write(124,*) 'CURVILINEAR GRID CASE' + endif +!XXX + ! ! 1. Case of identical resolution and coinciding grids --------------- / + IF(CURVI .EQ. 0) THEN ! IF ( ABS(SX/SXI-1.) .LT. 1.E-3 .AND. & ABS(SY/SYI-1.) .LT. 1.E-3 .AND. & @@ -1300,6 +1305,7 @@ RETURN ! END IF + END IF !CURVI ! ! 2. General case --------------------------------------------------- / ! @@ -1316,6 +1322,19 @@ YGRDC => GRIDS(IMOD)%YGRD !LATS FOR CURVI GRID !HPFAC => GRIDS(IMOD)%HPFAC !DELTAS IN LON FOR CURVI GRID !HQFAC => GRIDS(IMOD)%HQFAC !DELTAS IN LAT FOR CURVI GRID +! + write(124,*) ' CURVILINEAR GRID INTERPOLATION' +! +! FOR NOW ONLY INTERPOLATION NOT AVERAGING THEN MXA=2 + MXA=2 + MYA=2 + ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) + NXA = 0 + RXA = 0. + ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) + NYA = 0 + RYA = 0. + !IS THE TOLERANCE USED TO DETERMINE IF TWO VALUES ARE EQUAL IN LOCATION DTOLER = 1E-5 ! 2.a.1 running over the curvilinear grid @@ -1370,9 +1389,9 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MXA+1,'I5,',MXA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NX, MXA ! -! XXX ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) -! XXX NXA = 0 -! XXX RXA = 0. + ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) + NXA = 0 + RXA = 0. ! IF ( MXA .EQ. 2 ) THEN ! @@ -1479,9 +1498,9 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MYA+1,'I5,',MYA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NY, MYA ! -! XXX ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) -! XXX NYA = 0 -! XXX RYA = 0. + ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) + NYA = 0 + RYA = 0. ! IF ( MYA .EQ. 2 ) THEN ! @@ -1800,7 +1819,7 @@ MXA, MYA, J, J1, J2, IXC, IYC, JJ, & JX, JY - INTEGER :: NPOIX, NPOIY, I !RP + INTEGER :: NPOIX, NPOIY, I, CURVI !RP !/S INTEGER, SAVE :: IENT = 0 INTEGER, ALLOCATABLE :: NXA(:,:), NYA(:,:) @@ -1843,19 +1862,7 @@ MAP => GRIDS(IMOD)%MAPSTA MAPI => GRIDS(JMOD)%MAPSTA ICLOSE => GRIDS(JMOD)%ICLOSE - - -!XXX RPH NEW HERE=================================== - - ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) - NXA = 0 - RXA = 0. - ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) - NYA = 0 - RYA = 0. -!==================================================== - - +! IF ( ICLOSE .EQ. ICLOSE_TRPL ) THEN IF ( IMPROC.EQ.NMPERR ) WRITE(MDSE,*)'SUBROUTINE WMUPDS IS'// & ' NOT YET ADAPTED FOR TRIPOLE GRIDS. STOPPING NOW.' @@ -1868,9 +1875,26 @@ ! 0.b Initialize fields ! FD = UNDEF + + +!XXX + + write(124,*) '-----STARTING WMUPDV ------ ' + write(124,*) GRIDS(IMOD)%GTYPE, CLGTYPE + write(124,*) GRIDS(JMOD)%GTYPE, CLGTYPE + CURVI=0 + IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & + GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN + CURVI=1 + write(124,*) 'CURVILINEAR GRID CASE' + endif +!XXX + + ! ! 1. Case of identical resolution and coinciding grids --------------- / ! + IF(CURVI .EQ. 0) THEN IF ( ABS(SX/SXI-1.) .LT. 1.E-3 .AND. & ABS(SY/SYI-1.) .LT. 1.E-3 .AND. & ABS(MOD((ABS(X0-X0I))/SX+0.5,1.)-0.5) .LT. 1.E-2 .AND. & @@ -1923,6 +1947,7 @@ RETURN ! END IF + END IF !CURVI ! ! 2. General case --------------------------------------------------- / ! @@ -1941,6 +1966,17 @@ YGRDC => GRIDS(IMOD)%YGRD !LATS FOR CURVI GRID !HPFAC => GRIDS(IMOD)%HPFAC !DELTAS IN LON FOR CURVI GRID !HQFAC => GRIDS(IMOD)%HQFAC !DELTAS IN LAT FOR CURVI GRID + +! FOR NOW ONLY INTERPOLATION NOT AVERAGING THEN MXA=2 + MXA=2 + MYA=2 + ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) + NXA = 0 + RXA = 0. + ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) + NYA = 0 + RYA = 0. +! !IS THE TOLERANCE USED TO DETERMINE IF TWO VALUES ARE EQUAL IN LOCATION DTOLER = 1E-5 ! 2.a.2 running over the curvilinear grid @@ -1974,9 +2010,9 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MXA+1,'I5,',MXA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NX, MXA ! -! ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) -! NXA = 0 -! RXA = 0. + ALLOCATE ( NXA(NX,0:MXA) , RXA(NX,MXA) ) + NXA = 0 + RXA = 0. ! ! IF ( MXA .EQ. 2 ) THEN @@ -2082,10 +2118,9 @@ !/T1 WRITE (FORMAT1,'(A,I2,A,I2,A)') "'(10X,",MYA+1,'I5,',MYA+1,"F6.2)'" !/T1 WRITE (MDST,9021) NY, MYA ! -! XXX RPH COMMENTIG OUT and adding these lines ad the top -! ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) -! NYA = 0 -! RYA = 0. + ALLOCATE ( NYA(NY,0:MYA) , RYA(NY,MYA) ) + NYA = 0 + RYA = 0. ! ! IF ( MYA .EQ. 2 ) THEN @@ -2451,34 +2486,38 @@ ! F IS ASSUMED TO BE ON A REGULAR GRID, WITH THE GRID X VALUES SPECIFIED ! BY XARRAY WITH DIMENSION X_LEN ! AND THE GRID Y VALUES SPECIFIED BY YARRAY WITH DIMENSION Y_LEN - +! INTEGER, INTENT(IN) :: X_LEN, Y_LEN REAL, DIMENSION(X_LEN), INTENT(IN) :: XARRAY REAL, DIMENSION(Y_LEN), INTENT(IN) :: YARRAY REAL, DIMENSION(X_LEN, Y_LEN), INTENT(IN) :: FUNC REAL, INTENT(IN) :: X,Y REAL, INTENT(IN), OPTIONAL :: DELTA - - REAL :: DENOM, X1, X2, Y1, Y2 INTEGER :: INX,JNX INX = XYCURVISEARCH(X_LEN, XARRAY, X, DELTA) JNX = XYCURVISEARCH(Y_LEN, YARRAY, Y, DELTA) - +! + IF (INX .GE. X_LEN) THEN + INX=INX-1 + END IF + IF (JNX .GE. Y_LEN) THEN + JNX=JNX-1 + END IF +! X1 = XARRAY(INX) X2 = XARRAY(INX+1) - Y1 = YARRAY(JNX) Y2 = YARRAY(JNX+1) - +! DENOM = (X2 - X1)*(Y2 - Y1) - +! INTERPOLATE = (FUNC(INX,JNX)*(X2-X)*(Y2-Y) + & FUNC(INX+1,JNX)*(X-X1)*(Y2-Y) + & FUNC(INX,JNX+1)*(X2-X)*(Y-Y1)+ & FUNC(INX+1, JNX+1)*(X-X1)*(Y-Y1))/DENOM - +! END FUNCTION INTERPOLATE !======================================================================== @@ -2577,13 +2616,34 @@ INX = XYCURVISEARCH(X_LEN, XARRAY, X, DELTA) JNX = XYCURVISEARCH(Y_LEN, YARRAY, Y, DELTA) - +! +! IF (INX .GE. X_LEN) THEN +! X1 = XARRAY(INX-1) +! X2 = XARRAY(INX) +! ELSE +! X1 = XARRAY(INX) +! X2 = XARRAY(INX+1) +! END IF +! IF (JNX .GE. Y_LEN) THEN +! Y1 = YARRAY(JNX-1) +! Y2 = YARRAY(JNX) +! ELSE +! Y1 = YARRAY(JNX) +! Y2 = YARRAY(JNX+1) +! END IF +! + IF (INX .GE. X_LEN) THEN + INX=INX-1 + END IF + IF (JNX .GE. Y_LEN) THEN + JNX=JNX-1 + END IF +! X1 = XARRAY(INX) X2 = XARRAY(INX+1) - Y1 = YARRAY(JNX) Y2 = YARRAY(JNX+1) - +! DENOM = (X2 - X1)*(Y2 - Y1) C1=(X2-X)*(Y2-Y) C2=(X-X1)*(Y2-Y) @@ -2594,6 +2654,8 @@ VAL2 = (FUNC2(INX,JNX) *C1 + FUNC2(INX+1,JNX) *C2 + & FUNC2(INX,JNX+1)*C3 + FUNC2(INX+1,JNX+1)*C4)/DENOM +! +! write(123,*) X, Y,VAL1,VAL2 END SUBROUTINE INTERPOLATE2D !==================================================================== From 5ca01411869797d56c4e152d0dfd40e33866f3b0 Mon Sep 17 00:00:00 2001 From: wx21rph Date: Fri, 18 Oct 2019 20:28:46 +0000 Subject: [PATCH 10/13] Cleaning the code wmupdtmd.ftn for curvi interp --- model/ftn/wmupdtmd.ftn | 53 ++---------------------------------------- 1 file changed, 2 insertions(+), 51 deletions(-) diff --git a/model/ftn/wmupdtmd.ftn b/model/ftn/wmupdtmd.ftn index 3c541c71e..13770c833 100644 --- a/model/ftn/wmupdtmd.ftn +++ b/model/ftn/wmupdtmd.ftn @@ -329,13 +329,7 @@ CALL W3SETG ( IMOD, MDSE, MDST ) CALL W3SETI ( IMOD, MDSE, MDST ) ! -! XXX RPH -! write(900,*) "CALLING WMUPD2" - CALL WMUPD2 ( IMOD, J, JJ, IERR ) -! XXX RPH -! write(900,*) " WMUPD2 FINISH" - ! ! 4. Forcing input from CPL ----------------------------------------- / ! @@ -949,27 +943,17 @@ ! 2.c Wind speeds ! CASE (3) -! XXX RPH -! write(900,*) "CALLING WMUPDV FOR WIND" - CALL WMUPDV ( IMOD, INPUTS(IMOD)%WXN, INPUTS(IMOD)%WYN, & JMOD, INPUTS(JMOD)%WXN, INPUTS(JMOD)%WYN, & 0., ICONSW ) -! XXX RPH -! write(900,*) " WMUPDV getting out FOR WIND" +! IF ( IDINP(IMOD,J) .EQ. 'WNS' ) CALL WMUPDS & ( IMOD, INPUTS(IMOD)%DTN, & JMOD, INPUTS(JMOD)%DTN, 0. ) -! XXX RPH -! write(900,*) "IDINP(IMOD,J)= ",IDINP(IMOD,J) - ! ! 2.d Ice concentrations ! CASE (4) -! XXX RPH - !write(900,*) "CALLING WMUPDS FOR ICE CONCENTRTION" - CALL WMUPDS ( IMOD, INPUTS(IMOD)%ICEI, & JMOD, INPUTS(JMOD)%ICEI, 0. ) IF ( IDINP(IMOD,J) .EQ. 'ISI' ) CALL WMUPDS & @@ -1220,7 +1204,6 @@ MAP => GRIDS(IMOD)%MAPSTA MAPI => GRIDS(JMOD)%MAPSTA ICLOSE => GRIDS(JMOD)%ICLOSE - ! IF ( ICLOSE .EQ. ICLOSE_TRPL ) THEN IF ( IMPROC.EQ.NMPERR ) WRITE(MDSE,*)'SUBROUTINE WMUPDV IS'// & @@ -1235,20 +1218,7 @@ ! 0.b Initialize fields ! VX = UNDEF - VY = UNDEF -!XXX - - write(124,*) '-----STARTING WMUPDV ------ ' - write(124,*) GRIDS(IMOD)%GTYPE, CLGTYPE - write(124,*) GRIDS(JMOD)%GTYPE, CLGTYPE - CURVI=0 - IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & - GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN - CURVI=1 - write(124,*) 'CURVILINEAR GRID CASE' - endif -!XXX - + VY = UNDEF ! ! 1. Case of identical resolution and coinciding grids --------------- / IF(CURVI .EQ. 0) THEN @@ -1323,7 +1293,6 @@ !HPFAC => GRIDS(IMOD)%HPFAC !DELTAS IN LON FOR CURVI GRID !HQFAC => GRIDS(IMOD)%HQFAC !DELTAS IN LAT FOR CURVI GRID ! - write(124,*) ' CURVILINEAR GRID INTERPOLATION' ! ! FOR NOW ONLY INTERPOLATION NOT AVERAGING THEN MXA=2 MXA=2 @@ -1875,22 +1844,6 @@ ! 0.b Initialize fields ! FD = UNDEF - - -!XXX - - write(124,*) '-----STARTING WMUPDV ------ ' - write(124,*) GRIDS(IMOD)%GTYPE, CLGTYPE - write(124,*) GRIDS(JMOD)%GTYPE, CLGTYPE - CURVI=0 - IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & - GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN - CURVI=1 - write(124,*) 'CURVILINEAR GRID CASE' - endif -!XXX - - ! ! 1. Case of identical resolution and coinciding grids --------------- / ! @@ -2655,8 +2608,6 @@ VAL2 = (FUNC2(INX,JNX) *C1 + FUNC2(INX+1,JNX) *C2 + & FUNC2(INX,JNX+1)*C3 + FUNC2(INX+1,JNX+1)*C4)/DENOM ! -! write(123,*) X, Y,VAL1,VAL2 - END SUBROUTINE INTERPOLATE2D !==================================================================== From 950c352d29d719b93fb148eba50625e43fc2bb30 Mon Sep 17 00:00:00 2001 From: wx21rph Date: Tue, 29 Oct 2019 21:59:34 +0000 Subject: [PATCH 11/13] wmupdtmd.ftn eddited, ready for push --- model/ftn/wmupdtmd.ftn | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/model/ftn/wmupdtmd.ftn b/model/ftn/wmupdtmd.ftn index 13770c833..7d94ecacd 100644 --- a/model/ftn/wmupdtmd.ftn +++ b/model/ftn/wmupdtmd.ftn @@ -1151,7 +1151,7 @@ IYFN, IXS0, IXSN, IYS0, IYSN, IXS, & MXA, MYA, J, J1, J2, IXC, IYC, JJ, & JX, JY - INTEGER :: NPOIX, NPOIY, I, IFIELDS,curvi !RP + INTEGER :: NPOIX, NPOIY, I, IFIELDS,CURVI !RP !/S INTEGER, SAVE :: IENT = 0 INTEGER, ALLOCATABLE :: NXA(:,:), NYA(:,:) @@ -1220,6 +1220,12 @@ VX = UNDEF VY = UNDEF ! + CURVI=0 + IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & + GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN + CURVI=1 + END IF + ! 1. Case of identical resolution and coinciding grids --------------- / IF(CURVI .EQ. 0) THEN ! @@ -1845,6 +1851,12 @@ ! FD = UNDEF ! + CURVI=0 + IF ( GRIDS(IMOD)%GTYPE .EQ. CLGTYPE .OR. & + GRIDS(JMOD)%GTYPE .EQ. CLGTYPE ) THEN + CURVI=1 + END IF + ! 1. Case of identical resolution and coinciding grids --------------- / ! IF(CURVI .EQ. 0) THEN @@ -2569,21 +2581,6 @@ INX = XYCURVISEARCH(X_LEN, XARRAY, X, DELTA) JNX = XYCURVISEARCH(Y_LEN, YARRAY, Y, DELTA) -! -! IF (INX .GE. X_LEN) THEN -! X1 = XARRAY(INX-1) -! X2 = XARRAY(INX) -! ELSE -! X1 = XARRAY(INX) -! X2 = XARRAY(INX+1) -! END IF -! IF (JNX .GE. Y_LEN) THEN -! Y1 = YARRAY(JNX-1) -! Y2 = YARRAY(JNX) -! ELSE -! Y1 = YARRAY(JNX) -! Y2 = YARRAY(JNX+1) -! END IF ! IF (INX .GE. X_LEN) THEN INX=INX-1 From c4795af2c5a66afd0d50e50046bd0ec4f0036a32 Mon Sep 17 00:00:00 2001 From: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Fri, 1 Nov 2019 12:03:42 -0400 Subject: [PATCH 12/13] Update ww3_ounf.ftn Making INTEGER, INTENT(INOUT) :: NCIDS(NOGRP,NGRPP,NOSWLL + 1) allows for NOSWLL different to the default =5, which can be the case when using the NCO switch (NOSWLL=3). Bugfix suggested by @CarstenHansen --- model/ftn/ww3_ounf.ftn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/ftn/ww3_ounf.ftn b/model/ftn/ww3_ounf.ftn index 571fb2123..6a68c51d7 100644 --- a/model/ftn/ww3_ounf.ftn +++ b/model/ftn/ww3_ounf.ftn @@ -757,7 +757,7 @@ CHARACTER(30) :: FILEPREFIX LOGICAL, INTENT(IN) :: TOGETHER LOGICAL, INTENT(IN) :: FLG2D(NOGRP,NGRPP) - INTEGER, INTENT(INOUT) :: NCIDS(NOGRP,NGRPP,6), S3 + INTEGER, INTENT(INOUT) :: NCIDS(NOGRP,NGRPP,NOSWLL + 1) CHARACTER*30,INTENT(IN) :: STRSTOPDATE !/ !/ ------------------------------------------------------------------- / From 5cfe0eb6f0a5f09e3861cedc123938527ec4525a Mon Sep 17 00:00:00 2001 From: Jose-Henrique Alves <47567389+ajhenrique@users.noreply.github.com> Date: Fri, 1 Nov 2019 12:10:30 -0400 Subject: [PATCH 13/13] Update ww3_ounf.nml --- regtests/ww3_tp1.3/input/ww3_ounf.nml | 1 - 1 file changed, 1 deletion(-) diff --git a/regtests/ww3_tp1.3/input/ww3_ounf.nml b/regtests/ww3_tp1.3/input/ww3_ounf.nml index 6619cf3d8..c83a8fd56 100644 --- a/regtests/ww3_tp1.3/input/ww3_ounf.nml +++ b/regtests/ww3_tp1.3/input/ww3_ounf.nml @@ -33,7 +33,6 @@ FIELD%TIMESTART = '19680606 000000' FIELD%TIMESTRIDE = '3600.' FIELD%TIMECOUNT = '1000' - FIELD%TIMESPLIT = 6 FIELD%LIST = 'DPT HS FC CFX' FIELD%PARTITION = '0 1 2' FIELD%TYPE = 4