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