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

Last change on this file since 288 was 288, checked in by garnier, 11 years ago

ajout de tooltip et nettoyage de code

File size: 5.3 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      //      parmelaOk_ = true;
17    }
18
19  void elementCell::setDefaultValues()
20  {
21    defaultLabel_ = "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
30  void elementCell::setDefaults()
31  {
32    label_ = defaultLabel_;
33    initialPhase_ = initialPhaseDef_;
34    acceleratingField_ = acceleratingFieldDef_;
35    acceleratingShapeFile_ = acceleratingShapeFileDef_;
36    focusingMagFile_ = focusingMagFileDef_;
37    offsetMag_ = offsetMagDef_;
38    scaleFactor_ = scaleFactorDef_;
39  }
40
41trivaluedBool elementCell::is_accepted_by_software(nomDeLogiciel soft) const {
42  if ( soft == nomDeLogiciel::parmela ) return ok;
43  else return error;
44}
45
46  string* elementCell::getParametersString() const 
47  {
48   int compteur = -1;
49    parametersString_[++compteur] = mixedTools::intToString(nbParam_);
50  parametersString_[++compteur] = label_;
51    parametersString_[++compteur] = mixedTools::doubleToString(lenghtElem_);
52    parametersString_[++compteur] = mixedTools::doubleToString(aperture_);
53    parametersString_[++compteur] = mixedTools::doubleToString(initialPhase_);
54    parametersString_[++compteur] = mixedTools::doubleToString( phaseStepMax_);
55    parametersString_[++compteur] = mixedTools::doubleToString(acceleratingField_);
56    parametersString_[++compteur] = acceleratingShapeFile_;
57    parametersString_[++compteur] = focusingMagFile_;
58    parametersString_[++compteur] = mixedTools::doubleToString(offsetMag_);
59    parametersString_[++compteur] = mixedTools::doubleToString(scaleFactor_);
60   if ( compteur != nbParam_ ) {
61     cerr << " elementCell::getParametersString() : ERROR nr pf parameters dosnt match " << endl;
62     return NULL;
63   }
64    return parametersString_;
65  }
66
67
68void elementCell::setParametersString(string* param)
69  {
70    if ( param == NULL )
71      {
72        cerr << "  elementCell::setParametersString parameters empty parameter set";
73        return;
74      }
75   int compteur = -1;
76    int nbparam = atoi(param[++compteur].c_str());
77    if ( nbparam != nbParam_ ) 
78      {
79        cerr << "  elementCell::setParametersString parameters do not match for a CELL";
80        return;
81      }
82
83    label_ = param[++compteur];
84    lenghtElem_ = atof(param[++compteur].c_str());
85    aperture_ = atof(param[++compteur].c_str());
86    initialPhase_ = atof(param[++compteur].c_str());
87    phaseStepMax_ = atof(param[++compteur].c_str());
88    acceleratingField_ = atof(param[++compteur].c_str());
89    acceleratingShapeFile_ = param[++compteur];
90    focusingMagFile_ = param[++compteur];
91    offsetMag_ = atof(param[++compteur].c_str());
92    scaleFactor_ = atof(param[++compteur].c_str());
93  }
94
95string elementCell::parmelaOutputFlow() const
96  {
97    ostringstream sortie;
98    // on prend les troncatures tmax et rmax à 3 sigmas
99    sortie << "CELL /l=" << lenghtElem_ << "  /aper=" << aperture_ << endl;
100    sortie << "  /iout=1  /phi0=" << initialPhase_ << " /E0=" << acceleratingField_ << endl;
101    sortie << " /nc=1 /dwtmax=" << phaseStepMax_ << " /sym=-1" << endl;
102    sortie << "CFIELD 1" << endl;
103    sortie << acceleratingShapeFile_ << endl;
104    if ( focusingMagFile_ != "") {
105      sortie << "POISSON /zoff=" << offsetMag_ << " /rmult=" << scaleFactor_ << endl;
106      sortie << focusingMagFile_;
107    }
108
109    return sortie.str();
110  }
111
112
113string elementCell::FileOutputFlow() const
114  {
115    ostringstream sortie;
116    //    sortie << elementName_.getElementType()  << endl;
117    sortie << elementName_.getElementLabel() << endl;
118    sortie  << label_ << endl;
119    sortie << lenghtElem_ << " " << aperture_ << endl;
120    sortie << initialPhase_ << "  " << acceleratingField_ << endl;
121    sortie << phaseStepMax_ << endl;
122    sortie << acceleratingShapeFile_ << endl;
123    sortie << focusingMagFile_ << endl;
124    sortie << offsetMag_ << " " << scaleFactor_ << endl;
125    return sortie.str();
126  }
127
128void elementCell::FileInput(ifstream& ifs)
129{
130  ifs >> label_;
131  ifs >> lenghtElem_ >>  aperture_;
132  ifs >> initialPhase_ >> acceleratingField_;
133  ifs >> phaseStepMax_;
134  ifs >> acceleratingShapeFile_;
135  ifs >> focusingMagFile_;
136  ifs >> offsetMag_ >> scaleFactor_;
137}
138
139
140string elementCell::print() {
141    string txt = "";
142
143
144    txt += label_;
145    txt += "\nlength (cm) : ";
146    txt += mixedTools::doubleToString(lenghtElem_);
147    txt += "\naperture (cm) : ";
148    txt += mixedTools::doubleToString(aperture_);
149    txt += "\ninitial phase (deg.) : ";
150    txt += mixedTools::doubleToString(initialPhase_);
151    txt += "\nmax phase step (deg.) : ";
152    txt += mixedTools::doubleToString(phaseStepMax_);
153    txt += "\nmax accelerating field (MV/m) : ";
154    txt += mixedTools::doubleToString(acceleratingField_);
155    txt += "\nname of file for field shape : ";
156    txt += acceleratingShapeFile_;
157    txt += "\nname of file for focusing mag. field : ";
158    txt += focusingMagFile_;
159    txt += "\n z-offset for mag. field : ";
160    txt += mixedTools::doubleToString(offsetMag_);
161    txt += "\n scaling factor for mag. field : ";
162    txt += mixedTools::doubleToString(scaleFactor_);
163    return txt;
164}
Note: See TracBrowser for help on using the repository browser.