Changeset 386 in PSPA for Interface_Web/trunk/pspaWT/sources/controler/src/softwareTransport.cc
- Timestamp:
- Mar 12, 2013, 1:54:41 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Interface_Web/trunk/pspaWT/sources/controler/src/softwareTransport.cc
r381 r386 7 7 8 8 softwareTransport::softwareTransport() : abstractSoftware() 9 {;} 9 { 10 nameOfSoftware_ = nomDeLogiciel("transport"); 11 } 10 12 11 13 softwareTransport::softwareTransport(string inputFileName,globalParameters* globals, dataManager* dt) : abstractSoftware(inputFileName, globals, dt) 12 {;} 14 { 15 nameOfSoftware_ = nomDeLogiciel("transport"); 16 } 13 17 14 18 bool softwareTransport::createInputFile(particleBeam* beamBefore, unsigned int numeroDeb, unsigned int numeroFin, string workingDir) 15 19 { 16 if ( numeroDeb < 1 || numeroFin > dataManager_->getBeamLineSize() ) { 17 dataManager_->consoleMessage(" softwareTransport::createInputFile : numero of element out of limits " ); 18 cerr << " numero of element out of limits " << endl; 19 return false; 20 } 20 21 if ( !initComputationLimits(numeroDeb,numeroFin) ) return false; 21 22 22 23 abstractElement* premierEl = NULL; 23 premierEl = dataManager_->getElementPointerFromNumero(numeroDeb );24 premierEl = dataManager_->getElementPointerFromNumero(numeroDeb_); 24 25 25 26 // ceinture et bretelles … … 79 80 80 81 abstractElement* elPtr; 81 for (unsigned k = numeroDeb ; k <= numeroFin; k++)82 for (unsigned k = numeroDeb_; k <= numeroFin_; k++) 82 83 { 83 84 elPtr = dataManager_->getElementPointerFromNumero(k); 84 85 cout << "debug:: element [" << k << "] " << elPtr->getNomdElement().getElementName() << endl; 85 if(elPtr->getNomdElement().getElementType() == snapshot) continue;86 86 outfile << elPtr->transportOutputFlow() << endl; 87 87 } … … 95 95 } 96 96 97 bool softwareTransport::execute( unsigned int numeroDeb, unsigned int numeroFin,string workingDir)97 bool softwareTransport::execute(string workingDir) 98 98 { 99 99 bool ExecuteStatus = true; 100 100 101 101 ostringstream sortie; 102 sortie << " EXECUTION DE TRANSPORT DE " << numeroDeb << " a " << numeroFin<< endl;102 sortie << " EXECUTION DE TRANSPORT DE " << numeroDeb_ << " a " << numeroFin_ << endl; 103 103 104 104 string transportJob = workingDir + "transport"; … … 132 132 } 133 133 134 bool softwareTransport::buildBeamAfterElements( unsigned int numeroDeb,unsigned int numeroFin, vector<particleBeam>& beams,string workingDir)134 bool softwareTransport::buildBeamAfterElements(string workingDir) 135 135 { 136 136 137 137 bool result = true; 138 139 for (unsigned k = numeroDeb; k <= numeroFin; k++) 138 if ( !ComputationLimitsOk() ) return false; 139 140 for (unsigned k = numeroDeb_; k <= numeroFin_; k++) 140 141 { 141 142 abstractElement* ptr = dataManager_->getElementPointerFromNumero(k); … … 143 144 dataManager_->consoleMessage(" softwareTransport::buildBeamAfterElements : null pointer on element " ); 144 145 cout << " softwareTransport::buildBeamAfterElements : null pointer on element " << endl; 145 result = false; 146 break; 147 } 148 146 return false; 147 } 148 149 150 if ( ptr->is_accepted_by_software(nameOfSoftware_) != TBoolOk ) { 151 // si l'element doit etre ignore, on renvoie sur le diag precedent 152 dataManager_->updateCurrentDiagnostic(false); 149 153 // si l'element est un snapshot, recuperer la sortie precedente 150 if(ptr->getNomdElement().getElementType() == snapshot) { 151 int avantDernier = beams.size() - 1; 152 string* param = ptr->getParametersString(); 153 string cliche = workingDir + param[2].c_str(); 154 cout<<"["<<k<<"] : ecrit sur fichier " << cliche << " le contenu de beam["<<avantDernier<<"]"<<endl; 155 // continue; 156 } 157 158 beams.push_back(particleBeam()); 159 cout << " creation diagn. no " << beams.size() << " par TRANSPORT " << endl; 160 string elemLabel = ptr->getLabel(); 161 beam2Moments transpMoments; 162 163 if (!moments2FromTransport(workingDir,elemLabel,ptr->getNomdElement(),transpMoments) ) 164 { 165 dataManager_->consoleMessage(" softwareTransport::buildBeamAfterElements : failure in reading moments " ); 166 cout << " softwareTransport::buildBeamAfterElements plantage dans lecture moments " << endl; 167 result = false; 168 break; 169 } 170 beams.back().set2Moments(transpMoments); 154 if(ptr->getNomdElement().getElementType() == snapshot) { 155 string* param = ptr->getParametersString(); 156 string cliche = workingDir + param[2].c_str(); 157 cout<<"["<<k<<"] : ecrit sur fichier " << cliche << " le contenu de beam[ ]"<<endl; 158 } 159 } else { 160 // si le numero est reconnu de transport 161 162 163 164 string elemLabel = ptr->getLabel(); 165 beam2Moments transpMoments; 166 // lecture sortie transport 167 if (!moments2FromTransport(workingDir,elemLabel,ptr->getNomdElement(),transpMoments) ) 168 { 169 // si echec, on renvoie sur le diag precedent 170 dataManager_->updateCurrentDiagnostic(false); 171 172 dataManager_->consoleMessage(" softwareTransport::buildBeamAfterElements : element skipped in reading moments from transport output : " + elemLabel); 173 // cout << " softwareTransport::buildBeamAfterElements plantage dans lecture moments " << endl; 174 return true; 175 } else { 176 // si succes, 177 // on initialise une nouvelle sortie diagnostic 178 particleBeam* newDiag = dataManager_->updateCurrentDiagnostic(true); 179 // et on la complete 180 newDiag->set2Moments(transpMoments); 181 } 182 } 171 183 } 172 184 return result; 173 185 } 174 175 186 bool softwareTransport::moments2FromTransport(string workingDir,string elLab,const nomdElements elem,beam2Moments& moments) const 176 187 { … … 226 237 } 227 238 228 moments.readFromTransportOutput(fichierStream); 229 return true; 230 } 239 return moments.readFromTransportOutput(fichierStream); 240 }
Note: See TracChangeset
for help on using the changeset viewer.