source: XIOS3/dev/XIOS_ATTACHED/src/transformation/domain_algorithm/domain_algorithm_redistribute.cpp @ 2460

Last change on this file since 2460 was 2460, checked in by ymipsl, 17 months ago

Squeletton to had new transformations : redistribute_domain, redistribute_axis, redistribute_scalar

YM

  • Property svn:executable set to *
File size: 2.5 KB
Line 
1/*!
2   \file domain_algorithm_redistribute.cpp
3   \brief Algorithm for redistribute a domain.
4 */
5#include "domain_algorithm_redistribute.hpp"
6#include "redistribute_domain.hpp"
7#include "domain.hpp"
8#include "grid.hpp"
9#include "grid_transformation_factory_impl.hpp"
10
11namespace xios
12{
13
14  shared_ptr<CGenericAlgorithmTransformation> CDomainAlgorithmRedistribute::create(bool isSource, CGrid* gridDst, CGrid* gridSrc,
15                                                               CTransformation<CDomain>* 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<CDomain*> domainListDestP = gridDst->getDomains();
26    std::vector<CDomain*> domainListSrcP  = gridSrc->getDomains();
27
28    CRedistributeDomain* redistributeDomain = dynamic_cast<CRedistributeDomain*> (transformation);
29    int domainDstIndex = elementPositionInGridDst2DomainPosition[elementPositionInGrid];
30    int domainSrcIndex = elementPositionInGridSrc2DomainPosition[elementPositionInGrid];
31
32    return make_shared<CDomainAlgorithmRedistribute>(isSource, domainListDestP[domainDstIndex], domainListSrcP[domainSrcIndex], redistributeDomain);
33  }
34  CATCH
35
36  bool CDomainAlgorithmRedistribute::dummyRegistered_ = CDomainAlgorithmRedistribute::registerTrans();
37  bool CDomainAlgorithmRedistribute::registerTrans()
38  TRY
39  {
40    return CGridTransformationFactory<CDomain>::registerTransformation(TRANS_REDISTRIBUTE_DOMAIN, create);
41  }
42  CATCH
43
44  CDomainAlgorithmRedistribute::CDomainAlgorithmRedistribute(bool isSource, CDomain* domainDestination, CDomain* domainSource, CRedistributeDomain* redistributeDomain)
45  : CAlgorithmTransformationTransfer(isSource)
46  TRY
47  {
48
49
50    domainDestination->checkAttributes() ;
51  }
52  CATCH
53
54
55}
Note: See TracBrowser for help on using the repository browser.