From 0d3a60952afa6557c221bfe5df714ef2f4862265 Mon Sep 17 00:00:00 2001 From: Carsten Hansen Date: Fri, 28 Jun 2019 13:39:05 +0200 Subject: [PATCH 01/10] FB_rtd2: Output boundary conditions to rotated grids This feature requires the switch RTD. It allows the user to specify the pole of each nested grid for output of boundary conditions ('b.c.') directly to files nestI.ww3. The pole is specified as the I'th element of arrays BPLAT(1:9)/BPLON(1:9) in a namelist &ROTB. For e.g. I=2, a nested grid may be rotated with pole specified as '&ROTB BPLAT(2) = 20., BPLON(2) = -130., / ! b.c. to nest2.ww3' The default of &ROTB is output to standard spherical grids, BPLAT(1:9)=90, BPLON(1:9)=-180. With a value of BPLAT(I)==90, it is required that BPLON(I)=-180. In the forecast production at FCOO we run ww3_shel for a sequence of nested models where some (Arctic and Greenland) have rotated lat/lon coordinates, and others (Atlantic, European North-West Shelf and the Baltic) have standard lat/lon coordinates. Output b.c. to standard lat/lon is fairly simple even from a rotated model. Without the present feature you may output point spectra at the precise boundary points and post-process the output using ww3_bounc or ww3_bound to generate nest.ww3 for the nested model. But if output b.c. are to a rotated grid you would have to remap each point to standard lat/lon values before writing the ww3_grid.{inp,nml} file. Using the present feature a remapping of boundary conditions from rotated lat/lon coordinates to standard lat/lon values is performed internally in the ww3_grid program. These standard lat/lon values are stored in the mod_def file and will be written to nestI.ww3 during model runs. Effects of this feature: - There is no effect unless the switch RTD is set for compilation. - The contents of b.c. output files nestI.ww3 are not affected. - A model compiled with combined switches SMC and RTD is not affected. - The default grid pole is the geographic north of a standard lat/lon grid. This corresponds to a &ROTD namelist with values '&ROTD PLAT==90., PLON=-180., UNROT=.FALSE. /' (these are the only allowed values with PLAT==90). This default alleviates output b.c. to a rotated grid from a standard lat/lon grid. - Modified program ww3_grid and subroutine W3IOBC: The output b.c. coordinates are remapped to standard lat/lon and stored in the mod_def file. This remapping is not performed during runtime when writing to nestI.ww3. When PLAT==90, the array AnglD in the mod_def file is zero-valued. - Modified subroutine W3UBPT: Rotation of spectra is performed only if PLAT<90. - Modified program ww3_ounf: With PLAT==90 (if the grid is not remapped from an SMC grid), the NetCDF field output has no attributes related to a rotated pole grid mapping and does not contain the 2D variables standard_latitude and standard_longitude. - Modified input examples inp/ww3_grid.inp, nml/ww3_grid.nml, and added nml/namelists_GULF.nml. --- model/ftn/w3iobcmd.ftn | 55 +++++---- model/ftn/w3updtmd.ftn | 18 ++- model/ftn/ww3_grid.ftn | 217 ++++++++++++++++++++++++++++------- model/ftn/ww3_ounf.ftn | 206 +++++++++++++++++++++------------ model/inp/ww3_grid.inp | 20 ++++ model/nml/namelists_GULF.nml | 52 +++++++++ model/nml/ww3_grid.nml | 2 +- 7 files changed, 416 insertions(+), 154 deletions(-) create mode 100644 model/nml/namelists_GULF.nml diff --git a/model/ftn/w3iobcmd.ftn b/model/ftn/w3iobcmd.ftn index 9f6f9c94d8..6b21bd2c1b 100644 --- a/model/ftn/w3iobcmd.ftn +++ b/model/ftn/w3iobcmd.ftn @@ -104,6 +104,11 @@ !/ 01-Mar-2018 : Rotate boundary points and directions !/ of input spectra for rotated grids ( version 6.02 ) !/ +!/ 13-Jun-2019 : Under switch /RTD the grid may be either rotated or +!/ standard lat-lon with output boundary conditions to +!/ either rotated or standard lat-lon. +!/ (C. Hansen, FCOO) ( version 6.?? ) +!/ ! 1. Purpose : ! ! Write/read boundary conditions file(s). @@ -230,8 +235,6 @@ !/RTD !! Declare rotation angle and rotated lat/lon variables for !/RTD !! boundary points. JGLi12Jun2012 !/RTD REAL, ALLOCATABLE :: Anglbdy(:), ELatbdy(:), ELonbdy(:) - REAL, ALLOCATABLE :: XBPO2(:), YBPO2(:) -!/RTD REAL, ALLOCATABLE :: ANG(:) !/RTD REAL :: Spectr(NK*NTH) !/RTD REAL :: XRLIM, YRLIM REAL, ALLOCATABLE :: TMPSPC(:,:) @@ -312,25 +315,13 @@ !/T VERBPTBC, NBO(IFILE)-NBO(IFILE-1) ! ! - ! Temporary storage for boundary points: - ! The arrays are required to allow rotation of - ! x,y coordinate data under the /RTD option - ALLOCATE( XBPO2(NBO(IFILE)-NBO(IFILE-1)) ) - ALLOCATE( YBPO2(NBO(IFILE)-NBO(IFILE-1)) ) -!/RTD ALLOCATE( ANG(NBO(IFILE)-NBO(IFILE-1)) ) - XBPO2=XBPO(NBO(IFILE-1)+1:NBO(IFILE)) - YBPO2=YBPO(NBO(IFILE-1)+1:NBO(IFILE)) -! -!/RTD ! Convert rotated lat/lon back to standard pole grid. -!/RTD CALL W3EQTOLL ( YBPO(NBO(IFILE-1)+1:NBO(IFILE)), & -!/RTD XBPO(NBO(IFILE-1)+1:NBO(IFILE)), & -!/RTD YBPO2,XBPO2,ANG,POLAT,POLON, & -!/RTD NBO(IFILE)-NBO(IFILE-1) ) -!/RTD - ! Modified write below to write out XBPO2 and YBPO2, - ! instead of XBPO/YBPO +!/RTD ! By running the ww3_grid program with switch '/RTD', the arrays +!/RTD ! XBPO, YBPO was remapped to standard lat/lon and then stored +!/RTD ! in the grid definition file mod_def.* (CHA 20190613) +!/RTD ! WRITE (NDSL(IFILE)) & - XBPO2, YBPO2, & + (XBPO(I),I=NBO(IFILE-1)+1,NBO(IFILE)), & + (YBPO(I),I=NBO(IFILE-1)+1,NBO(IFILE)), & ((IPBPO(I,J),I=NBO(IFILE-1)+1,NBO(IFILE)),J=1,4),& ((RDBPO(I,J),I=NBO(IFILE-1)+1,NBO(IFILE)),J=1,4) ! @@ -340,10 +331,6 @@ !/T0 YBPO(I), (IPBPO(I,J),J=1,4), & !/T0 (RDBPO(I,J),J=1,4) !/T0 END DO -! - ! Deallocate temporary storage for boundary points - DEALLOCATE( XBPO2, YBPO2 ) -!/RTD DEALLOCATE( ANG ) ! END DO END IF @@ -404,6 +391,10 @@ ((IPBPI(I,J),I=1,NBI),J=1,4), & ((RDBPI(I,J),I=1,NBI),J=1,4) ! +!/RTD ! All boundary conditions position arrays XBPI, YBPI are defined +!/RTD ! in standard lat/lon coordinates. If Polat = 90. (and Polon = -180.), +!/RTD ! the b.c. positions don't need to be remapped (CHA 20190613) +!/RTD IF ( Polat < 90. ) THEN !/RTD !! Convert standard into rotated lat/lon. JGLi12Jun2012 !/RTD ALLOCATE ( Anglbdy(NBI), ELatbdy(NBI), ELonbdy(NBI) ) !/RTD @@ -433,6 +424,8 @@ !/RTD ENDDO !/RTD !/RTD DEALLOCATE ( Anglbdy, ELatbdy, ELonbdy ) +!/RTD +!/RTD END IF ! ( Polat < 90. ) !/RTD FLOK = .TRUE. IF (GTYPE .EQ. UNGTYPE) THEN @@ -541,11 +534,15 @@ !/DIST CG(1+(IS-1)/NTH,ISEA) !/DIST END DO ! -!/RTD ! Added spectral turning for rotated grid -!/RTD ! (rotate back to standard pole) -!/RTD Spectr = ABPOS(:,ISOUT) -!/RTD CALL W3ACTURN( NTH, NK, -AnglD(ISEA), Spectr ) -!/RTD ABPOS(:,ISOUT) = Spectr +!/RTD ! Under switch RTD, Polat = 90. means the grid is standard lat-lon and +!/RTD ! the spectra need not be rotated back (CHA 20190613) +!/RTD IF ( Polat < 90. ) THEN +!/RTD ! Added spectral turning for rotated grid +!/RTD ! (rotate back to standard pole) +!/RTD Spectr = ABPOS(:,ISOUT) +!/RTD CALL W3ACTURN( NTH, NK, -AnglD(ISEA), Spectr ) +!/RTD ABPOS(:,ISOUT) = Spectr +!/RTD END IF ! WRITE (NDSL(IFILE)) (ABPOS(IS,ISOUT),IS=1,NSPEC) ! diff --git a/model/ftn/w3updtmd.ftn b/model/ftn/w3updtmd.ftn index c89cb43fcd..0f0b2c9956 100644 --- a/model/ftn/w3updtmd.ftn +++ b/model/ftn/w3updtmd.ftn @@ -54,6 +54,9 @@ !/ and add ICEH initialization in W3UICE. !/ 13-Jan-2016 : Changed initial value of ICEDMAX ( version 5.08 ) !/ 26-Mar-2018 : Sea-point only Wnd/Cur input. JGLi ( version 6.04 ) +!/ 13-Jun-2019 : Under switch /RTD the grid may be standard lat-lon, and +!/ then spectral rotation is avoided. +!/ (C. Hansen, FCOO) ( version 6.?? ) !/ !/ Copyright 2009-2014 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -903,6 +906,7 @@ !/ 12-Jun-2012 : Add /RTD option or rotated grid option. !/ (Jian-Guo Li) ( version 4.06 ) !/ 06-Jun-2018 : Add DEBUGIOBC/SETUP/DEBUGW3ULEV ( version 6.04 ) +!/ 13-Jun-2019 : Rotation only if POLAT<90 (C.Hansen)( version 6.?? ) !/ ! 1. Purpose : ! @@ -955,7 +959,8 @@ !/ ------------------------------------------------------------------- / USE W3GDATMD, ONLY: NSPEC, MAPWN, SIG2, DDEN !/RTD !! Use rotation angle and action conversion sub. JGLi12Jun2012 -!/RTD USE W3GDATMD, ONLY: NK, NTH, NSPEC, AnglD +!/RTD !! PoLat < 90. indicates that the grid is really rotated (CHA 20190613) +!/RTD USE W3GDATMD, ONLY: NK, NTH, NSPEC, AnglD, PoLat !/RTD USE W3SERVMD, ONLY: W3ACTURN USE W3ADATMD, ONLY: CG USE W3ODATMD, ONLY: NBI, ABPI0, ABPIN, ISBPI, IPBPI, RDBPI, & @@ -1022,10 +1027,13 @@ END DO ! !/RTD !! Rotate the spectra if model is on rotated grid. JGLi12Jun2012 -!/RTD Spectr = BBPIN(:,IBI) -!/RTD AnglBP = AnglD(ISEA) -!/RTD CALL W3ACTURN( NTH, NK, AnglBP, Spectr ) -!/RTD BBPIN(:,IBI) = Spectr +!/RTD !! PoLat == 90. means that the grid is standard lat/lon (CHA 20190613) +!/RTD IF ( PoLat < 90. ) THEN +!/RTD Spectr = BBPIN(:,IBI) +!/RTD AnglBP = AnglD(ISEA) +!/RTD CALL W3ACTURN( NTH, NK, AnglBP, Spectr ) +!/RTD BBPIN(:,IBI) = Spectr +!/RTD END IF !/RTD ! END DO diff --git a/model/ftn/ww3_grid.ftn b/model/ftn/ww3_grid.ftn index 501ec4c544..d4e598a167 100644 --- a/model/ftn/ww3_grid.ftn +++ b/model/ftn/ww3_grid.ftn @@ -106,6 +106,7 @@ !/ 22-Jan-2020 : Update default values for IS2 ( version 7.05 ) !/ 20-Feb-2020 : Include Romero's dissipation in ST4 ( version 7.06 ) !/ 15-Apr-2020 : Adds optional opt-out for CFL on BC ( version 7.08 ) +!/ 24-Jun-2020 : RTD output b. c. to rotated grid. ( version 7.?? ) !/ !/ Copyright 2009-2013 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -479,7 +480,7 @@ ! correction for swell dispersion. ! !/PR3 Averaging ULTIMATE QUICKEST scheme. ! -! !/RTD Rotated regular lat-lon grid. +! !/RTD Rotated regular lat-lon grid. Special case is standard Polat=90. ! !/SMC UNO2 scheme on Spherical Multiple-Cell grid. ! !/ARC Append the Arctic part to the SMC grid. ! @@ -506,7 +507,7 @@ USE W3ODATMD, ONLY: W3NOUT, W3SETO, W3DMO5 USE W3IOGRMD, ONLY: W3IOGR USE W3SERVMD, ONLY: ITRACE, NEXTLN, EXTCDE -!/RTD USE W3SERVMD, ONLY: W3EQTOLL +!/RTD USE W3SERVMD, ONLY: W3EQTOLL, W3LLTOEQ !/ARC USE W3SERVMD, ONLY: W3LLTOEQ !/S USE W3SERVMD, ONLY: STRACE USE W3ARRYMD, ONLY: INA2R, INA2I @@ -629,6 +630,12 @@ !/ARC REAL, ALLOCATABLE :: XLONAC(:),YLATAC(:),ELONAC(:),ELATAC(:) ! !/RTD REAL, ALLOCATABLE :: AnglDin(:,:),StdLon(:,:),StdLat(:,:) +!/RTD ! 1-dim boundary sectors (CHA 20181212) +!/RTD REAL, ALLOCATABLE :: BDYLON(:), BDYLAT(:), & +!/RTD ELatbdy(:), ELonbdy(:), Anglbdy(:) +!/RTD ! If the destination grid for an output b.c. is rotated, its pole is: +!/RTD REAL :: bPolat, bPolon +!/RTD! REAL, ALLOCATABLE :: XGRDIN(:,:), YGRDIN(:,:) REAL, ALLOCATABLE :: ZBIN(:,:), OBSX(:,:), OBSY(:,:) REAL, ALLOCATABLE :: REFD(:,:), REFD2(:,:), REFS(:,:) @@ -803,6 +810,8 @@ !/RTD REAL :: PLAT, PLON !/RTD LOGICAL :: UNROT +!/RTD ! Poles of the output nested grids. Some may be rotated (CHA 20190613) +!/RTD REAL, DIMENSION(9) :: BPLAT, BPLON ! !/FLD1 NAMELIST /FLD1/ TAILTYPE, TAILLEV, TAILT1, TAILT2 !/FLD2 NAMELIST /FLD2/ TAILTYPE, TAILLEV, TAILT1, TAILT2 @@ -915,6 +924,8 @@ !/REF1 REFFREQPOW, REFUNSTSOURCE !/ !/RTD NAMELIST /ROTD/ PLAT, PLON, UNROT +!/RTD! Poles of destination grids for boundary conditions output (CHA 20190613) +!/RTD NAMELIST /ROTB/ BPLAT, BPLON !/ !/ ------------------------------------------------------------------- / !/ @@ -2182,11 +2193,33 @@ CTMAX = CFLTM ! !/RTD ! Set/ read in rotation values - these will be written out -!/RTD ! out later with the rest of the grid info -!/RTD PLAT = -999.9 -!/RTD PLON = -999.9 -!/RTD UNROT = .TRUE. +!/RTD ! later with the rest of the grid info +!/RTD ! Default is a non-rotated grid (CHA 20190613) +!/RTD PLAT = 90. +!/RTD PLON = -180. +!/RTD UNROT = .FALSE. !/RTD CALL READNL ( NDSS, 'ROTD', STATUS ) +!/RTD PLON = MOD( PLON + 180., 360. ) - 180. +!/RTD ! Ensure that a grid with pole at the geographic North is standard lat-lon +!/RTD IF ( PLAT == 90. .AND. ( PLON /= -180. .OR. UNROT ) ) THEN +!/RTD WRITE( NDSE, 1052 ) +!/RTD CALL EXTCDE ( 33 ) +!/RTD ENDIF +!/RTD ! Default poles of output b. c. are non-rotated: +!/RTD BPLAT = 90. +!/RTD BPLON = -180. +!/RTD CALL READNL ( NDSS, 'ROTB', STATUS ) +!/RTD ! A b. c. dest. grid with pole at the geographic North must be non-rotated +!/RTD DO I=1,9 +!/RTD IF ( BPLAT(I) == 90. ) THEN +!/RTD ! Require BPLON(I) == -180., but don't blaim the user if BPLON(I) == 180. +!/RTD IF ( BPLON(I) == 180. ) BPLON(I) = -180. +!/RTD IF ( BPLON(I) == -180. ) CYCLE +!/RTD END IF +!/RTD IF ( BPLAT(I) < 90. ) CYCLE +!/RTD WRITE( NDSE, 1053 ) +!/RTD CALL EXTCDE ( 34 ) +!/RTD END DO ! ! 6.n Set miscellaneous parameters (ice, seeding, numerics ... ) ! @@ -2761,7 +2794,7 @@ STDX, STDY, STDT, ICEHMIN, ICEHFAC, & ICEHINIT, ICEDISP, ICEHDISP, & ICESLN, ICEWIND, ICESNL, ICESDS, & - ICEDDISP,ICEFDISP, NOLEAP, TRCKCMPR, & + ICEDDISP, ICEFDISP, NOLEAP, TRCKCMPR, & BTBETA ELSE WRITE (NDSO,2966) CICE0, CICEN, LICE, PMOVE, XSEED, FLAGTR, & @@ -2777,6 +2810,8 @@ ! !/FLD1 WRITE(NDSO,2987) TAIL_ID, TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2 !/FLD2 WRITE(NDSO,2987) TAIL_ID, TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2 +!/RTD WRITE(NDSO,4991) PLAT, PLON, UNROT +!/RTD WRITE(NDSO,4992) BPLAT, BPLON ! WRITE (NDSO,918) END IF @@ -3463,24 +3498,32 @@ !Li ! !/RTD ! 7.h Calculate rotation angles for configs with rotated pole -!/RTD ! Check that pole lat/lon values have been read in -!/RTD ! and exit the program if they have not !/RTD PoLon = PLON !/RTD PoLat = PLAT !/RTD FLAGUNR = UNROT -!/RTD IF( PoLon .EQ. -999.9 .OR. PoLat .EQ. -999.9 ) THEN -!/RTD WRITE( NDSE, 1050 ) -!/RTD CALL EXTCDE ( 63 ) -!/RTD ENDIF +! !/RTD ! Default parameters PLON=-180, PLAT=90, UNROT=.FALSE. (CHA 20190613) +! !/RTD ! Check that pole lat/lon values have been read in +! !/RTD ! and exit the program if they have not +! !/RTD ! IF( PoLon .EQ. -999.9 .OR. PoLat .EQ. -999.9 ) THEN +! !/RTD ! WRITE( NDSE, 1050 ) +! !/RTD ! CALL EXTCDE ( 63 ) +! !/RTD ! ENDIF !/RTD !/RTD ALLOCATE( AnglDin(NX,NY) ) -!/RTD ALLOCATE(StdLat(NX,NY), StdLon(NX,NY)) +!/RTD ! For standard lat-lon the rotation angles are zero (CHA 20190613) +!/RTD IF ( PoLat == 90. ) THEN +!/RTD AnglDin = 0. +!/RTD ELSE +!/RTD ALLOCATE(StdLat(NX,NY), StdLon(NX,NY)) !/RTD -!/RTD ! Calculate rotation angles; (StdLon/Lat are returned, but not used) -!/RTD ! The regular grid X/YGRDIN are used as equatorial lon and lat -!/RTD CALL W3EQTOLL( YGRDIN, XGRDIN, StdLat, StdLon, AnglDin, & +!/RTD ! Calculate rotation angles; (StdLon/Lat are returned, but not used) +!/RTD ! The regular grid X/YGRDIN are used as equatorial lon and lat +!/RTD CALL W3EQTOLL( YGRDIN, XGRDIN, StdLat, StdLon, AnglDin, & !/RTD PoLat, PoLon, NX*NY ) !/RTD +!/RTD ! Clean up +!/RTD DEALLOCATE( StdLat, StdLon ) +!/RTD END IF !/RTD ! Write out rotation information !/RTD WRITE (NDSO,4203) PoLat, PoLon !/RTD WRITE (NDSO,4200) @@ -3490,8 +3533,6 @@ !/RTD IF ( FLAGUNR ) WRITE (NDSO,4204) !/RTD WRITE (NDSO,*) ' ' !/RTD -!/RTD ! Clean up -!/RTD DEALLOCATE( StdLat, StdLon ) ! !/SMC !! 7.i Read SMC grid cell and face integer arrays. !/SMC IF (FLGNML) THEN @@ -4975,9 +5016,20 @@ ! FIRST = .FALSE. ! +!/RTD IF ( NPO.NE.0 ) THEN +!/RTD ! Destination pole lat, lon from namelist (CHA 20190613) +!/RTD bPolat = BPLAT(NFBPO+1) +!/RTD bPolon = BPLON(NFBPO+1) +!/RTD END IF +!/RTD ! IF ( NFBPO.GE.1 .AND. ILOOP.EQ.2 ) THEN WRITE (NDSO,991) NFBPO, NBO(NFBPO) - NBO(NFBPO-1), & NBO2(NFBPO) - NBO2(NFBPO-1) +!/RTD ! Print dest. Pole lat/lon if either the dest or present grid is rotated +!/RTD ! (CHA 20190626) +!/RTD IF ( BPLAT(NFBPO) < 90. .OR. Polat < 90. ) & +!/RTD WRITE (NDSO,1991) BPLAT(NFBPO), BPLON(NFBPO) +!/RTD ! !/O1 IF ( NBO(NFBPO) - NBO(NFBPO-1) .EQ. 1 ) THEN !/O1 IF ( FLAGLL ) THEN !/O1 WRITE (NDSO,992) @@ -5040,13 +5092,73 @@ ! ! ... Loop over line segment - - - - - - - - - - - - - - - - - - - - - ! +!/RTD ! If either base or destination grid is rotated lat-lon (CHA 20190613) +!/RTD IF ( allocated(BDYLON) .eqv. .TRUE. ) THEN +!/RTD deallocate( BDYLON, BDYLAT ) +!/RTD IF ( bPolat < 90. .OR. Polat < 90. ) & +!/RTD deallocate( ELatbdy, ELonbdy, Anglbdy ) +!/RTD END IF +!/RTD allocate( BDYLON(NPO), BDYLAT(NPO)) +!/RTD IF ( bPolat < 90. .OR. Polat < 90. ) & +!/RTD allocate( ELatbdy(NPO), ELonbdy(NPO), Anglbdy(NPO) ) +!/RTD ! !/T WRITE (NDST,9090) ! DO IP=1, NPO ! XO = XO0 + REAL(IP-1)*DXO YO = YO0 + REAL(IP-1)*DYO -! +!/RTD ! +!/RTD ! Boundary points are specified in coordinates of the destination grid +!/RTD ! +!/RTD ! Collect the line segment points into arrays +!/RTD BDYLON(IP) = XO +!/RTD BDYLAT(IP) = YO +!/RTD ! Close the loop before calculating rotated lat-lon coordinates. +!/RTD END DO +!/RTD +!/RTD ! Create one or two sets of the segment points: +!/RTD ! 1. (BDYLAT, BDYLON) in standard lat-lon coordinates, +!/RTD ! 2. Also (ELatbdy, ELonbdy) in case the base grid is rotated +!/RTD +!/RTD IF ( bPolat < 90. ) THEN +!/RTD ! The destination grid is rotated (std->rot or rot->rot) +!/RTD ! Change BDYLAT, BDYLON to their standard lat-lon positions +!/RTD ! Let ELatbdy,ELonbdy contain the rotated lat-lon coordinates +!/RTD ELatbdy(:) = BDYLAT(:) +!/RTD ELonbdy(:) = BDYLON(:) +!/RTD CALL W3EQTOLL ( ELatbdy, ELonbdy, BDYLAT, BDYLON, & +!/RTD & Anglbdy, bPolat, bPolon, NPO ) +!/RTD ! Let the standard longitudes BDYLON be within the range [-180.,180.[ +!/RTD ! or [0., 360.[ depending on the grid pole +!/RTD IF ( Polon < -90. .OR. Polon > 90. ) THEN +!/RTD BDYLON(:) = MOD( BDYLON(:) + 180., 360. ) - 180. +!/RTD ELSE +!/RTD BDYLON(:) = MOD( BDYLON(:) + 360., 360. ) +!/RTD END IF +!/RTD END IF ! bPolat < 90. +!/RTD ! From now, BDYLAT, BDYLON are defined in standard lat-lon coordinates +!/RTD ! +!/RTD IF ( Polat < 90. ) THEN +!/RTD ! The base grid is rotated (rot->std or rot->rot) +!/RTD ! Find lat-lon in coordinates of the rotated base grid +!/RTD CALL W3LLTOEQ ( BDYLAT, BDYLON, ELatbdy, ELonbdy, & +!/RTD & Anglbdy, Polat, Polon, NPO ) +!/RTD END IF +!/RTD ! +!/RTD ! Take up again the loop over the line segment points +!/RTD DO IP=1, NPO +!/RTD IF ( Polat < 90. ) THEN +!/RTD ! The base grid is rotated (rot->std, rot->rot) +!/RTD ! (The std. lat-lon values BDYLAT, BDYLON go to YBPO, XBPO) +!/RTD XO = ELonbdy(IP) +!/RTD YO = ELatbdy(IP) +!/RTD ELSE +!/RTD ! The base grid is standard geographic (std->rot or std->std) +!/RTD XO = BDYLON(IP) +!/RTD YO = BDYLAT(IP) +!/RTD END IF +! ! ... Compute bilinear remapping weights ! INGRID = W3GRMP( GSU, XO, YO, IXR, IYR, RD ) @@ -5065,22 +5177,29 @@ ! ! ... Check if point not on land ! - IF ( ( MAPSTA(IYR(1),IXR(1)).GT.0 .AND. & - RD(1).GT.0.05 ) .OR. & - ( MAPSTA(IYR(2),IXR(2)).GT.0 .AND. & - RD(2).GT.0.05 ) .OR. & - ( MAPSTA(IYR(3),IXR(3)).GT.0 .AND. & - RD(3).GT.0.05 ) .OR. & - ( MAPSTA(IYR(4),IXR(4)).GT.0 .AND. & - RD(4).GT.0.05 ) ) THEN + IF ( ( MAPSTA(IYR(1),IXR(1)).GT.0 .AND. & + RD(1).GT.0.05 ) .OR. & + ( MAPSTA(IYR(2),IXR(2)).GT.0 .AND. & + RD(2).GT.0.05 ) .OR. & + ( MAPSTA(IYR(3),IXR(3)).GT.0 .AND. & + RD(3).GT.0.05 ) .OR. & + ( MAPSTA(IYR(4),IXR(4)).GT.0 .AND. & + RD(4).GT.0.05 ) ) THEN ! ! ... Check storage and store coordinates ! - NBOTOT = NBOTOT + 1 - IF ( ILOOP .EQ. 1 ) CYCLE + NBOTOT = NBOTOT + 1 + IF ( ILOOP .EQ. 1 ) CYCLE ! - XBPO(NBOTOT) = XO - YBPO(NBOTOT) = YO +!/RTD ! BDYLAT, BDYLON contain Y0, X0 mapped to standard lat/lon. I choose +!/RTD ! to store the BDYLAT, BDYLON in the mod_def file. Then we can avoid +!/RTD ! remapping in model runtime when controlling the nest data (CHA 20190613) +!/RTD IF ( Polat < 90. ) THEN +!/RTD XO = BDYLON(IP) +!/RTD YO = BDYLAT(IP) +!/RTD END IF + XBPO(NBOTOT) = XO + YBPO(NBOTOT) = YO ! ! ... Interpolation factors ! @@ -5095,9 +5214,9 @@ RDTOT = RDTOT + RDBPO(NBOTOT,J) END DO ! - DO J=1, 4 - RDBPO(NBOTOT,J) = RDBPO(NBOTOT,J) / RDTOT - END DO + DO J=1, 4 + RDBPO(NBOTOT,J) = RDBPO(NBOTOT,J) / RDTOT + END DO ! !/T WRITE (NDST,9092) RDTOT, (RDBPO(NBOTOT,J),J=1,4) ! @@ -5130,11 +5249,11 @@ ! ! ... Error output ! - ELSE - WRITE (NDSE,995) FACTOR*XO, FACTOR*YO - END IF + ELSE + WRITE (NDSE,995) FACTOR*XO, FACTOR*YO + END IF ELSE - WRITE (NDSE,994) FACTOR*XO, FACTOR*YO + WRITE (NDSE,994) FACTOR*XO, FACTOR*YO END IF ! END DO @@ -5800,7 +5919,11 @@ ! 2987 FORMAT ( ' &FLD TAIL_ID =',I1,' TAIL_LEV =',F5.4,' TAILT1 =',F5.3,& ' TAILT2 =',F5.3,' /') - +!/RTD +!/RTD 4991 FORMAT ( ' &ROTD PLAT =', F6.2,', PLON =', F7.2,', UNROT =',L3,' /') +!/RTD 4992 FORMAT ( ' &ROTB BPLAT =',9(F6.1,",")/ & +!/RTD ' BPLON =',9(F6.1,","),' /') + 3000 FORMAT (/' The spatial grid: '/ & ' --------------------------------------------------'/ & /' Grid type : ',A) @@ -5923,6 +6046,7 @@ ' --------------------------------------------------') 991 FORMAT ( ' File nest',I1,'.ww3 Number of points :',I6/ & ' Number of spectra :',I6) + 1991 FORMAT ( ' Dest. grid Polat:',F6.2,', Polon:',F8.2) 992 FORMAT (/' Nr.| Long. | Lat. '/ & ' -----|---------|---------') 1992 FORMAT (/' Nr.| Long. | Lat. ', & @@ -6040,9 +6164,12 @@ ' ONLY FIRST PROPAGATION SCHEME WILL BE USED: ') 1036 FORMAT (/' *** WAVEWATCH III ERROR IN W3GRID :'/ & ' ILLEGAL NUMBER OF !/ISn SWITCHES :',I3) -!/RTD 1050 FORMAT (/' *** WAVEWATCH III ERROR IN W3GRID :'/ & -!/RTD ' ROTATED POLE SWITCH IS SET (RTD), BUT'/ & -!/RTD ' PLAT/PLON NAMELIST VALUES NOT SET IN ROTD' ) +!/RTD 1052 FORMAT (/' *** WAVEWATCH III ERROR IN W3GRID :'/ & +!/RTD ' WITH NAMELIST VALUE PLAT == 90, PLON MUST BE -180'/ & +!/RTD ' AND UNROT MUST BE .FALSE.' ) +! +!/RTD 1053 FORMAT (/' *** WAVEWATCH III ERROR IN W3GRID :'/ & +!/RTD ' WITH NAMELIST VALUE BPLAT == 90, BPLON MUST BE -180') ! 1040 FORMAT ( ' Space-time extremes DX :',F10.2) 1041 FORMAT ( ' Space-time extremes DX :',F10.2) @@ -6258,7 +6385,9 @@ !/PR3 READ (NDS,NML=PRO3,END=801,ERR=802,IOSTAT=J) !/RTD CASE('ROTD') !/RTD READ (NDS,NML=ROTD,END=801,ERR=802,IOSTAT=J) -!/REF1 CASE('REF1') +!/RTD CASE('ROTB') +!/RTD READ (NDS,NML=ROTB,END=801,ERR=802,IOSTAT=J) +!/REF1 CASE('REF1') !/REF1 READ (NDS,NML=REF1,END=801,ERR=802,IOSTAT=J) !/IG1 CASE('SIG1') !/IG1 READ (NDS,NML=SIG1,END=801,ERR=802,IOSTAT=J) diff --git a/model/ftn/ww3_ounf.ftn b/model/ftn/ww3_ounf.ftn index 26650f84e6..87e8a6443b 100644 --- a/model/ftn/ww3_ounf.ftn +++ b/model/ftn/ww3_ounf.ftn @@ -32,6 +32,8 @@ !/ 12-Sep-2018 : Added extra partitioned fields ( version 6.06 ) !/ 25-Sep-2018 : Add WBT parameter ( version 6.06 ) !/ 28-Mar-2019 : Bugfix to NBIPART check. ( version 6.07 ) +!/ 13-Jun-2019 : Avoid lat2D, lon2D arrays when RTD option is applied to a +!/ standard grid (C. Hansen, FCOO) ( version ?.?? ) !/ !/ Copyright 2009-2013 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -114,6 +116,9 @@ !/DEBUG USE W3ODATMD, only : IAPROC !/ USE W3GDATMD + ! From W3GDATMD, these names are used in the main program: (CHA 20190621) + ! USE W3GDATMD, ONLY: W3NMOD, W3SETG + ! USE W3GDATMD, ONLY: GNAME, NX, NY, NSEA, E3DF, P2MSF, US3DF, USSPF USE W3WDATMD, ONLY: TIME, WLV, ICE, ICEH, ICEF, BERG, UST, USTDIR !/SETUP USE W3WDATMD, ONLY: ZETA_SETUP USE W3ADATMD, ONLY: DW, UA, UD, AS, CX, CY, HS, WLM, T0M1, THM, & @@ -743,6 +748,11 @@ !/RTD USE W3SERVMD, ONLY : W3THRTN, W3XYRTN, W3EQTOLL USE W3ARRYMD, ONLY : OUTA2I, PRTBLK USE W3GDATMD, ONLY : SIG, GTYPE, FLAGLL, MAPSTA, MAPST2 + ! From W3GDATMD, these names are also used: (CHA 20190621) + USE W3GDATMD, ONLY : NK, UNGTYPE, MAPSF, NTRI, CLGTYPE, RLGTYPE, & + XGRD, YGRD, SX, SY, X0, Y0, XYB, TRIGP, USSP_WN +!/RTD ! Rotated pole data from the mod_def file (CHA 20190613) +!/RTD USE W3GDATMD, ONLY : POLAT, POLON, FLAGUNR, AnglD !/T USE W3ODATMD, ONLY : NDST USE NETCDF IMPLICIT NONE @@ -811,13 +821,18 @@ LOGICAL :: FLFRQ, FLDIR, FEXIST, FREMOVE LOGICAL :: CUSTOMFRQ=.FALSE. !/T LOGICAL :: LTEMP(NGRPP) - +!/RTD ! RTDL == False for a standard lat-lon grid. Will be set to True if the +!/RTD ! grid is a regridded SMC dataset or the grid is rotated (CHA 20190613) +!/RTD LOGICAL :: RTDL = .FALSE. !/ !/ ------------------------------------------------------------------- / !/ ! !/S CALL STRACE (IENT, 'W3EXNC') ! +!/RTD ! Is the grid really rotated or a regridded SMC dataset (CHA 20190613) +!/RTD IF ( Polat < 90. .OR. SMCGRD ) RTDL = .True. +!/RTD ! !/T DO IFI=1, NOGRP !/T LTEMP = FLG2D(IFI,:) !/T WRITE (NDST,9000) IFI, LTEMP @@ -1042,7 +1057,8 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ! Former condition ( .NOT. FLAGUNR ), now ( RTDL ) (CHA 20190613): +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -1100,7 +1116,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -1387,7 +1403,7 @@ !/RTD ! Override standard direction comment !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD END IF VMIN = 0 @@ -1440,7 +1456,7 @@ !/RTD ! Override standard direction comment !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD END IF VMIN = 0 @@ -1648,7 +1664,7 @@ !/RTD ! Override standard direction comment !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD END IF UNITS = 'degree' @@ -1708,7 +1724,7 @@ !/RTD ! Override standard direction comment !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD END IF UNITS = 'degree' @@ -1869,7 +1885,7 @@ !/RTD ! Override standard direction comment !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD END IF VMIN = 0 @@ -1946,7 +1962,7 @@ !/RTD ! Override standard direction comment !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD END IF VMIN = 0 @@ -2221,7 +2237,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -2334,7 +2350,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -2373,7 +2389,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -2519,9 +2535,11 @@ VARND(2)='' VARND(3)='' !/RTD ! Override standard direction comment +!/RTD IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD VARND(3) = 'Rotated Pole Grid North' +!/RTD END IF VMIN = -3000 VMAX = 3000 ! @@ -2557,7 +2575,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -2623,23 +2641,27 @@ CALL W3S2XY ( NSEA, NSEA, NX+1, NY, TUSY(1:NSEA) & , MAPSF, XY ) ENDIF ! SMCGRD - DO ISEA=1, NSEA - CABS = SQRT(TUSX(ISEA)**2+TUSY(ISEA)**2) - IF ( CABS .NE. UNDEF ) THEN - TUSY(ISEA) = MOD ( 630. - & - RADE*ATAN2(TUSY(ISEA),TUSX(ISEA)) , 360. ) - ELSE - TUSY(ISEA) = UNDEF - END IF - TUSX(ISEA) = CABS - END DO - IF( SMCGRD ) THEN -!/SMC CALL W3S2XY_SMC( TUSX(:), X1 ) -!/SMC CALL W3S2XY_SMC( TUSY(:), X2 ) ! TODO: CHRISB: TUSY is in degrees....W3S2XY_SMC expects radians... - ELSE - CALL W3S2XY ( NSEA, NSEA, NX+1, NY,TUSX,MAPSF, X1 ) - CALL W3S2XY ( NSEA, NSEA, NX+1, NY,TUSY,MAPSF, X2 ) - ENDIF ! SMCGRD +! X1, X2 will not be output when NFIELD == 2 +! ( Like for .cur, .wnd, .ust, .taw, and .uss ) (CHA at FCOO 2019-06-13): + !! Commented out unnecessary statements below for time being + !! (...) X1,X2 are not actually written out below + !DO ISEA=1, NSEA + ! CABS = SQRT(TUSX(ISEA)**2+TUSY(ISEA)**2) + ! IF ( CABS .NE. UNDEF ) THEN + ! TUSY(ISEA) = MOD ( 630. - & + ! RADE*ATAN2(TUSY(ISEA),TUSX(ISEA)) , 360. ) + ! ELSE + ! TUSY(ISEA) = UNDEF + ! END IF + ! TUSX(ISEA) = CABS + ! END DO + !IF( SMCGRD ) THEN +!/SMC !CALL W3S2XY_SMC( TUSX(:), X1 ) +!/SMC !CALL W3S2XY_SMC( TUSY(:), X2 ) ! TODO: CHRISB: TUSY is in degrees....W3S2XY_SMC expects radians... + !ELSE + ! CALL W3S2XY ( NSEA, NSEA, NX+1, NY,TUSX,MAPSF, X1 ) + ! CALL W3S2XY ( NSEA, NSEA, NX+1, NY,TUSY,MAPSF, X2 ) + !ENDIF ! SMCGRD NFIELD=2 VARNM(1)='utus' VARNM(2)='vtus' @@ -2657,7 +2679,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -2714,7 +2736,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -2771,7 +2793,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -2862,7 +2884,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -2916,7 +2938,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -2972,7 +2994,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -3007,7 +3029,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -3050,7 +3072,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(2) = 'True North' !/RTD VARND(3) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD VARND(3) = 'Rotated Pole Grid North' !/RTD END IF @@ -3101,7 +3123,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -3133,7 +3155,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -3165,7 +3187,7 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' !/RTD END IF @@ -3194,7 +3216,7 @@ !/RTD ! Override standard direction comment !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD END IF VMIN = 0 @@ -3222,7 +3244,7 @@ !/RTD ! Override standard direction comment !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' -!/RTD ELSE IF ( .NOT. FLAGUNR ) THEN +!/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD END IF VMIN = 0 @@ -3570,13 +3592,15 @@ ! instanciates lon with x/lon for regular grid or nodes for unstructured mesh IF (.NOT.ALLOCATED(LON)) ALLOCATE(LON(NX)) !/RTD ! 2d longitude array for standard grid coordinates -!/RTD IF (.NOT.ALLOCATED(LON2D)) ALLOCATE(LON2D(NX,NY),LON2DEQ(NX,NY),ANGLD2D(NX,NY)) +!/RTD IF ( RTDL .AND. .NOT.ALLOCATED(LON2D)) & +!/RTD ALLOCATE(LON2D(NX,NY),LON2DEQ(NX,NY),ANGLD2D(NX,NY)) IF (.NOT.ALLOCATED(LAT)) THEN ! If regular grid, instanciates lat with y/lat IF (GTYPE.EQ.RLGTYPE) THEN ALLOCATE(LAT(NY)) !/RTD ! 2d latitude array for standard grid coordinates -!/RTD IF (.NOT.ALLOCATED(LAT2D)) ALLOCATE(LAT2D(NX,NY),LAT2DEQ(NX,NY)) +!/RTD IF ( RTDL .AND. .NOT.ALLOCATED(LAT2D)) & +!/RTD ALLOCATE(LAT2D(NX,NY),LAT2DEQ(NX,NY)) ! If unstructured mesh, instanciates lat with nodes ELSE ALLOCATE(LAT(NX)) @@ -3639,23 +3663,27 @@ !/RTD ANGLD2D, POLAT, POLON, RTDNY*RTDNX) !/SMC ENDIF ! SMCTYPE ELSE ! SMCGRD - SXD=DBLE(0.000001d0*DNINT(1d6*(DBLE(SX)) )) - SYD=DBLE(0.000001d0*DNINT(1d6*(DBLE(SY)) )) - X0D=DBLE(0.000001d0*DNINT(1d6*(DBLE(X0)) )) - Y0D=DBLE(0.000001d0*DNINT(1d6*(DBLE(Y0)) )) - DO I=1,NX - LON(I)=REAL(X0D+SXD*DBLE(I-1)) -!/RTD LON2DEQ(I,1:NY)=LON(I) - END DO - DO I=1,NY - LAT(I)=REAL(Y0D+SYD*DBLE(I-1)) -!/RTD LAT2DEQ(1:NX,I)=LAT(I) - END DO -!/RTD ! Calculate the standard grid coordinates -!/RTD DO I=1,NX -!/RTD CALL W3EQTOLL(LAT2DEQ(I,1:NY), LON2DEQ(I,1:NY), LAT2D(I,1:NY), & -!/RTD LON2D(I,1:NY), ANGLD2D(I,1:NY), POLAT, POLON, NY) -!/RTD END DO + SXD=DBLE(0.000001d0*DNINT(1d6*(DBLE(SX)) )) + SYD=DBLE(0.000001d0*DNINT(1d6*(DBLE(SY)) )) + X0D=DBLE(0.000001d0*DNINT(1d6*(DBLE(X0)) )) + Y0D=DBLE(0.000001d0*DNINT(1d6*(DBLE(Y0)) )) + DO I=1,NX + LON(I)=REAL(X0D+SXD*DBLE(I-1)) + END DO + DO I=1,NY + LAT(I)=REAL(Y0D+SYD*DBLE(I-1)) + END DO +!/RTD IF ( RTDL ) THEN +!/RTD ! Calculate the standard grid coordinates +!/RTD DO I=1,NX +!/RTD LON2DEQ(I,:)=LON(I) +!/RTD END DO +!/RTD DO I=1,NY +!/RTD LAT2DEQ(:,I)=LAT(I) +!/RTD END DO +!/RTD CALL W3EQTOLL(LAT2DEQ, LON2DEQ, LAT2D, LON2D, & +!/RTD ANGLD2D, POLAT, POLON, NY*NX) +!/RTD END IF ! RTDL WRITE(STR2,'(F12.0)') SY STR2=ADJUSTL(STR2) IRET=NF90_PUT_ATT(NCID,NF90_GLOBAL, & @@ -3736,11 +3764,13 @@ 'altitude_resolution','n/a') CALL CHECK_ERR(IRET) +!/RTD IF ( RTDL ) THEN !/RTD IRET=NF90_PUT_ATT(NCID,NF90_GLOBAL, & !/RTD 'grid_north_pole_latitude',POLAT) !/RTD IRET=NF90_PUT_ATT(NCID,NF90_GLOBAL, & !/RTD 'grid_north_pole_longitude',POLON) - +!/RTD END IF + CALL T2D(TIME,STARTDATE,IERR) WRITE(STRSTARTDATE,'(I4.4,A,4(I2.2,A),I2.2)') STARTDATE(1),'-',STARTDATE(2),'-', & STARTDATE(3),' ',STARTDATE(5),':',STARTDATE(6),':',STARTDATE(7) @@ -3771,13 +3801,15 @@ IRET=NF90_PUT_VAR(NCID,VARID(2),LAT(IY1:IYN)) CALL CHECK_ERR(IRET) ENDIF ! SMCGRD -!/RTD IRET=NF90_PUT_VAR(NCID,VARID(291),LON2D(IX1:IXN,IY1:IYN)) -!/RTD CALL CHECK_ERR(IRET) -!/RTD IRET=NF90_PUT_VAR(NCID,VARID(292),LAT2D(IX1:IXN,IY1:IYN)) -!/RTD CALL CHECK_ERR(IRET) +!/RTD IF ( RTDL ) THEN +!/RTD IRET=NF90_PUT_VAR(NCID,VARID(291),LON2D(IX1:IXN,IY1:IYN)) +!/RTD CALL CHECK_ERR(IRET) +!/RTD IRET=NF90_PUT_VAR(NCID,VARID(292),LAT2D(IX1:IXN,IY1:IYN)) +!/RTD CALL CHECK_ERR(IRET) +!/RTD END IF END IF - ! If spherical grid + ! If curvilinear grid IF (GTYPE.EQ.CLGTYPE) THEN IRET=NF90_PUT_VAR(NCID,VARID(1),LON2D(IX1:IXN,IY1:IYN)) CALL CHECK_ERR(IRET) @@ -3921,10 +3953,12 @@ CALL CHECK_ERR(IRET) END IF !/RTD +!/RTD IF ( RTDL ) THEN !/RTD ! Add grid mapping attribute for rotated pole grids: !/RTD IRET=NF90_PUT_ATT(NCID,VARID(IVAR),'grid_mapping', & !/RTD 'rotated_pole') !/RTD CALL CHECK_ERR(IRET) +!/RTD END IF !/RTD END DO ! @@ -4081,10 +4115,12 @@ CALL CHECK_ERR(IRET) END IF !/RTD -!/RTD ! Add grid mapping attribute for rotated pole grids: -!/RTD IRET=NF90_PUT_ATT(NCID,VARID(IVAR),'grid_mapping', & -!/RTD 'rotated_pole') -!/RTD CALL CHECK_ERR(IRET) +!/RTD IF ( RTDL ) THEN +!/RTD ! Add grid mapping attribute for rotated pole grids: +!/RTD IRET=NF90_PUT_ATT(NCID,VARID(IVAR),'grid_mapping', & +!/RTD 'rotated_pole') +!/RTD CALL CHECK_ERR(IRET) +!/RTD END IF !/RTD END DO IRET = NF90_ENDDEF(NCID) @@ -4714,7 +4750,11 @@ !-------------------------------------------------------------------------- SUBROUTINE W3CRNC (NCFILE, NCID, DIMID, DIMLN, VARID, & EXTRADIM, NCTYPE, MAPSTAOUT ) - USE W3GDATMD +! + ! From W3GDATMD, these names are used: (CHA 20190621) + USE W3GDATMD, ONLY : GTYPE, FLAGLL, UNGTYPE, CLGTYPE, RLGTYPE +!/RTD ! Rotated pole parameters from the mod_def file (CHA 20190613) +!/RTD USE W3GDATMD, ONLY : POLAT, POLON USE NETCDF USE W3TIMEMD @@ -4740,7 +4780,12 @@ ! CHARACTER :: ATTNAME*120,ATTVAL*120 +!/RTD ! RTDL == False for a standard lat-lon grid. Will be set to True if the +!/RTD ! grid is an SMC grid or the grid is rotated (CHA 20181212) +!/RTD LOGICAL :: RTDL = .FALSE. +!/RTD ! Is the grid really rotated or a regridded SMC dataset (CHA 20190613) +!/RTD IF ( Polat < 90. .OR. SMCGRD ) RTDL = .True. ! ! Creation in netCDF3 or netCDF4 ! @@ -4850,20 +4895,27 @@ IRET = NF90_DEF_VAR(NCID, 'latitude', NF90_FLOAT, DIMID(2), VARID(2)) END IF IRET=NF90_PUT_ATT(NCID,VARID(1),'units','degree_east') +!/RTD ! Is the grid really rotated or a regridded SMC dataset (CHA 20190613) +!/RTD IF ( .NOT. RTDL ) THEN IRET=NF90_PUT_ATT(NCID,VARID(1),'long_name','longitude') IRET=NF90_PUT_ATT(NCID,VARID(1),'standard_name','longitude') +!/RTD ELSE !/RTD ! Override the above for RTD pole: -!/RTD IRET=NF90_PUT_ATT(NCID,VARID(1),'long_name','longitude in rotated pole grid') -!/RTD IRET=NF90_PUT_ATT(NCID,VARID(1),'standard_name','grid_longitude') +!/RTD IRET=NF90_PUT_ATT(NCID,VARID(1),'long_name','longitude in rotated pole grid') +!/RTD IRET=NF90_PUT_ATT(NCID,VARID(1),'standard_name','grid_longitude') +!/RTD END IF IRET=NF90_PUT_ATT(NCID,VARID(1),'valid_min',-180.0) IRET=NF90_PUT_ATT(NCID,VARID(1),'valid_max',360.) ! IRET=NF90_PUT_ATT(NCID,VARID(2),'units','degree_north') +!/RTD IF ( .NOT. RTDL ) THEN IRET=NF90_PUT_ATT(NCID,VARID(2),'long_name','latitude') IRET=NF90_PUT_ATT(NCID,VARID(2),'standard_name','latitude') +!/RTD ELSE !/RTD ! Override the above for RTD pole: !/RTD IRET=NF90_PUT_ATT(NCID,VARID(2),'long_name','latitude in rotated pole grid') !/RTD IRET=NF90_PUT_ATT(NCID,VARID(2),'standard_name','grid_latitude') +!/RTD END IF IRET=NF90_PUT_ATT(NCID,VARID(2),'valid_min',-90.0) IRET=NF90_PUT_ATT(NCID,VARID(2),'valid_max',180.) ! @@ -4887,6 +4939,7 @@ !/RTD call CHECK_ERR(IRET) !/SMC ENDIF ELSE +!/RTD IF ( RTDL ) THEN !/RTD !Add secondary coordinate system linking rotated grid back to standard lat-lon !/RTD IRET = NF90_DEF_VAR(NCID, 'standard_longitude', NF90_FLOAT, (/ DIMID(2), DIMID(3)/), & !/RTD VARID(291)) @@ -4895,8 +4948,10 @@ !/RTD IRET = NF90_DEF_VAR(NCID, 'standard_latitude', NF90_FLOAT, (/ DIMID(2), DIMID(3)/), & !/RTD VARID(292)) !/RTD call CHECK_ERR(IRET) +!/RTD END IF ENDIF ! SMCGRD !/RTD +!/RTD IF ( RTDL ) THEN !/RTD ! Attributes for standard_longitude: !/RTD IRET=NF90_PUT_ATT(NCID,VARID(291),'units','degree_east') !/RTD IRET=NF90_PUT_ATT(NCID,VARID(291),'long_name','longitude') @@ -4918,6 +4973,7 @@ !/RTD IRET=NF90_PUT_ATT(NCID, VARID(293), 'grid_north_pole_longitude',POLON) !/RTD IRET=NF90_PUT_ATT(NCID, VARID(293), 'grid_mapping_name', & !/RTD 'rotated_latitude_longitude') +!/RTD END IF ! ELSE IF (GTYPE.EQ.RLGTYPE) THEN diff --git a/model/inp/ww3_grid.inp b/model/inp/ww3_grid.inp index 1a4dffe5b1..d3fbf49e8e 100644 --- a/model/inp/ww3_grid.inp +++ b/model/inp/ww3_grid.inp @@ -350,6 +350,8 @@ $ PLAT : Rotated pole latitude $ PLON : Rotated pole longitude $ UNROT : Logical, un-rotate directions to true north $ +$ Compile switch /RTD required. +$ $ These will be used to derive rotation angle corrections in the $ model. The corrections are used for rotation of boundary spectra $ and for restoring conventional lat/lon orientation of the @@ -359,6 +361,24 @@ $ Office UK regional models. $ $ &ROTD PLAT = 37.5, PLON = 177.5, UNROT = .TRUE. / $ +$ The default values for ROTD represent a non-rotated lat/lon grid: +$ +$ &ROTD PLAT = 90.0, PLON = -180.0, UNROT = .FALSE. / +$ +$ Output boundary conditions to rotated pole grids ------------------ $ +$ +$ Pole parameters : Namelist ROTB +$ BPLAT(1:9) : Dest. grid rotated pole latitude +$ BPLON(1:9) : Rotated pole longitude +$ +$ Compile switch /RTD required. +$ +$ In the section 'Output boundary points' below, the points must be given +$ as straight lines in the reference system of each destination grid. The +$ poles of each destination grids have default values of standard lat/lon. +$ +$ &ROTB BPLAT(1)=90., BPLON(1)=-180., BPLAT(2)=90., BPLON(2)=-180. / $ (etc.) +$ $ Output of 3D arrays------------------------------------------------- $ $ In order to limit the use of memory, arrays for 3D output fiels (i.e. $ variables that are a function of both space and frequency, are not diff --git a/model/nml/namelists_GULF.nml b/model/nml/namelists_GULF.nml new file mode 100644 index 0000000000..b62eea8e33 --- /dev/null +++ b/model/nml/namelists_GULF.nml @@ -0,0 +1,52 @@ +$ +$ This is a parameter namelist file for an individual grid. This file is to be +$ used with ww3_grid.nml where its name is the value of GRID%NML +$ +$ See also ww3_grid.inp under the section: +$ +$ Start of namelist input section ------------------------------------ $ +$ +$ [ ... ] +$ +$ In the 'Out of the box' test setup we run with sub-grid obstacles +$ and with continuous ice treatment. +$ +&MISC CICE0 = 0.25, CICEN = 0.75, FLAGTR = 4 / +&FLX3 CDMAX = 3.5E-3 , CTYPE = 0 / +$ +$ Rotated pole ------------------------------------------------------ $ +$ - only for Spherical RECT grids. Programs compiled with switch /RTD - +$ +$ Pole parameters : Namelist ROTD +$ PLAT : Rotated pole latitude +$ PLON : Rotated pole longitude +$ UNROT : Logical, un-rotate directions to true north +$ +$ These will be used to derive rotation angle corrections in the +$ model. The corrections are used for rotation of boundary spectra +$ and for restoring conventional lat/lon orientation of the +$ output spectra, mean direction or any related variables. +$ The PLAT/LON example below is a standard setting for Met +$ Office UK regional models. +$ +$ &ROTD PLAT = 37.5, PLON = 177.5, UNROT = .TRUE. / +$ +$ &ROTD has default values that represent a non-rotated lat/lon grid: +$ +$ &ROTD PLAT = 90.0, PLON = -180.0, UNROT = .FALSE. / +$ +$ Output boundary conditions to rotated pole grids ------------------ $ +$ - only for Spherical RECT grids. Programs compiled with switch /RTD - +$ +$ Pole parameters : Namelist ROTB +$ BPLAT(1:9) : Dest. grid rotated pole latitude +$ BPLON(1:9) : Rotated pole longitude +$ +$ In ww3_grid.nml the boundary points must be specified under the namelist +$ &OUTBND_LINE_NML as straight lines, OUTBND_LINE(1:OUTBND_COUNT%N_LINE), in +$ the reference system of each destination grid. The default of each +$ destination grid is a non-rotated lat/lon grid: +$ +$ &ROTB BPLAT(1)= 90.0, BPLON(1)= -180.0, / ! (etc.) +$ +END OF NAMELISTS diff --git a/model/nml/ww3_grid.nml b/model/nml/ww3_grid.nml index 3996b2b4d9..b9992df2a6 100644 --- a/model/nml/ww3_grid.nml +++ b/model/nml/ww3_grid.nml @@ -140,7 +140,7 @@ ! -------------------------------------------------------------------- ! &GRID_NML GRID%NAME = 'GULF OF NOWHERE' - GRID%NML = 'namelists.nml' + GRID%NML = 'namelists_GULF.nml' GRID%TYPE = 'RECT' GRID%COORD = 'SPHE' GRID%CLOS = 'SMPL' From 5e23de8d62957c40c6d0d6df7cd3db1d417737dc Mon Sep 17 00:00:00 2001 From: Carsten Hansen Date: Mon, 7 Oct 2019 10:32:35 +0200 Subject: [PATCH 02/10] Standard lat-lon NetCDF attributes also for SMC grid. Comments clean-up --- model/ftn/w3iobcmd.ftn | 19 +++++++------------ model/ftn/w3updtmd.ftn | 8 +++----- model/ftn/ww3_grid.ftn | 28 ++++++++++------------------ model/ftn/ww3_ounf.ftn | 18 +++++++++--------- 4 files changed, 29 insertions(+), 44 deletions(-) diff --git a/model/ftn/w3iobcmd.ftn b/model/ftn/w3iobcmd.ftn index 6b21bd2c1b..376d6a8134 100644 --- a/model/ftn/w3iobcmd.ftn +++ b/model/ftn/w3iobcmd.ftn @@ -103,11 +103,8 @@ !/ (T.J. Campbell, NRL) ( version 6.02 ) !/ 01-Mar-2018 : Rotate boundary points and directions !/ of input spectra for rotated grids ( version 6.02 ) -!/ -!/ 13-Jun-2019 : Under switch /RTD the grid may be either rotated or -!/ standard lat-lon with output boundary conditions to -!/ either rotated or standard lat-lon. -!/ (C. Hansen, FCOO) ( version 6.?? ) +!/ 07-Oct-2019 : RTD option with standard lat-lon +!/ grid when nesting to rotated grid ( version ?.?? ) !/ ! 1. Purpose : ! @@ -314,10 +311,8 @@ !/T WRITE (NDST,9002) IFILE, NDSL(IFILE), IDSTRBC, & !/T VERBPTBC, NBO(IFILE)-NBO(IFILE-1) ! -! -!/RTD ! By running the ww3_grid program with switch '/RTD', the arrays -!/RTD ! XBPO, YBPO was remapped to standard lat/lon and then stored -!/RTD ! in the grid definition file mod_def.* (CHA 20190613) +!/RTD ! By running the ww3_grid program the arrays XBPO, YBPO have been +!/RTD ! remapped to standard lat-lon and stored in mod_def.* !/RTD ! WRITE (NDSL(IFILE)) & (XBPO(I),I=NBO(IFILE-1)+1,NBO(IFILE)), & @@ -393,7 +388,7 @@ ! !/RTD ! All boundary conditions position arrays XBPI, YBPI are defined !/RTD ! in standard lat/lon coordinates. If Polat = 90. (and Polon = -180.), -!/RTD ! the b.c. positions don't need to be remapped (CHA 20190613) +!/RTD ! the b.c. positions don't need to be remapped !/RTD IF ( Polat < 90. ) THEN !/RTD !! Convert standard into rotated lat/lon. JGLi12Jun2012 !/RTD ALLOCATE ( Anglbdy(NBI), ELatbdy(NBI), ELonbdy(NBI) ) @@ -534,8 +529,8 @@ !/DIST CG(1+(IS-1)/NTH,ISEA) !/DIST END DO ! -!/RTD ! Under switch RTD, Polat = 90. means the grid is standard lat-lon and -!/RTD ! the spectra need not be rotated back (CHA 20190613) +!/RTD ! Polat == 90. means the grid is standard lat-lon, and the spectra +!/RTD ! need not be rotated back !/RTD IF ( Polat < 90. ) THEN !/RTD ! Added spectral turning for rotated grid !/RTD ! (rotate back to standard pole) diff --git a/model/ftn/w3updtmd.ftn b/model/ftn/w3updtmd.ftn index 0f0b2c9956..0566960211 100644 --- a/model/ftn/w3updtmd.ftn +++ b/model/ftn/w3updtmd.ftn @@ -54,9 +54,8 @@ !/ and add ICEH initialization in W3UICE. !/ 13-Jan-2016 : Changed initial value of ICEDMAX ( version 5.08 ) !/ 26-Mar-2018 : Sea-point only Wnd/Cur input. JGLi ( version 6.04 ) -!/ 13-Jun-2019 : Under switch /RTD the grid may be standard lat-lon, and -!/ then spectral rotation is avoided. -!/ (C. Hansen, FCOO) ( version 6.?? ) +!/ 07-Oct-2019 : RTD option with standard lat-lon +!/ grid when nesting to rotated grid ( version ?.?? ) !/ !/ Copyright 2009-2014 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -959,7 +958,6 @@ !/ ------------------------------------------------------------------- / USE W3GDATMD, ONLY: NSPEC, MAPWN, SIG2, DDEN !/RTD !! Use rotation angle and action conversion sub. JGLi12Jun2012 -!/RTD !! PoLat < 90. indicates that the grid is really rotated (CHA 20190613) !/RTD USE W3GDATMD, ONLY: NK, NTH, NSPEC, AnglD, PoLat !/RTD USE W3SERVMD, ONLY: W3ACTURN USE W3ADATMD, ONLY: CG @@ -1027,7 +1025,7 @@ END DO ! !/RTD !! Rotate the spectra if model is on rotated grid. JGLi12Jun2012 -!/RTD !! PoLat == 90. means that the grid is standard lat/lon (CHA 20190613) +!/RTD !! PoLat == 90. if the grid is standard lat/lon (C. Hansen 20190613) !/RTD IF ( PoLat < 90. ) THEN !/RTD Spectr = BBPIN(:,IBI) !/RTD AnglBP = AnglD(ISEA) diff --git a/model/ftn/ww3_grid.ftn b/model/ftn/ww3_grid.ftn index d4e598a167..a001a51798 100644 --- a/model/ftn/ww3_grid.ftn +++ b/model/ftn/ww3_grid.ftn @@ -630,7 +630,7 @@ !/ARC REAL, ALLOCATABLE :: XLONAC(:),YLATAC(:),ELONAC(:),ELATAC(:) ! !/RTD REAL, ALLOCATABLE :: AnglDin(:,:),StdLon(:,:),StdLat(:,:) -!/RTD ! 1-dim boundary sectors (CHA 20181212) +!/RTD ! 1-dim boundary sectors !/RTD REAL, ALLOCATABLE :: BDYLON(:), BDYLAT(:), & !/RTD ELatbdy(:), ELonbdy(:), Anglbdy(:) !/RTD ! If the destination grid for an output b.c. is rotated, its pole is: @@ -810,7 +810,7 @@ !/RTD REAL :: PLAT, PLON !/RTD LOGICAL :: UNROT -!/RTD ! Poles of the output nested grids. Some may be rotated (CHA 20190613) +!/RTD ! Poles of the output nested grids. May be a mix of rotated and standard !/RTD REAL, DIMENSION(9) :: BPLAT, BPLON ! !/FLD1 NAMELIST /FLD1/ TAILTYPE, TAILLEV, TAILT1, TAILT2 @@ -924,7 +924,7 @@ !/REF1 REFFREQPOW, REFUNSTSOURCE !/ !/RTD NAMELIST /ROTD/ PLAT, PLON, UNROT -!/RTD! Poles of destination grids for boundary conditions output (CHA 20190613) +!/RTD! Poles of destination grids for boundary conditions output !/RTD NAMELIST /ROTB/ BPLAT, BPLON !/ !/ ------------------------------------------------------------------- / @@ -2194,7 +2194,7 @@ ! !/RTD ! Set/ read in rotation values - these will be written out !/RTD ! later with the rest of the grid info -!/RTD ! Default is a non-rotated grid (CHA 20190613) +!/RTD ! Default is a non-rotated lat-lon grid !/RTD PLAT = 90. !/RTD PLON = -180. !/RTD UNROT = .FALSE. @@ -3501,16 +3501,10 @@ !/RTD PoLon = PLON !/RTD PoLat = PLAT !/RTD FLAGUNR = UNROT -! !/RTD ! Default parameters PLON=-180, PLAT=90, UNROT=.FALSE. (CHA 20190613) -! !/RTD ! Check that pole lat/lon values have been read in -! !/RTD ! and exit the program if they have not -! !/RTD ! IF( PoLon .EQ. -999.9 .OR. PoLat .EQ. -999.9 ) THEN -! !/RTD ! WRITE( NDSE, 1050 ) -! !/RTD ! CALL EXTCDE ( 63 ) -! !/RTD ! ENDIF +!/RTD ! Default values PLON=-180, PLAT=90, UNROT=.FALSE. for standard lat-lon !/RTD !/RTD ALLOCATE( AnglDin(NX,NY) ) -!/RTD ! For standard lat-lon the rotation angles are zero (CHA 20190613) +!/RTD ! For standard lat-lon the rotation angles are zero !/RTD IF ( PoLat == 90. ) THEN !/RTD AnglDin = 0. !/RTD ELSE @@ -5017,7 +5011,7 @@ FIRST = .FALSE. ! !/RTD IF ( NPO.NE.0 ) THEN -!/RTD ! Destination pole lat, lon from namelist (CHA 20190613) +!/RTD ! Destination pole lat, lon from namelist !/RTD bPolat = BPLAT(NFBPO+1) !/RTD bPolon = BPLON(NFBPO+1) !/RTD END IF @@ -5026,7 +5020,6 @@ WRITE (NDSO,991) NFBPO, NBO(NFBPO) - NBO(NFBPO-1), & NBO2(NFBPO) - NBO2(NFBPO-1) !/RTD ! Print dest. Pole lat/lon if either the dest or present grid is rotated -!/RTD ! (CHA 20190626) !/RTD IF ( BPLAT(NFBPO) < 90. .OR. Polat < 90. ) & !/RTD WRITE (NDSO,1991) BPLAT(NFBPO), BPLON(NFBPO) !/RTD ! @@ -5092,7 +5085,7 @@ ! ! ... Loop over line segment - - - - - - - - - - - - - - - - - - - - - ! -!/RTD ! If either base or destination grid is rotated lat-lon (CHA 20190613) +!/RTD ! If either base or destination grid is rotated lat-lon !/RTD IF ( allocated(BDYLON) .eqv. .TRUE. ) THEN !/RTD deallocate( BDYLON, BDYLAT ) !/RTD IF ( bPolat < 90. .OR. Polat < 90. ) & @@ -5191,9 +5184,8 @@ NBOTOT = NBOTOT + 1 IF ( ILOOP .EQ. 1 ) CYCLE ! -!/RTD ! BDYLAT, BDYLON contain Y0, X0 mapped to standard lat/lon. I choose -!/RTD ! to store the BDYLAT, BDYLON in the mod_def file. Then we can avoid -!/RTD ! remapping in model runtime when controlling the nest data (CHA 20190613) +!/RTD ! BDYLAT, BDYLON contain Y0, X0, which are remapped to standard lat/lon. +!/RTD ! BDYLAT, BDYLON are stored in the mod_def file. !/RTD IF ( Polat < 90. ) THEN !/RTD XO = BDYLON(IP) !/RTD YO = BDYLAT(IP) diff --git a/model/ftn/ww3_ounf.ftn b/model/ftn/ww3_ounf.ftn index 87e8a6443b..95353ef912 100644 --- a/model/ftn/ww3_ounf.ftn +++ b/model/ftn/ww3_ounf.ftn @@ -32,8 +32,8 @@ !/ 12-Sep-2018 : Added extra partitioned fields ( version 6.06 ) !/ 25-Sep-2018 : Add WBT parameter ( version 6.06 ) !/ 28-Mar-2019 : Bugfix to NBIPART check. ( version 6.07 ) -!/ 13-Jun-2019 : Avoid lat2D, lon2D arrays when RTD option is applied to a -!/ standard grid (C. Hansen, FCOO) ( version ?.?? ) +!/ 07-Oct-2019 : RTD option with standard lat-lon +!/ grid when nesting to rotated grid ( version ?.?? ) !/ !/ Copyright 2009-2013 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -822,7 +822,7 @@ LOGICAL :: CUSTOMFRQ=.FALSE. !/T LOGICAL :: LTEMP(NGRPP) !/RTD ! RTDL == False for a standard lat-lon grid. Will be set to True if the -!/RTD ! grid is a regridded SMC dataset or the grid is rotated (CHA 20190613) +!/RTD ! grid is rotated !/RTD LOGICAL :: RTDL = .FALSE. !/ !/ ------------------------------------------------------------------- / @@ -830,8 +830,8 @@ ! !/S CALL STRACE (IENT, 'W3EXNC') ! -!/RTD ! Is the grid really rotated or a regridded SMC dataset (CHA 20190613) -!/RTD IF ( Polat < 90. .OR. SMCGRD ) RTDL = .True. +!/RTD ! Is the grid really rotated +!/RTD IF ( Polat < 90. ) RTDL = .True. !/RTD ! !/T DO IFI=1, NOGRP !/T LTEMP = FLG2D(IFI,:) @@ -4781,11 +4781,11 @@ CHARACTER :: ATTNAME*120,ATTVAL*120 !/RTD ! RTDL == False for a standard lat-lon grid. Will be set to True if the -!/RTD ! grid is an SMC grid or the grid is rotated (CHA 20181212) +!/RTD ! grid is rotated !/RTD LOGICAL :: RTDL = .FALSE. -!/RTD ! Is the grid really rotated or a regridded SMC dataset (CHA 20190613) -!/RTD IF ( Polat < 90. .OR. SMCGRD ) RTDL = .True. +!/RTD ! Is the grid really rotated +!/RTD IF ( Polat < 90. ) RTDL = .True. ! ! Creation in netCDF3 or netCDF4 ! @@ -4895,7 +4895,7 @@ IRET = NF90_DEF_VAR(NCID, 'latitude', NF90_FLOAT, DIMID(2), VARID(2)) END IF IRET=NF90_PUT_ATT(NCID,VARID(1),'units','degree_east') -!/RTD ! Is the grid really rotated or a regridded SMC dataset (CHA 20190613) +!/RTD ! Is the grid really rotated !/RTD IF ( .NOT. RTDL ) THEN IRET=NF90_PUT_ATT(NCID,VARID(1),'long_name','longitude') IRET=NF90_PUT_ATT(NCID,VARID(1),'standard_name','longitude') From 89b315fc19619439232af3b3d6ba5217ef1a1178 Mon Sep 17 00:00:00 2001 From: Carsten Hansen Date: Mon, 7 Oct 2019 12:59:49 +0200 Subject: [PATCH 03/10] A few changes to comment lines in ww3_ounf.ftn --- model/ftn/ww3_ounf.ftn | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/model/ftn/ww3_ounf.ftn b/model/ftn/ww3_ounf.ftn index 95353ef912..961e220969 100644 --- a/model/ftn/ww3_ounf.ftn +++ b/model/ftn/ww3_ounf.ftn @@ -7,7 +7,7 @@ !/ | F. Ardhuin | !/ | M. Accensi | !/ | FORTRAN 90 | -!/ | Last update : 28-Mar-2019 | +!/ | Last update : 07-Oct-2019 | !/ +-----------------------------------+ !/ !/ 17-Mar-2010 : Creation ( version 3.14_SHOM ) @@ -116,9 +116,6 @@ !/DEBUG USE W3ODATMD, only : IAPROC !/ USE W3GDATMD - ! From W3GDATMD, these names are used in the main program: (CHA 20190621) - ! USE W3GDATMD, ONLY: W3NMOD, W3SETG - ! USE W3GDATMD, ONLY: GNAME, NX, NY, NSEA, E3DF, P2MSF, US3DF, USSPF USE W3WDATMD, ONLY: TIME, WLV, ICE, ICEH, ICEF, BERG, UST, USTDIR !/SETUP USE W3WDATMD, ONLY: ZETA_SETUP USE W3ADATMD, ONLY: DW, UA, UD, AS, CX, CY, HS, WLM, T0M1, THM, & @@ -748,10 +745,9 @@ !/RTD USE W3SERVMD, ONLY : W3THRTN, W3XYRTN, W3EQTOLL USE W3ARRYMD, ONLY : OUTA2I, PRTBLK USE W3GDATMD, ONLY : SIG, GTYPE, FLAGLL, MAPSTA, MAPST2 - ! From W3GDATMD, these names are also used: (CHA 20190621) USE W3GDATMD, ONLY : NK, UNGTYPE, MAPSF, NTRI, CLGTYPE, RLGTYPE, & XGRD, YGRD, SX, SY, X0, Y0, XYB, TRIGP, USSP_WN -!/RTD ! Rotated pole data from the mod_def file (CHA 20190613) +!/RTD ! Rotated pole data from the mod_def file !/RTD USE W3GDATMD, ONLY : POLAT, POLON, FLAGUNR, AnglD !/T USE W3ODATMD, ONLY : NDST USE NETCDF @@ -1057,7 +1053,6 @@ !/RTD IF ( FLAGUNR ) THEN !/RTD VARND(1) = 'True North' !/RTD VARND(2) = 'True North' -!/RTD ! Former condition ( .NOT. FLAGUNR ), now ( RTDL ) (CHA 20190613): !/RTD ELSE IF ( RTDL ) THEN !/RTD VARND(1) = 'Rotated Pole Grid North' !/RTD VARND(2) = 'Rotated Pole Grid North' @@ -4751,9 +4746,8 @@ SUBROUTINE W3CRNC (NCFILE, NCID, DIMID, DIMLN, VARID, & EXTRADIM, NCTYPE, MAPSTAOUT ) ! - ! From W3GDATMD, these names are used: (CHA 20190621) USE W3GDATMD, ONLY : GTYPE, FLAGLL, UNGTYPE, CLGTYPE, RLGTYPE -!/RTD ! Rotated pole parameters from the mod_def file (CHA 20190613) +!/RTD ! Rotated pole parameters from the mod_def file !/RTD USE W3GDATMD, ONLY : POLAT, POLON USE NETCDF USE W3TIMEMD From 6c324359bf98db26339e3bfd5a308d78e8e5103f Mon Sep 17 00:00:00 2001 From: Carsten Hansen Date: Wed, 23 Oct 2019 10:13:40 +0200 Subject: [PATCH 04/10] Modified manual Sec. "3.4.9 Rotated grids" --- manual/num/rotagrid.tex | 42 ++++++++++++++++++++--------- model/inp/ww3_grid.inp | 38 +++++++++++++------------- model/nml/namelists.nml | 24 +++++++++++++++++ model/nml/namelists_GULF.nml | 52 ------------------------------------ model/nml/ww3_grid.nml | 2 +- 5 files changed, 74 insertions(+), 84 deletions(-) create mode 100644 model/nml/namelists.nml delete mode 100644 model/nml/namelists_GULF.nml diff --git a/manual/num/rotagrid.tex b/manual/num/rotagrid.tex index 60b58ef6d2..8d173ba94b 100644 --- a/manual/num/rotagrid.tex +++ b/manual/num/rotagrid.tex @@ -4,8 +4,8 @@ \subsubsection{~Rotated grids} \label{sub:num_space_rotagrid} \noindent The rotated grid is a latitude-longitude (lat-lon) grid and is obtained by -rotating the North Pole to a new position at latitude $\phi_{p}$ and -longitude $\lambda_{p}$ in the standard latitude-longitude system. The new +rotating the North Pole along a longitude $\lambda_{p}$ to a new position at +latitude $\phi_{p}$ in the standard latitude-longitude system. The new pole position is chosen so that the model domain of interest may be placed around the rotated equatorial area for a evenly-spaced lat-lon mesh. For this reason the rotated grid is also known as \emph{Equatorial grid}. For instance, @@ -15,22 +15,38 @@ \subsubsection{~Rotated grids} \label{sub:num_space_rotagrid} grid allows a much more evenly spaced lat-lon mesh in the NAEW domain than the standard lat-lon grid in the same area. -In \ws\, the rotated grid is implemented with minimum changes to the original +In \ws, the rotated grid is implemented with minimum changes to the original lat-lon grid. In fact, the rotated grid is treated just like the standard lat-lon grid inside the model. To set up and run a rotated grid model configuration, users should choose the regular lat-lon grid along with the {\code RTD} switch. -The rotated pole position is set using the {\code PLAT} and {\code PLON} variables in the -{\bf ww3\_grid.inp} namelist {\code ROTD}. Model input files, like wind, current and ice files -should be mapped on to the rotated grid. For convenience of nesting in standard -lat-lon grid frameworks, boundary conditions provided to and output from the +The rotated pole position is set using the {\code PLAT} and {\code PLON} variables +under the namelist {\code ROTD} in the input file {\bf ww3\_grid.inp} +(see Sect.~\ref{sec:config011}). If the pole is set as {\code PLAT = 90.0}, +{\code PLON = -180.0}, the grid is treated as a standard lat-lon system. + +Model input files, like wind, current and ice files +should be mapped on to the rotated grid. For convenience of nesting in standard +lat-lon grid frameworks, boundary conditions data provided to and output from the rotated grid use spectra referenced to a standard grid north and standard lat-lon -grid points values, which are converted into rotated grid lat-lon inside \ws\. -The list of 2D spectral output locations in {\bf ww3\_shel.inp} are also specified in -standard lat-lon. +grid points values, which are converted into rotated grid lat-lon inside \ws. +The list of 2D spectral output locations in {\bf ww3\_shel.inp} or +{\bf ww3\_shel.nml} are also specified in standard lat-lon. When the boundary +conditions are applied to a model on a standard lat-lon grid, the {\code RTD} +switch is not required in compiling the executables for that model. + +Output of spectra at boundary points to one-way nested inner grids are transferred +as described in Appendix~\ref{app:nest}. Output b.c.\ may be defined in the input +file (see {\bf ww3\_grid.inp}, Sect.~\ref{sec:config011}) as a sequence of straight +lines given in coordinates of the inner grid. If the inner grid is rotated, it's +pole position must be defined as the values of the array elements +{\code BPLAT(\sl{n})} and {\code BPLON(\sl{n})} under namelist {\code ROTB}. The +array index {\sl{n}} is the index ({\sl{1:9}}) of the boundary conditions file +{\file nest{\sl{n}}.ww3}. -Model directional and x-y vector outputs can be converted to a standard grid -north reference by setting the UNROT variable in the {\bf ww3\_grid.inp} namelist -ROTD to True. With this set, for point outputs lat-lon locations all directional +Model directional and x-y vector outputs from a rotated grid can be converted +to a standard grid north reference by setting the UNROT variable in the +{\bf ww3\_grid.inp} namelist ROTD to True. With this set, for point outputs +lat-lon locations all directional values such as wind direction, current direction and 2D spectra are converted into standard lat-lon orientation. Functions to de-rotate gridded fields are applied in {\bf ww3\_ounf}, {\bf ww3\_outf} and {\bf ww3\_grib}. diff --git a/model/inp/ww3_grid.inp b/model/inp/ww3_grid.inp index d3fbf49e8e..2ec8b2e75e 100644 --- a/model/inp/ww3_grid.inp +++ b/model/inp/ww3_grid.inp @@ -345,19 +345,20 @@ $ SEAWND : Use sea-point only wind input. .FALSE. $ &PSMC DTIME = 39600.0, LATMIN=85.0, RFMAXD = 36.0, LvSMC=3, JEQT=1344 / $ $ Rotated pole ------------------------------------------------------ $ -$ Pole parameters : Namelist ROTD -$ PLAT : Rotated pole latitude -$ PLON : Rotated pole longitude -$ UNROT : Logical, un-rotate directions to true north +$ Pole parameters : Namelist ROTD +$ PLAT : Rotated pole latitude +$ PLON : Rotated pole longitude +$ UNROT : Logical, un-rotate directions to +$ true north $ -$ Compile switch /RTD required. +$ Compile switch /RTD required. $ -$ These will be used to derive rotation angle corrections in the -$ model. The corrections are used for rotation of boundary spectra -$ and for restoring conventional lat/lon orientation of the -$ output spectra, mean direction or any related variables. -$ The PLAT/LON example below is a standard setting for Met -$ Office UK regional models. +$ These will be used to derive rotation angle corrections in the +$ model. The corrections are used for rotation of boundary spectra +$ and for restoring conventional lat/lon orientation of the +$ output spectra, mean direction or any related variables. +$ The PLAT/LON example below is a standard setting for Met +$ Office UK regional models. $ $ &ROTD PLAT = 37.5, PLON = 177.5, UNROT = .TRUE. / $ @@ -367,17 +368,18 @@ $ &ROTD PLAT = 90.0, PLON = -180.0, UNROT = .FALSE. / $ $ Output boundary conditions to rotated pole grids ------------------ $ $ -$ Pole parameters : Namelist ROTB -$ BPLAT(1:9) : Dest. grid rotated pole latitude -$ BPLON(1:9) : Rotated pole longitude +$ Pole parameters : Namelist ROTB +$ BPLAT(1:9) : Dest. grid rotated pole latitude +$ BPLON(1:9) : Rotated pole longitude $ $ Compile switch /RTD required. $ -$ In the section 'Output boundary points' below, the points must be given -$ as straight lines in the reference system of each destination grid. The -$ poles of each destination grids have default values of standard lat/lon. +$ In the section 'Output boundary points' below, the points must be +$ given as straight lines in the reference system of each destination +$ grid. The poles of each destination grids have default values of +$ standard lat/lon. $ -$ &ROTB BPLAT(1)=90., BPLON(1)=-180., BPLAT(2)=90., BPLON(2)=-180. / $ (etc.) +$ &ROTB BPLAT(1)=90., BPLON(1)=-180., BPLAT(2)=90. / $ (etc.) $ $ Output of 3D arrays------------------------------------------------- $ $ In order to limit the use of memory, arrays for 3D output fiels (i.e. diff --git a/model/nml/namelists.nml b/model/nml/namelists.nml new file mode 100644 index 0000000000..ebffce3b46 --- /dev/null +++ b/model/nml/namelists.nml @@ -0,0 +1,24 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III - model parameters namelist +$ -------------------------------------------------------------------- $ +$ This file is to be used with ww3_grid.nml where its name is the value +$ of GRID%NML +$ +$ The contents is equal to the namelist input of ww3_grid.inp +$ (traditional form) ending with a mandatory string 'END OF NAMELISTS' +$ +$ Start of namelist input section ------------------------------------ $ +$ +$ [ ... ] +$ +$ In the 'Out of the box' test setup we run with sub-grid obstacles +$ and with continuous ice treatment. +$ +&MISC CICE0 = 0.25, CICEN = 0.75, FLAGTR = 4 / +&FLX3 CDMAX = 3.5E-3 , CTYPE = 0 / +$ +END OF NAMELISTS +$ +$ -------------------------------------------------------------------- $ +$ End of model parameters namelist file +$ -------------------------------------------------------------------- $ diff --git a/model/nml/namelists_GULF.nml b/model/nml/namelists_GULF.nml deleted file mode 100644 index b62eea8e33..0000000000 --- a/model/nml/namelists_GULF.nml +++ /dev/null @@ -1,52 +0,0 @@ -$ -$ This is a parameter namelist file for an individual grid. This file is to be -$ used with ww3_grid.nml where its name is the value of GRID%NML -$ -$ See also ww3_grid.inp under the section: -$ -$ Start of namelist input section ------------------------------------ $ -$ -$ [ ... ] -$ -$ In the 'Out of the box' test setup we run with sub-grid obstacles -$ and with continuous ice treatment. -$ -&MISC CICE0 = 0.25, CICEN = 0.75, FLAGTR = 4 / -&FLX3 CDMAX = 3.5E-3 , CTYPE = 0 / -$ -$ Rotated pole ------------------------------------------------------ $ -$ - only for Spherical RECT grids. Programs compiled with switch /RTD - -$ -$ Pole parameters : Namelist ROTD -$ PLAT : Rotated pole latitude -$ PLON : Rotated pole longitude -$ UNROT : Logical, un-rotate directions to true north -$ -$ These will be used to derive rotation angle corrections in the -$ model. The corrections are used for rotation of boundary spectra -$ and for restoring conventional lat/lon orientation of the -$ output spectra, mean direction or any related variables. -$ The PLAT/LON example below is a standard setting for Met -$ Office UK regional models. -$ -$ &ROTD PLAT = 37.5, PLON = 177.5, UNROT = .TRUE. / -$ -$ &ROTD has default values that represent a non-rotated lat/lon grid: -$ -$ &ROTD PLAT = 90.0, PLON = -180.0, UNROT = .FALSE. / -$ -$ Output boundary conditions to rotated pole grids ------------------ $ -$ - only for Spherical RECT grids. Programs compiled with switch /RTD - -$ -$ Pole parameters : Namelist ROTB -$ BPLAT(1:9) : Dest. grid rotated pole latitude -$ BPLON(1:9) : Rotated pole longitude -$ -$ In ww3_grid.nml the boundary points must be specified under the namelist -$ &OUTBND_LINE_NML as straight lines, OUTBND_LINE(1:OUTBND_COUNT%N_LINE), in -$ the reference system of each destination grid. The default of each -$ destination grid is a non-rotated lat/lon grid: -$ -$ &ROTB BPLAT(1)= 90.0, BPLON(1)= -180.0, / ! (etc.) -$ -END OF NAMELISTS diff --git a/model/nml/ww3_grid.nml b/model/nml/ww3_grid.nml index b9992df2a6..3996b2b4d9 100644 --- a/model/nml/ww3_grid.nml +++ b/model/nml/ww3_grid.nml @@ -140,7 +140,7 @@ ! -------------------------------------------------------------------- ! &GRID_NML GRID%NAME = 'GULF OF NOWHERE' - GRID%NML = 'namelists_GULF.nml' + GRID%NML = 'namelists.nml' GRID%TYPE = 'RECT' GRID%COORD = 'SPHE' GRID%CLOS = 'SMPL' From 19457253c3bacb9ed5e02622363979bd0c642259 Mon Sep 17 00:00:00 2001 From: Carsten Hansen Date: Tue, 14 Jul 2020 10:43:11 +0200 Subject: [PATCH 05/10] Adopt suggestions by Andy Saulter: milestone format 7.xx, high resolution of error message, full template text in namelists.nml, clearify the manual --- manual/num/rotagrid.tex | 17 +- model/ftn/w3iobcmd.ftn | 2 +- model/ftn/w3updtmd.ftn | 4 +- model/ftn/ww3_grid.ftn | 18 +- model/inp/ww3_grid.inp | 15 +- model/nml/namelists.nml | 464 +++++++++++++++++++++++++++++++++++++++- 6 files changed, 498 insertions(+), 22 deletions(-) diff --git a/manual/num/rotagrid.tex b/manual/num/rotagrid.tex index 8d173ba94b..cc8e5888c2 100644 --- a/manual/num/rotagrid.tex +++ b/manual/num/rotagrid.tex @@ -30,18 +30,21 @@ \subsubsection{~Rotated grids} \label{sub:num_space_rotagrid} rotated grid use spectra referenced to a standard grid north and standard lat-lon grid points values, which are converted into rotated grid lat-lon inside \ws. The list of 2D spectral output locations in {\bf ww3\_shel.inp} or -{\bf ww3\_shel.nml} are also specified in standard lat-lon. When the boundary -conditions are applied to a model on a standard lat-lon grid, the {\code RTD} -switch is not required in compiling the executables for that model. +{\bf ww3\_shel.nml} are also specified in standard lat-lon. + +When nesting from a standard grid to a rotated grid model, both the outer and inner +grids should be built with the {\code RTD} switch set when compiling executables for +the models. When nesting from a rotated grid to a standard grid model, the inner +(standard) grid model does not require to be built with {\code RTD}. Output of spectra at boundary points to one-way nested inner grids are transferred -as described in Appendix~\ref{app:nest}. Output b.c.\ may be defined in the input +as described in Appendix~\ref{app:nest}. Output b.c.\ are defined in the input file (see {\bf ww3\_grid.inp}, Sect.~\ref{sec:config011}) as a sequence of straight lines given in coordinates of the inner grid. If the inner grid is rotated, it's pole position must be defined as the values of the array elements -{\code BPLAT(\sl{n})} and {\code BPLON(\sl{n})} under namelist {\code ROTB}. The -array index {\sl{n}} is the index ({\sl{1:9}}) of the boundary conditions file -{\file nest{\sl{n}}.ww3}. +{\code BPLAT(\sl{n})} and {\code BPLON(\sl{n})} under namelist {\code ROTB} +for the outer grid. The array index {\sl{n}} is the index ({\sl{1:9}}) of the boundary +conditions file {\file nest{\sl{n}}.ww3}. Model directional and x-y vector outputs from a rotated grid can be converted to a standard grid north reference by setting the UNROT variable in the diff --git a/model/ftn/w3iobcmd.ftn b/model/ftn/w3iobcmd.ftn index 376d6a8134..3b348b8ef2 100644 --- a/model/ftn/w3iobcmd.ftn +++ b/model/ftn/w3iobcmd.ftn @@ -104,7 +104,7 @@ !/ 01-Mar-2018 : Rotate boundary points and directions !/ of input spectra for rotated grids ( version 6.02 ) !/ 07-Oct-2019 : RTD option with standard lat-lon -!/ grid when nesting to rotated grid ( version ?.?? ) +!/ grid when nesting to rotated grid ( version 7.xx ) !/ ! 1. Purpose : ! diff --git a/model/ftn/w3updtmd.ftn b/model/ftn/w3updtmd.ftn index 0566960211..3e8a9a6668 100644 --- a/model/ftn/w3updtmd.ftn +++ b/model/ftn/w3updtmd.ftn @@ -55,7 +55,7 @@ !/ 13-Jan-2016 : Changed initial value of ICEDMAX ( version 5.08 ) !/ 26-Mar-2018 : Sea-point only Wnd/Cur input. JGLi ( version 6.04 ) !/ 07-Oct-2019 : RTD option with standard lat-lon -!/ grid when nesting to rotated grid ( version ?.?? ) +!/ grid when nesting to rotated grid ( version 7.xx ) !/ !/ Copyright 2009-2014 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -905,7 +905,7 @@ !/ 12-Jun-2012 : Add /RTD option or rotated grid option. !/ (Jian-Guo Li) ( version 4.06 ) !/ 06-Jun-2018 : Add DEBUGIOBC/SETUP/DEBUGW3ULEV ( version 6.04 ) -!/ 13-Jun-2019 : Rotation only if POLAT<90 (C.Hansen)( version 6.?? ) +!/ 13-Jun-2019 : Rotation only if POLAT<90 (C.Hansen)( version 7.xx ) !/ ! 1. Purpose : ! diff --git a/model/ftn/ww3_grid.ftn b/model/ftn/ww3_grid.ftn index a001a51798..76d6fb4d87 100644 --- a/model/ftn/ww3_grid.ftn +++ b/model/ftn/ww3_grid.ftn @@ -106,7 +106,7 @@ !/ 22-Jan-2020 : Update default values for IS2 ( version 7.05 ) !/ 20-Feb-2020 : Include Romero's dissipation in ST4 ( version 7.06 ) !/ 15-Apr-2020 : Adds optional opt-out for CFL on BC ( version 7.08 ) -!/ 24-Jun-2020 : RTD output b. c. to rotated grid. ( version 7.?? ) +!/ 24-Jun-2020 : RTD output b. c. to rotated grid. ( version 7.xx ) !/ !/ Copyright 2009-2013 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -5242,10 +5242,18 @@ ! ... Error output ! ELSE - WRITE (NDSE,995) FACTOR*XO, FACTOR*YO + IF ( FLAGLL ) THEN + WRITE (NDSE,2995) FACTOR*XO, FACTOR*YO + ELSE + WRITE (NDSE,995) FACTOR*XO, FACTOR*YO + END IF END IF ELSE - WRITE (NDSE,994) FACTOR*XO, FACTOR*YO + IF ( FLAGLL ) THEN + WRITE (NDSE,2994) FACTOR*XO, FACTOR*YO + ELSE + WRITE (NDSE,994) FACTOR*XO, FACTOR*YO + END IF END IF ! END DO @@ -6048,8 +6056,8 @@ 993 FORMAT ( ' ',I4,2(' |',F8.2)) 1993 FORMAT ( ' ',I4,2(' |',F8.2), & ' ',I4,2(' |',F8.2)) - 994 FORMAT ( ' *** POINT OUTSIDE GRID (SKIPPED) : X,Y =',2F7.2) - 995 FORMAT ( ' *** POINT ON LAND (SKIPPED) : X,Y =',2F7.2) + 994 FORMAT ( ' *** POINT OUTSIDE GRID (SKIPPED) : X,Y =',2F10.5) + 995 FORMAT ( ' *** POINT ON LAND (SKIPPED) : X,Y =',2F10.5) 2992 FORMAT (/' Nr.| X | Y '/ & ' -----|-----------|-----------') 3992 FORMAT (/' Nr.| X | Y ', & diff --git a/model/inp/ww3_grid.inp b/model/inp/ww3_grid.inp index 2ec8b2e75e..88a79c2581 100644 --- a/model/inp/ww3_grid.inp +++ b/model/inp/ww3_grid.inp @@ -369,15 +369,18 @@ $ $ Output boundary conditions to rotated pole grids ------------------ $ $ $ Pole parameters : Namelist ROTB -$ BPLAT(1:9) : Dest. grid rotated pole latitude -$ BPLON(1:9) : Rotated pole longitude +$ BPLAT(1:9) : Pole latitude of each destination grid +$ BPLON(1:9) : Pole longitude of each destination grid $ $ Compile switch /RTD required. $ -$ In the section 'Output boundary points' below, the points must be -$ given as straight lines in the reference system of each destination -$ grid. The poles of each destination grids have default values of -$ standard lat/lon. +$ In the section 'Output boundary points' later in this file, the points must +$ be given as straight lines in the reference system of each destination grid. +$ The index J of BPLAT(J),BPLON(J) is incremented by one where a new output +$ file is started by specifying a negative value for the number of points. +$ +$ Each destination may be either a rotated grid or a standard (non-rotated) +$ lat/lon grid. The default values for ROTB represent standard lat/lon grids: $ $ &ROTB BPLAT(1)=90., BPLON(1)=-180., BPLAT(2)=90. / $ (etc.) $ diff --git a/model/nml/namelists.nml b/model/nml/namelists.nml index ebffce3b46..b4189d6705 100644 --- a/model/nml/namelists.nml +++ b/model/nml/namelists.nml @@ -9,7 +9,469 @@ $ (traditional form) ending with a mandatory string 'END OF NAMELISTS' $ $ Start of namelist input section ------------------------------------ $ $ -$ [ ... ] +$ Starting with WAVEWATCH III version 2.00, the tunable parameters +$ for source terms, propagation schemes, and numerics are read using +$ namelists. Any namelist found in the folowing sections up to the +$ end-of-section identifier string (see below) is temporarily written +$ to ww3_grid.scratch, and read from there if necessary. Namelists +$ not needed for the given switch settings will be skipped +$ automatically, and the order of the namelists is immaterial. +$ As an example, namelist input to change SWELLF and ZWND in the +$ Tolman and Chalikov input would be +$ +$ &SIN2 SWELLF = 0.1, ZWND = 15. / +$ +$ Define constants in source terms ----------------------------------- $ +$ +$ Stresses - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ TC 1996 with cap : Namelist FLX3 +$ CDMAX : Maximum allowed CD (cap) +$ CTYPE : Cap type : +$ 0: Discontinuous (default). +$ 1: Hyperbolic tangent. +$ Hwang 2011 : Namelist FLX4 +$ CDFAC : re-scaling of drag +$ +$ Linear input - - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ Cavaleri and M-R : Namelist SLN1 +$ CLIN : Proportionality constant. +$ RFPM : Factor for fPM in filter. +$ RFHF : Factor for fh in filter. +$ +$ Exponential input - - - - - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SIN1 +$ CINP : Proportionality constant. +$ +$ Tolman and Chalikov : Namelist SIN2 +$ ZWND : Height of wind (m). +$ SWELLF : swell factor in (n.nn). +$ STABSH, STABOF, CNEG, CPOS, FNEG : +$ c0, ST0, c1, c2 and f1 in . (n.nn) +$ through (2.65) for definition of +$ effective wind speed (!/STAB2). +$ WAM4 and variants : Namelist SIN3 +$ ZWND : Height of wind (m). +$ ALPHA0 : minimum value of Charnock coefficient +$ Z0MAX : maximum value of air-side roughness z0 +$ BETAMAX : maximum value of wind-wave coupling +$ SINTHP : power of cosine in wind input +$ ZALP : wave age shift to account for gustiness +$ TAUWSHELTER : sheltering of short waves to reduce u_star +$ SWELLFPAR : choice of swell attenuation formulation +$ (1: TC 1996, 3: ACC 2008) +$ SWELLF : swell attenuation factor +$ Extra parameters for SWELLFPAR=3 only +$ SWELLF2, SWELLF3 : swell attenuation factors +$ SWELLF4 : Threshold Reynolds number for ACC2008 +$ SWELLF5 : Relative viscous decay below threshold +$ Z0RAT : roughness for oscil. flow / mean flow +$ BYDRZ input : Namelist SIN6 +$ SINA0 : factor for negative input +$ SINWS : wind speed scaling option +$ SINFC : high-frequency extent of the +$ prognostic frequency region +$ +$ Nonlinear interactions - - - - - - - - - - - - - - - - - - - - - - - +$ Discrete I.A. : Namelist SNL1 +$ LAMBDA : Lambda in source term. +$ NLPROP : C in sourc term. NOTE : default +$ value depends on other source +$ terms selected. +$ KDCONV : Factor before kd in Eq. (n.nn). +$ KDMIN, SNLCS1, SNLCS2, SNLCS3 : +$ Minimum kd, and constants c1-3 +$ in depth scaling function. +$ Exact interactions : Namelist SNL2 +$ IQTYPE : Type of depth treatment +$ 1 : Deep water +$ 2 : Deep water / WAM scaling +$ 3 : Shallow water +$ TAILNL : Parametric tail power. +$ NDEPTH : Number of depths in for which +$ integration space is established. +$ Used for IQTYPE = 3 only +$ Namelist ANL2 +$ DEPTHS : Array with depths for NDEPTH = 3 +$ Gen. Multiple DIA : Namelist SNL3 +$ NQDEF : Number of quadruplets. +$ MSC : Scaling constant 'm'. +$ NSC : Scaling constant 'N'. +$ KDFD : Deep water relative filter depth, +$ KDFS : Shallow water relative filter depth, +$ Namelist ANL3 +$ QPARMS : 5 x NQDEF paramaters describing the +$ quadruplets, repeating LAMBDA, MU, DT12. +$ Cdeep and Cshal. See examples below. +$ Two Scale Approx. : Namelist SNL4 +$ INDTSA : Index for TSA/FBI computations +$ (0 = FBI ; 1 = TSA) +$ ALTLP : Index for alternate looping +$ (1 = no ; 2 = yes) +$ +$ Traditional DIA setup (default): +$ +$ &SNL3 NQDEF = 1, MSC = 0.00, NSC = -3.50 / +$ &ANL3 QPARMS = 0.250, 0.000, -1.0, 0.1000E+08, 0.0000E+00 / +$ +$ GMD3 from 2010 report (G13d in later paper) : +$ +$ &SNL3 NQDEF = 3, MSC = 0.00, NSC = -3.50 / +$ &ANL3 QPARMS = 0.126, 0.000, -1.0, 0.4790E+08, 0.0000E+00 , +$ 0.237, 0.000, -1.0, 0.2200E+08, 0.0000E+00 , +$ 0.319, 0.000, -1.0, 0.1110E+08, 0.0000E+00 / +$ +$ G35d from 2010 report: +$ +$ &SNL3 NQDEF = 5, MSC = 0.00, NSC = -3.50 / +$ &ANL3 QPARMS = 0.066, 0.018, 21.4, 0.170E+09, 0.000E+00 , +$ 0.127, 0.069, 19.6, 0.127E+09, 0.000E+00 , +$ 0.228, 0.065, 2.0, 0.443E+08, 0.000E+00 , +$ 0.295, 0.196, 40.5, 0.210E+08, 0.000E+00 , +$ 0.369, 0.226, 11.5, 0.118E+08, 0.000E+00 / +$ +$ Nonlinear filter based on DIA - - - - - - - - - - - - - - - - - - - +$ Namelist SNLS +$ A34 : Relative offset in quadruplet +$ FHFC : Proportionality constants. +$ DMN : Maximum relative change. +$ FC1-3 : Constants in frequency filter. +$ +$ Whitecapping dissipation - - - - - - - - - - - - - - - - - - - - - +$ WAM-3 : Namelist SDS1 +$ CDIS, APM : As in source term. +$ +$ Tolman and Chalikov : Namelist SDS2 +$ SDSA0, SDSA1, SDSA2, SDSB0, SDSB1, PHIMIN : +$ Constants a0, a1, a2, b0, b1 and +$ PHImin. +$ +$ WAM4 and variants : Namelist SDS3 +$ SDSC1 : WAM4 Cds coeffient +$ MNMEANP, WNMEANPTAIL : power of wavenumber +$ for mean definitions in Sds and tail +$ SDSDELTA1, SDSDELTA2 : relative weights +$ of k and k^2 parts of WAM4 dissipation +$ SDSLF, SDSHF : coefficient for activation of +$ WAM4 dissipation for unsaturated (SDSLF) and +$ saturated (SDSHF) parts of the spectrum +$ SDSC2 : Saturation dissipation coefficient +$ SDSC4 : Value of B0=B/Br for wich Sds is zero +$ SDSBR : Threshold Br for saturation +$ SDSP : power of (B/Br-B0) in Sds +$ SDSBR2 : Threshold Br2 for the separation of +$ WAM4 dissipation in saturated and non-saturated +$ SDSC5 : coefficient for turbulence dissipation +$ SDSC6 : Weight for the istropic part of Sds_SAT +$ SDSDTH: Angular half-width for integration of B +$ +$ BYDRZ : Namelist SDS6 +$ SDSET : Select threshold normalization spectra +$ SDSA1, SDSA2, SDSP1, SDSP2 : +$ Coefficients for dissipation terms T1 and T2 +$ : Namelist SWL6 +$ SWLB1 : Coefficient for swell dissipation +$ +$ Bottom friction - - - - - - - - - - - - - - - - - - - - - - - - - - +$ JONSWAP : Namelist SBT1 +$ GAMMA : Bottom friction emprical constant +$ +$ +$ Surf breaking - - - - - - - - - - - - - - - - - - - - - - - - - - - +$ Battjes and Janssen : Namelist SDB1 +$ BJALFA : Dissipation constant (default = 1) +$ BJGAM : Breaking threshold (default = 0.73) +$ BJFLAG : TRUE - Use Hmax/d ratio only (default) +$ FALSE - Use Hmax/d in Miche formulation +$ +$ Dissipation in the ice - - - - - - - - - - - - - - - - - - - - - - +$ Generalization of Liu et al. : Namelist SIC2 +$ IC2DISPER : If true uses Liu formulation with eddy viscosity +$ If false, uses the generalization with turbulent +$ to laminar transition +$ IC2TURB : empirical factor for the turbulent part +$ IC2ROUGH : under-ice roughness length +$ IC2REYNOLDS: Re number for laminar to turbulent transition +$ IC2SMOOTH : smoothing of transition reprensenting random waves +$ IC2VISC : empirical factor for viscous part +$ +$ +$ Scattering in the ice & creep dissipations- - - - - - - - - - - - - +$ Generalization of Wiliams et al. : Namelist SIS2 +$ ISC1 : scattering coefficient (default = 1) +$ IS2BACKSCAT : fraction of energy back-scattered (default = 1 ) +$ IS2BREAK : TRUE - changes floe max diameter +$ : FALSE - does not change floe max diameter +$ IS2C1 : scattering in pack ice +$ IS2C2 : frequency dependance of scattering in pack ice +$ IS2C3 : frequency dependance of scattering in pack ice +$ ISBACKSCAT : fraction of scattered energy actualy redistributed +$ IS2DISP : use of ice-specific dispersion relation (T/F) +$ FRAGILITY : parameter between 0 and 1 that gives the shape of FSD +$ IS2DMIN : minimum floe diameter in meters +$ IS2DAMP : multiplicative coefficient for dissipation term from RP +$ IS2UPDATE : TRUE - updates the max floe diameter with forcing only +$ : FALSE - updates the max floe diameter at each time step +$ +$ Dissipation by sea ice +$ Empirical/parametric representations : Namelist SIC4 +$ IC4METHOD : integer 1 to 7 +$ : In most cases, additional input +$ : is required. +$ : See examples in /regtests/ww3_tic1.1/ +$ : See also: 1) description in manual +$ : and 2) inline documentation in +$ w3sic4md.ftn +$ +$ Triad nonlinear interactions - - - - - - - - - - - - - - - - - - - - +$ Lumped Triad Interaction (LTA) : Namelist STR1 (To be implemented) +$ PTRIAD1 : Proportionality coefficient (default 0.05) +$ PTRIAD2 : Multiple of Tm01 up to which interaction +$ is computed (2.5) +$ PTRIAD3 : Ursell upper limit for computing +$ interactions (not used, default 10.) +$ PTRIAD4 : Shape parameter for biphase +$ computation (0.2) +$ PTRIAD5 : Ursell number treshold for computing +$ interactions (0.01) +$ +$ Shoreline reflections - - - - - - - - - - - - - - - - - - - - - - - - +$ ref. parameters : Namelist REF1 +$ REFCOAST : Reflection coefficient at shoreline +$ REFFREQ : Activation of freq-dependent ref. +$ REFMAP : Scale factor for bottom slope map +$ REFRMAX : maximum ref. coeffient (default 0.8) +$ REFFREQPOW: power of frequency +$ REFICEBERG: Reflection coefficient for icebergs +$ REFSUBGRID: Reflection coefficient for islands +$ REFCOSP_STRAIGHT: power of cosine used for +$ straight shoreline +$ +$ Bound 2nd order spectrum and free IG - - - - - - - - - - - - - - - - - +$ IG1 parameters : Namelist SIG1 +$ IGMETHOD : 1: Hasselmann, 2: Krasitskii-Janssen +$ IGADDOUTP : activation of bound wave correction +$ in ww3_outp / ww3_ounp +$ IGSOURCE : 1: uses bound waves, 2: empirical +$ IGSTERMS : > 0 : no source term in IG band +$ IGMAXFREQ : maximum frequency of IG band +$ IGEMPIRICAL: constant in empirical free IG source +$ IGBCOVERWRITE: T: Replaces IG spectrum, does not add +$ IGSWELLMAX: T: activates free IG sources for all freq. +$ +$ +$ Propagation schemes ------------------------------------------------ $ +$ First order : Namelist PRO1 +$ CFLTM : Maximum CFL number for refraction. +$ +$ UQ/UNO with diffusion : Namelist PRO2 +$ CFLTM : Maximum CFL number for refraction. +$ DTIME : Swell age (s) in garden sprinkler +$ correction. If 0., all diffusion +$ switched off. If small non-zero +$ (DEFAULT !!!) only wave growth +$ diffusion. +$ LATMIN : Maximum latitude used in calc. of +$ strength of diffusion for prop. +$ +$ UQ/UNO with averaging : Namelist PRO3 +$ CFLTM : Maximum CFL number for refraction. +$ WDTHCG : Tuning factor propag. direction. +$ WDTHTH : Tuning factor normal direction. +$ +$ Note that UQ and UNO schemes have no tunable parameters. +$ All tuneable parameters are associated with the refraction +$ limitation and the GSE alleviation. +$ +$ Unstructured grids ------------------------------------------------ $ +$ UNST parameters : Namelist UNST +$ UGOBCAUTO : TRUE: OBC points are taken from type 15 elements +$ FALSE: OBC points must be listed in ww3_grid.inp +$ UGOBCDEPTH: Threshold ( < 0) depth for OBC points if UGOBCAUTO is TRUE +$ EXPFSN : Activation of N scheme +$ EXPFSPSI : Activation of PSI scheme +$ EXPFSFCT : Activation of FCT scheme +$ IMPFSN : Activation of N implicit scheme +$ IMPTOTAL : Activation of fully implicit scheme | Non splitting +$ EXPTOTAL : Turn on implicit refraction (only with imptotal) +$ IMPREFRACTION : Turn on implicit freq. shift (only with imptotal) +$ IMPFREQSHIFT : Turn on implicit freq. shift terms (only with imptotal) +$ IMPSOURCE : Turn on implicit source terms (only with imptotal) +$ JGS_TERMINATE_MAXITER : max. Number of iterations +$ JGS_TERMINATE_DIFFERENCE : terminate based on the total change of wave action +$ JGS_TERMINATE_NORM : terminate based on the norm of the solution +$ JGS_USE_JACOBI : Use Jacobi solver for imptotal +$ JGS_BLOCK_GAUSS_SEIDEL : Use Block Gauss Seidel method for imptotal +$ JGS_MAXITER : max. Number of solver iterations +$ JGS_PMIN : % of grid points that do not need to converge during solver iteration. +$ JGS_DIFF_THR : implicit solver threshold for JGS_TERMINATE_DIFFERENCE +$ JGS_NORM_THR : terminate based on the norm of the solution +$ SETUP_APPLY_WLV : Compute wave setup (experimental) +$ SOLVERTHR_SETUP : Solver threshold for setup computations +$ CRIT_DEP_SETUP : Critical depths for setup computations +$ +$ SMC grid propagation : Namelist PSMC and default values +$ CFLTM : Maximum CFL no. for propagation, 0.7 +$ DTIME : Swell age for diffusion term (s), 0.0 +$ LATMIN : Maximum latitude (deg) for GCT, 86.0 +$ RFMAXD : Maximum refraction turning (deg), 80.0 +$ LvSMC : No. of refinement level, default 1 +$ ISHFT : Shift number of i-index, default 0 +$ JEQT : Shift number of j-index, default 0 +$ NBISMC : No. of input boundary points, 0 +$ UNO3 : Use 3rd order advection scheme, .FALSE. +$ AVERG : Add extra spatial averaging, .FALSE. +$ SEAWND : Use sea-point only wind input. .FALSE. +$ &PSMC DTIME = 39600.0, LATMIN=85.0, RFMAXD = 36.0, LvSMC=3, JEQT=1344 / +$ +$ Rotated pole ------------------------------------------------------ $ +$ Pole parameters : Namelist ROTD +$ PLAT : Rotated pole latitude +$ PLON : Rotated pole longitude +$ UNROT : Logical, un-rotate directions to +$ true north +$ +$ Compile switch /RTD required. +$ +$ These will be used to derive rotation angle corrections in the +$ model. The corrections are used for rotation of boundary spectra +$ and for restoring conventional lat/lon orientation of the +$ output spectra, mean direction or any related variables. +$ The PLAT/LON example below is a standard setting for Met +$ Office UK regional models. +$ +$ &ROTD PLAT = 37.5, PLON = 177.5, UNROT = .TRUE. / +$ +$ The default values for ROTD represent a non-rotated lat/lon grid: +$ +$ &ROTD PLAT = 90.0, PLON = -180.0, UNROT = .FALSE. / +$ +$ Output boundary conditions to rotated pole grids ------------------ $ +$ +$ Pole parameters : Namelist ROTB +$ BPLAT(1:9) : Pole latitude of each destination grid +$ BPLON(1:9) : Pole longitude of each destination grid +$ +$ Compile switch /RTD required. +$ +$ In ww3_grid.nml the output boundary points are defined via OUTBND_COUNT_NML +$ and OUTBND_LINE_NML namelist as a number of straight lines in the reference +$ system of each destination grid. The index J of BPLAT(J),BPLON(J) is +$ incremented by one where a new output file is started by specifying a +$ negative value for the number of points OUTBND_LINE(I)%NP. +$ +$ Each destination may be either a rotated grid or a standard (non-rotated) +$ lat/lon grid. The default values for ROTB represent standard lat/lon grids: +$ +$ &ROTB BPLAT(1)=90., BPLON(1)=-180., BPLAT(2)=90. / $ (etc.) +$ +$ Output of 3D arrays------------------------------------------------- $ +$ In order to limit the use of memory, arrays for 3D output fiels (i.e. +$ variables that are a function of both space and frequency, are not +$ declared, and thus cannot be used, unless specified by namelists. +$ NB: Output of 'first 5' moments E, th1m, sth1m, th2, sth2m allows to estimate the full +$ directional spectrum using, e.g. MEM (Lygre&Krogstad 1986). +$ +$ Parameters (integers) : Namelist OUTS +$ For the frequency spectrum E(f) +$ E3D : <=0: not declared, > 0: declared +$ I1E3D : First frequency index of output (default is 1) +$ I2E3D : Last frequency index of output (default is NK) +$ For the mean direction th1m(f), and spread sth1m(f) +$ TH1MF, STH1MF : <=0: not declared, > 0: declared +$ I1TH1MF, I1STH1MF: First frequency index of output (default is 1) +$ I2TH1MF, I2STH1MF: First frequency index of output (default is 1) +$ For the mean direction th2m(f), and spread sth2m(f) +$ TH2MF, STH2MF : <=0: not declared, > 0: declared +$ I1TH2MF, I1STH2MF: First frequency index of output (default is 1) +$ I2TH2MF, I2STH2MF: First frequency index of output (default is 1) +$ For 2nd order pressure at K=0 (source of microseisms & microbaroms) +$ P2SF : <=0: not declared, > 0: declared +$ I1P2SF : First frequency index of output (default is 1) +$ I2P2SF : Last frequency index of output (default is NK) +$ For the surface Stokes drift partitions (USP) +$ USSP : First index (default is 1, should always be 1) +$ IUSSP : Last index (must be <= than NK and should be +$ between 3 and ~10 with the tradeoff +$ between accuracy and resources) +$ STK_WN : List of wavenumbers (size of IUSSP) +$ e.g.: USSP = 1, IUSSP=3, STK_WN = 0.04, 0.11, 0.33 +$ provides 3 partitions of both x & y component, +$ with a reasonable accuracy for using in +$ a climate model. +$ +$ Miscellaneous ------------------------------------------------------ $ +$ Misc. parameters : Namelist MISC +$ CICE0 : Ice concentration cut-off. +$ CICEN : Ice concentration cut-off. +$ PMOVE : Power p in GSE aleviation for +$ moving grids in Eq. (D.4). +$ XSEED : Xseed in seeding alg. (!/SEED). +$ FLAGTR : Indicating presence and type of +$ subgrid information : +$ 0 : No subgrid information. +$ 1 : Transparancies at cell boun- +$ daries between grid points. +$ 2 : Transp. at cell centers. +$ 3 : Like 1 with cont. ice. +$ 4 : Like 2 with cont. ice. +$ TRCKCMPR : Logical variable (T/F). Set to F to +$ disable "compression" of track output. +$ This simplifies post-processing. +$ Default is T and will create track +$ output in the traditional manner +$ (WW3 v3, v4, v5). +$ XP, XR, XFILT +$ Xp, Xr and Xf for the dynamic +$ integration scheme. +$ IHMAX : Number of discrete levels in part. +$ HSPMIN : Minimum Hs in partitioning. +$ WSM : Wind speed multiplier in part. +$ WSC : Cut of wind sea fraction for +$ identifying wind sea in part. +$ FLC : Flag for combining wind seas in +$ partitioning. +$ NOSW : Number of partitioned swell fields +$ in field output. +$ PTM : Partioning method: +$ 1 : Default WW3 +$ 2 : Watershedding + wind cutoff +$ 3 : Watershedding only +$ 4 : Wind speed cutoff only +$ 5 : High/Low band cutoff (see PTFC) +$ PTFC : Cutouf frequency for High/Low band +$ partioning (PTM=5). Default = 0.1Hz +$ FMICHE : Constant in Miche limiter. +$ STDX : Space-Time Extremes X-Length +$ STDY : Space-Time Extremes Y-Length +$ STDT : Space-Time Extremes Duration +$ P2SF : ...... +$ +$ Diagnostic Sea-state Dependent Stress- - - - - - - - - - - - - - - - - +$ Reichl et al. 2014 : Namelist FLD1 +$ TAILTYPE : High Frequency Tail Method +$ 0: Constant value (prescribed) +$ 1: Wind speed dependent +$ (Based on GFDL Hurricane +$ Model Z0 relationship) +$ TAILLEV : Level of high frequency tail +$ (if TAILTYPE==0) +$ Valid choices: +$ Capped min: 0.001, max: 0.02 +$ TAILT1 : Tail transition ratio 1 +$ TAILT1*peak input frequency +$ is the first transition point of +$ the saturation specturm +$ Default is 1.25 +$ TAILT1 : Tail transition ratio 2 +$ TAILT2*peak input frequency +$ is the second transition point of +$ the saturation specturm +$ Default is 3.00 +$ Donelan et al. 2012 : Namelist FLD2 +$ TAILTYPE : See above (FLD1) +$ TAILLEV : See above (FLD1) +$ TAILT1 : See above (FLD1) +$ TAILT2 : See above (FLD1) $ $ In the 'Out of the box' test setup we run with sub-grid obstacles $ and with continuous ice treatment. From 47c6070954a15f5185daa6a2a55bf50077411765 Mon Sep 17 00:00:00 2001 From: "ukmo-chris.bunney" Date: Wed, 29 Jul 2020 10:33:23 +0100 Subject: [PATCH 06/10] Added regtests for testing input/output BCs in rotated pole context. --- regtests/ww3_tr1/info | 45 +++++++++ regtests/ww3_tr1/input/switch | 1 + regtests/ww3_tr1/input/ww3_grid.inp | 58 ++++++++++++ regtests/ww3_tr1/input/ww3_outp.inp | 10 ++ regtests/ww3_tr1/input/ww3_shel.inp | 34 +++++++ regtests/ww3_tr1/input_bndin/bnd1.spc | 101 +++++++++++++++++++++ regtests/ww3_tr1/input_bndin/bnd2.spc | 101 +++++++++++++++++++++ regtests/ww3_tr1/input_bndin/bnd3.spc | 101 +++++++++++++++++++++ regtests/ww3_tr1/input_bndin/switch | 1 + regtests/ww3_tr1/input_bndin/ww3_bound.inp | 12 +++ regtests/ww3_tr1/input_bndin/ww3_grid.inp | 39 ++++++++ regtests/ww3_tr1/input_bndin/ww3_outp.inp | 10 ++ regtests/ww3_tr1/input_bndin/ww3_shel.inp | 31 +++++++ regtests/ww3_tr1/input_std/switch | 1 + regtests/ww3_tr1/input_std/ww3_grid.inp | 56 ++++++++++++ regtests/ww3_tr1/input_std/ww3_outp.inp | 10 ++ regtests/ww3_tr1/input_std/ww3_shel.inp | 34 +++++++ 17 files changed, 645 insertions(+) create mode 100644 regtests/ww3_tr1/info create mode 100644 regtests/ww3_tr1/input/switch create mode 100644 regtests/ww3_tr1/input/ww3_grid.inp create mode 100644 regtests/ww3_tr1/input/ww3_outp.inp create mode 100644 regtests/ww3_tr1/input/ww3_shel.inp create mode 100644 regtests/ww3_tr1/input_bndin/bnd1.spc create mode 100644 regtests/ww3_tr1/input_bndin/bnd2.spc create mode 100644 regtests/ww3_tr1/input_bndin/bnd3.spc create mode 100644 regtests/ww3_tr1/input_bndin/switch create mode 100644 regtests/ww3_tr1/input_bndin/ww3_bound.inp create mode 100644 regtests/ww3_tr1/input_bndin/ww3_grid.inp create mode 100644 regtests/ww3_tr1/input_bndin/ww3_outp.inp create mode 100644 regtests/ww3_tr1/input_bndin/ww3_shel.inp create mode 100644 regtests/ww3_tr1/input_std/switch create mode 100644 regtests/ww3_tr1/input_std/ww3_grid.inp create mode 100644 regtests/ww3_tr1/input_std/ww3_outp.inp create mode 100644 regtests/ww3_tr1/input_std/ww3_shel.inp diff --git a/regtests/ww3_tr1/info b/regtests/ww3_tr1/info new file mode 100644 index 0000000000..9c8cf857ae --- /dev/null +++ b/regtests/ww3_tr1/info @@ -0,0 +1,45 @@ +############################################################################# +# # +# ww3_tr1: Test script for nest file input/output with rotated pole grids. # +# # +# Model should be compiled with the switches : # +# # +# !/PR1 First order propagation # +# !/RTD Rotated pole support # +# !/O1 Output boundary locations from WW3_GRID program # +# # +# Remarks : # +# # +# 3 tests are provided in seperate input directories: # +# - [input] : A rotated pole grid forced with homogeneous wind that # +# outputs boundary conditions on 3 grids with different poles. # +# # +# - [input_std] : As above, but formulated on a standard pole grid. # +# # +# - [input_bndin] : A rotated pole grid with input boundary conditions # +# on the western edge of the domain. Used to check the correct # +# ingestion of nest files (always formulated on a standard pole) # +# in to a rotated pole grid. # +# # +# For the first two tests, the rotated and standard pole grids have been # +# setup in such a way that the cells on their eastern (sea point) edges # +# align at 2.5W (grid north points in the same direction for all grids # +# along this longitude). This faciliates the selection of nest output # +# points for each output grid as the longitudes are invariant and the # +# latitudes vary by the same amount (1 deg). # +# # +# Example run_test commands: # +# (some details will vary by local system and configuration) # +# ./bin/run_test ../model ww3_tr1 # +# ./bin/run_test -i input_std -w work_std ../model ww3_tr1 # +# ./bin/run_test -i input_bndin -w work_bndin ../model ww3_tr1 # +# # +# Chris Bunney, Jul 2020 # +# Last Mod : Jul 2020 # +# # +# Copyright 2009-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. # +# # +############################################################################# diff --git a/regtests/ww3_tr1/input/switch b/regtests/ww3_tr1/input/switch new file mode 100644 index 0000000000..be8e68fb7e --- /dev/null +++ b/regtests/ww3_tr1/input/switch @@ -0,0 +1 @@ +F90 SHRD RTD PR1 FLX1 LN1 ST1 NL1 BT0 IC0 IS0 REF0 DB0 TR0 BS0 XX0 WNT1 WNX1 CRT1 CRX1 NOGRB O1 diff --git a/regtests/ww3_tr1/input/ww3_grid.inp b/regtests/ww3_tr1/input/ww3_grid.inp new file mode 100644 index 0000000000..dde54802b3 --- /dev/null +++ b/regtests/ww3_tr1/input/ww3_grid.inp @@ -0,0 +1,58 @@ +$ + 'RTD pole BCs test (RTD grid)' +$ +$ Grid formulated on rotated pole located at 37.5N, 177.5E. +$ This means that the rotated grid north is algined with the +$ standard pole grid north at longitudes of 2.5W. +$ +$ This test produces boundaries conditions on three different +$ grids: +$ - a rotated pole grid with the same pole +$ - a rotated pole grid with a different pole (30.5N, 177.5E) +$ - a standand pole grid +$ The boundary points for the 3 grid are collocated with the +$ eastern seapoint edge of the model grid. +$ +$ 1.1 0.067 20 24 0. + 1.1 0.11 13 24 0. +$ + F T T F F T +$ + 3600 1800 1800 60 +$ + &ROTD PLAT = 37.5, PLON = 177.5, UNROT = .TRUE. / + &ROTB BPLAT(1) = 37.5, BPLON(1) = 177.5, + BPLAT(2) = 30.5, BPLON(2) = 177.5, + BPLAT(3) = 90.0, BPLON(3) = -180.0 / +END OF NAMELISTS +$ + 'RECT' T 'NONE' + 10 10 + 1.0 1.0 1.0 + -8.0 0.0 1.0 + -0.1 10.0 10 -100. 4 1 '(...)' 'NAME' 'dummy' +$ + 100*2 +$ + 10 3 1 '(...)' 'NAME' 'dummy' +$ + 3 3 3 3 3 3 3 3 3 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 3 3 3 3 3 3 3 3 3 +$ +$ +$ Output boundaries (both along eastern edge of domain, but +$ formulated on different poles): +$ + 0.0 1.0 0.0 1.0 8 + 0.0 -6.0 0.0 1.0 -8 + -2.5 53.5 0.0 1.0 -8 + 0. 0. 0. 0. 0 +$ diff --git a/regtests/ww3_tr1/input/ww3_outp.inp b/regtests/ww3_tr1/input/ww3_outp.inp new file mode 100644 index 0000000000..04cb50ef2d --- /dev/null +++ b/regtests/ww3_tr1/input/ww3_outp.inp @@ -0,0 +1,10 @@ +$ + 20010101 060000 3600. 1 +$ + 1 + 2 + -1 +$ + 2 + 2 66 +$ diff --git a/regtests/ww3_tr1/input/ww3_shel.inp b/regtests/ww3_tr1/input/ww3_shel.inp new file mode 100644 index 0000000000..a98f2b49c6 --- /dev/null +++ b/regtests/ww3_tr1/input/ww3_shel.inp @@ -0,0 +1,34 @@ +$ + F F Water levels + F F Currents + T T Winds + F Ice concentrations + F Assimilation data : Mean parameters + F Assimilation data : 1-D spectra + F Assimilation data : 2-D spectra +$ + 20010101 000000 + 20010101 060000 +$ + 2 +$ + 20010101 000000 3600 20010101 060000 + N + HS WND DIR +$ + 20010101 000000 3600 20010101 060000 + -16.4 59.8 'NorthWest ' + -2.5 60.5 'NorthEast ' + 0.0 0.0 'STOPSTRING' +$ + 20010101 000000 0 20010101 000000 +$ + 20010101 000000 0 20010101 000000 +$ + 20010101 000000 3600 20010101 060000 +$ + 20010101 000000 0 20010101 000000 +$ + 'WND' 20010101 000000 10. 180. 0.0 + 'STP' +$ diff --git a/regtests/ww3_tr1/input_bndin/bnd1.spc b/regtests/ww3_tr1/input_bndin/bnd1.spc new file mode 100644 index 0000000000..bb9e702cc2 --- /dev/null +++ b/regtests/ww3_tr1/input_bndin/bnd1.spc @@ -0,0 +1,101 @@ +'WAVEWATCH III SPECTRA' 13 24 1 ' Unknown' + 6.670E-02 7.337E-02 8.071E-02 8.878E-02 9.766E-02 1.074E-01 1.182E-01 1.300E-01 + 1.430E-01 1.573E-01 1.730E-01 1.903E-01 2.093E-01 + 1.571E+00 1.309E+00 1.047E+00 7.854E-01 5.236E-01 2.618E-01 0.000E+00 + 6.021E+00 5.760E+00 5.498E+00 5.236E+00 4.974E+00 4.712E+00 4.451E+00 + 4.189E+00 3.927E+00 3.665E+00 3.403E+00 3.142E+00 2.880E+00 2.618E+00 + 2.356E+00 2.094E+00 1.833E+00 +20010101 000000 +'spec1 ' 51.80 -15.50 0.0 0.00 0.0 0.00 270.0 + 8.736E-02 3.718E-01 8.852E-01 1.840E+00 4.062E+00 2.712E+00 1.293E+00 + 8.843E-01 6.259E-01 4.257E-01 2.813E-01 1.823E-01 1.165E-01 2.876E-02 + 1.224E-01 2.914E-01 6.057E-01 1.337E+00 8.927E-01 4.256E-01 2.911E-01 + 2.061E-01 1.402E-01 9.261E-02 6.000E-02 3.835E-02 9.871E-04 4.201E-03 + 1.000E-02 2.079E-02 4.590E-02 3.064E-02 1.461E-02 9.992E-03 7.072E-03 + 4.810E-03 3.179E-03 2.059E-03 1.316E-03 3.126E-06 1.330E-05 3.167E-05 + 6.583E-05 1.453E-04 9.702E-05 4.625E-05 3.164E-05 2.240E-05 1.523E-05 + 1.007E-05 6.521E-06 4.168E-06 7.299E-10 3.106E-09 7.396E-09 1.537E-08 + 3.394E-08 2.266E-08 1.080E-08 7.388E-09 5.230E-09 3.557E-09 2.350E-09 + 1.523E-09 9.734E-10 8.732E-15 3.716E-14 8.848E-14 1.839E-13 4.060E-13 + 2.710E-13 1.292E-13 8.839E-14 6.256E-14 4.255E-14 2.812E-14 1.822E-14 + 1.164E-14 3.005E-21 1.279E-20 3.045E-20 6.329E-20 1.397E-19 9.328E-20 + 4.447E-20 3.042E-20 2.153E-20 1.465E-20 9.677E-21 6.270E-21 4.008E-21 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 3.005E-21 1.279E-20 3.045E-20 6.329E-20 + 1.397E-19 9.328E-20 4.447E-20 3.042E-20 2.153E-20 1.465E-20 9.677E-21 + 6.270E-21 4.008E-21 8.732E-15 3.716E-14 8.848E-14 1.839E-13 4.060E-13 + 2.710E-13 1.292E-13 8.839E-14 6.256E-14 4.255E-14 2.812E-14 1.822E-14 + 1.164E-14 7.299E-10 3.106E-09 7.396E-09 1.537E-08 3.394E-08 2.266E-08 + 1.080E-08 7.388E-09 5.230E-09 3.557E-09 2.350E-09 1.523E-09 9.734E-10 + 3.126E-06 1.330E-05 3.167E-05 6.583E-05 1.453E-04 9.702E-05 4.625E-05 + 3.164E-05 2.240E-05 1.523E-05 1.007E-05 6.521E-06 4.168E-06 9.871E-04 + 4.201E-03 1.000E-02 2.079E-02 4.590E-02 3.064E-02 1.461E-02 9.992E-03 + 7.072E-03 4.810E-03 3.179E-03 2.059E-03 1.316E-03 2.876E-02 1.224E-01 + 2.914E-01 6.057E-01 1.337E+00 8.927E-01 4.256E-01 2.911E-01 2.061E-01 + 1.402E-01 9.261E-02 6.000E-02 3.835E-02 +20010102 000000 +'spec1 ' 51.80 -15.50 0.0 0.00 0.0 0.00 270.0 + 8.736E-02 3.718E-01 8.852E-01 1.840E+00 4.062E+00 2.712E+00 1.293E+00 + 8.843E-01 6.259E-01 4.257E-01 2.813E-01 1.823E-01 1.165E-01 2.876E-02 + 1.224E-01 2.914E-01 6.057E-01 1.337E+00 8.927E-01 4.256E-01 2.911E-01 + 2.061E-01 1.402E-01 9.261E-02 6.000E-02 3.835E-02 9.871E-04 4.201E-03 + 1.000E-02 2.079E-02 4.590E-02 3.064E-02 1.461E-02 9.992E-03 7.072E-03 + 4.810E-03 3.179E-03 2.059E-03 1.316E-03 3.126E-06 1.330E-05 3.167E-05 + 6.583E-05 1.453E-04 9.702E-05 4.625E-05 3.164E-05 2.240E-05 1.523E-05 + 1.007E-05 6.521E-06 4.168E-06 7.299E-10 3.106E-09 7.396E-09 1.537E-08 + 3.394E-08 2.266E-08 1.080E-08 7.388E-09 5.230E-09 3.557E-09 2.350E-09 + 1.523E-09 9.734E-10 8.732E-15 3.716E-14 8.848E-14 1.839E-13 4.060E-13 + 2.710E-13 1.292E-13 8.839E-14 6.256E-14 4.255E-14 2.812E-14 1.822E-14 + 1.164E-14 3.005E-21 1.279E-20 3.045E-20 6.329E-20 1.397E-19 9.328E-20 + 4.447E-20 3.042E-20 2.153E-20 1.465E-20 9.677E-21 6.270E-21 4.008E-21 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 3.005E-21 1.279E-20 3.045E-20 6.329E-20 + 1.397E-19 9.328E-20 4.447E-20 3.042E-20 2.153E-20 1.465E-20 9.677E-21 + 6.270E-21 4.008E-21 8.732E-15 3.716E-14 8.848E-14 1.839E-13 4.060E-13 + 2.710E-13 1.292E-13 8.839E-14 6.256E-14 4.255E-14 2.812E-14 1.822E-14 + 1.164E-14 7.299E-10 3.106E-09 7.396E-09 1.537E-08 3.394E-08 2.266E-08 + 1.080E-08 7.388E-09 5.230E-09 3.557E-09 2.350E-09 1.523E-09 9.734E-10 + 3.126E-06 1.330E-05 3.167E-05 6.583E-05 1.453E-04 9.702E-05 4.625E-05 + 3.164E-05 2.240E-05 1.523E-05 1.007E-05 6.521E-06 4.168E-06 9.871E-04 + 4.201E-03 1.000E-02 2.079E-02 4.590E-02 3.064E-02 1.461E-02 9.992E-03 + 7.072E-03 4.810E-03 3.179E-03 2.059E-03 1.316E-03 2.876E-02 1.224E-01 + 2.914E-01 6.057E-01 1.337E+00 8.927E-01 4.256E-01 2.911E-01 2.061E-01 + 1.402E-01 9.261E-02 6.000E-02 3.835E-02 diff --git a/regtests/ww3_tr1/input_bndin/bnd2.spc b/regtests/ww3_tr1/input_bndin/bnd2.spc new file mode 100644 index 0000000000..c71b2ed55e --- /dev/null +++ b/regtests/ww3_tr1/input_bndin/bnd2.spc @@ -0,0 +1,101 @@ +'WAVEWATCH III SPECTRA' 13 24 1 ' Unknown' + 6.670E-02 7.337E-02 8.071E-02 8.878E-02 9.766E-02 1.074E-01 1.182E-01 1.300E-01 + 1.430E-01 1.573E-01 1.730E-01 1.903E-01 2.093E-01 + 1.571E+00 1.309E+00 1.047E+00 7.854E-01 5.236E-01 2.618E-01 0.000E+00 + 6.021E+00 5.760E+00 5.498E+00 5.236E+00 4.974E+00 4.712E+00 4.451E+00 + 4.189E+00 3.927E+00 3.665E+00 3.403E+00 3.142E+00 2.880E+00 2.618E+00 + 2.356E+00 2.094E+00 1.833E+00 +20010101 000000 +'spec2 ' 56.70 -17.10 0.0 0.00 0.0 0.00 270.0 + 8.736E-02 3.718E-01 8.852E-01 1.840E+00 4.062E+00 2.712E+00 1.293E+00 + 8.843E-01 6.259E-01 4.257E-01 2.813E-01 1.823E-01 1.165E-01 2.876E-02 + 1.224E-01 2.914E-01 6.057E-01 1.337E+00 8.927E-01 4.256E-01 2.911E-01 + 2.061E-01 1.402E-01 9.261E-02 6.000E-02 3.835E-02 9.871E-04 4.201E-03 + 1.000E-02 2.079E-02 4.590E-02 3.064E-02 1.461E-02 9.992E-03 7.072E-03 + 4.810E-03 3.179E-03 2.059E-03 1.316E-03 3.126E-06 1.330E-05 3.167E-05 + 6.583E-05 1.453E-04 9.702E-05 4.625E-05 3.164E-05 2.240E-05 1.523E-05 + 1.007E-05 6.521E-06 4.168E-06 7.299E-10 3.106E-09 7.396E-09 1.537E-08 + 3.394E-08 2.266E-08 1.080E-08 7.388E-09 5.230E-09 3.557E-09 2.350E-09 + 1.523E-09 9.734E-10 8.732E-15 3.716E-14 8.848E-14 1.839E-13 4.060E-13 + 2.710E-13 1.292E-13 8.839E-14 6.256E-14 4.255E-14 2.812E-14 1.822E-14 + 1.164E-14 3.005E-21 1.279E-20 3.045E-20 6.329E-20 1.397E-19 9.328E-20 + 4.447E-20 3.042E-20 2.153E-20 1.465E-20 9.677E-21 6.270E-21 4.008E-21 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 3.005E-21 1.279E-20 3.045E-20 6.329E-20 + 1.397E-19 9.328E-20 4.447E-20 3.042E-20 2.153E-20 1.465E-20 9.677E-21 + 6.270E-21 4.008E-21 8.732E-15 3.716E-14 8.848E-14 1.839E-13 4.060E-13 + 2.710E-13 1.292E-13 8.839E-14 6.256E-14 4.255E-14 2.812E-14 1.822E-14 + 1.164E-14 7.299E-10 3.106E-09 7.396E-09 1.537E-08 3.394E-08 2.266E-08 + 1.080E-08 7.388E-09 5.230E-09 3.557E-09 2.350E-09 1.523E-09 9.734E-10 + 3.126E-06 1.330E-05 3.167E-05 6.583E-05 1.453E-04 9.702E-05 4.625E-05 + 3.164E-05 2.240E-05 1.523E-05 1.007E-05 6.521E-06 4.168E-06 9.871E-04 + 4.201E-03 1.000E-02 2.079E-02 4.590E-02 3.064E-02 1.461E-02 9.992E-03 + 7.072E-03 4.810E-03 3.179E-03 2.059E-03 1.316E-03 2.876E-02 1.224E-01 + 2.914E-01 6.057E-01 1.337E+00 8.927E-01 4.256E-01 2.911E-01 2.061E-01 + 1.402E-01 9.261E-02 6.000E-02 3.835E-02 +20010102 000000 +'spec2 ' 56.70 -17.10 0.0 0.00 0.0 0.00 270.0 + 8.736E-02 3.718E-01 8.852E-01 1.840E+00 4.062E+00 2.712E+00 1.293E+00 + 8.843E-01 6.259E-01 4.257E-01 2.813E-01 1.823E-01 1.165E-01 2.876E-02 + 1.224E-01 2.914E-01 6.057E-01 1.337E+00 8.927E-01 4.256E-01 2.911E-01 + 2.061E-01 1.402E-01 9.261E-02 6.000E-02 3.835E-02 9.871E-04 4.201E-03 + 1.000E-02 2.079E-02 4.590E-02 3.064E-02 1.461E-02 9.992E-03 7.072E-03 + 4.810E-03 3.179E-03 2.059E-03 1.316E-03 3.126E-06 1.330E-05 3.167E-05 + 6.583E-05 1.453E-04 9.702E-05 4.625E-05 3.164E-05 2.240E-05 1.523E-05 + 1.007E-05 6.521E-06 4.168E-06 7.299E-10 3.106E-09 7.396E-09 1.537E-08 + 3.394E-08 2.266E-08 1.080E-08 7.388E-09 5.230E-09 3.557E-09 2.350E-09 + 1.523E-09 9.734E-10 8.732E-15 3.716E-14 8.848E-14 1.839E-13 4.060E-13 + 2.710E-13 1.292E-13 8.839E-14 6.256E-14 4.255E-14 2.812E-14 1.822E-14 + 1.164E-14 3.005E-21 1.279E-20 3.045E-20 6.329E-20 1.397E-19 9.328E-20 + 4.447E-20 3.042E-20 2.153E-20 1.465E-20 9.677E-21 6.270E-21 4.008E-21 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 3.005E-21 1.279E-20 3.045E-20 6.329E-20 + 1.397E-19 9.328E-20 4.447E-20 3.042E-20 2.153E-20 1.465E-20 9.677E-21 + 6.270E-21 4.008E-21 8.732E-15 3.716E-14 8.848E-14 1.839E-13 4.060E-13 + 2.710E-13 1.292E-13 8.839E-14 6.256E-14 4.255E-14 2.812E-14 1.822E-14 + 1.164E-14 7.299E-10 3.106E-09 7.396E-09 1.537E-08 3.394E-08 2.266E-08 + 1.080E-08 7.388E-09 5.230E-09 3.557E-09 2.350E-09 1.523E-09 9.734E-10 + 3.126E-06 1.330E-05 3.167E-05 6.583E-05 1.453E-04 9.702E-05 4.625E-05 + 3.164E-05 2.240E-05 1.523E-05 1.007E-05 6.521E-06 4.168E-06 9.871E-04 + 4.201E-03 1.000E-02 2.079E-02 4.590E-02 3.064E-02 1.461E-02 9.992E-03 + 7.072E-03 4.810E-03 3.179E-03 2.059E-03 1.316E-03 2.876E-02 1.224E-01 + 2.914E-01 6.057E-01 1.337E+00 8.927E-01 4.256E-01 2.911E-01 2.061E-01 + 1.402E-01 9.261E-02 6.000E-02 3.835E-02 diff --git a/regtests/ww3_tr1/input_bndin/bnd3.spc b/regtests/ww3_tr1/input_bndin/bnd3.spc new file mode 100644 index 0000000000..cc783b4bb1 --- /dev/null +++ b/regtests/ww3_tr1/input_bndin/bnd3.spc @@ -0,0 +1,101 @@ +'WAVEWATCH III SPECTRA' 13 24 1 ' Unknown' + 6.670E-02 7.337E-02 8.071E-02 8.878E-02 9.766E-02 1.074E-01 1.182E-01 1.300E-01 + 1.430E-01 1.573E-01 1.730E-01 1.903E-01 2.093E-01 + 1.571E+00 1.309E+00 1.047E+00 7.854E-01 5.236E-01 2.618E-01 0.000E+00 + 6.021E+00 5.760E+00 5.498E+00 5.236E+00 4.974E+00 4.712E+00 4.451E+00 + 4.189E+00 3.927E+00 3.665E+00 3.403E+00 3.142E+00 2.880E+00 2.618E+00 + 2.356E+00 2.094E+00 1.833E+00 +20010101 000000 +'spec3 ' 60.60 -18.80 0.0 0.00 0.0 0.00 270.0 + 8.736E-02 3.718E-01 8.852E-01 1.840E+00 4.062E+00 2.712E+00 1.293E+00 + 8.843E-01 6.259E-01 4.257E-01 2.813E-01 1.823E-01 1.165E-01 2.876E-02 + 1.224E-01 2.914E-01 6.057E-01 1.337E+00 8.927E-01 4.256E-01 2.911E-01 + 2.061E-01 1.402E-01 9.261E-02 6.000E-02 3.835E-02 9.871E-04 4.201E-03 + 1.000E-02 2.079E-02 4.590E-02 3.064E-02 1.461E-02 9.992E-03 7.072E-03 + 4.810E-03 3.179E-03 2.059E-03 1.316E-03 3.126E-06 1.330E-05 3.167E-05 + 6.583E-05 1.453E-04 9.702E-05 4.625E-05 3.164E-05 2.240E-05 1.523E-05 + 1.007E-05 6.521E-06 4.168E-06 7.299E-10 3.106E-09 7.396E-09 1.537E-08 + 3.394E-08 2.266E-08 1.080E-08 7.388E-09 5.230E-09 3.557E-09 2.350E-09 + 1.523E-09 9.734E-10 8.732E-15 3.716E-14 8.848E-14 1.839E-13 4.060E-13 + 2.710E-13 1.292E-13 8.839E-14 6.256E-14 4.255E-14 2.812E-14 1.822E-14 + 1.164E-14 3.005E-21 1.279E-20 3.045E-20 6.329E-20 1.397E-19 9.328E-20 + 4.447E-20 3.042E-20 2.153E-20 1.465E-20 9.677E-21 6.270E-21 4.008E-21 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 3.005E-21 1.279E-20 3.045E-20 6.329E-20 + 1.397E-19 9.328E-20 4.447E-20 3.042E-20 2.153E-20 1.465E-20 9.677E-21 + 6.270E-21 4.008E-21 8.732E-15 3.716E-14 8.848E-14 1.839E-13 4.060E-13 + 2.710E-13 1.292E-13 8.839E-14 6.256E-14 4.255E-14 2.812E-14 1.822E-14 + 1.164E-14 7.299E-10 3.106E-09 7.396E-09 1.537E-08 3.394E-08 2.266E-08 + 1.080E-08 7.388E-09 5.230E-09 3.557E-09 2.350E-09 1.523E-09 9.734E-10 + 3.126E-06 1.330E-05 3.167E-05 6.583E-05 1.453E-04 9.702E-05 4.625E-05 + 3.164E-05 2.240E-05 1.523E-05 1.007E-05 6.521E-06 4.168E-06 9.871E-04 + 4.201E-03 1.000E-02 2.079E-02 4.590E-02 3.064E-02 1.461E-02 9.992E-03 + 7.072E-03 4.810E-03 3.179E-03 2.059E-03 1.316E-03 2.876E-02 1.224E-01 + 2.914E-01 6.057E-01 1.337E+00 8.927E-01 4.256E-01 2.911E-01 2.061E-01 + 1.402E-01 9.261E-02 6.000E-02 3.835E-02 +20010102 000000 +'spec3 ' 60.60 -18.80 0.0 0.00 0.0 0.00 270.0 + 8.736E-02 3.718E-01 8.852E-01 1.840E+00 4.062E+00 2.712E+00 1.293E+00 + 8.843E-01 6.259E-01 4.257E-01 2.813E-01 1.823E-01 1.165E-01 2.876E-02 + 1.224E-01 2.914E-01 6.057E-01 1.337E+00 8.927E-01 4.256E-01 2.911E-01 + 2.061E-01 1.402E-01 9.261E-02 6.000E-02 3.835E-02 9.871E-04 4.201E-03 + 1.000E-02 2.079E-02 4.590E-02 3.064E-02 1.461E-02 9.992E-03 7.072E-03 + 4.810E-03 3.179E-03 2.059E-03 1.316E-03 3.126E-06 1.330E-05 3.167E-05 + 6.583E-05 1.453E-04 9.702E-05 4.625E-05 3.164E-05 2.240E-05 1.523E-05 + 1.007E-05 6.521E-06 4.168E-06 7.299E-10 3.106E-09 7.396E-09 1.537E-08 + 3.394E-08 2.266E-08 1.080E-08 7.388E-09 5.230E-09 3.557E-09 2.350E-09 + 1.523E-09 9.734E-10 8.732E-15 3.716E-14 8.848E-14 1.839E-13 4.060E-13 + 2.710E-13 1.292E-13 8.839E-14 6.256E-14 4.255E-14 2.812E-14 1.822E-14 + 1.164E-14 3.005E-21 1.279E-20 3.045E-20 6.329E-20 1.397E-19 9.328E-20 + 4.447E-20 3.042E-20 2.153E-20 1.465E-20 9.677E-21 6.270E-21 4.008E-21 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 0.000E+00 + 0.000E+00 0.000E+00 0.000E+00 3.005E-21 1.279E-20 3.045E-20 6.329E-20 + 1.397E-19 9.328E-20 4.447E-20 3.042E-20 2.153E-20 1.465E-20 9.677E-21 + 6.270E-21 4.008E-21 8.732E-15 3.716E-14 8.848E-14 1.839E-13 4.060E-13 + 2.710E-13 1.292E-13 8.839E-14 6.256E-14 4.255E-14 2.812E-14 1.822E-14 + 1.164E-14 7.299E-10 3.106E-09 7.396E-09 1.537E-08 3.394E-08 2.266E-08 + 1.080E-08 7.388E-09 5.230E-09 3.557E-09 2.350E-09 1.523E-09 9.734E-10 + 3.126E-06 1.330E-05 3.167E-05 6.583E-05 1.453E-04 9.702E-05 4.625E-05 + 3.164E-05 2.240E-05 1.523E-05 1.007E-05 6.521E-06 4.168E-06 9.871E-04 + 4.201E-03 1.000E-02 2.079E-02 4.590E-02 3.064E-02 1.461E-02 9.992E-03 + 7.072E-03 4.810E-03 3.179E-03 2.059E-03 1.316E-03 2.876E-02 1.224E-01 + 2.914E-01 6.057E-01 1.337E+00 8.927E-01 4.256E-01 2.911E-01 2.061E-01 + 1.402E-01 9.261E-02 6.000E-02 3.835E-02 diff --git a/regtests/ww3_tr1/input_bndin/switch b/regtests/ww3_tr1/input_bndin/switch new file mode 100644 index 0000000000..be8e68fb7e --- /dev/null +++ b/regtests/ww3_tr1/input_bndin/switch @@ -0,0 +1 @@ +F90 SHRD RTD PR1 FLX1 LN1 ST1 NL1 BT0 IC0 IS0 REF0 DB0 TR0 BS0 XX0 WNT1 WNX1 CRT1 CRX1 NOGRB O1 diff --git a/regtests/ww3_tr1/input_bndin/ww3_bound.inp b/regtests/ww3_tr1/input_bndin/ww3_bound.inp new file mode 100644 index 0000000000..51dd9af57b --- /dev/null +++ b/regtests/ww3_tr1/input_bndin/ww3_bound.inp @@ -0,0 +1,12 @@ +$ + WRITE +$ READ +$ + 2 +$ + 1 +$ +../input_bndin/bnd1.spc +../input_bndin/bnd2.spc +../input_bndin/bnd3.spc +'STOPSTRING' diff --git a/regtests/ww3_tr1/input_bndin/ww3_grid.inp b/regtests/ww3_tr1/input_bndin/ww3_grid.inp new file mode 100644 index 0000000000..72bfbf899e --- /dev/null +++ b/regtests/ww3_tr1/input_bndin/ww3_grid.inp @@ -0,0 +1,39 @@ +$ + 'RTD grid input BC test' +$ Tests ingestion of BCs from nest.ww3 file for a rotated +$ pole grid. Spectra in nest.ww3 are always formulated on +$ a standard pole, so this tests correct rotation of +$ BC coordinates to model rotated pole grid. +$ + 1.1 0.067 13 24 0. +$ + F T T F F T +$ + 3600 1800 1800 60 +$ + &ROTD PLAT = 37.5, PLON = 177.5, UNROT = .FALSE. / +END OF NAMELISTS +$ + 'RECT' T 'NONE' + 10 10 + 1.0 1.0 1.0 + -8.0 0.0 1.0 + -0.1 10.0 10 -100. 4 1 '(...)' 'NAME' 'dummy' +$ + 100*2 +$ + 10 3 1 '(...)' 'NAME' 'dummy' +$ + 3 3 3 3 3 3 3 3 3 3 + 2 1 1 1 1 1 1 1 1 3 + 2 1 1 1 1 1 1 1 1 3 + 2 1 1 1 1 1 1 1 1 3 + 2 1 1 1 1 1 1 1 1 3 + 2 1 1 1 1 1 1 1 1 3 + 2 1 1 1 1 1 1 1 1 3 + 2 1 1 1 1 1 1 1 1 3 + 2 1 1 1 1 1 1 1 1 3 + 3 3 3 3 3 3 3 3 3 3 +$ + 0. 0. 0. 0. 0 +$ diff --git a/regtests/ww3_tr1/input_bndin/ww3_outp.inp b/regtests/ww3_tr1/input_bndin/ww3_outp.inp new file mode 100644 index 0000000000..4a7f009c5e --- /dev/null +++ b/regtests/ww3_tr1/input_bndin/ww3_outp.inp @@ -0,0 +1,10 @@ +$ + 20010102 000000 3600. 1 +$ + 1 + 2 + -1 +$ + 2 + 2 66 +$ diff --git a/regtests/ww3_tr1/input_bndin/ww3_shel.inp b/regtests/ww3_tr1/input_bndin/ww3_shel.inp new file mode 100644 index 0000000000..422ea7f88a --- /dev/null +++ b/regtests/ww3_tr1/input_bndin/ww3_shel.inp @@ -0,0 +1,31 @@ +$ + F F Water levels + F F Currents + F F Winds + F Ice concentrations + F Assimilation data : Mean parameters + F Assimilation data : 1-D spectra + F Assimilation data : 2-D spectra +$ + 20010101 000000 + 20010102 000000 +$ + 2 +$ + 20010101 000000 3600 20010102 000000 + N + HS WND DIR +$ + 20010101 000000 3600 20010102 000000 + -16.4 59.8 'NorthWest ' + -14.1 52.8 'SouthWest ' + 0.0 0.0 'STOPSTRING' +$ + 20010101 000000 0 20010101 000000 +$ + 20010101 000000 0 20010101 060000 +$ + 20010101 000000 0 20010101 000000 +$ + 20010101 000000 0 20010101 060000 +$ diff --git a/regtests/ww3_tr1/input_std/switch b/regtests/ww3_tr1/input_std/switch new file mode 100644 index 0000000000..be8e68fb7e --- /dev/null +++ b/regtests/ww3_tr1/input_std/switch @@ -0,0 +1 @@ +F90 SHRD RTD PR1 FLX1 LN1 ST1 NL1 BT0 IC0 IS0 REF0 DB0 TR0 BS0 XX0 WNT1 WNX1 CRT1 CRX1 NOGRB O1 diff --git a/regtests/ww3_tr1/input_std/ww3_grid.inp b/regtests/ww3_tr1/input_std/ww3_grid.inp new file mode 100644 index 0000000000..cbf6c99374 --- /dev/null +++ b/regtests/ww3_tr1/input_std/ww3_grid.inp @@ -0,0 +1,56 @@ +$ + 'RTD pole BCs test (STD grid)' +$ +$ This grid is formulated on a standard pole, but produces +$ nest files formulated on rotated pole grids. +$ +$ This test produces boundaries conditions on three different +$ grids: +$ - a rotated pole grid with a pole at 37.5N, 177.5E +$ - a rotated pole grid with a pole at 30.5N, 177.5E +$ - a standand pole grid +$ The boundary points for the 3 grid are collocated with the +$ eastern seapoint edge of the model grid. +$ +$ 1.1 0.067 20 24 0. + 1.1 0.11 13 24 0. +$ + F T T F F T +$ + 3600 1800 1800 60 +$ + &ROTB BPLAT(1) = 37.5, BPLON(1) = 177.5, + BPLAT(2) = 30.5, BPLON(2) = 177.5, + BPLAT(3) = 90.0, BPLON(3) = -180.0 / +END OF NAMELISTS +$ + 'RECT' T 'NONE' + 10 10 + 1.0 1.0 1.0 + -10.5 52.5 1.0 + -0.1 10.0 10 -100. 4 1 '(...)' 'UNIT' 'dummy' +$ + 100*2 +$ + 10 3 1 '(...)' 'UNIT' 'dummy' +$ + 3 3 3 3 3 3 3 3 3 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 1 1 1 1 1 1 1 1 3 + 3 3 3 3 3 3 3 3 3 3 +$ +$ +$ Output boundaries (both along eastern edge of domain, but +$ formulated on different poles): +$ + 0.0 1.0 0.0 1.0 8 + 0.0 -6.0 0.0 1.0 -8 + -2.5 53.5 0.0 1.0 -8 + 0. 0. 0. 0. 0 +$ diff --git a/regtests/ww3_tr1/input_std/ww3_outp.inp b/regtests/ww3_tr1/input_std/ww3_outp.inp new file mode 100644 index 0000000000..04cb50ef2d --- /dev/null +++ b/regtests/ww3_tr1/input_std/ww3_outp.inp @@ -0,0 +1,10 @@ +$ + 20010101 060000 3600. 1 +$ + 1 + 2 + -1 +$ + 2 + 2 66 +$ diff --git a/regtests/ww3_tr1/input_std/ww3_shel.inp b/regtests/ww3_tr1/input_std/ww3_shel.inp new file mode 100644 index 0000000000..d44be30119 --- /dev/null +++ b/regtests/ww3_tr1/input_std/ww3_shel.inp @@ -0,0 +1,34 @@ +$ + F F Water levels + F F Currents + T T Winds + F Ice concentrations + F Assimilation data : Mean parameters + F Assimilation data : 1-D spectra + F Assimilation data : 2-D spectra +$ + 20010101 000000 + 20010101 060000 +$ + 2 +$ + 20010101 000000 3600 20010101 060000 + N + HS WND DIR +$ + 20010101 000000 3600 20010101 060000 + -9.5 60.5 'NorthWest ' + -2.5 60.5 'NorthEast ' + 0.0 0.0 'STOPSTRING' +$ + 20010101 000000 0 20010101 000000 +$ + 20010101 000000 0 20010101 000000 +$ + 20010101 000000 3600 20010101 060000 +$ + 20010101 000000 0 20010101 000000 +$ + 'WND' 20010101 000000 10. 180. 0.0 + 'STP' +$ From b37240468738e3d42c201c0794790eb0d55a3966 Mon Sep 17 00:00:00 2001 From: "ukmo-chris.bunney" Date: Thu, 20 Aug 2020 15:35:46 +0100 Subject: [PATCH 07/10] Updated revision of ww3_bound.ftn to 7.11 --- model/ftn/ww3_bound.ftn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/ftn/ww3_bound.ftn b/model/ftn/ww3_bound.ftn index 14cf3535d4..665cc02d50 100644 --- a/model/ftn/ww3_bound.ftn +++ b/model/ftn/ww3_bound.ftn @@ -12,7 +12,7 @@ !/ 28-Aug-2012 : adaptation from SHOM/Ifremer code ( version 4.08 ) !/ 01-Nov-2012 : Bug correction for NKI != NK ( version 4.08 ) !/ 20-Oct-2016 : Error statement updates ( version 5.15 ) -!/ 21-Jul-2020 : Support rotated pole grid ( version 7.06 ) +!/ 21-Jul-2020 : Support rotated pole grid ( version 7.11 ) !/ Chris Bunney, UKMO. !/ !/ Copyright 2012-2012 National Weather Service (NWS), From 8d763404b2c636bca871504fc2f231cb4ca4ff48 Mon Sep 17 00:00:00 2001 From: ukmo-ccbunney Date: Mon, 24 Aug 2020 11:02:00 +0000 Subject: [PATCH 08/10] Added new ww3_tr1 regtest (rotated pole) to matrix.base. Also, split the SMC/RTD regtests into their own seperate switches. --- regtests/bin/matrix.base | 31 ++++++++++++++++---- regtests/bin/matrix_datarmor | 3 +- regtests/bin/matrix_ncep | 3 +- regtests/bin/matrix_ukmo_cray | 53 ++++++++++++++++++----------------- regtests/bin/matrix_zeus_HLT | 3 +- 5 files changed, 59 insertions(+), 34 deletions(-) diff --git a/regtests/bin/matrix.base b/regtests/bin/matrix.base index 045fba6882..133165df76 100755 --- a/regtests/bin/matrix.base +++ b/regtests/bin/matrix.base @@ -30,7 +30,7 @@ for par in mpi np nr nth rtst ww3 shrd dist omp \ prop1D prop2D time fetch hur1mg \ multi01 multi02 multi03 multi04 multi05 \ - hybd shwtr unstr pdlib smcgr mudice infgrv \ + hybd shwtr unstr pdlib smcgr rtd mudice infgrv \ uost assim calendar oasis multi06 multi07 multi08 do eval " value=\$$par" @@ -72,7 +72,8 @@ echo " echo ' Growth curves (fetch) : $fetch'" >> matrix.head echo " echo ' Shallow water tests : $shwtr'" >> matrix.head echo " echo ' Unstructured grid tests : $unstr'" >> matrix.head - echo " echo ' SMC / Rotated grid tests : $smcgr'" >> matrix.head + echo " echo ' SMC grid tests : $smcgr'" >> matrix.head + echo " echo ' Rotated pole tests : $rtd'" >> matrix.head echo " echo ' Hurricane with one moving grid : $hur1mg'" >> matrix.head echo " echo ' Mud/Ice and wave interaction tests : $mudice'" >> matrix.head echo " echo ' Second harmonic generation tests : $infgrv'" >> matrix.head @@ -1843,13 +1844,12 @@ echo "$rtst $ww3 -w work_IG1 -o netcdf ww3_tig1.1" >> matrix.body fi -# SMC and rotated grid cases, MPI only if requested +# SMC grid cases, MPI only if requested if [ "$smcgr" = 'y' ] && [ "$shrd" = 'y' ] && [ "$dist" != 'y' ] then echo ' ' >> matrix.body echo "$rtst $ww3 -w work_SHRD_SMC -o both ww3_tp2.10" >> matrix.body - echo "$rtst $ww3 -w work_SHRD_RTD -o both ww3_tp2.11" >> matrix.body echo "$rtst -w work_SHRD $ww3 -o both ww3_tp2.16" >> matrix.body fi @@ -1857,7 +1857,6 @@ then echo ' ' >> matrix.body echo "$rtst -s MPI -w work_MPI -f -p $mpi -n $np $ww3 -o both ww3_tp2.10" >> matrix.body - echo "$rtst -s MPI -w work_MPI -f -p $mpi -n $np $ww3 -o both ww3_tp2.11" >> matrix.body echo "$rtst -s MPI -w work_MPI -f -p $mpi -n $np $ww3 -o both ww3_tp2.16" >> matrix.body fi @@ -1866,6 +1865,28 @@ echo "$rtst -s MPI_OMPH -w work_MPI_OMPH -f -p $mpi -n $nr -t $nth $ww3 -o both ww3_tp2.16" >> matrix.body fi +# Rotated pole grid cases, (ww3_tp2.11 MPI only if requested) + + if [ "$rtd" = 'y' ] && [ "$shrd" = 'y' ] + then + echo ' ' >> matrix.body + echo "$rtst $ww3 ww3_tr1" >> matrix.body + echo "$rtst -i input_std -w work_std $ww3 ww3_tr1" >> matrix.body + echo "$rtst -i input_bndin -w work_bndin $ww3 ww3_tr1" >> matrix.body + fi + + if [ "$rtd" = 'y' ] && [ "$shrd" = 'y' ] && [ "$dist" != 'y' ] + then + echo ' ' >> matrix.body + echo "$rtst $ww3 -w work_SHRD_RTD -o both ww3_tp2.11" >> matrix.body + fi + + if [ "$rtd" = 'y' ] && [ "$dist" = 'y' ] + then + echo ' ' >> matrix.body + echo "$rtst -s MPI -w work_MPI -f -p $mpi -n $np $ww3 -o both ww3_tp2.11" >> matrix.body + fi + # mud/ice cases if [ "$mudice" = 'y' ] && [ "$shrd" = 'y' ] diff --git a/regtests/bin/matrix_datarmor b/regtests/bin/matrix_datarmor index a789dbdcf3..3fcbbf0103 100755 --- a/regtests/bin/matrix_datarmor +++ b/regtests/bin/matrix_datarmor @@ -133,7 +133,8 @@ 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 smcgr='y' # SMC grid test + export rtd='y' # Rotated pole 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) diff --git a/regtests/bin/matrix_ncep b/regtests/bin/matrix_ncep index 6c7880090e..8f63de3358 100755 --- a/regtests/bin/matrix_ncep +++ b/regtests/bin/matrix_ncep @@ -149,7 +149,8 @@ fi 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 smcgr='y' # SMC grid test + export rtd='y' # Rotated pole 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) diff --git a/regtests/bin/matrix_ukmo_cray b/regtests/bin/matrix_ukmo_cray index 33639e5cb9..c750ee6039 100755 --- a/regtests/bin/matrix_ukmo_cray +++ b/regtests/bin/matrix_ukmo_cray @@ -37,8 +37,8 @@ # Set Cray compiler variant; CCE (Cray Compiler Environment) or GNU. # Use GNU for programs compiled with PDLIB, CCE for all others. - comp="CCE" - #comp = "GNU" + #comp="CCE" + comp="GNU" # 1. Set up for compilation environemnt on Cray XC (broadwell processors) @@ -110,30 +110,31 @@ fi export omp='y' # Threaded (OpenMP) tests export hybd='y' # 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 oasis='y' # Atmosphere, ocean, and ice coupling using oasis - export calendar='y' # Calendar type - - 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 prop1D='n' # 1-D propagation tests (ww3_tp1.X) + export prop2D='n' # 2-D propagation tests (ww3_tp2.X) + export time='n' # time linmited growth + export fetch='n' # fetch linmited growth + export hur1mg='n' # Hurricane with one moving grid + export shwtr='n' # shallow water tests + export unstr='n' # unstructured grid tests + export pdlib='n' # unstr with pdlib for domain decomposition and implicit solver + export smcgr='n' # SMC grid test + export rtd='y' # Rotated pole test + export mudice='n' # Mud/Ice and wave interaction tests + export infgrv='n' # Second harmonic generation tests + export uost='n' # ww3_ts4 Unresolved Obstacles Source Term (UOST) + export assim='n' # Restart spectra update + export oasis='n' # Atmosphere, ocean, and ice coupling using oasis + export calendar='n' # Calendar type + + export multi01='n' # mww3_test_01 (wetting and drying) + export multi02='n' # mww3_test_02 (basic two-way nesting test)) + export multi03='n' # mww3_test_03 (three high and three low res grids). + export multi04='n' # mww3_test_04 (swell on sea mount and/or current) + export multi05='n' # mww3_test_05 (three-grid moving hurricane) + export multi06='n' # mww3_test_06 (curvilinear grid tests) + export multi07='n' # mww3_test_07 (unstructured grid tests) + export multi08='n' # mww3_test_08 (wind and ice tests) # export filter='PR3 ST2 UQ' # The filter does a set of consecutinve greps on the diff --git a/regtests/bin/matrix_zeus_HLT b/regtests/bin/matrix_zeus_HLT index b8da49cd34..5a7328db4a 100755 --- a/regtests/bin/matrix_zeus_HLT +++ b/regtests/bin/matrix_zeus_HLT @@ -94,7 +94,8 @@ 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 smcgr='y' # SMC grid test + export rtd='y' # Rotated pole 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) From 627b13a6dfd36e998b81be511ed1fc21507cd653 Mon Sep 17 00:00:00 2001 From: ukmo-ccbunney Date: Tue, 25 Aug 2020 08:27:17 +0000 Subject: [PATCH 09/10] Enabled some regtests that were left disabled in last commit. --- regtests/bin/matrix_ukmo_cray | 48 +++++++++++++++++------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/regtests/bin/matrix_ukmo_cray b/regtests/bin/matrix_ukmo_cray index c750ee6039..2448edfe71 100755 --- a/regtests/bin/matrix_ukmo_cray +++ b/regtests/bin/matrix_ukmo_cray @@ -110,31 +110,31 @@ fi export omp='y' # Threaded (OpenMP) tests export hybd='y' # Hybrid options - export prop1D='n' # 1-D propagation tests (ww3_tp1.X) - export prop2D='n' # 2-D propagation tests (ww3_tp2.X) - export time='n' # time linmited growth - export fetch='n' # fetch linmited growth - export hur1mg='n' # Hurricane with one moving grid - export shwtr='n' # shallow water tests - export unstr='n' # unstructured grid tests - export pdlib='n' # unstr with pdlib for domain decomposition and implicit solver - export smcgr='n' # SMC grid test + 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 grid test export rtd='y' # Rotated pole test - export mudice='n' # Mud/Ice and wave interaction tests - export infgrv='n' # Second harmonic generation tests - export uost='n' # ww3_ts4 Unresolved Obstacles Source Term (UOST) - export assim='n' # Restart spectra update - export oasis='n' # Atmosphere, ocean, and ice coupling using oasis - export calendar='n' # Calendar type - - export multi01='n' # mww3_test_01 (wetting and drying) - export multi02='n' # mww3_test_02 (basic two-way nesting test)) - export multi03='n' # mww3_test_03 (three high and three low res grids). - export multi04='n' # mww3_test_04 (swell on sea mount and/or current) - export multi05='n' # mww3_test_05 (three-grid moving hurricane) - export multi06='n' # mww3_test_06 (curvilinear grid tests) - export multi07='n' # mww3_test_07 (unstructured grid tests) - export multi08='n' # mww3_test_08 (wind and ice tests) + 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 oasis='y' # Atmosphere, ocean, and ice coupling using oasis + export calendar='y' # Calendar type + + 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 From 96e4e6e04241038a7cb0feafebe241fb305cfe17 Mon Sep 17 00:00:00 2001 From: "ukmo-chris.bunney" Date: Wed, 2 Sep 2020 10:03:20 +0100 Subject: [PATCH 10/10] Added ww3_tr1 regtest to "all" tests in "matrix.comp" --- regtests/bin/matrix.comp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regtests/bin/matrix.comp b/regtests/bin/matrix.comp index 67eb75c6da..3d6604a81e 100755 --- a/regtests/bin/matrix.comp +++ b/regtests/bin/matrix.comp @@ -71,7 +71,7 @@ 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? ww3_ta? mww3_test_0?` ; fi + ctest=`ls -d ww3_tp1.? ww3_tp2.? ww3_ts? ww3_tbt1.? ww3_tbt2.? ww3_tic1.? ww3_tic2.? ww3_tig1.? ww3_tp2.1? ww3_ta? ww3_tr? 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