Model parameters (param.nml)
Please refer to sample param.nml in the source code directory (sample_inputs/) while you read the following.
The file uses the FORTRAN namelist format. The order of input parameters is not important. Governing rules for this file are:
- lines beginning with
!
are comments; blank lines are ignored; - the format for each parameter is:
keywords=value
; keywords are case sensitive; spaces allowed betweenkeywords
and=
andvalue
; comments starting with!
after value are ignored; value
is an integer, double, or 2-char string (use ' ' (single quotes) for this); for double, any of the format is acceptable: 40 or 40. or 4.e1 but the last 2 are preferred. Use of decimal point for integers is discouraged;- if multiple entries for a parameter are found, the last one wins - please avoid this
- array inputs follow column major (like FORTRAN) and can spill to multiple line.
The namelist file is divided into 3 major sections: CORE, OPT and SCHOUT. CORE lists out all core parameters that must be specified by the user, i.e., no defaults are provided by the code. OPT and SCHOUT sections contain optional parameters and I/O flags, all of which have default values so the user does not have to specify any of these (the values shown in the sample are defaults unless otherwise stated). SCHISM will also echo the input values in the output file outputs/param_out.nml
.
Most parameters (and their keywords) are explained as follows; some are ‘developers handles’ that should
not be tweaked usually. Also the sample has suggested values for many parameters. Note that you do not
have to follow the order below. In many cases we have grouped related parameters
for easier explanation, but you should specify them on separate lines. Also you'll find additional useful
info in the comments of the sample param.nml
. The parameters are listed out below in alphabetic order.
CORE block¶
The following parameters have to be specified by the user; otherwise you may get a fatal error. The exceptions are those parameters required by optional modules (e.g., WWM), which do not need to be present if the modules are not invoked.
ipre (int)¶
Pre-processing flag (1: on; 0: off). ipre=0
: normal run.
Pre-processing flag is very useful for checking integrity of the horizontal grid and some inputs. ipre=1
: code will output centers.bp, sidecenters.bp, (centers build point, sidcenters build point), and mirror.out
and stop. Check errors in fatal.error
or system outputs.
Important
ipre/=0
only works for single CPU! If you use scribed I/O (OLDIO
off), make sure the number of 'computes' is 1, plus extra for scribes. Also under the scribe mode, the pre-processing run will likely finish without a clean exist (as the scribe world is still initializing). Check outputs/
(mirror.out
and fatal.error
) and system outputs; if the run is finished (e.g., you see 'Pre-processing completed successfully') you can manually kill the run.
ibc (int), ibtp (int)¶
Barotropic/baroclinic flags.
If ibc=0
, a baroclinic model is used and regardless of the value for ibtp
, the transport equation is solved. If ibc=1
, a barotropic model is used, and the transport equation may (when ibtp=1
) or may not (when ibtp=0
) be solved; in the former case, S and T are treated as passive tracers.
rnday (double)¶
Total simulation time in days.
dt (double)¶
Time step in seconds. This is the main time step in SCHISM. The transport solvers have their own adaptive time step for subcycling to satisfy the stability constraint.
msc2 (int), mdc2 (int)¶
These two parameters are only used if the wave module WWM is invoked (USE_WWM
is on and icou_elfe_wwm=1
).
The values represent the spectral resolution used in WWM and must match those in
wwminput.nml;
eco_class, ntracer_gen, ntracer_age, sed_class (int)¶
These parameters set the # of tracer ‘classes’ for each tracer module (EcoSim, GEN, AGE and SED), and are required if these modules are invoked in makefile. Note that other tracers modules (ICM, CoSiNE) set their own # of classes.
nspool, ihfskip (int)¶
These two flags control the global netcdf outputs. Output is done every nspool
steps, and a new output stack is opened every ihfskip
steps. The code requires that ihfskip
is a multiple of nspool
, and nhot_write
(see SCHOUT section) is a a multiple of ihfskip
.
nbins_veg_vert (int)¶
Number of vertical bins used in vegetation option iveg=1
.
OPT block¶
The optional parameters below are explained in alphabetical order. The default values can be seen below and also in the sample file (sample_inputs/).
dramp=1. (double), drampbc=1. (double)¶
Ramp periods in days for the tides, B.C. (boundary condition) or baroclincity.
If ibc=0
, the ramp-up for baroclinicity is specified with drampbc
(in days).
Turn off ramp-up by setting the ramp-up period <=0.
The ramp function is a hyperbolic tangent function; e.g. \(f(t) = \tanh(2t/86400/\text{drampbc})\).
flag_ic(:)=1 (int array)¶
Options for specifying initial tracer fields for cold start, where each array entry corresponds to individual tracer model (e.g. TEM, SAL, SED etc). If flag_ic=1
, a vertically homogeneous but horizontally varying initial tracer field is specified in inputs like temp.ic
, salt.ic
, [MOD]_hvar_[class #].ic
etc. If flag_ic=2
, a horizontally homogeneous but vertically varying initial tracer field, prescribed in a series of z-levels, is specified in inputs like ts.ic
, [MOD]_vvar_[class #].ic
. For more general 3D initial tracer fields, use the hot start option. See Optional inputs
section for examples of some of these inputs. Note that there is a requirement that flag_ic(1)=flag_ic(2)
.
h0=0.01 (double)¶
Minimum depth (in m) for wetting and drying (recommended value: 1cm
). When the total depth is less than h0
, the corresponding nodes/sides/elements are marked as dry. It should always be positive.
h[1,2]_bcc=50,100 (double; in meters)¶
Option on how the baroclinic gradient is calculated below bottom. The 'below-bottom' gradient is zeroed out if h>=h2_bcc
(i.e. like Z) or uses constant extrapolation (i.e. like terrain-following) if h<=h1_bcc(<h2_bcc)
. A linear transition is used if the local depth h1_bcc<h<h2_bcc
.
ibcc_mean=0 (int)¶
Mean T,S profile option. If ibcc_mean=1
(or ihot=0
and flag_ic(1:2)=2
), mean T/S profile is read in from ts.ic
, and will be removed when calculating baroclinic force. No ts.ic
is needed if ibcc_mean=0
.
ic_elev=0 (int), nramp_elev=0 (int) (int)¶
Elevation initial condition flag for cold start only (ihot=0
). If ic_elev=1
, elev.ic
(in *.gr3
format)
is needed to specify the initial condition (I.C.) Otherwise elevation is initialized to 0 everywhere (cold start only) or from the
elevation values in hotstart.nc
(hotstart option).
If ic_elev=1
, the user can ramp up the elevation
smoothly at the boundary starting from the specified elev.ic
or hotstart.nc
(if \(ihot\neq 0\)) by setting nramp_elev=1
(and the ramp-up
period in this case is dramp
). It's usually OK to use nramp_elev=1
under either cold or hot start.
icou_elfe_wwm=0, iwbl=0 (int)¶
Coupler flag with WWM; needed if USE_WWM pre-processor is enabled. icou_elfe_wwm = 0
: no feedback from WWM to SCHISM (decoupled); 1
: coupled SCHISM-WWM.
iwbl=1
: modified Grant-Madsen formulation for wave enhanced boundary layer; =2: Soulsby (1997) formulation; =0
: off.
If icou_elfe_wwm=1
, additional parameters are:
nstep_wwm=1
(int): call WWM everynstep_wwm
time steps;hmin_radstress=1.0
(double): minimum total water depth in meters used only in radiation stress calculation; the radiation stress is zero iflocal depth <hmin_radstress
.
In addition, there are parameters related to Vortex Formalism of Bennice and Ardhuin (2008).
ics=1 (int)¶
Coordinate frame flag. If ics=1
, Cartesian coordinates are used; if ics=2
, both hgrid.ll
and hgrid.gr3
use degrees latitude/longitude (and they should be identical to each other in this case).
ielm_transport = 0, max_subcyc = 10 (int)¶
Hybrid ELM-FV transport for performance. If ielm_transport=1
,
the hybrid scheme is invoked and max_subcyc
represents the max # of subcycling per time step in
transport allowed; if the actual # of subcycling in a prism at a time step exceeds this threshold,
more efficient ELM transport is used locally (at the expense of mass conservation and accuracy,
so make sure this option is used sparingly).
ieos_type=0, ieos_pres=0 (int)¶
By default, use the nonlinear equation of state: ieos_type=0
. ieos_pres=0,1
will turn on/off hydrostatic pressure effects. If the potential temperature is used, the pressure effect has been accounted for, so ieos_pres=0.
if_source=0 (int), dramp_ss=2. (double), lev_tr_source(:)=-9 (int array)¶
Point sources/sinks option (0: no; 1: on). If if_source=1
, needs source_sink.in
, vsource.th
, vsink.th
,
and msource.th
(see sample files in the source code directory src/ for their formats).
If if_source=-1
, the input is source.nc
, which includes element list inside and allows for different time
steps and # of records for volume/mass source/sinks. If if_source/=0
, specify ramp-up period (in days) with dramp_ss
(no
ramp-up if <=0).
The tracers are injected into an element at a particular level, as specified by lev_tr_source(1:ntr)
(where ntr
is total
# of tracer modules, i.e. 1 input level per module). The code will extrapolate below bottom/above surface if necessary,
so e.g., '-9' means bottom. To inject at all levels, set the level at '0'.
AGE module
The AGE mpdule has its own way of injecting age tracers (see below), so make sure the age concentrations from all sources are all -9999. in msource.th so as to not interfere.
level_age(:)=-999 (int array)¶
If USE_AGE
is on, this array specifies the vertical level indices used to inject age tracers. You only need to
specify this for the first half of the tracer classes. Use -999 to inject the tracer at all levels.
iflux=0 (int)¶
Parameter for checking volume and tracer mass conservation. If turned on (=1
or 2
), the
conservation will be checked in regions specified by fluxflag.prop
. iflux=2
would produce mroe detailed volume/mass
fluxes outputs.
iharind=0 (int)¶
Harmonic analysis flag. If \(iharind \neq 0\), an input harm.in
is needed.
ihconsv=0, isconsv=0 (int)¶
Heat budget and salt conservation models flags. If ihconsv=0
, the heat budget model is not used. If ihconsv=1
, a heat budget model is invoked, and a number of netcdf files for radiation flux input are read in from sflux/sflux_rad*.nc
. If isconsv=1
, the evaporation and precipitation model is evoked but the user needs to turn on the pre-processing flag PREC_EVAP
in makefile and recompile. In this case, ihconsv
must be 1
, and additional netcdf inputs for precipitation (sflux/sflux_prc*.nc
) are required. The user can also turn on USE_BULK_FAIRALL
in the makefile to use COARE algorithm instead of the default Zeng's bulk aerodynamic module.
i_hmin_airsea_ex (int), hmin_airsea_ex (double; in meters)¶
Option to locally turn off heat exchange.
i_hmin_airsea_ex=1
: exchange turned off iflocal grid depth<hmin_airsea_ex
i_hmin_airsea_ex=2
: exchange turned off iflocal water depth<hmin_airsea_ex
i_hmin_salt_ex (int), hmin_salt_ex (double; in meters)¶
Similar to i_hmin_airsea_ex
and hmin_airsea_ex
.
iprecip_off_bnd (int)¶
If iprecip_off_bnd
/=0, preciptation will be turned off near land boundary. This is useful for islands sitting on very steep slopes.
stemp_stc (double), stemp_dz(1:2) (double)¶
Option to account for sediment-water heat exchange on bottom temperature.
stemp_stc
is heat transfer coefficient \(W/m^2/K\) (so stemp_stc=0
would turn this option off).
stemp_dz(1) is the equivalent sediment buffer depth (m) for heat into sediment, and
stemp_dz(2) is the equivalent sediment buffer depth (m) for heat out of sediment.
ihdif=0 (int)¶
Flag for applying horizontal diffusivity, implemented as a geometric filter.
If ihdif=0
, it is not used. If \(ihdif \neq 0\), input hdif.gr3
is used to specify filter strength at each node (which
should be <=0.2).
ihot=0 (int)¶
Hot start flag. If ihot=0
, cold start; if \(ihot \neq 0\), hot start from hotstart.nc
. If ihot=1
, the time and time step are reset to zero, and outputs start from t=0
accordingly (and you need to adjust other inputs like .th
etc). If ihot=2
, the run (and outputs) will continue from the time specified in hotstart.nc
.
Note
- With
ihot=2
,you do not need to adjust other inputs but you do need to make sureflux.out
is insideoutputs/
(even if you usediflux=0
). If you used \(iout\_sta \neq 0\), make surestaout_*
are insideoutputs/
as well. This is because the code will try to append to these outputs upon restart, and would crash if it cannot find them. On the other hand, you don't need to have the global outputs inoutputs/
becausenhot_write
is a multiple ofihfskip
so the new outputs will be written into a new stack. In fact, you can change the core count upon hotstart this way. - Under
ihot=1
, beware the use of ramps. Since the time origin has been reset, the ramps need to be adjusted accordingly. For example, if the field has been fully warmed up at the hotstart, then set ramps=0.
ihydraulics=0 (int)¶
Hydraulic model option. If \(ihydraulics \neq 0\), hydraulics.in
is required (cf. hydraulics user manual).
iloadtide=0 (int), loadtide_coef (double)¶
Option to specify Self Attraction and Loading (SAL) tide, usually used for basin- or global-scale applications.
If iloadtide=0
, SAL is off. If iloadtide=1
, the SAL input is interpolated values from a tide database,
e.g., FES2014, given in loadtide_[FREQ].gr3
, where [FREQ]
are frequency names (shared with
tidal potential, in upper cases like M2) and the two 'depths' inside are amplitude (m)
and phases (degrees behind GMT). In this option, SAL is
lumped into tidal potential so it shares some parameters with tidal potential
in bctides.in
(cut-off depth, frequencies).
If iloadtide=2 or 3, use a simple scaling for gravity approach (in this option,
SAL is applied everywhere and does not share parameters with tidal potential).
If iloadtide=2
, a simple scaling specified by loadtide_coef
is used to reduce
the gravity. If iloadtide=3
, the scaling is dependent on the local depth a la Stepanov & Hughes (2004),
with a maximum value of loadtide_coef
.
imm=0, ibdef=10 (int)¶
Bed deformation option. Default: 0
(no bed deformation); 1
: with bed deformation (needs ibdef
(# of steps during which deformation occurs), and bdef.gr3
); 2: 3D bottom deformation (need to interact with code).
indvel=0 (int), ihorcon=0 (int), hvis_coef0=0.025 (double), ishapiro=1, niter_shap=1 (int), shapiro0=0.5 (double)¶
These parameters (and inter_mom
below) control the numerical dissipation in momentum solver; see SCHISM paper (Zhang et al. 2016) for details.
indvel
determines the method of converting side velocity to node velocity. If indvel=0
, the node velocity is allowed to be discontinuous across elements and additional viscosity/filter is needed to filter out grid-scale noises (spurious 'modes'). If indvel=1
, an inverse-distance interpolation procedure is used instead and the node velocity is continuous across elements; this method requires no additional viscosity/filter unless kriging ELM is used (inter_mom >0
). In general, indvel=0
leads to smaller numerical dissipation and better accuracy, but does generally require a velocity B.C.
Due to spurious modes or dispersion (oscillation), viscosity/filter should be applied. ihorcon=0
:no horizontal viscosity;
=1
: Laplacian (implemented as a filter); =2
: bi-harmonic. For ihorcon/=0
, hvis_coef0
specifies the non-dimensional viscosity. In addition to the viscosity, one can add the Shapiro filter,
which is specified by ishapiro
=0,±1, 2 (turn off/on Shapiro filter). If ishapiro=1
, shapiro0
specifies the Shapiro filter strength. If ishapiro=-1
, an input called shapiro.gr3
is
required which specifies the filter strength at each node (there is a pre-proc script gen_slope_filter2.f90
for this). If ishapiro=2
, a Smagorinsky-like filter is applied and shapiro.gr3
specifies the coefficient \((\gamma_0)\),
which is typically 10-\(10^3\):
If ishapiro/=0
, niter_shap
specifies the number of times the filter is applied.
For non-eddying regime applications (nearshore, estuary, river), an easiest option is: indvel=0
, ishapiro=1
(shapiro0=0.5
), ihorcon= inter_mom=0
.
For applications that include the eddying regime, grid resolution in the eddying regime needs to vary smoothly (Zhang et al. 2016), and the user needs to tweak dissipation carefully. A starting point can be: indvel=ishapiro=inter_mom=0
, ihorcon=2
, hvis_coef0=0.025
. If the amount of dissipation is insufficient in the non-eddying regime, consider using ishapiro=-1
, with an appropriate shapiro.gr3
to turn on Shapiro filter locally to add dissipation, or use ishapiro=2
and shapiro.gr3
with \((\gamma_0)\) set to 1000 everywhere.
inter_mom=0, kr_co=1 (int)¶
Interpolation method at foot of characteristic line during ELM. inter_mom=0
: default linear interpolation; =1
: dual kriging method. If inter_mom=-1
, the depth in krvel.gr3
(0 or 1) will determine the order of interpolation (linear or kriging). If the kriging ELM is used, the general covariance function is specified in kr_co
: 1: linear \(f(h)=-h\); 2: \((h^2*log(h))\); 3: cubic \((h^3)\); 4: \((-h^5)\).
In general, indvel=0
should be used with inter_mom=0
or inter_mom=1, kr_co=1,2
to avoid large dispersion (with additional viscosity/filter also). indvel=1
can be used with any covariance function without viscosity/filter.
inu_elev=0, inu_uv=0 (int)¶
Sponge layer for elevation and velocity (which is rarely used in SCHISM). Relaxation/nudging of a generic variable is implemented as:
which is a discrete analogue of the restoration equation:
If inu_elev=0
, no relaxation is applied to elevation. If inu_elev=1
, relaxation constants are specified in elev_nudge.gr3
(depth=0 means no relaxation, depth=1 means strongest nudging) and the elevations are relaxed toward 0. Similarly for inu_uv
(with input uv_nudge.gr3
).
inu_tr(:)=0 (int array), nu_sum_mult(int), step_nu_tr=86400. (double)¶
Nudging flag for tracer models (e.g. temperature), and nudging step (in sec). When inu_tr=0
, no nudging is done.
When inu_tr=1
, relax back to initial conditions.
When inu_tr=2
, nudge to values specified in [MOD]_nu.nc
, which has a time step of step_nu_tr
(in sec).
If inu_tr≠0
, the horizontal relaxation factors are specified in [MOD]_nudge.gr3
(as depths info),
and the vertical relaxation factors are specified as a linear function of depths with: vnh[1,2]
(transitional depths) and vnf[1,2]
(relaxation constants at the 2 depths). The final relaxation
constant is either the sum (if nu_sum_mult=1
) or product (if nu_sum_mult=2
) of the two,
i.e. (horizontal + or *
vertical relaxation factors) times dt
.
inunfl=0 (int)¶
Choice of inundation algorithm. inunfl=1
can be used if the horizontal resolution is fine enough, and this is critical for tsunami simulations. Otherwise use inunfl=0
.
iveg=0 (int)¶
Parameters for submerged or emergent vegetation. If iveg/=0
, you need to supply 4 extra inputs:
veg_cd.gr3
(form drag coefficient), veg_D.gr3
(depth is stem diameter in meters);
veg_N.gr3
(depth is # of stems per m2); and veg_h.gr3
(height of canopy in meters). These are original, unbent
values for the vegetation.
If iveg=1
, the vertical variation/scalings for these parameters are specified for nbins_veg_vert
vertical bins, with
veg_vert_z(1:nbins_veg_vert+1)
specifying the distance from bed (in meters) for each bin
(ascending order starting from 0). The vertical scalings are given by veg_vert_scale_[cd,N,D](1:nbins_veg_vert+1)
.
If iveg=2
, flexible vegetation formulation of Ganthy et al. (2011) is used. Parameters needed for this case are:
non-dimensional Leaf Area Index veg_lai
and veg_cw
(a non-dimensional calibration coefficient for diameter of bent leaf).
itr_met=3 (int), h_tvd=5. (double)¶
Transport option for all tracers. itr_met=3
for TVD, and itr_met=4
for 3rd order WENO. h_tvd
specifies the transition depth (in meters) between upwind and higher-order schemes; i.e. more efficient upwind is used when the local depth < h_tvd
.
Also in this case, you can additionally toggle between upwind and TVD by specifying regions in tvd.prop
. The TVD limiter function is specified in TVD_LIM
in mk/include_modules
(for code efficiency purpose).
If itr_met=3
, 2 tolerances are also required (use recommended values).
If itr_met=4
(WENO), there are several additional parameters. The most important ones are epsilon[12]
, which controls the
numerical dispersion for the 2nd and 3rd-order WENO respectively (note that the code will decide which order is used at each prism based on geometric constraints).
itur=0 (int)¶
Turbulence closure model selection.
If itur=0
, constant diffusivities are used for momentum and transport, and the diffusivities are specified in dfv0
, dfh0
.
If itur=-2
, vertically homogeneous but horizontally varying diffusivities are used, which are read in from hvd.mom
and hvd.tran
.
If itur=-1
, horizontally homogeneous but vertically varying diffusivities are used, which are read in from vvd.dat
.
If itur=2
, the zero-equation Pacanowski and Philander closure is used. In this case, a few extra parameters are required: h1_pp
, vdmax_pp1
, vdmin_pp1
, tdmin_pp1
, h2_pp
, vdmax_pp2
, vdmin_pp2
, tdmin_pp2
. Eddy viscosity is computed as: \(\text{vdiff}=\text{vdiff_max}/(1+\text{rich})^2+\text{vdiff_min}\), and diffusivity \(\text{tdiff}=\text{vdiff_max}/(1+\text{rich})^2+\text{tdiff_min}\), where \(\text{rich}\) is a Richardson number. The limits (vdiff_max
, vdiff_min
and tdiff_min
) vary linearly with depth between depths h1_pp
and h2_pp
.
If itur=3
, then the two-equation closure schemes from the GLS model of Umlauf and Burchard (2003) are used. In this case, 2 additional parameters are required: mid
, stab
, which specify the closure scheme and stability function used: mid=
MY
is Mellor & Yamada; KL
is GLS as k-kl; KE
is GLS as \(k-\varepsilon\); KW
is GLS as \(k-\omega\); UB
is Umlauf & Burchard's optimal. stab=GA
is Galperin's clipping (only for MY); KC
is Kantha & Clayson's stability function). Also the user needs to specify max/min diffusivity/viscosity in diffmax.gr3
and diffmin.gr3
, as well as a surface mixing length scale constant xlsc0
.
If itur=4
, GOTM turbulence model is invoked; the user needs to turn on pre-processing flag USE_GOTM
in makefile
and recompile (GOTM5.2 uses cmake, so does not need to be pre-compiled). In this case, the minimum and maximum
viscosity/diffusivity are still specified in diffmin.gr3
and diffmax.gr3
. There are some
ready-made samples for this input in the source code bundle.
A key parameter is the steady state Richardson number. If you wish to tune some parameters
inside, you may consult gotm.net for more details.
Note
- GOTM has only been tested up to v5.2, not newer versions of GOTM. Using
itur=3
generally gave similar results, but GOTM can produce substantially better stratification in some cases.
nadv=1 (int), dtb_min=10, dtb_max=30 (double)¶
Advection on/off option. If nadv=0
, advection is selectively turned off based on the input file adv.gr3
.
If nadv=1
or 2
, advection is on for the whole domain, and backtracking is done using either
Euler or 2nd-order Runge-Kutta scheme.
dtb_[min,max]
are min/max sub-steps allowed in btrack; actual sub-steps are calculated based on local flow gradients.
nchi=0 (int)¶
Bottom friction option. If nchi=-1
, and Manning's \(n\) is specified in manning.gr3
. If nchi=0
, spatially varying drag coefficients are read in from drag.gr3
(as depth info). For nchi=1
, bottom roughnesses (in meters) are read in from rough.gr3
.
If nchi=-1
, an additional parameter is required: hmin_man
(in meters) which sets the minimum depth used in the Manning formulation.
If nchi=1
, one additional parameter is required: dzb_min
(in meters). In this case the drag coefficients are calculated using the log drag law when the bottom cell thickness \(\delta_b>=\text{dzb_min}\); when \(\delta_b<\text{dzb_min}\), \(\text{Cd}=\text{Cdmax}\), where \(\text{Cdmax}=\text{Cd}(\delta_b=\text{dzb_min})\). This is to avoid exaggeration of \(\text{Cd}\) in very shallow water.
ncor=0 (int)¶
Coriolis option. If ncor=0
or -1
, a constant Coriolis parameter is specified. If ncor=0
, coricoef
specifies the Coriolis factor. If ncor=-1
, rlatitude
specifies the mean latitude used to calculate the Coriolis factor.
If ncor=1
, a variable Coriolis parameter, based either on a beta-plane approximation (ics=1
) or on the latitude-dependent Coriolis (ics=2
), is used, with the lat/lon coordinates read in from hgrid.ll
. For ics=1
, the center of beta-plane approximation must be correctly specified in sfea0
.
nws=0 (int), drampwind=1. (double), iwind_form=1 (int), iwindoff(int), wtiminc=dt (double)¶
Wind forcing options and the interval (in seconds) with which the wind input is read in. If nws=0
, no
wind is applied (and wtiminc
becomes unused). If nws=1
, constant wind is applied to the whole domain
at any given time, and the time history of wind is read in from wind.th
. If nws=2
, spatially
and temporally variable wind is applied and the input consists of a number of netcdf files in the directory
sflux/
. The option nws=3
is reserved for coupling with atmospheric model via ESMF caps. If nws=4
,
the required input atmos.nc
specifies wind and pressure at each node and at time of multiple of wtiminc
.
Additional inputs (e.g. heat fluxes) are needed if heat/salt exchange module is invoked.
If nws=-1
(requires USE_PAHM), use Holland parametric wind model (barotropic only with wind and atmos. pressure).
In this case, the Holland model is called every step so wtiminc is not used. An extra
input is needed: hurricane-track.dat
.
If nws>0
, the ramp-up period (in days) is specified with drampwind
. Also
the user has the option to scale the wind speed using iwindoff
=1 (which requires an additional input windfactor.gr3
).
The wind stress formulation is selected with iwind_form
.
- If
nws=2, ihconsv=1 && iwind_form=0
, the stress is calculated from heat exchange routine. - If
nws=1
or4
, ornws=2 && ihconsv=0
, ornws=2 && iwind_form≠ 0
, the stress is calculated from Pond & Pichard formulation (originally from Garret) ifiwind_form=-1
, or from Hwang (2018) ifiwind_form=1
. - If
WWM
is enabled andicou_elfe_wwm > 0
andiwind_form=-2
, stress is calculated by WWM.
rho0=1000, shw=4184. (double)¶
Reference water density for Boussinesq approximation and specific heat of water in J/kg/K.
rmaxvel=10. (double)¶
Maximum velocity. This is needed mainly for the air-water exchange as the latter may blow up if the water velocity is above 20m/s.
s1_mxbnt=0.5, s2_mxnbnt=3.5 (double)¶
Dimensioning parameters used in inter-subdomain backtracking. Start from s[12]_mxnbt=0.53
, and increase them (gradually) if you get a fatal error like “btrack: overflow”. Accuracy is not affected by the choice of these two parameters; these only affect memory consumption.
slam0=-124, sfea0=45 (double)¶
Centers of projection used to convert lat/lon to Cartesian coordinates. These are used if a variable Coriolis parameter is employed (ncor=1).
start_year=2000, start_month=1, start_day=1 (int), start_hour=0, utc_start=8 (double)¶
Starting time for simulation. utc_start
is hours behind the GMT, and is used to adjust time zone. For example, utc_start=5
is US Eastern Time, and utc_start= -8
is Beijing Time.
Note
- SCHISM's view of the time origin is relatively simple. The code starts from t=0 and marches with time step
dt
under cold start. It starts from a specified time upon hot start. - There are only 2 exceptions: (1) in air-sea exchange (
ihconsv=1
), the origin info (includingutc_start
) specified in these parameters will be compared against the time origins in eachsflux
file to determine the starting stack; (2) WWM manages its own time origins inwwminput.nml
; it's advisable to align the latter with SCHISM's origin.
thetai=0.6 (double)¶
Implicitness parameter (between 0.5 and 1). Recommended value: 0.6. Use '1' to get maximum stability for strong wet/dry.
SCHOUT block¶
iout_sta=0, nspool_sta=10 (int)¶
Station output flag. If iout_sta≠0
, an input station.in
is needed. In addition, nspool_sta
specifies the spool for station output. In this case, make sure nhot_write
is a multiple of nspool_sta
.
iof_ugrid (int)¶
UGRID option for outputs under scribed IO. If iof_ugrid/=0, outputs will also have UGRID metadata (at the expense of file size).
nc_out =1(int)¶
Main switch to turn on/off netcdf outputs, useful for other programs (e.g., ESMF) to control outputs.
nhot=0, nhot_write=8640 (int)¶
Hot start output control parameters. If nhot=0
, no hot start output is generated. If nhot=1
,
hotstart output is named outputs/hotstart_[process_id]_[it].nc
every nhot_write
steps, where it
is the corresponding time iteration number. nhot_write
must be a multiple of
ihfskip
and nspool_sta
. If you want to hotstart a run from step it
, you need to combine all process-specific
hotstart outputs into a hotstart.nc
using combine_hotstart7.f90
(./combine_hotstart7 -h
for help).
iof_* (int)¶
Global output (in netcdf4 format) options, where *
stands for module name (e.g. "hydro", "wwm" etc).
The frequency of global outputs is controlled by 2 parameters in CORE:
nspool
and ihfskip
. Output is done every
nspool
steps, and a new output stack is created every ihfskip
steps.
Under OLDIO, the outputs are named as outputs/schout_[MPI process id]_[1,2,3,...].nc
etc. The combine scripts
are then used to gather each output variable across all MPI processes into a single output, e.g., schout_[1,2,3…].nc
.
With new scribed I/O, outputs look like out2d_1,2,3…].nc
etc (and no combining is necessary). In this mode,
all 2D outputs are found in out2d*
and each 3D output (note that vector output like horizontal velocity counts as 2
outputs) has its own netcdf files, e.g. salinity_[1,2..].nc
, horizontalVelX_[1,2..].nc
etc.
Each output variable is controlled by an I/O flag in param.nml
. We only show a few examples below;
the rest are similar. Note that variables may be centered at nodes/sides/elements horizontally and
whole/half levels vertically. However, at the moment most variables are centered at nodes and whole levels,
and most post-processing FORTRAN scripts can only handle this type of outputs (while VisIT can handle other types).
iof_hydro(1) = 1 !global elevation output control. If iof_hydro(1)=0, no global elevation is recorded.
!If iof_hydro(1)= 1, global elevation for each node is recorded.
!The output is either starting from scratch or appended to existing ones depending
!on ihot.
Some outputs are conditional upon you turn on certain module; e.g. iof_sed(7) = 1
won’t output
the bottom depth change unless you turn on USE_SED
in makefile.
Some ‘native’ variables (e.g., element- or side-centered) are: