Skip to content

Commit 70efcbc

Browse files
Have increased precision of LAT and LON outputs for SMC grids within ww3_ounf by increasing the decimal places in the spaceholder used to calculate the structured grid coordinates. Have removed redundant tests using dbllat and dbllon.
1 parent a7c4891 commit 70efcbc

File tree

3 files changed

+10
-32
lines changed

3 files changed

+10
-32
lines changed

model/src/w3metamd.F90

-2
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,6 @@ SUBROUTINE META_LIST_APPEND_D(LIST, ATTNAME, DVAL)
258258

259259
TYPE(META_LIST_T), INTENT(INOUT) :: LIST
260260
CHARACTER(*), INTENT(IN) :: ATTNAME
261-
!INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(15)
262-
!REAL(dp), INTENT(IN) :: DVAL
263261
DOUBLE PRECISION, INTENT(IN) :: DVAL
264262
!/ ------------------------------------------------------------------- /
265263
!/ Local parameters

model/src/w3ounfmetamd.F90

-4
Original file line numberDiff line numberDiff line change
@@ -1271,8 +1271,6 @@ SUBROUTINE GET_ATTVAL_TYPE(BUF, ILINE, ATTV, ATT_TYPE)
12711271
!
12721272
REAL :: R
12731273
INTEGER :: I, IERR
1274-
!INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(15)
1275-
!REAL(dp) :: D
12761274
DOUBLE PRECISION :: D
12771275

12781276
! Get attribute and type (default to "c" if no type set)
@@ -2338,8 +2336,6 @@ SUBROUTINE WRITE_FREEFORM_META_LIST(NCID, VARID, METALIST, ERR)
23382336
!/
23392337
INTEGER :: I, IVAL
23402338
REAL :: RVAL
2341-
!INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(15)
2342-
!REAL(dp) :: DVAL
23432339
DOUBLE PRECISION :: DVAL
23442340
TYPE(META_PAIR_T), POINTER :: P
23452341

model/src/ww3_ounf.F90

+10-26
Original file line numberDiff line numberDiff line change
@@ -1003,7 +1003,6 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, &
10031003
#endif
10041004
!
10051005
REAL,DIMENSION(:), ALLOCATABLE :: LON, LAT, FREQ
1006-
DOUBLE PRECISION,DIMENSION(:), ALLOCATABLE :: DBLLON, DBLLAT
10071006
REAL,DIMENSION(:,:), ALLOCATABLE :: LON2D, LAT2D, ANGLD2D
10081007
#ifdef W3_RTD
10091008
REAL,DIMENSION(:,:), ALLOCATABLE :: LON2DEQ, LAT2DEQ
@@ -2212,8 +2211,6 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, &
22122211
! Regular gridded file
22132212
IF(.NOT.ALLOCATED(lon)) ALLOCATE(lon(NXO))
22142213
IF(.NOT.ALLOCATED(lat)) ALLOCATE(lat(NYO))
2215-
IF(.NOT.ALLOCATED(dbllon)) ALLOCATE(dbllon(NXO))
2216-
IF(.NOT.ALLOCATED(dbllat)) ALLOCATE(dbllat(NYO))
22172214
#endif
22182215
#ifdef W3_RTD
22192216
! Intermediate EQUatorial lat/lon arrays for de-rotation
@@ -2296,17 +2293,13 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, &
22962293
#ifdef W3_SMC
22972294
ELSE
22982295
! CB: Regridded SMC data
2299-
SXD=DBLE(0.000001d0*DNINT(1d6*(DBLE(DXO)) ))
2300-
SYD=DBLE(0.000001d0*DNINT(1d6*(DBLE(DYO)) ))
2301-
X0D=DBLE(0.000001d0*DNINT(1d6*(DBLE(SXO)) ))
2302-
Y0D=DBLE(0.000001d0*DNINT(1d6*(DBLE(SYO)) ))
2296+
SXD=DBLE(0.00000001d0*DNINT(1d8*(DBLE(DXO)) ))
2297+
SYD=DBLE(0.00000001d0*DNINT(1d8*(DBLE(DYO)) ))
2298+
X0D=DBLE(0.00000001d0*DNINT(1d8*(DBLE(SXO)) ))
2299+
Y0D=DBLE(0.00000001d0*DNINT(1d8*(DBLE(SYO)) ))
23032300

2304-
!LON(1) = X0D
2305-
!LAT(1) = Y0D
23062301
DO i=1,NXO
23072302
lon(i)=REAL(X0D+SXD*DBLE(i-1))
2308-
! KS: Regridded SMC data - use double precision
2309-
dbllon(i)=DBLE(X0D+SXD*DBLE(i-1))
23102303
#endif
23112304
#ifdef W3_RTD
23122305
LON2DEQ(i,:) = lon(i)
@@ -2315,8 +2308,6 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, &
23152308
END DO
23162309
DO i=1,NYO
23172310
lat(i)=REAL(Y0D+SYD*DBLE(i-1))
2318-
! KS: Regridded SMC data - use double precision
2319-
dbllat(i)=DBLE(Y0D+SYD*DBLE(i-1))
23202311
#endif
23212312
#ifdef W3_RTD
23222313
LAT2DEQ(:,i) = lat(i)
@@ -2347,13 +2338,11 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, &
23472338
ENDIF ! SMCOTYPE
23482339
#endif
23492340
ELSE ! SMCGRD
2350-
SXD=DBLE(0.000001d0*DNINT(1d6*(DBLE(SX)) ))
2351-
SYD=DBLE(0.000001d0*DNINT(1d6*(DBLE(SY)) ))
2352-
X0D=DBLE(0.000001d0*DNINT(1d6*(DBLE(X0)) ))
2353-
Y0D=DBLE(0.000001d0*DNINT(1d6*(DBLE(Y0)) ))
2341+
SXD=DBLE(0.00000001d0*DNINT(1d8*(DBLE(SX)) ))
2342+
SYD=DBLE(0.00000001d0*DNINT(1d8*(DBLE(SY)) ))
2343+
X0D=DBLE(0.00000001d0*DNINT(1d8*(DBLE(X0)) ))
2344+
Y0D=DBLE(0.00000001d0*DNINT(1d8*(DBLE(Y0)) ))
23542345

2355-
!LON(1) = X0D
2356-
!LAT(1) = Y0D
23572346
DO I=1,NX
23582347
LON(I)=REAL(X0D+SXD*DBLE(I-1))
23592348
END DO
@@ -2490,11 +2479,6 @@ SUBROUTINE W3EXNC ( NX, NY, IX1, IXN, IY1, IYN, NSEA, &
24902479
CALL CHECK_ERR(IRET)
24912480
IRET=NF90_PUT_VAR(NCID,VARID(6),SMCCY)
24922481
CALL CHECK_ERR(IRET)
2493-
ELSE ! KS: For regridded SMC data, change from real to double precision
2494-
IRET=NF90_PUT_VAR(NCID,VARID(1),dbllon(:))
2495-
CALL CHECK_ERR(IRET)
2496-
IRET=NF90_PUT_VAR(NCID,VARID(2),dbllat(:))
2497-
CALL CHECK_ERR(IRET)
24982482
ENDIF
24992483
#endif
25002484
ELSE ! SMCGRD
@@ -3406,9 +3390,9 @@ SUBROUTINE W3CRNC (NCFILE, NCID, DIMID, DIMLN, VARID, &
34063390
#ifdef W3_SMC
34073391
IF(SMCOTYPE .EQ. 1) THEN
34083392
! Flat SMC grid - use seapoint dimension:
3409-
IRET = NF90_DEF_VAR(NCID, 'longitude', NF90_FLOAT, DIMID(2), VARID(1))
3393+
IRET = NF90_DEF_VAR(NCID, 'longitude', NF90_DOUBLE, DIMID(2), VARID(1))
34103394
CALL CHECK_ERR(IRET)
3411-
IRET = NF90_DEF_VAR(NCID, 'latitude', NF90_FLOAT, DIMID(2), VARID(2))
3395+
IRET = NF90_DEF_VAR(NCID, 'latitude', NF90_DOUBLE, DIMID(2), VARID(2))
34123396
CALL CHECK_ERR(IRET)
34133397

34143398
! Latitude and longitude are auxililary variables in type 1 sea point

0 commit comments

Comments
 (0)