Ignore:
Timestamp:
Mar 12, 2013, 1:54:41 PM (11 years ago)
Author:
lemeur
Message:

amélioration fiabilité graphique

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Interface_Web/trunk/pspaWT/sources/controler/src/softwareTransport.cc

    r381 r386  
    77
    88softwareTransport::softwareTransport() : abstractSoftware()
    9 {;}
     9{
     10  nameOfSoftware_ = nomDeLogiciel("transport");
     11}
    1012
    1113softwareTransport::softwareTransport(string inputFileName,globalParameters* globals, dataManager* dt) : abstractSoftware(inputFileName, globals, dt)
    12 {;}
     14{
     15  nameOfSoftware_ = nomDeLogiciel("transport");
     16}
    1317
    1418bool softwareTransport::createInputFile(particleBeam* beamBefore, unsigned int numeroDeb, unsigned int numeroFin, string workingDir)
    1519{
    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;
    2122
    2223  abstractElement* premierEl = NULL;
    23   premierEl = dataManager_->getElementPointerFromNumero(numeroDeb);
     24  premierEl = dataManager_->getElementPointerFromNumero(numeroDeb_);
    2425
    2526  // ceinture et bretelles
     
    7980
    8081  abstractElement* elPtr;
    81   for (unsigned k = numeroDeb; k <= numeroFin; k++)
     82  for (unsigned k = numeroDeb_; k <= numeroFin_; k++)
    8283    {
    8384      elPtr = dataManager_->getElementPointerFromNumero(k);
    8485      cout << "debug:: element [" << k << "] " << elPtr->getNomdElement().getElementName() << endl;
    85       if(elPtr->getNomdElement().getElementType() == snapshot) continue;
    8686      outfile << elPtr->transportOutputFlow() << endl;
    8787    }
     
    9595}
    9696
    97 bool softwareTransport::execute( unsigned int numeroDeb, unsigned int numeroFin, string workingDir)
     97bool softwareTransport::execute(string workingDir)
    9898{
    9999  bool ExecuteStatus = true;
    100100
    101101  ostringstream sortie;
    102   sortie << " EXECUTION DE TRANSPORT DE " << numeroDeb << " a " << numeroFin << endl;
     102  sortie << " EXECUTION DE TRANSPORT DE " << numeroDeb_ << " a " << numeroFin_ << endl;
    103103 
    104104  string transportJob = workingDir + "transport";
     
    132132}
    133133
    134 bool softwareTransport::buildBeamAfterElements(unsigned int numeroDeb,unsigned int numeroFin, vector<particleBeam>& beams,string workingDir)
     134bool softwareTransport::buildBeamAfterElements(string workingDir)
    135135{
    136136
    137137  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++)
    140141    {
    141142      abstractElement* ptr = dataManager_->getElementPointerFromNumero(k);
     
    143144        dataManager_->consoleMessage(" softwareTransport::buildBeamAfterElements : null pointer on element " );
    144145        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);
    149153      // 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      }
    171183    }
    172184  return result;
    173185}
    174 
    175186bool softwareTransport::moments2FromTransport(string workingDir,string elLab,const nomdElements elem,beam2Moments& moments) const
    176187{
     
    226237  }
    227238
    228   moments.readFromTransportOutput(fichierStream);
    229   return true;
    230 }
     239  return moments.readFromTransportOutput(fichierStream);
     240}
Note: See TracChangeset for help on using the changeset viewer.