1 |
\section{CTRL: Model Parameter Adjustment Capability} |
2 |
\label{sec:pkg:ctrl} |
3 |
\begin{rawhtml} |
4 |
<!-- CMIREDIR:package_ctrl: --> |
5 |
\end{rawhtml} |
6 |
|
7 |
\def\mitgcmCheckpointVersion{65x} |
8 |
|
9 |
The parameters available for configuring generic cost terms in \texttt{data.ctrl} are given in table~\ref{tbl:gencost_ctrl_params}. |
10 |
|
11 |
\begin{table}[!ht] |
12 |
\centering |
13 |
\begin{tabular}{lll} |
14 |
parameter & type & function \\ \hline |
15 |
\texttt{xx\_gen*\_file} & character(*) & Name of control. Prefix from table~\ref{tbl:gencost_ctrl_files} + suffix. \\ |
16 |
\texttt{xx\_gen*\_weight} & character(*) & Weights in the form of $\sigma_{\vec{u}_j}^{-2}$ \\ |
17 |
\texttt{xx\_gen*\_bounds} & real(5) & Apply bounds \\ |
18 |
\texttt{xx\_gen*\_preproc} & character(*) & Control preprocessor(s) (see table~\ref{tbl:gencost_ctrl_preproc}) \\ |
19 |
\texttt{xx\_gen*\_preproc\_c} & character(*) & Preprocessor character arguments \\ |
20 |
\texttt{xx\_gen*\_preproc\_i} & integer(*) & Preprocessor integer arguments \\ |
21 |
\texttt{xx\_gen*\_preproc\_r} & real(*) & Preprocessor real arguments \\ |
22 |
\texttt{gen*Precond} & real & Preconditioning factor ($=1$ by default) \\ |
23 |
\texttt{mult\_gen*} & real & Cost function multiplier $\beta_j$ ($= 1$ by default) \\ |
24 |
\texttt{xx\_gentim2d\_period} & real & Frequency of adjustments (in seconds) \\ |
25 |
\texttt{xx\_gentim2d\_startdate1} & integer & Adjustment start date \\ |
26 |
\texttt{xx\_gentim2d\_startdate2} & integer & Default: model start date \\ |
27 |
\texttt{xx\_gentim2d\_cumsum} & logical & Accumulate control adjustments \\ |
28 |
\texttt{xx\_gentim2d\_glosum} & logical & Global sum of adjustment (output is still 2D) \\ |
29 |
\end{tabular} |
30 |
\caption{Parameters in \texttt{ctrl\_nml\_genarr} namelist in \texttt{data.ctrl}. The \texttt{*} can be replaced by \texttt{arr2d}, \texttt{arr3d}, or \texttt{tim2d} for time-invariant two and three dimensional controls and time-varying 2D controls, respectively. Parameters for \texttt{genarr2d}, \texttt{genarr3d}, and \texttt{gentime2d} are arrays of length \texttt{maxCtrlArr2D}, \texttt{maxCtrlArr3D}, and \texttt{maxCtrlTim2D}, respectively, with one entry per term in the cost function.} |
31 |
\label{tbl:gencost_ctrl_params} |
32 |
\end{table} |
33 |
|
34 |
\begin{table}[!ht] |
35 |
\centering |
36 |
\begin{tabular}{lll} |
37 |
& name & description \\ \hline \hline |
38 |
2D, time-invariant controls & \texttt{genarr2d} \\ |
39 |
& \texttt{xx\_etan} & initial sea surface height \\ |
40 |
& \texttt{xx\_bottomdrag} & bottom drag \\ |
41 |
& \texttt{xx\_geothermal} & geothermal heat flux \\ \hline |
42 |
3D, time-invariant controls & \texttt{genarr3d} \\ |
43 |
& \texttt{xx\_theta} & initial potential temperature \\ |
44 |
& \texttt{xx\_salt} & initial salinity \\ |
45 |
& \texttt{xx\_kapgm} & GM coefficient \\ |
46 |
& \texttt{xx\_kapredi} & isopycnal diffusivity \\ |
47 |
& \texttt{xx\_diffkr} & diapycnal diffusivity \\ \hline |
48 |
2D, time-varying controls & \texttt{gentim2D} \\ |
49 |
& \texttt{xx\_atemp} & atmospheric temperature \\ |
50 |
& \texttt{xx\_aqh} & atmospheric specific humidity \\ |
51 |
& \texttt{xx\_swdown} & downward shortwave \\ |
52 |
& \texttt{xx\_lwdown} & downward longwave \\ |
53 |
& \texttt{xx\_precip} & precipitation \\ |
54 |
& \texttt{xx\_uwind} & zonal wind \\ |
55 |
& \texttt{xx\_vwind} & meridional wind \\ |
56 |
& \texttt{xx\_tauu} & zonal wind stress \\ |
57 |
& \texttt{xx\_tauv} & meridional wind stress \\ |
58 |
& \texttt{xx\_gen\_precip} & globally averaged precipitation? \\ |
59 |
\end{tabular} |
60 |
\caption{Generic control prefixes implemented as of checkpoint \mitgcmCheckpointVersion.} |
61 |
\label{tbl:gencost_ctrl_files} |
62 |
\end{table} |
63 |
|
64 |
\begin{table}[!ht] |
65 |
\centering |
66 |
\begin{tabular}{lll} |
67 |
name & description & arguments \\ \hline\hline |
68 |
\texttt{WC01} & Correlation modeling & integer: operator type (default: 1) \\ |
69 |
\texttt{smooth} & Smoothing without normalization & integer: operator type (default: 1) \\ |
70 |
\texttt{docycle} & Average period replication & integer: cycle length \\ |
71 |
\texttt{replicate} & Alias for \texttt{docycle} & \ \ \ \ (units of \texttt{xx\_gentim2d\_period}) \\ |
72 |
\texttt{rmcycle} & Periodic average subtraction & integer: cycle length \\ |
73 |
\texttt{variaweight} & Use time-varying weight & --- \\ |
74 |
\texttt{noscaling}$^{a}$ & Do not scale with \texttt{xx\_gen*\_weight} & --- \\ |
75 |
\texttt{documul} & Sets \texttt{xx\_gentim2d\_cumsum} & ---\\ |
76 |
\texttt{doglomean} & Sets \texttt{xx\_gentim2d\_glosum} & --- \\ |
77 |
\end{tabular} |
78 |
\caption{\texttt{xx\_gen????d\_preproc} options implemented as of checkpoint \mitgcmCheckpointVersion. Notes: $^a$: If \texttt{noscaling} is false, the control adjustment is scaled by one on the square root of the weight before being added to the base control variable; if \texttt{noscaling} is true, the control is multiplied by the weight in the cost function itself.} |
79 |
\label{tbl:gencost_ctrl_preproc} |
80 |
\end{table} |
81 |
|
82 |
The control problem is non-dimensional by default, as reflected in the omission of weights in control penalties [($\vec{u}_j^T\vec{u}_j$ in \eqref{eq:Jtotal}]. Non-dimensional controls ($\vec{u}_j$) are scaled to physical units ($\vec{v}_j$) through multiplication by the respective uncertainty fields ($\sigma_{\vec{u}_j}$), as part of the generic preprocessor $\mathcal{Q}$ in \eqref{eq:Upreproc}. Besides the scaling of $\vec{u}_j$ to physical units, the preprocessor $\mathcal{Q}$ can include, for example, spatial correlation modeling (using an implementation of Weaver and Coutier, 2001) by setting \texttt{xx\_gen*\_preproc = 'WC01'}. Alternatively, setting \texttt{xx\_gen*\_preproc = 'smooth'} activates the smoothing part of \texttt{WC01}, but omits the normalization. Additionally, bounds for the controls can be specified by setting \texttt{xx\_gen*\_bounds}. In forward mode, adjustments to the $i^\text{th}$ control are clipped so that they remain between \texttt{xx\_gen*\_bounds(i,1)} and \texttt{xx\_gen*\_bounds(i,4)}. If \texttt{xx\_gen*\_bounds(i,1)} $<$ \texttt{xx\_gen*\_bounds(i+1,1)} for $i = 1, 2, 3$, then the bounds will ``emulate a local minimum;''\footnote{Not sure what this means.} otherwise, the bounds have no effect in adjoint mode. |
83 |
|
84 |
For the case of time-varying controls, the frequency is specified by \texttt{xx\_gentim2d\_period}. The generic control package interprets special values of \texttt{xx\_gentim2d\_period} in the same way as the \texttt{exf} package: a value of $-12$ implies cycling monthly fields while a value of $0$ means that the field is steady. Time varying weights can be provided by specifying the preprocessor \texttt{variaweight}, in which case the \texttt{xx\_gentim2d\_weight} file must contain as many records as the control parameter time series itself (approximately the run length divided by \texttt{xx\_gentim2d\_period}). |
85 |
|
86 |
The parameter \texttt{mult\_gen*} sets the multiplier for the corresponding cost function penalty [$\beta_j$ in \eqref{eq:Jtotal}; $\beta_j = 1$ by default). The preconditioner, $\cal{R}$, does not directly appear in the estimation problem, but only serves to push the optimization process in a certain direction in control space; this operator is specified by \texttt{gen*Precond} ($=1$ by default). |
87 |
|
88 |
|
89 |
|