source: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/reduce_axis_to_axis.cpp @ 2011

Last change on this file since 2011 was 2011, checked in by ymipsl, 3 years ago
  • bug fix when createing mask on server side when overlapping grid
  • implement axis interpolation on pressure coordinate
  • big cleaning in transformation

YM

  • Property svn:eol-style set to native
File size: 3.5 KB
Line 
1#include "reduce_axis_to_axis.hpp"
2#include "axis_algorithm_reduce_axis.hpp"
3#include "type.hpp"
4#include "axis.hpp"
5
6namespace xios {
7
8  /// ////////////////////// Définitions ////////////////////// ///
9
10  CReduceAxisToAxis::CReduceAxisToAxis(void)
11    : CObjectTemplate<CReduceAxisToAxis>(), CReduceAxisToAxisAttributes(), CTransformation<CAxis>()
12  { /* Ne rien faire de plus */ }
13
14  CReduceAxisToAxis::CReduceAxisToAxis(const StdString & id)
15    : CObjectTemplate<CReduceAxisToAxis>(id), CReduceAxisToAxisAttributes(), CTransformation<CAxis>()
16  { /* Ne rien faire de plus */ }
17
18  CReduceAxisToAxis::~CReduceAxisToAxis(void)
19  {}
20
21  CTransformation<CAxis>* CReduceAxisToAxis::create(const StdString& id, xml::CXMLNode* node)
22  {
23    CReduceAxisToAxis* reduceAxis = CReduceAxisToAxisGroup::get("reduce_axis_to_axis_definition")->createChild(id);
24    if (node) reduceAxis->parse(*node);
25    return static_cast<CTransformation<CAxis>*>(reduceAxis);
26  }
27
28  bool CReduceAxisToAxis::registerTrans()
29  {
30    return registerTransformation(TRANS_REDUCE_AXIS_TO_AXIS, {create, getTransformation});
31  }
32
33  bool CReduceAxisToAxis::_dummyRegistered = CReduceAxisToAxis::registerTrans();
34
35  //----------------------------------------------------------------
36
37  StdString CReduceAxisToAxis::GetName(void)    { return StdString("reduce_axis_to_axis"); }
38  StdString CReduceAxisToAxis::GetDefName(void) { return StdString("reduce_axis_to_axis"); }
39  ENodeType CReduceAxisToAxis::GetType(void)    { return eReduceAxisToAxis; }
40
41  void CReduceAxisToAxis::checkValid(CAxis* axisDst, CAxis* axisSrc)
42  {
43 
44    if (this->operation.isEmpty())
45      ERROR("CReduceAxisToAxis::checkValid(CAxis* axisDst, CAxis* axisSrc)",
46             << "An operation must be defined."
47             << "Axis source " <<axisSrc->getId() << std::endl
48             << "Axis destination " << axisDst->getId());
49
50
51    if (axisDst->n_glo != axisSrc->n_glo)
52       ERROR("CReduceAxisToAxis::checkValid(CAxis* axisDst, CAxis* axisSrc)",
53            << "both axis should have same n_glo"
54            << "Axis source " <<axisSrc->getId() << " has n_glo " << axisSrc->n_glo << std::endl
55            << "Axis destination " << axisDst->getId() << " has n_glo " << axisDst->n_glo);
56   
57  }
58
59  CGenericAlgorithmTransformation* CReduceAxisToAxis::createAlgorithm(bool isSource,
60                                                        CGrid* gridDst, CGrid* gridSrc,
61                                                        int elementPositionInGrid,
62                                                        std::map<int, int>& elementPositionInGridSrc2ScalarPosition,
63                                                        std::map<int, int>& elementPositionInGridSrc2AxisPosition,
64                                                        std::map<int, int>& elementPositionInGridSrc2DomainPosition,
65                                                        std::map<int, int>& elementPositionInGridDst2ScalarPosition,
66                                                        std::map<int, int>& elementPositionInGridDst2AxisPosition,
67                                                        std::map<int, int>& elementPositionInGridDst2DomainPosition)
68  {
69    return CAxisAlgorithmReduceAxis::create(isSource, gridDst,  gridSrc, this, elementPositionInGrid,
70                       elementPositionInGridSrc2ScalarPosition, elementPositionInGridSrc2AxisPosition, elementPositionInGridSrc2DomainPosition,
71                       elementPositionInGridDst2ScalarPosition, elementPositionInGridDst2AxisPosition, elementPositionInGridDst2DomainPosition);
72  }
73}
Note: See TracBrowser for help on using the repository browser.