Skip to content
This repository has been archived by the owner on Apr 18, 2018. It is now read-only.

Latest commit

 

History

History
165 lines (118 loc) · 8.37 KB

rbcs.rst

File metadata and controls

165 lines (118 loc) · 8.37 KB

RBCS Package

Introduction

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:

$$\frac{dT}{dt}=\frac{dT}{dt} - \frac{M_{rbc}}{\tau_T} (T-T_{rbc})$$

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).

Key subroutines and parameters

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 ${\rm rbcsForcingOffset+rbcsForcingPeriod}/2$; see below for examples. - rbcsSingleTimeFiles: true or false (default false), if true, forcing fields are given 1 file per rbcsForcingPeriod. - deltaTrbcs: time step used to compute the iteration numbers for rbcsSingleTimeFiles=T. - rbcsIter0: shift in iteration numbers used to label files if rbcsSingleTimeFiles=T (default 0, see below for examples). - useRBCtemp: true or false (default false) - useRBCsalt: true or false (default false) - useRBCptracers: true or false (default false), must be using ptracers to set true - tauRelaxT: timescale in seconds of relaxing in temperature (τT in equation above). Where mask is 1, relax rate will be 1/tauRelaxT. Default is 1. - tauRelaxS: same for salinity. - relaxMaskFile(irbc): filename of 3-D file with mask (Mrbc in equation above. Need a file for each irbc. 1=temperature, 2=salinity, 3=ptracer01, 4=ptracer02 etc. If the mask numbers end (see maskLEN) are less than the number tracers, then relaxMaskFile(maskLEN) is used for all remaining ptracers. - relaxTFile: name of file where temperatures that need to be relaxed to (Trbc in equation above) are stored. The file must contain 3-D records to match the model domain. If rbcsSingleTimeFiles=F, it must have one record for each forcing period. If T, there must be a separate file for each period and a 10-digit iteration number is appended to the file name (see Table [tab:pkg:rbcs:timing] and examples below). - relaxSFile: same for salinity.

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.

Timing of relaxation forcing 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

Example 1: forcing with time averages starting at t = 0

Cyclic data in a single file

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].

Non-cyclic data, multiple files

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.

Example 2: forcing with snapshots starting at t = 0

Cyclic data in a single file

Set rbcsSingleTimeFiles=F and rbcsForcingOffset= − p/2, and the model will start forcing with the first record at t = 0.

Non-cyclic data, multiple files

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.

Do’s and Don’ts

Reference Material

Experiments and tutorials that use rbcs

In the directory , the following experiments use rbcs:

  • exp4 : box with 4 open boundaries, simulating flow over a Gaussian bump based on adcroft:97