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

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

Changement de la couleur des sections selectionnes + plein dautres choses

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