#include #include "elementMultipole.h" #include "mixedTools.h" elementMultipole::elementMultipole() : abstractElement() { defaultSpecificName_ = "mpole"; specificName_ = defaultSpecificName_; order_ = 0; component_ = 0.0; elementName_ = nomdElements("mpole"); nbParam_ = elementName_.getElementNbParameters(); parametersString_ = new string[nbParam_+1]; } string* elementMultipole::getParametersString() const { int compteur = -1; parametersString_[++compteur]= mixedTools::intToString(nbParam_); parametersString_[++compteur]= specificName_; parametersString_[++compteur]= mixedTools::intToString(order_); parametersString_[++compteur]= mixedTools::doubleToString(component_); if ( compteur != nbParam_ ) { cerr << "ERROR::elementMultipole::getParametersString() : " << nbParam_ << endl; return NULL; } else { return parametersString_; } } void elementMultipole::setParametersString(string* param) { if ( param == NULL ) { cerr << "elementMultipole::setParametersString:: empty parameter set" << endl; return; } int compteur = -1; int nbparam = atoi(param[++compteur].c_str()); if ( nbparam != nbParam_ ) { cerr << "elementMultipole::setParametersString:: parameters do not match for a multipole"; return; } specificName_ = param[++compteur]; order_ = atoi(param[++compteur].c_str()); component_ = atof(param[++compteur].c_str()); } string elementMultipole::FileOutputFlow() const { ostringstream sortie; sortie << elementName_.getGenericLabel() << endl; sortie << specificName_ << endl; sortie << order_ << " " << component_ < > > elementMultipole::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 >("KnL",vector() ) ); sortie.back().second.push_back(mixedTools::intToString(order_)); sortie.back().second.push_back(mixedTools::doubleToString(component_)); return sortie; } void elementMultipole::FileInput(ifstream& ifs) { ifs >> specificName_; ifs >> order_ >> component_; } string elementMultipole::print() { string txt = ""; txt += specificName_; txt += "\nnth order : "; txt += mixedTools::intToString(order_); txt += "\ncomponent (m^-n): "; txt += mixedTools::doubleToString(component_); return txt; } void elementMultipole::InputRep(UAPNode* root) { UAPNode* ele = root->addChild("element"); ele->addAttribute("name",specificName_); string txt = ""; UAPNode* node = ele->addChild("multipole"); node->addAttribute("at","CENTER"); UAPNode* knl = node->addChild("kl"); txt = mixedTools::intToString(order_); knl->addAttribute("n",txt); txt = mixedTools::doubleToString(component_); knl->addAttribute("design",txt); }