XIOS  1.0
Xml I/O Server
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Amis Macros
axis_algorithm_duplicate_scalar.cpp
Aller à la documentation de ce fichier.
1 
8 #include "axis.hpp"
9 #include "scalar.hpp"
10 #include "grid.hpp"
12 
13 namespace xios {
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<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(axisListDestP[axisDstIndex], scalarListSrcP[scalarSrcIndex], duplicateScalar));
33 }
34 CATCH
35 
37 TRY
38 {
40 }
41 CATCH
42 
43 
45  : CAxisAlgorithmTransformation(axisDestination, scalarSource)
46 {
47 
48 }
49 
50 
52 {
53 }
54 
56 TRY
57 {
58  this->transformationMapping_.resize(1);
59  this->transformationWeight_.resize(1);
60 
63 
64  CArray<int,1>& axisDstIndex = axisDest_->index;
65 
66  int nbAxisIdx = axisDstIndex.numElements();
67  for (int idxAxis = 0; idxAxis < nbAxisIdx; ++idxAxis)
68  {
69  int globalAxisIdx = axisDstIndex(idxAxis);
70  transMap[globalAxisIdx].resize(1);
71  transWeight[globalAxisIdx].resize(1);
72  transMap[globalAxisIdx][0] = 0 ;
73  transWeight[globalAxisIdx][0] = 1.0 ;
74  }
75 }
76 CATCH
77 }
std::unordered_map< int, std::vector< double > > TransformationWeightMap
Helper class to create different transformations.
static bool registerTransformation(ETranformationType transType, CreateTransformationCallBack createFn)
#define TRY
Definition: exception.hpp:154
std::vector< TransformationWeightMap > transformationWeight_
Weight corresponding of source to destination.
std::vector< TransformationIndexMap > transformationMapping_
Map between global index of destination element and source element.
#define xios(arg)
CAxisAlgorithmDuplicateScalar(CAxis *axisDestination, CScalar *scalarSource, CDuplicateScalarToAxis *algo)
static CGenericAlgorithmTransformation * create(CGrid *gridDst, CGrid *gridSrc, CTransformation< CAxis > *transformation, int elementPositionInGrid, std::map< int, int > &elementPositionInGridSrc2ScalarPosition, std::map< int, int > &elementPositionInGridSrc2AxisPosition, std::map< int, int > &elementPositionInGridSrc2DomainPosition, std::map< int, int > &elementPositionInGridDst2ScalarPosition, std::map< int, int > &elementPositionInGridDst2AxisPosition, std::map< int, int > &elementPositionInGridDst2DomainPosition)
CAxis * axisDest_
Axis on grid destination.
Duplicate scalar into axis destination.
This class defines the interface for all other inherited algorithms class.
TransformationIndexMap & transMap
std::unordered_map< int, std::vector< int > > TransformationIndexMap
TransformationWeightMap & transWeight
#define CATCH
Definition: exception.hpp:155
void computeIndexSourceMapping_(const std::vector< CArray< double, 1 > * > &dataAuxInputs)