#include "elementCell.h" #include #include "mathematicalTools.h" #include "mixedTools.h" elementCell::elementCell() : abstractElement() { setDefaultValues(); setDefaults(); elementName_ = nomdElements("cell"); nbParam_ = elementName_.getElementNbParameters(); parametersString_ = new string[nbParam_+1]; parmelaOk_ = true; } void elementCell::setDefaultValues() { initialPhaseDef_ = 0.0; acceleratingFieldDef_ = 1.0; acceleratingShapeFileDef_ = string(" "); focusingMagFileDef_ = string(" "); offsetMagDef_ = 0.0; scaleFactorDef_ = 1.0; } void elementCell::setDefaults() { initialPhase_ = initialPhaseDef_; acceleratingField_ = acceleratingFieldDef_; acceleratingShapeFile_ = acceleratingShapeFileDef_; focusingMagFile_ = focusingMagFileDef_; offsetMag_ = offsetMagDef_; scaleFactor_ = scaleFactorDef_; } string* elementCell::getParametersString() const { parametersString_[0] = mixedTools::intToString(nbParam_); parametersString_[1] = mixedTools::doubleToString(lenghtElem_); parametersString_[2] = mixedTools::doubleToString(aperture_); parametersString_[3] = mixedTools::doubleToString(initialPhase_); parametersString_[4] = mixedTools::doubleToString( phaseStepMax_); parametersString_[5] = mixedTools::doubleToString(acceleratingField_); parametersString_[6] = acceleratingShapeFile_; parametersString_[7] = focusingMagFile_; parametersString_[8] = mixedTools::doubleToString(offsetMag_); parametersString_[9] = mixedTools::doubleToString(scaleFactor_); return parametersString_; } void elementCell::setParametersString(string* param) { if ( param == NULL ) { cerr << " elementCell::setParametersString parameters empty parameter set"; return; } int nbparam = atoi(param[0].c_str()); if ( nbparam != nbParam_ ) { cerr << " elementCell::setParametersString parameters do not match for a CELL"; return; } lenghtElem_ = atof(param[1].c_str()); aperture_ = atof(param[2].c_str()); initialPhase_ = atof(param[3].c_str()); phaseStepMax_ = atof(param[4].c_str()); acceleratingField_ = atof(param[5].c_str()); acceleratingShapeFile_ = param[6]; focusingMagFile_ = param[7]; offsetMag_ = atof(param[8].c_str()); scaleFactor_ = atof(param[9].c_str()); } string elementCell::parmelaOutputFlow() const { ostringstream sortie; // on prend les troncatures tmax et rmax à 3 sigmas sortie << "CELL /l=" << lenghtElem_ << " /aper=" << aperture_ << endl; sortie << " /iout=1 /phi0=" << initialPhase_ << " /E0=" << acceleratingField_ << endl; sortie << " /nc=1 /dwtmax=" << phaseStepMax_ << " /sym=-1" << endl; sortie << "CFIELD 1" << endl; sortie << acceleratingShapeFile_ << endl; sortie << "POISSON /zoff=" << offsetMag_ << " /rmult=" << scaleFactor_ << endl; sortie << focusingMagFile_; return sortie.str(); } string elementCell::FileOutputFlow() const { ostringstream sortie; // sortie << elementName_.getElementType() << endl; sortie << elementName_.getElementLabel() << endl; sortie << label_ << endl; sortie << lenghtElem_ << " " << aperture_ << endl; sortie << initialPhase_ << " " << acceleratingField_ << endl; sortie << phaseStepMax_ << endl; sortie << acceleratingShapeFile_ << endl; sortie << focusingMagFile_ << endl; sortie << offsetMag_ << " " << scaleFactor_ << endl; return sortie.str(); } void elementCell::FileInput(ifstream& ifs) { ifs >> label_; ifs >> lenghtElem_ >> aperture_; ifs >> initialPhase_ >> acceleratingField_; ifs >> phaseStepMax_; ifs >> acceleratingShapeFile_; ifs >> focusingMagFile_; ifs >> offsetMag_ >> scaleFactor_; }