|
| | JcFunction ()=default |
| virtual | ~JcFunction ()=default |
| bool | depends_on (const JcParameter aParameter) const |
| virtual real | min_value () const |
| | Smallest value this function can return, when known.
|
| bool | is_constant () const |
| virtual real | eval (const real normB, const real angle) const |
| | Evaluate with field and angle dependence.
|
| virtual real | eval (const real normB, const real angle, const real T) const |
| | Evaluate with full temperature, field, and angle dependence.
|
| virtual real | deval_dB (const real normB, const real angle, const real T) const |
| | Derivative of eval with respect to the field magnitude.
|
| virtual real | deval_dbeta (const real normB, const real angle, const real T) const |
| | Derivative of eval with respect to the field angle.
|
| virtual real | deval_dT (const real normB, const real angle, const real T) const |
| | Derivative of eval with respect to temperature.
|
Base class for critical current density (Jc) and n-value functions.
This abstract base class provides the interface for computing:
- Jc(B, angle, T): Critical current density [A/m²]
- n(B, angle, T): Power law exponent [-]
The same class is used for both properties since they have identical functional dependencies and evaluation signatures.
Derived Classes
- JcFunctionModifiedKim: Analytical modified Kim model
- Dependencies: normB, angleNxB
- Overrides: eval(B, angle), deval_dB
- JcFunctionDatabase: Lookup table from HDF5 file
- Dependencies: normB, angleNxB, T
- Overrides: eval(B, angle, T)
Virtual Function Behavior
Both eval() methods have default implementations that throw errors. Derived classes override the appropriate method(s) based on their dependency set:
- If depends on T: Override eval(B, angle, T)
- If no T dependence: Override eval(B, angle)
The Material class calls the appropriate eval() based on the dependency flags queried via depends_on().
Ownership and Lifetime
Material takes ownership of assigned JcFunction objects:
JcFunction*
jc = factory.create_jc_function(1e9, 5.0, 0.5, 2.0);
hts->set_jc_function(jc);
@ jc
Definition cl_Material.hpp:186
- See also
- BELFEM Materials Module - Usage Guide
| real belfem::material::JcFunction::deval_dB |
( |
const real | normB, |
|
|
const real | angle, |
|
|
const real | T ) const |
|
virtual |
Derivative of eval with respect to the field magnitude.
- Parameters
-
| normB | Magnetic field magnitude [T] |
| angle | Angle between surface normal and field [rad] |
| T | Temperature [K] |
- Returns
- d(jc)/d|B| [A/m²/T] or d(n)/d|B| [1/T]
The base implementation returns 0, which is EXACT for constant functions and the conservative fallback for derived classes that have not implemented an analytic form ( UserDefined ): a zero here reproduces the pre-lookup-derivative tangent for that function rather than inventing a wrong one. Unlike eval(), it does not abort — the Newton consumer ( add_rho_field_tangent ) treats 0 as "no field channel" and early-outs.
Reimplemented in belfem::material::JcFunctionDatabase, and belfem::material::JcFunctionModifiedKim.
| real belfem::material::JcFunction::deval_dbeta |
( |
const real | normB, |
|
|
const real | angle, |
|
|
const real | T ) const |
|
virtual |
Derivative of eval with respect to the field angle.
- Returns
- d(jc)/dθ [A/m²/rad] or d(n)/dθ [1/rad]
Same zero-default contract as deval_dB. NOTE: for HTS the angle is bn_angle (the field-to-tape-normal angle, unfolded [0, pi]), and the existing Newton kernel differentiates bj_angle ( field to current, the metal Kohler variable ) — so this hook must NOT be wired into add_rho_field_tangent's beta channel until a signed bn_angle d(theta)/dq chain exists there.
Reimplemented in belfem::material::JcFunctionDatabase.