Changeset 418 in PSPA for Interface_Web/trunk/pspaWT/sources/controler/src/softwareTransport.cc
- Timestamp:
- Jun 21, 2013, 10:16:56 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Interface_Web/trunk/pspaWT/sources/controler/src/softwareTransport.cc
r413 r418 14 14 { 15 15 nameOfSoftware_ = nomDeLogiciel("transport"); 16 registerElement(nomdElements::beam,TBoolOk); 17 registerElement(nomdElements::drift,TBoolOk); 18 registerElement(nomdElements::bend,TBoolOk); 19 registerElement(nomdElements::soleno,TBoolOk); 20 registerElement(nomdElements::fit,TBoolOk); 21 registerElement(nomdElements::snapshot,TBoolIgnore); 16 22 } 17 23 … … 52 58 53 59 // Dans le cas où le premier element n'est pas beam 54 if ( premierEl->getNomdElement().getElementType() != beam ) {60 if ( premierEl->getNomdElement().getElementType() != nomdElements::beam ) { 55 61 // s'il n'y a pas faisceau courant, erreur 56 62 if ( beamBefore == NULL ) { … … 85 91 { 86 92 elPtr = dataManager_->getElementPointerFromNumero(k); 87 cout << "debug:: element [" << k << "] " << elPtr->getNomdElement().getElementName() << endl; 88 outfile << elPtr->transportOutputFlow(); 93 cout << "debug:: element [" << k << "] " << elPtr->getNomdElement().getExpandedName() << endl; 94 // outfile << elPtr->transportOutputFlow(); 95 outfile << elementsData(elPtr->parametersToSoftware()); 89 96 } 90 97 … … 150 157 151 158 152 if ( ptr->is_accepted_by_software(nameOfSoftware_) != TBoolOk ) { 159 // if ( ptr->is_accepted_by_software(nameOfSoftware_) != TBoolOk ) { 160 if ( doAcceptElement(ptr->getNomdElement().getElementType()) != TBoolOk ) { 161 153 162 // si l'element doit etre ignore, on renvoie sur le diag precedent 154 163 dataManager_->updateCurrentDiagnostic(false); … … 241 250 return moments.readFromTransportOutput(fichierStream); 242 251 } 252 253 string softwareTransport::elementsData(const vector< pair<string, vector<string> > >& donnees) const { 254 unsigned k; 255 cout << " PASSAGE softwareTransport::elementsData " << endl; 256 if ( donnees.at(0).first != "labelsGenericSpecific" ) { 257 cout << " softwareTransport::elementsData ERROR : element badly defined " << endl; 258 return string(); 259 } 260 string genericName = donnees.at(0).second.at(0); 261 if ( genericName == "beam" ) return beamData(donnees); 262 if ( genericName == "drift" ) return driftData(donnees); 263 if ( genericName == "solnd" ) return solenoData(donnees); 264 if ( genericName == "bend" ) return bendData(donnees); 265 if ( genericName == "fit" ) return fitData(donnees); 266 return string(); 267 } 268 269 string softwareTransport::beamData(const vector< pair<string, vector<string> > >& donnees) const { 270 271 cout << " PASSAGE softwareTransport::beamData " << endl; 272 double x = 0.0; 273 double xp = 0.0; 274 double y = 0.0; 275 double yp = 0.0; 276 double dl = 0.0; 277 double del = 0.0; 278 double p0 = 0.0; 279 string specificName = ""; 280 281 unsigned k; 282 for ( k=0; k < donnees.size(); k++) { 283 if ( donnees.at(k).first == "transverseCoordinates" ) { 284 x = atof( donnees.at(k).second.at(0).c_str() ); 285 xp = atof( donnees.at(k).second.at(1).c_str() ); 286 y = atof( donnees.at(k).second.at(2).c_str() ); 287 yp = atof( donnees.at(k).second.at(3).c_str() ); 288 } else if ( donnees.at(k).first == "longitudinalCoordinates" ) { 289 dl = atof( donnees.at(k).second.at(0).c_str() ); 290 del = atof( donnees.at(k).second.at(1).c_str() ); 291 } else if ( donnees.at(k).first == "momentum" ) { 292 p0 = atof( donnees.at(k).second.at(0).c_str() ); 293 } else if ( donnees.at(k).first == "labelsGenericSpecific" ) { 294 specificName = donnees.at(k).second.at(1); 295 } 296 } 297 ostringstream sortie; 298 beam2Moments moments(x, xp, y, yp, dl, del); 299 sortie << specificName << ":" << moments.writeToTransportInput(p0) << endl; 300 return sortie.str(); 301 return sortie.str(); 302 } 303 304 string softwareTransport::driftData(const vector< pair<string, vector<string> > >& donnees) const { 305 cout << " PASSAGE softwareTransport::driftData " << endl; 306 307 string lenght = "0.0"; 308 string specificName = ""; 309 310 unsigned k; 311 for ( k=0; k < donnees.size(); k++) { 312 if ( donnees.at(k).first == "lenghtAperture" ) { 313 lenght = donnees.at(k).second.at(0); 314 } else if ( donnees.at(k).first == "labelsGenericSpecific" ) { 315 specificName = donnees.at(k).second.at(1); 316 } 317 } 318 ostringstream sortie; 319 // longueur en m 320 sortie << specificName << ":" << " DRIFT, L=" << 0.01*atof(lenght.c_str()) << ";" << endl; 321 return sortie.str(); 322 } 323 324 325 string softwareTransport::solenoData(const vector< pair<string, vector<string> > >& donnees) const { 326 cout << " softwareTransport::solenoData " << endl; 327 string lenght = "0.0"; 328 string B0 = "0.0"; 329 string varyB0 = "0"; 330 string specificName = ""; 331 332 333 unsigned k; 334 for ( k=0; k < donnees.size(); k++) { 335 if ( donnees.at(k).first == "lenghtAperture" ) { 336 lenght = donnees.at(k).second.at(0); 337 } else if ( donnees.at(k).first == "field" ) { 338 B0 = donnees.at(k).second.at(0); 339 } else if ( donnees.at(k).first == "isBvariable" ) { 340 varyB0 = donnees.at(k).second.at(0); 341 } else if ( donnees.at(k).first == "labelsGenericSpecific" ) { 342 specificName = donnees.at(k).second.at(1); 343 } 344 } 345 ostringstream sortie; 346 // on passe la longueur en metres 347 sortie << specificName << ":" << " SOLENOID, L=" << 0.01*atof (lenght.c_str()) << ", B=" << B0 << ";" << endl; 348 if ( atoi(varyB0.c_str()) ) { 349 sortie << " VARY, " << specificName+"[B]" << ";" << endl; 350 } 351 return sortie.str(); 352 353 } 354 355 356 string softwareTransport::bendData(const vector< pair<string, vector<string> > >& donnees) const { 357 358 cout << " softwareTransport::bendData " << endl; 359 360 string lenght = "0.0"; 361 string radius = "0.0"; 362 string angleDeg = "0.0"; 363 string beta1 = "0.0"; 364 string beta2 = "0.0"; 365 366 367 368 string specificName = ""; 369 370 unsigned k; 371 for ( k=0; k < donnees.size(); k++) { 372 if ( donnees.at(k).first == "lenghtAperture" ) { 373 lenght = donnees.at(k).second.at(0); 374 } else if ( donnees.at(k).first == "angleDegre" ) { 375 angleDeg = donnees.at(k).second.at(0); 376 } else if ( donnees.at(k).first == "radius" ) { 377 radius = donnees.at(k).second.at(0); 378 } else if ( donnees.at(k).first == "rotatedFaces" ) { 379 beta1 = donnees.at(k).second.at(0); 380 beta2 = donnees.at(k).second.at(1); 381 } else if ( donnees.at(k).first == "labelsGenericSpecific" ) { 382 specificName = donnees.at(k).second.at(1); 383 } 384 } 385 386 ostringstream sortie; 387 sortie << specificName << ":" << " SBEND, RADIUS=" << radius << ", ANGLE=" << angleDeg << ", E1=" << beta1 << ", E2=" << beta2 << ";" << endl; 388 return sortie.str(); 389 390 } 391 392 393 string softwareTransport::fitData(const vector< pair<string, vector<string> > >& donnees) const { 394 cout << " softwareTransport::fitData " << endl; 395 string variableName = ""; 396 string variableValue = "0.0"; 397 string tolerance = "0.0"; 398 string specificName = ""; 399 400 unsigned k; 401 for ( k=0; k < donnees.size(); k++) { 402 if ( donnees.at(k).first == "variable") { 403 variableName = donnees.at(k).second.at(0); 404 variableValue = donnees.at(k).second.at(1); 405 tolerance = donnees.at(k).second.at(2); 406 } else if ( donnees.at(k).first == "labelsGenericSpecific" ) { 407 specificName = donnees.at(k).second.at(1); 408 } 409 } 410 ostringstream sortie; 411 sortie << specificName << ":" << " FIT," << variableName << " = " << variableValue << ", TOLER = " << tolerance << " ;" << endl; 412 if ( variableName == "R11" || variableName == "R22" || variableName == "R12" || variableName == "R21" ) { 413 sortie << " PRINT, TRANS;" << endl; 414 } 415 return sortie.str(); 416 }
Note: See TracChangeset
for help on using the changeset viewer.