12#ifndef BELFEM_CL_MATERIAL_HPP
13#define BELFEM_CL_MATERIAL_HPP
53#pragma clang diagnostic push
54#pragma clang diagnostic ignored "-Wformat-security"
55#pragma clang diagnostic ignored "-Wformat"
56#pragma clang diagnostic ignored "-Wunused-variable"
57#pragma clang diagnostic ignored "-Wunused-parameter"
59#elif defined(__GNUC__) || defined(__GNUG__)
60#pragma GCC diagnostic push
61#pragma GCC diagnostic ignored "-Wformat"
62#pragma GCC diagnostic ignored "-Wunused-variable"
63#pragma GCC diagnostic ignored "-Wunused-parameter"
65#elif defined(BELFEM_INTEL)
69#pragma warning(disable: 1011)
71#pragma warning(disable: 177)
73#pragma warning(disable: 1595)
89 class SplineLookupTable ;
284 const bool mIsIsotropic ;
288 string mNumber =
"" ;
344 HeatFunc * mHeatFunction = nullptr ;
349 void * mDefectHandle = nullptr ;
352 void * mHeatHandle = nullptr ;
538 flag(
const uint8_t aIndex = 0 );
544 unflag(
const uint8_t aIndex = 0 );
551 is_flagged(
const uint8_t aIndex = 0 )
const ;
860 n(
const real normB,
const real angleNxB,
const real T )
const ;
863 n(
const real normB,
const real angleNxB )
const ;
869 jc(
const real normB,
const real angleNxB )
const ;
1050 H(
const real B )
const ;
1271 const string & aLabel ) ;
1294 const string & aLabel ) ;
1312 const real T )
const ;
1317 const real T )
const ;
1336 const std::vector< real > & Coefficients ) ;
1675 const uint aStartBC,
1682 inline const string &
1688 inline const string &
1704 BELFEM_ASSERT( aIndex < 8,
"Flag index %u out of bounds (must be < 8)",
1705 (
unsigned int ) aIndex );
1706 mFlags |= ( 1 << aIndex );
1713 BELFEM_ASSERT( aIndex < 8,
"Flag index %u out of bounds (must be < 8)",
1714 (
unsigned int ) aIndex );
1715 mFlags &= ~( 1 << aIndex );
1721 BELFEM_ASSERT( aIndex < 8,
"Flag index %u out of bounds (must be < 8)",
1722 (
unsigned int ) aIndex );
1723 return mFlags & ( 1 << aIndex );
1729 return mHaveProperty.test(
static_cast< size_t >( aProperty ) ) ;
1735 return mDefectFunction != nullptr ;
1741 return mHeatFunction != nullptr ;
1759 return mResistivityLaw ;
1765 return mPropertyDependencies(
static_cast< size_t >( aProperty ) )->test(
static_cast< uint >( aDependency ));
1771 return mPropertyDependencies(
static_cast< size_t >( aProperty ) ) ;
1777 return mIsIsotropic ;
1783 return ! std::isnan( mConstantProperties(
static_cast< index_t >( aProperty ) ) ) ;
1790 return mConstantProperties(
static_cast< size_t >( aProperty ) ) ;
1799 "Material '%s' does not have density assigned", this->
label().c_str() ) ;
1801 return ( this->*mFunctionDensity )( T );
1808 "Wrong function call for Material::density");
1816 "Material %s does not have a reference density set", mLabel.c_str() );
1818 "Material %s does not have a temperature for the reference density set", mLabel.c_str() );
1832 "Material %s does not have a reference density set", mLabel.c_str() );
1846 return ( this->*mFunctionCp )( T );
1860 return (this->*mFunctiondCpdT )( T ) ;
1867 return (this->*mFunctiond2CpdT2 )( T ) ;
1916 "Material does not have thermal conductivity" ) ;
1917 return (this->*mFunctionLambda )( T ) ;
1931 "Material does not have thermal conductivity" ) ;
1933 return (this->*mFunctiondLambdadT )( T ) ;
1960 "Material %s does not have thermal conductivity", mLabel.c_str() ) ;
1963 "wrong function call for Material::lambda in material %s", mLabel.c_str() ) ;
1965 return this->
lambda( T );
1973 "Material %s does not have thermal conductivity", mLabel.c_str() ) ;
1976 "wrong function call for Material::dlambdadT in material %s", mLabel.c_str() ) ;
1986 "Material %s does not have thermal conductivity", mLabel.c_str() ) ;
1989 "wrong function call for Material::dlambdadB in material %s", mLabel.c_str() ) ;
1999 "Material %s does not have thermal conductivity", mLabel.c_str() ) ;
2002 "wrong function call for Material::dlambdadbeta in material %s", mLabel.c_str() ) ;
2015 "Material %s does not have thermal conductivity", mLabel.c_str() ) ;
2019 return this->
lambda( T );
2027 "Material %s does not have thermal conductivity", mLabel.c_str() ) ;
2030 "wrong function call for Material::dlambdadT in material %s", mLabel.c_str() ) ;
2042 "Material %s does not have electric resistivity", mLabel.c_str() ) ;
2044 return ( this->*mFunctionRho )( T ) ;
2053 "Material %s does not have electric resistivity", mLabel.c_str() ) ;
2055 return ( this->*mFunctiondRhodT )( T ) ;
2096 "wrong function call for Material::rho in %s", mLabel.c_str() ) ;
2098 return this->
rho( T );
2108 "wrong function call for Material::drhodT in %s", mLabel.c_str() ) ;
2110 return this->
drhodT( T );
2120 "wrong function call for Material::drhodB in %s", mLabel.c_str() ) ;
2129 "wrong function call for Material::drhodbeta in %s", mLabel.c_str() ) ;
2184 "Material %s does not have Youngs Modulus", mLabel.c_str() ) ;
2185 return ( this->*mFunctionE )( T );
2206 "Material %s is not isotropic", mLabel.c_str() ) ;
2208 "Material does not have Poisson Ratio" ) ;
2210 return ( this->*mFunctionNu )( T );
2230 return this->
E( T ) / ( 2.0 * ( 1.0 + this->
nu( T ) ) ) ;
2238 return this->
E( T ) / ( 3.0 * ( 1.0 - 2.0 * this->
nu( T ) ) ) ;
2248 "Material %s does not have thermal expansion", mLabel.c_str() ) ;
2250 return ( this->*mFunctionAlpha )( T );
2276 "Material %s does not have yield stress", mLabel.c_str() ) ;
2278 return ( this->*mFunctionRp02 )( T );
2300 "Material %s does not have Debye temperature", mLabel.c_str() ) ;
2302 return ( this->*mFunctionDebye )( T );
2320 return ( this->*mFunctionRhoI )( T );
2336 "%s: alpha split temperature is not set, create_low_temperature_alpha() "
2337 "must run before alpha is evaluated", mLabel.c_str() );
2338 return mTAlphaSwitch ;
2346 BELFEM_ASSERT( mHeatFunction !=
nullptr ,
"No heat function set for material %s", mLabel.c_str() ) ;
2347 return this->mHeatFunction( x, y, z, time ) ;
2361#if defined(__clang__)
2362#pragma clang diagnostic pop
2364#elif defined(__GNUC__) || defined(__GNUG__)
2365#pragma GCC diagnostic pop
2367#elif defined(BELFEM_INTEL)
#define BELFEM_ASSERT(aCheck,...)
Definition assert.hpp:244
Base class hierarchy for critical current density (Jc) and n-value functions.
Bitset()=default
trivial constructor
Base class for all materials in BELFEM.
Definition cl_Material.hpp:279
void reset_dependencies(const MaterialProperty aProperty)
Reset all dependencies for a property.
Definition cl_Material.cpp:237
virtual real drhodB_kohler(const real T, const real normB, const real angleJxB) const
Definition cl_Material.cpp:608
virtual void dmudH_bhcurve(const real H, real &mu, real &dmudH) const
Definition cl_Material.cpp:981
virtual real dEdT_custom(const real T) const
Definition cl_Material.cpp:525
real dcpdT_spline(const real T) const
Definition cl_Material.hpp:1897
void set_user_defined_heating(HeatFunc *Function)
Set a user-defined volumetric heat load [ W/m³ ] as a function of x, y, z [ m ] and t [ s ].
Definition cl_Material.cpp:787
virtual real d2cpdT2(const real T=gTroom) const
Definition cl_Material.hpp:1863
virtual real H(const real B) const
Magnetic field strength from flux density.
Definition cl_Material.hpp:2137
real Rp02_spline(const real T) const
Definition cl_Material.hpp:2288
const MaterialDependencyBitset * dependencies(const MaterialProperty aProperty) const
Get all dependencies for a property.
Definition cl_Material.hpp:1769
void set_label(const string &aLabel)
PROTECTED INTERFACE FOR DERIVED MATERIALS.
Definition cl_Material.cpp:205
bool have(const MaterialProperty aProperty) const
Check if a material property is available.
Definition cl_Material.hpp:1727
void dmudH_const(const real H, real &mu, real &dmudH) const
Definition cl_Material.hpp:2171
Material(const MaterialType aType, const bool aIsIsotropic=true)
Constructor.
Definition cl_Material.cpp:149
void set_constant(const MaterialProperty aProperty, const real aValue)
Define a property as constant.
Definition cl_Material.cpp:257
bool is_constant(const MaterialProperty aProperty) const
Check if a property is constant (temperature-independent).
Definition cl_Material.hpp:1781
real rho_powerlaw(const real normJ) const
Power law resistivity for HTS (constant jc and n).
Definition powerlaws.hpp:184
virtual real K(real T=gTroom) const
Bulk modulus.
Definition cl_Material.hpp:2236
virtual real rho(const real T) const
Electrical resistivity (isotropic).
Definition cl_Material.hpp:2038
virtual real jc_custom(const real T) const
Definition cl_Material.cpp:574
virtual real drhodT_kohler(const real T, const real normB, const real angleJxB) const
Definition cl_Material.cpp:601
real lambda_const(const real T) const
Definition cl_Material.hpp:1921
real n(const real normB, const real angleNxB, const real T) const
Direct evaluation of the n-value as a function of , and .
Definition powerlaws.hpp:976
void set_resistivity_law(const ResistivityLaw aLaw)
Definition cl_Material.cpp:801
virtual real E(real T=gTroom) const
Young's modulus.
Definition cl_Material.hpp:2180
real cp_const(const real T) const
Definition cl_Material.hpp:1851
MaterialType type() const
Get the material type.
Definition cl_Material.hpp:1695
virtual void dmudH(const real H, real &mu, real &dmudH) const
Magnetic permeability and its derivative.
Definition cl_Material.hpp:2165
virtual real drhodbeta_table(const real T, const real normB, const real angleJxB) const
Definition cl_Material.cpp:643
real rho_const(const real T) const
Definition cl_Material.hpp:2066
virtual real lambda(const real T=gTroom) const
Thermal conductivity (isotropic).
Definition cl_Material.hpp:1912
real n_eval_raw(const real T, const real normB, const real angleNxB) const
Definition powerlaws.hpp:76
real drho_riva_dB(const real normJ, const real T, const real normB, const real angleNxB) const
dρ/d|B| of rho_riva: w²·dρ_PL/dB ( dρ_n/dB = 0 on this path )
Definition powerlaws.hpp:2585
virtual real alpha_custom(const real T) const
Definition cl_Material.cpp:546
virtual real lambda_custom(const real T) const
Definition cl_Material.cpp:505
virtual real evaluate_polynomial(const MaterialProperty Property, const real T) const
Evaluate a polynomial for a given property (for UserDefinedMaterial).
Definition cl_Material.cpp:918
Material(Material &&)=delete
virtual real rho_spline(const real T) const
Definition cl_Material.hpp:2078
const material::JcFunction * mJcFunction
Definition cl_Material.hpp:414
virtual real cp(const real T=gTroom) const
Specific heat capacity.
Definition cl_Material.hpp:1842
bool depends(const MaterialProperty aProperty, const MaterialDependency aDependency) const
Check if a property depends on a specific variable.
Definition cl_Material.hpp:1763
real dcpdT_finite_difference(const real T) const
Definition cl_Material.hpp:1877
virtual real drhodT(const real T) const
Definition cl_Material.hpp:2049
bool is_isotropic() const
Check if material is isotropic.
Definition cl_Material.hpp:1775
bool use_piecewise() const
Check if we use piecewise instead of power-law.
Definition cl_Material.hpp:1745
void load_bh_curve(const material::BhCurve *aCurve)
Activate a B-H curve as the permeability source (ferromagnets).
Definition cl_Material.cpp:951
void set_number(const string &aNumber)
Set material number/identifier (for derived classes).
Definition cl_Material.cpp:211
virtual real drhodbeta_kohler(const real T, const real normB, const real angleJxB) const
Definition cl_Material.cpp:615
virtual real spline_property(const MaterialProperty aProperty, const real aX) const
Evaluate property using spline interpolation.
Definition cl_Material.cpp:993
void set_user_defined_defect(DefectFunc *Function)
Set a user-defined defect function with x, y, z, t dependencies.
Definition cl_Material.cpp:779
real drho_piecewise_dT(const real normJ, const real T, const real normB, const real angleNxB) const
Derivative of piecewise resistivity with respect to T at fixed J, |B|, θ ( T-leg ).
Definition powerlaws.hpp:2171
real jc_eval(const real T, const real normB, const real angleNxB) const
O1 "full-signature policy" helpers: the assembly path always passes the full ( T, normB,...
Definition powerlaws.hpp:66
real dlambdadT_spline(const real T) const
Definition cl_Material.hpp:1950
void set_custom(const MaterialProperty aProperty)
Mark property as using custom evaluation function.
Definition cl_Material.cpp:389
virtual real drhodT_custom(const real T) const
Definition cl_Material.hpp:2072
real drho_piecewise_dB(const real normJ, const real T, const real normB, const real angleNxB) const
Derivative of piecewise resistivity with respect to |B| at fixed J, T, θ
Definition powerlaws.hpp:2020
void read_heating(const string &aLibraryPath, const string &aLabel)
Read a heating function from a plugin library.
Definition cl_Material.cpp:888
real H_const(const real B) const
Definition cl_Material.hpp:2143
real drho_piecewise_dJ(const real normJ, const real T, const real normB, const real angleNxB) const
Derivative of piecewise resistivity with respect to current density magnitude.
Definition powerlaws.hpp:1788
real(Material::*) mFunctiondRhoKohlerdB(const real T, const real normB, const real angle) const
Definition cl_Material.hpp:405
real debye_const(const real T) const
Definition cl_Material.hpp:2306
real cp_spline(const real T) const
Definition cl_Material.hpp:1891
real drho_riva_dJ(const real normJ, const real T, const real normB, const real angleNxB) const
dρ/d|J| of rho_riva: w²·dρ_PL/dJ with w = ρ_n/(ρ_PL+ρ_n)
Definition powerlaws.hpp:2554
virtual real dlambdadB(const real T, const real B, const real beta) const
Definition cl_Material.hpp:1982
real density_const(const real T) const
Definition cl_Material.hpp:1805
real drhodT_finite_difference(const real T) const
Definition cl_Material.hpp:2059
real(Material::*) mFunctiondRhoKohlerdT(const real T, const real normB, const real angle) const
Definition cl_Material.hpp:404
virtual real rho_i(const real T) const
Intrinsic (phonon) electrical resistivity of a metal, ρ = ρ_i(T) + ρ_0.
Definition cl_Material.hpp:2318
real return_zero(const real T) const
Shared binding for derivative channels that are identically zero.
Definition cl_Material.hpp:1871
real dn_eval_dB(const real T, const real normB, const real angleNxB) const
d(n)/d|B|, same routing as djc_eval_dB
Definition powerlaws.hpp:110
virtual void set_bh_curve(const material::BhCurve *aCurve)
Assign a B-H curve to this material.
Definition cl_Material.cpp:664
void(Material::*) mFunctionDMuDH(double, double &, double &) const
Definition cl_Material.hpp:410
void set_dependency(const MaterialProperty aProperty, const MaterialDependency aDependency)
Add a dependency to a property.
Definition cl_Material.cpp:246
void set_jc_function(const material::JcFunction *aFunction)
Assign a critical current density function.
Definition cl_Material.cpp:670
virtual void set_user_defined_polynomial(const MaterialProperty Property, const std::vector< real > &Coefficients)
Set a polynomial function for a property (for UserDefinedMaterial).
Definition cl_Material.cpp:943
bool have_defect() const
Check if the material has a defect.
Definition cl_Material.hpp:1733
virtual real rho_custom(const real T) const
Definition cl_Material.cpp:567
real volumetric_heatload(const real x, const real y, const real z, const real time) const
Artificial volumetric heat load [ W/m³ ] from the heating plugin.
Definition cl_Material.hpp:2344
virtual real dlambdadT_custom(const real T) const
Definition cl_Material.cpp:512
void set_have(const MaterialProperty aProperty, const bool aHave=true)
Mark a property as available.
Definition cl_Material.cpp:224
virtual real drhodB(const real T, const real B, const real beta) const
Definition cl_Material.hpp:2117
virtual real mu_bhcurve(const real H, const real T) const
Definition cl_Material.cpp:973
real drho_powerlaw_dB(const real normJ, const real T, const real normB, const real angleNxB) const
Derivative of power-law resistivity with respect to |B| at fixed J, T, θ ( jc = jc(T,...
Definition powerlaws.hpp:1964
virtual real density_custom(const real T) const
Definition cl_Material.hpp:1813
virtual real evaluate_derivative_of_polynomial(const MaterialProperty Property, const real T) const
Definition cl_Material.cpp:926
virtual real drhodT_table(const real T, const real normB, const real angleJxB) const
Definition cl_Material.cpp:629
real rho_piecewise(const real normJ) const
Piecewise resistivity for HTS (constant jc and n).
Definition powerlaws.hpp:412
const string & number() const
Get material number/identifier.
Definition cl_Material.hpp:1689
real(Material::*) mFunctionMu(const real H, const real T) const
Definition cl_Material.hpp:409
virtual real lambda_table(const real T, const real normB, const real angle) const
Definition cl_Material.cpp:657
real djc_eval_dB(const real T, const real normB, const real angleNxB) const
Definition powerlaws.hpp:102
bool riva_rho_pl(const real normJ, const real jc, const real n, const real ec, real &rhoPL) const
Definition powerlaws.hpp:2489
real n_eval(const real T, const real normB, const real angleNxB) const
Definition powerlaws.hpp:86
real jc(const real normB, const real angleNxB, const real T) const
Direct evaluation of the critical current density .
Definition powerlaws.hpp:1012
virtual real rho_i_custom(const real T) const
Definition cl_Material.cpp:587
void set_piecewise(const bool aUsePiecewise)
Definition cl_Material.cpp:794
real djc_eval_dT(const real T, const real normB, const real angleNxB) const
Definition powerlaws.hpp:126
real dn_eval_dT(const real T, const real normB, const real angleNxB) const
d(n)/dT, same routing as djc_eval_dT
Definition powerlaws.hpp:134
real M() const
Molar mass.
Definition cl_Material.hpp:1836
virtual real H_bhcurve(const real B) const
Definition cl_Material.cpp:966
const string & label() const
Get material label.
Definition cl_Material.hpp:1683
void flag(const uint8_t aIndex=0)
Set flag (multi-purpose flag used by Kernel).
Definition cl_Material.hpp:1702
virtual real drhodT_spline(const real T) const
Definition cl_Material.hpp:2084
real Rp02_const(const real T) const
Definition cl_Material.hpp:2282
virtual real drhodbeta(const real T, const real B, const real beta) const
Definition cl_Material.hpp:2126
bool have_heating() const
Check if the material has a heating function.
Definition cl_Material.hpp:1739
virtual void set_user_defined_function(const MaterialProperty Property, const MaterialDependency Dependency, MatFunc1 *Function)
Set a user-defined function with one dependency (for UserDefinedMaterial).
Definition cl_Material.cpp:749
real drho_powerlaw_dT(const real normJ, const real T, const real normB, const real angleNxB) const
Derivative of power-law resistivity with respect to T at fixed J, |B|, θ ( T-leg: jc(T),...
Definition powerlaws.hpp:2113
ResistivityLaw resistivity_law() const
Definition cl_Material.hpp:1757
virtual real rho_table(const real T, const real normB, const real angleJxB) const
Definition cl_Material.cpp:622
virtual real dspline_property(const MaterialProperty aProperty, const real aX) const
Definition cl_Material.cpp:1000
real nu_spline(const real T) const
Definition cl_Material.hpp:2220
void check_riva_n_source() const
Definition cl_Material.cpp:812
virtual real density(const real T=gTroom) const
Density as a function of temperature.
Definition cl_Material.hpp:1796
virtual real drhodB_table(const real T, const real normB, const real angleJxB) const
Definition cl_Material.cpp:636
void unflag(const uint8_t aIndex=0)
Clear flag.
Definition cl_Material.hpp:1711
Material & operator=(const Material &)=delete
real debye_spline(const real T) const
Definition cl_Material.hpp:2312
virtual real G(real T=gTroom) const
Shear modulus.
Definition cl_Material.hpp:2228
real dlambdadT_finite_difference(const real T) const
Definition cl_Material.hpp:1937
real constant_property(const MaterialProperty aProperty) const
Get constant property value.
Definition cl_Material.hpp:1787
virtual real nu_custom(const real T) const
Definition cl_Material.cpp:532
virtual real l(real T) const
Relative length after thermal expansion.
Definition cl_Material.cpp:1031
virtual real dlambdadbeta(const real T, const real B, const real beta) const
Definition cl_Material.hpp:1995
Material & operator=(Material &&)=delete
virtual real rho_kohler(const real T, const real normB, const real angleJxB) const
Definition cl_Material.cpp:594
real(Material::*) mFunctionRhoKohler(const real T, const real normB, const real angle) const
Definition cl_Material.hpp:403
virtual real ddspline_property(const MaterialProperty aProperty, const real aX) const
Definition cl_Material.cpp:1007
real E_const(const real T) const
Definition cl_Material.hpp:2189
virtual void set_table_flags(const bool aFlag)
Definition cl_Material.cpp:987
virtual real dcpdT_custom(const real T) const
Definition cl_Material.cpp:492
real alpha_spline(const real T) const
Definition cl_Material.hpp:2260
Material(const Material &)=delete
virtual real Rp02(real T=gTroom) const
Yield stress (0.2% offset).
Definition cl_Material.hpp:2272
real nu_const(const real T) const
Definition cl_Material.hpp:2214
real d2cpdT2_spline(const real T) const
Definition cl_Material.hpp:1903
virtual void set_RRR(const real RRR)
Set the residual resistivity ratio (for noble metals).
Definition cl_Material.cpp:217
real E_spline(const real T) const
Definition cl_Material.hpp:2195
const material::JcFunction * mNFunction
Definition cl_Material.hpp:415
real drho_riva_dT(const real normJ, const real T, const real normB, const real angleNxB) const
dρ/dT of rho_riva: w²·dρ_PL/dT + (1−w)²·dρ_n/dT
Definition powerlaws.hpp:2628
real(Material::*) mFunctiondRhoKohlerdbeta(const real T, const real normB, const real angle) const
Definition cl_Material.hpp:406
real lambda_spline(const real T) const
Definition cl_Material.hpp:1944
virtual real debye_custom(const real T) const
Definition cl_Material.cpp:560
real d2cpdT2_finite_difference(const real T) const
Definition cl_Material.hpp:1884
virtual real E_custom(const real T) const
Definition cl_Material.cpp:518
virtual real mu_custom(const real H, const real T) const
Definition cl_Material.cpp:539
real drho_powerlaw_dJ(const real normJ, const real T, const real normB, const real angleNxB) const
Derivative of power-law resistivity with respect to current density magnitude.
Definition powerlaws.hpp:1240
virtual real cp_custom(const real T) const
Definition cl_Material.cpp:485
real mu_const(const real H, const real T) const
Definition cl_Material.hpp:2157
real(Material::*) mFunctionH(const real B) const
Definition cl_Material.hpp:408
virtual real d2cpdT2_custom(const real T) const
Definition cl_Material.cpp:499
real alpha_const(const real T) const
Definition cl_Material.hpp:2254
virtual real debye(const real T) const
Debye temperature.
Definition cl_Material.hpp:2296
void read_defect(const string &aLibraryPath, const string &aLabel)
Read a defect from the library.
Definition cl_Material.cpp:858
virtual real dlambdadT(const real T=gTroom) const
Definition cl_Material.hpp:1927
void set_n_function(const material::JcFunction *aFunction)
Assign a power law exponent function.
Definition cl_Material.cpp:699
virtual real dcpdT(const real T=gTroom) const
Definition cl_Material.hpp:1856
real alpha_switch_temperature() const
Temperature below which alpha is taken from the Grueneisen branch.
Definition cl_Material.hpp:2333
real ref_density() const
Reference density at reference temperature.
Definition cl_Material.hpp:1829
virtual real mu(const real H, const real T=BELFEM_QUIET_NAN) const
Magnetic permeability.
Definition cl_Material.hpp:2151
virtual real nu(real T=gTroom) const
Poisson's ratio.
Definition cl_Material.hpp:2203
bool use_riva() const
Definition cl_Material.hpp:1751
bool is_flagged(const uint8_t aIndex=0) const
Check if material is flagged.
Definition cl_Material.hpp:1719
virtual real alpha(real T=gTroom) const
Thermal expansion coefficient.
Definition cl_Material.hpp:2244
real rho_i_spline(const real T) const
Definition cl_Material.hpp:2324
real rho_riva(const real normJ, const real T, const real normB, const real angleNxB) const
Riva-law resistivity: the superconducting power-law channel in parallel with the normal-state channel...
Definition powerlaws.hpp:2524
virtual real n_custom(const real T) const
Definition cl_Material.cpp:581
virtual real Rp02_custom(const real T) const
Definition cl_Material.cpp:553
real drhodB(const real T, const real B, const real beta) const override
Definition cl_Material_Alloy.hpp:173
real dlambdadT(const real T, const real B, const real beta) const override
Definition cl_Material_Alloy.hpp:213
real lambda(const real T, const real B, const real beta) const override
Thermal conductivity with magnetoresistance.
Definition cl_Material_Alloy.hpp:207
real drhodT(const real T, const real B, const real beta) const override
Definition cl_Material_Alloy.hpp:157
real drhodbeta(const real T, const real B, const real beta) const override
Definition cl_Material_Alloy.hpp:190
real rho(const real T, const real B, const real beta) const override
Electrical resistivity with magnetoresistance (Kohler's rule).
Definition cl_Material_Alloy.hpp:145
B-H curve for ferromagnetic materials.
Definition cl_BhCurve.hpp:61
Base class for critical current density (Jc) and n-value functions.
Definition cl_JcFunction.hpp:138
Definition cl_Material_SplineLookupTable.hpp:25
real l(real T) const override
Relative length after thermal expansion, from integrated alpha spline.
Definition cl_Material_SplineLookupTable.hpp:184
real ddspline_property(const MaterialProperty aProperty, const real aX) const override
Definition cl_Material_SplineLookupTable.hpp:176
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
real spline_property(const MaterialProperty aProperty, const real aX) const override
Evaluate property using spline interpolation.
Definition cl_Material_SplineLookupTable.hpp:160
const real nu0
inverse of magnetic constant in (A*m)/(V*s)
Definition constants.hpp:80
USER GUIDES:
Definition cl_Capacitor.cpp:16
constexpr size_t gNumNonConstantMaterialProperties
Number of non-constant material properties.
Definition cl_Material.hpp:202
ResistivityLaw
E-J law used for a superconductor's resistivity.
Definition cl_Material.hpp:233
@ PowerLaw
Definition cl_Material.hpp:234
@ Riva
Definition cl_Material.hpp:236
@ Piecewise
Definition cl_Material.hpp:235
unit get_unit(const MaterialProperty aProperty)
Get the SI unit for a material property.
Definition cl_Material.cpp:57
std::array< real, 7 > unit
Definition typedefs.hpp:72
MaterialDependency
Dependencies that material properties can have.
Definition cl_Material.hpp:121
@ UNDEFINED
Definition cl_Material.hpp:130
@ angleBxJ
Definition cl_Material.hpp:124
@ Jc
Definition cl_Material.hpp:128
@ UserDefined
Definition cl_SourceFunction.hpp:66
constexpr real gTroom
Definition typedefs.hpp:64
unsigned int uint
Definition typedefs.hpp:30
constexpr real gTAlphaSwitchMax
Upper bound for the thermal expansion split temperature [K].
Definition cl_Material.hpp:47
real MatFunc1(const Material *, const real)
Definition cl_Material.hpp:241
int proc_t
Definition commtypes.hpp:29
real MatFunc3(const Material *, const real, const real, const real)
Definition cl_Material.hpp:243
MaterialProperty
All material properties that can be defined.
Definition cl_Material.hpp:153
@ nu
Definition cl_Material.hpp:156
@ gamma
Definition cl_Material.hpp:174
@ A_electron_magnon
Definition cl_Material.hpp:189
@ T_max
Definition cl_Material.hpp:171
@ UNDEFINED
Definition cl_Material.hpp:194
@ rho_0
Definition cl_Material.hpp:183
@ ref_density
Definition cl_Material.hpp:172
@ kohler_trans
Definition cl_Material.hpp:165
@ alpha
Definition cl_Material.hpp:161
@ ec
Definition cl_Material.hpp:185
@ A_bloch_gruen
Definition cl_Material.hpp:180
@ density
Definition cl_Material.hpp:154
@ E
Definition cl_Material.hpp:155
@ debye0K
Definition cl_Material.hpp:177
@ density_correction
Definition cl_Material.hpp:192
@ Tcurie
Definition cl_Material.hpp:188
@ M
Definition cl_Material.hpp:168
@ q
Definition cl_Material.hpp:176
@ A_spin_disorder
Definition cl_Material.hpp:190
@ rho
Definition cl_Material.hpp:160
@ mu
Definition cl_Material.hpp:159
@ lambda
Definition cl_Material.hpp:158
@ rho0_pure
Definition cl_Material.hpp:193
@ debye
Definition cl_Material.hpp:163
@ cp
Definition cl_Material.hpp:157
@ rho_i
Definition cl_Material.hpp:164
@ rho_i_ref
Definition cl_Material.hpp:178
@ Rp02
Definition cl_Material.hpp:162
@ jc
Definition cl_Material.hpp:186
@ layer_thickness
Definition cl_Material.hpp:184
@ kohler_long
Definition cl_Material.hpp:166
@ T_ref_rho_i
Definition cl_Material.hpp:179
@ Gamma
Definition cl_Material.hpp:169
@ T_ref_density
Definition cl_Material.hpp:173
@ n_bloch_gruen
Definition cl_Material.hpp:181
@ RRR
Definition cl_Material.hpp:182
@ grueneisen
Definition cl_Material.hpp:191
@ T_crit
Definition cl_Material.hpp:167
real HeatFunc(const real, const real, const real, const real)
Definition cl_Material.hpp:245
uint32_t index_t
Definition typedefs.hpp:52
real MatFunc2(const Material *, const real, const real)
Definition cl_Material.hpp:242
constexpr size_t gNumMaterialProperties
Total number of material properties.
Definition cl_Material.hpp:207
constexpr real gFinDiffDeltaT
Definition typedefs.hpp:67
real DefectFunc(const real, const real, const real, const real)
Definition cl_Material.hpp:244
double real
Definition typedefs.hpp:36
Bitset< static_cast< size_t >(MaterialDependency::UNDEFINED) > MaterialDependencyBitset
Bitset for tracking material property dependencies.
Definition cl_Material.hpp:136
MaterialType
Material classification based on physical behavior.
Definition cl_Material.hpp:107
@ HTS
Definition cl_Material.hpp:110
@ LookupAlloy
Definition cl_Material.hpp:112
@ PureMetal
Definition cl_Material.hpp:111
@ NonMetal
Definition cl_Material.hpp:114
@ CompositeAlloy
Definition cl_Material.hpp:113
string to_string(const DomainType aDomainType)
Definition en_DomainType.cpp:21
Inline E–J resistivity models for HTS materials and their Jacobians.
#define BELFEM_QUIET_NAN
Definition typedefs.hpp:87