source: PSPA/Interface_Web/trunk/pspaWT/sources/controler/src/elementCell.cc @ 418

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

definition des compatibilites des elements dans les software

File size: 6.6 KB
Line 
1#include "elementCell.h"
2
3#include <iostream>
4
5#include "mathematicalTools.h"
6#include "mixedTools.h"
7
8
9elementCell::elementCell()  : abstractElement() 
10    {
11      setDefaultValues();
12      setDefaults();
13      elementName_ = nomdElements("cell");
14      nbParam_ = elementName_.getElementNbParameters();
15      parametersString_ = new string[nbParam_+1];
16      //        registerAcceptableSoftware(nomDeLogiciel::parmela, TBoolOk);
17    }
18
19void elementCell::setDefaultValues()
20{
21    defaultSpecificName_ = "cell";
22    initialPhaseDef_ = 0.0;
23    acceleratingFieldDef_ = 1.0;
24    acceleratingShapeFileDef_ = "xxxxxxx";
25    focusingMagFileDef_ = "xxxxxx";
26    offsetMagDef_ = 0.0;
27    scaleFactorDef_ = 1.0;
28}
29
30void elementCell::setDefaults()
31{
32    specificName_ = defaultSpecificName_;
33    initialPhase_ = initialPhaseDef_;
34    acceleratingField_ = acceleratingFieldDef_;
35    acceleratingShapeFile_ = acceleratingShapeFileDef_;
36    focusingMagFile_ = focusingMagFileDef_;
37    offsetMag_ = offsetMagDef_;
38    scaleFactor_ = scaleFactorDef_;
39  }
40
41
42  string* elementCell::getParametersString() const 
43  {
44   int compteur = -1;
45    parametersString_[++compteur] = mixedTools::intToString(nbParam_);
46  parametersString_[++compteur] = specificName_;
47    parametersString_[++compteur] = mixedTools::doubleToString(lenghtElem_);
48    parametersString_[++compteur] = mixedTools::doubleToString(aperture_);
49    parametersString_[++compteur] = mixedTools::doubleToString(initialPhase_);
50    parametersString_[++compteur] = mixedTools::doubleToString( phaseStepMax_);
51    parametersString_[++compteur] = mixedTools::doubleToString(acceleratingField_);
52    parametersString_[++compteur] = acceleratingShapeFile_;
53    parametersString_[++compteur] = focusingMagFile_;
54    parametersString_[++compteur] = mixedTools::doubleToString(offsetMag_);
55    parametersString_[++compteur] = mixedTools::doubleToString(scaleFactor_);
56   if ( compteur != nbParam_ ) {
57     cerr << " elementCell::getParametersString() : ERROR nr pf parameters dosnt match " << endl;
58     return NULL;
59   }
60    return parametersString_;
61  }
62
63
64void elementCell::setParametersString(string* param)
65  {
66    if ( param == NULL )
67      {
68        cerr << "  elementCell::setParametersString parameters empty parameter set";
69        return;
70      }
71   int compteur = -1;
72    int nbparam = atoi(param[++compteur].c_str());
73    if ( nbparam != nbParam_ ) 
74      {
75        cerr << "  elementCell::setParametersString parameters do not match for a CELL";
76        return;
77      }
78
79    specificName_ = param[++compteur];
80    lenghtElem_ = atof(param[++compteur].c_str());
81    aperture_ = atof(param[++compteur].c_str());
82    initialPhase_ = atof(param[++compteur].c_str());
83    phaseStepMax_ = atof(param[++compteur].c_str());
84    acceleratingField_ = atof(param[++compteur].c_str());
85    acceleratingShapeFile_ = param[++compteur];
86    focusingMagFile_ = param[++compteur];
87    offsetMag_ = atof(param[++compteur].c_str());
88    scaleFactor_ = atof(param[++compteur].c_str());
89  }
90
91// string elementCell::parmelaOutputFlow() const
92//   {
93//     ostringstream sortie;
94//     sortie << "CELL /l=" << lenghtElem_ << "  /aper=" << aperture_ << endl;
95//     sortie << "  /iout=1  /phi0=" << initialPhase_ << " /E0=" << acceleratingField_ << endl;
96//     sortie << " /nc=1 /dwtmax=" << phaseStepMax_ << " /sym=-1" << endl;
97//     sortie << "CFIELD 1" << endl;
98//     sortie << acceleratingShapeFile_ << endl;
99//     if ( focusingMagFile_ != "") {
100//       sortie << "POISSON /zoff=" << offsetMag_ << " /rmult=" << scaleFactor_ << endl;
101//       sortie << focusingMagFile_ << endl;
102//     }
103
104//     return sortie.str();
105//   }
106
107
108string elementCell::FileOutputFlow() const
109  {
110    ostringstream sortie;
111    //    sortie << elementName_.getElementType()  << endl;
112    sortie << elementName_.getGenericLabel() << endl;
113    sortie  << specificName_ << endl;
114    sortie << lenghtElem_ << " " << aperture_ << endl;
115    sortie << initialPhase_ << "  " << acceleratingField_ << endl;
116    sortie << phaseStepMax_ << endl;
117    sortie << acceleratingShapeFile_ << endl;
118    sortie << focusingMagFile_ << endl;
119    sortie << offsetMag_ << " " << scaleFactor_ << endl;
120    return sortie.str();
121  }
122
123
124vector< pair<string, vector<string> > > elementCell::parametersToSoftware () const {
125  vector< pair<string, vector<string> > >  sortie;
126  sortie.push_back( pair<string, vector<string> >("labelsGenericSpecific",  vector<string>() ) );
127  sortie.back().second.push_back(elementName_.getGenericLabel());
128  sortie.back().second.push_back(specificName_);
129  sortie.push_back( pair<string, vector<string> >("lenghtAperture",  vector<string>() ) );
130  sortie.back().second.push_back(mixedTools::doubleToString(lenghtElem_));
131  sortie.back().second.push_back(mixedTools::doubleToString( aperture_));
132  sortie.push_back( pair<string, vector<string> >("phaseInitialStepmax",  vector<string>() ) );
133  sortie.back().second.push_back(mixedTools::doubleToString( initialPhase_));
134  sortie.back().second.push_back(mixedTools::doubleToString( phaseStepMax_));
135  sortie.push_back( pair<string, vector<string> >("fieldValueFile",  vector<string>() ) );
136  sortie.back().second.push_back(mixedTools::doubleToString( acceleratingField_));
137  sortie.back().second.push_back(acceleratingShapeFile_);
138  sortie.push_back( pair<string, vector<string> >("MagFocusingFileOffsetScale",  vector<string>() ) );
139  sortie.back().second.push_back(focusingMagFile_);
140  sortie.back().second.push_back(mixedTools::doubleToString( offsetMag_));
141  sortie.back().second.push_back(mixedTools::doubleToString( scaleFactor_));
142
143  return sortie;
144}
145
146
147void elementCell::FileInput(ifstream& ifs)
148{
149  ifs >> specificName_;
150  ifs >> lenghtElem_ >>  aperture_;
151  ifs >> initialPhase_ >> acceleratingField_;
152  ifs >> phaseStepMax_;
153  ifs >> acceleratingShapeFile_;
154  ifs >> focusingMagFile_;
155  ifs >> offsetMag_ >> scaleFactor_;
156}
157
158
159string elementCell::print() {
160    string txt = "";
161
162
163    txt += specificName_;
164    txt += "\nlength (cm) : ";
165    txt += mixedTools::doubleToString(lenghtElem_);
166    txt += "\naperture (cm) : ";
167    txt += mixedTools::doubleToString(aperture_);
168    txt += "\ninitial phase (deg.) : ";
169    txt += mixedTools::doubleToString(initialPhase_);
170    txt += "\nmax phase step (deg.) : ";
171    txt += mixedTools::doubleToString(phaseStepMax_);
172    txt += "\nmax accelerating field (MV/m) : ";
173    txt += mixedTools::doubleToString(acceleratingField_);
174    txt += "\nname of file for field shape : ";
175    txt += acceleratingShapeFile_;
176    txt += "\nname of file for focusing mag. field : ";
177    txt += focusingMagFile_;
178    txt += "\n z-offset for mag. field : ";
179    txt += mixedTools::doubleToString(offsetMag_);
180    txt += "\n scaling factor for mag. field : ";
181    txt += mixedTools::doubleToString(scaleFactor_);
182    return txt;
183}
Note: See TracBrowser for help on using the repository browser.