1 /*****************************************************************************/
2 /* 8888888 88888888 88888888 */
5 /* 8 88888888 88888888 */
8 /* 888888 888888888 888888888 */
10 /* A Two-Dimensional General Purpose Semiconductor Simulator. */
13 /* Last update: Oct 17 2005 */
17 /* NINT, No.69 P.O.Box, Xi'an City, China */
19 /*****************************************************************************/
25 #include "phy_scale.h"
28 #include "solverdef.h"
30 #include "../material/matdefine.h"
33 int init_PMI_Semiconductor(CmdBuf
*pcmdbuf
, PMISDefine
& PMIS_define
);
38 PetscScalar kb
; // Boltzmann constant
39 PetscScalar e
; // elementary charge
40 PetscScalar me
; // electron mass
41 PetscScalar eps0
; // electric constant
42 PetscScalar mu0
; // magnetic constant
43 PetscScalar h
; // Planck constant
44 PetscScalar hbar
; // Reduced Planck constant
46 PhysicalConst(PhysicalUnitScale
*unit_scale
);
50 //----------------------------------------------------------------
51 class MatSemiconductor
: public PhysicalConst
54 PhysicalUnitScale
*pscale
;
55 // variables take to tcl script
58 SemiAuxData
*plocal_semi_data
;
61 void * (*set_ad_num
)(const unsigned int);
62 PMIS_BasicParameter
*basic
;
63 PMIS_BandStructure
*band
;
66 PMIS_Thermal
*thermal
;
67 PMIS_Optical
*optical
;
68 void mapping(Node
*, SemiAuxData
*, PetscScalar
);
70 MatSemiconductor(const char *, const char *,PMISDefine
&PMIS_define
,PhysicalUnitScale
*unit_scale
);
75 //----------------------------------------------------------------
76 class MatInsulator
: public PhysicalConst
79 PhysicalUnitScale
*pscale
;
81 ISAuxData
*plocal_is_data
;
84 PMII_BasicParameter
*basic
;
85 PMII_Thermal
*thermal
;
86 PMII_Optical
*optical
;
87 void mapping(Node
*, ISAuxData
*, PetscScalar
);
89 MatInsulator(const char *, const char *,PhysicalUnitScale
*unit_scale
);
94 //----------------------------------------------------------------//```
95 class MatConductor
: public PhysicalConst
98 PhysicalUnitScale
*pscale
;
100 ELAuxData
*plocal_el_data
;
103 PMIC_BasicParameter
*basic
;
104 PMIC_Thermal
*thermal
;
105 PMIC_Optical
*optical
;
106 void mapping(Node
*,ELAuxData
*,PetscScalar
);
108 MatConductor(const char *, const char *,PhysicalUnitScale
*unit_scale
);
113 //----------------------------------------------------------------//```
114 class MatVacuum
: public PhysicalConst
117 PhysicalUnitScale
*pscale
;
119 VacuumAuxData
*plocal_vac_data
;
122 PMIV_BasicParameter
*basic
;
123 PMIV_Thermal
*thermal
;
124 void mapping(Node
*,VacuumAuxData
*,PetscScalar
);
126 MatVacuum(const char *, const char *,PhysicalUnitScale
*unit_scale
);
131 //----------------------------------------------------------------
132 class MatPML
: public PhysicalConst
135 PhysicalUnitScale
*pscale
;
137 PMLAuxData
*plocal_pml_data
;
140 PMIP_BasicParameter
*basic
;
141 PMIP_Thermal
*thermal
;
142 void mapping(Node
*,PMLAuxData
*,PetscScalar
);
144 MatPML(const char *, const char *,PhysicalUnitScale
*unit_scale
);