Skip to content

Commit 6819b93

Browse files
alperaltuntasclaude
andcommitted
Further align merge branch with dev/ufs-weather-model (answer-neutral)
Second hunk-by-hunk pass minimizing the diff against dev/ufs-weather-model without changing answers, breaking exact-restart, or removing CESM-specific code. All changes are provably inactive or no-ops for CESM configurations. Files now identical to dev/ufs-weather-model (whitespace-only divergence): - w3sic4md.F90, w3srcemd.F90: taken verbatim from dev/ufs-weather-model. w3wavemd.F90: - ODAT dummy dimension 35 -> 40 (matching UFS). ODAT is unused in the body in both branches and every call site passes a 40-element array (wav_shel_inp odat(40) via the cap; wmwavemd DUMMY2(40)). - Re-add UFS guards that are no-ops under CESM defaults (use_restartnc and logfile_is_assigned default .false., verboselog defaults .true., none set by CESM code): "if (.not. use_restartnc)" around the FLOUT(4)/FLOUT(8) MPI restart prep and on the J=8 second-restart-stream output; ".and. verboselog" on three NAPLOG log writes; "if (.not. logfile_is_assigned)" around the NDSO BACKSPACE. - Restore W3_T-only ILEN declaration/use (W3_T never set in CESM builds), UFS FLOUTG/FLOUTG2 = .false. declaration initializers, and several comment/blank-line/trailing-space differences. w3iogomd.F90 (W3OUTG): restore UFS USE block exactly (the extra imports IAPROC/NAPROC/NAPFLD/NSEALM were unused; NDST is used only under W3_T) and remove the unused SWW declaration. wav_shr_mod.F90: re-add the wav_loginit subroutine present in UFS (not called by CESM, harmless); remove unused locals (ierr, len, i, j x2, sec); align comment spacing. w3gridmd.F90: restore upstream changelog comment order and remove a trailing space. w3iogrmd.F90: align a continuation-line spacing. w3iorsmd.F90: restore two blank lines and the upstream TIMETAG format string (identical formatted output). wav_import_export.F90 / wav_shel_inp.F90: remove unused merge-side locals (num, fvalue, ofile). Deliberately NOT aligned (kept merge-branch side): the 4961 FORMAT missing-comma fix and the duplicate FLAG0 declaration removal (both fix real UFS bugs), the IDOUT(6,14) label, STK_TAIL documentation, validated newer-develop physics, and all CESM build/cap/output/restart architecture. Verified: full coupled build succeeds; ERS_Ld3.TL319_t232_wg37.GW_JRA passes exact-restart (COMPARE_base_rest) and remains bit-identical to merge_develop across WW3, coupler, MOM6, and CICE history output. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent fc75073 commit 6819b93

10 files changed

Lines changed: 87 additions & 50 deletions

model/src/w3gridmd.F90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ MODULE W3GRIDMD
115115
!/ 19-Jul-2021 : Momentum and air density support ( version 7.14 )
116116
!/ 28-Feb-2023 : GQM as an alternative for NL1 ( version 7.15 )
117117
!/ 11-Jan-2024 : New namelist parameters for IC4 ( version 7.15 )
118-
!/ 04-Jul-2025 : Remove labelled statements ( version X.XX )
119118
!/ 03-May-2024 : New CAPCHNK parameters for SIN4 ( version 7.15 )
119+
!/ 04-Jul-2025 : Remove labelled statements ( version X.XX )
120120
!/
121121
!/ Copyright 2009-2013 National Weather Service (NWS),
122122
!/ National Oceanic and Atmospheric Administration. All rights
@@ -1748,7 +1748,7 @@ SUBROUTINE W3GRID()
17481748
! initializes TAUWX/Y to zero in W3SRCE
17491749
VISCSTRESS =0
17501750
CAPCHA = 0. ! =1 indicates capping of drag is active
1751-
CHAMIN = 0.0001 !
1751+
CHAMIN = 0.0001 !
17521752
CHA0 = ALPHA0 ! initial value for charnock
17531753
UCAP = 30. ! U10 threshold from which drag capping is applied
17541754
SIGMAUCAP = 10. ! Width for reduction of drag beyond UCAP

model/src/w3iogomd.F90

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1310,12 +1310,16 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 )
13101310
HCMAXE, HMAXE, HCMAXD, HMAXD, QP, PQP, &
13111311
PTHP0, PPE, PGW, PSW, PTM1, PT1, PT2, PEP, &
13121312
WBT, QKK
1313-
USE W3ODATMD, ONLY: NDST, UNDEF, IAPROC, NAPROC, NAPFLD, &
1314-
ICPRT, DTPRT, WSCUT, NOSWLL, FLOGRD, FLOGR2,&
1315-
NOGRP, NGRPP
1316-
USE W3ADATMD, ONLY: NSEALM
1313+
! USSHX, USSHY : surface layer (SL) averaged SD
1314+
! HSL : surface layer depth (1/5 of the mixed layer depth
1315+
! from the coupler)
13171316
USE W3ADATMD, ONLY: USSHX, USSHY
13181317
USE W3IDATMD, ONLY: HSL
1318+
USE W3ODATMD, ONLY: UNDEF, ICPRT, DTPRT, WSCUT, &
1319+
NOSWLL, FLOGRD, FLOGR2, NOGRP, NGRPP
1320+
#ifdef W3_T
1321+
USE W3ODATMD, ONLY: NDST
1322+
#endif
13191323
#ifdef W3_S
13201324
USE W3SERVMD, ONLY: STRACE
13211325
#endif
@@ -1374,7 +1378,6 @@ SUBROUTINE W3OUTG ( A, FLPART, FLOUTG, FLOUTG2 )
13741378
LOGICAL :: FLOLOC(NOGRP,NGRPP)
13751379
! SWW: angle between wind and waves
13761380
! LHSL: local surface layer depth
1377-
REAL :: SWW
13781381
REAL :: LHSL
13791382
! tmp variable for surface layer averaged Stokes drift
13801383
REAL :: USSCOH

model/src/w3iogrmd.F90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1186,7 +1186,7 @@ SUBROUTINE W3IOGR ( INXOUT, NDSM, IMOD, FEXT &
11861186
WRITE (NDSM) &
11871187
LMPENABLED, SDTAIL, HSLMODE
11881188
ELSE
1189-
READ (NDSM,IOSTAT=IERR) &
1189+
READ (NDSM,IOSTAT=IERR) &
11901190
LMPENABLED, SDTAIL, HSLMODE
11911191
IF (IERR.NE.0) CALL EXTIOF(NDSE,IERR,'W3IOGR','mod_def.'//FILEXT(:IEXT),51)
11921192
END IF

model/src/w3iorsmd.F90

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -539,14 +539,16 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename)
539539
ELSE
540540
FNMPRE_LOCAL = FNMRST
541541
END IF
542+
543+
542544
I = LEN_TRIM(FILEXT)
543545
J = LEN_TRIM(FNMPRE_LOCAL)
544546
!
545547
!CHECKPOINT RESTART FILE
546548
ITMP=0
547549
IF ( PRESENT(FLRSTRT) ) THEN
548550
IF (FLRSTRT) THEN
549-
WRITE(TIMETAG,"(i8.8,'.'i6.6)")TIME(1),TIME(2)
551+
WRITE(TIMETAG, '(i8.8, ".", i6.6)') TIME(1), TIME(2)
550552
FNAME=TIMETAG//'.restart.'//FILEXT(:I)
551553
ITMP=1
552554
END IF
@@ -566,7 +568,6 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT , filename)
566568
WRITE (NDST,9001) trim(FNAME), LRECL
567569
#endif
568570
!
569-
570571
IF(NDST.EQ.NDSR)THEN
571572
IF ( IAPROC .EQ. NAPERR ) &
572573
WRITE(NDSE,'(A,I8)')'UNIT NUMBERS OF RESTART FILE AND '&

model/src/w3sic4md.F90

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D)
706706
DO IK=1,NK
707707
WN_I(IK) = Chf*(hice**mpow)*(FREQ(IK)**npow)
708708
END DO
709-
709+
710710
CASE (10)
711711
! Cubic fit to Meylan, Horvat & Bitz 2021
712712
! ICECOEF1 is thickness
@@ -734,15 +734,15 @@ SUBROUTINE W3SIC4 (A, DEPTH, CG, IX, IY, S, D)
734734
(-0.00010791)*x1sqr*x2 + &
735735
0.00031073*x1**3 + 1.5996e-06*x2**3 + 0.090994*x3**3
736736
KARG1(IK)=min(KARG1(IK),0.0)
737-
ALPHA(IK) = 10.0**KARG1(IK)
737+
ALPHA(IK) = 10.0**KARG1(IK)
738738
perfour=x1sqr*x1sqr
739739
if ((x1.gt.5.0) .and. (x1.lt.20.0)) then
740740
ALPHA(IK) = ALPHA(IK) + amhb/x1sqr+bmhb/perfour
741741
else if (x1.gt.20.0) then
742742
ALPHA(IK) = amhb/x1sqr+bmhb/perfour
743743
endif
744-
WN_I(IK) = ALPHA(IK) * 0.5
745-
end do
744+
WN_I(IK) = ALPHA(IK) * 0.5
745+
end do
746746

747747
CASE DEFAULT
748748
WN_I = ICECOEF1 !Default to IC1: Uniform in k

model/src/w3srcemd.F90

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2118,6 +2118,7 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, &
21182118
WRITE(740+IAPROC,*) '3 : sum(SPEC)=', sum(SPEC)
21192119
END IF
21202120
#endif
2121+
21212122
IF ( INFLAGS2(4).AND.ICE.GT.0 ) THEN
21222123
IF (.NOT. IC_NUMERICS ) THEN
21232124
IF (IICEDISP) THEN
@@ -2168,6 +2169,7 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, &
21682169
#ifdef W3_IS1
21692170
CALL W3SIS1 ( SPEC, ICE, VSIR )
21702171
#endif
2172+
21712173
SPEC2 = SPEC
21722174
!
21732175
TAUICE(:) = 0.

model/src/w3wavemd.F90

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,8 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
563563
USE W3ODATMD, ONLY : FNMRST
564564
USE W3GDATMD, ONLY : MAPST2
565565
#endif
566+
use w3odatmd , only : use_historync, use_restartnc
567+
use w3odatmd , only : logfile_is_assigned, verboselog
566568
#if defined(W3_T) || defined(W3_REFRX)
567569
USE W3GDATMD, ONLY : NSEA
568570
#endif
@@ -580,7 +582,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
580582
!/ ------------------------------------------------------------------- /
581583
!/ Parameter list
582584
!/
583-
INTEGER, INTENT(IN) :: IMOD, TEND(2),ODAT(35)
585+
INTEGER, INTENT(IN) :: IMOD, TEND(2),ODAT(40)
584586
LOGICAL, INTENT(IN), OPTIONAL :: STAMP, NO_OUT
585587
#ifdef W3_OASIS
586588
type(MPI_COMM), INTENT(IN), OPTIONAL :: ID_LCOMM
@@ -590,6 +592,9 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
590592
!/ ------------------------------------------------------------------- /
591593
!/ Local parameters :
592594
!/
595+
#ifdef W3_T
596+
INTEGER :: ILEN
597+
#endif
593598
#ifdef W3_S
594599
INTEGER, SAVE :: IENT = 0
595600
#endif
@@ -643,9 +648,10 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
643648
!
644649
REAL, ALLOCATABLE :: TAUWX(:), TAUWY(:)
645650
!
646-
LOGICAL :: FLACT, FLZERO, FLFRST, FLMAP, TSTAMP, &
647-
SKIP_O, FLAG_O, FLDDIR, READBC, &
648-
FLOUTG, FLPFLD, FLPART, LOCAL, FLOUTG2
651+
LOGICAL :: FLACT, FLZERO, FLFRST, FLMAP, TSTAMP,&
652+
SKIP_O, FLAG_O, FLDDIR, READBC, &
653+
FLOUTG = .false., FLPFLD, &
654+
FLPART, LOCAL, FLOUTG2 = .false.
649655
!
650656
#ifdef W3_MPI
651657
LOGICAL :: FLGMPI(0:8)
@@ -763,7 +769,9 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
763769
FLPFLD = FLPFLD .OR. FLOGRD(4,J) .OR. FLOGR2(4,J)
764770
END DO
765771
!
766-
IF ( IAPROC .EQ. NAPLOG ) BACKSPACE ( NDSO )
772+
if (.not. logfile_is_assigned) then
773+
IF ( IAPROC .EQ. NAPLOG ) BACKSPACE ( NDSO )
774+
end if
767775
!
768776
IF ( FLCOLD ) THEN
769777
DTDYN = 0.
@@ -801,7 +809,8 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
801809
! 0.d Test output
802810
!
803811
#ifdef W3_T
804-
WRITE (NDST,9000) IMOD, trim(FILEXT), TEND
812+
ILEN = LEN_TRIM(FILEXT)
813+
WRITE (NDST,9000) IMOD, FILEXT(:ILEN), TEND
805814
#endif
806815
!
807816
! 1. Check the consistency of the input ----------------------------- /
@@ -1663,7 +1672,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
16631672
WRITE(740+IAPROC,*) ' SHAVETOT=', SHAVETOT(JSEA)
16641673
FLUSH(740+IAPROC)
16651674
#endif
1666-
ENDIF
1675+
ENDIF
16671676
END DO ! JSEA
16681677
END IF ! PDLIB
16691678
#endif
@@ -2410,7 +2419,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
24102419
DTG = DTTST / REAL(NT-IT)
24112420
END IF
24122421
!
2413-
IF ( FLACT .AND. IT.NE.NT .AND. IAPROC.EQ.NAPLOG ) THEN
2422+
IF ( FLACT .AND. IT.NE.NT .AND. IAPROC.EQ.NAPLOG .and. verboselog) THEN
24142423
CALL STME21 ( TIME , IDTIME )
24152424
IF ( IDLAST .NE. TIME(1) ) THEN
24162425
WRITE (NDSO,900) ITIME, IPASS, IDTIME(01:19), IDACT, OUTID
@@ -2430,7 +2439,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
24302439
#endif
24312440
!
24322441
!
2433-
END DO
2442+
END DO ! DO IT = IT0, NT
24342443

24352444
IF ( .NOT. FLZERO ) THEN
24362445
#ifdef W3_TIMINGS
@@ -2580,33 +2589,35 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
25802589
#endif
25812590
!
25822591
#ifdef W3_MPI
2583-
IF ( FLOUT(4) .AND. NRQRS.NE.0 ) THEN
2584-
IF ( DSEC21(TIME,TONEXT(:,4)).EQ.0. ) THEN
2585-
CALL MPI_STARTALL ( NRQRS, IRQRS , IERR_MPI )
2586-
FLGMPI(4) = .TRUE.
2587-
NRQMAX = MAX ( NRQMAX , NRQRS )
2592+
if (.not. use_restartnc) then
2593+
IF ( FLOUT(4) .AND. NRQRS.NE.0 ) THEN
2594+
IF ( DSEC21(TIME,TONEXT(:,4)).EQ.0. ) THEN
2595+
CALL MPI_STARTALL ( NRQRS, IRQRS , IERR_MPI )
2596+
FLGMPI(4) = .TRUE.
2597+
NRQMAX = MAX ( NRQMAX , NRQRS )
25882598
#endif
25892599
#ifdef W3_MPIT
2590-
WRITE (NDST,9043) '4 ', NRQRS, NRQMAX, NAPRST
2600+
WRITE (NDST,9043) '4 ', NRQRS, NRQMAX, NAPRST
25912601
#endif
25922602
#ifdef W3_MPI
2603+
END IF
25932604
END IF
2594-
END IF
25952605
#endif
2596-
!
2606+
!
25972607
#ifdef W3_MPI
2598-
IF ( FLOUT(8) .AND. NRQRS.NE.0 ) THEN
2599-
IF ( DSEC21(TIME,TONEXT(:,8)).EQ.0. ) THEN
2600-
CALL MPI_STARTALL ( NRQRS, IRQRS , IERR_MPI )
2601-
FLGMPI(8) = .TRUE.
2602-
NRQMAX = MAX ( NRQMAX , NRQRS )
2608+
IF ( FLOUT(8) .AND. NRQRS.NE.0 ) THEN
2609+
IF ( DSEC21(TIME,TONEXT(:,8)).EQ.0. ) THEN
2610+
CALL MPI_STARTALL ( NRQRS, IRQRS , IERR_MPI )
2611+
FLGMPI(8) = .TRUE.
2612+
NRQMAX = MAX ( NRQMAX , NRQRS )
26032613
#endif
26042614
#ifdef W3_MPIT
2605-
WRITE (NDST,9043) '8 ', NRQRS, NRQMAX, NAPRST
2615+
WRITE (NDST,9043) '8 ', NRQRS, NRQMAX, NAPRST
26062616
#endif
26072617
#ifdef W3_MPI
2618+
END IF
26082619
END IF
2609-
END IF
2620+
end if ! if (.not. use_restartnc)
26102621
#endif
26112622
!
26122623
#ifdef W3_MPI
@@ -2644,7 +2655,6 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
26442655
call print_memcheck(memunit, 'memcheck_____:'//' WW3_WAVE AFTER TIME LOOP 2')
26452656
!
26462657
! 4.c Reset next output time
2647-
26482658
!
26492659
TOFRST(1) = -1
26502660
TOFRST(2) = 0
@@ -2821,7 +2831,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
28212831

28222832
! If there is a second stream of restart files then J=8 and FLOUT(8)=.TRUE.
28232833
J=8
2824-
IF ( FLOUT(J) ) THEN
2834+
IF ( FLOUT(J) .and. .not. use_restartnc) THEN
28252835
!
28262836
! 4.d Perform output
28272837
!
@@ -2889,7 +2899,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
28892899
!
28902900
! 5. Update log file ------------------------------------------------ /
28912901
!
2892-
IF ( IAPROC.EQ.NAPLOG ) THEN
2902+
IF ( IAPROC.EQ.NAPLOG .and. verboselog) THEN
28932903
!
28942904
CALL STME21 ( TIME , IDTIME )
28952905
IF ( FLCUR ) THEN
@@ -2942,7 +2952,7 @@ SUBROUTINE W3WAVE ( IMOD, ODAT, TEND, STAMP, NO_OUT &
29422952
WRITE (SCREEN,951) STTIME
29432953
END IF
29442954

2945-
IF ( IAPROC .EQ. NAPLOG ) WRITE (NDSO,902)
2955+
IF ( IAPROC .EQ. NAPLOG .and. verboselog) WRITE (NDSO,902)
29462956
!
29472957
DEALLOCATE(FIELD)
29482958
DEALLOCATE(TAUWX, TAUWY)

model/src/wav_import_export.F90

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,7 @@ subroutine advertise_fields(importState, ExportState, flds_scalar_name, rc)
9494
integer , intent(out) :: rc
9595

9696
! local variables
97-
integer :: n, num
98-
character(len=2) :: fvalue
97+
integer :: n
9998
character(len=*), parameter :: subname='(wav_import_export:advertise_fields)'
10099
!-------------------------------------------------------------------------------
101100

model/src/wav_shel_inp.F90

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ subroutine read_shel_config(mpi_comm, mds, time0_overwrite, timen_overwrite)
168168
character(len=256) :: tmpline, test
169169
character(len=1024) :: fldrst=''
170170
character(len=80) :: linein
171-
character(len=30) :: ofile ! w3_cou only
172171
character(len=8) :: words(7)=''
173172
character(len=256) :: filename
174173
logical :: flflg, flhom, tflagi, prtfrm, flgnml, flh(-7:10)

0 commit comments

Comments
 (0)