A package which provides the flexibility to relax fields (temperature, salinity, ptracers) in any 3-D location: so could be used as a sponge layer, or as a “source” anywhere in the domain.
For a tracer (T) at every grid point the tendency is modified so that:
where Mrbc is a 3-D mask (no time dependence) with values between 0 and 1. Where Mrbc is 1, relaxing timescale is 1/τT. Where it is 0 there is no relaxing. The value relaxed to is a 3-D (potentially varying in time) field given by Trbc.
A seperate mask can be used for T,S and ptracers and each of these can be relaxed or not and can have its own timescale τT. These are set in data.rbcs (see below).
The only compile-time parameter you are likely to have to change is in RBCS.h
, the number of masks, PARAMETER(maskLEN = 3 ), see below.
The runtime parameters are set in data.rbcs
:
Set in RBCS_PARM01: - rbcsForcingPeriod: time interval between forcing fields (in seconds), zero means constant-in-time forcing. - rbcsForcingCycle: repeat cycle of forcing fields (in seconds), zero means non-cyclic forcing. - rbcsForcingOffset: time offset of forcing fields (in seconds, default 0); this is relative to time averages starting at t = 0, i.e., the first forcing record/file is placed at
Set in RBCS_PARM02 for each of the ptracers (iTrc): - useRBCptrnum(iTrc): true or false (default is false). - tauRelaxPTR(iTrc): relax timescale. - relaxPtracerFile(iTrc): file with relax fields.
For constant-in-time relaxation, set rbcsForcingPeriod=0. For time-varying relaxation, Table [tab:pkg:rbcs:timing] illustrates the relation between model time and forcing fields (either records in one big file or, for rbcsSingleTimeFiles=T, individual files labeled with an iteration number). With rbcsSingleTimeFiles=T, this is the same as in the offline package, except that the forcing offset is in seconds.
lc|
where
p = rbcsForcingPeriod
c = rbcsForcingCycle
t0 = rbcsForcingOffset
i0 = rbcsIter0
Δtrbcs = deltaTrbcs
Set rbcsSingleTimeFiles=F and rbcsForcingOffset=0, and the model will start by interpolating the last and first records of rbcs data, placed at − p/2 and p/2, resp., as appropriate for fields averaged over the time intervals [ − p, 0] and [0, p].
Set rbcsForcingCycle=0 and rbcsSingleTimeFiles=T. With rbcsForcingOffset=0, rbcsIter0=0 and deltaTrbcs=rbcsForcingPeriod, the model would then start by interpolating data from files relax*File.0000000000.data and relax*File.0000000001.data, ... , again placed at − p/2 and p/2.
Set rbcsSingleTimeFiles=F and rbcsForcingOffset= − p/2, and the model will start forcing with the first record at t = 0.
Set rbcsForcingCycle=0 and rbcsSingleTimeFiles=T. In this case, it is more natural to set rbcsForcingOffset= + p/2. With rbcsIter0=0 and deltaTrbcs=rbcsForcingPeriod, the model would then start with data from files relax*File.0000000000.data at t = 0. It would then proceed to interpolate between this file and files relax*File.0000000001.data at t = rbcsForcingPeriod.
In the directory , the following experiments use rbcs
:
exp4
: box with 4 open boundaries, simulating flow over a Gaussian bump based onadcroft:97