source: PSPA/Interface_Web/trunk/pspaWT/src/elementCell.cc @ 243

Last change on this file since 243 was 243, checked in by lemeur, 11 years ago

rationalisation pour introduire nouveau logiciel

File size: 4.4 KB
Line 
1#include "elementCell.h"
2
3#include <iostream>
4
5#include "mathematicalTools.h"
6#include "mixedTools.h"
7
8
9
10elementCell::elementCell()  : abstractElement() 
11    {
12      setDefaultValues();
13      setDefaults();
14      elementName_ = nomdElements("cell");
15      nbParam_ = elementName_.getElementNbParameters();
16      parametersString_ = new string[nbParam_+1];
17      //      parmelaOk_ = true;
18    }
19
20  void elementCell::setDefaultValues()
21  {
22    initialPhaseDef_ = 0.0;
23    acceleratingFieldDef_ = 1.0;
24    acceleratingShapeFileDef_ = string(" ");
25    focusingMagFileDef_ = string(" ");
26    offsetMagDef_ = 0.0;
27    scaleFactorDef_ = 1.0;
28  }
29
30  void elementCell::setDefaults()
31  {
32    initialPhase_ = initialPhaseDef_;
33    acceleratingField_ = acceleratingFieldDef_;
34    acceleratingShapeFile_ = acceleratingShapeFileDef_;
35    focusingMagFile_ = focusingMagFileDef_;
36    offsetMag_ = offsetMagDef_;
37    scaleFactor_ = scaleFactorDef_;
38  }
39
40trivaluedBool elementCell::is_accepted_by_software(nomDeLogiciel soft) const {
41  if ( soft == nomDeLogiciel::parmela ) return ok;
42  else return error;
43}
44
45  string* elementCell::getParametersString() const 
46  {
47   int compteur = -1;
48    parametersString_[++compteur] = mixedTools::intToString(nbParam_);
49  parametersString_[++compteur] = label_;
50    parametersString_[++compteur] = mixedTools::doubleToString(lenghtElem_);
51    parametersString_[++compteur] = mixedTools::doubleToString(aperture_);
52    parametersString_[++compteur] = mixedTools::doubleToString(initialPhase_);
53    parametersString_[++compteur] = mixedTools::doubleToString( phaseStepMax_);
54    parametersString_[++compteur] = mixedTools::doubleToString(acceleratingField_);
55    parametersString_[++compteur] = acceleratingShapeFile_;
56    parametersString_[++compteur] = focusingMagFile_;
57    parametersString_[++compteur] = mixedTools::doubleToString(offsetMag_);
58    parametersString_[++compteur] = mixedTools::doubleToString(scaleFactor_);
59   if ( compteur != nbParam_ ) {
60     cerr << " elementCell::getParametersString() : ERROR nr pf parameters dosnt match " << endl;
61     return NULL;
62   }
63    return parametersString_;
64  }
65
66
67void elementCell::setParametersString(string* param)
68  {
69    if ( param == NULL )
70      {
71        cerr << "  elementCell::setParametersString parameters empty parameter set";
72        return;
73      }
74   int compteur = -1;
75    int nbparam = atoi(param[++compteur].c_str());
76    if ( nbparam != nbParam_ ) 
77      {
78        cerr << "  elementCell::setParametersString parameters do not match for a CELL";
79        return;
80      }
81
82    label_ = param[++compteur];
83    lenghtElem_ = atof(param[++compteur].c_str());
84    aperture_ = atof(param[++compteur].c_str());
85    initialPhase_ = atof(param[++compteur].c_str());
86    phaseStepMax_ = atof(param[++compteur].c_str());
87    acceleratingField_ = atof(param[++compteur].c_str());
88    acceleratingShapeFile_ = param[++compteur];
89    focusingMagFile_ = param[++compteur];
90    offsetMag_ = atof(param[++compteur].c_str());
91    scaleFactor_ = atof(param[++compteur].c_str());
92  }
93
94string elementCell::parmelaOutputFlow() const
95  {
96    ostringstream sortie;
97    // on prend les troncatures tmax et rmax à 3 sigmas
98    sortie << "CELL /l=" << lenghtElem_ << "  /aper=" << aperture_ << endl;
99    sortie << "  /iout=1  /phi0=" << initialPhase_ << " /E0=" << acceleratingField_ << endl;
100    sortie << " /nc=1 /dwtmax=" << phaseStepMax_ << " /sym=-1" << endl;
101    sortie << "CFIELD 1" << endl;
102    sortie << acceleratingShapeFile_ << endl;
103    if ( focusingMagFile_ != "") {
104      sortie << "POISSON /zoff=" << offsetMag_ << " /rmult=" << scaleFactor_ << endl;
105      sortie << focusingMagFile_;
106    }
107
108    return sortie.str();
109  }
110
111
112string elementCell::FileOutputFlow() const
113  {
114    ostringstream sortie;
115    //    sortie << elementName_.getElementType()  << endl;
116    sortie << elementName_.getElementLabel() << endl;
117    sortie  << label_ << endl;
118    sortie << lenghtElem_ << " " << aperture_ << endl;
119    sortie << initialPhase_ << "  " << acceleratingField_ << endl;
120    sortie << phaseStepMax_ << endl;
121    sortie << acceleratingShapeFile_ << endl;
122    sortie << focusingMagFile_ << endl;
123    sortie << offsetMag_ << " " << scaleFactor_ << endl;
124    return sortie.str();
125  }
126
127void elementCell::FileInput(ifstream& ifs)
128{
129  ifs >> label_;
130  ifs >> lenghtElem_ >>  aperture_;
131  ifs >> initialPhase_ >> acceleratingField_;
132  ifs >> phaseStepMax_;
133  ifs >> acceleratingShapeFile_;
134  ifs >> focusingMagFile_;
135  ifs >> offsetMag_ >> scaleFactor_;
136}
Note: See TracBrowser for help on using the repository browser.