Xyce  6.1
N_DEV_PDE_Electrode.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 // Copyright Notice
3 //
4 // Copyright 2002 Sandia Corporation. Under the terms
5 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S.
6 // Government retains certain rights in this software.
7 //
8 // Xyce(TM) Parallel Electrical Simulator
9 // Copyright (C) 2002-2015 Sandia Corporation
10 //
11 // This program is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // This program is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with this program. If not, see <http://www.gnu.org/licenses/>.
23 //-----------------------------------------------------------------------------
24 
25 //-------------------------------------------------------------------------
26 // Filename : $RCSfile: N_DEV_PDE_Electrode.h,v $
27 //
28 // Purpose : This is the class for mesh processing/ownership.
29 // of two dimensional meshes.
30 //
31 // Special Notes :
32 //
33 // Creator : Eric R. Keiter, SNL, Parallel Computational Sciences
34 //
35 // Creation Date : 04/21/02
36 //
37 // Revision Information:
38 // ---------------------
39 //
40 // Revision Number: $Revision: 1.16 $
41 //
42 // Revision Date : $Date: 2015/04/08 19:18:25 $
43 //
44 // Current Owner : $Author: tvrusso $
45 //-------------------------------------------------------------------------
46 
47 #ifndef Xyce_N_DEV_PDE_Electrode__h
48 #define Xyce_N_DEV_PDE_Electrode__h
49 
50 #include <N_DEV_CompositeParam.h>
51 
52 
53 namespace Xyce {
54 namespace Device {
55 
56 //-----------------------------------------------------------------------------
57 // Class : PDE_Electrode
58 //
59 // Purpose : This class contains the base class for user
60 // specifications of electrodes.
61 //
62 // Special Notes : In general, this class will ONLY contain info that came
63 // from netlist user-specified vector-composites. It
64 // does not contain much else.
65 //
66 // For both the 1D and 2D device, there are other classes
67 // (such as bcData for 1D and deviceInterfaceNode for 2D),
68 // which contain a lot of other information, such as the
69 // names of the circuit nodes, and all the indexing
70 // information.
71 //
72 // Creator : Eric Keiter
73 // Creation Date : 04/17/03
74 //-----------------------------------------------------------------------------
76 {
77 public:
79  : CompositeParam(parametric_data),
80  name ("ANODE"),// got to call it something...
81  nodeName("node1"),
82  bcName("bc1"),
83  material ("neutral"),
84  materialGiven(false),
85  oxideBndryFlag(false),
86  oxthick(0.0),
87  oxcharge(0.0)
88  {};
89 
90  virtual ~PDE_Electrode () {}
91 
92 private:
94 
95 public:
96  virtual void processParams () {}
97 
98 public:
99  std::string name; // name of the electrode.
100  std::string nodeName; // name of the ckt node.
101  std::string bcName; // name of the bc.
102  std::string material;
105  double oxthick;
106  double oxcharge;
107 
108 };
109 
110 //-----------------------------------------------------------------------------
111 // Class : PDE_1DElectrode
112 // Purpose : This class contains user specification of a 1D electrode.
113 //
114 // Special Notes :
115 //
116 // Creator : Eric Keiter
117 // Creation Date : 04/17/03
118 //-----------------------------------------------------------------------------
120 {
122 
123 public:
125 
126  PDE_1DElectrode ();
127 
128  virtual ~PDE_1DElectrode () {}
129  virtual void processParams ();
130 
131 private:
133 
134 public:
135  double area;
136  bool areaGiven;
137  double location;
138  bool sideGiven;
139  std::string side; // this class implicitly assumes that the device is
140  // one dimensional. The options for side in this
141  // class are: left (x=0), middle (0<x<xmax), right (x=xmax)
142 
143 };
144 
145 //-----------------------------------------------------------------------------
146 // Class : PDE_2DElectrode
147 // Purpose : This class contains user specification of a 2D electrode.
148 //
149 // Special Notes :
150 //
151 // Creator : Eric Keiter
152 // Creation Date : 04/17/03
153 //-----------------------------------------------------------------------------
155 {
157 
158 public:
160 
161  PDE_2DElectrode ();
162 
163  virtual ~PDE_2DElectrode () {}
164  virtual void processParams ();
165 
166 private:
168 
169 public:
170  double start; // beginning location.
171  double end; // ending location.
172 
173  bool startGiven; // beginning location.
174  bool endGiven; // ending location.
175 
176  bool sideGiven;
177  std::string side; // this class implicitly assumes that
178  // the device is a 4-sided parallelogram. Any
179  // electrode, therefore, is on the top, bottom, left,
180  // or right side.
181 
182  int iA, iB;
183  int uLabel; // label index
184 };
185 
186 } // namespace Device
187 } // namespace Xyce
188 
189 #endif
Pure virtual class to augment a linear system.
virtual void processParams()
processParams post processes the parameters that have been set in the object of the derived class...
static ParametricData< PDE_2DElectrode > & getParametricData()
static ParametricData< PDE_1DElectrode > & getParametricData()
PDE_Electrode(ParametricData< void > &parametric_data)
Class ParametricData manages the configuration information and the parameter binding map...
Definition: N_DEV_Pars.h:1303
virtual void processParams()
processParams post processes the parameters that have been set in the object of the derived class...
Manages parameter binding for class C.
Definition: N_DEV_Pars.h:214
virtual void processParams()
processParams post processes the parameters that have been set in the object of the derived class...
CompositeParam is the base class for classes that wish to only manage the processing of parameter dat...