source: PSPA/Interface_Web/trunk/pspaWT/sources/controler/src/elementSextupole.cc @ 487

Last change on this file since 487 was 487, checked in by touze, 10 years ago

ajout de quadrupole et sextupole

File size: 3.0 KB
Line 
1
2#include <iostream>
3
4#include "elementSextupole.h"
5#include "mixedTools.h"
6
7elementSextupole::elementSextupole() : abstractElement() 
8{
9  defaultSpecificName_ = "spole";
10  specificName_ = defaultSpecificName_;
11  length_ = 0;
12  component_ = 0.0;
13 
14  elementName_ = nomdElements("spole");
15  nbParam_ = elementName_.getElementNbParameters();
16  parametersString_ = new string[nbParam_+1];
17}
18
19string* elementSextupole::getParametersString() const 
20{
21  int compteur = -1;
22  parametersString_[++compteur]= mixedTools::intToString(nbParam_);
23  parametersString_[++compteur]= specificName_;
24  parametersString_[++compteur]= mixedTools::doubleToString(length_);
25  parametersString_[++compteur]= mixedTools::doubleToString(component_);
26  if ( compteur != nbParam_ ) {
27    cerr << "ERROR::elementSextupole::getParametersString() : " << nbParam_ << endl;
28    return NULL;
29  } else {
30    return parametersString_;
31  }
32}
33
34void elementSextupole::setParametersString(string* param)
35{
36  if ( param == NULL ) {
37    cerr << "elementSextupole::setParametersString:: empty parameter set" << endl;
38    return;
39  }
40
41  int compteur = -1;
42  int nbparam = atoi(param[++compteur].c_str());
43  if ( nbparam != nbParam_ ) {
44    cerr << "elementSextupole::setParametersString:: parameters do not match for a sextupole";
45    return;
46  }
47
48  specificName_ = param[++compteur];
49  length_ = atof(param[++compteur].c_str());
50  component_ = atof(param[++compteur].c_str());
51}
52
53string elementSextupole::FileOutputFlow() const
54{
55  ostringstream sortie;
56  sortie << elementName_.getGenericLabel() << endl;
57  sortie  << specificName_ << endl;
58  sortie << length_ << "  " << component_ <<endl;
59  return sortie.str();
60}
61
62vector< pair<string, vector<string> > > elementSextupole::parametersToSoftware () const 
63{
64  vector< pair<string, vector<string> > >  sortie;
65  sortie.push_back( pair<string, vector<string> >("labelsGenericSpecific",  vector<string>() ) );
66  sortie.back().second.push_back(elementName_.getGenericLabel());
67  sortie.back().second.push_back(specificName_);
68  sortie.push_back( pair<string, vector<string> >("attributes",vector<string>() ) );
69  sortie.back().second.push_back(mixedTools::doubleToString(length_));
70  sortie.back().second.push_back(mixedTools::doubleToString(component_));
71  return sortie;
72}
73
74void elementSextupole::FileInput(ifstream& ifs)
75{
76  ifs >> specificName_;
77  ifs >> length_ >> component_;
78}
79
80string elementSextupole::print() 
81{
82  string txt = "";
83  txt += specificName_;
84  txt += "\nlength (m): ";
85  txt += mixedTools::doubleToString(length_);
86  txt += "\ncomponent (m^-3): ";
87  txt += mixedTools::doubleToString(component_); 
88  return txt;
89}
90
91void elementSextupole::InputRep(UAPNode* root)
92{
93  UAPNode* ele = root->addChild("element");
94  ele->addAttribute("name",specificName_);
95
96  string txt = "";
97  UAPNode* node = ele->addChild("sextupole");
98  UAPNode* knl = node->addChild("k");
99  txt = mixedTools::doubleToString(component_);
100  knl->addAttribute("design",txt);
101
102  txt = mixedTools::doubleToString(length_);
103  ele->addChild("length")->addAttribute("design",txt);
104}
Note: See TracBrowser for help on using the repository browser.