source: XIOS/dev/XIOS_DEV_CMIP6/src/node/extract_axis_to_scalar.cpp @ 1301

Last change on this file since 1301 was 960, checked in by mhnguyen, 8 years ago

New transformation: Extract a point on axis to a scalar

+) Add new node and new transformation algorithm

Test
+) On Curie
+) Work

File size: 2.3 KB
Line 
1#include "extract_axis_to_scalar.hpp"
2#include "type.hpp"
3#include "axis.hpp"
4#include "scalar.hpp"
5
6namespace xios {
7
8  /// ////////////////////// Définitions ////////////////////// ///
9
10  CExtractAxisToScalar::CExtractAxisToScalar(void)
11    : CObjectTemplate<CExtractAxisToScalar>(), CExtractAxisToScalarAttributes(), CTransformation<CScalar>()
12  { /* Ne rien faire de plus */ }
13
14  CExtractAxisToScalar::CExtractAxisToScalar(const StdString & id)
15    : CObjectTemplate<CExtractAxisToScalar>(id), CExtractAxisToScalarAttributes(), CTransformation<CScalar>()
16  { /* Ne rien faire de plus */ }
17
18  CExtractAxisToScalar::~CExtractAxisToScalar(void)
19  {}
20
21  CTransformation<CScalar>* CExtractAxisToScalar::create(const StdString& id, xml::CXMLNode* node)
22  {
23    CExtractAxisToScalar* extractAxis = CExtractAxisToScalarGroup::get("extract_axis_to_scalar_definition")->createChild(id);
24    if (node) extractAxis->parse(*node);
25    return static_cast<CTransformation<CScalar>*>(extractAxis);
26  }
27
28  bool CExtractAxisToScalar::registerTrans()
29  {
30    return registerTransformation(TRANS_EXTRACT_AXIS_TO_SCALAR, CExtractAxisToScalar::create);
31  }
32
33  bool CExtractAxisToScalar::_dummyRegistered = CExtractAxisToScalar::registerTrans();
34
35  //----------------------------------------------------------------
36
37  StdString CExtractAxisToScalar::GetName(void)    { return StdString("extract_axis_to_scalar"); }
38  StdString CExtractAxisToScalar::GetDefName(void) { return StdString("extract_axis_to_scalar"); }
39  ENodeType CExtractAxisToScalar::GetType(void)    { return eExtractAxisToScalar; }
40
41  void CExtractAxisToScalar::checkValid(CScalar* scalarDst, CAxis* axisSrc)
42  {
43    int axis_n_glo = axisSrc->n_glo;
44    if (position.isEmpty())
45      ERROR("CExtractAxisToScalar::checkValid(CScalar* scalarDst, CAxis* axisSrc)",
46        << "Position should be specified"
47        << "Axis source " << axisSrc->getId() << std::endl
48        << "CScalar destination " << scalarDst->getId() << std::endl);
49
50    int position = this->position;
51
52    if ((position < 0) || (position > (axis_n_glo-1)))
53        ERROR("CExtractAxisToScalar::checkValid(CScalar* scalarDst, CAxis* axisSrc)",
54          << "Extract axis, position should be inside 0 and ni_glo of axis source"
55          << "Axis source " << axisSrc->getId() << std::endl
56          << "CScalar destination " << scalarDst->getId() << std::endl);
57  }
58
59}
Note: See TracBrowser for help on using the repository browser.