source: PSPA/Interface_Web/trunk/pspaWT/sources/controler/src/elementQuadrupole.cc @ 488

Last change on this file since 488 was 488, checked in by lemeur, 10 years ago

lecture fichier sauvegarde AML

File size: 3.5 KB
Line 
1
2#include <iostream>
3
4#include "elementQuadrupole.h"
5#include "mixedTools.h"
6
7elementQuadrupole::elementQuadrupole() : abstractElement() 
8{
9  defaultSpecificName_ = "qpole";
10  specificName_ = defaultSpecificName_;
11  //  length_ = 0;
12  component_ = 0.0;
13 
14  elementName_ = nomdElements("qpole");
15  nbParam_ = elementName_.getElementNbParameters();
16  parametersString_ = new string[nbParam_+1];
17}
18
19string* elementQuadrupole::getParametersString() const 
20{
21  int compteur = -1;
22  parametersString_[++compteur]= mixedTools::intToString(nbParam_);
23  parametersString_[++compteur]= specificName_;
24  parametersString_[++compteur]= mixedTools::doubleToString(lenghtElem_);
25  parametersString_[++compteur]= mixedTools::doubleToString(component_);
26  if ( compteur != nbParam_ ) {
27    cerr << "ERROR::elementQuadrupole::getParametersString() : " << nbParam_ << endl;
28    return NULL;
29  } else {
30    return parametersString_;
31  }
32}
33
34void elementQuadrupole::setParametersString(string* param)
35{
36  if ( param == NULL ) {
37    cerr << "elementQuadrupole::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 << "elementQuadrupole::setParametersString:: parameters do not match for a quadrupole";
45    return;
46  }
47
48  specificName_ = param[++compteur];
49  lenghtElem_ = atof(param[++compteur].c_str());
50  component_ = atof(param[++compteur].c_str());
51}
52
53// string elementQuadrupole::FileOutputFlow() const
54// {
55//   ostringstream sortie;
56//   sortie << elementName_.getGenericLabel() << endl;
57//   sortie  << specificName_ << endl;
58//   sortie << lenghtElem_ << "  " << component_ <<endl;
59//   return sortie.str();
60// }
61
62vector< pair<string, vector<string> > > elementQuadrupole::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(lenghtElem_));
70  sortie.back().second.push_back(mixedTools::doubleToString(component_));
71  return sortie;
72}
73
74// void elementQuadrupole::FileInput(ifstream& ifs)
75// {
76//   ifs >> specificName_;
77//   ifs >> lenghtElem_ >> component_;
78// }
79
80string elementQuadrupole::print() 
81{
82  string txt = "";
83  txt += specificName_;
84  txt += "\nlength (m): ";
85  txt += mixedTools::doubleToString(lenghtElem_);
86  txt += "\ncomponent (m^-2): ";
87  txt += mixedTools::doubleToString(component_); 
88  return txt;
89}
90
91void elementQuadrupole::InputRep(UAPNode* root)
92{
93  UAPNode* ele = setAMLelementHeader(root);
94
95  string txt = "";
96  UAPNode* node = ele->addChild("quadrupole");
97  UAPNode* knl = node->addChild("k");
98  txt = mixedTools::doubleToString(component_);
99  knl->addAttribute("design",txt);
100
101  txt = mixedTools::doubleToString(lenghtElem_);
102  ele->addChild("length")->addAttribute("design",txt);
103}
104
105
106void elementQuadrupole::FileAMLInput(UAPNode* entree) 
107{
108  if ( !checkAMLelementGenericName(entree) ) return;
109
110 AMLtools::readAMLParameterAttribut(entree, "length", "design", lenghtElem_);
111
112
113  UAPNode* quadrupole = entree->getChildByName("quadrupole");
114  if ( ! quadrupole ) {
115    cout << " elementQuadrupole::FileAMLInput ERREUR pas de noeud AML <quadrupole>  " << endl;
116    return;
117  }
118  AMLtools::readAMLParameterAttribut(quadrupole, "k", "design", component_);
119}
Note: See TracBrowser for help on using the repository browser.