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_temporal_splitting.cpp
Aller à la documentation de ce fichier.
1 
7 #include "temporal_splitting.hpp"
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  CTemporalSplitting* temporalSplitting = dynamic_cast<CTemporalSplitting*> (transformation);
29  int axisDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid];
30  int scalarSrcIndex = elementPositionInGridSrc2ScalarPosition[elementPositionInGrid];
31 
32  return (new CAxisAlgorithmTemporalSplitting(axisListDestP[axisDstIndex], scalarListSrcP[scalarSrcIndex], temporalSplitting));
33 }
34 CATCH
35 
37 TRY
38 {
40 }
41 CATCH
42 
44  : CAxisAlgorithmTransformation(axisDestination, scalarSource)
45 {
46 
47 }
48 
49 
51 {
52 }
53 
55 TRY
56 {
57  this->transformationMapping_.resize(1);
58  this->transformationWeight_.resize(1);
59 
62 
63  CArray<int,1>& axisDstIndex = axisDest_->index;
64 
65  int nbAxisIdx = axisDstIndex.numElements();
66  for (int idxAxis = 0; idxAxis < nbAxisIdx; ++idxAxis)
67  {
68  int globalAxisIdx = axisDstIndex(idxAxis);
69  if (idxAxis==0)
70  {
71  transMap[globalAxisIdx].resize(1);
72  transWeight[globalAxisIdx].resize(1);
73  transMap[globalAxisIdx][0] = 0 ;
74  transWeight[globalAxisIdx][0] = 1.0 ;
75  }
76  }
77 }
78 CATCH
79 
80 }
std::unordered_map< int, std::vector< double > > TransformationWeightMap
CAxisAlgorithmTemporalSplitting(CAxis *axisDestination, CScalar *scalarSource, CTemporalSplitting *algo)
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.
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)
std::vector< TransformationIndexMap > transformationMapping_
Map between global index of destination element and source element.
#define xios(arg)
CAxis * axisDest_
Axis on grid destination.
This class defines the interface for all other inherited algorithms class.
void computeIndexSourceMapping_(const std::vector< CArray< double, 1 > * > &dataAuxInputs)
TransformationIndexMap & transMap
std::unordered_map< int, std::vector< int > > TransformationIndexMap
TransformationWeightMap & transWeight
#define CATCH
Definition: exception.hpp:155