Xyce  6.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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-2014 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.14 $
41 //
42 // Revision Date : $Date: 2014/03/19 17:23:30 $
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 
192 
193 #endif