|
207 | 207 | been defined and the relevant data arrays have been attached to Fields and |
208 | 208 | are available to access. At the end of a simulation, IOStreams must be |
209 | 209 | finalized using</p> |
210 | | -<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">Err</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">IOStream</span><span class="o">::</span><span class="n">finalize</span><span class="p">(</span><span class="n">ModelClock</span><span class="p">);</span> |
| 210 | +<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="n">IOStream</span><span class="o">::</span><span class="n">finalize</span><span class="p">(</span><span class="n">ModelClock</span><span class="p">);</span> |
211 | 211 | </pre></div> |
212 | 212 | </div> |
213 | 213 | <p>so that any final writes can take place for the OnShutdown streams and to |
|
218 | 218 | </div> |
219 | 219 | <p>For most output streams, we provide a writeAll interface that should be placed |
220 | 220 | at an appropriate time during the time step loop:</p> |
221 | | -<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">Err</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">IOStream</span><span class="o">::</span><span class="n">writeAll</span><span class="p">(</span><span class="n">ModelClock</span><span class="p">);</span> |
| 221 | +<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="n">IOStream</span><span class="o">::</span><span class="n">writeAll</span><span class="p">(</span><span class="n">ModelClock</span><span class="p">);</span> |
222 | 222 | </pre></div> |
223 | 223 | </div> |
224 | 224 | <p>This function checks each write stream and writes the file if it is time, based |
225 | 225 | on a time manager alarm that is defined during initialization for each stream |
226 | 226 | based on the time frequency in the streams configuration. After writing the |
227 | 227 | file, the alarm is reset for the next write time. If a file must be written |
228 | 228 | outside of this routine, a single-stream write can take place using:</p> |
229 | | -<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">Err</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">IOStream</span><span class="o">::</span><span class="n">write</span><span class="p">(</span><span class="n">StreamName</span><span class="p">,</span><span class="w"> </span><span class="n">ModelClock</span><span class="p">);</span> |
| 229 | +<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="n">IOStream</span><span class="o">::</span><span class="n">write</span><span class="p">(</span><span class="n">StreamName</span><span class="p">,</span><span class="w"> </span><span class="n">ModelClock</span><span class="p">);</span> |
230 | 230 | </pre></div> |
231 | 231 | </div> |
232 | 232 | <p>Reading files (eg for initialization, restart or forcing) does not often |
233 | 233 | take place all at once, so no readAll interface is provided. Instead, each |
234 | 234 | input stream is read using:</p> |
235 | | -<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">Err</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">IOStream</span><span class="o">::</span><span class="n">read</span><span class="p">(</span><span class="n">StreamName</span><span class="p">,</span><span class="w"> </span><span class="n">ModelClock</span><span class="p">,</span><span class="w"> </span><span class="n">ReqMetadata</span><span class="p">);</span> |
| 235 | +<div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="w"> </span><span class="n">Error</span><span class="w"> </span><span class="n">Err</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">IOStream</span><span class="o">::</span><span class="n">read</span><span class="p">(</span><span class="n">StreamName</span><span class="p">,</span><span class="w"> </span><span class="n">ModelClock</span><span class="p">,</span><span class="w"> </span><span class="n">ReqMetadata</span><span class="p">);</span> |
236 | 236 | </pre></div> |
237 | 237 | </div> |
238 | | -<p>where ReqMetadata is a variable of type Metadata (defined in Field but |
| 238 | +<p>The returned error code typically means that a field in the stream could |
| 239 | +not be found in the input file - most other errors abort immediately. The |
| 240 | +calling routine is then responsible for deciding what action to take. |
| 241 | +The ReqMetadata argument is a variable of type Metadata (defined in Field but |
239 | 242 | essentially a <code class="docutils literal notranslate"><span class="pre">std::map<std::string,</span> <span class="pre">std::any></span></code> for the name/value pair). |
240 | | -This variable should incude the names of global metadata that are desired |
| 243 | +This variable should include the names of global metadata that are desired |
241 | 244 | from the input file. For example, if a time string is needed to verify the |
242 | 245 | input file corresponds to a desired time, the required metadata can be |
243 | 246 | initialized with</p> |
|
0 commit comments