[MITgcm-support] Potentially unstable time-stepping

Martin Losch Martin.Losch at awi.de
Wed Oct 7 03:38:50 EDT 2015


Hi Daniel,

the “NaN”s in the output tell you that something is wrong, what exactly I cannot tell from your information. In general, your approach seems plausible, but keep in mind that the verification experiments are not always stable forever (especially after changing some of the parameters). They are meant to be starting points (besides being verification experiments). Here are some suggestions:
- I would take the warning message seriously and introduce a “ staggerTimeStep=.TRUE.,” in data&PARM01, if you use a “multidim" time stepping scheme like “33”
- you need to adjust the friction parameters:  viscAh=1.E-2, viscAz=1.E-3, are likely too large for dx and dy of order O(cm). For the horizontal viscosity I would use the scaled parameters viscAhGrid and viscA4Grid, have a look a the options in pkg/mom_common/mom_calc_viscosity and in the documentations (Eddy viscosities, at the end of section 2). For viscAz you’ll probably need something like molecular values (1e-6?). This is probably the main reason for the model blowing up, because there is also a “cfl”-like criterion for the viscosities.

Hope that helps,
Martin

> On 07 Oct 2015, at 04:37, Daniel Iván Garduño Ruíz <dan_y at ciencias.unam.mx> wrote:
> 
> Hi,
> 
> in order to make a simulation of a gravity current and compare it with a laboratory experiment I've been trying to run the plume on a slope experiment with a scale one thousand times smaller than the original (Lx=6.4, H=0.2). I've made the necessary changes in the parameters of the topography in the gendata.m file with the purpose of adjust it to the new domain and I reduced the cooling function by a factor of 1000 (Qo=0.2) . I've also reduced one thousand times the time step (deltaT=2.E-2) in the data file to meet the CLF condition. However, when I run the code during 20s (nTimeSteps=1000) obtaining data each second ( dumpFreq=1) the output is always zero except for the initial condition. Below I copied one section of the output in the terminal. It says that the time step is potentially unstable.
> Should I reduce even more the time steep or how could I solve this problem?
> 
> Thanks,
> 
> Daniel.
> 
> ** WARNING ** GAD_CHECK: potentially unstable time-stepping (Internal Wave)
> ** WARNING ** GAD_CHECK: need "staggerTimeStep=.TRUE." in "data", nml PARM01
> (PID.TID 0000.0001) // =======================================================
> (PID.TID 0000.0001) // Check Model config. (CONFIG_CHECK):
> (PID.TID 0000.0001) // CONFIG_CHECK : Normal End
> (PID.TID 0000.0001) // =======================================================
> (PID.TID 0000.0001)
> (PID.TID 0000.0001) MDS_READ_FIELD: opening global file: T.init
> (PID.TID 0000.0001) Start initial hydrostatic pressure computation
> (PID.TID 0000.0001) Pressure is predetermined for buoyancyRelation OCEANIC
> (PID.TID 0000.0001)
> (PID.TID 0000.0001) MDS_READ_FIELD: opening global file: Qnet.forcing
> (PID.TID 0000.0001) // =======================================================
> (PID.TID 0000.0001) // Model current state
> (PID.TID 0000.0001) // =======================================================
> (PID.TID 0000.0001)
> (PID.TID 0000.0001) // =======================================================
> (PID.TID 0000.0001) // Begin MONITOR dynamic field statistics
> (PID.TID 0000.0001) // =======================================================
> (PID.TID 0000.0001) %MON time_tsnumber = 0
> (PID.TID 0000.0001) %MON time_secondsf = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_eta_max = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_eta_min = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_eta_mean = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_eta_sd = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_eta_del2 = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_uvel_max = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_uvel_min = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_uvel_mean = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_uvel_sd = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_uvel_del2 = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_vvel_max = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_vvel_min = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_vvel_mean = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_vvel_sd = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_vvel_del2 = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_wvel_max = -0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_wvel_min = -0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_wvel_mean = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_wvel_sd = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_wvel_del2 = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON dynstat_theta_max = 9.9997277179370E-03
> (PID.TID 0000.0001) %MON dynstat_theta_min = 1.1007341536251E-07
> (PID.TID 0000.0001) %MON dynstat_theta_mean = 4.9748238137022E-03
> (PID.TID 0000.0001) %MON dynstat_theta_sd = 2.8914366758962E-03
> (PID.TID 0000.0001) %MON dynstat_theta_del2 = 6.1778061612085E-05
> (PID.TID 0000.0001) %MON dynstat_salt_max = 3.5000000000000E+01
> (PID.TID 0000.0001) %MON dynstat_salt_min = 3.5000000000000E+01
> (PID.TID 0000.0001) %MON dynstat_salt_mean = 3.5000000000000E+01
> (PID.TID 0000.0001) %MON dynstat_salt_sd = 1.4210854715202E-14
> (PID.TID 0000.0001) %MON dynstat_salt_del2 = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON advcfl_uvel_max = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON advcfl_vvel_max = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON advcfl_wvel_max = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON advcfl_W_hf_max = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON pe_b_mean = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON ke_max = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON ke_mean = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON ke_vol = 2.0102767852146E-01
> (PID.TID 0000.0001) %MON vort_r_min = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON vort_r_max = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON vort_a_mean = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON vort_a_sd = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON vort_p_mean = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON vort_p_sd = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON surfExpan_theta_mean = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON surfExpan_salt_mean = 0.0000000000000E+00
> (PID.TID 0000.0001) // =======================================================
> (PID.TID 0000.0001) // End MONITOR dynamic field statistics
> (PID.TID 0000.0001) // =======================================================
> (PID.TID 0000.0001) // =======================================================
> (PID.TID 0000.0001) // Begin OBCS MONITOR field statistics
> (PID.TID 0000.0001) // =======================================================
> (PID.TID 0000.0001) %MON obc_time_tsnumber = 0
> (PID.TID 0000.0001) %MON obc_time_secondsf = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON obc_E_uVel_max = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON obc_E_uVel_min = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON obc_E_uVel_mean = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON obc_E_uVel_sd = 0.0000000000000E+00
> (PID.TID 0000.0001) %MON obc_E_uVel_Int = 0.0000000000000E+00
> (PID.TID 0000.0001) // =======================================================
> (PID.TID 0000.0001) // End OBCS MONITOR field statistics
> (PID.TID 0000.0001) // =======================================================
> (PID.TID 0000.0001) SOLVE_FOR_PRESSURE: putPmEinXvector = F
> (PID.TID 0000.0001) SOLVE_FOR_PRESSURE: zeroPsNH= F , zeroMeanPnh= F
> (PID.TID 0000.0001) SOLVE_FOR_PRESSURE: oldFreeSurfTerm = T
> cg2d: Sum(rhs),rhsMax = -1.11022302462516E-15 4.16208189655871E-07
> cg3d: Sum(rhs),rhsMax = 1.13880909910491E-13 6.48786798521496E-08
> cg2d: Sum(rhs),rhsMax = 1.43684958260337E-04 4.09672560404331E-07
> cg3d: Sum(rhs),rhsMax = 5.64151156345893E-13 6.58423611597169E-08
> cg2d: Sum(rhs),rhsMax = -4.02391724786677E-06 8.32099177935017E-07
> cg3d: Sum(rhs),rhsMax = 2.16649614914743E-14 9.86155752812277E-07
> cg2d: Sum(rhs),rhsMax = 7.15636038950301E-05 1.04243044253794E-04
> cg3d: Sum(rhs),rhsMax = 3.28719256675880E-14 1.54873177128291E-04
> cg2d: Sum(rhs),rhsMax = -5.99399655902970E-05 1.90388017625743E-02
> cg3d: Sum(rhs),rhsMax = -3.79868798092500E-14 2.82514076588151E-02
> cg2d: Sum(rhs),rhsMax = 5.05327454504265E-05 3.94687573206943E+00
> cg3d: Sum(rhs),rhsMax = 1.07722613618686E-14 5.65801409291792E+00
> cg2d: Sum(rhs),rhsMax = -1.78674737723434E-06 1.43411501340701E+04
> cg3d: Sum(rhs),rhsMax = -2.07628867749730E-14 1.54961559371665E+04
> cg2d: Sum(rhs),rhsMax = 1.13194488982581E-08 3.32174372472093E+10
> cg3d: Sum(rhs),rhsMax = 5.54231974962240E-15 2.85084780469162E+10
> cg2d: Sum(rhs),rhsMax = -1.13410996449112E-15 8.23101580641206E+22
> cg3d: Sum(rhs),rhsMax = -5.40324792602136E-14 1.27380228128126E+23
> cg2d: Sum(rhs),rhsMax = -6.12539551846340E-16 2.15786321285662E+47
> cg3d: Sum(rhs),rhsMax = -2.10556433944292E-14 4.51157439515894E+47
> cg2d: Sum(rhs),rhsMax = -8.05295438826218E-16 4.33667236140372E+95
> cg3d: Sum(rhs),rhsMax = -1.74479175477926E-14 2.35281615543187E+96
> cg2d: Sum(rhs),rhsMax = -3.36390730847025E-16 1.75635788606602+193
> cg3d: Sum(rhs),rhsMax = -5.57545801979570E-14 2.19009354157428+193
> cg2d: Sum(rhs),rhsMax = NaN Infinity
> cg3d: Sum(rhs),rhsMax = NaN 0.00000000000000E+00
> cg2d: Sum(rhs),rhsMax = NaN 0.00000000000000E+00
> cg3d: Sum(rhs),rhsMax = NaN 0.00000000000000E+00
> cg2d: Sum(rhs),rhsMax = NaN 0.00000000000000E+00
> cg3d: Sum(rhs),rhsMax = NaN 0.00000000000000E+00
> cg2d: Sum(rhs),rhsMax = NaN 0.00000000000000E+00
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-support




More information about the MITgcm-support mailing list