source: XIOS/trunk/src/transformation/domain_algorithm_expand.cpp @ 935

Last change on this file since 935 was 935, checked in by mhnguyen, 8 years ago

Adding interface for expand_domain

File size: 2.6 KB
Line 
1/*!
2   \file domain_algorithm_expand.cpp
3   \author Ha NGUYEN
4   \since 08 Aug 2016
5   \date 08 Aug 2016
6
7   \brief Algorithm for expand on an domain.
8 */
9#include "domain_algorithm_expand.hpp"
10#include "expand_domain.hpp"
11#include "mesh.hpp"
12#include "domain.hpp"
13#include "grid.hpp"
14#include "grid_transformation_factory_impl.hpp"
15
16namespace xios {
17CGenericAlgorithmTransformation* CDomainAlgorithmExpand::create(CGrid* gridDst, CGrid* gridSrc,
18                                                               CTransformation<CDomain>* transformation,
19                                                               int elementPositionInGrid,
20                                                               std::map<int, int>& elementPositionInGridSrc2ScalarPosition,
21                                                               std::map<int, int>& elementPositionInGridSrc2AxisPosition,
22                                                               std::map<int, int>& elementPositionInGridSrc2DomainPosition,
23                                                               std::map<int, int>& elementPositionInGridDst2ScalarPosition,
24                                                               std::map<int, int>& elementPositionInGridDst2AxisPosition,
25                                                               std::map<int, int>& elementPositionInGridDst2DomainPosition)
26{
27  std::vector<CDomain*> domainListDestP = gridDst->getDomains();
28  std::vector<CDomain*> domainListSrcP  = gridSrc->getDomains();
29
30  CExpandDomain* expandDomain = dynamic_cast<CExpandDomain*> (transformation);
31  int domainDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid];
32  int domainSrcIndex = elementPositionInGridSrc2AxisPosition[elementPositionInGrid];
33
34  return (new CDomainAlgorithmExpand(domainListDestP[domainDstIndex], domainListSrcP[domainSrcIndex], expandDomain));
35}
36
37bool CDomainAlgorithmExpand::registerTrans()
38{
39  CGridTransformationFactory<CDomain>::registerTransformation(TRANS_EXPAND_DOMAIN, create);
40}
41
42CDomainAlgorithmExpand::CDomainAlgorithmExpand(CDomain* domainDestination,
43                                               CDomain* domainSource,
44                                               CExpandDomain* expandDomain)
45: CDomainAlgorithmTransformation(domainDestination, domainSource)
46{
47  this->type_ = (ELEMENT_MODIFICATION_WITH_DATA);
48  expandDomain->checkValid(domainDestination);
49}
50
51/*!
52  Compute the index mapping between domain on grid source and one on grid destination
53*/
54void CDomainAlgorithmExpand::computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs)
55{
56
57}
58
59}
Note: See TracBrowser for help on using the repository browser.