rompy.swan.components.physics.VEGETATION#

pydantic model rompy.swan.components.physics.VEGETATION[source]#

Vegetation dumping.

VEGETATION [iveg] < [height] [diamtr] [nstems] [drag] >

With this command the user can activate wave damping due to vegetation based on the Dalrymple’s formula (1984) as implemented by Suzuki et al. (2011). This damping is uniform over the wave frequencies. An alternative is the frequency-dependent (canopy) dissipation model of Jacobsen et al. (2019). If this command is not used, SWAN will not account for vegetation effects.

The vegetation (rigid plants) can be divided over a number of vertical segments and so, the possibility to vary the vegetation vertically is included. Each vertical layer represents some characteristics of the plants. These variables as indicated below can be repeated as many vertical layers to be chosen.

References

Dalrymple, R.A., Kirby, J.T. and Hwang, P.A., 1984. Wave diffraction due to areas of energy dissipation. Journal of waterway, port, coastal, and ocean engineering, 110(1), pp.67-79.

Jacobsen, N.G., Bakker, W., Uijttewaal, W.S. and Uittenbogaard, R., 2019. Experimental investigation of the wave-induced motion of and force distribution along a flexible stem. Journal of Fluid Mechanics, 880, pp.1036-1069.

Suzuki, T., Zijlema, M., Burger, B., Meijer, M.C. and Narayan, S., 2012. Wave dissipation by vegetation with layer schematization in SWAN. Coastal Engineering, 59(1), pp.64-71.

Notes

Vertical layering of the vegetation is not yet implemented for the Jacobsen et al. (2019) method.

Examples

In [200]: from rompy.swan.components.physics import VEGETATION

# Single layer
In [201]: vegetation = VEGETATION(
   .....:     height=1.2,
   .....:     diamtr=0.1,
   .....:     drag=0.5,
   .....:     nstems=10,
   .....: )
   .....: 

In [202]: print(vegetation.render())
VEGETATION iveg=1 height=1.2 diamtr=0.1 nstems=10 drag=0.5

# 2 vertical layers
In [203]: vegetation = VEGETATION(
   .....:     iveg=1,
   .....:     height=[1.2, 0.8],
   .....:     diamtr=[0.1, 0.1],
   .....:     drag=[0.5, 0.5],
   .....:     nstems=[10, 5],
   .....: )
   .....: 

In [204]: print(vegetation.render())
VEGETATION iveg=1 height=1.2 diamtr=0.1 nstems=10 drag=0.5 height=0.8 diamtr=0.1 nstems=5 drag=0.5
Fields:
Validators:
field diamtr: float | list[float] [Required]#

The diameter of each plant stand per layer (in m)

Validated by:
field drag: float | list[float] [Required]#

The drag coefficient per layer

Validated by:
field height: float | list[float] [Required]#

The plant height per layer (in m)

Validated by:
field iveg: Literal[1, 2] = 1#

Indicates the method for the vegetation computation (SWAN default: 1):

  • 1: Suzuki et al. (2011)

  • 2: Jacobsen et al. (2019)

Validated by:
field model_type: Literal['vegetation', 'VEGETATION'] = 'vegetation'#

Model type discriminator

Validated by:
field nstems: int | list[int] = 1#

The number of plant stands per square meter for each layer. Note that nstems is allowed to vary over the computational region to account for the zonation of vegetation. In that case use the commands IMPGRID NPLANTS and READINP NPLANTS to define and read the vegetation density. The (vertically varying) value of nstems in this command will be multiplied by this horizontally varying plant density (SWAN default: 1)

Validated by:
cmd() str[source]#

Command file string for this component.

validator jacomsen_layering_not_implemented  »  all fields[source]#
validator number_of_layers  »  nstems, height, drag, diamtr[source]#