AeroBulk is a package/library that gathers state-of-the-art aerodynamic bulk formulae algorithms used to estimate turbulent air-sea fluxes in an efficient and unified way. These turbulent fluxes are wind stress, evaporation (latent heat flux) and sensible heat flux, they are needed as part of the surface boundary conditions of OGCMs, AGCMs and in the coupling interface of Earth Systems.

AeroBulk relies on bulk formulae to compute turbulent air-sea fluxes from the sea surface temperature, wind speed, and air temperature and specific humidity. In AeroBulk, 4 state-of-the-art algorithms are available to compute the drag, sensible heat and moisture transfer coefficients (CD, CH and CE) used in the bulk formulaes: In the COARE and ECMWF algorithms, a cool-skin/warm layer scheme is included and can be activated if the input sea-surface temperature is the bulk SST (measured a few tenths of meters below the surface). Activation of these cool-skin/warm layer schemes requires the surface downwelling shortwave and longwave radiative flux components to be provided. The NCAR algorithm is to be used only with the bulk SST.

Beside bulk algorithms AeroBulk also provides a variety of functions to accurately estimate relevant atmospheric variable such as density of air, different expressions of the humidity of air, viscosity of air, specific humidity at saturation, Monin-Obukhov length, wind gustiness, etc...

The focus in AeroBulk is readability, efficiency and portability towards either modern GCMs (Fortran 90, set of modules and a library).

> Obtaining AeroBulk
The AeroBulk project is hosted on GitHub:

You can download the code via git:

  git clone
or via subversion:

  svn co aerobulk

> Computing transfer coefficients with AeroBulk
In AeroBulk, 3 different routines are available to compute the bulk transfer (a.k.a exchange) coefficients CD, CH and CE. Beside computing the transfer coefficients, these routines adjust air temperature and humidity from height zt to the reference height (wind) zu. They also return the bulk wind speed, which is the scalar wind speed at height zu with the potential inclusion of a gustiness contribution (in calm and unstable conditions).

> Computing turbulent fluxes with AeroBulk
AeroBulk can also directly compute the 3 turbulent fluxes with the routine aerobulk_model() of module mod_aerobulk (mod_aerobulk.f90):

       USE mod_aerobulk
       CALL AEROBULK_MODEL( calgo, zt, zu, sst, t_zt, q_zt, U_zu, V_zu, SLP, &
       &                    Qe, Qh, Tau_x, Tau_y                             &
       &                   [, Niter=N, rad_sw=Rsw, rad_lw=Rlw] )
(The presence of rad_sw and rad_sw triggers the use of the Cool-Skin Warm-Layer parameterization with COARE* and ECMWF algorithms)

Example of a call, using COARE 3.0 algorithm with cool-skin warm-layer parameterization and 10 iterations:

       CALL AEROBULK_MODEL( 'coare', 2., 10., sst, t_zt, q_zt, U_zu, V_zu, SLP, &
       &                    Qe, Qh, Tau_x, Tau_y,                               &
       &                    Niter=10, rad_sw=Rsw, rad_lw=Rlw )
> Computing atmospheric state variables with AeroBulk
A selection of useful functions to estimate some atmospheric state variables of the marine boundary layer are available in the module mod_thermo (mod_thermo.f90).
Example for computing SSQ of Eq.(1) out of the SST and the SLP:

              USE mod_const
              USE mod_thermo

              SSQ(:,:) = 0.98*q_sat(SST, SLP)
> Acknowledging AeroBulk
To acknowledge/reference AeroBulk in your scientific work, please cite:

Brodeau, L., B. Barnier, S. Gulev, and C. Woods, 2017: Climatologically significant effects of some approximations in the bulk parameterizations of turbulent air-sea fluxes. J. Phys. Oceanogr., 47 (1), 5–28, 10.1175/JPO-D-16-0169.1. [ DOI ]


AeroBulk / L. Brodeau / 2017