groundwater - UK-FVCOM-Usergroup/uk-fvcom GitHub Wiki

Groundwater input

The FVCOM manual is lacking in details on the configuration of the groundwater input. So, the following documentation has been gleaned by reading mod_force.F.

Note

Only constant, periodic and variable have been implemented in FVCOM (no static or time dependent yet (2015-11-18)).

Groundwater input does not work with MPDATA enabled in make.inc.

Constant

To input groundwater across the entire domain, the namelist can be edited to use the constant GROUNDWATER_KIND as below:

&NML_GROUNDWATER
 GROUNDWATER_ON      = T,
 GROUNDWATER_TEMP_ON = T,
 GROUNDWATER_SALT_ON = T,
 GROUNDWATER_KIND    = 'constant',
 GROUNDWATER_FILE    = 'none',
 GROUNDWATER_FLOW    = 0.1,
 GROUNDWATER_TEMP    = 7.0,
 GROUNDWATER_SALT    = 50
/

Units for GROUNDWATER_FLOW are m/s.

Variable (in time and space)

The MATLAB fvcom-toolbox contains a script (write_FVCOM_groundwater) which, given a set of values, will generate a spatially (and optionally temporally) varying groundwater input netCDF file. Given a set of coordinates and values (flux, temperature and salinity) the script will output a netCDF with zero flux everywhere except those locations specified as sources of groundwater.

Once the netCDF file has been created, the FVCOM name list should be edited accordingly:

&NML_GROUNDWATER
 GROUNDWATER_ON      = T,
 GROUNDWATER_TEMP_ON = T,
 GROUNDWATER_SALT_ON = T,
 GROUNDWATER_KIND    = 'variable',
 GROUNDWATER_FILE    = 'casename_grndwtr.nc'
/

An example of the netCDF format output by write_FVCOM_groundwater is below:

netcdf casename_grndwtr {
dimensions:
        node = 81076 ;
        nele = 155997 ;
        time = UNLIMITED ; // (1096 currently)
        DateStrLen = 26 ;
variables:
        float groundwater_flux(time, node) ;
                groundwater_flux:long_name = "groundwater volume flux" ;
                groundwater_flux:units = "m3 s-1" ;
                groundwater_flux:grid = "fvcom_grid" ;
                groundwater_flux:type = "data" ;
        float groundwater_temp(time, node) ;
                groundwater_temp:long_name = "groundwater inflow temperature" ;
                groundwater_temp:units = "degrees_C" ;
                groundwater_temp:grid = "fvcom_grid" ;
                groundwater_temp:type = "data" ;
        float groundwater_salt(time, node) ;
                groundwater_salt:long_name = "groundwater inflow salinity" ;
                groundwater_salt:units = "1e-3" ;
                groundwater_salt:grid = "fvcom_grid" ;
                groundwater_salt:type = "data" ;
        int iint(time) ;
                iint:long_name = "internal mode iteration number" ;
        char Times(time, DateStrLen) ;
                Times:time_zone = "UTC" ;

// global attributes:
                :type = "FVCOM GROUNDWATER FORCING FILE" ;
                :source = "FVCOM grid (unstructured) surface forcing" ;
                :history = "File created with write_FVCOM_groundwater from the MATLAB fvcom-toolbox" ;