Changeset 631 for XIOS/trunk/src/node/domain.cpp
- Timestamp:
- 07/07/15 10:46:33 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note: See TracChangeset
for help on using the changeset viewer.