Changeset 631 for XIOS/trunk/src/node
- Timestamp:
- 07/07/15 10:46:33 (9 years ago)
- Location:
- XIOS/trunk/src/node
- Files:
-
- 2 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/node/axis.cpp
r630 r631 104 104 // << "The array \'value\' of axis [ id = '" << getId() << "' , context = '" << CObjectFactory::GetCurrentContextId() << "' ] has a different size that the one defined by the \'size\' attribute"); 105 105 106 if (0 == global_zoom_size) global_zoom_size = size; 106 107 107 this->checkData(); 108 108 this->checkMask(); 109 //this->checkZoom();109 this->checkZoom(); 110 110 111 111 if (!bounds.isEmpty()) … … 138 138 } 139 139 140 // void CAxis::checkZoom(void) 141 // { 142 // StdSize zoom_begin,zoom_end, zoom_size, axisSize; 143 // 144 // zoom_begin = (this->zoom_begin.isEmpty()) ? 0 : this->zoom_begin.getValue() ; 145 // zoom_size = (this->zoom_size.isEmpty()) ? size.getValue() : this->zoom_size.getValue() ; 146 // zoom_end = (this->zoom_end.isEmpty()) ? (size.getValue() - 1) : this->zoom_end.getValue() ; 147 // 148 // if (this->zoom_begin.isEmpty()) zoom_begin=zoom_end-zoom_size+1 ; 149 // if (this->zoom_end.isEmpty()) zoom_end=zoom_begin+zoom_size-1 ; 150 // if (this->zoom_size.isEmpty()) zoom_size=zoom_end-zoom_begin+1 ; 151 // axisSize = size.getValue(); 152 // 153 // if ( (zoom_begin < 0) || (zoom_begin > axisSize-1) || (zoom_end<0) || (zoom_end>axisSize-1) || (zoom_size<1) || (zoom_size>axisSize) || (zoom_begin>zoom_end)) 154 // ERROR("CAxis::checkAttributes(void)", 155 // << "One or more attributes among <zoom_begin>, <zoom_end>, <zoom_size> of axis [ id = '" << getId() << "' , context = '" << CObjectFactory::GetCurrentContextId() << "' ] are not well specified"); 156 // 157 // this->zoom_begin.setValue(zoom_begin) ; 158 // this->zoom_end.setValue(zoom_end) ; 159 // this->zoom_size.setValue(zoom_size) ; 160 // } 140 void CAxis::checkZoom(void) 141 { 142 if (0 == global_zoom_size) global_zoom_size = this->size.getValue(); 143 } 161 144 162 145 void CAxis::checkMask() -
XIOS/trunk/src/node/axis.hpp
r630 r631 105 105 void checkData(); 106 106 void checkMask(); 107 //void checkZoom();107 void checkZoom(); 108 108 void checkTransformations(); 109 109 void computeServerIndex(const std::vector<int>& globalDim, int orderPositionInGrid, -
XIOS/trunk/src/node/domain.cpp
r622 r631 16 16 #include "server_distribution_description.hpp" 17 17 #include "client_server_mapping_distributed.hpp" 18 #include "zoom_domain.hpp" 18 19 19 20 namespace xios { … … 547 548 548 549 // compute client zoom indices 549 550 int zoom_iend=zoom_ibegin+zoom_ni-1 ; 551 zoom_ibegin_client = ibegin_client > zoom_ibegin ? ibegin_client : zoom_ibegin ; 552 zoom_iend_client = iend_client < zoom_iend ? iend_client : zoom_iend ; 550 // compute client zoom indices 551 if (0 == global_zoom_ni) global_zoom_ni = ni_glo; 552 if (0 == global_zoom_nj) global_zoom_nj = nj_glo; 553 554 int global_zoom_iend=global_zoom_ibegin+global_zoom_ni-1 ; 555 zoom_ibegin_client = ibegin_client > global_zoom_ibegin ? ibegin_client : global_zoom_ibegin ; 556 zoom_iend_client = iend_client < global_zoom_iend ? iend_client : global_zoom_iend ; 553 557 zoom_ni_client=zoom_iend_client-zoom_ibegin_client+1 ; 554 558 if (zoom_ni_client<0) zoom_ni_client=0 ; 555 559 556 560 557 int zoom_jend=zoom_jbegin+zoom_nj-1 ;558 zoom_jbegin_client = jbegin_client > zoom_jbegin ? jbegin_client :zoom_jbegin ;559 zoom_jend_client = jend_client < zoom_jend ? jend_client :zoom_jend ;561 int global_zoom_jend=global_zoom_jbegin+global_zoom_nj-1 ; 562 zoom_jbegin_client = jbegin_client > global_zoom_jbegin ? jbegin_client : global_zoom_jbegin ; 563 zoom_jend_client = jend_client < global_zoom_jend ? jend_client : global_zoom_jend ; 560 564 zoom_nj_client=zoom_jend_client-zoom_jbegin_client+1 ; 561 565 if (zoom_nj_client<0) zoom_nj_client=0 ; 566 567 // int zoom_iend=zoom_ibegin+zoom_ni-1 ; 568 // zoom_ibegin_client = ibegin_client > zoom_ibegin ? ibegin_client : zoom_ibegin ; 569 // zoom_iend_client = iend_client < zoom_iend ? iend_client : zoom_iend ; 570 // zoom_ni_client=zoom_iend_client-zoom_ibegin_client+1 ; 571 // if (zoom_ni_client<0) zoom_ni_client=0 ; 572 // 573 // 574 // int zoom_jend=zoom_jbegin+zoom_nj-1 ; 575 // zoom_jbegin_client = jbegin_client > zoom_jbegin ? jbegin_client : zoom_jbegin ; 576 // zoom_jend_client = jend_client < zoom_jend ? jend_client : zoom_jend ; 577 // zoom_nj_client=zoom_jend_client-zoom_jbegin_client+1 ; 578 // if (zoom_nj_client<0) zoom_nj_client=0 ; 562 579 563 580 } … … 598 615 599 616 this->checkDomain(); 600 this->checkZoom();617 // this->checkZoom(); 601 618 this->checkBounds(); 602 619 this->checkArea(); … … 607 624 this->checkDomainData(); 608 625 this->checkCompression(); 609 this->completeLonLatClient();610 this->computeConnectedServer() ;626 // this->completeLonLatClient(); 627 // this->computeConnectedServer() ; 611 628 } 612 629 else … … 625 642 CContext* context=CContext::getCurrent() ; 626 643 644 this->checkZoom(); 627 645 if (this->isChecked) return; 628 646 if (context->hasClient) 629 647 { 648 this->computeConnectedServer(); 649 this->completeLonLatClient(); 650 630 651 sendServerAttribut() ; 631 652 sendLonLatArea() ; … … 703 724 msg << this->getId() ; 704 725 msg << ni_srv << ibegin_srv << iend_srv << nj_srv << jbegin_srv << jend_srv; 726 msg << global_zoom_ni << global_zoom_ibegin << global_zoom_nj << global_zoom_jbegin; 705 727 706 728 event.push(*itRank,1,msg); … … 722 744 723 745 int i,j,i_ind,j_ind ; 724 int zoom_iend= zoom_ibegin+zoom_ni-1 ;725 int zoom_jend= zoom_jbegin+zoom_nj-1 ;746 int zoom_iend=global_zoom_ibegin+global_zoom_ni-1 ; 747 int zoom_jend=global_zoom_jbegin+global_zoom_nj-1 ; 726 748 727 749 // Precompute number of index … … 733 755 j_ind=jbegin+j_index(i,j) ; 734 756 735 if (i_ind >= zoom_ibegin && i_ind <= zoom_iend && j_ind >=zoom_jbegin && j_ind <= zoom_jend)757 if (i_ind >= global_zoom_ibegin && i_ind <= zoom_iend && j_ind >= global_zoom_jbegin && j_ind <= zoom_jend) 736 758 { 737 759 ++globalIndexCountZoom; … … 755 777 globalIndexDomain(globalIndexCount) = globalIndex; 756 778 ++globalIndexCount; 757 if (i_ind >= zoom_ibegin && i_ind <= zoom_iend && j_ind >=zoom_jbegin && j_ind <= zoom_jend)779 if (i_ind >= global_zoom_ibegin && i_ind <= zoom_iend && j_ind >= global_zoom_jbegin && j_ind <= zoom_jend) 758 780 { 759 781 globalIndexDomainZoom(globalIndexCountZoom) = globalIndex; … … 976 998 void CDomain::recvServerAttribut(CBufferIn& buffer) 977 999 { 978 int zoom_iend = zoom_ibegin.getValue() + zoom_ni.getValue() - 1; 979 int zoom_jend = zoom_jbegin.getValue() + zoom_nj.getValue() - 1; 980 981 buffer >> ni_srv >> ibegin_srv >> iend_srv >> nj_srv >> jbegin_srv >> jend_srv; 982 983 zoom_ibegin_srv = zoom_ibegin.getValue() > ibegin_srv ? zoom_ibegin.getValue() : ibegin_srv ; 1000 buffer >> ni_srv >> ibegin_srv >> iend_srv >> nj_srv >> jbegin_srv >> jend_srv 1001 >> global_zoom_ni >> global_zoom_ibegin >> global_zoom_nj >> global_zoom_jbegin; 1002 1003 int zoom_iend = global_zoom_ibegin + global_zoom_ni - 1; 1004 int zoom_jend = global_zoom_jbegin + global_zoom_nj - 1; 1005 1006 zoom_ibegin_srv = global_zoom_ibegin > ibegin_srv ? global_zoom_ibegin : ibegin_srv ; 984 1007 zoom_iend_srv = zoom_iend < iend_srv ? zoom_iend : iend_srv ; 985 1008 zoom_ni_srv=zoom_iend_srv-zoom_ibegin_srv+1 ; 986 1009 987 zoom_jbegin_srv = zoom_jbegin.getValue() > jbegin_srv ? zoom_jbegin.getValue(): jbegin_srv ;1010 zoom_jbegin_srv = global_zoom_jbegin > jbegin_srv ? global_zoom_jbegin : jbegin_srv ; 988 1011 zoom_jend_srv = zoom_jend < jend_srv ? zoom_jend : jend_srv ; 989 1012 zoom_nj_srv=zoom_jend_srv-zoom_jbegin_srv+1 ; … … 1127 1150 } 1128 1151 1152 bool CDomain::hasTransformation() 1153 { 1154 return (!transformationMap_.empty()); 1155 } 1156 1157 void CDomain::setTransformations(const TransMapTypes& domTrans) 1158 { 1159 transformationMap_ = domTrans; 1160 } 1161 1162 CDomain::TransMapTypes CDomain::getAllTransformations(void) 1163 { 1164 return transformationMap_; 1165 } 1166 1167 /*! 1168 Check the validity of all transformations applied on domain 1169 This functions is called AFTER all inherited attributes are solved 1170 */ 1171 void CDomain::checkTransformations() 1172 { 1173 TransMapTypes::const_iterator itb = transformationMap_.begin(), it, 1174 ite = transformationMap_.end(); 1175 for (it = itb; it != ite; ++it) 1176 { 1177 (it->second)->checkValid(this); 1178 } 1179 } 1180 1181 void CDomain::solveInheritanceTransformation() 1182 { 1183 if (this->hasTransformation()) return; 1184 1185 std::vector<CDomain*> refDomain; 1186 CDomain* refer_sptr; 1187 CDomain* refer_ptr = this; 1188 while (refer_ptr->hasDirectDomainReference()) 1189 { 1190 refDomain.push_back(refer_ptr); 1191 refer_sptr = refer_ptr->getDirectDomainReference(); 1192 refer_ptr = refer_sptr; 1193 if (refer_ptr->hasTransformation()) break; 1194 } 1195 1196 if (refer_ptr->hasTransformation()) 1197 for (int idx = 0; idx < refDomain.size(); ++idx) 1198 refDomain[idx]->setTransformations(refer_ptr->getAllTransformations()); 1199 } 1200 1201 void CDomain::parse(xml::CXMLNode & node) 1202 { 1203 SuperClass::parse(node); 1204 1205 if (node.goToChildElement()) 1206 { 1207 StdString zoomDomainDefRoot("zoom_domain_definition"); 1208 StdString zoom("zoom_domain"); 1209 do 1210 { 1211 if (node.getElementName() == zoom) { 1212 CZoomDomain* tmp = (CZoomDomainGroup::get(zoomDomainDefRoot))->createChild(); 1213 tmp->parse(node); 1214 transformationMap_.push_back(std::make_pair(TRANS_ZOOM_DOMAIN,tmp)); 1215 } 1216 } while (node.goToNextElement()) ; 1217 node.goToParentElement(); 1218 } 1219 } 1129 1220 //---------------------------------------------------------------- 1130 1221 -
XIOS/trunk/src/node/domain.hpp
r622 r631 14 14 #include "attribute_array.hpp" 15 15 #include "attribute_enum.hpp" 16 #include "transformation.hpp" 17 #include "transformation_enum.hpp" 16 18 17 19 namespace xios { … … 49 51 typedef CDomainAttributes RelAttributes; 50 52 typedef CDomainGroup RelGroup; 53 typedef CTransformation<CDomain>::TransformationMapTypes TransMapTypes; 51 54 52 55 /// Constructeurs /// … … 59 62 void duplicateAttributes(CDomain* domain); 60 63 64 virtual void parse(xml::CXMLNode & node); 65 61 66 /// Vérifications /// 62 67 void checkAttributes(void); … … 65 70 66 71 void sendCheckedAttributes(); 72 73 bool hasTransformation(); 74 void solveInheritanceTransformation(); 75 TransMapTypes getAllTransformations(); 67 76 68 77 private : … … 122 131 CArray<int,2> mapConnectedServer ; // (ni,nj) => mapped to connected server number, -1 if no server is target 123 132 124 133 int global_zoom_ibegin, global_zoom_ni; 134 int global_zoom_jbegin, global_zoom_nj; 125 135 // vector<int> ib_srv, ie_srv, in_srv ; 126 136 // vector<int> jb_srv, je_srv, jn_srv ; … … 160 170 bool hasBounds ; 161 171 bool hasArea; 172 private: 173 void checkTransformations(); 174 void setTransformations(const TransMapTypes&); 175 162 176 private : 163 164 /// Proriétés protégées ///165 177 bool isChecked; 166 178 std::set<StdString> relFiles; … … 171 183 std::vector<int> connectedServerRank_; 172 184 bool isDistributed_; 185 TransMapTypes transformationMap_; 173 186 174 187 DECLARE_REF_FUNC(Domain,domain) -
XIOS/trunk/src/node/grid.cpp
r624 r631 862 862 nZoomBegin[indexMap[i]] = domainList[domainId]->zoom_ibegin_srv; 863 863 nZoomSize[indexMap[i]] = domainList[domainId]->zoom_ni_srv; 864 nZoomBeginGlobal[indexMap[i]] = domainList[domainId]-> zoom_ibegin;864 nZoomBeginGlobal[indexMap[i]] = domainList[domainId]->global_zoom_ibegin; 865 865 nGlob[indexMap[i]] = domainList[domainId]->ni_glo; 866 866 867 867 nZoomBegin[indexMap[i] + 1] = domainList[domainId]->zoom_jbegin_srv; 868 868 nZoomSize[indexMap[i] + 1] = domainList[domainId]->zoom_nj_srv; 869 nZoomBeginGlobal[indexMap[i] + 1] = domainList[domainId]-> zoom_jbegin;869 nZoomBeginGlobal[indexMap[i] + 1] = domainList[domainId]->global_zoom_jbegin; 870 870 nGlob[indexMap[i] + 1] = domainList[domainId]->nj_glo; 871 871 ++domainId; … … 1124 1124 pDom->solveRefInheritance(apply); 1125 1125 pDom->solveBaseReference(); 1126 pDom->solveInheritanceTransformation(); 1126 1127 if ((!pDom->domain_ref.isEmpty()) && (pDom->name.isEmpty())) 1127 1128 pDom->name.setValue(pDom->getBaseDomainReference()->getId()); -
XIOS/trunk/src/node/node_enum.hpp
r630 r631 22 22 eInverseAxis, 23 23 eZoomAxis, 24 eInterpolateAxis 24 eInterpolateAxis, 25 eZoomDomain 25 26 26 27 } ENodeType; -
XIOS/trunk/src/node/node_type.hpp
r630 r631 13 13 #include "zoom_axis.hpp" 14 14 #include "interpolate_axis.hpp" 15 #include "zoom_domain.hpp" 15 16 16 17 #endif // __XIOS_NODE_TYPE__ -
XIOS/trunk/src/node/transformation_enum.hpp
r630 r631 9 9 TRANS_ZOOM_AXIS, 10 10 TRANS_INVERSE_AXIS, 11 TRANS_INTERPOLATE_AXIS 11 TRANS_INTERPOLATE_AXIS, 12 TRANS_ZOOM_DOMAIN 12 13 } ETranformationType; 13 14
Note: See TracChangeset
for help on using the changeset viewer.