23 CExtractDomainToAxis* extractDomain = CExtractDomainToAxisGroup::get(
"extract_domain_to_axis_definition")->createChild(
id);
24 if (node) extractDomain->
parse(*node);
43 if (CDomain::type_attr::unstructured == domainSrc->type)
44 ERROR(
"CExtractDomainToAxis::checkValid(CAxis* axisDst, CDomain* domainSrc)",
45 <<
"Domain reduction is only supported for rectilinear or curvillinear grid."
46 <<
"Domain source " <<domainSrc->
getId() << std::endl
47 <<
"Axis destination " << axisDst->
getId());
49 int axis_n_glo = axisDst->n_glo;
50 int domain_ni_glo = domainSrc->ni_glo;
51 int domain_nj_glo = domainSrc->nj_glo;
53 if (this->direction.isEmpty())
54 ERROR(
"CExtractDomainToAxis::checkValid(CAxis* axisDst, CDomain* domainSrc)",
55 <<
"A direction to apply the operation must be defined. It should be: 'iDir' or 'jDir'"
56 <<
"Domain source " <<domainSrc->
getId() << std::endl
57 <<
"Axis destination " << axisDst->
getId());
59 if (this->position.isEmpty())
60 ERROR(
"CExtractDomainToAxis::checkValid(CAxis* axisDst, CDomain* domainSrc)",
61 <<
"Position to extract axis must be defined. " << std::endl
62 <<
"Domain source " <<domainSrc->
getId() << std::endl
63 <<
"Axis destination " << axisDst->
getId());
67 case direction_attr::jDir:
68 if (axis_n_glo != domain_ni_glo)
69 ERROR(
"CExtractDomainToAxis::checkValid(CAxis* axisDst, CDomain* domainSrc)",
70 <<
"Extract domain along j, axis destination should have n_glo equal to ni_glo of domain source"
71 <<
"Domain source " <<domainSrc->
getId() <<
" has nj_glo " << domain_ni_glo << std::endl
72 <<
"Axis destination " << axisDst->
getId() <<
" has n_glo " << axis_n_glo);
73 if ((position < 0) || (position > domain_ni_glo))
74 ERROR(
"CExtractDomainToAxis::checkValid(CAxis* axisDst, CDomain* domainSrc)",
75 <<
"Extract domain along j, position should be inside 0 and ni_glo of domain source"
76 <<
"Domain source " <<domainSrc->
getId() <<
" has nj_glo " << domain_ni_glo << std::endl
77 <<
"Axis destination " << axisDst->
getId() << std::endl
78 <<
"Position " << position);
81 case direction_attr::iDir:
82 if (axis_n_glo != domain_nj_glo)
83 ERROR(
"CExtractDomainToAxis::checkValid(CAxis* axisDst, CDomain* domainSrc)",
84 <<
"Extract domain along i, axis destination should have n_glo equal to nj_glo of domain source"
85 <<
"Domain source " <<domainSrc->
getId() <<
" has nj_glo " << domain_nj_glo << std::endl
86 <<
"Axis destination " << axisDst->
getId() <<
" has n_glo " << axis_n_glo);
87 if ((position < 0) || (position > domain_nj_glo))
88 ERROR(
"CExtractDomainToAxis::checkValid(CAxis* axisDst, CDomain* domainSrc)",
89 <<
"Extract domain along i, position should be inside 0 and nj_glo of domain source"
90 <<
"Domain source " <<domainSrc->
getId() <<
" has nj_glo " << domain_ni_glo << std::endl
91 <<
"Axis destination " << axisDst->
getId() << std::endl
92 <<
"Position " << position);
static StdString GetName(void)
Accesseurs statiques ///.
static bool _dummyRegistered
const StdString & getId(void) const
Accesseurs ///.
CExtractDomainToAxis(void)
Constructeurs ///.
virtual ~CExtractDomainToAxis(void)
Destructeur ///.
static StdString GetDefName(void)
CATCH CScalarAlgorithmReduceScalar::CScalarAlgorithmReduceScalar(CScalar *scalarDestination, CScalar *scalarSource, CReduceScalarToScalar *algo ERROR)("CScalarAlgorithmReduceScalar::CScalarAlgorithmReduceScalar(CScalar* scalarDestination, CScalar* scalarSource, CReduceScalarToScalar* algo)",<< "Operation must be defined."<< "Scalar source "<< scalarSource->getId()<< std::endl<< "Scalar destination "<< scalarDestination->getId())
////////////////////// Déclarations ////////////////////// ///
static CTransformation< CAxis > * create(const StdString &id, xml::CXMLNode *node)
virtual void parse(xml::CXMLNode &node)
static bool registerTrans()
enum xios::_node_type ENodeType
////////////////////// Définitions ////////////////////// ///
virtual void checkValid(CAxis *axisDst, CDomain *domainSrc)
static ENodeType GetType(void)