source: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_duplicate_scalar.cpp @ 1999

Last change on this file since 1999 was 1999, checked in by ymipsl, 3 years ago

Adapt transformation algorithm to new infrastructure (on going...)

YM

  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 2.9 KB
Line 
1/*!
2   \file axis_algorithm_duplicate_scalar.cpp
3
4   \brief Algorithm to duplicate scalar into  axis
5 */
6#include "axis_algorithm_duplicate_scalar.hpp"
7#include "duplicate_scalar_to_axis.hpp"
8#include "axis.hpp"
9#include "scalar.hpp"
10#include "grid.hpp"
11#include "grid_transformation_factory_impl.hpp"
12
13namespace xios {
14CGenericAlgorithmTransformation* CAxisAlgorithmDuplicateScalar::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)
23TRY
24{
25  std::vector<CAxis*> axisListDestP = gridDst->getAxis();
26  std::vector<CScalar*> scalarListSrcP = gridSrc->getScalars();
27
28  CDuplicateScalarToAxis* duplicateScalar = dynamic_cast<CDuplicateScalarToAxis*> (transformation);
29  int axisDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid];
30  int scalarSrcIndex = elementPositionInGridSrc2ScalarPosition[elementPositionInGrid];
31
32  return (new CAxisAlgorithmDuplicateScalar(isSource, axisListDestP[axisDstIndex], scalarListSrcP[scalarSrcIndex], duplicateScalar));
33}
34CATCH
35
36bool CAxisAlgorithmDuplicateScalar::dummyRegistered_ = CAxisAlgorithmDuplicateScalar::registerTrans();
37bool CAxisAlgorithmDuplicateScalar::registerTrans()
38TRY
39{
40  return CGridTransformationFactory<CAxis>::registerTransformation(TRANS_DUPLICATE_SCALAR_TO_AXIS, create);
41}
42CATCH
43
44
45CAxisAlgorithmDuplicateScalar::CAxisAlgorithmDuplicateScalar(bool isSource, CAxis* axisDestination, CScalar* scalarSource, CDuplicateScalarToAxis* algo)
46 : CAlgorithmTransformationTransfer(isSource)
47{
48 
49  CArray<int,1>& axisDstIndex = axisDestination->index;
50
51  int nbAxisIdx = axisDstIndex.numElements();
52  for (int idxAxis = 0; idxAxis < nbAxisIdx; ++idxAxis)
53  {
54    int globalAxisIdx = axisDstIndex(idxAxis);
55    this->transformationMapping_[globalAxisIdx] = 0 ;
56  }
57
58  axisDestination->checkAttributes() ;
59  this->computeAlgorithm(scalarSource->getLocalView(CElementView::WORKFLOW), axisDestination->getLocalView(CElementView::WORKFLOW)) ;
60}
61
62
63CAxisAlgorithmDuplicateScalar::~CAxisAlgorithmDuplicateScalar()
64{
65}
66
67}
Note: See TracBrowser for help on using the repository browser.