source: XIOS3/dev/XIOS_ATTACHED/src/transformation/axis_algorithm/axis_algorithm_redistribute.cpp @ 2460

Last change on this file since 2460 was 2460, checked in by ymipsl, 17 months ago

Squeletton to had new transformations : redistribute_domain, redistribute_axis, redistribute_scalar

YM

  • Property svn:executable set to *
File size: 2.4 KB
Line 
1/*!
2   \file axis_algorithm_redistribute.cpp
3   \brief Algorithm for redistribute an axis.
4 */
5#include "axis_algorithm_redistribute.hpp"
6#include "redistribute_axis.hpp"
7#include "axis.hpp"
8#include "grid.hpp"
9#include "grid_transformation_factory_impl.hpp"
10
11namespace xios
12{
13
14  shared_ptr<CGenericAlgorithmTransformation> CAxisAlgorithmRedistribute::create(bool isSource, CGrid* gridDst, CGrid* gridSrc,
15                                                               CTransformation<CAxis>* transformation,
16                                                               int elementPositionInGrid,
17                                                               std::map<int, int>& elementPositionInGridSrc2ScalarPosition,
18                                                               std::map<int, int>& elementPositionInGridSrc2AxisPosition,
19                                                               std::map<int, int>& elementPositionInGridSrc2DomainPosition, 
20                                                               std::map<int, int>& elementPositionInGridDst2ScalarPosition,
21                                                               std::map<int, int>& elementPositionInGridDst2AxisPosition,
22                                                               std::map<int, int>& elementPositionInGridDst2DomainPosition)
23  TRY
24  {
25    std::vector<CAxis*> axisListDestP = gridDst->getAxis();
26    std::vector<CAxis*> axisListSrcP  = gridSrc->getAxis();
27
28    CRedistributeAxis* redistributeAxis = dynamic_cast<CRedistributeAxis*> (transformation);
29    int axisDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid];
30    int axisSrcIndex = elementPositionInGridSrc2AxisPosition[elementPositionInGrid];
31
32    return make_shared<CAxisAlgorithmRedistribute>(isSource, axisListDestP[axisDstIndex], axisListSrcP[axisSrcIndex], redistributeAxis);
33  }
34  CATCH
35
36  bool CAxisAlgorithmRedistribute::dummyRegistered_ = CAxisAlgorithmRedistribute::registerTrans();
37  bool CAxisAlgorithmRedistribute::registerTrans()
38  TRY
39  {
40    return CGridTransformationFactory<CAxis>::registerTransformation(TRANS_REDISTRIBUTE_AXIS, create);
41  }
42  CATCH
43
44  CAxisAlgorithmRedistribute::CAxisAlgorithmRedistribute(bool isSource, CAxis* axisDestination, CAxis* axisSource, CRedistributeAxis* redistributeAxis)
45  : CAlgorithmTransformationTransfer(isSource)
46  TRY
47  {
48
49
50    axisDestination->checkAttributes() ;
51  }
52  CATCH
53
54
55}
Note: See TracBrowser for help on using the repository browser.