#include "elementBend.h" #include "mixedTools.h" #include "mathematicalConstants.h" elementBend::elementBend() : abstractElement() { setDefaultValues(); setDefaults(); elementName_ = nomdElements("bend"); nbParam_ = elementName_.getElementNbParameters(); parametersString_ = new string[nbParam_+1]; transportOk_ = true; // transportElementName_ = "*SBEND*"; } void elementBend::setDefaultValues() { angleDegDef_ = 0.0; radiusDef_ = 1.0; beta1Def_ = 0.0; beta2Def_ = 0.0; } void elementBend::setDefaults() { angleDeg_ = angleDegDef_; radius_ = radiusDef_; beta1_ = beta1Def_; beta2_ = beta2Def_; } string* elementBend::getParametersString() const { parametersString_[0] = mixedTools::intToString(nbParam_); parametersString_[1] = mixedTools::doubleToString( angleDeg_); parametersString_[2] = mixedTools::doubleToString(radiusDef_); parametersString_[3] = mixedTools::doubleToString(aperture_); parametersString_[4] = mixedTools::doubleToString(beta1_); parametersString_[5] = mixedTools::doubleToString(beta2_); return parametersString_; } double elementBend::getLenghtOfElement() const { return 1.0e2 * radius_ * angleDeg_ * DEG_TO_RADIANS; } void elementBend::setParametersString(string* param) { if ( param == NULL ) { cerr << " elementBend::setParametersString parameters empty parameter set"; return; } int nbparam = atoi(param[0].c_str()); if ( nbparam != nbParam_ ) { cerr << " elementBend::setParametersString parameters do not match for a BEND"; return; } angleDeg_ = atof(param[1].c_str()); radius_ = atof(param[2].c_str()); aperture_ = atof(param[3].c_str()); beta1_ = atof(param[4].c_str()); beta2_ = atof(param[5].c_str()); // calcul de la longueur : rayon en m ; longueur en cm lenghtElem_ = getLenghtOfElement(); cout << " elementBend::setParametersString calcule longueur = " << lenghtElem_ << endl; } string elementBend::transportOutputFlow() const { ostringstream sortie; sortie << label_ << ":" << " SBEND, RADIUS=" << radius_ << ", ANGLE=" << angleDeg_ << ", E1=" << beta1_ << ", E2=" << beta2_ << ";"; return sortie.str(); } string elementBend::FileOutputFlow() const { ostringstream sortie; // sortie << elementName_.getElementType() << endl; sortie << elementName_.getElementLabel() << endl; sortie << label_ << endl; sortie << angleDeg_ << " " << radius_ << " " << aperture_ << endl; sortie << beta1_ << " " << beta2_ << endl; return sortie.str(); } void elementBend::FileInput(ifstream& ifs) { ifs >> label_; ifs >> angleDeg_ >> radius_ >> aperture_; ifs >> beta1_ >> beta2_; lenghtElem_ = getLenghtOfElement(); cout << " elementBend::FileInput calcule longueur = " << lenghtElem_ << endl; }