BELFEM 0.9.3
Berkeley Lab Finite Element Framework
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
17#include "cl_Bezier.hpp"
18
19namespace 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
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
117 {
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
Definition cl_Bezier.hpp:30
A bounds-checked wrapper around std::vector.
Definition cl_Cell.hpp:45
real constant_property(const MaterialProperty aProperty) const
Definition cl_Material.hpp:1683
Ferromagnetic(const string &aLabel, const bool aBuildTables=true)
Definition cl_Material_Ferromagnetic.cpp:18
real kohler(const real B, const real S, const real beta) const override
Kohler function for magnetoresistance.
Definition cl_Material_Nickel.cpp:257
real alpha_custom(const real T) const override
Definition cl_Material_Nickel.cpp:168
real compute_mred(real T) const override
Definition cl_Material_Nickel.hpp:116
Nickel(const real RRR=BELFEM_QUIET_NAN, const bool aBuildTables=true)
Definition cl_Material_Nickel.cpp:19
real debye_custom(const real T) const override
Definition cl_Material_Nickel.hpp:123
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
constexpr real BELFEM_EPSILON
Definition typedefs.hpp:89
@ Tcurie
Definition cl_Material.hpp:188
@ RRR
Definition cl_Material.hpp:182
double real
Definition typedefs.hpp:36
#define BELFEM_QUIET_NAN
Definition typedefs.hpp:86