Changeset 933
- Timestamp:
- 09/22/16 10:58:32 (8 years ago)
- Location:
- XIOS/trunk/src/transformation
- Files:
-
- 2 added
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/transformation/axis_algorithm_extract_domain.cpp
r918 r933 11 11 #include "axis.hpp" 12 12 #include "domain.hpp" 13 #include "grid.hpp" 14 #include "grid_transformation_factory_impl.hpp" 13 15 14 16 #include "sum.hpp" 15 17 16 18 namespace xios { 19 CGenericAlgorithmTransformation* CAxisAlgorithmExtractDomain::create(CGrid* gridDst, CGrid* gridSrc, 20 CTransformation<CAxis>* transformation, 21 int elementPositionInGrid, 22 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 23 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 24 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 25 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 26 std::map<int, int>& elementPositionInGridDst2AxisPosition, 27 std::map<int, int>& elementPositionInGridDst2DomainPosition) 28 { 29 std::vector<CAxis*> axisListDestP = gridDst->getAxis(); 30 std::vector<CDomain*> domainListSrcP = gridSrc->getDomains(); 31 32 CExtractDomainToAxis* extractDomain = dynamic_cast<CExtractDomainToAxis*> (transformation); 33 int axisDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid]; 34 int domainSrcIndex = elementPositionInGridSrc2DomainPosition[elementPositionInGrid]; 35 36 return (new CAxisAlgorithmExtractDomain(axisListDestP[axisDstIndex], domainListSrcP[domainSrcIndex], extractDomain)); 37 } 38 39 //bool CAxisAlgorithmExtractDomain::_dummyRegistered = CAxisAlgorithmExtractDomain::registerTrans(); 40 bool CAxisAlgorithmExtractDomain::registerTrans() 41 { 42 CGridTransformationFactory<CAxis>::registerTransformation(TRANS_EXTRACT_DOMAIN_TO_AXIS, create); 43 } 44 17 45 18 46 CAxisAlgorithmExtractDomain::CAxisAlgorithmExtractDomain(CAxis* axisDestination, CDomain* domainSource, CExtractDomainToAxis* algo) -
XIOS/trunk/src/transformation/axis_algorithm_extract_domain.hpp
r918 r933 11 11 12 12 #include "axis_algorithm_transformation.hpp" 13 #include "transformation.hpp" 13 14 14 15 namespace xios { … … 18 19 class CExtractDomainToAxis; 19 20 class CReductionAlgorithm; 21 20 22 21 23 /*! … … 36 38 virtual ~CAxisAlgorithmExtractDomain(); 37 39 40 static bool registerTrans(); 38 41 protected: 39 42 enum ExtractDirection { … … 51 54 CReductionAlgorithm* reduction_; 52 55 56 private: 57 static CGenericAlgorithmTransformation* create(CGrid* gridDst, CGrid* gridSrc, 58 CTransformation<CAxis>* transformation, 59 int elementPositionInGrid, 60 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 61 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 62 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 63 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 64 std::map<int, int>& elementPositionInGridDst2AxisPosition, 65 std::map<int, int>& elementPositionInGridDst2DomainPosition); 53 66 }; 54 67 -
XIOS/trunk/src/transformation/axis_algorithm_interpolate.cpp
r918 r933 8 8 */ 9 9 #include "axis_algorithm_interpolate.hpp" 10 #include "axis.hpp" 11 #include "interpolate_axis.hpp" 10 12 #include <algorithm> 11 13 #include "context.hpp" … … 13 15 #include "utils.hpp" 14 16 #include "grid.hpp" 17 #include "grid_transformation_factory_impl.hpp" 15 18 #include "distribution_client.hpp" 16 19 17 20 namespace xios { 21 CGenericAlgorithmTransformation* CAxisAlgorithmInterpolate::create(CGrid* gridDst, CGrid* gridSrc, 22 CTransformation<CAxis>* transformation, 23 int elementPositionInGrid, 24 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 25 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 26 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 27 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 28 std::map<int, int>& elementPositionInGridDst2AxisPosition, 29 std::map<int, int>& elementPositionInGridDst2DomainPosition) 30 { 31 std::vector<CAxis*> axisListDestP = gridDst->getAxis(); 32 std::vector<CAxis*> axisListSrcP = gridSrc->getAxis(); 33 34 CInterpolateAxis* interpolateAxis = dynamic_cast<CInterpolateAxis*> (transformation); 35 int axisDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid]; 36 int axisSrcIndex = elementPositionInGridSrc2AxisPosition[elementPositionInGrid]; 37 38 return (new CAxisAlgorithmInterpolate(axisListDestP[axisDstIndex], axisListSrcP[axisSrcIndex], interpolateAxis)); 39 } 40 41 bool CAxisAlgorithmInterpolate::registerTrans() 42 { 43 CGridTransformationFactory<CAxis>::registerTransformation(TRANS_INTERPOLATE_AXIS, create); 44 } 45 18 46 19 47 CAxisAlgorithmInterpolate::CAxisAlgorithmInterpolate(CAxis* axisDestination, CAxis* axisSource, CInterpolateAxis* interpAxis) -
XIOS/trunk/src/transformation/axis_algorithm_interpolate.hpp
r912 r933 11 11 12 12 #include "axis_algorithm_transformation.hpp" 13 #include "axis.hpp" 14 #include "interpolate_axis.hpp" 13 #include "transformation.hpp" 15 14 16 15 namespace xios { 16 17 class CAxis; 18 class CGrid; 19 class CInterpolateAxis; 20 17 21 /*! 18 22 \class CAxisAlgorithmInterpolate … … 27 31 virtual ~CAxisAlgorithmInterpolate() {} 28 32 33 static bool registerTrans(); 29 34 protected: 30 35 void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs); … … 43 48 StdString coordinate_; 44 49 std::vector<std::vector<int> > transPosition_; 50 51 private: 52 static CGenericAlgorithmTransformation* create(CGrid* gridDst, CGrid* gridSrc, 53 CTransformation<CAxis>* transformation, 54 int elementPositionInGrid, 55 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 56 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 57 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 58 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 59 std::map<int, int>& elementPositionInGridDst2AxisPosition, 60 std::map<int, int>& elementPositionInGridDst2DomainPosition); 45 61 }; 46 62 -
XIOS/trunk/src/transformation/axis_algorithm_inverse.cpp
r869 r933 11 11 #include "context_client.hpp" 12 12 #include "axis.hpp" 13 #include "grid.hpp" 14 #include "grid_transformation_factory_impl.hpp" 15 #include "inverse_axis.hpp" 13 16 #include "client_client_dht_template.hpp" 14 17 15 18 namespace xios { 16 19 17 CAxisAlgorithmInverse::CAxisAlgorithmInverse(CAxis* axisDestination, CAxis* axisSource) 20 CGenericAlgorithmTransformation* CAxisAlgorithmInverse::create(CGrid* gridDst, CGrid* gridSrc, 21 CTransformation<CAxis>* transformation, 22 int elementPositionInGrid, 23 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 24 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 25 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 26 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 27 std::map<int, int>& elementPositionInGridDst2AxisPosition, 28 std::map<int, int>& elementPositionInGridDst2DomainPosition) 29 { 30 std::vector<CAxis*> axisListDestP = gridDst->getAxis(); 31 std::vector<CAxis*> axisListSrcP = gridSrc->getAxis(); 32 33 CInverseAxis* inverseAxis = dynamic_cast<CInverseAxis*> (transformation); 34 int axisDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid]; 35 int axisSrcIndex = elementPositionInGridSrc2AxisPosition[elementPositionInGrid]; 36 37 return (new CAxisAlgorithmInverse(axisListDestP[axisDstIndex], axisListSrcP[axisSrcIndex], inverseAxis)); 38 } 39 40 bool CAxisAlgorithmInverse::registerTrans() 41 { 42 CGridTransformationFactory<CAxis>::registerTransformation(TRANS_INVERSE_AXIS, create); 43 } 44 45 46 CAxisAlgorithmInverse::CAxisAlgorithmInverse(CAxis* axisDestination, CAxis* axisSource, CInverseAxis* inverseAxis) 18 47 : CAxisAlgorithmTransformation(axisDestination, axisSource) 19 48 { -
XIOS/trunk/src/transformation/axis_algorithm_inverse.hpp
r869 r933 11 11 12 12 #include "axis_algorithm_transformation.hpp" 13 #include "transformation.hpp" 13 14 14 15 namespace xios { 15 16 16 class CAxis; 17 class CAxis; 18 class CInverseAxis; 19 17 20 /*! 18 21 \class CAxisAlgorithmInverse … … 22 25 { 23 26 public: 24 CAxisAlgorithmInverse(CAxis* axisDestination, CAxis* axisSource );27 CAxisAlgorithmInverse(CAxis* axisDestination, CAxis* axisSource, CInverseAxis* inverseAxis); 25 28 26 29 virtual ~CAxisAlgorithmInverse() {} 30 31 static bool registerTrans(); 27 32 28 33 protected: … … 31 36 private: 32 37 void updateAxisValue(); 38 39 private: 40 static CGenericAlgorithmTransformation* create(CGrid* gridDst, CGrid* gridSrc, 41 CTransformation<CAxis>* transformation, 42 int elementPositionInGrid, 43 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 44 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 45 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 46 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 47 std::map<int, int>& elementPositionInGridDst2AxisPosition, 48 std::map<int, int>& elementPositionInGridDst2DomainPosition); 33 49 }; 34 50 -
XIOS/trunk/src/transformation/axis_algorithm_reduce_domain.cpp
r918 r933 11 11 #include "axis.hpp" 12 12 #include "domain.hpp" 13 #include "grid.hpp" 14 #include "grid_transformation_factory_impl.hpp" 13 15 14 16 #include "sum.hpp" 15 17 16 18 namespace xios { 19 CGenericAlgorithmTransformation* CAxisAlgorithmReduceDomain::create(CGrid* gridDst, CGrid* gridSrc, 20 CTransformation<CAxis>* transformation, 21 int elementPositionInGrid, 22 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 23 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 24 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 25 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 26 std::map<int, int>& elementPositionInGridDst2AxisPosition, 27 std::map<int, int>& elementPositionInGridDst2DomainPosition) 28 { 29 std::vector<CAxis*> axisListDestP = gridDst->getAxis(); 30 std::vector<CDomain*> domainListSrcP = gridSrc->getDomains(); 31 32 CReduceDomainToAxis* reduceDomain = dynamic_cast<CReduceDomainToAxis*> (transformation); 33 int axisDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid]; 34 int domainSrcIndex = elementPositionInGridSrc2DomainPosition[elementPositionInGrid]; 35 36 return (new CAxisAlgorithmReduceDomain(axisListDestP[axisDstIndex], domainListSrcP[domainSrcIndex], reduceDomain)); 37 } 38 39 bool CAxisAlgorithmReduceDomain::registerTrans() 40 { 41 CGridTransformationFactory<CAxis>::registerTransformation(TRANS_REDUCE_DOMAIN_TO_AXIS, create); 42 } 43 17 44 18 45 CAxisAlgorithmReduceDomain::CAxisAlgorithmReduceDomain(CAxis* axisDestination, CDomain* domainSource, CReduceDomainToAxis* algo) -
XIOS/trunk/src/transformation/axis_algorithm_reduce_domain.hpp
r918 r933 11 11 12 12 #include "axis_algorithm_transformation.hpp" 13 #include "transformation.hpp" 13 14 14 15 namespace xios { … … 36 37 virtual ~CAxisAlgorithmReduceDomain(); 37 38 39 static bool registerTrans(); 38 40 protected: 39 41 enum ReduceDirection { … … 50 52 CReductionAlgorithm* reduction_; 51 53 54 private: 55 static CGenericAlgorithmTransformation* create(CGrid* gridDst, CGrid* gridSrc, 56 CTransformation<CAxis>* transformation, 57 int elementPositionInGrid, 58 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 59 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 60 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 61 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 62 std::map<int, int>& elementPositionInGridDst2AxisPosition, 63 std::map<int, int>& elementPositionInGridDst2DomainPosition); 52 64 }; 53 65 -
XIOS/trunk/src/transformation/axis_algorithm_zoom.cpp
r833 r933 8 8 */ 9 9 #include "axis_algorithm_zoom.hpp" 10 #include "axis.hpp" 11 #include "grid.hpp" 12 #include "grid_transformation_factory_impl.hpp" 13 #include "zoom_axis.hpp" 10 14 11 15 namespace xios { 16 CGenericAlgorithmTransformation* CAxisAlgorithmZoom::create(CGrid* gridDst, CGrid* gridSrc, 17 CTransformation<CAxis>* transformation, 18 int elementPositionInGrid, 19 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 20 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 21 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 22 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 23 std::map<int, int>& elementPositionInGridDst2AxisPosition, 24 std::map<int, int>& elementPositionInGridDst2DomainPosition) 25 { 26 std::vector<CAxis*> axisListDestP = gridDst->getAxis(); 27 std::vector<CAxis*> axisListSrcP = gridSrc->getAxis(); 28 29 CZoomAxis* zoomAxis = dynamic_cast<CZoomAxis*> (transformation); 30 int axisDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid]; 31 int axisSrcIndex = elementPositionInGridSrc2AxisPosition[elementPositionInGrid]; 32 33 return (new CAxisAlgorithmZoom(axisListDestP[axisDstIndex], axisListSrcP[axisSrcIndex], zoomAxis)); 34 } 35 bool CAxisAlgorithmZoom::registerTrans() 36 { 37 CGridTransformationFactory<CAxis>::registerTransformation(TRANS_ZOOM_AXIS, create); 38 } 12 39 13 40 CAxisAlgorithmZoom::CAxisAlgorithmZoom(CAxis* axisDestination, CAxis* axisSource, CZoomAxis* zoomAxis) … … 26 53 << "Zoom size is " << zoomSize_ ); 27 54 } 28 29 // computeIndexSourceMapping();30 55 } 31 56 -
XIOS/trunk/src/transformation/axis_algorithm_zoom.hpp
r827 r933 11 11 12 12 #include "axis_algorithm_transformation.hpp" 13 #include "axis.hpp" 14 #include "zoom_axis.hpp" 13 #include "transformation.hpp" 15 14 16 15 namespace xios { 16 class CAxis; 17 class CZoomAxis; 18 17 19 /*! 18 20 \class CAxisAlgorithmZoom 19 21 Implementing zoom on axis 20 A zoomed region can be considered as region that isn t masked.22 A zoomed region can be considered as region that isn't masked. 21 23 Only this zoomed region is extracted to write on Netcdf. 22 24 */ … … 28 30 virtual ~CAxisAlgorithmZoom() {} 29 31 32 static bool registerTrans(); 30 33 protected: 31 34 void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs); … … 44 47 //! Global zoom size on axis 45 48 StdSize zoomSize_; 49 50 private: 51 52 static CGenericAlgorithmTransformation* create(CGrid* gridDst, CGrid* gridSrc, 53 CTransformation<CAxis>* transformation, 54 int elementPositionInGrid, 55 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 56 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 57 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 58 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 59 std::map<int, int>& elementPositionInGridDst2AxisPosition, 60 std::map<int, int>& elementPositionInGridDst2DomainPosition); 46 61 }; 47 62 -
XIOS/trunk/src/transformation/domain_algorithm_generate_rectilinear.cpp
r827 r933 21 21 : CDomainAlgorithmTransformation(domainDestination, domainSource), nbDomainDistributedPart_(0) 22 22 { 23 type_ = ELEMENT_GENERATION; 23 24 genRectDomain->checkValid(domainDestination); 24 25 if (0 != gridSource) computeDistributionGridSource(gridSource); -
XIOS/trunk/src/transformation/domain_algorithm_interpolate.cpp
r915 r933 16 16 #include "mapper.hpp" 17 17 #include "mpi_tag.hpp" 18 #include "domain.hpp" 19 #include "grid_transformation_factory_impl.hpp" 20 #include "interpolate_domain.hpp" 21 #include "grid.hpp" 18 22 19 23 namespace xios { 24 CGenericAlgorithmTransformation* CDomainAlgorithmInterpolate::create(CGrid* gridDst, CGrid* gridSrc, 25 CTransformation<CDomain>* transformation, 26 int elementPositionInGrid, 27 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 28 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 29 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 30 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 31 std::map<int, int>& elementPositionInGridDst2AxisPosition, 32 std::map<int, int>& elementPositionInGridDst2DomainPosition) 33 { 34 std::vector<CDomain*> domainListDestP = gridDst->getDomains(); 35 std::vector<CDomain*> domainListSrcP = gridSrc->getDomains(); 36 37 CInterpolateDomain* interpolateDomain = dynamic_cast<CInterpolateDomain*> (transformation); 38 int domainDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid]; 39 int domainSrcIndex = elementPositionInGridSrc2AxisPosition[elementPositionInGrid]; 40 41 return (new CDomainAlgorithmInterpolate(domainListDestP[domainDstIndex], domainListSrcP[domainSrcIndex], interpolateDomain)); 42 } 43 44 bool CDomainAlgorithmInterpolate::registerTrans() 45 { 46 CGridTransformationFactory<CDomain>::registerTransformation(TRANS_INTERPOLATE_DOMAIN, create); 47 } 20 48 21 49 CDomainAlgorithmInterpolate::CDomainAlgorithmInterpolate(CDomain* domainDestination, CDomain* domainSource, CInterpolateDomain* interpDomain) -
XIOS/trunk/src/transformation/domain_algorithm_interpolate.hpp
r856 r933 11 11 12 12 #include "domain_algorithm_transformation.hpp" 13 #include "domain.hpp" 14 #include "interpolate_domain.hpp" 13 #include "transformation.hpp" 15 14 16 15 namespace xios { 16 17 class CDomain; 18 class CInterpolateDomain; 19 17 20 /*! 18 21 \class CDomainAlgorithmInterpolate … … 26 29 virtual ~CDomainAlgorithmInterpolate() {} 27 30 31 static bool registerTrans(); 28 32 protected: 29 33 void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs); … … 39 43 CInterpolateDomain* interpDomain_; 40 44 45 private: 46 47 static CGenericAlgorithmTransformation* create(CGrid* gridDst, CGrid* gridSrc, 48 CTransformation<CDomain>* transformation, 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); 41 56 }; 42 57 -
XIOS/trunk/src/transformation/domain_algorithm_zoom.cpp
r833 r933 8 8 */ 9 9 #include "domain_algorithm_zoom.hpp" 10 #include "zoom_domain.hpp" 11 #include "domain.hpp" 12 #include "grid.hpp" 13 #include "grid_transformation_factory_impl.hpp" 10 14 11 15 namespace xios { 16 CGenericAlgorithmTransformation* CDomainAlgorithmZoom::create(CGrid* gridDst, CGrid* gridSrc, 17 CTransformation<CDomain>* transformation, 18 int elementPositionInGrid, 19 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 20 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 21 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 22 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 23 std::map<int, int>& elementPositionInGridDst2AxisPosition, 24 std::map<int, int>& elementPositionInGridDst2DomainPosition) 25 { 26 std::vector<CDomain*> domainListDestP = gridDst->getDomains(); 27 std::vector<CDomain*> domainListSrcP = gridSrc->getDomains(); 28 29 CZoomDomain* zoomDomain = dynamic_cast<CZoomDomain*> (transformation); 30 int domainDstIndex = elementPositionInGridDst2DomainPosition[elementPositionInGrid]; 31 int domainSrcIndex = elementPositionInGridSrc2DomainPosition[elementPositionInGrid]; 32 33 return (new CDomainAlgorithmZoom(domainListDestP[domainDstIndex], domainListSrcP[domainSrcIndex], zoomDomain)); 34 } 35 36 bool CDomainAlgorithmZoom::registerTrans() 37 { 38 CGridTransformationFactory<CDomain>::registerTransformation(TRANS_ZOOM_DOMAIN, create); 39 } 12 40 13 41 CDomainAlgorithmZoom::CDomainAlgorithmZoom(CDomain* domainDestination, CDomain* domainSource, CZoomDomain* zoomDomain) … … 39 67 << "Zoom size is " << zoomNj_ ); 40 68 } 41 42 // computeIndexSourceMapping();43 69 } 44 70 … … 75 101 TransformationWeightMap& transWeight = this->transformationWeight_[0]; 76 102 77 // std::map<int, std::vector<int> >& transMap = this->transformationMapping_;78 // std::map<int, std::vector<double> >& transWeight = this->transformationWeight_;79 103 int domainGlobalIndex; 80 104 for (int j = 0; j < nj; ++j) -
XIOS/trunk/src/transformation/domain_algorithm_zoom.hpp
r827 r933 11 11 12 12 #include "domain_algorithm_transformation.hpp" 13 #include "zoom_domain.hpp" 14 #include "domain.hpp" 13 #include "transformation.hpp" 15 14 16 15 namespace xios { 16 17 class CDomain; 18 class CZoomDomain; 19 17 20 /*! 18 21 \class CDomainAlgorithmZoom … … 28 31 virtual ~CDomainAlgorithmZoom() {} 29 32 33 static bool registerTrans(); 30 34 protected: 31 35 void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs); … … 47 51 int zoomNi_; 48 52 int zoomNj_; 53 54 private: 55 56 static CGenericAlgorithmTransformation* create(CGrid* gridDst, CGrid* gridSrc, 57 CTransformation<CDomain>* transformation, 58 int elementPositionInGrid, 59 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 60 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 61 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 62 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 63 std::map<int, int>& elementPositionInGridDst2AxisPosition, 64 std::map<int, int>& elementPositionInGridDst2DomainPosition); 49 65 }; 50 66 -
XIOS/trunk/src/transformation/generic_algorithm_transformation.cpp
r918 r933 15 15 16 16 CGenericAlgorithmTransformation::CGenericAlgorithmTransformation() 17 : transformationMapping_(), transformationWeight_(), transformationPosition_(), idAuxInputs_() 17 : transformationMapping_(), transformationWeight_(), transformationPosition_(), 18 idAuxInputs_(), type_(ELEMENT_NO_MODIFICATION_WITH_DATA) 18 19 { 19 20 } … … 658 659 } 659 660 660 } 661 CGenericAlgorithmTransformation::AlgoTransType CGenericAlgorithmTransformation::type() 662 { 663 return type_; 664 } 665 666 } -
XIOS/trunk/src/transformation/generic_algorithm_transformation.hpp
r918 r933 23 23 /*! 24 24 \class CGenericAlgorithmTransformation 25 This class defines the interface for all other inher ted algorithms class25 This class defines the interface for all other inherited algorithms class 26 26 */ 27 27 class CGenericAlgorithmTransformation 28 28 { 29 protected:30 typedef std::vector<std::pair<int, std::pair<size_t,double> > > DestinationGlobalIndex;31 29 public: 32 // Stupid global index map, it must be replaced by tuple 30 enum AlgoTransType { 31 ELEMENT_GENERATION = 0, 32 ELEMENT_MODIFICATION_WITHOUT_DATA = 1, 33 ELEMENT_MODIFICATION_WITH_DATA = 2, 34 ELEMENT_NO_MODIFICATION_WITH_DATA = 3, 35 ELEMENT_NO_MODIFICATION_WITHOUT_DATA = 4 36 } ; 37 38 public: 33 39 // Mapping between global index map of DESTINATION and its local index with pair of global index of SOURCE and weights 34 typedef boost::unordered_map<size_t, DestinationGlobalIndex> DestinationIndexMap;35 //36 40 typedef boost::unordered_map<int, boost::unordered_map<size_t, std::vector<std::pair<size_t,double> > > > SourceDestinationIndexMap; 37 41 … … 54 58 55 59 /*! 56 Apply a reductionoperation on local data.60 Apply a operation on local data. 57 61 \param [in] localIndex vector contains local index of local data output and the corresponding weight 58 62 \param [in] dataInput Pointer to the first element of data input array (in form of buffer) … … 67 71 68 72 std::vector<StdString> getIdAuxInputs(); 69 73 AlgoTransType type(); 70 74 /*! 71 75 Compute global index mapping from one element of destination grid to the corresponding element of source grid … … 123 127 //! Id of auxillary inputs which helps doing transformation dynamically 124 128 std::vector<StdString> idAuxInputs_; 129 AlgoTransType type_; 130 125 131 126 132 std::map<int, int> elementPositionInGridSrc2AxisPosition_, elementPositionInGridSrc2DomainPosition_, elementPositionInGridSrc2ScalarPosition_; -
XIOS/trunk/src/transformation/grid_transformation.cpp
r895 r933 8 8 */ 9 9 #include "grid_transformation.hpp" 10 #include "grid_transformation_factory_impl.hpp" 10 11 #include "algo_types.hpp" 11 12 #include "context.hpp" … … 30 31 31 32 /*! 32 Select algorithm of a scalar correspo ding to its transformation type and its position in each element33 Select algorithm of a scalar corresponding to its transformation type and its position in each element 33 34 \param [in] elementPositionInGrid position of element in grid. e.g: a grid has 1 domain and 1 axis, then position of domain is 0 and position of axis is 1 34 35 \param [in] transType transformation type, for now we have … … 37 38 void CGridTransformation::selectScalarAlgo(int elementPositionInGrid, ETranformationType transType, int transformationOrder) 38 39 { 39 int scalarSrcIndex = -1, axisSrcIndex = -1, domainSrcIndex = -1;40 40 std::vector<CScalar*> scaListDestP = gridDestination_->getScalars(); 41 std::vector<CScalar*> scaListSrcP = gridSource_->getScalars();42 std::vector<CAxis*> axisListSrcP = gridSource_->getAxis();43 std::vector<CDomain*> domainListSrcP = gridSource_->getDomains();44 45 41 int scalarDstIndex = elementPositionInGridDst2ScalarPosition_[elementPositionInGrid]; 46 42 CScalar::TransMapTypes trans = scaListDestP[scalarDstIndex]->getAllTransformations(); … … 48 44 49 45 for (int i = 0; i < transformationOrder; ++i, ++it) {} // Find the correct transformation 50 51 CReduceAxisToScalar* reduceAxis = 0;52 46 CGenericAlgorithmTransformation* algo = 0; 53 switch (transType) 54 { 55 case TRANS_REDUCE_AXIS_TO_SCALAR: 56 reduceAxis = dynamic_cast<CReduceAxisToScalar*> (it->second); 57 axisSrcIndex = elementPositionInGridSrc2AxisPosition_[elementPositionInGrid]; 58 algo = new CScalarAlgorithmReduceScalar(scaListDestP[scalarDstIndex], axisListSrcP[axisSrcIndex], reduceAxis); 59 break; 60 default: 61 break; 62 } 47 algo = CGridTransformationFactory<CScalar>::createTransformation(transType, 48 gridDestination_, 49 gridSource_, 50 it->second, 51 elementPositionInGrid, 52 elementPositionInGridSrc2ScalarPosition_, 53 elementPositionInGridSrc2AxisPosition_, 54 elementPositionInGridSrc2DomainPosition_, 55 elementPositionInGridDst2ScalarPosition_, 56 elementPositionInGridDst2AxisPosition_, 57 elementPositionInGridDst2DomainPosition_); 63 58 algoTransformation_.push_back(algo); 64 59 } 65 60 66 61 /*! 67 Select algorithm of an axis correspo ding to its transformation type and its position in each element62 Select algorithm of an axis corresponding to its transformation type and its position in each element 68 63 \param [in] elementPositionInGrid position of element in grid. e.g: a grid has 1 domain and 1 axis, then position of domain is 0 and position of axis is 1 69 64 \param [in] transType transformation type, for now we have zoom_axis, inverse_axis, interpolate_axis … … 72 67 void CGridTransformation::selectAxisAlgo(int elementPositionInGrid, ETranformationType transType, int transformationOrder) 73 68 { 74 int axisSrcIndex = -1, domainSrcIndex = -1;75 69 std::vector<CAxis*> axisListDestP = gridDestination_->getAxis(); 76 std::vector<CAxis*> axisListSrcP = gridSource_->getAxis();77 std::vector<CDomain*> domainListSrcP = gridSource_->getDomains();78 79 70 int axisDstIndex = elementPositionInGridDst2AxisPosition_[elementPositionInGrid]; 80 71 CAxis::TransMapTypes trans = axisListDestP[axisDstIndex]->getAllTransformations(); 81 72 CAxis::TransMapTypes::const_iterator it = trans.begin(); 82 83 73 for (int i = 0; i < transformationOrder; ++i, ++it) {} // Find the correct transformation 84 74 85 CZoomAxis* zoomAxis = 0;86 CInterpolateAxis* interpAxis = 0;87 CReduceDomainToAxis* reduceDomain = 0;88 CExtractDomainToAxis* extractDomain = 0;89 75 CGenericAlgorithmTransformation* algo = 0; 90 switch (transType) 91 { 92 case TRANS_INTERPOLATE_AXIS: 93 interpAxis = dynamic_cast<CInterpolateAxis*> (it->second); 94 axisSrcIndex = elementPositionInGridSrc2AxisPosition_[elementPositionInGrid]; 95 algo = new CAxisAlgorithmInterpolate(axisListDestP[axisDstIndex], axisListSrcP[axisSrcIndex], interpAxis); 96 break; 97 case TRANS_ZOOM_AXIS: 98 zoomAxis = dynamic_cast<CZoomAxis*> (it->second); 99 axisSrcIndex = elementPositionInGridSrc2AxisPosition_[elementPositionInGrid]; 100 algo = new CAxisAlgorithmZoom(axisListDestP[axisDstIndex], axisListSrcP[axisSrcIndex], zoomAxis); 101 break; 102 case TRANS_INVERSE_AXIS: 103 axisSrcIndex = elementPositionInGridSrc2AxisPosition_[elementPositionInGrid]; 104 algo = new CAxisAlgorithmInverse(axisListDestP[axisDstIndex], axisListSrcP[axisSrcIndex]); 105 break; 106 case TRANS_REDUCE_DOMAIN_TO_AXIS: 107 reduceDomain = dynamic_cast<CReduceDomainToAxis*> (it->second); 108 domainSrcIndex = elementPositionInGridSrc2DomainPosition_[elementPositionInGrid]; 109 algo = new CAxisAlgorithmReduceDomain(axisListDestP[axisDstIndex], domainListSrcP[domainSrcIndex], reduceDomain); 110 break; 111 case TRANS_EXTRACT_DOMAIN_TO_AXIS: 112 extractDomain = dynamic_cast<CExtractDomainToAxis*> (it->second); 113 domainSrcIndex = elementPositionInGridSrc2DomainPosition_[elementPositionInGrid]; 114 algo = new CAxisAlgorithmExtractDomain(axisListDestP[axisDstIndex], domainListSrcP[domainSrcIndex], extractDomain); 115 break; 116 default: 117 break; 118 } 76 algo = CGridTransformationFactory<CAxis>::createTransformation(transType, 77 gridDestination_, 78 gridSource_, 79 it->second, 80 elementPositionInGrid, 81 elementPositionInGridSrc2ScalarPosition_, 82 elementPositionInGridSrc2AxisPosition_, 83 elementPositionInGridSrc2DomainPosition_, 84 elementPositionInGridDst2ScalarPosition_, 85 elementPositionInGridDst2AxisPosition_, 86 elementPositionInGridDst2DomainPosition_); 119 87 algoTransformation_.push_back(algo); 120 88 } 121 89 122 90 /*! 123 Select algorithm of a domain correspo ding to its transformation type and its position in each element91 Select algorithm of a domain corresponding to its transformation type and its position in each element 124 92 \param [in] elementPositionInGrid position of element in grid. e.g: a grid has 1 domain and 1 axis, then position of domain is 0 and position of axis is 1 125 93 \param [in] transType transformation type, for now we have zoom_domain, interpolate_domain … … 129 97 { 130 98 std::vector<CDomain*> domainListDestP = gridDestination_->getDomains(); 131 std::vector<CDomain*> domainListSrcP = gridSource_->getDomains();132 133 99 int domainIndex = elementPositionInGridDst2DomainPosition_[elementPositionInGrid]; 134 100 CDomain::TransMapTypes trans = domainListDestP[domainIndex]->getAllTransformations(); 135 101 CDomain::TransMapTypes::const_iterator it = trans.begin(); 136 137 102 for (int i = 0; i < transformationOrder; ++i, ++it) {} // Find the correct transformation 138 103 139 CZoomDomain* zoomDomain = 0;140 CInterpolateDomain* interpFileDomain = 0;141 104 CGenericAlgorithmTransformation* algo = 0; 142 switch (transType) 143 { 144 case TRANS_INTERPOLATE_DOMAIN: 145 interpFileDomain = dynamic_cast<CInterpolateDomain*> (it->second); 146 algo = new CDomainAlgorithmInterpolate(domainListDestP[domainIndex], domainListSrcP[domainIndex],interpFileDomain); 147 break; 148 case TRANS_ZOOM_DOMAIN: 149 zoomDomain = dynamic_cast<CZoomDomain*> (it->second); 150 algo = new CDomainAlgorithmZoom(domainListDestP[domainIndex], domainListSrcP[domainIndex], zoomDomain); 151 break; 152 default: 153 break; 154 } 105 algo = CGridTransformationFactory<CDomain>::createTransformation(transType, 106 gridDestination_, 107 gridSource_, 108 it->second, 109 elementPositionInGrid, 110 elementPositionInGridSrc2ScalarPosition_, 111 elementPositionInGridSrc2AxisPosition_, 112 elementPositionInGridSrc2DomainPosition_, 113 elementPositionInGridDst2ScalarPosition_, 114 elementPositionInGridDst2AxisPosition_, 115 elementPositionInGridDst2DomainPosition_); 155 116 algoTransformation_.push_back(algo); 156 117 } … … 162 123 \param [in] transType transformation type 163 124 */ 164 void CGridTransformation::setUpGridDestination(int elementPositionInGrid, ETranformationType transType, int nbTransformation)125 void CGridTransformation::setUpGridDestination(int elementPositionInGrid, ETranformationType transType, AlgoType algoType) 165 126 { 166 127 if (isSpecialTransformation(transType)) return; … … 184 145 185 146 int scalarIndex = -1, axisIndex = -1, domainIndex = -1; 186 switch (transType) 187 { 188 case TRANS_INTERPOLATE_DOMAIN: 189 case TRANS_ZOOM_DOMAIN: 147 switch (algoType) 148 { 149 case domainType: 190 150 domainIndex = elementPositionInGridDst2DomainPosition_[elementPositionInGrid]; 191 151 break; 192 193 case TRANS_INTERPOLATE_AXIS: 194 case TRANS_ZOOM_AXIS: 195 case TRANS_INVERSE_AXIS: 196 case TRANS_REDUCE_DOMAIN_TO_AXIS: 197 case TRANS_EXTRACT_DOMAIN_TO_AXIS: 152 case axisType: 198 153 axisIndex = elementPositionInGridDst2AxisPosition_[elementPositionInGrid]; 199 154 break; 200 201 case TRANS_REDUCE_AXIS_TO_SCALAR: 155 case scalarType: 202 156 scalarIndex = elementPositionInGridDst2ScalarPosition_[elementPositionInGrid]; 203 157 break; … … 244 198 \param [in] transType transformation type 245 199 */ 246 void CGridTransformation::setUpGridSource(int elementPositionInGrid, ETranformationType transType, int nbTransformation)200 void CGridTransformation::setUpGridSource(int elementPositionInGrid, AlgoType algoType) 247 201 { 248 202 if (!tempGridSrcs_.empty() && (getNbAlgo()-1) == tempGridSrcs_.size()) … … 264 218 int axisIndex = -1, domainIndex = -1, scalarIndex = -1; 265 219 int axisListIndex = 0, domainListIndex = 0, scalarListIndex = 0; 266 switch (transType) 267 { 268 case TRANS_INTERPOLATE_DOMAIN: 269 case TRANS_ZOOM_DOMAIN: 220 switch (algoType) 221 { 222 case domainType: 270 223 domainIndex = elementPositionInGridDst2DomainPosition_[elementPositionInGrid]; 271 224 break; 272 273 case TRANS_INTERPOLATE_AXIS: 274 case TRANS_ZOOM_AXIS: 275 case TRANS_INVERSE_AXIS: 276 case TRANS_REDUCE_DOMAIN_TO_AXIS: 277 case TRANS_EXTRACT_DOMAIN_TO_AXIS: 225 case axisType: 278 226 axisIndex = elementPositionInGridDst2AxisPosition_[elementPositionInGrid]; 279 227 break; 280 281 case TRANS_REDUCE_AXIS_TO_SCALAR: 228 case scalarType: 282 229 scalarIndex = elementPositionInGridDst2ScalarPosition_[elementPositionInGrid]; 283 230 break; … … 378 325 int transformationOrder = (it->second).second; 379 326 SourceDestinationIndexMap globaIndexWeightFromSrcToDst; 327 AlgoType algoType = algoTypes_[std::distance(itb, it)]; 380 328 381 329 // Create a temporary grid destination which contains transformed element of grid destination and 382 // non-transformed elements fo grid source383 setUpGridDestination(elementPositionInGrid, transType, nbAgloTransformation);330 // non-transformed elements to grid source 331 setUpGridDestination(elementPositionInGrid, transType, algoType); 384 332 385 333 // First of all, select an algorithm 386 334 if (!dynamicalTransformation_ || (algoTransformation_.size() < listAlgos_.size())) 387 335 { 388 selectAlgo(elementPositionInGrid, transType, transformationOrder, algoType s_[std::distance(itb, it)]);336 selectAlgo(elementPositionInGrid, transType, transformationOrder, algoType); 389 337 algo = algoTransformation_.back(); 390 338 } … … 392 340 algo = algoTransformation_[std::distance(itb, it)]; 393 341 394 if ( 0 != algo) // Only registered transformation can be executed342 if ((0 != algo) && (CGenericAlgorithmTransformation::ELEMENT_NO_MODIFICATION_WITH_DATA == algo->type())) // Only registered transformation can be executed 395 343 { 396 344 algo->computeIndexSourceMapping(dataAuxInputs); … … 409 357 { 410 358 // Now grid destination becomes grid source in a new transformation 411 if (nbAgloTransformation != (nbNormalAlgos_-1)) setUpGridSource(elementPositionInGrid, transType, nbAgloTransformation);359 if (nbAgloTransformation != (nbNormalAlgos_-1)) setUpGridSource(elementPositionInGrid, algoType); 412 360 } 413 361 ++nbAgloTransformation; -
XIOS/trunk/src/transformation/grid_transformation.hpp
r887 r933 37 37 typedef std::map<int,std::vector<std::pair<int,double> > > RecvIndexGridDestinationMap; 38 38 typedef CGenericAlgorithmTransformation::SourceDestinationIndexMap SourceDestinationIndexMap; 39 typedef CGenericAlgorithmTransformation::AlgoTransType AlgoTransType; 39 40 40 41 public: … … 60 61 virtual void selectDomainAlgo(int elementPositionInGrid, ETranformationType transType, int transformationOrder); 61 62 62 void setUpGridSource(int elementPositionInGrid, ETranformationType transType, int nbTransformation);63 void setUpGridDestination(int elementPositionInGrid, ETranformationType transType, int nbTransformation);63 void setUpGridSource(int elementPositionInGrid, AlgoType); 64 void setUpGridDestination(int elementPositionInGrid, ETranformationType, AlgoType); 64 65 void computeTransformationMapping(const SourceDestinationIndexMap& globalIndexWeightFromSrcToDest); 65 66 … … 71 72 72 73 protected: 73 //! Mapping of (grid) global index representing tran formation.74 //! Mapping of (grid) global index representing transformation. 74 75 std::map<size_t, std::set<size_t> > globaIndexMapFromDestToSource_; 75 76 -
XIOS/trunk/src/transformation/grid_transformation_selector.cpp
r897 r933 9 9 #include "grid_transformation_selector.hpp" 10 10 #include "grid.hpp" 11 //#include <boost/unordered_map.hpp> 11 #include "algo_types.hpp" 12 12 13 13 namespace xios { … … 27 27 << "Number of elements of grid source " <<gridSource_->getId() << " is " << gridSource_->axis_domain_order.numElements() << std::endl 28 28 << "Number of elements of grid destination " <<gridDestination_->getId() << " is " << numElement); 29 registerTransformations(); 29 30 initializeTransformations(type); 30 31 } … … 306 307 } 307 308 308 } 309 310 void CGridTransformationSelector::registerTransformations() 311 { 312 //! Scalar 313 CScalarAlgorithmReduceScalar::registerTrans(); 314 315 //! Axis 316 CAxisAlgorithmZoom::registerTrans(); 317 CAxisAlgorithmExtractDomain::registerTrans(); 318 CAxisAlgorithmInterpolate::registerTrans(); 319 CAxisAlgorithmInverse::registerTrans(); 320 CAxisAlgorithmReduceDomain::registerTrans(); 321 322 //! Domain 323 // CDomainAlgorithmComputeConnectivity::registerTrans(); 324 CDomainAlgorithmInterpolate::registerTrans(); 325 CDomainAlgorithmZoom::registerTrans(); 326 327 } 328 329 } -
XIOS/trunk/src/transformation/grid_transformation_selector.hpp
r897 r933 22 22 /*! 23 23 \class CGridTransformationSelector 24 This class is a helper class to chose a algorithm (transformation) from the al ogrithm list of24 This class is a helper class to chose a algorithm (transformation) from the algorithm list of 25 25 specific grid. 26 26 */ … … 57 57 void selectAlgo(int elementPositionInGrid, ETranformationType transType, int transformationOrder, AlgoType algo); 58 58 bool isSpecialTransformation(ETranformationType transType); 59 void registerTransformations(); 59 60 60 61 protected: -
XIOS/trunk/src/transformation/scalar_algorithm_reduce_axis.cpp
r918 r933 12 12 #include "reduce_axis_to_scalar.hpp" 13 13 #include "sum.hpp" 14 #include "grid.hpp" 15 #include "grid_transformation_factory_impl.hpp" 14 16 15 17 namespace xios { 18 CGenericAlgorithmTransformation* CScalarAlgorithmReduceScalar::create(CGrid* gridDst, CGrid* gridSrc, 19 CTransformation<CScalar>* transformation, 20 int elementPositionInGrid, 21 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 22 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 23 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 24 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 25 std::map<int, int>& elementPositionInGridDst2AxisPosition, 26 std::map<int, int>& elementPositionInGridDst2DomainPosition) 27 { 28 std::vector<CScalar*> scalarListDestP = gridDst->getScalars(); 29 std::vector<CAxis*> axisListSrcP = gridSrc->getAxis(); 30 31 CReduceAxisToScalar* reduceAxis = dynamic_cast<CReduceAxisToScalar*> (transformation); 32 int scalarDstIndex = elementPositionInGridDst2ScalarPosition[elementPositionInGrid]; 33 int axisSrcIndex = elementPositionInGridSrc2AxisPosition[elementPositionInGrid]; 34 35 return (new CScalarAlgorithmReduceScalar(scalarListDestP[scalarDstIndex], axisListSrcP[axisSrcIndex], reduceAxis)); 36 } 37 38 bool CScalarAlgorithmReduceScalar::registerTrans() 39 { 40 CGridTransformationFactory<CScalar>::registerTransformation(TRANS_REDUCE_AXIS_TO_SCALAR, create); 41 } 16 42 17 43 CScalarAlgorithmReduceScalar::CScalarAlgorithmReduceScalar(CScalar* scalarDestination, CAxis* axisSource, CReduceAxisToScalar* algo) -
XIOS/trunk/src/transformation/scalar_algorithm_reduce_axis.hpp
r918 r933 11 11 12 12 #include "scalar_algorithm_transformation.hpp" 13 #include "transformation.hpp" 13 14 14 15 namespace xios { … … 21 22 /*! 22 23 \class CScalarAlgorithmReduceScalar 23 Inversing an axis to a scalar24 Reducing an axis to a scalar 24 25 */ 25 26 class CScalarAlgorithmReduceScalar : public CScalarAlgorithmTransformation … … 36 37 virtual ~CScalarAlgorithmReduceScalar(); 37 38 39 static bool registerTrans(); 38 40 protected: 39 41 void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs); … … 42 44 CReductionAlgorithm* reduction_; 43 45 46 private: 47 48 static CGenericAlgorithmTransformation* create(CGrid* gridDst, CGrid* gridSrc, 49 CTransformation<CScalar>* transformation, 50 int elementPositionInGrid, 51 std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 52 std::map<int, int>& elementPositionInGridSrc2AxisPosition, 53 std::map<int, int>& elementPositionInGridSrc2DomainPosition, 54 std::map<int, int>& elementPositionInGridDst2ScalarPosition, 55 std::map<int, int>& elementPositionInGridDst2AxisPosition, 56 std::map<int, int>& elementPositionInGridDst2DomainPosition); 44 57 }; 45 58
Note: See TracChangeset
for help on using the changeset viewer.