source: XIOS/dev/dev_olga/src/node/field_impl.hpp @ 1686

Last change on this file since 1686 was 1653, checked in by oabramkina, 5 years ago

Developments for visualization of XIOS workflow.

Branch is spawned from trunk r1649.

Boost library is used for producing Graphviz DOT files. Current results: a DOT file representing a static workflow. For a complete proof of concept, DOT files for each timestamp should be generated. The necessary information has been collected by XIOS, it only requires rearranging the information for graphing (changes in classes CWorkflowGraph and CGraphviz).

  • 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.6 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
15namespace xios {
16
17  template <int N>
18  void CField::setData(const CArray<double, N>& _data)
19  TRY
20  {
21    if (clientSourceFilter)
22    {
23      if (check_if_active.isEmpty() || (!check_if_active.isEmpty() && (!check_if_active) || isActive(true)))
24        clientSourceFilter->streamData(CContext::getCurrent()->getCalendar()->getCurrentDate(), _data);
25    }
26    else if (instantDataFilter)
27      ERROR("void CField::setData(const CArray<double, N>& _data)",
28            << "Impossible to receive data from the model for a field [ id = " << getId() << " ] with a reference or an arithmetic operation.");
29  }
30  CATCH_DUMP_ATTR
31
32  template <int N>
33  void CField::getData(CArray<double, N>& _data) const
34  TRY
35  {
36    if (storeFilter)
37    {
38      CDataPacket::StatusCode status = storeFilter->getData(CContext::getCurrent()->getCalendar()->getCurrentDate(), _data);
39
40      if (status == CDataPacket::END_OF_STREAM)
41        ERROR("void CField::getData(CArray<double, N>& _data) const",
42              << "Impossible to access field data, all the records of the field [ id = " << getId() << " ] have been already read.");
43    }
44    else
45    {
46      ERROR("void CField::getData(CArray<double, N>& _data) const",
47            << "Impossible to access field data, the field [ id = " << getId() << " ] does not have read access.");
48    }
49  }
50  CATCH
51} // namespace xios
52
53#endif
Note: See TracBrowser for help on using the repository browser.