Xyce  6.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
N_DEV_MaterialLayer.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 // Copyright Notice
3 //
4 // Copyright (c) 2002, 2013, 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.3 $
25 //
26 // Revision Date : $Date: 2014/04/30 23:55:34 $
27 //
28 // Current Owner : $Author: erkeite $
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 
56  MaterialLayer (std::string materialName = std::string("GAAS"));
57  virtual ~MaterialLayer ()
58  {}
59 
60 #ifdef Xyce_DEBUG_DEVICE
61  friend std::ostream & operator<<(std::ostream & os, const MaterialLayer & ml);
62 #endif
63 
64 private:
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  double Nv; // valance band DOS
106 
107  double emass; // electron DOS effective mass
108  bool emassGiven; // electron DOS effective mass given flag
109  double hmass; // hole DOS effective mass
110  bool hmassGiven; // hole DOS effective mass given flag
111 
112  double elmob0; // zero field mobility for electrons (cm2/Vs)
113  bool elmob0Given; // zero field mobility for electrons (cm2/Vs) given flag
114 
115  double elvsat; // saturation veocity for electrons (cm/s)
116  bool elvsatGiven; // saturation veocity for electrons (cm/s) given flag
117  double eleo; // Eo(V/cm) in mobility field dependence
118 
119  double homob0; // zero field mobility for holes (cm2/Vs)
120  bool homob0Given; // zero field mobility for holes (cm2/Vs) given flag
121 
122  double hovsat; // saturation veocity for holes (cm/s)
123  bool hovsatGiven; // saturation veocity for holes (cm/s) given flag
124 
125  double dir; // direct recombination rate coefficient (cm3/s)
126 
127  double augnpp; // Auger recombination rate coefficient for npp (cm3/s)
128  double augpnn; // Auger recombination rate coefficient for pnn (cm3/s)
129 
130  double srh; // SRH rate coeff (inverse lifetime)
131  double srhdet; // energy shift from midgap for SRH
132 
133  double Ni; // intrinsic concentration
134  bool NiGiven; // intrinsic concentration given flag
135  double NiEff; // effective intrinsic concentration, including BGN
136  double width;
138 
141 
142  double temperature;
143 
144  void processParams ();
145 };
146 
147 } // namespace Device
148 } // namespace Xyce
149 
151 
152 #endif
153