[MITgcm-support] Question About Sea Surface Height (Eta) Behavior in MITgcm

Jordi Iglesias jiglesias at icm.csic.es
Wed Jul 9 11:03:20 EDT 2025


Hi everyone,

Thanks a lot for your comments and help. Following your recommendations, 
I’m attaching two figures and the namelists.

Fig1.jpg shows the MEDSEA parent model, with my domain marked by a red 
rectangle, as well as the three points where I plotted the SSH from the 
parent model.

Fig2.jpg contains three subplots. The top panel corresponds to the 
SouthWest of Sicily, where I compare the SSH at that point with and 
without tides from the MEDSEA model. I also include the MEDSEA SSH 
averaged over my domain (black line) shared in all plots and the MITgcm 
output (my result) shown as a black dashed line. I repeat this 
comparison in the south of my domain (cyan) and in Gibraltar (red).

Note: The Y-axis scales are not shared between subplots, but in all 
cases, it's clear that the parent model shows a low frequency SSH signal 
that I’m currently unable to reproduce in MITgcm.
As you mentioned, probably I should disable the balanced flow option. 
Additionally, I’m sharing the namelists data and data.obcs, if you have 
any advice or suggestions, I’d be happy to try them.

Thanks again for your help!
Best regards,

Jordi


On 8/7/25 17:24, Martin Losch wrote:
> Hi Jordi,
>
> it would help if you could provide your namelist files. And maybe the 
> customised *_OPTIONS.h files, if they are very different from the 
> standard ones.
> Do you use open boundary conditions? Balanced flow is maybe an issue?
>
> Martin
>
>> On 8. Jul 2025, at 16:57, Dimitris Menemenlis <dmenemenlis at gmail.com> 
>> wrote:
>>
>> Hi Jodi, perhaps a good place to start would be to understand cause 
>> of the larger oscillations in MEDSEA and ROMS, which might then help 
>> you diagnose what is missing in your MITgcm configuration.  For 
>> example, if the ~10-day oscillation in MEDSEA and ROMS is primarily 
>> caused by transport through Gibraltar Strait, then you could look at 
>> MITgcm’s transport through Gibraltar Strait to see whether it has 
>> been correctly prescribed.
>>
>> D.
>>
>>> On Jul 8, 2025, at 6:13 AM, Jordi Iglesias <jiglesias at icm.csic.es> 
>>> wrote:
>>>
>>> Dear MITgcm community,
>>>
>>> Over the past few months, I’ve been struggling to achieve realistic 
>>> sea surface height ("Eta") results in my MITgcm simulations. I’ve 
>>> tried several configurations,including non-hydrostatic, 
>>> quasi-non-hydrostatic, and nonlinear free surface options, but the 
>>> SSH output often differs significantly from the parent model (the 
>>> Copernicus Mediterranean analysis, MEDSEA). I’ve attached an example 
>>> and also shared a link to illustrate the issue. I have tides 
>>> configured, and the ssh is initialized from MEDSEA data. However, 
>>> when I compare the SSH output with the parent model (or with a ROMS 
>>> simulation, for example), it appears to oscillate around a constant 
>>> value that doesn’t evolve much over time, or changes are very small.
>>>
>>> A summary of my configuration: Horizontal resolution: 1.6 km, NW 
>>> Mediterranean Sea, Atmospheric forcing: ECMWF, initial ssh set with 
>>> pSurfInitFile, SphericalPolarGrid, quasiHydrostatic = .TRUE., 
>>> nonlinFreeSurf = 3, rigidLid = .FALSE., implicitFreeSurface = .TRUE.,
>>>
>>> If any additional parameters would help diagnose the issue, I’d be 
>>> happy to provide them.
>>>
>>> The temperature, salinity, and velocity fields are generally in good 
>>> agreement with ROMS and MEDSEA, but I’d really like to improve the 
>>> SSH performance. Has anyone encountered a similar issue or found 
>>> strategies to improve SSH in MITgcm?
>>>
>>> Thanks in advance for your help!
>>>
>>> Best regards,
>>> Jordi
>>>
>>> https://saco.csic.es/s/c2fSgN5RWPRcDSQ
>>>
>>>
>>> <Screenshot from 2025-07-08 
>>> 14-47-52.png>_______________________________________________
>>> MITgcm-support mailing list
>>> MITgcm-support at mitgcm.org
>>> http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
>>
>> _______________________________________________
>> MITgcm-support mailing list
>> MITgcm-support at mitgcm.org
>> http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
>
>
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.mitgcm.org/pipermail/mitgcm-support/attachments/20250709/9709cc69/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fig1.jpg
Type: image/jpeg
Size: 116956 bytes
Desc: not available
URL: <http://mailman.mitgcm.org/pipermail/mitgcm-support/attachments/20250709/9709cc69/attachment-0002.jpg>
-------------- next part --------------
# run CATALAN - OPERATIONAL
# Model parameters

# Continuous equation parameters
 &PARM01

 quasiHydrostatic=.TRUE.
 nonlinFreeSurf=3,
 rigidLid=.FALSE.,
 implicitFreeSurface=.TRUE.,
 viscAh=0.0,

 viscAz=1.E-6,
 viscA4=0.,
 diffKhT=0.01,
 diffKzT=1.E-6,
 diffK4T=0.,
 diffKhS=0.01,
 diffKzS=1.E-6,
 diffK4S=0.,

 useFullLeith=.TRUE.,
# This uses the Strain-Tension form for calculating viscous terms
 useStrainTensionVisc=.TRUE.,

# This is the standard Leith Viscosity coefficient, 
# visc=(visc2leith/pi)**3 grad(curl v_h)
#SG: viscC2leith=0.5,
#SG: viscC4leith=0.05,
 viscC2leith=1.0,
 viscC4leith=0.1,

# This is an additional Leith Viscosity, prop to grad(div.v_h)
# It traps instabilities that have no signal in grad(curl v_h)
#SG: viscC2leithD=0.5,
#SG: viscC4leithD=0.05,
 viscC2leithD=1.0,
 viscC4leithD=0.1,

# for this grid
#SG: viscC2Smag=0.5,
#SG: viscC4Smag=0.05,
 viscC2Smag=1.0,
 viscC4Smag=0.1,

# This is the max Viscosity used, be it Smag or Leith, and it scales 
# with grid size and timestep
#SG: viscAhGridMax=1.E-2,
#SG: viscA4GridMax=1.E-9,
 viscAhGridMax=1.0,
 viscA4GridMax=1.0,

 staggerTimeStep=.TRUE.,

 useConstantF=.FALSE.,
 useBetaPlaneF=.FALSE.,
 useSphereF=.TRUE.,
 use3dCoriolis=.TRUE.,
 eosType='JMD95Z',
 hFacMin=0.2,
 no_slip_sides=.TRUE.,
 no_slip_bottom=.TRUE.,
 
 exactConserv=.TRUE.,
 addFrictionHeating=.TRUE.,

 implicitDiffusion=.TRUE.,
 implicitViscosity=.TRUE.,
# nonHydrostatic=.TRUE.,
 useNHMTerms=.TRUE.,
 useRealFreshwaterFlux=.TRUE.,
 selectAddFluid=1, 
 linFSConserveTr=.FALSE.,
 
 globalFiles=.FALSE.,
 useSingleCpuIO=.TRUE.,
 
 bottomDragLinear=0.0000,
 bottomDragQuadratic=0.002,
 tempAdvScheme=33,
 saltAdvScheme=33,

 readBinaryPrec=32,
 writeBinaryPrec=32,
 &END

# Elliptic solver parameters
 &PARM02
 &END

# Time stepping parameters
# 20211102 SG:
 &PARM03
 deltaT=60.,
 startTime=0.,
 endTime=2592000,
 chkPtFreq=86400.,
 dumpFreq=0.,
 pChkPtFreq=86400.,
 periodicExternalForcing=.FALSE.,
 monitorFreq=43200.,
 tauThetaClimRelax=0.,
 &END

# Gridding parameters
 &PARM04
 usingCartesianGrid=.FALSE.,
 usingSphericalPolarGrid=.TRUE.,
 
 ygOrigin= 38.45125,
 xgOrigin=-0.46,
 delX=420*0.015625,
 delY=330*0.015625,

	
 delZ =2.4, 2.8, 3.2, 3.7, 4.3, 5.0, 
 5.8, 6.8, 7.8, 9.1, 10.5, 12.2, 14.1,
 16.3, 18.8, 21.7, 25.0, 28.8, 33.1, 
 38.0, 43.5, 49.7, 56.7, 64.4, 73.0, 
 82.4, 92.7, 103.7, 115.5, 127.8, 
 140.6, 153.5, 166.4, 178.9, 190.5,
 201.0, 210.0, 217.1, 222.0, 224.5,
 
 &END

# Input datasets

 &PARM05
 the_run_name="Catsea 1/64 simulation",
 bathyFile='../data/bathy.bin',
 hydrogThetaFile='../data/tem_ini.bin',
 hydrogSaltFile='../data/sal_ini.bin',
 uVelInitFile='../data/u_ini.bin',
 vVelInitFile='../data/v_ini.bin',
 pSurfInitFile='../data/ssh_ini.bin',
 &END
-------------- next part --------------
# *****************************************
# Open-boundaries
# *****************************************
 &OBCS_PARM01
 OBNuFile='',
 OBNvFile='',
 OBNtFile='',
 OBNsFile='',
#
 OBSuFile='../data/OBSu.bin',
 OBSvFile='../data/OBSv.bin',
 OBStFile='../data/OBSt.bin',
 OBSsFile='../data/OBSs.bin',
#
 OBEuFile='../data/OBEu.bin',
 OBEvFile='../data/OBEv.bin',
 OBEtFile='../data/OBEt.bin',
 OBEsFile='../data/OBEs.bin',
#
 OBWuFile='',
 OBWvFile='',
 OBWtFile='',
 OBWsFile='',
#
 OB_Jnorth=420*0,
 OB_Jsouth=420*1,
 OB_Ieast=330*-1,
 OB_Iwest=330*0,
#
 useOrlanskiNorth=.FALSE.,
 useOrlanskiSouth=.FALSE.,
 useOrlanskiEast=.FALSE.,
 useOrlanskiWest=.FALSE.,
#
 useOBCSprescribe=.TRUE.,
 useOBCSsponge=.TRUE.,
 OBCSsponge_N=.FALSE.
 OBCSsponge_S=.TRUE.
 OBCSsponge_E=.TRUE.
 OBCSsponge_W=.FALSE.
 useOBCSbalance=.TRUE.,
 OBCS_balanceFacN=0.,
 OBCS_balanceFacS=1.,
 OBCS_balanceFacE=1.,
 OBCS_balanceFacW=0.,
# OBCSbalanceSurf=.FALSE.,
 OBCSprintDiags=.FALSE.,
#
 useOBCStides=.TRUE.,
# components   = M2       S2     N2       K2       K1      O1       P1       Q1
# periods (hr) = 12.4206  12     12.6583  11.9672  23.9345 25.8193  24.0659  26.8684
tidalPeriod  = 44714.16,43200.,45569.88,43081.92,86164.2,92949.48,86637.24,96726.24,
OBSamFile='OBSam_med_CATSEA.tide_obcs',
OBEamFile='OBEam_med_CATSEA.tide_obcs',
OBNamFile='OBNam_med_CATSEA.tide_obcs',
OBWamFile='OBWam_med_CATSEA.tide_obcs',
OBSphFile='OBSph_med_CATSEA.tide_obcs',
OBEphFile='OBEph_med_CATSEA.tide_obcs',
OBNphFile='OBNph_med_CATSEA.tide_obcs',
OBWphFile='OBWph_med_CATSEA.tide_obcs',

#
 &END
#
# *****************************************
# Orlanski Boundary Condition Parameters.
# *****************************************
# &OBCS_PARM02
# cVelTimeScale=2000.,
# Cmax=0.45,
# &END
#
# *****************************************
# Sponge Layer Parameters.
# *****************************************
 &OBCS_PARM03
 Urelaxobcsinner  = 86400.0,
 Urelaxobcsbound  = 21600.0,
 Vrelaxobcsinner  = 86400.0,
 Vrelaxobcsbound  = 21600.0,
 spongeThickness  = 10,
 &END
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fig2.jpg
Type: image/jpeg
Size: 502545 bytes
Desc: not available
URL: <http://mailman.mitgcm.org/pipermail/mitgcm-support/attachments/20250709/9709cc69/attachment-0003.jpg>


More information about the MITgcm-support mailing list