#include #include "elementSextupole.h" #include "mixedTools.h" elementSextupole::elementSextupole() : abstractElement() { defaultSpecificName_ = "spole"; specificName_ = defaultSpecificName_; // length_ = 0; component_ = 0.0; elementName_ = nomdElements("spole"); nbParam_ = elementName_.getElementNbParameters(); parametersString_ = new string[nbParam_+1]; } string* elementSextupole::getParametersString() const { int compteur = -1; parametersString_[++compteur]= mixedTools::intToString(nbParam_); parametersString_[++compteur]= specificName_; parametersString_[++compteur]= mixedTools::doubleToString(lenghtElem_); parametersString_[++compteur]= mixedTools::doubleToString(component_); if ( compteur != nbParam_ ) { cerr << "ERROR::elementSextupole::getParametersString() : " << nbParam_ << endl; return NULL; } else { return parametersString_; } } void elementSextupole::setParametersString(string* param) { if ( param == NULL ) { cerr << "elementSextupole::setParametersString:: empty parameter set" << endl; return; } int compteur = -1; int nbparam = atoi(param[++compteur].c_str()); if ( nbparam != nbParam_ ) { cerr << "elementSextupole::setParametersString:: parameters do not match for a sextupole"; return; } specificName_ = param[++compteur]; lenghtElem_ = atof(param[++compteur].c_str()); component_ = atof(param[++compteur].c_str()); } // string elementSextupole::FileOutputFlow() const // { // ostringstream sortie; // sortie << elementName_.getGenericLabel() << endl; // sortie << specificName_ << endl; // sortie << lenghtElem_ << " " << component_ < > > elementSextupole::parametersToSoftware () const { vector< pair > > sortie; sortie.push_back( pair >("labelsGenericSpecific", vector() ) ); sortie.back().second.push_back(elementName_.getGenericLabel()); sortie.back().second.push_back(specificName_); sortie.push_back( pair >("attributes",vector() ) ); sortie.back().second.push_back(mixedTools::doubleToString(lenghtElem_)); sortie.back().second.push_back(mixedTools::doubleToString(component_)); return sortie; } // void elementSextupole::FileInput(ifstream& ifs) // { // ifs >> specificName_; // ifs >> lenghtElem_ >> component_; // } string elementSextupole::print() { string txt = ""; txt += specificName_; txt += "\nlength (m): "; txt += mixedTools::doubleToString(lenghtElem_); txt += "\ncomponent (m^-3): "; txt += mixedTools::doubleToString(component_); return txt; } void elementSextupole::InputRep(UAPNode* root) { UAPNode* ele = setAMLelementHeader(root); string txt = ""; UAPNode* node = ele->addChild("sextupole"); UAPNode* knl = node->addChild("k"); txt = mixedTools::doubleToString(component_); knl->addAttribute("design",txt); txt = mixedTools::doubleToString(lenghtElem_); ele->addChild("length")->addAttribute("design",txt); } void elementSextupole::FileAMLInput(UAPNode* entree) { if ( !checkAMLelementGenericName(entree) ) return; AMLtools::readAMLParameterAttribut(entree, "length", "design", lenghtElem_); UAPNode* sextupole = entree->getChildByName("sextupole"); if ( ! sextupole ) { cout << " elementSextupole::FileAMLInput ERREUR pas de noeud AML " << endl; return; } AMLtools::readAMLParameterAttribut(sextupole, "k", "design", component_); }