56 return PARALLEL_UFUNC<double>([self, T, reg, ¶ms](
double x) {
return self->getN(x, T, params); },
F, name.c_str(),
"F");
64 return PARALLEL_UFUNC<double>([self, T, reg, ¶ms](
double x) {
return self->getP(x, T, params); },
F, name.c_str(),
"F");
169 u8"Quantum-well gain using free-carrier approximation for two-dimensional Cartesian geometry.")
182 u8"Get energy levels in quantum wells.\n\n"
183 u8"Compute energy levels in quantum wells for electrons, heavy holes and\n"
186 u8" T (float or ``None``): Temperature to get the levels. If this argument is\n"
187 u8" ``None``, the estimates for temperature :py:attr:`T0`\n"
188 u8" are returned.\n\n"
190 u8" list: List with dictionaries with keys `el`, `hh`, and `lh` with levels for\n"
191 u8" electrons, heavy holes and light holes. Each list element corresponds\n"
192 u8" to one active region.\n");
194 u8"Get quasi Fermi levels.\n\n"
195 u8"Compute quasi-Fermi levels in specified active region.\n\n"
197 u8" n (float): Carriers concentration to determine the levels for\n"
198 u8" (1/cm\\ :sup:`3`\\ ).\n"
199 u8" T (float or ``None``): Temperature to get the levels. If this argument is\n"
200 u8" ``None``, the estimates for temperature :py:attr:`T0`\n"
201 u8" are returned.\n\n"
202 u8" reg (int): Active region number.\n"
204 u8" tuple: Two-element tuple with quasi-Fermi levels for electrons and holes.\n");
205 RW_PROPERTY(T0, getT0, setT0,
"Reference temperature.\n\nIn this temperature levels estimates are computed.");
207 u8"Momentum matrix element.\n\n"
208 u8"Value of the squared matrix element in gain computations. If it is not set it\n"
209 u8"is estimated automatically. (float [eV×m0])");
211 "Average carriers lifetime.\n\n"
212 "This parameter is used for gain spectrum broadening. (float [ps])");
214 u8"Boolean attribute indicating if the solver should consider strain in the active\n"
216 u8"If set to ``True`` then there must a layer with the role *substrate* in\n"
217 u8"the geometry. The strain is computed by comparing the atomic lattice constants\n"
218 u8"of the substrate and the quantum wells.");
220 u8"Substrate material.\n\n"
221 u8"Material of the substrate. This is used to compute strain in the active region.\n"
222 u8"If not set, the solver looks for geometry object with the __substrate__ role.\n");
225 RECEIVER(inCarriersConcentration,
"");
229 solver.def(
"spectrum", &__Class__::getGainSpectrum, py::arg(
"point"), py::with_custodian_and_ward_postcall<0, 1>(),
230 u8"Get gain spectrum at given point.\n\n"
232 u8" point (vec): Point to get gain at.\n"
233 u8" c0, c1 (float): Coordinates of the point to get gain at.\n\n"
235 u8" :class:`FreeCarrier2D.Spectrum`: Spectrum object.\n");
237 py::with_custodian_and_ward_postcall<0, 1>());
239 py::scope
scope = solver;
241 py::class_<typename __Class__::GainSpectrumType, plask::shared_ptr<typename __Class__::GainSpectrumType>,
243 "Spectrum",
u8"Gain spectrum object. You can call it like a function to get gains for different wavelengths.",
246 u8"Get gain at specified wavelength.\n\n"
248 u8" lam (float): Wavelength to get the gain at.\n");
253 u8"Quantum-well gain using free-carrier approximation for cylindrical geometry.")
266 u8"Get energy levels in quantum wells.\n\n"
267 u8"Compute energy levels in quantum wells for electrons, heavy holes and\n"
270 u8" T (float or ``None``): Temperature to get the levels. If this argument is\n"
271 u8" ``None``, the estimates for temperature :py:attr:`T0`\n"
272 u8" are returned.\n\n"
274 u8" list: List with dictionaries with keys `el`, `hh`, and `lh` with levels for\n"
275 u8" electrons, heavy holes and light holes. Each list element corresponds\n"
276 u8" to one active region.\n");
278 u8"Get quasi-Fermi levels.\n\n"
279 u8"Compute quasi-Fermi levels in specified active region.\n\n"
281 u8" n (float): Carriers concentration to determine the levels for\n"
282 u8" (1/cm\\ :sup:`3`\\ ).\n"
283 u8" T (float or ``None``): Temperature to get the levels. If this argument is\n"
284 u8" ``None``, the estimates for temperature :py:attr:`T0`\n"
286 u8" reg (int): Active region number.\n"
288 u8" tuple: Two-element tuple with quasi-Fermi levels for electrons and holes.\n");
289 RW_PROPERTY(T0, getT0, setT0,
u8"Reference temperature.\n\nIn this temperature levels estimates are computed.");
291 u8"Momentum matrix element.\n\n"
292 u8"Value of the squared matrix element in gain computations. If it is not set it\n"
293 u8"is estimated automatically. (float [eV×m0])");
295 "Average carriers lifetime.\n\n"
296 "This parameter is used for gain spectrum broadening. (float [ps])");
298 u8"Boolean attribute indicating if the solver should consider strain in the active\n"
300 u8"If set to ``True`` then there must a layer with the role *substrate* in\n"
301 u8"the geometry. The strain is computed by comparing the atomic lattice constants\n"
302 u8"of the substrate and the quantum wells.");
304 u8"Substrate material.\n\n"
305 u8"Material of the substrate. This is used to compute strain in the active region.\n"
306 u8"If not set, the solver looks for geometry object with the __substrate__ role.\n");
309 RECEIVER(inCarriersConcentration,
"");
313 solver.def(
"spectrum", &__Class__::getGainSpectrum, py::arg(
"point"), py::with_custodian_and_ward_postcall<0, 1>(),
314 u8"Get gain spectrum at given point.\n\n"
316 u8" point (vec): Point to get gain at.\n"
317 u8" c0, c1 (float): Coordinates of the point to get gain at.\n\n"
319 u8" :class:`FreeCarrierCyl.Spectrum`: Spectrum object.\n");
321 py::with_custodian_and_ward_postcall<0, 1>());
323 py::scope
scope = solver;
325 py::class_<typename __Class__::GainSpectrumType, plask::shared_ptr<typename __Class__::GainSpectrumType>,
327 "Spectrum",
u8"Gain spectrum object. You can call it like a function to get gains for different wavelengths.",
330 u8"Get gain at specified wavelength.\n\n"
332 u8" lam (float): Wavelength to get the gain at.\n");
337 u8"Quantum-well gain using free-carrier approximation for three-dimensional Cartesian geometry.")
350 u8"Get energy levels in quantum wells.\n\n"
351 u8"Compute energy levels in quantum wells for electrons, heavy holes and\n"
354 u8" T (float or ``None``): Temperature to get the levels. If this argument is\n"
355 u8" ``None``, the estimates for temperature :py:attr:`T0`\n"
356 u8" are returned.\n\n"
358 u8" list: List with dictionaries with keys `el`, `hh`, and `lh` with levels for\n"
359 u8" electrons, heavy holes and light holes. Each list element corresponds\n"
360 u8" to one active region.\n");
362 u8"Get quasi Fermi levels.\n\n"
363 u8"Compute quasi-Fermi levels in specified active region.\n\n"
365 u8" n (float): Carriers concentration to determine the levels for\n"
366 u8" (1/cm\\ :sup:`3`\\ ).\n"
367 u8" T (float or ``None``): Temperature to get the levels. If this argument is\n"
368 u8" ``None``, the estimates for temperature :py:attr:`T0`\n"
369 u8" are returned.\n\n"
370 u8" reg (int): Active region number.\n"
372 u8" tuple: Two-element tuple with quasi-Fermi levels for electrons and holes.\n");
373 RW_PROPERTY(T0, getT0, setT0,
"Reference temperature.\n\nIn this temperature levels estimates are computed.");
375 u8"Momentum matrix element.\n\n"
376 u8"Value of the squared matrix element in gain computations. If it is not set it\n"
377 u8"is estimated automatically. (float [eV×m0])");
379 "Average carriers lifetime.\n\n"
380 "This parameter is used for gain spectrum broadening. (float [ps])");
382 u8"Boolean attribute indicating if the solver should consider strain in the active\n"
384 u8"If set to ``True`` then there must a layer with the role *substrate* in\n"
385 u8"the geometry. The strain is computed by comparing the atomic lattice constants\n"
386 u8"of the substrate and the quantum wells.");
389 RECEIVER(inCarriersConcentration,
"");
393 solver.def(
"spectrum", &__Class__::getGainSpectrum, py::arg(
"point"), py::with_custodian_and_ward_postcall<0, 1>(),
394 u8"Get gain spectrum at given point.\n\n"
396 u8" point (vec): Point to get gain at.\n"
397 u8" c0, c1 (float): Coordinates of the point to get gain at.\n\n"
399 u8" :class:`FreeCarrier3D.Spectrum`: Spectrum object.\n");
400 solver.def(
"spectrum", FreeCarrierGetGainSpectrum3, (py::arg(
"c0"),
"c1",
"c2"),
401 py::with_custodian_and_ward_postcall<0, 1>());
403 py::scope
scope = solver;
405 py::class_<typename __Class__::GainSpectrumType, plask::shared_ptr<typename __Class__::GainSpectrumType>,
407 "Spectrum",
u8"Gain spectrum object. You can call it like a function to get gains for different wavelengths.",
410 u8"Get gain at specified wavelength.\n\n"
412 u8" lam (float): Wavelength to get the gain at.\n");