BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_Material_Magnesia.hpp
Go to the documentation of this file.
1/*
2 * BELFEM -- The Berkeley Lab Finite Element Framework
3 * Copyright (c) 2026, The Regents of the University of California, through
4 * Lawrence Berkeley National Laboratory (subject to receipt of any required
5 * approvals from the U.S. Dept. of Energy). All rights reserved.
6 *
7 * Developers: Christian Messe, Gregory Giard
8 *
9 * See the top-level LICENSE file for the complete license and disclaimer.
10 */
11
12#ifndef BELFEM_CL_MATERIAL_MAGNESIA_HPP
13#define BELFEM_CL_MATERIAL_MAGNESIA_HPP
14
15#include "cl_Material_Metal.hpp"
16#include "cl_Bezier.hpp"
17#include "fn_polyval.hpp"
18
19namespace belfem
20{
21 namespace material
22 {
24 {
25
26 // Young's modulus and Poisson's ratio polynomials
27 Cell< Vector< real > > mYoungPolys ;
28 Cell< Vector< real > > mPoissonPolys ;
29 Cell< Vector< real > > mCpPolys ;
30 Cell< Vector< real > > mLambdaPolys ;
31 real mTYoungSwitch ;
32 real mTPoissonSwitch ;
33 Vector< real > mTCpSwitch ;
34 Vector< real > mTLambdaSwitch ;
35 Bezier * mThermalExpansion = nullptr ;
36 Vector< real > mThermalExpansionCryo ;
37
38 public:
39 Magnesia();
40 ~Magnesia() override;
41
42 protected:
43
44 real
45 E_custom( const real T ) const override ;
46
47 real
48 nu_custom( const real T ) const override ;
49
50 real
51 alpha_custom( const real T ) const override ;
52
53 real
54 cp_custom( const real T ) const override ;
55
56 real
57 lambda_custom( const real T ) const override ;
58
59 private:
60
61 void
62 set_constants();
63
64 void
65 create_alpha();
66
67 void
68 create_mech();
69
70 void
71 create_cp();
72
73 void
74 create_lambda();
75
76 };
77
78 inline real
79 Magnesia::E_custom( const real T ) const
80 {
81 if ( T < mTYoungSwitch )
82 {
83 return polyval( mYoungPolys( 0 ), T*T );
84 }
85 else
86 {
87 return polyval( mYoungPolys( 1 ), T );
88 }
89 }
90
91 inline real
92 Magnesia::nu_custom( const real T ) const
93 {
94 if ( T < mTPoissonSwitch )
95 {
96 return polyval( mPoissonPolys( 0 ), T*T );
97 }
98 else
99 {
100 return polyval( mPoissonPolys( 1 ), T );
101 }
102 }
103
104 }
105}
106#endif //BELFEM_CL_MATERIAL_MAGNESIA_HPP
Definition cl_Bezier.hpp:30
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
real E_custom(const real T) const override
Definition cl_Material_Magnesia.hpp:79
Magnesia()
Definition cl_Material_Magnesia.cpp:23
real lambda_custom(const real T) const override
Definition cl_Material_Magnesia.cpp:269
real cp_custom(const real T) const override
Definition cl_Material_Magnesia.cpp:248
real nu_custom(const real T) const override
Definition cl_Material_Magnesia.hpp:92
real alpha_custom(const real T) const override
Definition cl_Material_Magnesia.cpp:242
SplineLookupTable(const MaterialType aType, const bool aIsIsotropic=true)
Definition cl_Material_SplineLookupTable.cpp:17
Evaluates a polynomial.
Definition cl_BhCurve.cpp:19
T polyval(const std::vector< T > &coeffs, const T x)
Definition cl_Material_UserDefined.hpp:28
USER GUIDES:
Definition cl_Capacitor.cpp:16
double real
Definition typedefs.hpp:36