166 std::set<std::string> roles;
185 auto material =
SOLVER->getGeometry()->getMaterial(
vec(r,
matz));
186 lock = material->lock();
188 std::tie(T,
cc) = getTC(layer,
ri);
189 eps = material->Eps(lam, T,
cc);
191 throw BadInput(
solver->
getId(),
"complex permittivity tensor (Eps) for {} is NaN at lam={}nm, T={}K, n={}/cm3",
192 material->name(), lam, T,
cc);
194 if (!
is_zero(eps.c00 - eps.c11) || eps.c01 != 0. || eps.c02 != 0. || eps.c10 != 0. || eps.c12 != 0. || eps.c20 != 0. ||
198 if (roles.find(
"QW") != roles.end() || roles.find(
"QD") != roles.end() || roles.find(
"gain") != roles.end()) {
210 double n00 = sqrt(eps.c00).real(),
n22 = sqrt(eps.c22).real();
211 eps.c00 = eps.c11 = dcomplex(n00 * n00 -
ni.c00 *
ni.c00, 2 * n00 *
ni.c00);