Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ record BaseData "Base Data Record"
extends Modelica.Icons.Record;
parameter SI.MagneticFieldStrength Hsat=100
"Hysteresis region between -Hsat .. Hsat";
parameter Real M(final unit="1")=0.95
parameter Real M(final unit="T")=0.95
"Related to saturation value of magnetization";
parameter Real r(final unit="1")=0.55
parameter Real r(final unit="T-(1/2)")=0.55
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See: modelica/ModelicaSpecification#3439 for this new unit-string, added after Modelica Language 3.6.

"Proportion of the straight region in the vicinity of Hc";
parameter Real q(final unit="m/A")=2.4e-1
"Slope of the straight region in the vicinity of Hc";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,11 +170,10 @@ equation
H3= -alpha-mat.Hc;
H4= beta-mat.Hc;

E = unitT*
((mat.M*mat.r*(2/pi*atan(mat.q*H1)+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*H1)+exp(-mat.p2*H1))))*
(mat.M*mat.r*(2/pi*atan(mat.q*H2)+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*H2)+exp(-mat.p2*H2))))-
(mat.M*mat.r*(2/pi*atan(mat.q*H3)+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*H3)+exp(-mat.p2*H3))))*
(mat.M*mat.r*(2/pi*atan(mat.q*H4)+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*H4)+exp(-mat.p2*H4)))));
E = ((mat.M*mat.r*(2/pi*atan(mat.q*H1)+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*H1)+exp(-mat.p2*H1))))*
(mat.M*mat.r*(2/pi*atan(mat.q*H2)+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*H2)+exp(-mat.p2*H2))))-
(mat.M*mat.r*(2/pi*atan(mat.q*H3)+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*H3)+exp(-mat.p2*H3))))*
(mat.M*mat.r*(2/pi*atan(mat.q*H4)+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*H4)+exp(-mat.p2*H4)))));

der(J) = (if init then 0.5 else 1) * der(E);
B = J + mu0 * Hstat;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ protected
"Saturation polarization";
//final parameter Real mu0 = mat.K * mu_0;
parameter SI.MagneticFluxDensity eps=mat.M/1000;
parameter Real P1 = (mat.M*mat.r*(2/pi*atan(mat.q*(mat.Hsat-mat.Hc))+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*(mat.Hsat-mat.Hc))+exp(-mat.p2*(mat.Hsat-mat.Hc)))));
parameter Real P4 = (mat.M*mat.r*(2/pi*atan(mat.q*(-mat.Hsat-mat.Hc))+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*(-mat.Hsat-mat.Hc))+exp(-mat.p2*(-mat.Hsat-mat.Hc)))));
parameter Real P1(final unit="T(1/2)") = (mat.M*mat.r*(2/pi*atan(mat.q*(mat.Hsat-mat.Hc))+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*(mat.Hsat-mat.Hc))+exp(-mat.p2*(mat.Hsat-mat.Hc)))));
parameter Real P4(final unit="T(1/2)") = (mat.M*mat.r*(2/pi*atan(mat.q*(-mat.Hsat-mat.Hc))+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*(-mat.Hsat-mat.Hc))+exp(-mat.p2*(-mat.Hsat-mat.Hc)))));

SI.MagneticFieldStrength H2;
SI.MagneticFieldStrength H3;
Real P2;
Real P3;
Real P2(final unit="T(1/2)");
Real P3(final unit="T(1/2)");
Real H_lim;
constant SI.MagneticFluxDensity unitT = 1;

Expand All @@ -32,8 +32,8 @@ equation
P2 = (mat.M*mat.r*(2/pi*atan(mat.q*H2)+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*H2)+exp(-mat.p2*H2))));
P3 = (mat.M*mat.r*(2/pi*atan(mat.q*H3)+1)+(2*mat.M*(1-mat.r))/(1+1/2*(exp(-mat.p1*H3)+exp(-mat.p2*H3))));

hystR = -Js + unitT*(P1*P2-P3*P4) + mu0*Hstat - eps/2;
hystF = Js + unitT*(P4*P2-P3*P1) + mu0*Hstat + eps/2;
hystR = -Js + (P1*P2-P3*P4) + mu0*Hstat - eps/2;
hystF = Js + (P4*P2-P3*P1) + mu0*Hstat + eps/2;

annotation (defaultComponentName="core", Icon(graphics={Text(
extent={{40,0},{40,-30}},
Expand Down