5 |
<!-- CMIREDIR:package_obcs: --> |
<!-- CMIREDIR:package_obcs: --> |
6 |
\end{rawhtml} |
\end{rawhtml} |
7 |
|
|
8 |
Authors: Martin Losch and Patrick Heimbach |
Authors: |
9 |
|
Alistair Adcroft, Patrick Heimbach, Samar Katiwala, Martin Losch |
10 |
|
|
11 |
\subsubsection{Introduction |
\subsubsection{Introduction |
12 |
\label{sec:pkg:obcs:intro}} |
\label{sec:pkg:obcs:intro}} |
189 |
|
|
190 |
%---------------------------------------------------------------------- |
%---------------------------------------------------------------------- |
191 |
|
|
192 |
|
\subsubsection{Defining open boundary positions |
193 |
|
\label{sec:pkg:obcs:defining}} |
194 |
|
|
195 |
|
There are four open boundaries (OBs), a |
196 |
|
Northern, Southern, Eastern, and Western. |
197 |
|
All OB locations are specified by their absolute |
198 |
|
meridional (Northern/Southern) or zonal (Eastern/Western) indices. |
199 |
|
Thus, for each zonal position $i=1,\ldots,Nx$ a meridional index |
200 |
|
$j$ specifies the Northern/Southern OB position, |
201 |
|
and for each meridional position $j=1,\ldots,Ny$, a zonal index |
202 |
|
$i$ specifies the Eastern/Western OB position. |
203 |
|
For Northern/Southern OB this defines an $Nx$-dimensional |
204 |
|
``row'' array $\tt OB\_Jnorth(Ny)$ / $\tt OB\_Jsouth(Ny)$, |
205 |
|
and an $Ny$-dimenisonal |
206 |
|
``column'' array $\tt OB\_Ieast(Nx)$ / $\tt OB\_Iwest(Nx)$ |
207 |
|
Positions determined in this way allows Northern/Southern |
208 |
|
OBs to be at variable $j$ (or $y$) positions, and Eastern/Western |
209 |
|
OBs at variable $i$ (or $x$) positions. |
210 |
|
Here, indices refer to tracer points on the C-grid. |
211 |
|
A zero (0) element in $\tt OB\_I\ldots$, $\tt OB\_J\ldots$ |
212 |
|
means there is no corresponding OB in that column/row. |
213 |
|
For a Northern/Southern OB, the OB V point is to the South/North. |
214 |
|
For an Eastern/Western OB, the OB U point is to the West/East. |
215 |
|
|
216 |
|
\begin{verbatim} |
217 |
|
For example |
218 |
|
OB_Jnorth(3)=34 means that: |
219 |
|
T( 3 ,34) is a an OB point |
220 |
|
U(3:4,34) is a an OB point |
221 |
|
V( 4 ,34) is a an OB point |
222 |
|
while |
223 |
|
OB_Jsouth(3)=1 means that: |
224 |
|
T( 3 ,1) is a an OB point |
225 |
|
U(3:4,1) is a an OB point |
226 |
|
V( 4 ,2) is a an OB point |
227 |
|
\end{verbatim} |
228 |
|
|
229 |
|
For convenience, negative values for Jnorth/Ieast refer to |
230 |
|
points relative to the Northern/Eastern edges of the model |
231 |
|
eg. $\tt OB\_Jnorth(3)=-1$ means that the point $\tt (3,Ny)$ |
232 |
|
is a northern OB. |
233 |
|
|
234 |
|
\noindent |
235 |
|
\textsf{Add special comments for case \#define NONLIN\_FRSURF, |
236 |
|
see obcs\_ini\_fixed.F} |
237 |
|
|
238 |
|
%---------------------------------------------------------------------- |
239 |
|
|
240 |
\subsubsection{Equations and key routines |
\subsubsection{Equations and key routines |
241 |
\label{sec:pkg:obcs:equations}} |
\label{sec:pkg:obcs:equations}} |
242 |
|
|
243 |
\paragraph{OBCS\_READPARMS:} Setting OB positions \\ |
\paragraph{OBCS\_READPARMS:} ~ \\ |
244 |
~ |
Set OB positions through arrays |
245 |
|
{\tt OB\_Jnorth(Ny), OB\_Jsouth(Ny), OB\_Ieast(Nx), OB\_Iwest(Nx)}, |
246 |
|
and runtime flags see Table \ref{tab:???}. |
247 |
|
|
248 |
\paragraph{OBCS\_CALC:} ~ \\ |
\paragraph{OBCS\_CALC:} ~ \\ |
249 |
~ |
% |
250 |
|
Top-level routine for filling values to be applied at OB for |
251 |
|
$T,S,U,V,\eta$ into corresponding |
252 |
|
``slice'' arrays $(x,z)$, $(y,z)$ for each OB: |
253 |
|
$\tt OB[N/S/E/W][t/s/u/v]$; e.g. for salinity array at |
254 |
|
Southern OB, array name is $\tt OBSt$. |
255 |
|
Values filled are either |
256 |
|
% |
257 |
|
\begin{itemize} |
258 |
|
% |
259 |
|
\item |
260 |
|
constant vertical $T,S$ profiles as specified in file |
261 |
|
{\tt data} ({\tt tRef(Nr), sRef(Nr)}) with zero velocities $U,V$, |
262 |
|
% |
263 |
|
\item |
264 |
|
$T,S,U,V$ values determined via Orlanski radiation conditions |
265 |
|
(see below), |
266 |
|
% |
267 |
|
\item |
268 |
|
prescribed time-constant or time-varying fields (see below). |
269 |
|
% |
270 |
|
\end{itemize} |
271 |
|
|
|
\paragraph{OBCS\_APPLY\_*:} ~ \\ |
|
|
~ |
|
272 |
|
|
273 |
\paragraph{OBCS\_PRESCRIBE\_READ} Setting OB fields and updates \\ |
\paragraph{ORLANSKI} ~ \\ |
274 |
% |
% |
275 |
~ |
Orlanski radiation conditions |
276 |
|
|
277 |
\paragraph{OBCS\_SPONGE} Setting sponge layer characteristics \\ |
\paragraph{OBCS\_PRESCRIBE\_READ} Setting OB fields and updates \\ |
278 |
% |
% |
279 |
~ |
~ |
280 |
|
|
282 |
% |
% |
283 |
~ |
~ |
284 |
|
|
285 |
\paragraph{ORLANSKI} Orlanski radiation conditions \\ |
\paragraph{OBCS\_APPLY\_*:} ~ \\ |
286 |
|
~ |
287 |
|
|
288 |
|
\paragraph{OBCS\_SPONGE} Setting sponge layer characteristics \\ |
289 |
% |
% |
290 |
~ |
~ |
291 |
|
|