12#ifndef BELFEM_CL_MATERIAL_SPLINELOOKUPTABLE_HPP
13#define BELFEM_CL_MATERIAL_SPLINELOOKUPTABLE_HPP
61 l(
real T )
const override ;
78 const real aStep )
override ;
82 const Bezier * aThermalExpansion,
147 finish_cryo_expansion(
const Vector< real > & aThermalExpansionCryo );
154 return mSplines(
static_cast< size_t >( aProperty ) ) ;
161 "Spline for property %s is not set",
to_string( aProperty ).c_str() );
162 return mSplines(
static_cast< size_t >( aProperty ) )->eval( aX ) ;
169 "Spline for property %s is not set",
to_string( aProperty ).c_str() );
170 return mSplines(
static_cast< size_t >( aProperty ) )->deval( aX ) ;
177 "Spline for property %s is not set",
to_string( aProperty ).c_str() );
178 return mSplines(
static_cast< size_t >( aProperty ) )->ddeval( aX ) ;
206 return std::exp(
polyval( aPoly, T ) ) * this->
cp( T );
212 aBezier->
dpoint( xi, dTdxi, dLdxi );
214 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:206
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
A bounds-checked wrapper around std::vector.
Definition cl_Cell.hpp:45
friend class material::SplineLookupTable
Definition cl_Material.hpp:346
Material(const MaterialType aType, const bool aIsIsotropic=true)
Definition cl_Material.cpp:149
virtual real cp(const real T=gTroom) const
Specific heat capacity.
Definition cl_Material.hpp:1738
void create_spline(const MaterialProperty aProperty, const real adYdX0=BELFEM_QUIET_NAN, const real adYdX1=BELFEM_QUIET_NAN, const real aStep=4.0)
PROPERTY EVALUATION FUNCTIONS.
Definition cl_Material.cpp:1045
real constant_property(const MaterialProperty aProperty) const
Definition cl_Material.hpp:1683
real alpha_switch_temperature() const
Temperature below which alpha is taken from the Grueneisen branch.
Definition cl_Material.hpp:2222
virtual real alpha(real T=gTroom) const
Thermal expansion coefficient.
Definition cl_Material.hpp:2136
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:182
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:196
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:174
void create_cryo_expansion(const Bezier *aThermalExpansion, Vector< real > &aThermalExpansionCryo, const real aTSwitch=BELFEM_QUIET_NAN)
Definition cl_Material_SplineLookupTable.cpp:161
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:283
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:182
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:166
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, const real aStep) 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:252
real spline_property(const MaterialProperty aProperty, const real aX) const override
Definition cl_Material_SplineLookupTable.hpp:158
void set_spline(const MaterialProperty aProperty, Spline *aSpline=nullptr)
Takes ownership of aSpline; the table deletes it.
Definition cl_Material_SplineLookupTable.cpp:33
Spline * spline(const MaterialProperty aProperty)
Definition cl_Material_SplineLookupTable.hpp:152
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:89
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:113
string to_string(const DomainType aDomainType)
Definition en_DomainType.cpp:21
#define BELFEM_QUIET_NAN
Definition typedefs.hpp:86