Core

model Core "Model of core losses"
    parameter Machines.Losses.CoreParameters coreParameters(m = 3);
    final parameter Integer m = coreParameters.m "Number of phases";
    parameter Real turnsRatio(final min = Modelica.Constants.small) "Effective number of stator turns / effective number of rotor turns (if used as rotor core)";

    extends Modelica.Thermal.HeatTransfer.Interfaces.PartialElementaryConditionalHeatPortWithoutT(useHeatPort = false);

    Machines.Interfaces.SpacePhasor spacePhasor annotation (Placement(
        transformation(extent = {
            {-110, -10}, 
            {-90, 10}}),
        iconTransformation(extent = {
            {-110, -10}, 
            {-90, 10}})));
    input Modelica.SIunits.AngularVelocity w "Remagnetization angular velocity"
        annotation (Dialog(group = "Losses"));
    Modelica.SIunits.Conductance Gc "Variable core loss conductance";
protected
    Modelica.SIunits.AngularVelocity wLimit = noEvent(max(noEvent(abs(w)), coreParameters.wMin)) "Limited angular velocity";
equation
    if coreParameters.PRef <= 0 then 
        Gc = 0;
        spacePhasor.i_ = zeros(2);
    else 
        Gc = coreParameters.GcRef;
        spacePhasor.i_ = Gc * spacePhasor.v_;
    end if;
    lossPower = 1.5 * (spacePhasor.v_[1] * spacePhasor.i_[1] + spacePhasor.v_[2] * spacePhasor.i_[2]);

    annotation (
        Icon(graphics = {
            Rectangle(
                extent = {
                    {-70, 30}, 
                    {70, -30}},
                lineColor = {0, 0, 255},
                fillColor = {255, 255, 255},
                fillPattern = FillPattern.Solid), 
            Line(points = {
                {-90, 0}, 
                {-70, 0}}), 
            Line(
                points = {
                    {-70, 10}, 
                    {70, 10}},
                color = {0, 0, 255}), 
            Line(
                points = {
                    {-70, -30}, 
                    {70, -30}},
                color = {0, 0, 255}), 
            Line(
                points = {
                    {-70, -10}, 
                    {70, -10}},
                color = {0, 0, 255}), 
            Line(
                points = {
                    {70, 0}, 
                    {80, 0}},
                color = {0, 0, 255}), 
            Line(
                points = {
                    {80, 20}, 
                    {80, -20}},
                color = {0, 0, 255}), 
            Line(
                points = {
                    {90, 14}, 
                    {90, -14}},
                color = {0, 0, 255}), 
            Line(
                points = {
                    {100, 8}, 
                    {100, -8}},
                color = {0, 0, 255}), 
            Text(
                extent = {
                    {-150, 90}, 
                    {150, 50}},
                lineColor = {0, 0, 255},
                textString = "%name")}),
        Documentation(info = "<html>\n<p>\nCore losses can be separated into <strong>eddy current</strong> and <strong>hysteresis</strong> losses. The total core losses\ncan thus be expressed as\n</p>\n<pre>\n  P = PRef * (ratioHysteresis * (wRef / w) + 1 - ratioHysteresis) * (V / VRef)^2\n</pre>\n<p>\nwhere <code>w</code> is the actual angular remagnetization velocity and <code>V</code> is the actual voltage.\nThe term <code>ratioHysteresis</code> is the ratio of the hysteresis losses with respect to the total core losses for the reference voltage and frequency.\n</p>\n\n<p>\nIn the current implementation hysteresis losses are <strong>not considered</strong> since complex numbers are not provided in Modelica.\nTherefore, implicitly <code>ratioHysteresis = 0</code> is set. For the voltage and frequency range with respect to Fig.&nbsp;1,\nthe dependency of total core losses on the parameter <code>ratioHysteresis</code> is depicted in Fig.&nbsp;2.\nThe current implementation has thus the drawback over a model that considers <code>ratioHysteresis &gt; 0</code>:\n</p>\n<ul>\n<li>underestimation of the losses in the constant field region (<code>w</code> &lt; <code>wRef</code>)</li>\n<li>overestimation of the losses in the field weakening region (<code>w</code> &gt; <code>wRef</code>)</li>\n</ul>\n\n<table border=0 cellspacing=0 cellpadding=1>\n  <tr><td> <img src=\"modelica://Modelica/Resources/Images/Electrical/Machines/corelossesVw.png\"\n                alt=\"corelossesVw.png\"> </td>\n  </tr>\n  <tr><td> <strong> Fig. 1: </strong>Voltage versus angular velocity</td>\n  </tr>\n</table>\n\n<table border=0 cellspacing=0 cellpadding=1>\n  <tr><td> <img src=\"modelica://Modelica/Resources/Images/Electrical/Machines/corelossesPcw.png\"\n                alt=\"corelossesPcw.png\"> </td>\n  </tr>\n  <tr><td> <strong> Fig. 2: </strong>Core losses versus angular velocity with parameter <code>ratioHysteresis</code></td>\n  </tr>\n</table>\n\n<h4>Note</h4>\n<p>In the current implementation it is assumed that <code>ratioHysteresis = 0</code>. This parameter cannot be changed due to compatibility reasons.</p>\n\n<h4>See also</h4>\n<p>\n<a href=\"modelica://Modelica.Electrical.Machines.Losses.CoreParameters\">Core loss parameters</a>\n</p>\n\n</html>"));
end Core;