# 8.3.2. RBCS Package¶

## 8.3.2.1. Introduction¶

A package which provides the flexibility to relax fields (temperature, salinity, ptracers, horizontal velocities) in any 3-D location: so could be used as a sponge layer, or as a “source” anywhere in the domain.

For a field ($$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 $$M_{rbc}$$ is a 3-D mask (no time dependence) with values between 0 and 1. Where $$M_{rbc}$$ is 1, relaxing timescale is $$1/\tau_T$$. Where it is 0 there is no relaxing. The value relaxed to is a 3-D (potentially varying in time) field given by $$T_{rbc}$$.

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 $$\tau_T$$. These are set in data.rbcs (see below).

## 8.3.2.2. Key subroutines and parameters¶

The only compile-time parameter you are likely to have to change is in RBCS_SIZE.h, the number of masks, PARAMETER(maskLEN = 3 ), see below.

Table 8.3 summarizes the runtime flags that are set in data.rbcs, and their default values.

Table 8.3 RBCS runtime parameters

Flag/Parameter

Group

Default

Description

rbcsForcingPeriod

PARM01

0.0

Time interval between forcing fields (in seconds), zero means constant-in-time forcing.

rbcsForcingCycle

PARM01

0.0

Repeat cycle of forcing fields (in seconds), zero means non-cyclic forcing.

rbcsForcingOffset

PARM01

0.0

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 (rbcsForcingOffset + rbcsForcingPeriod )/2 ; see below for examples.

rbcsSingleTimeFiles

PARM01

FALSE

If .TRUE., forcing fields are given 1 file per rbcsForcingPeriod.

deltaTrbcs

PARM01

deltaTclock

Time step used to compute the iteration numbers for rbcsSingleTimeFiles = .TRUE..

rbcsVanishingTime

PARM01

0.0

If rbcsVanishingTime > 0, the relaxation strength reduces linearly to vanish at myTime == rbcsVanishingTime.

rbcsIter0

PARM01

0

Shift in iteration numbers used to label files if rbcsSingleTimeFiles = .TRUE. (see below for examples).

PARM01

FALSE

Whether to use RBCS for T/S/U/V.

PARM01

0.0

Timescales in seconds of relaxing in T/S/U/V ($$\tau_T$$ in equation above). Where mask is 1, relax rate will be 1/tauRelaxT. Must be set if the corresponding useRBCxxx is TRUE.

PARM01

' '

Filename of 3-D file with mask ($$M_{rbc}$$ in equation above). Need a file for each irbc (1=temperature, 2=salinity, 3=ptracer1, 4=ptracer2, etc). If maskLEN is les than the number of tracers, then relaxMaskFile(maskLEN) is used for all remaining tracers.

PARM01

' '

Filename of 3-D file with mask for U/V.

PARM01

' '

Name of file where the field that need to be relaxed to ($$T_{rbc}$$ in equation above) is stored. The file must contain 3-D records to match the model domain. If rbcsSingleTimeFiles = .FALSE., it must have one record for each forcing period. Otherwise there must be a separate file for each period and a 10-digit iteration number is appended to the file name (see Table [Timing of RBCS relaxation fields] and examples below).

useRBCptracers

PARM02

FALSE

DEPRECATED Use one useRBCpTrNum per tracer instead.

useRBCpTrNum (iTrc)

PARM02

FALSE

Whether to use RBCS for the corresponding passive tracer.

tauRelaxPTR (iTrc)

PARM02

0.0

Relaxing timescale for the corresponding ptracer.

relaxPtracerFile (iTrc)

PARM02

' '

File with relax fields for the corresponding ptracer.

## 8.3.2.3. Timing of relaxation forcing fields¶

For constant-in-time relaxation, set rbcsForcingPeriod =0. For time-varying relaxation, Table Table 8.4 illustrates the relation between model time and forcing fields (either records in one big file or, for rbcsSingleTimeFiles = .TRUE. , individual files labeled with an iteration number). With rbcsSingleTimeFiles = .TRUE. , this is the same as in the offline package, except that the forcing offset is in seconds.

Table 8.4 Timing of RBCS relaxation fields

rbcsSingleTimeFiles = T

F

$$c=0$$

$$c\ne0$$

$$c\ne0$$

model time

file number

file number

record

$$t_0 - p/2$$

$$i_0$$

$$i_0 + c/{\Delta t_{\text{rbcs}}}$$

$$c/p$$

$$t_0 + p/2$$

$$i_0 + p/{\Delta t_{\text{rbcs}}}$$

$$i_0 + p/{\Delta t_{\text{rbcs}}}$$

$$1$$

$$t_0+p+p/2$$

$$i_0 + 2p/{\Delta t_{\text{rbcs}}}$$

$$i_0 + 2p/{\Delta t_{\text{rbcs}}}$$

$$2$$

$$t_0+c-p/2$$

$$i_0 + c/{\Delta t_{\text{rbcs}}}$$

$$c/p$$

where

$$p$$ = rbcsForcingPeriod

$$c$$ = rbcsForcingCycle

$$t_0$$ = rbcsForcingOffset

$$i_0$$ = rbcsIter0

$${\Delta t_{\text{rbcs}}}$$ = deltaTrbcs

## 8.3.2.4. Example 1: forcing with time averages starting at $$t=0$$¶

### 8.3.2.4.1. Cyclic data in a single file¶

Set rbcsSingleTimeFiles = .FALSE. 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]$$.

### 8.3.2.4.2. Non-cyclic data, multiple files¶

Set rbcsForcingCycle = 0 and rbcsSingleTimeFiles = .TRUE. . 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$$.

## 8.3.2.5. Example 2: forcing with snapshots starting at $$t=0$$¶

### 8.3.2.5.1. Cyclic data in a single file¶

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

### 8.3.2.5.2. Non-cyclic data, multiple files¶

Set rbcsForcingCycle = 0 and rbcsSingleTimeFiles = .TRUE.. 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.

## 8.3.2.8. 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 [AHM97]