source: PSPA/Interface_Web/trunk/pspaWT/src/elementBend.cc @ 186

Last change on this file since 186 was 181, checked in by lemeur, 12 years ago

lecture ecriture des elements par labels

File size: 2.8 KB
Line 
1#include "elementBend.h"
2#include "mixedTools.h"
3#include "mathematicalConstants.h"
4
5elementBend::elementBend() :  abstractElement() 
6{
7  setDefaultValues();
8  setDefaults();
9  elementName_ = nomdElements("bend");
10  nbParam_ = elementName_.getElementNbParameters();
11  parametersString_ = new string[nbParam_+1];
12  transportOk_ = true;
13  //  transportElementName_ = "*SBEND*";
14}
15
16  void elementBend::setDefaultValues()
17  {
18    angleDegDef_ = 0.0;
19    radiusDef_ = 1.0;
20    beta1Def_ = 0.0;
21    beta2Def_ = 0.0;
22  }
23
24  void elementBend::setDefaults()
25  {
26    angleDeg_ = angleDegDef_;
27    radius_ = radiusDef_;
28    beta1_ = beta1Def_;
29    beta2_ = beta2Def_;
30  }
31
32 string* elementBend::getParametersString() const 
33 {
34   parametersString_[0] = mixedTools::intToString(nbParam_);
35   parametersString_[1] = mixedTools::doubleToString( angleDeg_);
36   parametersString_[2] = mixedTools::doubleToString(radiusDef_);
37   parametersString_[3] = mixedTools::doubleToString(aperture_);
38   parametersString_[4] = mixedTools::doubleToString(beta1_);
39   parametersString_[5] = mixedTools::doubleToString(beta2_);
40   return parametersString_;
41 }
42
43 double elementBend::getLenghtOfElement() const 
44{
45 return 1.0e2 * radius_ * angleDeg_ * DEG_TO_RADIANS; 
46}
47
48
49
50 void  elementBend::setParametersString(string* param)
51 {
52        if ( param == NULL )
53        {
54          cerr << "  elementBend::setParametersString parameters empty parameter set";
55          return;
56        }
57        int nbparam = atoi(param[0].c_str());
58    if ( nbparam != nbParam_ ) 
59        {
60          cerr << "  elementBend::setParametersString parameters do not match for a BEND";
61          return;
62        }
63    angleDeg_ =  atof(param[1].c_str());
64    radius_ = atof(param[2].c_str());
65    aperture_  = atof(param[3].c_str());
66    beta1_ = atof(param[4].c_str());
67    beta2_ = atof(param[5].c_str());
68    // calcul de la longueur : rayon en m ; longueur en cm
69    lenghtElem_ = getLenghtOfElement();
70    cout << " elementBend::setParametersString calcule longueur = " << lenghtElem_ << endl;
71 }
72
73string elementBend::transportOutputFlow() const
74  {
75    ostringstream sortie;
76    sortie << label_ << ":" << "  SBEND, RADIUS=" << radius_ << ", ANGLE=" << angleDeg_ << ", E1=" << beta1_ << ", E2=" << beta2_ << ";";
77    return sortie.str();
78  }
79
80string elementBend::FileOutputFlow() const
81  {
82    ostringstream sortie;
83    //    sortie << elementName_.getElementType() << endl;
84    sortie << elementName_.getElementLabel() << endl;
85    sortie  << label_ << endl;
86    sortie << angleDeg_ << "  " << radius_ << " " <<  aperture_  << endl;
87    sortie << beta1_ << "  " << beta2_ << endl;
88    return sortie.str();
89  }
90
91void elementBend::FileInput(ifstream& ifs)
92{
93  ifs >> label_;
94  ifs >> angleDeg_ >> radius_ >>  aperture_;
95  ifs >> beta1_ >> beta2_;
96    lenghtElem_ = getLenghtOfElement();
97    cout << " elementBend::FileInput calcule longueur = " << lenghtElem_ << endl;
98}
Note: See TracBrowser for help on using the repository browser.