diff options
author | Ruben Undheim <ruben.undheim@gmail.com> | 2016-07-05 18:02:38 +0200 |
---|---|---|
committer | Ruben Undheim <ruben.undheim@gmail.com> | 2016-07-05 18:02:38 +0200 |
commit | ef962f6008f25ab7cbd4ca21bcc72b97a1e2d76f (patch) | |
tree | 8149bee93d1a3f91d4503bfb3853adac4af0a85e /CSXCAD/src/CSPropExcitation.h |
Imported Upstream version 0.0.34
Diffstat (limited to 'CSXCAD/src/CSPropExcitation.h')
-rw-r--r-- | CSXCAD/src/CSPropExcitation.h | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/CSXCAD/src/CSPropExcitation.h b/CSXCAD/src/CSPropExcitation.h new file mode 100644 index 0000000..5cd166c --- /dev/null +++ b/CSXCAD/src/CSPropExcitation.h @@ -0,0 +1,114 @@ +/* +* 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/>. +*/ + +#pragma once + +#include "CSProperties.h" + +//! Continuous Structure Excitation Property +/*! + This Property defines an excitation which can be location and direction dependent. + */ +class CSXCAD_EXPORT CSPropExcitation : public CSProperties +{ +public: + CSPropExcitation(ParameterSet* paraSet,unsigned int number=0); + CSPropExcitation(CSProperties* prop); + CSPropExcitation(unsigned int ID, ParameterSet* paraSet); + virtual ~CSPropExcitation(); + + //! Get PropertyType as a xml element name \sa PropertyType and GetType + virtual const std::string GetTypeXMLString() const {return std::string("Excitation");} + + //! Set the number for this excitation + void SetNumber(unsigned int val); + //! Get the number for this excitation + unsigned int GetNumber(); + + //! Set the excitation type + void SetExcitType(int val); + //! Get the excitation type + int GetExcitType(); + + //! Set the active direction for the source, only necessary with hard sources (by default all active) + void SetActiveDir(bool active, int Component=0); + //! Get the active direction for the source, only necessary with hard sources (by default all active) + bool GetActiveDir(int Component=0); + + //! Set the excitation frequency + void SetFrequency(double val) {m_Frequency.SetValue(val);} + //! Set the excitation frequency + void SetFrequency(const std::string val) {m_Frequency.SetValue(val);} + //! Get the excitation frequency + double GetFrequency() {return m_Frequency.GetValue();} + //! Get the excitation frequency as a string + const std::string GetFrequencyString() {return m_Frequency.GetValueString();} + + //! Set the excitation amplitude for a given component + void SetExcitation(double val, int Component=0); + //! Set the excitation amplitude for a given component + void SetExcitation(const std::string val, int Component=0); + //! Get the excitation amplitude for a given component + double GetExcitation(int Component=0); + //! Get the excitation amplitude as a string for a given component + const std::string GetExcitationString(int Comp=0); + + //! Set a weighting factor for the given component. This will override the weighting function! + void SetWeight(double val, int ny); + //! Set a weighting function for the given excitation component + int SetWeightFunction(const std::string fct, int ny); + //! Get the weighting function for the given excitation component + const std::string GetWeightFunction(int ny); + + double GetWeightedExcitation(int ny, const double* coords); + + //! Set the propagation direction for a given component + void SetPropagationDir(double val, int Component=0); + //! Set the propagation direction for a given component + void SetPropagationDir(const std::string val, int Component=0); + //! Get the propagation direction for a given component + double GetPropagationDir(int Component=0); + //! Get the propagation direction as a string for a given component + const std::string GetPropagationDirString(int Comp=0); + + //! Set the excitation delay + void SetDelay(double val); + //! Set the excitation delay + void SetDelay(const std::string val); + //! Get the excitation delay + double GetDelay(); + //! Get the excitation delay as a string + const std::string GetDelayString(); + + virtual void Init(); + virtual bool Update(std::string *ErrStr=NULL); + + virtual bool Write2XML(TiXmlNode& root, bool parameterised=true, bool sparse=false); + virtual bool ReadFromXML(TiXmlNode &root); + + virtual void ShowPropertyStatus(std::ostream& stream); + +protected: + unsigned int uiNumber; + int iExcitType; + bool ActiveDir[3]; + ParameterScalar m_Frequency; + ParameterScalar Excitation[3]; // excitation amplitude vector + ParameterScalar WeightFct[3]; // excitation amplitude weighting function + ParameterScalar PropagationDir[3]; // direction of propagation (should be a unit vector), needed for plane wave excitations + ParameterScalar Delay; // excitation delay only, for time-domain solver e.g. FDTD +}; |