PLaSK library
Loading...
Searching...
No Matches
const_material.hpp
Go to the documentation of this file.
1/*
2 * This file is part of PLaSK (https://plask.app) by Photonics Group at TUL
3 * Copyright (c) 2022 Lodz University of Technology
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 3.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 */
14#ifndef PLASK__CONST_MATERIAL_H
15#define PLASK__CONST_MATERIAL_H
16
22#include <map>
23#include "material.hpp"
24
25namespace plask {
26
28
29 MaterialCache cache;
30
31public:
32
33 ConstMaterial(const std::string& full_name);
34
35 ConstMaterial(const shared_ptr<Material>& base, const std::map<std::string, double>& items);
36
37 bool isEqual(const Material& other) const override {
38 const ConstMaterial& cother = static_cast<const ConstMaterial&>(other);
39 return
40 ((!base && !cother.base) || (base && cother.base && *base == *cother.base)) &&
41 (cache == cother.cache);
42 }
43
44 std::string name() const override {
45 if (base) return base->name();
46 else return "";
47 }
48
49 Material::Kind kind() const override {
50 if (base) return base->kind();
51 else return Material::GENERIC;
52 }
53
55 if (base) return base->condtype();
57 }
58
59 std::string str() const override;
60
61 double lattC(double T, char x) const override;
62 double Eg(double T, double e=0., char point='*') const override;
63 double CB(double T, double e=0., char point='*') const override;
64 double VB(double T, double e=0., char point='*', char hole='H') const override;
65 double Dso(double T, double e=0.) const override;
66 double Mso(double T, double e=0.) const override;
67 Tensor2<double> Me(double T, double e=0., char point='*') const override;
68 Tensor2<double> Mhh(double T, double e=0.) const override;
69 Tensor2<double> Mlh(double T, double e=0.) const override;
70 Tensor2<double> Mh(double T, double e=0.) const override;
71 double y1() const override;
72 double y2() const override;
73 double y3() const override;
74 double ac(double T) const override;
75 double av(double T) const override;
76 double b(double T) const override;
77 double d(double T) const override;
78 double c11(double T) const override;
79 double c12(double T) const override;
80 double c44(double T) const override;
81 double eps(double T) const override;
82 double chi(double T, double e=0., char point='*') const override;
83 double Ni(double T) const override;
84 double Nf(double T) const override;
85 double EactD(double T) const override;
86 double EactA(double T) const override;
87 Tensor2<double> mob(double T) const override;
88 Tensor2<double> cond(double T) const override;
89 double A(double T) const override;
90 double B(double T) const override;
91 double C(double T) const override;
92 double D(double T) const override;
93 Tensor2<double> thermk(double T, double h=INFINITY) const override;
94 double dens(double T) const override;
95 double cp(double T) const override;
96 double nr(double lam, double T, double n = 0) const override;
97 double absp(double lam, double T) const override;
98 dcomplex Nr(double lam, double T, double n = 0) const override;
99 Tensor3<dcomplex> Eps(double lam, double T, double n = 0) const override;
100 Tensor2<double> mobe(double T) const override;
101 Tensor2<double> mobh(double T) const override;
102 double taue(double T) const override;
103 double tauh(double T) const override;
104 double Ce(double T) const override;
105 double Ch(double T) const override;
106 double e13(double T) const override;
107 double e15(double T) const override;
108 double e33(double T) const override;
109 double c13(double T) const override;
110 double c33(double T) const override;
111 double Psp(double T) const override;
112 double Na() const override;
113 double Nd() const override;
114};
115
116} // namespace plask
117
118#endif // PLASK__CONST_MATERIAL_H