Dear ROMS community,
I am trying to add M2 tidal forcing with an amplitude of 3 meters in an idealized ROMS setup, but the simulated surface elevation only shows a much smaller amplitude, around 0.3 m.
Here is a summary of my setup:
- Model type: Idealized 3D (with slope bottom and uniform stratification)
- Grid: Simple rectangular grid (resolution 0.5-2km)
- Vertical layers: 60 (s-coordinate)
- Forcing: Only M2 tidal elevation at the eastern open boundary
- Tidal data: I set a 3 m amplitude sinusoidal signal in `zeta` at the boundary
- Boundary conditions:    
!                             W        S             E         N
!                             e         o             a         o
!                             s         u             s          r
!                             t         t              t          t
!                                       h                         h
!
!                            1         2              3        4
 
   LBC(isFsur) ==    Clo     Cha          Cha     Cha         ! free-surface
   LBC(isUbar) ==   Clo     Fla            Fla      Fla         ! 2D U-momentum
   LBC(isVbar) ==   Clo     Fla            Fla      Fla         ! 2D V-momentum
   LBC(isUvel) ==   Clo     RadNud     Rad     RadNud      ! 3D U-momentum
   LBC(isVvel) ==   Clo     RadNud     Rad     RadNud      ! 3D V-momentum
   LBC(isMtke) ==  Clo     Gra           Gra     Gra         ! mixing TKE
   LBC(isTvar) ==   Clo     RadNud     Rad     RadNud  \   ! temperature
                           Clo     RadNud     Rad     RadNud      ! salinity
-The .h file adds ana_fsobc and ana_m2obc
-ana_fsobc is set as follows:
      omega = 2.0_r8 * 3.141592653589793_r8 / (12.42_r8 * 3600.0_r8)  ! rad/s
      amp   = 3.0_r8   
     phase = 0.0_r8   
!  Optional: ramp up over 1 day to avoid shocks
     t_ramp = 1.0_r8     ! days
     ramp_factor = MIN( time(ng)/(t_ramp*86400.0_r8), 1.0_r8 )
      IF (LBC(ieast,isFsur,ng)%acquire.and.                             &
     &    DOMAIN(ng)%Eastern_Edge(tile)) THEN
        DO j=JstrT,JendT
           BOUNDARY(ng)%zeta_east(j)=amp*sin(omega*time(ng)+phase)* ramp_factor
        END DO
      END IF
-ana_m2obc is set as follows:
     omega = 2.0_r8 * 3.141592653589793_r8 / (12.42_r8 * 3600.0_r8)
     uamp = 1.0_r8    
    phase = 0.0_r8
!  ramp up ubar to avoid instability
   t_ramp = 1.0_r8
   ramp_factor = MIN( time(ng)/(t_ramp*86400.0_r8), 1.0_r8 )
      IF (LBC(ieast,isUbar,ng)%acquire.and.                             &
     &    LBC(ieast,isVbar,ng)%acquire.and.                             &
     &    DOMAIN(ng)%Eastern_Edge(tile)) THEN
        DO j=JstrT,JendT
          BOUNDARY(ng)%ubar_east(j)=uamp* sin(omega*time(ng) + phase)* ramp_factor
        END DO
        DO j=JstrP,JendT
          BOUNDARY(ng)%vbar_east(j)=0.0_r8
        END DO
      END IF
- The model runs without blowing up, but the tidal signal in the interior is much smaller than expected
I have checked that:
- The boundary tidal signal is correctly imposed in the forcing file
- The time step is small enough
- The elevation signal is not dissipated immediately
**Questions:**
1. Is there a common reason why the tidal signal would weaken so much before propagating into the domain?
2. Could there be incorrect open boundary conditions or sponge layer issues?
3. Any example `.h` or `.in` file settings for a clean M2 tide simulation?
Any help would be appreciated!
Best regards
			
			
									
									
						Problem adding 3m M2 tidal forcing in idealized ROMS case – only ~0.3m appears
Re: Problem adding 3m M2 tidal forcing in idealized ROMS case – only ~0.3m appears
you can try to set zeta_east as clamped, or the reduced physcis option (Red).
if those dont work as well as you want, then go back to zeta_east as chapman and increase ubar amplitude.
			
			
									
									
						if those dont work as well as you want, then go back to zeta_east as chapman and increase ubar amplitude.
Re: Problem adding 3m M2 tidal forcing in idealized ROMS case – only ~0.3m appears
Thank you very much for your suggestions.
I have tried setting zeta_east as clamped, but unfortunately the model blows up within the first day. It seems that extremely high velocity or density gradients develop near the northwestern and southwestern corners, possibly due to reflection or inconsistency at the western boundary.
I will now try your other suggestions:
Using the reduced physics (RED) option
Switching back to increasing the ubar amplitude
I really appreciate your help and will report back after testing these options.
Thanks again!
Best regards,
			
			
									
									
						I have tried setting zeta_east as clamped, but unfortunately the model blows up within the first day. It seems that extremely high velocity or density gradients develop near the northwestern and southwestern corners, possibly due to reflection or inconsistency at the western boundary.
I will now try your other suggestions:
Using the reduced physics (RED) option
Switching back to increasing the ubar amplitude
I really appreciate your help and will report back after testing these options.
Thanks again!
Best regards,
Re: Problem adding 3m M2 tidal forcing in idealized ROMS case – only ~0.3m appears
You appear to be imposing boundary zeta and ubar independently as in-phase functions of sin(omega*t) with arbitrary amplitude. 
These variables are dynamically linked in amplitude (through sqrt(gh) factor), and with their relative phase depending on whether the external tide is a progressive wave or a standing wave (or a mix). You may have one fighting against the other.
In my experience, ROMS sea level is largely responsive to the imposed inflow tidal ubar, with zeta mostly a consequence of the barotropic divergence.
My recommendation is to impose ubar (as sin(omega*t)) and just let zeta sort itself out. To this end, the Shchetpetkin option (She) performs well.
			
			
									
									These variables are dynamically linked in amplitude (through sqrt(gh) factor), and with their relative phase depending on whether the external tide is a progressive wave or a standing wave (or a mix). You may have one fighting against the other.
In my experience, ROMS sea level is largely responsive to the imposed inflow tidal ubar, with zeta mostly a consequence of the barotropic divergence.
My recommendation is to impose ubar (as sin(omega*t)) and just let zeta sort itself out. To this end, the Shchetpetkin option (She) performs well.
John Wilkin: DMCS Rutgers University
71 Dudley Rd, New Brunswick, NJ 08901-8521, USA. ph: 609-630-0559 jwilkin@rutgers.edu
						71 Dudley Rd, New Brunswick, NJ 08901-8521, USA. ph: 609-630-0559 jwilkin@rutgers.edu
Re: Problem adding 3m M2 tidal forcing in idealized ROMS case – only ~0.3m appears
Thank you very much for your insightful suggestion.
You're absolutely right—imposing both zeta and ubar independently without accounting for their dynamical linkage can indeed lead to unphysical results, especially when their phase relationship isn't consistent with the nature of the incoming tide. I hadn't fully considered the potential for them to counteract each other, especially in mixed or standing wave scenarios.
I’ll follow your advice and try imposing only ubar as a sinusoidal function and allow zeta to adjust dynamically. I’ll also enable the Shchepetkin option (She) as you suggested. Hopefully this will lead to a more stable and realistic barotropic adjustment.
Thanks again for the valuable guidance—much appreciated!
			
			
									
									
						You're absolutely right—imposing both zeta and ubar independently without accounting for their dynamical linkage can indeed lead to unphysical results, especially when their phase relationship isn't consistent with the nature of the incoming tide. I hadn't fully considered the potential for them to counteract each other, especially in mixed or standing wave scenarios.
I’ll follow your advice and try imposing only ubar as a sinusoidal function and allow zeta to adjust dynamically. I’ll also enable the Shchepetkin option (She) as you suggested. Hopefully this will lead to a more stable and realistic barotropic adjustment.
Thanks again for the valuable guidance—much appreciated!
