167 "Gain solver based on Fermi Golden Rule for Cartesian 2D geometry.")
168 solver.add_property(
"strained", &__Class__::getStrains, &__Class__::setStrains,
169 "Consider strain in QW and barriers? (True or False).");
171 u8"Substrate material.\n\n"
172 u8"Material of the substrate. This is used to compute strain in the active region.\n"
173 u8"If not set, the solver looks for geometry object with the __substrate__ role.\n");
174 solver.add_property(
"adjust_layers", &__Class__::getAdjustWidths, &__Class__::setAdjustWidths,
175 "Adjust thicknesses of quantum wells?\n\n"
176 "Setting this to True, allows to adjust the widths of the gain region layers\n"
177 "by few angstroms to improve numerical stability.");
178 solver.add_property(
"fast_levels", &__Class__::getBuildStructOnce, &__Class__::setBuildStructOnce,
179 "Compute levels only once and simply shift for different temperatures?\n\n"
180 "Setting this to True stongly increases computation speed, but makes the results\n"
181 "less accurate for high gains.");
183 RECEIVER(inCarriersConcentration,
"");
186 RW_PROPERTY(geometry_mod, getModGeometry, setModGeometry,
"Modified geometry for broadening calculations.");
188 "If there is no modified geometry: roughness of the thicknesses of the quantum wells.\n"
189 "With modified geometry present: broadening factor. (-).\n");
190 solver.attr(
"broadening") = solver.attr(
"roughness");
191 RW_PROPERTY(lifetime, getLifeTime, setLifeTime,
"Carriers lifetime (ps)");
193 RW_PROPERTY(
cond_shift, getCondQWShift, setCondQWShift,
"Additional conduction band shift for QW (eV)");
194 RW_PROPERTY(
vale_shift, getValeQWShift, setValeQWShift,
"Additional valence band shift for QW (eV)");
196 "Reference temperature. If *fast_levels* is True, this is the temperature used\n"
197 "for initial computation of the energy levels (K).");
200 (py::arg(
"n"), py::arg(
"T") = py::object(), py::arg(
"reg") = 0));
201 solver.def(
"spectrum", &__Class__::getGainSpectrum,
"Get gain spectrum at given point", py::arg(
"point"),
202 py::with_custodian_and_ward_postcall<0, 1>());
204 (py::arg(
"c0"),
"c1"), py::with_custodian_and_ward_postcall<0, 1>());
205 solver.def(
"luminescence_spectrum", &__Class__::getLuminescenceSpectrum,
206 "Get luminescence spectrum at given point", py::arg(
"point"),
207 py::with_custodian_and_ward_postcall<0, 1>());
209 "Get luminescence spectrum at given point", (py::arg(
"c0"),
"c1"),
210 py::with_custodian_and_ward_postcall<0, 1>());
212 py::scope
scope = solver;
213 py::class_<FermiNew::GainSpectrum<Geometry2DCartesian>,
215 "Spectrum",
"Gain spectrum class. You can call it like a function to get gains for different vavelengths.",
218 py::class_<FermiNew::LuminescenceSpectrum<Geometry2DCartesian>,
220 "LuminescenceSpectrum",
221 "Luminescence spectrum class. You can call it like a function to get luminescences for different "
228 "Gain solver based on Fermi Golden Rule for Cylindrical 2D geometry.")
229 solver.add_property(
"strained", &__Class__::getStrains, &__Class__::setStrains,
230 "Consider strain in QW and barriers? (True or False).");
232 u8"Substrate material.\n\n"
233 u8"Material of the substrate. This is used to compute strain in the active region.\n"
234 u8"If not set, the solver looks for geometry object with the __substrate__ role.\n");
235 solver.add_property(
"adjust_layers", &__Class__::getAdjustWidths, &__Class__::setAdjustWidths,
236 "Adjust thicknesses of quantum wells?\n\n"
237 "Setting this to True, allows to adjust the widths of the gain region layers\n"
238 "by few angstroms to improve numerical stability.");
239 solver.add_property(
"fast_levels", &__Class__::getBuildStructOnce, &__Class__::setBuildStructOnce,
240 "Compute levels only once and simply shift for different temperatures?\n\n"
241 "Setting this to True strongly increases computation speed, but makes the results\n"
242 "less accurate for high gains.");
244 RECEIVER(inCarriersConcentration,
"");
247 RW_PROPERTY(geometry_mod, getModGeometry, setModGeometry,
"Modified geomery for broadening calculations.");
249 "If there is no modified geometry: roughness of the thicknesses of the quantum wells.\n"
250 "With modified geometry present: broadening factor. (-).\n");
251 solver.attr(
"broadening") = solver.attr(
"roughness");
252 RW_PROPERTY(lifetime, getLifeTime, setLifeTime,
"Carriers lifetime (ps)");
254 RW_PROPERTY(
cond_shift, getCondQWShift, setCondQWShift,
"Additional conduction band shift for QW (eV)");
255 RW_PROPERTY(
vale_shift, getValeQWShift, setValeQWShift,
"Additional valence band shift for QW (eV)");
257 "Reference temperature. If *fast_levels* is True, this is the temperature used\n"
258 "for initial computation of the energy levels (K).");
261 (py::arg(
"n"), py::arg(
"T") = py::object(), py::arg(
"reg") = 0));
262 solver.def(
"spectrum", &__Class__::getGainSpectrum,
"Get gain spectrum at given point", py::arg(
"point"),
263 py::with_custodian_and_ward_postcall<0, 1>());
265 (py::arg(
"c0"),
"c1"), py::with_custodian_and_ward_postcall<0, 1>());
266 solver.def(
"luminescence_spectrum", &__Class__::getLuminescenceSpectrum,
267 "Get luminescence spectrum at given point", py::arg(
"point"),
268 py::with_custodian_and_ward_postcall<0, 1>());
270 "Get luminescence spectrum at given point", (py::arg(
"c0"),
"c1"),
271 py::with_custodian_and_ward_postcall<0, 1>());
273 py::scope
scope = solver;
274 py::class_<FermiNew::GainSpectrum<Geometry2DCylindrical>,
276 "Spectrum",
"Gain spectrum class. You can call it like a function to get gains for different wavelengths.",
279 py::class_<FermiNew::LuminescenceSpectrum<Geometry2DCylindrical>,
281 "LuminescenceSpectrum",
282 "Luminescence spectrum class. You can call it like a function to get luminescences for different "