source: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/expand_domain.cpp @ 2130

Last change on this file since 2130 was 2011, checked in by ymipsl, 3 years ago
  • bug fix when createing mask on server side when overlapping grid
  • implement axis interpolation on pressure coordinate
  • big cleaning in transformation

YM

File size: 3.1 KB
Line 
1#include "expand_domain.hpp"
2#include "domain_algorithm_expand.hpp"
3#include "type.hpp"
4
5namespace xios {
6
7  /// ////////////////////// Définitions ////////////////////// ///
8
9  CExpandDomain::CExpandDomain(void)
10    : CObjectTemplate<CExpandDomain>(), CExpandDomainAttributes(), CTransformation<CDomain>()
11  { /* Ne rien faire de plus */ }
12
13  CExpandDomain::CExpandDomain(const StdString & id)
14    : CObjectTemplate<CExpandDomain>(id), CExpandDomainAttributes(), CTransformation<CDomain>()
15  { /* Ne rien faire de plus */ }
16
17  CExpandDomain::~CExpandDomain(void)
18  {}
19
20  CTransformation<CDomain>* CExpandDomain::create(const StdString& id, xml::CXMLNode* node)
21  {
22    CExpandDomain* expandDomain = CExpandDomainGroup::get("expand_domain_definition")->createChild(id);
23    if (node) expandDomain->parse(*node);
24    return static_cast<CTransformation<CDomain>*>(expandDomain);
25  }
26
27  bool CExpandDomain::_dummyRegistered = CExpandDomain::registerTrans();
28  bool CExpandDomain::registerTrans()
29  {
30    registerTransformation(TRANS_EXPAND_DOMAIN, {create, getTransformation});
31  }
32
33  //----------------------------------------------------------------
34
35  StdString CExpandDomain::GetName(void)    { return StdString("expand_domain"); }
36  StdString CExpandDomain::GetDefName(void) { return StdString("expand_domain"); }
37  ENodeType CExpandDomain::GetType(void)    { return eExpandDomain; }
38
39  void CExpandDomain::checkValid(CDomain* domainDst)
40  {
41    // if (CDomain::type_attr::unstructured != domainDst->type)
42    // {
43    //   ERROR("CExpandDomain::checkValid(CDomain* domainDst)",
44    //         << "Domain extension is only supported for unstructured" << std::endl
45    //         << "Check type of domain destination, id = " << domainDst->getId());
46    // }
47
48    if (this->type.isEmpty()) this->type.setValue(CExpandDomain::type_attr::edge);
49  }
50 
51  CGenericAlgorithmTransformation* CExpandDomain::createAlgorithm(bool isSource,
52                                                        CGrid* gridDst, CGrid* gridSrc,
53                                                        int elementPositionInGrid,
54                                                        std::map<int, int>& elementPositionInGridSrc2ScalarPosition,
55                                                        std::map<int, int>& elementPositionInGridSrc2AxisPosition,
56                                                        std::map<int, int>& elementPositionInGridSrc2DomainPosition,
57                                                        std::map<int, int>& elementPositionInGridDst2ScalarPosition,
58                                                        std::map<int, int>& elementPositionInGridDst2AxisPosition,
59                                                        std::map<int, int>& elementPositionInGridDst2DomainPosition)
60  {
61    return CDomainAlgorithmExpand::create(isSource, gridDst,  gridSrc, this, elementPositionInGrid,
62                       elementPositionInGridSrc2ScalarPosition, elementPositionInGridSrc2AxisPosition, elementPositionInGridSrc2DomainPosition,
63                       elementPositionInGridDst2ScalarPosition, elementPositionInGridDst2AxisPosition, elementPositionInGridDst2DomainPosition) ;
64  }
65}
Note: See TracBrowser for help on using the repository browser.