source: PSPA/Interface_Web/trunk/pspaWT/sources/controler/src/elementMultipole.cc @ 431

Last change on this file since 431 was 431, checked in by touze, 11 years ago

systeme periodique (mailles) + multipoles + madx

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