9 #ifndef __XIOS_GRID_TRANSFORMATION_FACTORY_HPP__
10 #define __XIOS_GRID_TRANSFORMATION_FACTORY_HPP__
19 class CGenericAlgorithmTransformation;
38 int elementPositionInGrid,
39 std::map<int, int>& elementPositionInGridSrc2ScalarPosition,
40 std::map<int, int>& elementPositionInGridSrc2AxisPosition,
41 std::map<int, int>& elementPositionInGridSrc2DomainPosition,
42 std::map<int, int>& elementPositionInGridDst2ScalarPosition,
43 std::map<int, int>& elementPositionInGridDst2AxisPosition,
44 std::map<int, int>& elementPositionInGridDst2DomainPosition);
49 int elementPositionInGrid,
50 std::map<int, int>& elementPositionInGridSrc2ScalarPosition,
51 std::map<int, int>& elementPositionInGridSrc2AxisPosition,
52 std::map<int, int>& elementPositionInGridSrc2DomainPosition,
53 std::map<int, int>& elementPositionInGridDst2ScalarPosition,
54 std::map<int, int>& elementPositionInGridDst2AxisPosition,
55 std::map<int, int>& elementPositionInGridDst2DomainPosition);
57 typedef std::map<ETranformationType, CreateTransformationCallBack>
CallBackMap;
73 int elementPositionInGrid,
74 std::map<int, int>& elementPositionInGridSrc2ScalarPosition,
75 std::map<int, int>& elementPositionInGridSrc2AxisPosition,
76 std::map<int, int>& elementPositionInGridSrc2DomainPosition,
77 std::map<int, int>& elementPositionInGridDst2ScalarPosition,
78 std::map<int, int>& elementPositionInGridDst2AxisPosition,
79 std::map<int, int>& elementPositionInGridDst2DomainPosition)
81 typename CallBackMap::const_iterator it = (*transformationCreationCallBacks_).find(transType);
82 if ((*transformationCreationCallBacks_).end() == it)
84 ERROR(
"CGridTransformationFactory::createTransformation(ETranformationType transType)",
85 <<
"Transformation type " << transType
86 <<
"doesn't exist. Please define.");
88 return (it->second)(gridDst, gridSrc, transformation, elementPositionInGrid,
89 elementPositionInGridSrc2ScalarPosition,
90 elementPositionInGridSrc2AxisPosition,
91 elementPositionInGridSrc2DomainPosition,
92 elementPositionInGridDst2ScalarPosition,
93 elementPositionInGridDst2AxisPosition,
94 elementPositionInGridDst2DomainPosition);
100 if (0 == transformationCreationCallBacks_)
101 transformationCreationCallBacks_ =
new CallBackMap();
103 return (*transformationCreationCallBacks_).insert(make_pair(transType, createFn)).second;
109 return (1 == (*transformationCreationCallBacks_).erase(transType));
114 #endif // __XIOS_GRID_TRANSFORMATION_FACTORY_HPP__
enum xios::transformation_type ETranformationType
////////////////////// Définitions ////////////////////// ///
CATCH CScalarAlgorithmReduceScalar::CScalarAlgorithmReduceScalar(CScalar *scalarDestination, CScalar *scalarSource, CReduceScalarToScalar *algo ERROR)("CScalarAlgorithmReduceScalar::CScalarAlgorithmReduceScalar(CScalar* scalarDestination, CScalar* scalarSource, CReduceScalarToScalar* algo)",<< "Operation must be defined."<< "Scalar source "<< scalarSource->getId()<< std::endl<< "Scalar destination "<< scalarDestination->getId())