BELFEM
0.9.3
Berkeley Lab Finite Element Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
cl_Material_Nickel.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_NICKEL_HPP
13
#define BELFEM_CL_MATERIAL_NICKEL_HPP
14
15
16
#include "
cl_Material_Ferromagnetic.hpp
"
17
#include "
cl_Bezier.hpp
"
18
19
namespace
belfem
20
{
21
namespace
material
22
{
59
class
Nickel
:
public
Ferromagnetic
60
{
61
Bezier
* mReducedMagnetization = nullptr ;
62
Bezier
* mThermalExpansion = nullptr ;
63
Vector< real >
mThermalExpansionCryo ;
64
65
// debye temperature
66
Vector< real >
mDebyePoly ;
67
68
Vector< real >
mBSKohlerSwitch ;
69
Bezier
* mKohlerLongBezier = nullptr ;
70
Cell< Vector< real >
> mKohlerLongPolys ;
71
Cell< Vector< real >
> mKohlerTransPolys ;
72
73
public
:
74
75
Nickel
(
const
real
RRR
=
BELFEM_QUIET_NAN
,
76
const
bool
aBuildTables =
true
);
77
78
~Nickel
()
override
;
79
80
protected :
81
82
real
83
compute_mred
(
real
T )
const override
;
84
85
real
86
alpha_custom
(
const
real
T )
const override
;
87
88
real
89
debye_custom
(
const
real
T)
const override
;
90
91
real
92
kohler
(
const
real
B,
const
real
S,
const
real
beta )
const override
;
93
94
private
:
95
96
void
97
create_magnetization_curve();
98
99
void
100
set_constants();
101
102
void
103
create_alpha();
104
105
void
106
create_cp();
107
108
void
109
create_debye_and_rho();
110
111
void
112
create_kohler();
113
114
};
115
116
inline
real
Nickel::compute_mred
(
real
T )
const
117
{
118
real
Tc = this->
constant_property
(
MaterialProperty::Tcurie
);
119
if
( T > Tc +
BELFEM_EPSILON
)
return
0.0 ;
120
return
mReducedMagnetization->y( T / Tc );
121
}
122
123
inline
real
Nickel::debye_custom
(
const
real
T)
const
124
{
125
return
polyval
( mDebyePoly, T );
126
}
127
128
}
129
}
130
131
#endif
//BELFEM_CL_MATERIAL_NICKEL_HPP
cl_Bezier.hpp
cl_Material_Ferromagnetic.hpp
belfem::Bezier
Definition
cl_Bezier.hpp:30
belfem::Cell
A bounds-checked wrapper around std::vector.
Definition
cl_Cell.hpp:45
belfem::Material::constant_property
real constant_property(const MaterialProperty aProperty) const
Definition
cl_Material.hpp:1683
belfem::Vector< real >
belfem::material::Ferromagnetic::Ferromagnetic
Ferromagnetic(const string &aLabel, const bool aBuildTables=true)
Definition
cl_Material_Ferromagnetic.cpp:18
belfem::material::Nickel::kohler
real kohler(const real B, const real S, const real beta) const override
Kohler function for magnetoresistance.
Definition
cl_Material_Nickel.cpp:257
belfem::material::Nickel::alpha_custom
real alpha_custom(const real T) const override
Definition
cl_Material_Nickel.cpp:168
belfem::material::Nickel::compute_mred
real compute_mred(real T) const override
Definition
cl_Material_Nickel.hpp:116
belfem::material::Nickel::Nickel
Nickel(const real RRR=BELFEM_QUIET_NAN, const bool aBuildTables=true)
Definition
cl_Material_Nickel.cpp:19
belfem::material::Nickel::debye_custom
real debye_custom(const real T) const override
Definition
cl_Material_Nickel.hpp:123
belfem::material
Definition
cl_BhCurve.cpp:19
belfem::material::polyval
T polyval(const std::vector< T > &coeffs, const T x)
Definition
cl_Material_UserDefined.hpp:28
belfem
USER GUIDES:
Definition
cl_Capacitor.cpp:16
belfem::BELFEM_EPSILON
constexpr real BELFEM_EPSILON
Definition
typedefs.hpp:89
belfem::MaterialProperty::Tcurie
@ Tcurie
Definition
cl_Material.hpp:188
belfem::MaterialProperty::RRR
@ RRR
Definition
cl_Material.hpp:182
belfem::real
double real
Definition
typedefs.hpp:36
BELFEM_QUIET_NAN
#define BELFEM_QUIET_NAN
Definition
typedefs.hpp:86
src
physics
materials
cl_Material_Nickel.hpp
Generated by
1.18.0