BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_Material_HastelloyC276.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,
4 * through 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_HASTELLOYC276_HPP
13#define BELFEM_CL_MATERIAL_HASTELLOYC276_HPP
14
15#include "cl_Material_Metal.hpp"
16#include "fn_polyval.hpp"
17
18namespace belfem
19{
20 namespace material
21 {
22//------------------------------------------------------------------------------
23
49 class HastelloyC276 : public Metal
50 {
51 // Mechanical properties
52 Vector< real > mYoungPoly ; // Young's modulus polynomial
53 Vector< real > mPoissonPoly ; // Poisson's ratio polynomial
54
55 // Electrical resistivity (piecewise: polynomial and log-log)
56 real mTRhoSwitch ;
57 Cell< Vector< real > > mRhoPolys ;
58
59 // Thermal expansion (polynomial with constant tail). NOT the split
60 // temperature of the Grueneisen branch - this is the temperature ABOVE
61 // which alpha is held at the polynomial's maximum. See
62 // Material::alpha_switch_temperature() for the unrelated base class one.
63 real mTAlphaPlateau ;
64 Cell< Vector< real > > mAlphaPolys ;
65 Vector< real > mThermalExpansionCryo ;
66
67 // Magnetic susceptibility χ (piecewise in 1/T)
68 Vector< real > mTMuSwitch ;
69 Cell< Vector< real > > mMuPolys ;
70
71 // Specific heat (complex piecewise with Debye tail)
72 Vector< real > mTCpSwitch ;
73 Cell< Vector< real > > mCpPolys ;
74
75 // Thermal conductivity (phonon + electronic contributions)
76 real mTLambdaSwitch ;
77 Cell< Vector< real > > mLambdaPolys ;
78
79 public:
80
82
83 ~HastelloyC276() override;
84
85 protected:
86
87 real
88 E_custom( const real T ) const override ;
89
90 real
91 nu_custom( const real T ) const override ;
92
93 real
94 rho_custom( const real T ) const override ;
95
96 real
97 alpha_custom(const real T) const override;
98
99 real
100 mu_custom( const real H, const real T ) const override;
101
102 real
103 cp_custom( const real T ) const override;
104
105 real
106 lambda_custom(const real T) const override;
107
108 private:
109
110 void
111 set_constants();
112
113 void
114 create_mech();
115
116 void
117 create_rho();
118
119 void
120 create_alpha();
121
122 void
123 create_alpha_cryo();
124
125 void
126 create_mu();
127
128 void
129 create_cp();
130
131 void
132 create_lambda();
133 };
134
135 inline real
137 {
138 return polyval( mYoungPoly, T );
139 }
140
141 inline real
143 {
144 return polyval( mPoissonPoly, T );
145 }
146
147 inline real
149 {
150 if ( T < this->alpha_switch_temperature() )
151 {
152 // Grueneisen branch: alpha = C( T ) cp( T )
153 return std::exp( polyval( mThermalExpansionCryo, T ) ) * this->cp( T );
154 }
155 else if ( T < mTAlphaPlateau )
156 {
157 return polyval( mAlphaPolys( 0 ), T );
158 }
159 else
160 {
161 return mAlphaPolys( 1 )( 0 );
162 }
163 }
164
165 }
166}
167
168#endif //BELFEM_CL_MATERIAL_HASTELLOYC276_HPP
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
virtual real H(const real B) const
Magnetic field strength from flux density.
Definition cl_Material.hpp:2137
virtual real cp(const real T=gTroom) const
Specific heat capacity.
Definition cl_Material.hpp:1842
real alpha_switch_temperature() const
Temperature below which alpha is taken from the Grueneisen branch.
Definition cl_Material.hpp:2333
HastelloyC276()
Hastelloy C-276 material property implementation.
Definition cl_Material_HastelloyC276.cpp:42
real cp_custom(const real T) const override
Definition cl_Material_HastelloyC276.cpp:466
real lambda_custom(const real T) const override
Definition cl_Material_HastelloyC276.cpp:479
real nu_custom(const real T) const override
Definition cl_Material_HastelloyC276.hpp:142
real mu_custom(const real H, const real T) const override
Definition cl_Material_HastelloyC276.cpp:265
real E_custom(const real T) const override
Definition cl_Material_HastelloyC276.hpp:136
real alpha_custom(const real T) const override
Definition cl_Material_HastelloyC276.hpp:148
real rho_custom(const real T) const override
Definition cl_Material_HastelloyC276.cpp:216
Metal(const string &aLabel, const MaterialType aType, const bool aBuildTables=true)
Constructor.
Definition cl_Material_Metal.cpp:33
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