12#ifndef BELFEM_CL_MATERIAL_SPLINELOOKUPTABLE_HPP
13#define BELFEM_CL_MATERIAL_SPLINELOOKUPTABLE_HPP
62 l(
real T )
const override ;
78 const real adYdX1 )
override ;
82 const Bezier * aThermalExpansion,
149 finish_cryo_expansion(
const Vector< real > & aThermalExpansionCryo );
156 return mSplines(
static_cast< size_t >( aProperty ) ) ;
163 "Spline for property %s is not set",
to_string( aProperty ).c_str() );
164 return mSplines(
static_cast< size_t >( aProperty ) )->eval( aX ) ;
171 "Spline for property %s is not set",
to_string( aProperty ).c_str() );
172 return mSplines(
static_cast< size_t >( aProperty ) )->deval( aX ) ;
179 "Spline for property %s is not set",
to_string( aProperty ).c_str() );
180 return mSplines(
static_cast< size_t >( aProperty ) )->ddeval( aX ) ;
208 return std::exp(
polyval( aPoly, T ) ) * this->
cp( T );
214 aBezier->
dpoint( xi, dTdxi, dLdxi );
216 return dLdxi / ( L * dTdxi );
#define BELFEM_ASSERT(aCheck,...)
Definition assert.hpp:244
Definition cl_Bezier.hpp:30
void dpoint(const real aXi, real &adXdXi, real &adYdXi) const
tangent vector as function of parameter coordinate
Definition cl_Bezier.cpp:210
real xi_by_x(const real aX) const
Inverts the function x_by_xi.
Definition cl_Bezier.cpp:88
real y_by_xi(const real aXi) const
The parameter coordinate goes from -1 <= xi <= 1.
Definition cl_Bezier.cpp:76
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
friend class material::SplineLookupTable
Definition cl_Material.hpp:356
Material(const MaterialType aType, const bool aIsIsotropic=true)
Constructor.
Definition cl_Material.cpp:149
virtual real cp(const real T=gTroom) const
Specific heat capacity.
Definition cl_Material.hpp:1842
void create_spline(const MaterialProperty aProperty, const real adYdX0=BELFEM_QUIET_NAN, const real adXdX1=BELFEM_QUIET_NAN)
PROPERTY EVALUATION FUNCTIONS.
Definition cl_Material.cpp:1038
real constant_property(const MaterialProperty aProperty) const
Get constant property value.
Definition cl_Material.hpp:1787
real alpha_switch_temperature() const
Temperature below which alpha is taken from the Grueneisen branch.
Definition cl_Material.hpp:2333
virtual real alpha(real T=gTroom) const
Thermal expansion coefficient.
Definition cl_Material.hpp:2244
Cubic spline on a uniform grid, C2, with natural, parabolic or clamped boundary conditions.
Definition cl_Spline.hpp:45
real l(real T) const override
Relative length after thermal expansion, from integrated alpha spline.
Definition cl_Material_SplineLookupTable.hpp:184
real alpha_composite(const Bezier *aBezier, const Vector< real > &aPoly, const real T) const
composite thermal expansion for a Material::alpha_custom() override: the Grueneisen polynomial aPoly ...
Definition cl_Material_SplineLookupTable.hpp:198
Cell< Spline * > mSplines
Definition cl_Material_SplineLookupTable.hpp:29
real ddspline_property(const MaterialProperty aProperty, const real aX) const override
Definition cl_Material_SplineLookupTable.hpp:176
void create_cryo_expansion(const Bezier *aThermalExpansion, Vector< real > &aThermalExpansionCryo, const real aTSwitch=BELFEM_QUIET_NAN)
Definition cl_Material_SplineLookupTable.cpp:154
void create_low_temperature_alpha(const Bezier *aBezier, Vector< real > &aPoly, const real aTSwitch=BELFEM_QUIET_NAN)
Fit the cryogenic branch alpha = C( T ) cp( T ) below the split temperature from a dL/L Bezier ( the ...
Definition cl_Material_SplineLookupTable.cpp:276
void create_cryo_expansion_anchored(const real alpha, Vector< real > &aThermalExpansionCryo, const real aTSwitch=BELFEM_QUIET_NAN)
cryogenic branch anchored on the VALUE of alpha at the split only.
Definition cl_Material_SplineLookupTable.cpp:175
void reset_spline(const MaterialProperty aProperty) override
Definition cl_Material_SplineLookupTable.cpp:115
real dspline_property(const MaterialProperty aProperty, const real aX) const override
Definition cl_Material_SplineLookupTable.hpp:168
void create_spline(real(Material::*aFunction)(const real aT) const, const MaterialProperty aProperty, const uint aStartBC, const uint aEndBC, const real adYdX0, const real adYdX1) override
Definition cl_Material_SplineLookupTable.cpp:123
SplineLookupTable(const MaterialType aType, const bool aIsIsotropic=true)
Definition cl_Material_SplineLookupTable.cpp:17
real set_alpha_switch_temperature(const real aTSwitch=BELFEM_QUIET_NAN)
Fix the split temperature of the cryogenic expansion branch.
Definition cl_Material_SplineLookupTable.cpp:245
real spline_property(const MaterialProperty aProperty, const real aX) const override
Evaluate property using spline interpolation.
Definition cl_Material_SplineLookupTable.hpp:160
void set_spline(const MaterialProperty aProperty, Spline *aSpline=nullptr)
Assign a spline for property interpolation.
Definition cl_Material_SplineLookupTable.cpp:33
Spline * spline(const MaterialProperty aProperty)
Get spline for a property.
Definition cl_Material_SplineLookupTable.hpp:154
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
unsigned int uint
Definition typedefs.hpp:30
constexpr real BELFEM_EPSILON
Definition typedefs.hpp:90
MaterialProperty
All material properties that can be defined.
Definition cl_Material.hpp:153
@ alpha
Definition cl_Material.hpp:161
@ T_ref_density
Definition cl_Material.hpp:173
double real
Definition typedefs.hpp:36
MaterialType
Material classification based on physical behavior.
Definition cl_Material.hpp:107
string to_string(const DomainType aDomainType)
Definition en_DomainType.cpp:21
#define BELFEM_QUIET_NAN
Definition typedefs.hpp:87