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

Last change on this file 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 "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(lenghtElem_);
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  lenghtElem_ = atof(param[++compteur].c_str());
50  component_ = atof(param[++compteur].c_str());
51}
52
53// string elementSextupole::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> > > 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(lenghtElem_));
70  sortie.back().second.push_back(mixedTools::doubleToString(component_));
71  return sortie;
72}
73
74// void elementSextupole::FileInput(ifstream& ifs)
75// {
76//   ifs >> specificName_;
77//   ifs >> lenghtElem_ >> component_;
78// }
79
80string elementSextupole::print() 
81{
82  string txt = "";
83  txt += specificName_;
84  txt += "\nlength (m): ";
85  txt += mixedTools::doubleToString(lenghtElem_);
86  txt += "\ncomponent (m^-3): ";
87  txt += mixedTools::doubleToString(component_); 
88  return txt;
89}
90
91void elementSextupole::InputRep(UAPNode* root)
92{
93  UAPNode* ele = setAMLelementHeader(root);
94
95  string txt = "";
96  UAPNode* node = ele->addChild("sextupole");
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
105void elementSextupole::FileAMLInput(UAPNode* entree) 
106{
107  if ( !checkAMLelementGenericName(entree) ) return;
108
109 AMLtools::readAMLParameterAttribut(entree, "length", "design", lenghtElem_);
110
111
112  UAPNode* sextupole = entree->getChildByName("sextupole");
113  if ( ! sextupole ) {
114    cout << " elementSextupole::FileAMLInput ERREUR pas de noeud AML <sextupole>  " << endl;
115    return;
116  }
117  AMLtools::readAMLParameterAttribut(sextupole, "k", "design", component_);
118}
Note: See TracBrowser for help on using the repository browser.