66 SEMICONDUCTOR = (1<<2),
70 LIQUID_CRYSTAL = (1<<6),
80 CONDUCTIVITY_UNDETERMINED
92 template <
typename MaterialType>
93 struct is_with_composition {
94 static const bool value =
95 std::is_constructible<MaterialType, Composition>::value ||
96 std::is_constructible<MaterialType, Composition, double>::value;
100 template <
typename MaterialType>
101 struct is_with_dopant {
102 static const bool value =
103 std::is_constructible<MaterialType, double>::value ||
104 std::is_constructible<MaterialType, Composition, double>::value;
127 return brace == std::string::npos ||
brace == 0;
165 explicit Parameters(
const std::string& full_name,
bool allow_dopant_without_amount =
false)
166 { parse(full_name, allow_dopant_without_amount); }
177 bool isAlloy()
const {
return !composition.empty(); }
198 void parse(
const std::string& full_material_str,
bool allow_dopant_without_amount =
false);
210 void setDoping(
const std::string& dopant,
double doping);
222 std::string
str()
const;
247 operator std::string()
const {
return str.str(); }
261 this->operator ()(objectName);
270 StringBuilder& operator()(
const std::string& objectName,
double ammount);
278 this->operator ()(objectName, ammount);
287 std::string dopant(
const std::string& dopant,
double dopantConcentration);
297 static std::pair<std::string, double> firstCompositionObject(
const char*& begin,
const char* end,
const char*
fullname);
306 static Composition completeComposition(
const Composition& composition);
315 static Composition minimalComposition(
const Composition& composition);
325 static Composition parseComposition(
const char* begin,
const char* end,
const char*
fullname =
nullptr);
365 static std::vector<std::string> parseObjectsNames(
const char* begin,
const char* end);
373 static std::vector<std::string> parseObjectsNames(
const std::string&
allNames);
389 virtual std::string
name()
const = 0;
395 std::string dopant()
const;
401 std::string nameWithoutDopant()
const;
410 virtual std::string
str()
const;
416 bool isAlloy()
const;
427 virtual double doping()
const;
438 virtual double lattC(
double T,
char x)
const;
447 virtual double Eg(
double T,
double e=0.,
char point=
'*')
const;
456 virtual double CB(
double T,
double e=0.,
char point=
'*')
const;
466 virtual double VB(
double T,
double e=0.,
char point=
'*',
char hole=
'H')
const;
474 virtual double Dso(
double T,
double e=0.)
const;
482 virtual double Mso(
double T,
double e=0.)
const;
521 virtual double y1()
const;
527 virtual double y2()
const;
533 virtual double y3()
const;
540 virtual double ac(
double T)
const;
547 virtual double av(
double T)
const;
554 virtual double b(
double T)
const;
561 virtual double d(
double T)
const;
568 virtual double c11(
double T)
const;
575 virtual double c12(
double T)
const;
582 virtual double c44(
double T)
const;
589 virtual double eps(
double T)
const;
607 virtual double chi(
double T,
double e=0.,
char point=
'*')
const;
614 virtual double Ni(
double T)
const;
621 virtual double Nf(
double T)
const;
628 virtual double EactD(
double T)
const;
635 virtual double EactA(
double T)
const;
662 virtual double A(
double T)
const;
669 virtual double B(
double T)
const;
676 virtual double C(
double T)
const;
683 virtual double D(
double T)
const;
698 virtual double dens(
double T)
const;
705 virtual double cp(
double T)
const;
714 virtual double nr(
double lam,
double T,
double n = 0)
const;
723 virtual double absp(
double lam,
double T)
const;
731 virtual dcomplex Nr(
double lam,
double T,
double n = 0)
const;
752 virtual double taue(
double T)
const;
759 virtual double tauh(
double T)
const;
766 virtual double Ce(
double T)
const;
773 virtual double Ch(
double T)
const;
780 virtual double e13(
double T)
const;
787 virtual double e15(
double T)
const;
794 virtual double e33(
double T)
const;
801 virtual double c13(
double T)
const;
808 virtual double c33(
double T)
const;
815 virtual double Psp(
double T)
const;
821 virtual double Na()
const;
827 virtual double Nd()
const;
844 return other ? this->
operator==(*other) :
false;
872 virtual bool isEqual(
const Material& other)
const;