1 /*****************************************************************************/
2 /* 8888888 88888888 88888888 */
5 /* 8 88888888 88888888 */
8 /* 888888 888888888 888888888 */
10 /* A Two-Dimensional General Purpose Semiconductor Simulator. */
13 /* Last update: Feb 26, 2007 */
17 /* NINT, No.69 P.O.Box, Xi'an City, China */
19 /*****************************************************************************/
22 #include "bzonedata.h"
23 #include "petscsnes.h"
25 #include "solverdef.h"
28 //----------------------------------------------------------------
29 //The Vacuum zone,only used for EM solver
30 //----------------------------------------------------------------
31 class VacuumZone
: public BZoneData
37 int Init(ZONE
*,double,PhysicalUnitScale
*);
40 VacuumZone() {mt
=0; fs
=0; aux
=0;}
41 ~VacuumZone() {delete mt
; delete [] fs
; delete [] aux
;}
45 //----------------------------------------------------------------
46 //The PML zone,only used for EM solver
47 //----------------------------------------------------------------
48 class PMLZone
: public BZoneData
54 int Init(ZONE
*,double,PhysicalUnitScale
*);
57 PMLZone() {mt
=0; fs
=0; aux
=0;}
58 ~PMLZone() {delete mt
; delete [] fs
; delete [] aux
;}
61 //----------------------------------------------------------------
63 //----------------------------------------------------------------
64 class ISZone
: public BZoneData
70 vector
<int> electrode
;
72 void F1_ddm_inner(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &);
73 void F1_ddm_gatebc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
74 void F1_ddm_semiconductor_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, SMCZone
*,int);
75 void F1_ddm_electrode_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, ElZone
*,int);
76 void F1_ddm_insulator_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, ISZone
*,int);
77 void F1_ddm_chargebc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
78 void F1_gate_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
79 void F1_charge_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
80 void J1_ddm_inner(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &);
81 void J1_ddm_gatebc(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
82 void J1_ddm_semiconductor_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
83 void J1_ddm_electrode_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ElZone
*,int);
84 void J1_ddm_insulator_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
85 void J1_ddm_chargebc(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
86 void J1_gate_electrode(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
87 void J1_charge_electrode(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&);
88 void F1_efield_update(PetscScalar
*,vector
<int> &, DABC
&,vector
<BZoneData
*>);
90 void AC1_ddm_inner (int, PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &);
91 void AC1_ddm_gatebc(int ,PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &,DABC
&);
92 void AC1_ddm_chargebc(int ,PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &,DABC
&);
93 void AC1_ddm_semiconductor_insulator_interface(int ,PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &,DABC
&, SMCZone
*,int);
94 void AC1_ddm_electrode_insulator_interface(int ,PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &,DABC
&, ElZone
*,int);
95 void AC1_ddm_insulator_insulator_interface(int ,PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &,DABC
&, ISZone
*,int);
96 void AC1_gate_electrode(int ,PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &, DABC
&, PetscScalar
);
97 void AC1_charge_electrode(int ,PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &, DABC
&);
98 void AC1_gate_electrode_current(int ,PetscScalar
, PetscScalar
*, Vec
*, vector
<int> &, DABC
&, PetscScalar
,PetscScalar
&, PetscScalar
&);
100 void F1_mix_ddm_gatebc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
101 void J1_mix_ddm_gatebc(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
102 void F1_mix_gate_electrode_current(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
103 void F1_mix_gate_electrode_Load(int , double &, PetscScalar
&, Vec
&, Vec
&, PetscScalar
*,Mat
*, ODE_Formula
&, vector
<int> &, DABC
&,PetscScalar
);
105 //--------------------------------------------------------------------------------------------------------
106 void F2_ddm_inner(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &);
107 void F2_ddm_neumannbc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
108 void F2_ddm_gatebc_segment(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
109 void F2_ddm_gatebc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
110 void F2_ddm_chargebc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ElZone
*,int);
111 void F2_ddm_semiconductor_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
112 void F2_ddm_electrode_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ElZone
*,int);
113 void F2_ddm_insulator_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
114 void F2_gate_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
115 void F2_charge_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
116 void J2_ddm_inner(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &);
117 void J2_ddm_neumannbc(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
118 void J2_ddm_gatebc_segment(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
119 void J2_ddm_gatebc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
120 void J2_ddm_chargebc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
121 void J2_ddm_semiconductor_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
122 void J2_ddm_electrode_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ElZone
*,int);
123 void J2_ddm_insulator_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
124 void J2_gate_electrode(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
125 void J2_charge_electrode(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&);
126 void F2_efield_update(PetscScalar
*,vector
<int> &, DABC
&,vector
<BZoneData
*>);
128 void F2_mix_ddm_gatebc_segment(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
129 void F2_mix_ddm_gatebc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
130 void J2_mix_ddm_gatebc_segment(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
131 void J2_mix_ddm_gatebc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
132 void F2_mix_gate_electrode_current(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
133 void F2_mix_gate_electrode_Load(int , double &, PetscScalar
&, Vec
&, Vec
&, PetscScalar
*,Mat
*, ODE_Formula
&, vector
<int> &, DABC
&,PetscScalar
);
135 //--------------------------------------------------------------------------------------------------------
136 void F3_ddm_inner(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &);
137 void F3_ddm_neumannbc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
138 void F3_ddm_gatebc_segment(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
139 void F3_ddm_gatebc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
140 void F3_ddm_chargebc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ElZone
*,int);
141 void F3_ddm_semiconductor_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
142 void F3_ddm_electrode_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ElZone
*,int);
143 void F3_ddm_insulator_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
144 void F3_gate_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
145 void F3_charge_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
146 void J3_ddm_inner(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &);
147 void J3_ddm_neumannbc(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
148 void J3_ddm_gatebc_segment(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
149 void J3_ddm_gatebc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
150 void J3_ddm_chargebc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
151 void J3_ddm_semiconductor_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
152 void J3_ddm_electrode_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ElZone
*,int);
153 void J3_ddm_insulator_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
154 void J3_gate_electrode(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
155 void J3_charge_electrode(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&);
156 void F3_efield_update(PetscScalar
*,vector
<int> &, DABC
&,vector
<BZoneData
*>);
158 //--------------------------------------------------------------------------------------------------------
159 void F1Q_ddm_inner(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &);
160 void F1Q_ddm_gatebc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
161 void F1Q_ddm_semiconductor_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, SMCZone
*,int);
162 void F1Q_ddm_electrode_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, ElZone
*,int);
163 void F1Q_ddm_insulator_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, ISZone
*,int);
164 void F1Q_ddm_chargebc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
165 void F1Q_gate_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
166 void F1Q_charge_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
167 void J1Q_ddm_inner(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &);
168 void J1Q_ddm_gatebc(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
169 void J1Q_ddm_semiconductor_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
170 void J1Q_ddm_electrode_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ElZone
*,int);
171 void J1Q_ddm_insulator_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
172 void J1Q_ddm_chargebc(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
173 void J1Q_gate_electrode(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
174 void J1Q_charge_electrode(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&);
175 void F1Q_efield_update(PetscScalar
*,vector
<int> &, DABC
&,vector
<BZoneData
*>);
177 //--------------------------------------------------------------------------------------------------------
179 int import_solution(char *,char *,DABC
&,PhysicalUnitScale
*);
180 int export_solution(char *,char *,DABC
&,PhysicalUnitScale
*);
182 int Init(ZONE
*,double,PhysicalUnitScale
*);
185 ISZone() {mt
=0; fs
=0; aux
=0;}
186 ~ISZone() {delete mt
; delete [] fs
; delete [] aux
;}
190 //----------------------------------------------------------------
192 //----------------------------------------------------------------
193 class ElZone
: public BZoneData
200 vector
<int> electrode
;
202 //--------------------------------------------------------------------------------------------------------
203 void F1_ddm_inner(int , PetscScalar
*,PetscScalar
*, ODE_Formula
&, vector
<int> & );
204 void F1_ddm_om_contact(int ,PetscScalar
*,PetscScalar
*, ODE_Formula
&, vector
<int> & , DABC
&,SMCZone
*, int );
205 void F1_ddm_stk_contact(int ,PetscScalar
*,PetscScalar
*, ODE_Formula
&, vector
<int> & , DABC
&,SMCZone
*, int );
206 void F1_ddm_gate_contact(int ,PetscScalar
*,PetscScalar
*, ODE_Formula
&, vector
<int> & , DABC
&,ISZone
*, int );
207 void F1_ddm_charge_contact(int ,PetscScalar
*,PetscScalar
*, ODE_Formula
&, vector
<int> & , DABC
&,ISZone
*, int );
208 void J1_ddm_inner(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &);
209 void J1_ddm_om_contact(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
210 void J1_ddm_stk_contact(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
211 void J1_ddm_gate_contact(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
212 void J1_ddm_charge_contact(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
213 //--------------------------------------------------------------------------------------------------------
214 void AC1_ddm_inner (int, PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &);
215 void AC1_ddm_om_contact(int ,PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &,DABC
&, SMCZone
*,int);
216 void AC1_ddm_stk_contact(int ,PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &,DABC
&, SMCZone
*,int);
217 void AC1_ddm_gate_contact(int ,PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &,DABC
&, ISZone
*,int);
218 void AC1_ddm_charge_contact(int ,PetscScalar
, PetscScalar
*, Vec
*, Mat
*, vector
<int> &,DABC
&, ISZone
*,int);
219 //--------------------------------------------------------------------------------------------------------
220 void F2_ddm_inner(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &);
221 void F2_ddm_neumannbc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
222 void F2_ddm_ombc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
223 void F2_ddm_stkbc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
224 void F2_ddm_gatebc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
225 void F2_ddm_chargebc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
226 void F2_ddm_elec_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
227 void J2_ddm_inner(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &);
228 void J2_ddm_neumannbc(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
229 void J2_ddm_ombc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
230 void J2_ddm_stkbc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
231 void J2_ddm_gatebc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
232 void J2_ddm_chargebc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ISZone
*,int);
233 void J2_ddm_elec_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
234 //--------------------------------------------------------------------------------------------------------
235 void F3_ddm_inner(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &);
236 void F3_ddm_neumannbc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
237 void F3_ddm_ombc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
238 void F3_ddm_stkbc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
239 void F3_ddm_gatebc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
240 void F3_ddm_chargebc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
241 void F3_ddm_elec_insulator_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
242 void J3_ddm_inner(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &);
243 void J3_ddm_neumannbc(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
244 void J3_ddm_ombc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
245 void J3_ddm_stkbc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
246 void J3_ddm_gatebc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
247 void J3_ddm_chargebc_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ISZone
*,int);
248 void J3_ddm_elec_insulator_interface(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
249 //--------------------------------------------------------------------------------------------------------
250 void F1Q_ddm_inner(int , PetscScalar
*,PetscScalar
*, ODE_Formula
&, vector
<int> & );
251 void F1Q_ddm_om_contact(int ,PetscScalar
*,PetscScalar
*, ODE_Formula
&, vector
<int> & , DABC
&,SMCZone
*, int );
252 void F1Q_ddm_stk_contact(int ,PetscScalar
*,PetscScalar
*, ODE_Formula
&, vector
<int> & , DABC
&,SMCZone
*, int );
253 void F1Q_ddm_gate_contact(int ,PetscScalar
*,PetscScalar
*, ODE_Formula
&, vector
<int> & , DABC
&,ISZone
*, int );
254 void F1Q_ddm_charge_contact(int ,PetscScalar
*,PetscScalar
*, ODE_Formula
&, vector
<int> & , DABC
&,ISZone
*, int );
255 void J1Q_ddm_inner(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &);
256 void J1Q_ddm_om_contact(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
257 void J1Q_ddm_stk_contact(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
258 void J1Q_ddm_gate_contact(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
259 void J1Q_ddm_charge_contact(int ,PetscScalar
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
261 int import_solution(char *,char *,DABC
&,PhysicalUnitScale
*);
262 int export_solution(char *,char *,DABC
&,PhysicalUnitScale
*);
264 int Init(ZONE
*,double,PhysicalUnitScale
*);
267 ElZone() {mt
=0; fs
=0; aux
=0;}
268 ~ElZone() {delete mt
; delete [] fs
; delete [] aux
;}
272 //----------------------------------------------------------------
273 //the semiconductor zone
274 //----------------------------------------------------------------
275 class SMCZone
: public BZoneData
278 MatSemiconductor
*mt
;
281 bool HighFieldMobility
;
282 bool ImpactIonization
;
283 bool BandBandTunneling
;
285 bool IncompleteIonization
;
286 bool QuantumMechanical
;
296 vector
<int> electrode
;
298 void F1E_Tri_ddm(Tri
*,PetscScalar
*,PetscScalar
*, vector
<int> &);
299 void F1E_ddm_inner(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &);
300 void F1E_ddm_ombc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
301 void F1E_ddm_stkbc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
302 void F1E_ddm_insulator_gate(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&);
303 void F1E_ddm_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
304 void F1E_ddm_homojunction(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
305 void F1E_ddm_heterojunction(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
306 void F1E_om_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
307 void F1E_stk_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
308 void F1E_ins_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
309 void J1E_Tri_ddm(Tri
*,PetscScalar
*,Mat
*, vector
<int> &);
310 void J1E_ddm_inner(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &);
311 void J1E_ddm_ombc(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
312 void J1E_ddm_stkbc(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
313 void J1E_ddm_insulator_gate(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&);
314 void J1E_ddm_interface(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
315 void J1E_ddm_homojunction(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
316 void J1E_ddm_heterojunction(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
317 void J1E_om_electrode(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
318 void J1E_stk_electrode(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
319 void J1E_ins_electrode(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
320 void F1E_efield_update(PetscScalar
*, vector
<int> &, DABC
&, vector
<BZoneData
*>);
321 void F1E_om_electrode_Trace(int , PetscScalar
&, Vec
&, Vec
&, Vec
&,Mat
*,Mat
*, ODE_Formula
&, vector
<int> &, DABC
&,PetscScalar
);
322 void F1E_stk_electrode_Trace(int , PetscScalar
&, Vec
&, Vec
&, Vec
&,Mat
*,Mat
*, ODE_Formula
&, vector
<int> &, DABC
&,PetscScalar
);
325 void AC1_ddm_inner(int, PetscScalar
, PetscScalar
*, Mat
*, Vec
*, Mat
*, vector
<int> &);
326 void AC1_ddm_ombc(int, PetscScalar
, PetscScalar
*, Mat
*, Vec
*, Mat
*, vector
<int> &, DABC
&);
327 void AC1_ddm_stkbc(int, PetscScalar
, PetscScalar
*, Mat
*, Vec
*, Mat
*, vector
<int> &, DABC
&);
328 void AC1_ddm_insulator_gate(int, PetscScalar
, PetscScalar
*, Mat
*, Vec
*, Mat
*, vector
<int> &, DABC
&);
329 void AC1_ddm_interface(int, PetscScalar
, PetscScalar
*, Mat
*, Vec
*, Mat
*, vector
<int> &, DABC
&,ISZone
*,int);
330 void AC1_ddm_homojunction(int ,PetscScalar
,PetscScalar
*, Mat
*, Vec
*, Mat
*, vector
<int> &, DABC
&,SMCZone
*,int);
331 void AC1_ddm_heterojunction(int ,PetscScalar
,PetscScalar
*, Mat
*, Vec
*, Mat
*, vector
<int> &, DABC
&,SMCZone
*,int);
332 void AC1_om_electrode(int, PetscScalar
, PetscScalar
*, Mat
*, Vec
*, Mat
*, vector
<int> &, DABC
&, PetscScalar
);
333 void AC1_stk_electrode(int, PetscScalar
, PetscScalar
*, Mat
*, Vec
*, Mat
*, vector
<int> &, DABC
&, PetscScalar
);
334 void AC1_ins_electrode(int, PetscScalar
, PetscScalar
*, Mat
*, Vec
*, Mat
*, vector
<int> &, DABC
&, PetscScalar
);
335 void AC1_om_electrode_current(int, PetscScalar
, PetscScalar
*,Vec
*, Mat
*, vector
<int> &, DABC
&, PetscScalar
, PetscScalar
&, PetscScalar
&);
336 void AC1_stk_electrode_current(int, PetscScalar
, PetscScalar
*,Vec
*, Mat
*, vector
<int> &, DABC
&, PetscScalar
, PetscScalar
&, PetscScalar
&);
337 void AC1_ins_electrode_current(int, PetscScalar
, PetscScalar
*,Vec
*, Mat
*, vector
<int> &, DABC
&, PetscScalar
, PetscScalar
&, PetscScalar
&);
340 void F1E_mix_ddm_ombc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
341 void F1E_mix_ddm_stkbc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
342 void F1E_mix_ddm_insulator_gate(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&);
343 void J1E_mix_ddm_ombc(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
344 void J1E_mix_ddm_stkbc(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
345 void J1E_mix_ddm_insulator_gate(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&);
346 void F1E_mix_om_electrode_current (int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
347 void F1E_mix_stk_electrode_current(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
348 void F1E_mix_ins_electrode_current(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
349 void F1E_mix_om_electrode_Load(int , double &, PetscScalar
&, Vec
&, Vec
&, PetscScalar
*,Mat
*, ODE_Formula
&, vector
<int> &, DABC
&,PetscScalar
);
350 void F1E_mix_stk_electrode_Load(int , double &, PetscScalar
&, Vec
&, Vec
&, PetscScalar
*,Mat
*, ODE_Formula
&, vector
<int> &, DABC
&,PetscScalar
);
351 void F1E_mix_ins_electrode_Load(int , double &, PetscScalar
&, Vec
&, Vec
&, PetscScalar
*,Mat
*, ODE_Formula
&, vector
<int> &, DABC
&,PetscScalar
);
353 void F2E_Tri_ddm(Tri
*,PetscScalar
*,PetscScalar
*, vector
<int> &);
354 void F2E_ddm_inner(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &);
355 void F2E_ddm_neumannbc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
356 void F2E_ddm_ombc_segment(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
357 void F2E_ddm_ombc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
358 void F2E_ddm_stkbc_segment(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
359 void F2E_ddm_stkbc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
360 void F2E_ddm_insulator_gate(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&);
361 void F2E_ddm_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
362 void F2E_ddm_homojunction(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
363 void F2E_ddm_heterojunction(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
364 void F2E_om_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
365 void F2E_stk_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
366 void F2E_ins_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
367 void J2E_Tri_ddm(Tri
*,PetscScalar
*,Mat
*, vector
<int> &);
368 void J2E_ddm_inner(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &);
369 void J2E_ddm_neumannbc(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
370 void J2E_ddm_ombc_segment(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
371 void J2E_ddm_ombc_interface(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
372 void J2E_ddm_stkbc_segment(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
373 void J2E_ddm_stkbc_interface(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
374 void J2E_ddm_insulator_gate(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&);
375 void J2E_ddm_interface(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
376 void J2E_ddm_homojunction(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
377 void J2E_ddm_heterojunction(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
378 void J2E_om_electrode(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
379 void J2E_stk_electrode(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
380 void J2E_ins_electrode(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
381 void F2E_efield_update(PetscScalar
*, vector
<int> &, DABC
&, vector
<BZoneData
*>);
382 void F2E_om_electrode_Trace(int , PetscScalar
&, Vec
&, Vec
&, Vec
&,Mat
*,Mat
*, ODE_Formula
&, vector
<int> &, DABC
&,PetscScalar
);
383 void F2E_stk_electrode_Trace(int , PetscScalar
&, Vec
&, Vec
&, Vec
&,Mat
*,Mat
*, ODE_Formula
&, vector
<int> &, DABC
&,PetscScalar
);
385 void F2E_mix_ddm_ombc_segment(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
386 void F2E_mix_ddm_ombc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
387 void F2E_mix_ddm_stkbc_segment(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
388 void F2E_mix_ddm_stkbc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
389 void F2E_mix_ddm_insulator_gate(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&);
390 void J2E_mix_ddm_ombc_segment(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
391 void J2E_mix_ddm_ombc_interface(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
392 void J2E_mix_ddm_stkbc_segment(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
393 void J2E_mix_ddm_stkbc_interface(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
394 void J2E_mix_ddm_insulator_gate(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&);
395 void F2E_mix_om_electrode_current (int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
396 void F2E_mix_stk_electrode_current(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
397 void F2E_mix_ins_electrode_current(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
398 void F2E_mix_om_electrode_Load(int , double &, PetscScalar
&, Vec
&, Vec
&, PetscScalar
*,Mat
*, ODE_Formula
&, vector
<int> &, DABC
&,PetscScalar
);
399 void F2E_mix_stk_electrode_Load(int , double &, PetscScalar
&, Vec
&, Vec
&, PetscScalar
*,Mat
*, ODE_Formula
&, vector
<int> &, DABC
&,PetscScalar
);
400 void F2E_mix_ins_electrode_Load(int , double &, PetscScalar
&, Vec
&, Vec
&, PetscScalar
*,Mat
*, ODE_Formula
&, vector
<int> &, DABC
&,PetscScalar
);
403 void F3E_Tri_ddm(Tri
*,PetscScalar
*,PetscScalar
*, vector
<int> &);
404 void J3E_Tri_ddm(Tri
*,PetscScalar
*,Mat
*, vector
<int> &);
405 void F3E_ddm_inner(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &);
406 void F3E_ddm_neumannbc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
407 void F3E_ddm_ombc_segment(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
408 void F3E_ddm_ombc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
409 void F3E_ddm_stkbc_segment(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
410 void F3E_ddm_stkbc_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
411 void F3E_ddm_insulator_gate(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&);
412 void F3E_ddm_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
413 void F3E_ddm_homojunction(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
414 //void F3E_ddm_heterojunction(int ,PetscScalar *,PetscScalar *,ODE_Formula &, vector<int> &, DABC &,SMCZone *,int);
415 void F3E_om_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
416 void F3E_stk_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
417 void F3E_ins_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
418 void J3E_ddm_inner(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &);
419 void J3E_ddm_neumannbc(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
420 void J3E_ddm_ombc_segment(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
421 void J3E_ddm_ombc_interface(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
422 void J3E_ddm_stkbc_segment(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
423 void J3E_ddm_stkbc_interface(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&,ElZone
*,int);
424 void J3E_ddm_insulator_gate(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&);
425 void J3E_ddm_interface(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
426 void J3E_ddm_homojunction(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,SMCZone
*,int);
427 void J3E_om_electrode(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
428 void J3E_stk_electrode(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
429 void J3E_ins_electrode(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
430 void F3E_efield_update(PetscScalar
*, vector
<int> &, DABC
&, vector
<BZoneData
*>);
432 void F1Q_Tri_qddm(Tri
*,PetscScalar
*,PetscScalar
*, vector
<int> &);
433 void F1Q_qddm_inner(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &);
434 void F1Q_qddm_ombc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
435 void F1Q_qddm_stkbc(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &,DABC
&);
436 void F1Q_qddm_insulator_gate(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&);
437 void F1Q_qddm_interface(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
438 void F1Q_om_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
439 void F1Q_stk_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
440 void F1Q_ins_electrode(int ,PetscScalar
*,PetscScalar
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
441 void J1Q_Tri_qddm(Tri
*,PetscScalar
*,Mat
*, vector
<int> &);
442 void J1Q_qddm_inner(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &);
443 void J1Q_qddm_ombc(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
444 void J1Q_qddm_stkbc(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &,DABC
&);
445 void J1Q_qddm_insulator_gate(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&);
446 void J1Q_qddm_interface(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&,ISZone
*,int);
447 void J1Q_om_electrode(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
448 void J1Q_stk_electrode(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
449 void J1Q_ins_electrode(int ,PetscScalar
*,Mat
*,Mat
*,ODE_Formula
&, vector
<int> &, DABC
&, PetscScalar
);
450 void F1Q_efield_update(PetscScalar
*, vector
<int> &, DABC
&, vector
<BZoneData
*>);
452 int import_doping(char *, PhysicalUnitScale
*);
453 int export_doping(char *, PhysicalUnitScale
*);
454 int import_mole(char *,int);
455 int export_mole(char *,int);
456 int import_solution(char *, char *, DABC
&, PhysicalUnitScale
*);
457 int export_solution(char *, char *, DABC
&, PhysicalUnitScale
*);
459 int Init(ZONE
*,double, PhysicalUnitScale
*);