Summary for: HysteronModel < handle

Class summary

HysteronModel Base class for vector hysteron models

this = HysteronModel(Bs, M)

Piecewise linear shape functions are used. Hysteron evaluation methods must be subclassed.

The model is stateful (p, B); re-initialization is triggered whenever k_step_input < this.step in this.evaluate_H.

Properties

.B_cand - current B-values

.B_previous - previous B-values

.B_saturation - saturation flux density

.M - number of hysterons

.dp - spacing between shape-function nodes

.ksis - hysteron limits

.p_cand - current hysteron values, possibly temporary

.p_previous - previous hysteron values

.shape_function_nodes - shape function interpolant x-data

.shape_function_values - shape function interpolant y-data

.step - current step

Methods

Class methods are listed below. Inherited methods are not included.

.HysteronModel/PlayModel is a function.

this = PlayModel(Bs, M)

.HysteronModel/clear_copy is a function.

model = clear_copy(this)

.eval_nodefun Evaluate one “shape function of shape function”

f = eval_nodefun(this, b, k, m)

Evaluates a piecewise-linear function with the input argument b. This function has the value of 1 at b = this.nodes(m)(k), and 0 at all other nodes.

.evaluate_H Evaluate H-vector.

H = evaluate_H(this, Bin, kstep)

Evaluates H with the given B, at the given time-step, and updates the state of this.

H = evaluate_H(this, Bin, false)

The same as above, but skip state-update.

.evaluate_H_scalar Evaluate scalar model.

H = evaluate_H_scalar(this, Bin)

Evaluates scalar H with the input scalar time-series Bin.

.evaluate_differential_reluctivity Evaluate differential reluctivity.

dHdB = evaluate_differential_reluctivity(this, Bin, kstep)

Evaluates the differential reluctivity dH/dB using numerical differentiation.

.evaluate_shape_function Evaluates the scalar shape functions.

Hout = evaluate_shape_function(this, pnorm, m)

.evaluate_vector_hysteron Evaluate vector hysteron value.

Pout = evaluate_vector_hysteron(this, B, m)

Evaluates the hysteron m with the given input flux density (2xN vector) and the current hysteron state, AND update the current hysteron states.

Pout = evaluate_vector_hysteron(this, B, m, false)

The same as above, but don’t update current state.

.fit_model_with_least_squares Fit given model using non-negative

least-squares.

model = fit_model_with_least_squares(model, loops) fits the given model to measured BH loops.

  • model : a HysteronModel

  • loops : an array of structs with the fields .B and .H

IMPORTANT: the given loop data should span one entire major BH loop, not more and not less.

Fitting is is performed by feeding the given B-data to the model, and fitting its output to the measured H, using monotonic non-negative least-squares fitting on the shape function nodal values.

.initialize Initializes the model.

initialize(this, Binit) initializes the model to the given initial flux density vectors, using linear ramping.

.ndof Number of free nodes in shape function.

n = ndof(this, m)

.nodes Nodes of shape function.

bs = nodes(this, m)

.sample_scalar_hysteron Evaluate scalar hysteron for series input.

bout = sample_scalar_hysteron(this, Bin, m) evaluates the m:th scalar hysteron for the input time-series Bin.

.set_new_step Increment step.

set_new_step(this, kstep) sets the current candidate state (p_cand, B_cand) as the previous state (p_previous, B_previous)

.set_shape_function_data Set shape function nodes from fitted vector.

set_shape_function_data(this, coeffs)

set_shape_function_data(this, cs, plot_results)

.simulate_measured_loop Simulate H-values.

H = simulate_measured_loop(this, Bmeas)

Bmeas should consist of exactly one period of B.