Xyce  6.1
N_DEV_MaterialLayer.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 // Copyright Notice
3 //
4 // Copyright (c) 2002-2015, Sandia Corporation, Albuquerque, NM, USA. Under the
5 // terms of Contract DE-AC04-94AL85000, there is a non-exclusive license for
6 // use of this work by or on behalf of the U.S. Government. Export of this
7 // program may require a license from the United States Government.
8 //-----------------------------------------------------------------------------
9 
10 //-----------------------------------------------------------------------------
11 // Filename : $RCSfile: N_DEV_MaterialLayer.h,v $
12 //
13 // Purpose :
14 //
15 // Special Notes :
16 //
17 // Creator : Eric R. Keiter, SNL, Parallel Computational Sciences
18 //
19 // Creation Date : 02/28/00
20 //
21 // Revision Information:
22 // ---------------------
23 //
24 // Revision Number: $Revision: 1.7.2.1 $
25 //
26 // Revision Date : $Date: 2015/04/02 18:29:38 $
27 //
28 // Current Owner : $Author: tvrusso $
29 //-----------------------------------------------------------------------------
30 
31 #ifndef Xyce_N_DEV_MaterialLayer_h
32 #define Xyce_N_DEV_MaterialLayer_h
33 
34 #include <string>
35 
36 #include <N_DEV_CompositeParam.h>
37 #include <N_DEV_MaterialSupport.h>
38 
39 namespace Xyce {
40 namespace Device {
41 
42 //-----------------------------------------------------------------------------
43 // Class : MaterialLayer
44 // Purpose :
45 // Special Notes :
46 // Creator : Eric Keiter, SNL
47 // Creation Date : 7/14/11
48 //-----------------------------------------------------------------------------
50 {
52 
53 public:
55 
57  std::string materialName = std::string("gaas"),
58  double donor = 0.0,
59  double acceptor = 5.00E+19
60  );
61  virtual ~MaterialLayer ()
62  {}
63 
64  friend std::ostream & operator<<(std::ostream & os, const MaterialLayer & ml);
65 
66 public:
67  std::string name;
68  bool nameGiven;
69  std::string material;
71  int NX;
72  bool NXGiven;
73  int LX;
74  int begin; // beginning mesh point
75  int end; // end mesh point +1
76 
77  //////////////////////////////////////
78  double diel; // dielectric constant
79  bool dielGiven; // dielectric constant given flag
80 
81  double Ec; // conduction band edge
82  bool EcGiven; // conduction band edge given flag
83  double Ev; // valance band edge
84  bool EvGiven ; // valance band edge given flag
85  double EcEff; // conduction band edge, including BGN
86  double EvEff; // valance band edge, including BGN
87 
88  double bg; // bandgap
89  double bgEff; // effective bandgap (including band-gap narrowing, bgn)
90 
91  double Cdonor; // n doping concentration
92  bool CdonorGiven; // n doping concentration given flag
93  double Cacceptor; // p doping concentration
94  bool CacceptorGiven; // p doping concentration given flag
95 
96  double narco; // band gap narrowing of conduction band
97  bool narcoGiven; // band gap narrowing of conduction band given flag
98  double narva; // band gap narrowing of valence band
99  bool narvaGiven; // band gap narrowing of valence band given flag
100 
101  double dnco; // conduction band density of states multiplier = (md*/mo)^3/2
102  double dnva; // valence band density of states multiplier = (md*/mo)^3/2
103 
104  double Nc; // conduction band DOS
105  bool NcGiven;
106  double Nv; // valance band DOS
107  bool NvGiven;
108 
109  double emass; // electron DOS effective mass
110  bool emassGiven; // electron DOS effective mass given flag
111  double hmass; // hole DOS effective mass
112  bool hmassGiven; // hole DOS effective mass given flag
113 
114  double elmob0; // zero field mobility for electrons (cm2/Vs)
115  bool elmob0Given; // zero field mobility for electrons (cm2/Vs) given flag
116 
117  double elvsat; // saturation veocity for electrons (cm/s)
118  bool elvsatGiven; // saturation veocity for electrons (cm/s) given flag
119  double eleo; // Eo(V/cm) in mobility field dependence
120 
121  double homob0; // zero field mobility for holes (cm2/Vs)
122  bool homob0Given; // zero field mobility for holes (cm2/Vs) given flag
123 
124  double hovsat; // saturation veocity for holes (cm/s)
125  bool hovsatGiven; // saturation veocity for holes (cm/s) given flag
126 
127  double dir; // direct recombination rate coefficient (cm3/s)
128  bool dirGiven; // direct recombination rate coefficient (cm3/s) given flag
129 
130  double augnpp; // Auger recombination rate coefficient for npp (cm3/s)
131  double augpnn; // Auger recombination rate coefficient for pnn (cm3/s)
132  bool augnppGiven; // Auger recombination rate coefficient for npp (cm3/s) given flag
133  bool augpnnGiven; // Auger recombination rate coefficient for pnn (cm3/s) given flag
134 
135  double srh; // SRH rate coeff (inverse lifetime)
136  double srhdet; // energy shift from midgap for SRH
137 
138  double Ni; // intrinsic concentration
139  bool NiGiven; // intrinsic concentration given flag
140  double NiEff; // effective intrinsic concentration, including BGN
141  double width;
143 
146 
147  double temperature;
148 
151  double holeThermalV;
157 
158  void processParams ();
159 };
160 
161 } // namespace Device
162 } // namespace Xyce
163 
164 #endif
165 
static ParametricData< MaterialLayer > & getParametricData()
Pure virtual class to augment a linear system.
friend std::ostream & operator<<(std::ostream &os, const MaterialLayer &ml)
MaterialLayer(std::string materialName=std::string("gaas"), double donor=0.0, double acceptor=5.00E+19)
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
CompositeParam is the base class for classes that wish to only manage the processing of parameter dat...