1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
/*
* Copyright (C) 2008-2012 Thorsten Liebig (Thorsten.Liebig@gmx.de)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "tinyxml.h"
#include "CSPropConductingSheet.h"
CSPropConductingSheet::CSPropConductingSheet(ParameterSet* paraSet) : CSPropMetal(paraSet) {Type=(CSProperties::PropertyType)(CONDUCTINGSHEET | METAL);Init();}
CSPropConductingSheet::CSPropConductingSheet(CSProperties* prop) : CSPropMetal(prop) {Type=(CSProperties::PropertyType)(CONDUCTINGSHEET | METAL);Init();}
CSPropConductingSheet::CSPropConductingSheet(unsigned int ID, ParameterSet* paraSet) : CSPropMetal(ID,paraSet) {Type=(CSProperties::PropertyType)(CONDUCTINGSHEET | METAL);Init();}
CSPropConductingSheet::~CSPropConductingSheet()
{
}
void CSPropConductingSheet::Init()
{
Conductivity.SetValue(0);
Thickness.SetValue(0);
}
bool CSPropConductingSheet::Update(std::string *ErrStr)
{
int EC=Conductivity.Evaluate();
bool bOK=true;
if (EC!=ParameterScalar::NO_ERROR) bOK=false;
if ((EC!=ParameterScalar::NO_ERROR) && (ErrStr!=NULL))
{
std::stringstream stream;
stream << std::endl << "Error in ConductingSheet-Property Conductivity-Value";
ErrStr->append(stream.str());
PSErrorCode2Msg(EC,ErrStr);
}
EC=Thickness.Evaluate();
if (EC!=ParameterScalar::NO_ERROR) bOK=false;
if ((EC!=ParameterScalar::NO_ERROR) && (ErrStr!=NULL))
{
std::stringstream stream;
stream << std::endl << "Error in ConductingSheet-Property Thickness-Value";
ErrStr->append(stream.str());
PSErrorCode2Msg(EC,ErrStr);
}
return bOK & CSPropMetal::Update(ErrStr);
}
bool CSPropConductingSheet::Write2XML(TiXmlNode& root, bool parameterised, bool sparse)
{
if (CSPropMetal::Write2XML(root,parameterised,sparse) == false) return false;
TiXmlElement* prop=root.ToElement();
if (prop==NULL) return false;
WriteTerm(Conductivity,*prop,"Conductivity",parameterised);
WriteTerm(Thickness,*prop,"Thickness",parameterised);
return true;
}
bool CSPropConductingSheet::ReadFromXML(TiXmlNode &root)
{
if (CSProperties::ReadFromXML(root)==false) return false;
TiXmlElement* prop=root.ToElement();
if (prop==NULL) return false;
if (ReadTerm(Conductivity,*prop,"Conductivity")==false)
std::cerr << "CSPropConductingSheet::ReadFromXML: Warning: Failed to read Conductivity. Set to 0." << std::endl;
if (ReadTerm(Thickness,*prop,"Thickness")==false)
std::cerr << "CSPropConductingSheet::ReadFromXML: Warning: Failed to read Thickness. Set to 0." << std::endl;
return true;
}
void CSPropConductingSheet::ShowPropertyStatus(std::ostream& stream)
{
CSPropMetal::ShowPropertyStatus(stream);
stream << " --- Conducting Sheet Properties --- " << std::endl;
stream << " Conductivity: " << Conductivity.GetValueString() << std::endl;
stream << " Thickness: " << Thickness.GetValueString() << std::endl;
}
|