1 /* 2 * Copyright (C) 2010 Thorsten Liebig (Thorsten.Liebig@gmx.de) 3 * 4 * This program is free software: you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation, either version 3 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 #ifndef OPERATOR_EXT_DISPERSIVE_H 19 #define OPERATOR_EXT_DISPERSIVE_H 20 21 //#include "operator.h" 22 #include "operator_extension.h" 23 #include "vector" 24 25 //! Abstract base class for all dispersive material models, based on an ADE (additional differential equation) 26 class Operator_Ext_Dispersive : public Operator_Extension 27 { 28 friend class Engine_Ext_Dispersive; 29 public: 30 virtual ~Operator_Ext_Dispersive(); 31 GetDispersionOrder()32 virtual int GetDispersionOrder() {return m_Order;} 33 GetExtensionName()34 virtual std::string GetExtensionName() const {return std::string("Dispersive Material Abstract Base class");} 35 36 virtual void ShowStat(std::ostream &ostr) const; 37 38 protected: 39 Operator_Ext_Dispersive(Operator* op); 40 //! Copy constructor 41 Operator_Ext_Dispersive(Operator* op, Operator_Ext_Dispersive* op_ext); 42 43 //! Dispersive order 44 int m_Order; 45 46 //! Dispersive material count 47 std::vector<unsigned int> m_LM_Count; 48 //! Index with dispersive material 49 // Array setup: m_LM_pos[N_order][direction][mesh_pos] 50 unsigned int ***m_LM_pos; 51 52 bool *m_curr_ADE_On; 53 bool *m_volt_ADE_On; 54 }; 55 56 #endif // OPERATOR_EXT_DISPERSIVE_H 57