Last change
on this file since 1449 was
1181,
checked in by rlacroix, 7 years ago
|
Add a new field attribut "check_if_active".
If this attribut is set to "true", xios_send_field will check if the field is active at current timestep and will be a no-op if it is not.
|
-
Property copyright set to
Software name : XIOS (Xml I/O Server) http://forge.ipsl.jussieu.fr/ioserver Creation date : January 2009 Licence : CeCCIL version2 see license file in root directory : Licence_CeCILL_V2-en.txt or http://www.cecill.info/licences/Licence_CeCILL_V2-en.html Holder : CEA/LSCE (Laboratoire des Sciences du CLimat et de l'Environnement) CNRS/IPSL (Institut Pierre Simon Laplace) Project Manager : Yann Meurdesoif yann.meurdesoif@cea.fr
|
File size:
1.5 KB
|
Line | |
---|
1 | |
---|
2 | #ifndef __FIELD_IMPL_HPP__ |
---|
3 | #define __FIELD_IMPL_HPP__ |
---|
4 | |
---|
5 | #include "xios_spl.hpp" |
---|
6 | #include "field.hpp" |
---|
7 | #include "context.hpp" |
---|
8 | #include "grid.hpp" |
---|
9 | #include "timer.hpp" |
---|
10 | #include "array_new.hpp" |
---|
11 | #include "source_filter.hpp" |
---|
12 | #include "store_filter.hpp" |
---|
13 | |
---|
14 | |
---|
15 | namespace xios { |
---|
16 | |
---|
17 | template <int N> |
---|
18 | void CField::setData(const CArray<double, N>& _data) |
---|
19 | { |
---|
20 | if (clientSourceFilter) |
---|
21 | { |
---|
22 | if (!check_if_active || isActive(true)) |
---|
23 | clientSourceFilter->streamData(CContext::getCurrent()->getCalendar()->getCurrentDate(), _data); |
---|
24 | } |
---|
25 | else if (instantDataFilter) |
---|
26 | ERROR("void CField::setData(const CArray<double, N>& _data)", |
---|
27 | << "Impossible to receive data from the model for a field [ id = " << getId() << " ] with a reference or an arithmetic operation."); |
---|
28 | } |
---|
29 | |
---|
30 | template <int N> |
---|
31 | void CField::getData(CArray<double, N>& _data) const |
---|
32 | { |
---|
33 | if (storeFilter) |
---|
34 | { |
---|
35 | CDataPacket::StatusCode status = storeFilter->getData(CContext::getCurrent()->getCalendar()->getCurrentDate(), _data); |
---|
36 | |
---|
37 | if (status == CDataPacket::END_OF_STREAM) |
---|
38 | ERROR("void CField::getData(CArray<double, N>& _data) const", |
---|
39 | << "Impossible to access field data, all the records of the field [ id = " << getId() << " ] have been already read."); |
---|
40 | } |
---|
41 | else |
---|
42 | { |
---|
43 | ERROR("void CField::getData(CArray<double, N>& _data) const", |
---|
44 | << "Impossible to access field data, the field [ id = " << getId() << " ] does not have read access."); |
---|
45 | } |
---|
46 | } |
---|
47 | } // namespace xios |
---|
48 | |
---|
49 | #endif |
---|
Note: See
TracBrowser
for help on using the repository browser.