Xyce
6.1
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
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.13.2.1 $
41
//
42
// Revision Date : $Date: 2014/02/26 20:16:31 $
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
//-----------------------------------------------------------------------------
75
class
PDE_Electrode
:
public
CompositeParam
76
{
77
public
:
78
PDE_Electrode
(
ParametricData<void>
¶metric_data)
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
:
93
PDE_Electrode
(
const
PDE_Electrode
&);
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
;
103
bool
materialGiven
;
104
bool
oxideBndryFlag
;
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
//-----------------------------------------------------------------------------
119
class
PDE_1DElectrode
:
public
PDE_Electrode
120
{
121
friend
class
ParametricData
<
PDE_1DElectrode
>;
122
123
public
:
124
static
ParametricData<PDE_1DElectrode>
&
getParametricData
();
125
126
PDE_1DElectrode
();
127
128
virtual
~PDE_1DElectrode
() {}
129
virtual
void
processParams
();
130
131
private
:
132
PDE_1DElectrode
(
const
PDE_1DElectrode
&);
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
//-----------------------------------------------------------------------------
154
class
PDE_2DElectrode
:
public
PDE_Electrode
155
{
156
friend
class
ParametricData
<
PDE_2DElectrode
>;
157
158
public
:
159
static
ParametricData<PDE_2DElectrode>
&
getParametricData
();
160
161
PDE_2DElectrode
();
162
163
virtual
~PDE_2DElectrode
() {}
164
virtual
void
processParams
();
165
166
private
:
167
PDE_2DElectrode
(
const
PDE_2DElectrode
&);
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
typedef
Xyce::Device::PDE_Electrode
N_DEV_PDE_Electrode
;
190
typedef
Xyce::Device::PDE_1DElectrode
N_DEV_PDE_1DElectrode
;
191
typedef
Xyce::Device::PDE_2DElectrode
N_DEV_PDE_2DElectrode
;
192
193
#endif
src
DeviceModelPKG
TCADModels
include
N_DEV_PDE_Electrode.h
Generated on Mon Mar 24 2014 10:54:39 for Xyce by
1.8.3.1