source: XIOS3/branches/xios-3.0-beta/src/node/compute_connectivity_domain.cpp @ 2423

Last change on this file since 2423 was 2270, checked in by ymipsl, 2 years ago

Tracking memory leak :
Tranformations and algorithms are now managed with shared_ptr.

YM

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