rompy.swan.subcomponents.numerics.STOPC#

pydantic model rompy.swan.subcomponents.numerics.STOPC[source]#

Stopping criteria of Zijlema and Van der Westhuysen (2005).

STOPC [dabs] [drel] [curvat] [npnts] ->STAT|NONSTAT [limiter]

With this option the user can influence the criterion for terminating the iterative procedure in the SWAN computations (both stationary and nonstationary). The criterion makes use of the second derivative, or curvature, of the iteration curve of the significant wave height. As the solution of a simulation approaches full convergence, the curvature of the iteration curve will tend to zero. SWAN stops the process if the relative change in Hs from one iteration to the next is less than drel and the curvature of the iteration curve of Hs normalized with Hs is less than curvat or the absolute change in Hs from one iteration to the next is less than dabs. Both conditions need to be fulfilled in more than fraction npnts percent of all wet grid points.

With respect to the QC modelling, another stopping criteria will be employed. Namely, SWAN stops the iteration process if the absolute change in Hs from one iterate to another is less than dabs * Hinc, where Hinc is the representative incident wave height, or the relative change in Hs from one to the next iteration is less than drel. These criteria must be fulfilled in more than npnts percent of all active, well-defined points.

References

  • Zijlema, M. and Van der Westhuysen, A. (2005). On convergence behaviour and numerical accuracy in stationary SWAN simulations of nearshore wind wave spectra, Coastal Engineering, 52(3), p. 337-256.

Examples

In [312]: from rompy.swan.subcomponents.numerics import STOPC

In [313]: stop = STOPC()

In [314]: print(stop.render())
STOPC

In [315]: stop = STOPC(
   .....:     dabs=0.005,
   .....:     drel=0.01,
   .....:     curvat=0.005,
   .....:     npnts=99.5,
   .....:     mode=dict(model_type="nonstat", mxitns=1),
   .....:     limiter=0.1,
   .....: )
   .....: 

In [316]: print(stop.render())
STOPC dabs=0.005 drel=0.01 curvat=0.005 npnts=99.5 NONSTATIONARY mxitns=1 limiter=0.1
Fields:
field curvat: float | None = None#

Maximum curvature of the iteration curve of Hs normalised with Hs (SWAN default: 0.005 [-] (not used in the QC model))

field dabs: float | None = None#

Maximum absolute change in Hs from one iteration to the next (SWAN default: 0.005 [m] or 0.05 [-] in case of QC model)

field drel: float | None = None#

Maximum relative change in Hs from one iteration to the next (SWAN default: 0.01 [-])

field limiter: float | None = None#

Determines the maximum change per iteration of the energy density per spectral-bin given in terms of a fraction of the omni-directional Phillips level (SWAN default: 0.1)

field mode: STAT | NONSTAT | None = None#

Termination criteria for stationary or nonstationary runs

field model_type: Literal['stopc', 'STOPC'] = 'stopc'#

Model type discriminator

field npnts: float | None = None#

Percentage of points in the computational grid above which the stopping criteria needs to be satisfied (SWAN default: 99.5 [-])

cmd() str[source]#

Command file string for this component.