1 | \newpage |
---|
2 | |
---|
3 | \chapter{Changes between the different versions of OASIS3-MCT} |
---|
4 | \label{sec_changes} |
---|
5 | |
---|
6 | The evolution between the different versions of OASIS3-MCT can be |
---|
7 | followed in real-time by registering on the Redmine project management |
---|
8 | site at https://inle.cerfacs.fr/ (see "Register" at the right top of |
---|
9 | the page). On this site, registered users can browse the sources and |
---|
10 | consult tickets describing bug fixes and developments. To follow day |
---|
11 | to day evolution of the OASIS3-MCT sources, it is also possible to |
---|
12 | have your e-mail added to the list of addresses to which the log files |
---|
13 | of the SVN checkins are automatically sent; contact |
---|
14 | oasishelp@cerfacs.fr if you wish to be added to that list. |
---|
15 | |
---|
16 | \section{Changes between current master OASIS3-MCT version and OASIS3-MCT\_4.0} |
---|
17 | |
---|
18 | \begin{itemize} |
---|
19 | |
---|
20 | \item The {\tt oasis\_def\_var} interface was overloaded to support excluding the argument, {\tt id\_var\_shape}, from the argument list. This argument is no longer used. For backwards compatibility, it can still be passed. |
---|
21 | |
---|
22 | \item {\tt DESTARTR}, {\tt FRACARTR} or {\tt FRACNNTR} options : the ``True Area'' (TR) correction |
---|
23 | |
---|
24 | New options for {\tt SCRIPR CONSERV} to have an exact conservation of the field surface-integrated values, based on the "TRue" (TR) area of the cells. Details can be found in section \ref{subsec_interp} and in \cite{valcke19}. Note that to activate these TR options, the true area of the cell must be provided in the auxiliary file {\it areas.nc} in {\bf square radians}. |
---|
25 | |
---|
26 | \item New {\tt GSSPOS} and {\tt BSSPOS} for global CONSERV |
---|
27 | |
---|
28 | These new options operate as {\tt GLBPOS} and {\tt BASPOS} except that the multiplicative term is computed separately for positive |
---|
29 | and negative values of the field. More details can be found in section \ref{subsec_cooking} and in \cite{craig19}. |
---|
30 | |
---|
31 | \item Bugfixes |
---|
32 | |
---|
33 | \begin{enumerate} |
---|
34 | |
---|
35 | \item Argument {\tt id\_var\_nodim} defined as IN in {\tt mod\_oasis\_var.F90} to compile again with NEMO\_4.0 and NEMO trunk (git commit 28f4fe59) |
---|
36 | |
---|
37 | \item Fix the treatment of the periodicity of the grids (git commits 20127fd9, 68021b13, facc08c1) |
---|
38 | |
---|
39 | \item GAUSWGT remapping: exact calculation of average distance (commit 1df003a1) ; see details in https://cerfacs.fr/wp-content/uploads/2019/08/GlobC-TR-maisonnave-gaussian\_interpolation-2\_2019.pdf |
---|
40 | |
---|
41 | \item Bugfix ``lcoinc'' : ensures that a condition on coincidence of segments is reinitialised to .false. for each cell. A detailed analysis of the bug that lead to this bugfix condition can be found at the end of the page https://inle.cerfacs.fr/projects/oasis3-mct/wiki/Discussion\_about\_specific\_treatments\_of\_polar\_cells\_in\_scrip\_CONSERV\_interpolation. |
---|
42 | |
---|
43 | \end{enumerate} |
---|
44 | |
---|
45 | \end{itemize} |
---|
46 | |
---|
47 | \section{Changes between OASIS3-MCT\_4.0 and OASIS3-MCT\_3.0} |
---|
48 | |
---|
49 | Different developments were realised to improve the parallel performance of OASIS3-MCT\_4.0. These developments are detailed in \cite{valcke11} . |
---|
50 | |
---|
51 | \begin{itemize} |
---|
52 | |
---|
53 | \item A new communication method, using the remapping weights to define the intermediate mapping decomposition, offers a significant gain at run time, especially for high-resolution cases running on a high number of tasks, thanks to reduced communication. However, as expected, the new method takes longer to initialize, partly due to the fact that the mapping weight file has to be read twice but also due to the extra cost for the initialization of the different MCT routers. That initialization cost is largely mitigated by an upgrade to MCT 2.10.beta1 which reduces the penalty to few seconds. Generally, it should be worth the extra initial cost to speed up the run time. See {\tt \$NMAPDEC} in section \ref{subsec_namcouplefirst}. |
---|
54 | |
---|
55 | \item The hybrid MPI+OpenMP parallelisation of the SCRIP library (previously fully sequential) leads to great improvement in the calculation of the remapping weights. The results obtained here show a reduction in the weight calculation time of 2 to 3 orders of magnitude with the new parallel SCRIP library for high-resolution grids. Details are available in \cite{piacentini08}. The {\tt test\_interpolation} environment (see section \ref{subsec_testinterpolation} ) gives a practical example on how to use OASIS3-MCT\_4.0 to pre-calculate (i.e. in a separate job prior to the ârealâ simulation) the remapping weight and address file. |
---|
56 | |
---|
57 | Thanks to some preliminary work, few bugs were fixed, in particular in the bounding box definition of the grid cells. This solves an important bug observed in the Pacific near the equator for the bilinear and bicubic interpolations for Cartesian grids. |
---|
58 | |
---|
59 | However, given these modifications, one cannot expect to get exactly the same results for the interpolation weight-and-adress remapping files with this new parallel SCRIP version as compared to the previous SCRIP version in OASIS3-MCT\_3.0. We checked in many different cases that the interpolation error is smaller or of the same order than before. We also observed that the parallelisation does not ensure bit reproducible results when varying the number of processes or threads. |
---|
60 | |
---|
61 | \item The new methods introduced in the global CONSERV operation reduce its calculation costs by one order of magnitude while still ensuring an appropriate level of reproducibility. This removes the bottleneck foreseen at high resolution with this important, and in few cases still unavoidable, global operation. These new methods are detailed in section \ref{subsec_cooking} . |
---|
62 | |
---|
63 | \end{itemize} |
---|
64 | |
---|
65 | The other new features offered by OASIS3-MCT\_4.0 are the following: |
---|
66 | |
---|
67 | \begin{itemize} |
---|
68 | |
---|
69 | \item Support for bundled coupling fields. |
---|
70 | |
---|
71 | Bundled fields is now supported in the {\tt oasis\_put} and {\tt oasis\_get} interfaces to allow |
---|
72 | easier coupling of multi-level or other related fields via a single |
---|
73 | namcouple coupling definition and a single call to {\tt oasis\_put} or {\tt oasis\_get}. |
---|
74 | Further details are provided in sec \ref{subsubsec_sendingreceiving} |
---|
75 | |
---|
76 | \item Automatic coupling restart writing |
---|
77 | |
---|
78 | An optional argument {\tt write\_restart} was added to the {\tt oasis\_put} routine. This argument is false by default but if it is explicitly set to true in the code, a coupling restart file will be written for that field only for that coupling timestep, saving the data that exists at the time of the call (see section \ref{prismput}). |
---|
79 | |
---|
80 | \item Exact consistency between the number of weights and fields |
---|
81 | |
---|
82 | Exact consistency is now required between number of weights fields in the coupling restart file and the arrays passed as arguments to the {\tt oasis\_put} routine. For example, for a 2nd order conservative remapping (CONSERV SECOND), 3 weights are needed and 3 fields must be provided as arguments i.e. the value of the field, its gradient with respect to the longitude and its gradient with respect to the latitude. For a first order conservative remapping (CONSERV FIRST), only one weight and one field are needed. Using a weight file with 3 weights for a first order conservative remapping is no longer allowed. |
---|
83 | |
---|
84 | \item Upgrade in the namcouple configuration file |
---|
85 | |
---|
86 | The namcouple reading routine was cleaned up including a refactoring of the gotos and continue statements, addition of few reusable routines including an abort routine, removal of some dead code, addition of support for blank lines (which are now considered comments), removal of requirement that keywords start at character 2 on a line, removal of requirement for {\tt \$END} in the namcouple, and updates to some error messages. |
---|
87 | |
---|
88 | \item Other new functionalities with corresponding new namcouple keywords (see section \ref{subsec_namcouplefirst}) |
---|
89 | |
---|
90 | \begin{itemize} |
---|
91 | |
---|
92 | \item {\tt \$NUNITNO}: specifies the minimum and maximum unit numbers to be used for input and output files in the coupling layer. |
---|
93 | |
---|
94 | \item {\tt \$NMATXRD}: indicates the method used to read mapping weights, either {\tt orig} or {\tt ceg}. In both methods, the weights are read in chunks by the model master task. With the {\tt orig} option, the weights are then broadcast to all other tasks and each task then saves the weights that will be applied to its grid points. With the {\tt ceg} option, the master task reads the weights and then identifies to which other task each weight should be sent. A series of exchanges are then done with each other task involving just the weights needed by that other task. The {\tt orig} method sends much more data but is more parallel, while the {\tt ceg} method does most of the work on the master task but less data is communicated. |
---|
95 | |
---|
96 | \item {\tt \$NWGTOPT}: indicates how to handle bad interpolation weights. |
---|
97 | |
---|
98 | \item {\tt \$NNOREST} : if true, OASIS3-MCT will initialise any variable that normally requires a coupling restart file with zeros if that file does not exist. |
---|
99 | |
---|
100 | \end{itemize} |
---|
101 | \end{itemize} |
---|
102 | |
---|
103 | \section{Changes between OASIS3-MCT\_3.0 and OASIS3-MCT\_2.0} |
---|
104 | \label{sec_oa2_oa3} |
---|
105 | |
---|
106 | The main evolution of OASIS3-MCT\_3.0 with respect to OASIS3-MCT\_2.0 is the support of coupling exchanges between parallel components deployed in much more diverse configurations than before, for example, within one same executable between components running concurrently on separate sets of tasks or between components running sequentially on overlapping sets of tasks. All details are provided in section \ref{sec_deploy}. |
---|
107 | |
---|
108 | This new version also includes: |
---|
109 | \begin{itemize} |
---|
110 | \item memory and performance upgrades |
---|
111 | \item a new LUCIA tool for load balancing analysis |
---|
112 | \item new memory tracking tool (gilt) |
---|
113 | \item improved error checking and error messages |
---|
114 | \item doxygen documentation |
---|
115 | \item expanded test cases and testing automation |
---|
116 | \item testing at high resolution (> 1M gridpoints), high processor counts (32k pes), and with large variable counts (> 1k coupling fields) |
---|
117 | \item many bug fixes |
---|
118 | \end{itemize} |
---|
119 | |
---|
120 | \section{Changes between OASIS3-MCT\_2.0 and OASIS3-MCT\_1.0} |
---|
121 | \label{sec_oa1_oa2} |
---|
122 | |
---|
123 | The main changes and bug fixes new in OASIS3-MCT\_2.0 are the |
---|
124 | following: |
---|
125 | \begin{itemize} |
---|
126 | |
---|
127 | \item Support of {\tt BICUBIC} interpolation, see paragraph {\tt |
---|
128 | BICUBIC} in section \ref{subsec_interp}. If the source grid |
---|
129 | is not a gaussian reduced grid (D), the gradient in the first dimension, |
---|
130 | the gradient in the second dimension, and the cross-gradient |
---|
131 | of the coupling field must be calculated by the model and |
---|
132 | given as arguments to {\tt oasis\_put}, as explained in section \ref{prismput}. |
---|
133 | If the source grid is a gaussian reduced grid (D), OASIS3-MCT\_2.0 |
---|
134 | can calculate the interpolated field using only the values of the source |
---|
135 | field points. |
---|
136 | |
---|
137 | \item Support of {\tt CONSERV/SECOND} remapping, see paragraph {\tt |
---|
138 | CONSERV/SECOND} in section \ref{subsec_interp}. |
---|
139 | |
---|
140 | \item Support of components exchanging data on only a subdomain of the |
---|
141 | global grid: a new optional argument, ig\_size was added to |
---|
142 | oasis\_def\_partition, that provides the user with the ability to |
---|
143 | define the total number of grid cells on the grid (see section |
---|
144 | \ref{subsubsec_Partition}). |
---|
145 | |
---|
146 | %\item The CPP key "balance" in mod\_oasis\_advance was added; this |
---|
147 | % option can be used to produce timestamps in OASIS debug file (see |
---|
148 | % section \ref{subsec_cpp}). |
---|
149 | |
---|
150 | \item The variable {\tt TIMER\_Debug} controlling the amount of time |
---|
151 | statistics written out is now an optional argument read in the {\it |
---|
152 | namcouple}; see the {\tt NLOGPRT} line in |
---|
153 | \ref{subsec_namcouplefirst} and all details about time statistics in |
---|
154 | section \ref{timestat}. |
---|
155 | |
---|
156 | \item Specific problems in writing out the time statistics when all |
---|
157 | the processors are not coupling were solved (see Redmine issue |
---|
158 | \#497) |
---|
159 | |
---|
160 | \item The problem with restart files when one coupling field is sent |
---|
161 | to 2 target components was solved (see Redmine ticket \#522) |
---|
162 | |
---|
163 | \item A memory leak in mod\_oasis\_getput\_interface.F90 was fixed |
---|
164 | thanks to R. Hill from the MetOffice (see Redmine ticket \#437) |
---|
165 | |
---|
166 | \item A bug fix was provided to ensure that the nearest neighbour |
---|
167 | option is activated when the option {\tt FRACNNEI} is defined in the |
---|
168 | {\it namcouple} for the conservative interpolation . |
---|
169 | |
---|
170 | \item The behaviour of OASIS3-MCT was changed in the case a |
---|
171 | component model tries to send with {\tt oasis\_put} a field declared |
---|
172 | with a {\tt oasis\_def\_var} but not defined in the configuration |
---|
173 | file {\it namcouple}; this will now lead to an abort. In this case, |
---|
174 | the field ID returned by the {\tt oasis\_def\_var} is equal to -1 |
---|
175 | and the corresponding {\tt oasis\_put} should not be called. |
---|
176 | Conversely, all coupling fields appearing in the {\it namcouple} |
---|
177 | must be defined with a call to {\tt oasis\_def\_var}; this constraint |
---|
178 | is imposed to avoid that a typo in the namcouple would lead to |
---|
179 | coupling exchanges not corresponding to what the user intends to activate. |
---|
180 | |
---|
181 | \item OASIS3-MCT developments are now continuously tested and |
---|
182 | validated on different computers with a test suite under Buildbot, |
---|
183 | which is a software written in Python to automate compile and test |
---|
184 | cycles required in software project (see |
---|
185 | https://inle.cerfacs.fr/projects/oasis3-mct/wiki/Buildbot on the |
---|
186 | Redmine site). |
---|
187 | |
---|
188 | \end{itemize} |
---|
189 | |
---|
190 | \section{Changes between OASIS3-MCT\_1.0 and OASIS3.3} |
---|
191 | |
---|
192 | \subsection{General architecture} |
---|
193 | \label{sec_changes_gen} |
---|
194 | |
---|
195 | \begin{itemize} |
---|
196 | \item OASIS3-MCT is (only) a coupling library |
---|
197 | |
---|
198 | Much of the underlying implementation of OASIS3 was refactored to |
---|
199 | leverage the Model Coupling Toolkit (MCT). OASIS3-MCT is a coupling |
---|
200 | library to be linked to the component models and that |
---|
201 | carries out the coupling field transformations (e.g. remappings/interpolations) |
---|
202 | in parallel on either the source or target processes and that performs |
---|
203 | all communication in parallel directly between the component models; there |
---|
204 | is no central coupler executable anymore\footnote{As with OASIS3.3, |
---|
205 | the ``put'' calls are non-blocking but the ``get'' calls are |
---|
206 | blocking. As before, the user has to take care of implementing a coupling |
---|
207 | algorithm that will result in matching ``put'' and ``get'' calls to |
---|
208 | avoid deadlocks (see section \ref{subsubsec_sendingreceiving}). The lag (LAG) index works as |
---|
209 | before in OASIS3.3 (see section \ref{subsec_lag})}. |
---|
210 | |
---|
211 | \item {\tt MAPPING} transformation to use a pre-defined mapping file |
---|
212 | |
---|
213 | With {\tt MAPPING}, OASIS3-MCT has the ability to read a predefined |
---|
214 | set of weights and addresses (mapping file) specified in the {\it |
---|
215 | namcouple} to perform the interpolation/remapping. The user also has |
---|
216 | the flexibility to choose the location and the parallelization strategy of the |
---|
217 | remapping with specific {\tt MAPPING} options (see section \ref{subsec_interp}). |
---|
218 | |
---|
219 | \item Mono-process mapping file generation with the SCRIP library |
---|
220 | |
---|
221 | But as before, OASIS3-MCT\_1.0 can |
---|
222 | also generate the mapping file using the SCRIP library |
---|
223 | \citep{Jones99}. When this is the case, the mapping file generation is |
---|
224 | done on one process of the model components; all previous {\tt SCRIPR} remapping |
---|
225 | schemes available in OASIS3.3 are still supported besides {\tt |
---|
226 | BICUBIC} and {\tt CONSERV/SECOND}. (Note: these remapping schemes, not available in OASIS3-MCT\_1.0 |
---|
227 | were reactivated in OASIS3-MCT\_2.0, see \ref{sec_oa1_oa2}.) |
---|
228 | |
---|
229 | \item MPI2 job launching is NOT supported. |
---|
230 | |
---|
231 | Only MPI1 start mode is allowed. As before with the MPI1 mode, all |
---|
232 | component models must be started by the user in the job script in a |
---|
233 | pseudo-MPMD mode; in this case, they will automatically share the |
---|
234 | same {\tt MPI\_COMM\_WORLD} communicator and an internal |
---|
235 | communicator created by OASIS3-MCT needs to be used for internal |
---|
236 | parallelization (see section \ref{subsec_MPI1}). |
---|
237 | |
---|
238 | \end{itemize} |
---|
239 | |
---|
240 | \subsection{Changes in the coupling interface in the component models} |
---|
241 | \label{sec_changes_API} |
---|
242 | |
---|
243 | \begin{itemize} |
---|
244 | |
---|
245 | \item Use statement |
---|
246 | |
---|
247 | The different OASIS3.3 {\tt USE} statements were gathered into one {\tt |
---|
248 | USE mod\_oasis} (or one {\tt USE mod\_prism}), therefore much |
---|
249 | simpler to use. |
---|
250 | |
---|
251 | \item Support of previous {\tt prism\_xxx} and new {\tt oasis\_xxx} |
---|
252 | interfaces |
---|
253 | |
---|
254 | OASIS3-MCT retains prior interface names of OASIS3.3 |
---|
255 | (e.g. {\tt prism\_put\_proto}) to ensure full backward |
---|
256 | compatibility. However, new interface names such as {\tt |
---|
257 | oasis\_put} are also available and should be prefered. Both |
---|
258 | routine names are listed in chapter \ref{sec_modelinterfacing}. |
---|
259 | |
---|
260 | \item Auxiliary routines not supported yet |
---|
261 | |
---|
262 | Auxiliary routines {\tt prism\_put\_inquire}, {\tt |
---|
263 | prism\_put\_restart\_proto}, {\tt prism\_get\_freq} are not |
---|
264 | supported yet. (Note: {\tt prism\_put\_inquire} and {\tt prism\_get\_freqs} were reintroduced in OASIS3-MCT\_3.0 and equivalent of {\tt |
---|
265 | prism\_put\_restart\_proto} in OASIS3-MCT\_4.0.) |
---|
266 | |
---|
267 | \item Support of components for which only a subset of processes |
---|
268 | participate in the coupling |
---|
269 | |
---|
270 | New routines {\tt oasis\_create\_couplcomm} and {\tt |
---|
271 | oasis\_set\_couplcomm} are now available to create or set a coupling |
---|
272 | communicator in the case only a subset of the component processes |
---|
273 | participate in the coupling. But |
---|
274 | even in this case, all OASIS3-MCT interface routines, besides the |
---|
275 | grid definition (see section \ref{subsubsec_griddef}) and the |
---|
276 | ``put'' and `` get'' call per se (see section |
---|
277 | \ref{subsubsec_sendingreceiving}), are collective and must be called |
---|
278 | by all processes. (Note: this has changed with OASIS3-MCT\_3.0.) |
---|
279 | |
---|
280 | \item New routines {\tt oasis\_get\_debug} and {\tt oasis\_set\_debug} |
---|
281 | |
---|
282 | New routines {\tt oasis\_get\_debug} and {\tt oasis\_set\_debug} |
---|
283 | are now available to respectively retrieve the current OASIS3-MCT |
---|
284 | internal debug level (set by {\tt \$NLOGPRT} in the {\it namcouple}) or to change it (see section |
---|
285 | \ref{subsubsec_auxroutines}). |
---|
286 | |
---|
287 | \end{itemize} |
---|
288 | |
---|
289 | \subsection{Functionality not offered anymore} |
---|
290 | \label{sec_changes_old} |
---|
291 | |
---|
292 | \begin{itemize} |
---|
293 | |
---|
294 | \item {\tt SCRIPR/BICUBIC} and {\tt SCRIPR/CONSERV/SECOND} remappings |
---|
295 | |
---|
296 | As in OASIS3.3, the SCRIP library can be used to generate the |
---|
297 | remapping/interpolation weights and addresses and write them to a |
---|
298 | mapping file. All previous {\tt SCRIPR} remapping |
---|
299 | schemes available in OASIS3.3 are still supported in OASIS3-MCT\_1.0 besides {\tt |
---|
300 | BICUBIC} and {\tt CONSERV/SECOND} because these remapping involve |
---|
301 | at each source grid point the value of the field but also the value of the |
---|
302 | gradients of the field (which are not known or calculated). (Note: these remapping schemes, |
---|
303 | not available in OASIS3-MCT\_1.0 were reactivated in OASIS3-MCT\_2.0, see \ref{sec_oa1_oa2}.) |
---|
304 | |
---|
305 | \item Vector field remapping |
---|
306 | |
---|
307 | Vector field remapping is not and will not be supported (see ``Support |
---|
308 | of vector fields with the SCRIPR remappings'' in section \ref{subsec_interp}). |
---|
309 | |
---|
310 | \item Automatic calculation of grid mesh corners in {\tt SCRIPR/CONSERV} |
---|
311 | |
---|
312 | For {\tt SCRIPR/CONSERV} remapping, grid mesh corners will not |
---|
313 | be compute automatically if they are needed but not provided. |
---|
314 | |
---|
315 | \item Other transformations not supported |
---|
316 | |
---|
317 | \begin{itemize} |
---|
318 | |
---|
319 | \item The following transformations are not available in OASIS3.3 |
---|
320 | and will most probably not be implemented as it should be not |
---|
321 | too difficult to implement the equivalent operations in the component |
---|
322 | models themselves: {\tt CORRECT}, {\tt FILLING}, {\tt SUBGRID}, {\tt MASKP} |
---|
323 | |
---|
324 | \item {\tt LOCTRANS/ONCE} is not explicitely offered as it is equivalent to |
---|
325 | defining a coupling period equal to the total runtime. |
---|
326 | |
---|
327 | \item The following transformations are not available as they were already |
---|
328 | deprecated in OASIS3.3 : {\tt REDGLO}, {\tt INVERT}, |
---|
329 | {\tt REVERSE}, {\tt GLORED} |
---|
330 | |
---|
331 | \item {\tt MASK} and {\tt EXTRAP} are not available but the corresponding |
---|
332 | linear extrapolation can be replaced by the more efficient option |
---|
333 | using the nearest non-masked source neighbour for target points having |
---|
334 | their original neighbours all masked. This is now the default option for {\tt SCRIPR/}{\tt DISTWGT}, {\tt GAUSWGT} and {\tt BILINEAR} interpolations. It is |
---|
335 | also included in \newline {\tt SCRIPR/CONSERV} if {\tt FRACNNEI} |
---|
336 | normalization option is chosen (see section \ref{subsec_interp}). |
---|
337 | |
---|
338 | \item {\tt INTERP} interpolations are not available; {\tt SCRIPR} |
---|
339 | should be used instead. |
---|
340 | |
---|
341 | \item {\tt MOZAIC} is not available as {\tt MAPPING} should be used |
---|
342 | instead. |
---|
343 | |
---|
344 | \item{\tt NOINTERP} does not need to be specified anymore if no |
---|
345 | interpolation is required. |
---|
346 | |
---|
347 | \item Field combination with {\tt BLASOLD} and {\tt BLASNEW}; these |
---|
348 | transformations only support multiplication and addition terms to |
---|
349 | the fields (see section \ref{subsec_preproc}). |
---|
350 | |
---|
351 | \end{itemize} |
---|
352 | |
---|
353 | \item Using the coupler in interpolator-only mode |
---|
354 | |
---|
355 | This is not possible anymore as OASIS3-MCT is now only a coupling |
---|
356 | library. However, it is planned, in a further release, to provide a |
---|
357 | toy coupled model that could be use to check the quality of the |
---|
358 | remapping for any specific couple of grids. (Note: this was done in OASIS3-MCT\_2.0.) |
---|
359 | |
---|
360 | \item Coupling field CF standard names |
---|
361 | |
---|
362 | The file cf\_name\_table.txt is not needed or used anymore. The CF |
---|
363 | standard names of the coupling fields are not written to the debug |
---|
364 | files. |
---|
365 | |
---|
366 | \item Binary auxiliay files |
---|
367 | |
---|
368 | All auxiliary files, besides the {\it namcouple} must be NetCDF; |
---|
369 | binary files are not supported anymore. |
---|
370 | \end{itemize} |
---|
371 | |
---|
372 | \subsection{New functionality offered} |
---|
373 | \label{sec_changes_new} |
---|
374 | |
---|
375 | \begin{itemize} |
---|
376 | |
---|
377 | \item Better support of components for which only a subset of processes |
---|
378 | participate in the coupling |
---|
379 | |
---|
380 | In OASIS3.3, components for which only a subset of processes |
---|
381 | participated in the coupling were supported in a very restricted |
---|
382 | way. In fact, this subset had to be composed of the N first |
---|
383 | processes and N had to be specified in the {\it namcouple}. Now, the |
---|
384 | subset of processes can be composed of any of the component |
---|
385 | processes and does not have to be pre-defined in the {\it |
---|
386 | namcouple}. New routines {\tt oasis\_create\_couplcomm} and {\tt |
---|
387 | oasis\_set\_couplcomm} are now available to create or set a coupling |
---|
388 | communicator gathering only these processes (see section \ref{subsec_MPI1}). (Note: this was further improved in OASIS3-MCT\_3.0.) |
---|
389 | |
---|
390 | \item Exact restart for {\tt LOCTRANS} transformations |
---|
391 | |
---|
392 | If needed, LOCTRANS transformations write partially |
---|
393 | transformed fields in the coupling restart file at the end of a run |
---|
394 | to ensure an exact restart of the next run (see section |
---|
395 | \ref{subsec_timetrans}). For that |
---|
396 | reason, coupling restart filenames are now required for all {\it |
---|
397 | namcouple} entries that use LOCTRANS (with non INSTANT |
---|
398 | values). This is the reason an optional restart file is now provided |
---|
399 | on the OUTPUT {\it namcouple} input line. If the coupling periods of |
---|
400 | two (or more) coupling fields are different, it is necessary to define |
---|
401 | two (or more) restart files, one for each field. |
---|
402 | |
---|
403 | \item Support to couple multiple fields via a single communication. |
---|
404 | |
---|
405 | This is supported through colon |
---|
406 | delimited field lists in the {\it namcouple}, for example |
---|
407 | |
---|
408 | {\tt ATMTAUX:ATMTAUY:ATMHFLUX TAUX:TAUY:HEATFLUX 1 3600 3 rstrt.nc EXPORTED} |
---|
409 | |
---|
410 | in a single {\it namcouple} entry. All fields will use the |
---|
411 | {\it namcouple} settings for that entry. In the component model codes, |
---|
412 | these fields are still sent (``put'') or received (``get'') one at a |
---|
413 | time. Inside OASIS3-MCT, the fields are stored and a single mapping |
---|
414 | and send or receive instruction is executed for all fields. This is |
---|
415 | useful in cases where multiple fields have the same coupling |
---|
416 | transformations and to reduce communication costs by aggregating multiple |
---|
417 | fields into a single communication. If a LOCTRAN transformation is needed |
---|
418 | for these multiple fields, it is necessary to define a restart file for |
---|
419 | these multiple fields. The coupling fields must be sent and received in the same order |
---|
420 | as they are defined in the corresponding single entry of the namcouple |
---|
421 | (not relevant in further versions of OASIS3-MCT). |
---|
422 | |
---|
423 | \item Matching one source filed with multiple targets |
---|
424 | |
---|
425 | A coupling field sent by a source component model can be associated |
---|
426 | with more than one target field and model (get). In that case, the |
---|
427 | source model needs to send (``put'') the field only once and the |
---|
428 | corresponding data will arrive at multiple targets as specified in |
---|
429 | the {\it namcouple} configuration file. Different coupling |
---|
430 | frequencies and transformations are allowed for different coupling |
---|
431 | exchanges of the same field. If coupling restart files are required |
---|
432 | (either if a {\tt LAG} or if a {\tt LOCTRANS} transformation is |
---|
433 | specified), it is mandatory to specify different files for the |
---|
434 | different fields. |
---|
435 | |
---|
436 | %In addition, a single |
---|
437 | % coupling field can be sent to the same destination model using |
---|
438 | % multiple transforms as long as the destination field name is |
---|
439 | % unique. |
---|
440 | The inverse feature is not allowed, i.e. a single target (get) field |
---|
441 | CANNOT be associated with multiple source (put) fields. |
---|
442 | |
---|
443 | \item The debug files |
---|
444 | |
---|
445 | The debug mode was greatly improved as compared to OASIS3.3. The level |
---|
446 | of debug information written out to the OASIS3-MCT debug files for |
---|
447 | each model process is defined by the \$NLOGPRT value in the {\it |
---|
448 | namcouple}. All details are provided in section |
---|
449 | \ref{subsec_namcouplefirst}. |
---|
450 | |
---|
451 | \end{itemize} |
---|
452 | |
---|
453 | \subsection{Changes in the configuration file {\it namcouple}} |
---|
454 | \label{sec_changes_namcouple} |
---|
455 | |
---|
456 | \begin{itemize} |
---|
457 | |
---|
458 | \item The {\it namcouple} configuration file of OASIS3-MCT is fully backward |
---|
459 | compatible with OASIS3.3. However, several {\it namcouple} keywords |
---|
460 | have been deprecated even if they are still |
---|
461 | allowed. These keywords are noted ``UNUSED'' in sections |
---|
462 | \ref{subsec_namcouplefirst} and \ref{subsec_namcouplesecond} and are |
---|
463 | not fully described. Information below these keywords will not be read |
---|
464 | and will not be used: \$SEQMODE , \$CHANNEL, \$JOBNAME, \$INIDATE, |
---|
465 | \$MODINFO, \$CALTYPE. |
---|
466 | |
---|
467 | \item Also the following inputs should not appear in the {\it namcouple} |
---|
468 | anymore as the related functionality are not supported anymore in |
---|
469 | OASIS3-MCT (see above): field status AUXILARY, time transformation |
---|
470 | ONCE, REDGLO, INVERT, MASK, EXTRAP, CORRECT, INTERP, MOZAIC, FILLING, |
---|
471 | SUBGRID, MASKP, REVERSE, GLORED. |
---|
472 | |
---|
473 | \item To get 2D fields in the debug output NetCDF files, the 2D dimensions of the |
---|
474 | grids must be provided in the {\it namcouple} (except if the field |
---|
475 | has the status OUTPUT); otherwise, the fields in the debug output files will be 1D. |
---|
476 | |
---|
477 | \end{itemize} |
---|
478 | |
---|
479 | \subsection{Other differences} |
---|
480 | \label{sec_changes_other} |
---|
481 | |
---|
482 | \begin{itemize} |
---|
483 | |
---|
484 | \item IGNORED and IGNOUT fields are converted to EXPORTED and EXPOUT |
---|
485 | respectively. |
---|
486 | |
---|
487 | \item The file {\tt areas.nc} is not needed anymore to calculate some |
---|
488 | statistics with options CHECKIN and/or CHECKOUT. |
---|
489 | |
---|
490 | \item SEQ index is no longer needed to ensure correct coupling |
---|
491 | sequencing within the coupler. Use of SEQ allows the coupling layer |
---|
492 | to detect potential deadlocks before they happen and to exit |
---|
493 | gracefully (see section \ref{subsec_sec}). |
---|
494 | |
---|
495 | \item The I/O library mpp\_io is no longer used to write the restart and output files. |
---|
496 | |
---|
497 | |
---|
498 | \end{itemize} |
---|