Changeset 187 for XMLIO_V2/dev/dev_rv/src/xmlio/node/domain.cpp
- Timestamp:
- 05/03/11 11:55:06 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XMLIO_V2/dev/dev_rv/src/xmlio/node/domain.cpp
r185 r187 5 5 #include "group_template_impl.hpp" 6 6 7 #include "mpi_manager.hpp" 8 7 9 #include <algorithm> 8 10 … … 14 16 CDomain::CDomain(void) 15 17 : CObjectTemplate<CDomain>(), CDomainAttributes() 16 , isChecked(false), local_mask(new CArray<int, 2>(boost::extents[ 10][10])), relFiles()18 , isChecked(false), local_mask(new CArray<int, 2>(boost::extents[0][0])), relFiles() 17 19 , ibegin_sub(), iend_sub(), jbegin_sub(), jend_sub() 18 20 , lonvalue_sub(), latvalue_sub() … … 21 23 CDomain::CDomain(const StdString & id) 22 24 : CObjectTemplate<CDomain>(id), CDomainAttributes() 23 , isChecked(false), local_mask(new CArray<int, 2>(boost::extents[ 10][10])), relFiles()25 , isChecked(false), local_mask(new CArray<int, 2>(boost::extents[0][0])), relFiles() 24 26 , ibegin_sub(), iend_sub(), jbegin_sub(), jend_sub() 25 27 , lonvalue_sub(), latvalue_sub() … … 124 126 (ni_glo.isEmpty() || nj_glo.getValue() <= 0 )) 125 127 ERROR("CDomain::checkAttributes(void)", 128 << "[ Id = " << this->getId() << " ] " 126 129 << "Le domaine global est mal défini," 127 130 << " vérifiez les valeurs de \'ni_glo\' et \'nj_glo\' !") ; … … 159 162 ibegin.getValue() < 1 || iend.getValue() > ni_glo.getValue()) 160 163 ERROR("CDomain::checkAttributes(void)", 164 << "[ Id = " << this->getId() << " ] " 161 165 << "Domaine local mal défini," 162 166 << " vérifiez les valeurs ni, ni_glo, ibegin, iend") ; … … 294 298 data_ibegin.setValue(0) ; 295 299 if (data_jbegin.isEmpty() && (data_dim.getValue() == 2)) 296 300 data_jbegin.setValue(0) ; 297 301 298 302 if (!data_ni.isEmpty() && (data_ni.getValue() <= 0)) … … 398 402 void CDomain::completeLonLat(void) 399 403 { 400 //ARRAY_CREATE(value, valuetype, numdims, extent)// todo 401 //ARRAY_CREATE(value, valuetype, numdims, extent) 404 ARRAY_CREATE(lonvalue_temp, double, 1, [0]); 405 ARRAY_CREATE(latvalue_temp, double, 1, [0]); 406 407 const int ibegin_serv = ibegin.getValue(), 408 jbegin_serv = jbegin.getValue(), 409 zoom_ni_serv = zoom_ni_loc.getValue(), 410 zoom_nj_serv = zoom_nj_loc.getValue(); 411 412 /*std::cout << "Rang du serveur :" << comm::CMPIManager::GetCommRank() << std::endl 413 << "Begin serv : " << ibegin_serv << ", " << jbegin_serv << std::endl 414 << "End serv : " << iend_serv << ", " << jend_serv << std::endl 415 << "Zoom_loc begin : " << zoom_ibegin_loc << ", " << zoom_jbegin_loc << std::endl 416 << "Zoom_loc size : " << zoom_ni_loc << ", " << zoom_nj_loc << std::endl;*/ 417 402 418 403 419 ARRAY(double, 1) lonvalue_ = this->lonvalue.getValue(), … … 406 422 if (this->data_dim.getValue() == 2) 407 423 { 424 StdSize dm = zoom_ni_serv * zoom_nj_serv; 408 425 StdSize dn = this->ni.getValue() * this->nj.getValue(); 426 409 427 lonvalue_->resize(boost::extents[dn]); 410 428 latvalue_->resize(boost::extents[dn]); 411 412 for (StdSize k = 0; k < lonvalue_sub.size(); k++) 413 { 414 int l = 0; 415 ARRAY(double, 1) lonvalue_loc = this->lonvalue_sub[k], 416 latvalue_loc = this->latvalue_sub[k]; 417 const int ibegin_loc = ibegin_sub[k], iend_loc = iend_sub[k], 418 jbegin_loc = jbegin_sub[k], jend_loc = jend_sub[k]; 419 420 for (int i = ibegin_loc-1; i <= (iend_loc-1); i++) 421 { 422 for (int j = jbegin_loc-1; j <= (jend_loc-1); j++) 423 { 424 (*lonvalue_)[i+j*this->ni.getValue()] = (*lonvalue_loc)[l]; 425 (*latvalue_)[i+j*this->ni.getValue()] = (*latvalue_loc)[l++]; 426 } 427 } 428 } 429 } 430 else 431 { 432 StdSize dn = this->ni.getValue(); 433 lonvalue_->resize(boost::extents[dn]); 434 latvalue_->resize(boost::extents[dn]); 429 lonvalue_temp->resize(boost::extents[dm]); 430 latvalue_temp->resize(boost::extents[dm]); 435 431 436 432 for (StdSize k = 0; k < lonvalue_sub.size(); k++) … … 442 438 jbegin_loc = jbegin_sub[k], jend_loc = jend_sub[k]; 443 439 444 for (int i = ibegin_loc-1; i <= (iend_loc-1); i++) 440 for (int i = ibegin_loc - ibegin_serv; i < (iend_loc - ibegin_serv + 1); i++) 441 { 442 for (int j = jbegin_loc - jbegin_serv; j < (jend_loc - jbegin_serv + 1); j++) 443 { 444 (*lonvalue_)[i + j * this->ni.getValue()] = (*lonvalue_loc)[l]; 445 (*latvalue_)[i + j * this->ni.getValue()] = (*latvalue_loc)[l++]; 446 } 447 } 448 } 449 this->lonvalue.setValue(lonvalue_temp); 450 this->latvalue.setValue(latvalue_temp); 451 } 452 else 453 { 454 lonvalue_->resize(boost::extents[this->ni.getValue()]); 455 latvalue_->resize(boost::extents[this->nj.getValue()]); 456 lonvalue_temp->resize(boost::extents[zoom_ni_serv]); 457 latvalue_temp->resize(boost::extents[zoom_nj_serv]); 458 459 for (StdSize k = 0; k < lonvalue_sub.size(); k++) 460 { 461 int l = 0; 462 ARRAY(double, 1) lonvalue_loc = this->lonvalue_sub[k], 463 latvalue_loc = this->latvalue_sub[k]; 464 const int ibegin_loc = ibegin_sub[k], iend_loc = iend_sub[k], 465 jbegin_loc = jbegin_sub[k], jend_loc = jend_sub[k]; 466 467 for (int i = ibegin_loc - ibegin_serv; i < (iend_loc - ibegin_loc + 1); i++) 445 468 (*lonvalue_)[i] = (*lonvalue_loc)[l++]; 446 469 447 for (int j = jbegin_loc -1, l = 0; j <= (jend_loc-1); j++)470 for (int j = jbegin_loc - jbegin_serv; j < (jend_loc - jbegin_loc + 1); j++) 448 471 (*latvalue_)[j] = (*latvalue_loc)[l++]; 449 } 472 } 473 this->lonvalue.setValue(lonvalue_temp); 474 this->latvalue.setValue(latvalue_temp); 450 475 } 451 476 } … … 551 576 else 552 577 { // CÃŽté serveur uniquement 553 this->completeLonLat(); 578 if (!this->isEmpty()) 579 this->completeLonLat(); 554 580 } 555 581 this->completeMask();
Note: See TracChangeset
for help on using the changeset viewer.