@@ -50,7 +50,7 @@ module MOM_dynamics_split_RK2
50
50
use MOM_debugging, only : check_redundant
51
51
use MOM_energetic_PBL, only : energetic_PBL_get_MLD, energetic_PBL_CS
52
52
use MOM_grid, only : ocean_grid_type
53
- use MOM_harmonic_analysis, only : harmonic_analysis_CS
53
+ use MOM_harmonic_analysis, only : HA_init, harmonic_analysis_CS
54
54
use MOM_hor_index, only : hor_index_type
55
55
use MOM_hor_visc, only : horizontal_viscosity, hor_visc_CS, hor_visc_vel_stencil
56
56
use MOM_hor_visc, only : hor_visc_init, hor_visc_end
@@ -1415,6 +1415,7 @@ subroutine initialize_dyn_split_RK2(u, v, h, tv, uh, vh, eta, Time, G, GV, US, p
1415
1415
1416
1416
integer :: i, j, k, is, ie, js, je, isd, ied, jsd, jed, nz
1417
1417
integer :: IsdB, IedB, JsdB, JedB
1418
+ integer :: nc ! Number of tidal constituents to be harmonically analyzed
1418
1419
is = G% isc ; ie = G% iec ; js = G% jsc ; je = G% jec ; nz = GV% ke
1419
1420
isd = G% isd ; ied = G% ied ; jsd = G% jsd ; jed = G% jed
1420
1421
IsdB = G% IsdB ; IedB = G% IedB ; JsdB = G% JsdB ; JedB = G% JedB
@@ -1437,6 +1438,10 @@ subroutine initialize_dyn_split_RK2(u, v, h, tv, uh, vh, eta, Time, G, GV, US, p
1437
1438
" If true, calculate self-attraction and loading." , default= CS% use_tides)
1438
1439
call get_param(param_file, mdl, " USE_HA" , CS% use_HA, &
1439
1440
" If true, perform inline harmonic analysis." , default= .false. )
1441
+ call get_param(param_file, mdl, " HA_N_CONST" , nc, &
1442
+ " Number of tidal constituents to be harmonically analyzed." , &
1443
+ default= 0 , do_not_log= .not. CS% use_HA)
1444
+ if (nc<= 0 ) CS% use_HA = .false.
1440
1445
call get_param(param_file, mdl, " BE" , CS% be, &
1441
1446
" If SPLIT is true, BE determines the relative weighting " // &
1442
1447
" of a 2nd-order Runga-Kutta baroclinic time stepping " // &
@@ -1566,14 +1571,10 @@ subroutine initialize_dyn_split_RK2(u, v, h, tv, uh, vh, eta, Time, G, GV, US, p
1566
1571
cont_stencil = continuity_stencil(CS% continuity_CSp)
1567
1572
call CoriolisAdv_init(Time, G, GV, US, param_file, diag, CS% ADp, CS% CoriolisAdv)
1568
1573
if (CS% calculate_SAL) call SAL_init(h, tv, G, GV, US, param_file, CS% SAL_CSp, restart_CS)
1569
- if (CS% use_tides) then
1570
- if (CS% use_HA) then
1571
- call tidal_forcing_init(Time, G, US, param_file, CS% tides_CSp, CS% HA_CSp)
1572
- HA_CSp = > CS% HA_CSp
1573
- else
1574
- call tidal_forcing_init(Time, G, US, param_file, CS% tides_CSp)
1575
- HA_CSp = > NULL ()
1576
- endif
1574
+ if (CS% use_tides) call tidal_forcing_init(Time, G, US, param_file, CS% tides_CSp)
1575
+ if (CS% use_HA) then
1576
+ call HA_init(Time, G, US, param_file, nc, CS% HA_CSp)
1577
+ HA_CSp = > CS% HA_CSp
1577
1578
else
1578
1579
HA_CSp = > NULL ()
1579
1580
endif
0 commit comments