namespace mom_wave_interface¶
Overview¶
Interface for surface waves. More…
namespace mom_wave_interface { // global variables integer wavemethod =-99; integer, public numbands =0; integer, public partitionmode; // global functions subroutine, public mom_wave_interface_init( time time, G G, GV GV, US US, param_file param_file, CS CS, diag diag ); subroutine, public mom_wave_interface_init_lite(param_file param_file); subroutine, public update_surface_waves(G G, GV GV, US US, Day Day, dt dt, CS CS); subroutine, public update_stokes_drift(G G, GV GV, US US, CS CS, h h, ustar ustar); subroutine, public stokesmixing(G G, GV GV, dt dt, h h, u u, v v, Waves Waves); subroutine, public coriolisstokes(G G, GV GV, DT DT, h h, u u, v v, WAVES WAVES, US US); subroutine, public waves_end(CS CS); subroutine, public get_langmuir_number( LA LA, G G, GV GV, US US, HBL HBL, ustar ustar, i i, j j, H H, U_H U_H, V_H V_H, Override_MA Override_MA, Waves Waves ); } // namespace mom_wave_interface
Detailed Documentation¶
Interface for surface waves.
Brandon Reichl, 2018.
This module should be moved as wave coupling progresses and likely will should mirror the iceberg or sea-ice model set-up.
This module is meant to contain the routines to read in and interpret surface wave data for MOM6. In its original form, the capabilities include setting the Stokes drift in the model (from a variety of sources including prescribed, empirical, and input files). In short order, the plan is to also ammend the subroutine to accept Stokes drift information from an external coupler. Eventually, it will be necessary to break this file apart so that general wave information may be stored in the control structure and the Stokes drift effect can be isolated from processes such as sea-state dependent momentum fluxes, gas fluxes, and other wave related air-sea interaction and boundary layer phenomenon.
The Stokes drift are stored on the C-grid with the conventional protocol to interpolate to the h-grid to compute Langmuir number, the primary quantity needed for Langmuir turbulence parameterizations in both the ePBL and KPP approach. This module also computes full 3d Stokes drift profiles, which will be useful if second-order type boundary layer parameterizations are implemented (perhaps via GOTM, work in progress).
Global Variables¶
integer wavemethod =-99
Options for including wave information Valid (tested) choices are: 0 - Test Profile 1 - Surface Stokes Drift Bands 2 - DHH85 3 - LF17 -99 - No waves computed, but empirical Langmuir number used.
integer, public numbands =0
Number of wavenumber/frequency partitions to receive This needs to match the number of bands provided via either coupling or file.
integer, public partitionmode
Method for partition mode (meant to check input) 0 - wavenumbers 1 - frequencies.
Global Functions¶
subroutine, public mom_wave_interface_init( time time, G G, GV GV, US US, param_file param_file, CS CS, diag diag )
Initializes parameters related to MOM_wave_interface.
Parameters:
time |
Model time |
g |
Grid structure |
gv |
Vertical grid structure |
us |
A dimensional unit scaling type |
param_file |
Input parameter structure |
cs |
Wave parameter control structure |
diag |
Diagnostic Pointer |
subroutine, public mom_wave_interface_init_lite(param_file param_file)
A ‘lite’ init subroutine to initialize a few inputs needed if using wave information with the wind-speed dependent Stokes drift formulation of LF17.
Parameters:
param_file |
Input parameter structure |
subroutine, public update_surface_waves( G G, GV GV, US US, Day Day, dt dt, CS CS )
Subroutine that handles updating of surface wave/Stokes drift related properties.
Parameters:
cs |
Wave parameter Control structure |
g |
Grid structure |
gv |
Vertical grid structure |
us |
A dimensional unit scaling type |
day |
Current model time |
dt |
Timestep as a time-type |
subroutine, public update_stokes_drift( G G, GV GV, US US, CS CS, h h, ustar ustar )
Constructs the Stokes Drift profile on the model grid based on desired coupling options.
Parameters:
cs |
Wave parameter Control structure |
g |
Grid structure |
gv |
Vertical grid structure |
us |
A dimensional unit scaling type |
h |
Thickness [H ~> m or kg m-2] |
ustar |
Wind friction velocity [Z T-1 ~> m s-1]. |
subroutine, public stokesmixing(G G, GV GV, dt dt, h h, u u, v v, Waves Waves)
Explicit solver for Stokes mixing. Still in development do not use.
Parameters:
g |
Ocean grid |
gv |
Ocean vertical grid |
dt |
Time step of MOM6 [T ~> s] for explicit solver |
h |
Layer thicknesses [H ~> m or kg m-2] |
u |
Velocity i-component [m s-1] |
v |
Velocity j-component [m s-1] |
waves |
Surface wave related control structure. |
subroutine, public coriolisstokes( G G, GV GV, DT DT, h h, u u, v v, WAVES WAVES, US US )
Solver to add Coriolis-Stokes to model Still in development and not meant for general use. Can be activated (with code intervention) for LES comparison CHECK THAT RIGHT TIMESTEP IS PASSED IF YOU USE THIS**.
Not accessed in the standard code.
Parameters:
g |
Ocean grid |
gv |
Ocean vertical grid |
dt |
Time step of MOM6 [s] CHECK IF PASSING RIGHT TIMESTEP |
h |
Layer thicknesses [H ~> m or kg m-2] |
u |
Velocity i-component [m s-1] |
v |
Velocity j-component [m s-1] |
waves |
Surface wave related control structure. |
us |
A dimensional unit scaling type |
subroutine, public waves_end(CS CS)
Clear pointers, deallocate memory.
Parameters:
cs |
Control structure |
subroutine, public get_langmuir_number( LA LA, G G, GV GV, US US, HBL HBL, ustar ustar, i i, j j, H H, U_H U_H, V_H V_H, Override_MA Override_MA, Waves Waves )
Interface to get Langmuir number based on options stored in wave structure.
Note this can be called with an unallocated Waves pointer, which is okay if we want the wind-speed only dependent Langmuir number. Therefore, we need to be careful about what we try to access here.
Parameters:
g |
Ocean grid structure |
gv |
Ocean vertical grid structure |
us |
A dimensional unit scaling type |
i |
Meridional index of h-point |
j |
Zonal index of h-point |
ustar |
Friction velocity [Z T-1 ~> m s-1]. |
hbl |
(Positive) thickness of boundary layer [Z ~> m]. |
override_ma |
Override to use misalignment in LA calculation. This can be used if diagnostic LA outputs are desired that are different than those used by the dynamical model. |
h |
Grid layer thickness [H ~> m or kg m-2] |
u_h |
Zonal velocity at H point [m s-1] |
v_h |
Meridional velocity at H point [m s-1] |
waves |
Surface wave control structure. |
la |
Langmuir number |