Atmospheric Surface Boundary Layer

7. Atmospheric Surface Boundary Layer#

There are two ways to force CROCO with atmospheric fields. The first is the use of classical bulk parameterization (BULK_FLUX cpp key). Four have been updated and implemented in CROCO (COARE3.0, ECUMEV0, ECUMEV6 and WASP). The second is the use of a simplified atmospheric model (ABL1D cpp key, Lemarié et al. [2021]) on top of the bulk parameterization.

Note

  • ABL1D forcing strategy is still under evaluation.

  • In both cases, the use of a bulk parameterization (BULK_FLUX) is mandatory.

Below you’ll find the CPP keys for these two forcing capabilities and their descriptions :

BULK_FLUX’s related CPP options:

CPP options

Description

BULK_FLUX

Activate bulk formulation for surface turbulent fluxes (by default, COARE3.0 parametrization is used)

BULK_ECUMEV0

Use ECUMEv0 bulk formulation instead of COARE3.0 formulation

BULK_ECUMEV6

Use ECUMEv6 bulk formulation instead of COARE3.0 formulation

BULK_WASP

Use WASP bulk formulation instead of COARE3.0 formulation

BULK_GUSTINESS

Add in gustiness effect on the surface wind module. Can be used for both bulk parametrizations.

BULK_LW

Add in long-wave radiation feedback from model SST

SFLUX_CFB

Activate current feedback on … [Renault et al., 2020]

CFB_STRESS

… surface stress, using the Stress-Correction Approach (by default when SFLUX_CFB is defined)

CFB_WIND_TRA

… surface wind for turbulent heat fluxes computation, using the Wind-Correction Approach (by default when SFLUX_CFB is defined)

SST_SKIN

Activate skin sst computation [Zeng and Beljaars, 2005]

ONLINE

Read native files and perform online interpolation on CROCO
grid (default cubic interpolation)

QCORRECTION

Activate heat flux correction around model SST (if BULK_FLUX is undefined)

SFLX_CORR

Activate freshwater flux correction around model SSS (if BULK_FLUX is undefined)

ANA_DIURNAL_SW

Activate analytical diurnal modulation of short wave radiations
(only appropriate if there is no diurnal cycle in data)

RAIN_FLUX

Add E-P flux into the mass budget (added in omega)

By default COARE3.0 parametrization is used with GUSTINESS effects. To change bulk parametrization, one has to define one of the following cpp keys (not additional) :

  • define BULK_ECUMEV0 to use ECUME_v0 parametrization

  • define BULK_ECUMEV6 to use ECUME_v6 parametrization

  • define BULK_WASP to use WASP parametrization

Warning

It is possible to add GUSTINESS effects for all parametrizations by defining BULK_GUSTINESS cpp key

ABL1D’s related CPP options:

CPP options

Description

ABL1D

Activate ABL1d model and BULK_FLUX parametrization

ANA_ABL_LSDATA

Impose large scale forcing data for analytical simulations

ANA_ABL_VGRID

Compute vertical grid for ABL1d online for analytical simulations

STRESS_AT_RHO_POINTS

Compute stress at rho points

ABL_NUDGING

Active nudging for …

ABL_NUDGING_DYN

… dynamic (two components of the horizontal wind speed)

ABL_NUDGING_TRA

… tracers (air temperature and specific humidity)

ABL_DYN_RESTORE_EQ

Active Equator dynamic restoration

ONLINE related CPP options:

ONLINE option is an alternative to pre-processing of surface forcing data for both forcing strategy (ABL1D / BULK_FLUX), that can be useful for long-term and/or high resolution simulations, especially if handling multiple configurations. ONLINE option calls for CUBIC_INTERP in set_global_definitions.h.

CPP options

Description

ECMWF

Use ECMWF atm fluxes

AROME

Use METEO FRANCE fluxes

READ_PATM

Read atmospheric pressure instead of using default reference pressure
and take into account the atmospherical pressure gradient in the equations

OBC_PATM

In the case of READ_PATM, inverse barometer effect to the open boundaries if
the atmospherical pressure is read in the meteo file.

ONLINE variables description

The following table describe what is expected in online forcing file.

variables

option given cppkey

Long name

units

AROME

ERA_ECMWF

Temperature above ground

Kelvin

t2m

T2M

specific humidity

Kg/Kg

rh

Q

precipitation rate

Kg.m-2.s-1

rain

TP

Upward Net short wave

W.m-2

swhf

SSR

Downward long wave

W.m-2

lwhf

STRD

U component of wind

m/s

u10m

U10M

V component of wind

m/s

v10m

V10M

Pressure at sea level

Pa

pmer

msl

time vector

days

time

time

Warning

For AROME time units must be in days since 1900-01-01

Note

Long wave flux is either downward or net given your inputs in atmospherical modeles :

  • First case : You have a downward flux only. So you have to add BULK_LW option to compute the net flux.

  • Second case : You already have a net long flux. You must remove the BULK_LW to not take twice the feedback into account.

Preselected options (cppdefs.h):

# undef BULK_FLUX
# ifdef BULK_FLUX
#  undef  BULK_ECUMEV0
#  undef  BULK_ECUMEV6
#  undef  BULK_WASP
#  define BULK_GUSTINESS
#  define BULK_LW
#  undef  SST_SKIN
#  undef  ANA_DIURNAL_SW
#  undef  ONLINE
#  ifdef ONLINE
#   undef  AROME
#   undef  ERA_ECMWF
#  endif
#  undef READ_PATM
#  ifdef READ_PATM
#   define OBC_PATM
#  endif
# else
#  define QCORRECTION
#  define SFLX_CORR
#  undef  SFLX_CORR_COEF
#  define ANA_DIURNAL_SW
# endif
# undef  SFLUX_CFB
# undef  SEA_ICE_NOFLUX

Preselected options (cppdefs_dev.h):

#ifdef BULK_FLUX
# ifdef ONLINE
#  define CUBIC_INTERP
# endif
# ifdef BULK_ECUMEV0
#  define BULK_GUSTINESS
# elif defined BULK_ECUMEV6
#  define BULK_GUSTINESS
# elif defined BULK_WASP
#  define BULK_GUSTINESS
# endif
#endif
#ifdef SFLUX_CFB
# ifdef BULK_FLUX
#  define CFB_STRESS
#  define CFB_WIND_TRA
# else
#  undef  CFB_STRESS
#  undef  CFB_WIND_TRA
# endif
#endif