diff --git a/Modelica/Magnetic/FluxTubes/BaseClasses/FixedShape.mo b/Modelica/Magnetic/FluxTubes/BaseClasses/FixedShape.mo index 3ae8378627..7e65b47cd8 100644 --- a/Modelica/Magnetic/FluxTubes/BaseClasses/FixedShape.mo +++ b/Modelica/Magnetic/FluxTubes/BaseClasses/FixedShape.mo @@ -1,42 +1,60 @@ within Modelica.Magnetic.FluxTubes.BaseClasses; partial model FixedShape "Base class for flux tubes with fixed shape during simulation; linear or non-linear material characteristics" + import Modelica.Magnetic.FluxTubes.Types.MagType; + import Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions.app_J; + import Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions.app_mu_r; - extends Interfaces.TwoPort; - + // Material + // The parameter nonLinearPermeability is kept for backwards compatibility reasons, + // and will be replaced by a member "Linear" in the enumeration MagType in the next major release parameter Boolean nonLinearPermeability=true "= true, if non-linear rel. permeability is used, otherwise constant rel. permeability" - annotation (Dialog(group="Material"), Evaluate=true); - parameter SI.RelativePermeability mu_rConst=1 - "Constant relative permeability; used if nonLinearPermeability = false" - annotation (Dialog(group="Material", enable=not nonLinearPermeability)); - - parameter FluxTubes.Material.SoftMagnetic.BaseData material= - Material.SoftMagnetic.BaseData() - "Ferromagnetic material characteristics; used if nonLinearPermeability = true" - annotation (choicesAllMatching=true, Dialog(group="Material", enable= - nonLinearPermeability)); - - SI.Reluctance R_m "Magnetic reluctance"; - SI.Permeance G_m "Magnetic permeance"; - SI.MagneticFluxDensity B "Magnetic flux density"; - SI.CrossSection A "Cross-sectional area penetrated by magnetic flux"; - SI.MagneticFieldStrength H "Magnetic field strength"; - - SI.RelativePermeability mu_r "Relative magnetic permeability"; - + annotation (Dialog(tab="Material"), Evaluate=true); + parameter Modelica.Units.SI.RelativePermeability mu_rConst=1 + "Constant relative permeability; used if nonLinearPermeability=false" + annotation (Dialog(tab="Material", enable=not nonLinearPermeability)); + parameter MagType magType=MagType.Roschke + "Choose the approximation of the magnetization characteristic" + annotation (Evaluate=true, Dialog(tab="Material", enable=nonLinearPermeability)); + parameter Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.BaseData material= + Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.BaseData() + "Ferromagnetic material characteristics, approximation according to Roschke" + annotation (choicesAllMatching=true, Dialog(tab="Material", enable= + nonLinearPermeability and magType ==MagType.Roschke)); + parameter Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.BaseData + materialSSEE=Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.BaseData() + "Ferromagnetic material characteristics, approximation SSEE" + annotation (choicesAllMatching=true, Dialog(tab="Material", enable= + nonLinearPermeability and magType ==MagType.SSEE)); + + extends FluxTubes.Interfaces.TwoPort; + Modelica.Units.SI.CrossSection A "Cross-sectional area"; + Modelica.Units.SI.Reluctance R_m "Magnetic reluctance"; + Modelica.Units.SI.Permeance G_m "Magnetic permeance"; + Modelica.Units.SI.MagneticFluxDensity B(start=0) "Magnetic flux density"; + Modelica.Units.SI.MagneticPolarization J "Magnetic polarization"; + Modelica.Units.SI.MagneticFieldStrength H(start=0) "Magnetic field strength"; + Modelica.Units.SI.RelativePermeability mu_r(start=mu_rConst) + "Relative magnetic permeability"; protected - Real B_N "Absolute value of normalized B"; - + Real B_N=abs(B/material.B_myMax) "Absolute value of normalized B"; equation - B_N = abs(B/material.B_myMax); - mu_r = if nonLinearPermeability then - 1 + (material.mu_i - 1 + material.c_a*B_N)/(1 + material.c_b*B_N + B_N^material.n) else mu_rConst; - R_m = 1/G_m; V_m = Phi*R_m; - B = Phi/A; - H = B/(mu_0*mu_r); - + if nonLinearPermeability then + if magType==MagType.Roschke then + mu_r = 1 + (material.mu_i - 1 + material.c_a*B_N)/(1 + material.c_b*B_N + B_N^material.n); + J = mu_0*(mu_r - 1)*H; + else //if magType == MagType.SSEE then + mu_r = app_mu_r(H, materialSSEE); + J = app_J(H, materialSSEE); + end if; + else // not nonLinearPermeability i.e. magType == MagType.Linear + mu_r = mu_rConst; + J = mu_0*(mu_r - 1)*H; + end if; + B = mu_0*H + J; + Phi = B*A; annotation (Documentation(info="

Please refer to the description of the sub-package Shapes.FixedShape for utilisation of this partial model. diff --git a/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/CompareCharacteristics.mo b/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/CompareCharacteristics.mo new file mode 100644 index 0000000000..53776258ff --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/CompareCharacteristics.mo @@ -0,0 +1,49 @@ +within Modelica.Magnetic.FluxTubes.Examples.BasicExamples; +model CompareCharacteristics "Investigate magnetic characteristic" + extends Modelica.Icons.Example; + import Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions.makeTable; + import Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions.app_J; + import Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions.app_mu_r; + import Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions.app_mu_rd; + parameter Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.M350_50A + material annotation (Placement(transformation(extent={{-10,10},{10,30}}))); + constant Modelica.Units.SI.Time Tend=1; + parameter Modelica.Units.SI.MagneticFieldStrength Hmin=0 "Start of H"; + parameter Modelica.Units.SI.MagneticFieldStrength Hmax=50000 "End of H"; + Modelica.Units.SI.MagneticFieldStrength H=Hmin + (Hmax - Hmin)*time/Tend + "Driving field strength"; + parameter Modelica.Units.SI.Area wA=1 "Number of turns x area"; + Modelica.Units.SI.MagneticPolarization Jraw=combiTable1Ds.y[1] "Raw data"; + Modelica.Units.SI.MagneticPolarization J=app_J(H, material) "Approx. polarization"; + Modelica.Units.SI.MagneticFluxDensity B=mu_0*H + J "Approx. flux density"; + Modelica.Units.SI.RelativePermeability mu_r=app_mu_r(H, material) "Approx. relative permeability"; + Modelica.Units.SI.RelativePermeability mu_rd=app_mu_rd(H, material) "Approx. relative differential permeability"; + Modelica.Units.SI.MagneticFlux psi=wA*B "Flux linkage"; + // differentiable due to definition of derJ=mu_0*(mu_rd - 1)*derH + Modelica.Units.SI.Voltage v=-der(psi) "Induced voltage"; + Modelica.Units.SI.Voltage v_Alt1=-wA*mu_0*mu_rd*der(H) "Induced voltage (alternative calculation 1)"; + Modelica.Units.SI.Voltage v_Alt2=-wA*(mu_0*der(H) + der(J)) "Induced voltage (alternative calculation 2)"; + Modelica.Units.SI.Voltage v_Alt3=-wA*mu_0*(mu_r*der(H) + der(mu_r)*H) "Induced voltage (alternative calculation 3)"; + Modelica.Blocks.Sources.RealExpression realExpression(y=H) + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + Modelica.Blocks.Tables.CombiTable1Ds combiTable1Ds( + table=makeTable(material), + smoothness=Modelica.Blocks.Types.Smoothness.MonotoneContinuousDerivative2, + extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint) + annotation (Placement(transformation(extent={{-10,-30},{10,-10}}))); +equation + connect(combiTable1Ds.u, realExpression.y) + annotation (Line(points={{-12,-20},{-19,-20}}, + color={0,0,127})); + annotation (experiment( + StopTime = 1, + Interval=0.0001, + Tolerance=1e-06), Documentation(info=" +

+Magnetic field strength H is varied within 1 second from Hmin to Hmax. +Magnetic polarization J, magnetic flux density B, relative permeability mu_r, differential relative permeability mu_rd, +magnetic flux linkage psi and induced voltage v are calculated and plotted versus H to investigate the characteristic of the chosen material. +Additionally, all approximation functions are tested. +

+")); +end CompareCharacteristics; diff --git a/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/CompareModels.mo b/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/CompareModels.mo new file mode 100644 index 0000000000..5eefda1eec --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/CompareModels.mo @@ -0,0 +1,118 @@ +within Modelica.Magnetic.FluxTubes.Examples.BasicExamples; +model CompareModels + "Compare non-hysteretic model and Tellinen/Everett" + extends Modelica.Icons.Example; + parameter Modelica.Units.SI.Current I=1 "Excitation peak current"; + Modelica.Units.SI.MagneticFieldStrength H1=coreNon_Hys.H + "Field strength in non-hysteretic core"; + Modelica.Units.SI.MagneticFluxDensity B1=coreNon_Hys.B + "Flux density in non-hysteretic core"; + Modelica.Units.SI.MagneticPolarization J1=B1 - mu_0*H1 + "Magnetic polarization in non-hysteretic core"; + Modelica.Units.SI.MagneticFieldStrength H2=coreEverett.H + "Field strength in hysteretic core = H1"; + Modelica.Units.SI.MagneticFluxDensity B2=coreEverett.B + "Flux density in hysteretic core"; + Modelica.Units.SI.MagneticPolarization J2=B2 - mu_0*H2 + "Magnetic polarization in hysteretic core"; + Modelica.Electrical.Analog.Sources.SignalCurrent signalCurrent1 annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={0,50}))); + Modelica.Electrical.Analog.Sources.SignalCurrent signalCurrent2 annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={0,-50}))); + Modelica.Electrical.Analog.Basic.Ground groundE1 + annotation (Placement(transformation(extent={{-10,10},{10,30}}))); + Modelica.Electrical.Analog.Basic.Ground groundE2 + annotation (Placement(transformation(extent={{-10,-90},{10,-70}}))); + FluxTubes.Basic.ElectroMagneticConverter excitingCoil1(N=700) annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={20,50}))); + FluxTubes.Basic.ElectroMagneticConverter excitingCoil2(N=700) annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={20,-50}))); + FluxTubes.Shapes.FixedShape.GenericFluxTube coreNon_Hys( + magType=Modelica.Magnetic.FluxTubes.Types.MagType.SSEE, + mu_rConst=1000, + material= + Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.ElectricSheet.M330_50A(), + materialSSEE= + Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.M330_50A(), + area=0.000112, + l=0.94) annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=270, + origin={40,50}))); + FluxTubes.Shapes.HysteresisAndMagnets.GenericHystTellinenEverett coreEverett( + mat=FluxTubes.Material.HysteresisEverettParameter.M330_50A(), + l=0.94, + A=0.000112, + includeEddyCurrents=false, + H(fixed=false), + MagRel(fixed=true)) annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=270, + origin={40,-50}))); + FluxTubes.Basic.Ground groundM1 + annotation (Placement(transformation(extent={{30,10},{50,30}}))); + FluxTubes.Basic.Ground groundM2 + annotation (Placement(transformation(extent={{30,-90},{50,-70}}))); + Modelica.Blocks.Sources.Sine sine(amplitude=I, f=50) annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={-50,0}))); +equation + connect(signalCurrent1.p, groundE1.p) + annotation (Line(points={{0,40},{0,30}}, color={0,0,255})); + connect(signalCurrent2.p, groundE2.p) + annotation (Line(points={{0,-60},{0,-70}}, color={0,0,255})); + connect(signalCurrent1.n, excitingCoil1.p) + annotation (Line(points={{0,60},{10,60}}, color={0,0,255})); + connect(signalCurrent1.p, excitingCoil1.n) + annotation (Line(points={{0,40},{10,40}}, color={0,0,255})); + connect(signalCurrent2.n, excitingCoil2.p) + annotation (Line(points={{0,-40},{10,-40}}, color={0,0,255})); + connect(signalCurrent2.p, excitingCoil2.n) + annotation (Line(points={{0,-60},{10,-60}}, color={0,0,255})); + connect(coreNon_Hys.port_n, groundM1.port) + annotation (Line(points={{40,40},{40,30}}, color={255,127,0})); + connect(excitingCoil1.port_n, coreNon_Hys.port_n) + annotation (Line(points={{30,40},{40,40}}, color={255,127,0})); + connect(excitingCoil1.port_p, coreNon_Hys.port_p) + annotation (Line(points={{30,60},{40,60}}, color={255,127,0})); + connect(coreEverett.port_n, groundM2.port) + annotation (Line(points={{40,-60},{40,-70}}, color={255,127,0})); + connect(excitingCoil2.port_n, coreEverett.port_n) + annotation (Line(points={{30,-60},{40,-60}}, color={255,127,0})); + connect(excitingCoil2.port_p, coreEverett.port_p) + annotation (Line(points={{30,-40},{40,-40}}, color={255,127,0})); + connect(sine.y, signalCurrent1.i) annotation (Line(points={{-39,0},{-20,0},{-20, + 50},{-12,50}}, color={0,0,127})); + connect(sine.y, signalCurrent2.i) annotation (Line(points={{-39,0},{-20,0},{-20, + -50},{-12,-50}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + experiment( + StopTime=0.1, + Interval=1e-05, + Tolerance=1e-06), + Documentation(info=" +

+This model compares the magnetization characteristic of a non-hysteretic model with a Tellinen/Everett model including hysteresis, both for M330-50A. +

+

+Plot B1 (flux density of the non-hysteretic model) and B2 (flux density of the hysteretic model) +versus H1 (field strength, which is the same as H2 due to the same geometry of the core and the same excitation). +Try different excitation peak currents I. +

+")); +end CompareModels; diff --git a/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/EIcore.mo b/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/EIcore.mo new file mode 100644 index 0000000000..ac78d74346 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/EIcore.mo @@ -0,0 +1,187 @@ +within Modelica.Magnetic.FluxTubes.Examples.BasicExamples; +model EIcore "An iron core with shape E and I" + extends Modelica.Icons.Example; + parameter Modelica.Units.SI.Length delta=0.5e-3 "Air gap"; + parameter Modelica.Units.SI.Current I=5 "Excitation current"; + parameter FluxTubes.Material.SoftMagnetic.MaterialSettings materialSettings( + magType=Modelica.Magnetic.FluxTubes.Types.MagType.SSEE, + material=Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.ElectricSheet.M350_50A(), + materialSSEE=Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.M350_50A()) + annotation (Placement(transformation(extent={{20,50},{40,70}}))); + Modelica.Magnetic.FluxTubes.Shapes.FixedShape.Cuboid yokeUL( + nonLinearPermeability=materialSettings.nonLinearPermeability, + mu_rConst=materialSettings.mu_rConst, + magType=materialSettings.magType, + material=materialSettings.material, + materialSSEE=materialSettings.materialSSEE, + l(displayUnit="mm") = 0.075, + a(displayUnit="mm") = 0.04, + b(displayUnit="mm") = 0.02) "Upper left yoke" + annotation (Placement(transformation(extent={{-40,90},{-60,70}}))); + Modelica.Magnetic.FluxTubes.Shapes.FixedShape.Cuboid yokeUR( + nonLinearPermeability=materialSettings.nonLinearPermeability, + mu_rConst=materialSettings.mu_rConst, + magType=materialSettings.magType, + material=materialSettings.material, + materialSSEE=materialSettings.materialSSEE, + l(displayUnit="mm") = 0.075, + a(displayUnit="mm") = 0.04, + b(displayUnit="mm") = 0.02) "Upper right yoke" + annotation (Placement(transformation(extent={{40,70},{60,90}}))); + Modelica.Magnetic.FluxTubes.Shapes.FixedShape.Cuboid yokeLL( + nonLinearPermeability=materialSettings.nonLinearPermeability, + mu_rConst=materialSettings.mu_rConst, + magType=materialSettings.magType, + material=materialSettings.material, + materialSSEE=materialSettings.materialSSEE, + l(displayUnit="mm") = 0.075, + a(displayUnit="mm") = 0.04, + b(displayUnit="mm") = 0.02) "Lower left yoke" + annotation (Placement(transformation(extent={{-60,-90},{-40,-70}}))); + Modelica.Magnetic.FluxTubes.Shapes.FixedShape.Cuboid yokeLR( + nonLinearPermeability=materialSettings.nonLinearPermeability, + mu_rConst=materialSettings.mu_rConst, + magType=materialSettings.magType, + material=materialSettings.material, + materialSSEE=materialSettings.materialSSEE, + l(displayUnit="mm") = 0.075, + a(displayUnit="mm") = 0.04, + b(displayUnit="mm") = 0.02) "Lower right yoke" + annotation (Placement(transformation(extent={{60,-90},{40,-70}}))); + Modelica.Magnetic.FluxTubes.Shapes.FixedShape.Cuboid legL( + nonLinearPermeability=materialSettings.nonLinearPermeability, + mu_rConst=materialSettings.mu_rConst, + magType=materialSettings.magType, + material=materialSettings.material, + materialSSEE=materialSettings.materialSSEE, + l(displayUnit="mm") = 0.1, + a(displayUnit="mm") = 0.04, + b(displayUnit="mm") = 0.02) "Left leg" annotation (Placement(transformation( + extent={{10,10},{-10,-10}}, + rotation=90, + origin={-80,0}))); + Modelica.Magnetic.FluxTubes.Shapes.FixedShape.Cuboid legR( + nonLinearPermeability=materialSettings.nonLinearPermeability, + mu_rConst=materialSettings.mu_rConst, + magType=materialSettings.magType, + material=materialSettings.material, + materialSSEE=materialSettings.materialSSEE, + l(displayUnit="mm") = 0.1, + a(displayUnit="mm") = 0.04, + b(displayUnit="mm") = 0.02) "Right leg" annotation (Placement( + transformation( + extent={{10,10},{-10,-10}}, + rotation=90, + origin={80,0}))); + Modelica.Magnetic.FluxTubes.Shapes.FixedShape.Cuboid legM( + nonLinearPermeability=materialSettings.nonLinearPermeability, + mu_rConst=materialSettings.mu_rConst, + magType=materialSettings.magType, + material=materialSettings.material, + materialSSEE=materialSettings.materialSSEE, + l(displayUnit="mm") = 0.1 - delta, + a(displayUnit="mm") = 0.04, + b(displayUnit="mm") = 0.04) "Middle leg" annotation (Placement( + transformation(extent={{10,10},{-10,-10}}, rotation=270, + origin={0,60}))); + Modelica.Magnetic.FluxTubes.Shapes.FixedShape.Cuboid airgap( + nonLinearPermeability=false, + mu_rConst=1, + l(displayUnit="mm") = delta, + a(displayUnit="mm") = 0.04, + b(displayUnit="mm") = 0.04) "Air gap" annotation (Placement(transformation( + extent={{10,10},{-10,-10}}, + rotation=270))); + Modelica.Magnetic.FluxTubes.Basic.Ground groundMag + annotation (Placement(transformation(extent={{-10,-100},{10,-80}}))); + Modelica.Magnetic.FluxTubes.Basic.ElectroMagneticConverter excitingCoil(N=100) + annotation (Placement(transformation(extent={{-20,20},{0,40}}))); + Modelica.Electrical.Analog.Sources.SineCurrent sineCurrent(I=I, f=10) + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-60,30}))); + Modelica.Electrical.Analog.Basic.Ground groundE + annotation (Placement(transformation(extent={{-50,0},{-30,20}}))); + Modelica.Magnetic.FluxTubes.Sensors.MagneticFluxSensor magFluxSensor annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={0,-60}))); + Modelica.Blocks.Math.Gain fluxDensity(k=1/(airgap.a*airgap.b)) + annotation (Placement(transformation(extent={{20,-70},{40,-50}}))); + Modelica.Magnetic.FluxTubes.Basic.ElectroMagneticConverter measurementCoil(N=100) + annotation (Placement(transformation(extent={{20,-40},{0,-20}}))); + Modelica.Electrical.Analog.Basic.Ground groundM + annotation (Placement(transformation(extent={{30,-60},{50,-40}}))); + Modelica.Electrical.Analog.Sensors.VoltageSensor voltageSensor annotation ( + Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=90, + origin={60,-30}))); +equation + connect(yokeUL.port_n, legL.port_p) + annotation (Line(points={{-60,80},{-80,80},{-80,10}}, color={255,127,0})); + connect(legL.port_n, yokeLL.port_p) annotation (Line(points={{-80,-10},{-80,-80}, + {-60,-80}}, color={255,127,0})); + connect(yokeLL.port_n, groundMag.port) + annotation (Line(points={{-40,-80},{0,-80}}, color={255,127,0})); + connect(groundMag.port, yokeLR.port_n) + annotation (Line(points={{0,-80},{40,-80}}, color={255,127,0})); + connect(yokeLR.port_p, legR.port_n) + annotation (Line(points={{60,-80},{80,-80},{80,-10}}, color={255,127,0})); + connect(legR.port_p, yokeUR.port_n) + annotation (Line(points={{80,10},{80,80},{60,80}}, color={255,127,0})); + connect(yokeUR.port_p, yokeUL.port_p) + annotation (Line(points={{40,80},{-40,80}}, color={255,127,0})); + connect(sineCurrent.n, excitingCoil.p) + annotation (Line(points={{-60,40},{-20,40}}, color={0,0,255})); + connect(sineCurrent.p,groundE. p) + annotation (Line(points={{-60,20},{-40,20}}, color={0,0,255})); + connect(groundE.p, excitingCoil.n) + annotation (Line(points={{-40,20},{-20,20}}, color={0,0,255})); + connect(magFluxSensor.Phi, fluxDensity.u) + annotation (Line(points={{10,-60},{18,-60}}, color={0,0,127})); + connect(magFluxSensor.port_p, groundMag.port) + annotation (Line(points={{0,-70},{0,-80}}, color={255,127,0})); + connect(yokeUL.port_p, legM.port_n) + annotation (Line(points={{-40,80},{0,80},{0,70}}, color={255,127,0})); + connect(legM.port_p, excitingCoil.port_p) + annotation (Line(points={{0,50},{0,40}}, color={255,127,0})); + connect(excitingCoil.port_n, airgap.port_n) + annotation (Line(points={{0,20},{0,10}}, color={255,127,0})); + connect(airgap.port_p, measurementCoil.port_p) + annotation (Line(points={{0,-10},{0,-20}}, color={255,127,0})); + connect(measurementCoil.port_n, magFluxSensor.port_n) + annotation (Line(points={{0,-40},{0,-50}}, color={255,127,0})); + connect(measurementCoil.p, voltageSensor.p) + annotation (Line(points={{20,-20},{60,-20}}, color={0,0,255})); + connect(measurementCoil.n, groundM.p) + annotation (Line(points={{20,-40},{40,-40}}, color={0,0,255})); + connect(groundM.p, voltageSensor.n) + annotation (Line(points={{40,-40},{60,-40}}, color={0,0,255})); + annotation (experiment( + StopTime=1, + Interval=1e-04, + Tolerance=1e-06), Documentation(info=" +

+This is a core shaped as an E and an I with an air gap. +

+ + + + + +
Fig. 1: EI core
+ +
+

+You might vary different parameters: +

+ +")); +end EIcore; diff --git a/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/ShowMaterial.mo b/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/ShowMaterial.mo new file mode 100644 index 0000000000..27181ebbb3 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/ShowMaterial.mo @@ -0,0 +1,129 @@ +within Modelica.Magnetic.FluxTubes.Examples.BasicExamples; +model ShowMaterial "Show material characteristic" + extends Modelica.Icons.Example; + import Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions.makeTable; + parameter Modelica.Units.SI.Current I=1 "Peak exciting current"; + Modelica.Units.SI.MagneticFieldStrength H=coreNon_Hys.H + "Magnetic field strength"; + Modelica.Units.SI.MagneticPolarization J=coreNon_Hys.B - mu_0*H + "Magnetic polarization"; + Modelica.Units.SI.RelativePermeability mu_r=coreNon_Hys.mu_r + "Relative permeability"; + Modelica.Units.SI.MagneticPolarization J_rD=combiTable1Ds.y[1] + "Magnetic polarization from raw data"; + Modelica.Electrical.Analog.Sources.SineCurrent source(I=I, f=50) annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-80,0}))); + Modelica.Electrical.Analog.Basic.Ground groundE1 + annotation (Placement(transformation(extent={{-90,-40},{-70,-20}}))); + Modelica.Magnetic.FluxTubes.Basic.ElectroMagneticConverter excitingCoil(N=700) annotation ( + Placement(transformation(extent={{-60,-10},{-40,10}}, rotation=0))); + Modelica.Magnetic.FluxTubes.Shapes.FixedShape.GenericFluxTube coreNon_Hys( + magType=Modelica.Magnetic.FluxTubes.Types.MagType.SSEE, + material= + Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.ElectricSheet.M330_50A(), + materialSSEE= + Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.M330_50A(), + area=0.000112, + l=0.94, + mu_rConst=1000) annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={-20,10}))); + Modelica.Magnetic.FluxTubes.Basic.Ground groundM + annotation (Placement(transformation(extent={{-30,-40},{-10,-20}}))); + Modelica.Magnetic.FluxTubes.Basic.ElectroMagneticConverter measurementCoil(N=700) annotation ( + Placement(transformation( + extent={{-10,10},{10,-10}}, + rotation=180, + origin={10,0}))); + Modelica.Electrical.Analog.Sensors.VoltageSensor voltageSensor annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={40,0}))); + Modelica.Blocks.Continuous.Integrator integrator(k=1/measurementCoil.N) + annotation (Placement(transformation(extent={{70,-10},{90,10}}))); + Modelica.Electrical.Analog.Basic.Ground groundE2 + annotation (Placement(transformation(extent={{10,-40},{30,-20}}))); + Modelica.Blocks.Math.Harmonic harmonic1(f=source.f, k=1) + annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); + Modelica.Blocks.Math.Harmonic harmonic3(f=source.f, k=3) + annotation (Placement(transformation(extent={{70,-70},{90,-50}}))); + Modelica.Magnetic.FluxTubes.Sensors.MagneticPotentialDifferenceSensor magVoltageSensor + annotation (Placement(transformation(extent={{-30,40},{-10,20}}))); + Modelica.Blocks.Math.Gain gain(k=1/coreNon_Hys.l) + annotation (Placement(transformation(extent={{-10,40},{10,60}}))); + parameter Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.M330_50A + material annotation (Placement(transformation(extent={{20,70},{40,90}}))); + Modelica.Blocks.Tables.CombiTable1Ds combiTable1Ds( + table=makeTable(material), + smoothness=Modelica.Blocks.Types.Smoothness.MonotoneContinuousDerivative2, + extrapolation=Modelica.Blocks.Types.Extrapolation.HoldLastPoint) + annotation (Placement(transformation(extent={{20,40},{40,60}}))); +equation + connect(source.p, groundE1.p) + annotation (Line(points={{-80,-10},{-80,-20}}, color={0,0,255})); + connect(source.n, excitingCoil.p) + annotation (Line(points={{-80,10},{-60,10}}, color={0,0,255})); + connect(source.p, excitingCoil.n) + annotation (Line(points={{-80,-10},{-60,-10}}, color={0,0,255})); + connect(excitingCoil.port_p, coreNon_Hys.port_p) + annotation (Line(points={{-40,10},{-30,10}}, + color={255,127,0})); + connect(coreNon_Hys.port_n, measurementCoil.port_p) + annotation (Line(points={{-10,10},{0,10}}, color={255,127,0})); + connect(measurementCoil.port_n, groundM.port) + annotation (Line(points={{0,-10},{-20,-10},{-20,-20}}, color={255,127,0})); + connect(excitingCoil.port_n, groundM.port) annotation (Line(points={{-40,-10}, + {-20,-10},{-20,-20}}, color={255,127,0})); + connect(voltageSensor.v, integrator.u) + annotation (Line(points={{51,0},{68,0}}, color={0,0,127})); + connect(measurementCoil.n, groundE2.p) + annotation (Line(points={{20,-10},{20,-20}}, color={0,0,255})); + connect(measurementCoil.n, voltageSensor.p) + annotation (Line(points={{20,-10},{40,-10}}, color={0,0,255})); + connect(measurementCoil.p, voltageSensor.n) + annotation (Line(points={{20,10},{40,10}}, color={0,0,255})); + connect(voltageSensor.v, harmonic1.u) annotation (Line(points={{51,0},{60,0}, + {60,-30},{68,-30}}, color={0,0,127})); + connect(voltageSensor.v, harmonic3.u) annotation (Line(points={{51,0},{60,0}, + {60,-60},{68,-60}}, color={0,0,127})); + connect(magVoltageSensor.port_p, coreNon_Hys.port_p) + annotation (Line(points={{-30,30},{-30,10}}, color={255,127,0})); + connect(magVoltageSensor.port_n, coreNon_Hys.port_n) + annotation (Line(points={{-10,30},{-10,10}}, color={255,127,0})); + connect(magVoltageSensor.V_m, gain.u) + annotation (Line(points={{-20,40},{-20,50},{-12,50}}, color={0,0,127})); + connect(gain.y, combiTable1Ds.u) + annotation (Line(points={{11,50},{18,50}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + experiment( + StopTime=0.1, + Interval=1e-05, + Tolerance=1e-06), + Documentation(info=" +

+This example demonstrates how to show the characteristics J(H) and mu_r(H) of a material +by applying a sinusoidal excitation current to the exciting coil. +However, hysteresis is not taken into account. +

+

+Number of turns and dimensions of the core are approximately those of an Epstein frame. +

+

+Note that smoothness (the interpolation method) is set to LinearSegments. This shows the nodes and avoids undesired curvature between them. +It is possible to compare the approximation with interpolated data from a manufacturer's datasheet (raw data) J_rD, choosing the same material (e.g. M330_50A).
+

+

+Note the non-sinusoidal trajectory of voltage excitingCoil.v due to saturation and a sinusoidal excitation current. +

+

+Note that the output of the integrated voltage (divided by the number of turns of the measurement coil) shows the magnetic flux in the core. +To achieve satisfying accuracy, a rather small tolerance has to be used. +

+")); +end ShowMaterial; diff --git a/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/package.order b/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/package.order index 1e32b8338f..1c10e39a3f 100644 --- a/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/package.order +++ b/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/package.order @@ -2,3 +2,7 @@ QuadraticCoreAirgap ToroidalCoreAirgap ToroidalCoreQuadraticCrossSection SaturatedInductor +ShowMaterial +CompareModels +EIcore +CompareCharacteristics diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/MaterialSettings.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/MaterialSettings.mo new file mode 100644 index 0000000000..6ae1794f4b --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/MaterialSettings.mo @@ -0,0 +1,33 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic; +record MaterialSettings + "Gathers all settings for a soft magnetic material" + extends Modelica.Icons.Record; + import Modelica.Magnetic.FluxTubes.Types.MagType; + // The parameter nonLinearPermeability is kept for backwards compatibility reasons, + // and will be replaced by a member "Linear" in the enumeration MagType in the next major release + parameter Boolean nonLinearPermeability=true + "= true, if non-linear rel. permeability is used, otherwise constant rel. permeability" + annotation (Evaluate=true); + parameter Modelica.Units.SI.RelativePermeability mu_rConst=1 + "Constant relative permeability; used if nonLinearPermeability=false" + annotation (Dialog(enable=not nonLinearPermeability)); + parameter MagType magType=MagType.Roschke + "Choose the approximation of the magnetization characteristic" + annotation (Evaluate=true, Dialog(enable=nonLinearPermeability)); + parameter Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.BaseData material= + Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.BaseData() + "Ferromagnetic material characteristics, approximation according to Roschke" + annotation (choicesAllMatching=true, Dialog(enable=nonLinearPermeability + and magType==MagType.Roschke)); + parameter Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.BaseData + materialSSEE=Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.BaseData() + "Ferromagnetic material characteristics, approximation SSEE" + annotation (choicesAllMatching=true, Dialog(enable=nonLinearPermeability and + magType==MagType.SSEE)); + annotation(defaultComponentPrefixes="parameter", Documentation(info=" +

+This parameter record gathers all settings for a soft magnetic material. +It can be used once in an example to propagate the same material settings to several components. +

+")); +end MaterialSettings; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/BaseData.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/BaseData.mo new file mode 100644 index 0000000000..eddb27b2df --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/BaseData.mo @@ -0,0 +1,83 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record BaseData "CastIron" + extends Modelica.Icons.Record; + parameter String Type="CastIron"; + parameter FluxTubes.Types.SpecificPower vRef=25. + "Specific losses at BRef and fRef"; + parameter SI.MagneticFluxDensity BRef=1.5 "Ref. flux density for spec. losses"; + parameter SI.Frequency fRef=50 "Ref. frequency for spec. losses"; + parameter SI.Resistivity rhoEl=7.50E-7 "Electric resistivity"; + parameter SI.ThermalConductivity lambda=50 "Thermal conductivity"; + parameter SI.Density dens = 7500 "Density of material"; + parameter SI.RelativePermeability mu_ri= 155.80 "Initial relative permeability"; + // Exponential Extrapolation + parameter Integer k0 = 12 "Start of EE" + annotation(Dialog(group="Exponential Extrapolation")); + parameter SI.MagneticFieldStrength Hpar = 9901.06 "Parameter of EE" + annotation(Dialog(group="Exponential Extrapolation")); + parameter SI.MagneticFieldStrength Hsat = 132113.5 "Saturation field strength" + annotation(Dialog(group="Exponential Extrapolation")); + parameter SI.MagneticPolarization Jsat = 1.27765 "Saturation polarization" + annotation(Dialog(group="Exponential Extrapolation")); + // Homotopy + parameter SI.MagneticFieldStrength hH1 = 5000.00 "Start of homotopy" + annotation(Dialog(group="Homotopy")); + parameter SI.MagneticFieldStrength hH2 = 15000.00 "End of homotopy" + annotation(Dialog(group="Homotopy")); + // Length of Raw Data + parameter Integer N = 22 "Count of nodes" + annotation(Dialog(tab="Smoothing Splines")); + parameter Real smooth = 0.005 "Smoothing parameter" + annotation(Dialog(tab="Smoothing Splines")); + // Smoothing Spline coefficients + parameter Real c3[:](each unit="V.s.m/A2")={ + 1.05287e-10, 3.46651e-10,-1.34759e-10,-4.61913e-10,-1.76527e-10, + -6.93774e-11, 7.12008e-12, 2.24874e-11, 3.31106e-11, 5.09619e-11, + 2.08923e-11, 2.78107e-12, 6.36022e-13, 8.74410e-14, 7.61594e-14, + 5.22203e-14, 4.77447e-14, 3.63249e-14, 4.27105e-14,-1.86138e-15, + 8.60434e-14} + annotation(Dialog(tab="Smoothing Splines")); + parameter Real c2[:](each unit="V.s/A2")={ + 0.00000e+00, 6.31721e-08, 2.71163e-07, 1.49880e-07, 1.13056e-08, + -9.46106e-08,-1.46644e-07,-1.43440e-07,-1.33320e-07,-1.13454e-07, + -7.52325e-08,-1.25556e-08,-4.21242e-09,-2.30435e-09,-2.04203e-09, + -1.81355e-09,-1.57856e-09,-1.36371e-09,-1.14576e-09,-8.89495e-10, + -9.03455e-10} + annotation(Dialog(tab="Smoothing Splines")); + parameter Real c1[:](each unit="V.s/(m.A)")={ + 1.94531e-04, 2.07166e-04, 2.74033e-04, 4.00345e-04, 4.16464e-04, + 3.99803e-04, 3.39489e-04, 2.95977e-04, 2.54463e-04, 2.05108e-04, + 1.57936e-04, 7.01484e-05, 5.33803e-05, 4.68636e-05, 4.25172e-05, + 3.86616e-05, 3.35735e-05, 2.91601e-05, 2.41411e-05, 2.00706e-05, + 1.55882e-05} + annotation(Dialog(tab="Smoothing Splines")); + parameter Real c0[:](each unit="V.s/m2")={ + 0.00000e+00, 3.97486e-02, 8.64819e-02, 1.89458e-01, 2.30529e-01, + 3.12862e-01, 4.05816e-01, 4.53464e-01, 4.94709e-01, 5.40533e-01, + 5.85516e-01, 6.89112e-01, 7.49486e-01, 7.99290e-01, 8.43936e-01, + 8.84488e-01, 9.38576e-01, 9.85545e-01, 1.03870e+00, 1.08274e+00, + 1.12733e+00} + annotation(Dialog(tab="Smoothing Splines")); + // Raw Data: Magnetic field strength H and Magnetic polarization J + parameter SI.MagneticFieldStrength HD[:]={ + 0.00, 200.00, 400.00, 700.00, 800.00, 1000.00, 1250.00, + 1400.00, 1550.00, 1750.00, 2000.00, 3000.00, 4000.00, 5000.00, + 6000.00, 7000.00, 8500.00, 10000.00, 12000.00, 14000.00, 16500.00, + 20000.00} + annotation(Dialog(tab="Raw Data")); + parameter SI.MagneticPolarization JD[:]={ + 0.00000, 0.03975, 0.08648, 0.18946, 0.23053, 0.31286, 0.40582, + 0.45346, 0.49471, 0.54053, 0.58552, 0.68911, 0.74949, 0.79929, + 0.84394, 0.88449, 0.93858, 0.98555, 1.03870, 1.08274, 1.12733, + 1.17451} + annotation(Dialog(tab="Raw Data")); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false), + graphics={Text(extent={{-100,-10},{100,-40}}, + textColor={0,0,255}, textString="%Type"), Text( + extent={{-100,10},{100,40}}, + textColor={0,0,255}, + textString="SS + EE")}), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end BaseData; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/CastIron.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/CastIron.mo new file mode 100644 index 0000000000..64901cfdf2 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/CastIron.mo @@ -0,0 +1,62 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record CastIron "CastIron (artificial)" + extends BaseData( + Type ="CastIron", + vRef = 25.00, + BRef = 1.50000, + fRef = 50.00, + rhoEl = 7.50e-7, + lambda= 50.00, + dens = 7500.00, + mu_ri = 155.80, + k0 = 12, + Hpar = 9901.06, + Hsat = 132113.5, + Jsat = 1.27765, + hH1 = 5000.00, + hH2 = 15000.00, + N = 22, + smooth= 0.005, + c3={ + 1.05287e-10, 3.46651e-10,-1.34759e-10,-4.61913e-10,-1.76527e-10, + -6.93774e-11, 7.12008e-12, 2.24874e-11, 3.31106e-11, 5.09619e-11, + 2.08923e-11, 2.78107e-12, 6.36022e-13, 8.74410e-14, 7.61594e-14, + 5.22203e-14, 4.77447e-14, 3.63249e-14, 4.27105e-14,-1.86138e-15, + 8.60434e-14}, + c2={ + 0.00000e+00, 6.31721e-08, 2.71163e-07, 1.49880e-07, 1.13056e-08, + -9.46106e-08,-1.46644e-07,-1.43440e-07,-1.33320e-07,-1.13454e-07, + -7.52325e-08,-1.25556e-08,-4.21242e-09,-2.30435e-09,-2.04203e-09, + -1.81355e-09,-1.57856e-09,-1.36371e-09,-1.14576e-09,-8.89495e-10, + -9.03455e-10}, + c1={ + 1.94531e-04, 2.07166e-04, 2.74033e-04, 4.00345e-04, 4.16464e-04, + 3.99803e-04, 3.39489e-04, 2.95977e-04, 2.54463e-04, 2.05108e-04, + 1.57936e-04, 7.01484e-05, 5.33803e-05, 4.68636e-05, 4.25172e-05, + 3.86616e-05, 3.35735e-05, 2.91601e-05, 2.41411e-05, 2.00706e-05, + 1.55882e-05}, + c0={ + 0.00000e+00, 3.97486e-02, 8.64819e-02, 1.89458e-01, 2.30529e-01, + 3.12862e-01, 4.05816e-01, 4.53464e-01, 4.94709e-01, 5.40533e-01, + 5.85516e-01, 6.89112e-01, 7.49486e-01, 7.99290e-01, 8.43936e-01, + 8.84488e-01, 9.38576e-01, 9.85545e-01, 1.03870e+00, 1.08274e+00, + 1.12733e+00}, + HD={ 0.00, 200.00, 400.00, 700.00, 800.00, 1000.00, 1250.00, + 1400.00, 1550.00, 1750.00, 2000.00, 3000.00, 4000.00, 5000.00, + 6000.00, 7000.00, 8500.00, 10000.00, 12000.00, 14000.00, 16500.00, + 20000.00}, + JD={ + 0.00000, 0.03975, 0.08648, 0.18946, 0.23053, 0.31286, 0.40582, + 0.45346, 0.49471, 0.54053, 0.58552, 0.68911, 0.74949, 0.79929, + 0.84394, 0.88449, 0.93858, 0.98555, 1.03870, 1.08274, 1.12733, + 1.17451}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

+This is an artificially created but nevertheless realistic characteristic of cast iron for teaching purposes. +

+")); +end CastIron; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/app_J_EE.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/app_J_EE.mo new file mode 100644 index 0000000000..695ca50158 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/app_J_EE.mo @@ -0,0 +1,20 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions.Internal; +function app_J_EE "Approximation J(H) Exponential Extrapolation" + extends Modelica.Icons.Function; + input SI.MagneticFieldStrength H "Magnetic field strength"; + input BaseData material "Material data"; + output SI.MagneticPolarization J "Magnetic polarization"; +protected + SI.MagneticFieldStrength HD[:]=material.HD; + SI.MagneticPolarization JD[:]=material.JD; + Integer k0=material.k0; + SI.MagneticFieldStrength Hpar=material.Hpar; + SI.MagneticPolarization Jsat=material.Jsat; +algorithm + J:=sign(H)*(JD[k0] + (Jsat - JD[k0])*(1 - exp(-(abs(H) - HD[k0])/Hpar))); + annotation (Documentation(info=" +

+Returns magnetic polarization J calculated from exponential extrapolation for magnetic field strength H. +

+")); +end app_J_EE; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/app_J_SS.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/app_J_SS.mo new file mode 100644 index 0000000000..706ce63be2 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/app_J_SS.mo @@ -0,0 +1,30 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions.Internal; +function app_J_SS "Approximation J(H) Smoothing Splines" + extends Modelica.Icons.Function; + input SI.MagneticFieldStrength H "Magnetic field strength"; + input BaseData material "Material data"; + output SI.MagneticPolarization J "Magnetic polarization"; +protected + SI.MagneticFieldStrength HD[:]=material.HD; + Integer N=size(HD, 1); + Real c0[:]=material.c0; // <> JD (smoothing splines) + Real c1[:]=material.c1; + Real c2[:]=material.c2; + Real c3[:]=material.c3; + Integer k=findInterval(abs(H), HD); + SI.MagneticFieldStrength dH; +algorithm + if k<=0 then + J:=sign(H)*(c0[1] + c1[1]*(abs(H) - HD[1])); + elseif k>=N then + dH:=HD[N] - HD[N - 1]; + J:=sign(H)*(((3*c3[N - 1]*dH + 2*c2[N - 1])*dH + c1[N - 1])*(abs(H) - HD[N]) + c0[N - 1]); + else + J:=sign(H)*(((c3[k]*(abs(H) - HD[k]) + c2[k])*(abs(H) - HD[k]) + c1[k])*(abs(H) - HD[k]) + c0[k]); + end if; + annotation (Documentation(info=" +

+Returns magnetic polarization J calculated from smoothing splines for magnetic field strength H. +

+")); +end app_J_SS; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/app_chi_d_EE.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/app_chi_d_EE.mo new file mode 100644 index 0000000000..0aa42820f3 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/app_chi_d_EE.mo @@ -0,0 +1,21 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions.Internal; +function app_chi_d_EE + "Approximation chi_d(H) Exponential Extrapolation" + extends Modelica.Icons.Function; + input SI.MagneticFieldStrength H "Magnetic field strength"; + input BaseData material "Material data"; + output SI.MagneticSusceptibility chi_d "Differential magnetic susceptibility"; +protected + SI.MagneticFieldStrength HD[:]=material.HD; + SI.MagneticPolarization JD[:]=material.JD; + Integer k0=material.k0; + SI.MagneticFieldStrength Hpar=material.Hpar; + SI.MagneticPolarization Jsat=material.Jsat; +algorithm + chi_d:=(Jsat - JD[k0])/(mu_0*Hpar)*exp(-(abs(H) - HD[k0])/Hpar); + annotation (Documentation(info=" +

+Returns differential susceptibility chi_d calculated from exponential extrapolation for magnetic field strength H. +

+")); +end app_chi_d_EE; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/app_chi_d_SS.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/app_chi_d_SS.mo new file mode 100644 index 0000000000..6642779e31 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/app_chi_d_SS.mo @@ -0,0 +1,29 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions.Internal; +function app_chi_d_SS "Approximation chi_d(H) Smoothing Splines" + extends Modelica.Icons.Function; + input SI.MagneticFieldStrength H "Magnetic field strength"; + input BaseData material "Material data"; + output SI.MagneticSusceptibility chi_d "Differential magnetic susceptibility"; +protected + SI.MagneticFieldStrength HD[:]=material.HD; + Integer N=size(HD, 1); + Real c1[:]=material.c1; + Real c2[:]=material.c2; + Real c3[:]=material.c3; + Integer k=findInterval(abs(H), HD); + SI.MagneticFieldStrength dH; +algorithm + if k<=0 then + chi_d:=c1[1]/mu_0; + elseif k>=N then + dH:=HD[N] - HD[N - 1]; + chi_d:=(((3*c3[N - 1]*dH + 2*c2[N - 1]))*dH + c1[N - 1])/mu_0; + else + chi_d:=((3*c3[k]*(abs(H) - HD[k]) + 2*c2[k])*(abs(H) - HD[k]) + c1[k])/mu_0; + end if; + annotation (Documentation(info=" +

+Returns differential susceptibility chi_d calculated from smoothing splines for magnetic field strength H. +

+")); +end app_chi_d_SS; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/findInterval.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/findInterval.mo new file mode 100644 index 0000000000..d59b71331d --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/Internal/findInterval.mo @@ -0,0 +1,28 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions.Internal; +function findInterval + extends Modelica.Icons.Function; + input Real x "Scalar"; + input Real xD[:] "Array"; + output Integer k "Index"; +protected + Integer N=size(xD,1); +algorithm + if x=xD[k] and x material.hH2 then + h:=1; + J:=Internal.app_J_EE(H, material); + else + h:=(abs(H) - material.hH1)/(material.hH2 - material.hH1); + J:=(1 - h)*Internal.app_J_SS(H, material) + h*Internal.app_J_EE(H, material); + end if; + annotation (derivative(noDerivative=material)=der_J, + Documentation(info=" +

+Returns magnetic polarization J calculated from smoothing splines and exponential extrapolation for magnetic field strength H. +

+")); +end app_J; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/app_mu_r.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/app_mu_r.mo new file mode 100644 index 0000000000..24b10a4972 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/app_mu_r.mo @@ -0,0 +1,21 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions; +function app_mu_r "Approximation mu_r(H)" + extends Modelica.Icons.Function; + input SI.MagneticFieldStrength H "Magnetic field strength"; + input BaseData material "Material data"; + output SI.RelativePermeability mu_r "Relative magnetic permeability"; +protected + SI.MagneticFieldStrength Heps=1e-6 "Below Heps mu_ri is returned"; +algorithm + if abs(H) material.hH2 then + h:=1; + mu_rd:=1 + Internal.app_chi_d_EE(H, material); + else + h:=(abs(H) - material.hH1)/(material.hH2 - material.hH1); + mu_rd:=1 + (1 - h)*Internal.app_chi_d_SS(H, material) + h*Internal.app_chi_d_EE(H, material); + end if; + annotation (Documentation(info=" +

+Returns differential relative permeability mu_rd calculated from smoothing splines and exponential extrapolation for magnetic field strength H. +

+")); +end app_mu_rd; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/der_J.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/der_J.mo new file mode 100644 index 0000000000..15b6cc3033 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/der_J.mo @@ -0,0 +1,15 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions; +function der_J "Derivative of J(H)" + extends Modelica.Icons.Function; + input SI.MagneticFieldStrength H "Magnetic field strength"; + input BaseData material "Material data"; + input Modelica.Magnetic.FluxTubes.Types.MagneticFieldStrengthSlope derH + "Slope of magnetic field strength"; + output Modelica.Magnetic.FluxTubes.Types.MagneticFluxDensitySlope derJ= + mu_0*(app_mu_rd(H, material) - 1)*derH "Slope of magnetic polarization"; + annotation (Documentation(info=" +

+Returns slope of magnetic polarization J calculated from susceptibility. +

+")); +end der_J; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/der_mu_r.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/der_mu_r.mo new file mode 100644 index 0000000000..4200f87649 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/der_mu_r.mo @@ -0,0 +1,23 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE.Functions; +function der_mu_r "Approximation der_mu_r(H)" + extends Modelica.Icons.Function; + input SI.MagneticFieldStrength H "Magnetic field strength"; + input BaseData material + "Material data"; + input Modelica.Magnetic.FluxTubes.Types.MagneticFieldStrengthSlope derH + "Slope of magnetic field strength"; + output Real dermu_r "Slope of relative magnetic permeability"; +protected + SI.MagneticFieldStrength Heps=1e-6 "Below Heps dermu_r=0 is returned"; +algorithm + if abs(H)CombiTable1Ds. +The given characteristic is amended by the last node (Hsat, Jsat) and mirrored at the origin. +If extrapolation = Modelica.Blocks.Types.Extrapolation.HoldLastPoint is used, the behavior is as expected: +an asymptote at saturation polarization Jsat. +

+")); +end makeTable; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/package.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/package.mo new file mode 100644 index 0000000000..edb03f6aed --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/package.mo @@ -0,0 +1,5 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +package Functions + extends Modelica.Icons.FunctionsPackage; + +end Functions; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/package.order b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/package.order new file mode 100644 index 0000000000..1622ca0391 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/Functions/package.order @@ -0,0 +1,7 @@ +app_J +der_J +app_mu_rd +app_mu_r +der_mu_r +makeTable +Internal diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/HP210_35A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/HP210_35A.mo new file mode 100644 index 0000000000..7cd4f4a61b --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/HP210_35A.mo @@ -0,0 +1,56 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record HP210_35A "HP210-35A @ 50Hz" + extends BaseData( + Type ="HP210-35A", + vRef =2.10, + BRef =1.50000, + fRef =50.00, + rhoEl =6.45e-7, + lambda=19.00, + dens =7600.00, + mu_ri =1963.43, + k0 =23, + Hpar =8789.76, + Hsat =109609.0, + Jsat =1.92077, + hH1 =5000.00, + hH2 =20000.00, + N =33, + smooth= 0.005, + c3={3.17716e-06,4.78835e-06,2.22395e-06,-4.72852e-06,-7.62674e-06,-3.89339e-06, + 9.28841e-07,1.15464e-06,7.99849e-07,8.54364e-07,4.96313e-07,2.05030e-07, + 8.58676e-08,5.24916e-08,1.86816e-08,5.01632e-09,9.57227e-10,1.78691e-10, + 4.98256e-11,1.81759e-11,7.68136e-12,4.80361e-12,2.17701e-12,4.52619e-13, + 5.52355e-14,5.44633e-14,1.91615e-14,9.10655e-15,1.68918e-14,2.72506e-15, + 1.26456e-14,1.29232e-14}, + c2={0.00000e+00,9.51788e-05,2.39082e-04,3.05720e-04,1.63841e-04,-6.39068e-05, + -1.82028e-04,-1.54216e-04,-1.19952e-04,-9.56450e-05,-6.48606e-05,-3.06002e-05, + -1.52799e-05,-8.92801e-06,-4.94486e-06,-2.14280e-06,-6.35941e-07,-2.05868e-07, + -7.19679e-08,-3.49917e-08,-2.12863e-08,-1.54602e-08,-8.30923e-09,-5.03797e-09, + -1.66175e-09,-1.25020e-09,-8.46485e-10,-5.53463e-10,-4.40746e-10,-2.38517e-10, + -2.12284e-10,-7.33053e-11}, + c1={2.46607e-03,3.41650e-03,6.76497e-03,1.22065e-02,1.69028e-02,1.78976e-02, + 1.54104e-02,1.20543e-02,9.34241e-03,7.15839e-03,5.23062e-03,3.03408e-03, + 1.89131e-03,1.29441e-03,9.43509e-04,5.89148e-04,3.10913e-04,1.84841e-04, + 1.15443e-04,8.89842e-05,7.48389e-05,6.55484e-05,5.37536e-05,4.70683e-05, + 3.04099e-05,2.31778e-05,1.79971e-05,1.08610e-05,6.75904e-06,4.04833e-06, + 2.60176e-06,1.55553e-06}, + c0={0.00000e+00,2.77891e-02,7.63790e-02,1.70014e-01,3.17950e-01,4.94912e-01, + 6.65347e-01,8.01951e-01,9.07214e-01,9.90376e-01,1.06404e+00,1.15610e+00, + 1.21585e+00,1.25449e+00,1.28236e+00,1.31951e+00,1.36205e+00,1.39757e+00, + 1.43368e+00,1.45859e+00,1.47903e+00,1.49671e+00,1.52602e+00,1.55113e+00, + 1.64398e+00,1.71010e+00,1.76056e+00,1.83284e+00,1.86887e+00,1.88990e+00, + 1.90052e+00,1.90783e+00}, + HD={0.00,9.99,20.00,29.99,39.99,49.95,60.06,70.04,79.93,90.06,102.07,125.08, + 149.99,174.65,199.94,249.94,350.07,499.83,749.61,996.98,1248.33,1501.16, + 1997.38,2498.25,4984.69,7468.28,9939.15,15036.56,19162.44,23153.10,26361.99, + 30025.40,31916.19}, + JD={0.00000,0.02592,0.06952,0.15792,0.31070,0.49558,0.66731,0.79843,0.90300, + 0.98665,1.05981,1.15196,1.21192,1.25065,1.27853,1.31570,1.35826,1.39377, + 1.42989,1.45479,1.47524,1.49292,1.52223,1.54734,1.64018,1.70631,1.75676, + 1.82905,1.86508,1.88610,1.89673,1.90403,1.90680}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end HP210_35A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/HP235_35A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/HP235_35A.mo new file mode 100644 index 0000000000..5add527c8b --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/HP235_35A.mo @@ -0,0 +1,56 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record HP235_35A "HP235-35A @ 50Hz" + extends BaseData( + Type ="HP235-35A", + vRef =2.35, + BRef =1.50000, + fRef =50.00, + rhoEl =5.40e-7, + lambda=20.20, + dens =7600.00, + mu_ri =1912.63, + k0 =23, + Hpar =9188.67, + Hsat =114657.6, + Jsat =1.94700, + hH1 =5000.00, + hH2 =20000.00, + N =33, + smooth= 0.005, + c3={2.08550e-06,3.30432e-06,3.27691e-06,3.04227e-07,-6.25804e-06,-7.62492e-06, + -2.08555e-06,1.30794e-06,2.07358e-06,1.13906e-06,4.78423e-07,2.38029e-07, + 7.80164e-08,5.06005e-08,2.04353e-08,5.43196e-09,1.08269e-09,1.93647e-10, + 5.20938e-11,1.47175e-11,1.06675e-11,4.42248e-12,2.30494e-12,4.42892e-13, + 4.48039e-14,6.03047e-14,1.67131e-14,1.00106e-14,1.12512e-14,1.27016e-14, + 1.80143e-15,2.88347e-14}, + c2={0.00000e+00,6.25469e-05,1.61648e-04,2.60172e-04,2.69294e-04,8.20771e-05, + -1.46188e-04,-2.08964e-04,-1.69751e-04,-1.05957e-04,-6.58849e-05,-3.29410e-05, + -1.50574e-05,-9.32891e-06,-5.36852e-06,-2.32709e-06,-7.06864e-07,-2.18208e-07, + -7.34371e-08,-3.39163e-08,-2.29641e-08,-1.49749e-08,-8.34307e-09,-4.91415e-09, + -1.59116e-09,-1.25602e-09,-8.01605e-10,-5.64597e-10,-4.16767e-10,-2.70639e-10, + -1.59450e-10,-1.40560e-10}, + c1={2.40223e-03,3.02752e-03,5.26882e-03,9.49634e-03,1.47883e-02,1.82922e-02, + 1.76524e-02,1.40890e-02,1.03043e-02,7.47686e-03,5.46176e-03,3.19340e-03, + 1.99133e-03,1.39445e-03,1.01101e-03,6.29226e-04,3.27573e-04,1.88400e-04, + 1.15722e-04,8.85746e-05,7.44653e-05,6.49941e-05,5.33385e-05,4.67645e-05, + 3.04948e-05,2.33958e-05,1.82275e-05,1.17695e-05,6.93879e-06,3.96281e-06, + 2.70781e-06,1.65921e-06}, + c0={0.00000e+00,2.60990e-02,6.59180e-02,1.38258e-01,2.59466e-01,4.27510e-01, + 6.10643e-01,7.70934e-01,8.92171e-01,9.82226e-01,1.05717e+00,1.15361e+00, + 1.21666e+00,1.25753e+00,1.28845e+00,1.32789e+00,1.37279e+00,1.40976e+00, + 1.44615e+00,1.47156e+00,1.49167e+00,1.50900e+00,1.53830e+00,1.56297e+00, + 1.65612e+00,1.72296e+00,1.77476e+00,1.84477e+00,1.89022e+00,1.91336e+00, + 1.92294e+00,1.93053e+00}, + HD={0.00,10.00,19.99,30.02,40.01,49.98,59.96,70.00,79.99,90.24,101.97,124.92, + 149.97,174.44,200.53,250.14,349.57,500.01,749.21,1002.10,1250.15,1499.79, + 1999.65,2495.53,4996.51,7489.87,10001.65,14728.63,19651.05,23980.32,26898.32, + 30393.56,32018.46}, + JD={0.00000,0.02506,0.06340,0.13222,0.24914,0.42339,0.61477,0.77250,0.89060, + 0.97862,1.05389,1.15083,1.21398,1.25500,1.28593,1.32539,1.37029,1.40727, + 1.44366,1.46907,1.48918,1.50651,1.53581,1.56048,1.65363,1.72047,1.77227, + 1.84228,1.88773,1.91087,1.92045,1.92804,1.93049}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end HP235_35A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/HP250_35A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/HP250_35A.mo new file mode 100644 index 0000000000..c01d040ddb --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/HP250_35A.mo @@ -0,0 +1,56 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record HP250_35A "HP250-35A @ 50Hz" + extends BaseData( + Type ="HP250-35A", + vRef =2.50, + BRef =1.50000, + fRef =50.00, + rhoEl =5.20e-7, + lambda=21.80, + dens =7600.00, + mu_ri =1679.39, + k0 =23, + Hpar =10106.33, + Hsat =125744.7, + Jsat =1.97342, + hH1 =5000.00, + hH2 =20000.00, + N =33, + smooth= 0.005, + c3={1.51213e-06,2.36937e-06,2.94020e-06,1.49079e-06,-1.40036e-06,-7.84078e-06, + -4.55521e-06,-1.41872e-06,2.01492e-06,1.70493e-06,7.70183e-07,1.93125e-07, + 1.08769e-07,5.73077e-08,2.20060e-08,6.25400e-09,1.16481e-09,2.27740e-10, + 4.41909e-11,2.90033e-11,6.76438e-12,5.66514e-12,2.01710e-12,4.75622e-13, + 3.73539e-14,5.72447e-14,1.38457e-14,1.08916e-14,-1.31308e-15,2.01916e-14, + -1.29830e-14,3.92358e-14}, + c2={0.00000e+00,4.53973e-05,1.16643e-04,2.04523e-04,2.49305e-04,2.07354e-04, + -2.88969e-05,-1.65933e-04,-2.08033e-04,-1.47692e-04,-8.63761e-05,-3.27905e-05, + -1.81951e-05,-1.03123e-05,-5.93635e-06,-2.65365e-06,-7.75438e-07,-2.46702e-07, + -7.61873e-08,-4.30462e-08,-2.16609e-08,-1.65303e-08,-7.91722e-09,-4.98941e-09, + -1.40625e-09,-1.12862e-09,-6.95118e-10,-4.86831e-10,-3.26512e-10,-3.40451e-10, + -1.21983e-10,-2.43425e-10}, + c1={2.10912e-03,2.56343e-03,4.18760e-03,7.38739e-03,1.19316e-02,1.64917e-02, + 1.82840e-02,1.63303e-02,1.26313e-02,9.08031e-03,6.27434e-03,3.51066e-03, + 2.22625e-03,1.53758e-03,1.12400e-03,6.96872e-04,3.53595e-04,1.98936e-04, + 1.18351e-04,8.85445e-05,7.26408e-05,6.29851e-05,5.05955e-05,4.43508e-05, + 2.82900e-05,2.20100e-05,1.74063e-05,1.14795e-05,7.48883e-06,5.12884e-06, + 3.46103e-06,2.32169e-06}, + c0={0.00000e+00,2.26222e-02,5.52628e-02,1.11470e-01,2.07442e-01,3.50053e-01, + 5.28663e-01,7.04512e-01,8.48435e-01,9.55799e-01,1.04637e+00,1.15503e+00, + 1.22574e+00,1.27044e+00,1.30384e+00,1.34776e+00,1.39720e+00,1.43698e+00, + 1.47481e+00,1.50032e+00,1.51992e+00,1.53701e+00,1.56542e+00,1.58827e+00, + 1.67571e+00,1.73774e+00,1.78703e+00,1.85858e+00,1.90447e+00,1.92682e+00, + 1.94184e+00,1.95105e+00}, + HD={0.00,10.01,20.03,29.99,40.01,49.99,60.04,70.06,79.96,89.94,101.93,125.12, + 150.31,174.47,199.92,249.64,349.75,501.06,750.64,1000.62,1246.40,1499.22, + 2006.01,2489.84,5001.05,7478.51,10002.79,15017.25,19923.76,23462.17,27068.77, + 30186.75,32254.81}, + JD={0.00000,0.02184,0.05414,0.10793,0.20218,0.34056,0.53078,0.70645,0.85073, + 0.95362,1.04344,1.15253,1.22384,1.26857,1.30199,1.34593,1.39539,1.43518, + 1.47300,1.49852,1.51811,1.53520,1.56361,1.58647,1.67391,1.73593,1.78522, + 1.85677,1.90266,1.92502,1.94003,1.94924,1.95335}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end HP250_35A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/HP270_35A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/HP270_35A.mo new file mode 100644 index 0000000000..acdf3a8f9a --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/HP270_35A.mo @@ -0,0 +1,56 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record HP270_35A "HP270-35A @ 50Hz" + extends BaseData( + Type ="HP270-35A", + vRef =2.70, + BRef =1.50000, + fRef =50.00, + rhoEl =5.20e-7, + lambda=21.80, + dens =7650.00, + mu_ri =1236.68, + k0 =23, + Hpar =10260.10, + Hsat =127477.7, + Jsat =1.98697, + hH1 =5000.00, + hH2 =20000.00, + N =33, + smooth= 0.005, + c3={4.45856e-07,5.97169e-07,2.22409e-06,3.95433e-06,3.29031e-06,-5.37869e-06, + -6.94374e-06,-3.65298e-06,-5.14321e-07,1.84139e-06,8.98537e-07,3.91313e-07, + 1.31492e-07,8.39373e-08,3.24497e-08,7.47365e-09,1.33257e-09,2.59533e-10, + 5.82247e-11,1.94585e-11,1.51687e-11,4.27467e-12,2.80085e-12,4.49517e-13, + 4.54953e-14,4.98586e-14,1.53509e-14,9.41689e-15,4.94327e-15,8.45370e-15, + -7.59286e-16,3.94808e-14}, + c2={0.00000e+00,1.33976e-05,3.12322e-05,9.79205e-05,2.17298e-04,3.16853e-04, + 1.56823e-04,-5.09554e-05,-1.61223e-04,-1.76590e-04,-1.21854e-04,-5.39168e-05, + -2.39299e-05,-1.45662e-05,-8.08813e-06,-3.16125e-06,-8.70375e-07,-2.78749e-07, + -8.56513e-08,-4.11718e-08,-2.68242e-08,-1.53502e-08,-8.97356e-09,-4.78401e-09, + -1.41131e-09,-1.06411e-09,-6.93682e-10,-4.74788e-10,-3.46962e-10,-2.83366e-10, + -1.89247e-10,-1.95687e-10}, + c1={1.55280e-03,1.68700e-03,2.13129e-03,3.42215e-03,6.59420e-03,1.19815e-02, + 1.66792e-02,1.77352e-02,1.56003e-02,1.22358e-02,9.27866e-03,4.84870e-03, + 2.86020e-03,1.94641e-03,1.36361e-03,7.94278e-04,3.82346e-04,2.12286e-04, + 1.21912e-04,8.96172e-05,7.29052e-05,6.22712e-05,5.01764e-05,4.33168e-05, + 2.78224e-05,2.15254e-05,1.71721e-05,1.16182e-05,7.90006e-06,5.19698e-06, + 3.44305e-06,2.35481e-06}, + c0={0.00000e+00,1.60016e-02,3.47127e-02,6.13552e-02,1.09738e-01,2.01725e-01, + 3.46470e-01,5.21547e-01,6.91116e-01,8.29988e-01,9.35680e-01,1.10651e+00, + 1.20171e+00,1.25788e+00,1.29974e+00,1.35224e+00,1.40837e+00,1.45021e+00, + 1.48967e+00,1.51612e+00,1.53595e+00,1.55287e+00,1.58056e+00,1.60370e+00, + 1.68914e+00,1.75153e+00,1.79907e+00,1.86667e+00,1.91039e+00,1.93828e+00, + 1.95410e+00,1.96230e+00}, + HD={0.00,10.02,19.97,29.97,40.03,50.12,60.03,70.01,80.07,90.03,99.94,125.14, + 150.68,174.42,200.15,250.76,352.93,500.92,748.93,1003.57,1249.35,1501.50, + 1998.74,2497.34,4998.32,7542.14,10018.69,14771.81,19296.52,23584.89,27296.03, + 30123.12,31775.29}, + JD={0.00000,0.01565,0.03612,0.06289,0.10841,0.19084,0.34407,0.52494,0.69433, + 0.83227,0.93402,1.10538,1.20087,1.25729,1.29915,1.35168,1.40783,1.44967, + 1.48914,1.51559,1.53542,1.55234,1.58003,1.60317,1.68861,1.75100,1.79854, + 1.86614,1.90986,1.93775,1.95356,1.96177,1.96530}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end HP270_35A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M270_50A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M270_50A.mo new file mode 100644 index 0000000000..dec637887e --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M270_50A.mo @@ -0,0 +1,67 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record M270_50A "M270-50A @ 50Hz" + extends BaseData( + Type ="M270-50A", + vRef = 2.70, + BRef = 1.50000, + fRef = 50.00, + rhoEl = 6.45e-7, + lambda= 19.00, + dens = 7600.00, + mu_ri = 1902.23, + k0 = 23, + Hpar = 10284.44, + Hsat = 129186.5, + Jsat = 1.96017, + hH1 = 5000.00, + hH2 = 20000.00, + N = 33, + smooth= 0.005, + c3={ + 2.27864e-06, 2.32901e-06, 1.40801e-06,-6.86202e-07,-3.20815e-06, + -5.32239e-06,-4.53197e-07, 1.96980e-07, 9.85862e-07, 6.20767e-07, + 2.48655e-07, 1.72769e-07, 1.06935e-07, 6.59337e-08, 3.23798e-08, + 8.34756e-09, 1.51137e-09, 2.61362e-10, 5.69454e-11, 2.38477e-11, + 9.55963e-12, 5.40335e-12, 2.43257e-12, 4.58038e-13, 4.98279e-14, + 4.90381e-14, 1.11934e-14, 9.99504e-15, 4.62001e-15, 1.65527e-14, + 6.74648e-15, 2.89091e-14}, + c2={ + 0.00000e+00, 6.84949e-05, 1.38361e-04, 1.80685e-04, 1.60156e-04, + 6.47927e-05,-9.58308e-05,-1.09426e-04,-1.03534e-04,-7.38923e-05, + -5.15038e-05,-3.42036e-05,-2.12643e-05,-1.31499e-05,-8.30411e-06, + -3.43640e-06,-9.64732e-07,-2.78886e-07,-8.49613e-08,-4.17113e-08, + -2.38917e-08,-1.67094e-08,-8.62512e-09,-4.92342e-09,-1.49179e-09, + -1.11839e-09,-7.50541e-10,-5.83338e-10,-4.49504e-10,-3.90539e-10, + -1.92032e-10,-1.33433e-10}, + c1={ + 2.38915e-03, 3.07546e-03, 5.14389e-03, 8.34067e-03, 1.17396e-02, + 1.39685e-02, 1.36562e-02, 1.16038e-02, 9.48040e-03, 7.70222e-03, + 6.19471e-03, 4.20700e-03, 2.82228e-03, 1.95181e-03, 1.42622e-03, + 8.37897e-04, 4.03512e-04, 2.15398e-04, 1.25410e-04, 9.33406e-05, + 7.70005e-05, 6.68324e-05, 5.41976e-05, 4.73252e-05, 3.13042e-05, + 2.47842e-05, 2.01111e-05, 1.34694e-05, 8.85949e-06, 5.28571e-06, + 2.95690e-06, 2.01459e-06}, + c0={ + 0.00000e+00, 2.62311e-02, 6.61610e-02, 1.33009e-01, 2.33471e-01, + 3.62395e-01, 5.04051e-01, 6.30570e-01, 7.35587e-01, 8.21194e-01, + 9.04189e-01, 1.02325e+00, 1.10965e+00, 1.16916e+00, 1.21006e+00, + 1.26475e+00, 1.32200e+00, 1.36619e+00, 1.40636e+00, 1.43359e+00, + 1.45462e+00, 1.47255e+00, 1.50240e+00, 1.52799e+00, 1.62260e+00, + 1.69227e+00, 1.74801e+00, 1.83092e+00, 1.88031e+00, 1.91022e+00, + 1.92617e+00, 1.93328e+00}, + HD={ 0.00, 10.02, 20.02, 30.04, 40.01, 49.92, 59.98, + 69.98, 79.95, 89.97, 101.99, 125.19, 150.15, 175.44, + 199.94, 250.05, 348.75, 500.01, 747.34, 1000.51, 1249.58, + 1500.02, 1998.74, 2505.98, 5003.32, 7501.24, 10001.65, 14980.88, + 19444.24, 23698.52, 27696.00, 30591.27, 32129.82}, + JD={ + 0.00000, 0.02357, 0.06234, 0.12779, 0.22774, 0.35715, 0.50714, + 0.62863, 0.73381, 0.81804, 0.90102, 1.02044, 1.10685, 1.16639, + 1.20730, 1.26200, 1.31927, 1.36347, 1.40364, 1.43087, 1.45190, + 1.46983, 1.49968, 1.52527, 1.61988, 1.68955, 1.74529, 1.82820, + 1.87759, 1.90750, 1.92345, 1.93056, 1.93345}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end M270_50A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M310_50A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M310_50A.mo new file mode 100644 index 0000000000..f3c2b94256 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M310_50A.mo @@ -0,0 +1,67 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record M310_50A "M310-50A @ 50Hz" + extends BaseData( + Type ="M310-50A", + vRef = 3.10, + BRef = 1.50000, + fRef = 50.00, + rhoEl = 5.20e-7, + lambda= 21.80, + dens = 7650.00, + mu_ri = 1699.69, + k0 = 23, + Hpar = 11518.06, + Hsat = 144257.7, + Jsat = 1.99336, + hH1 = 5000.00, + hH2 = 20000.00, + N = 33, + smooth= 0.005, + c3={ + 1.44661e-06, 2.09739e-06, 2.29241e-06, 1.41891e-06,-9.62814e-07, + -8.20755e-06,-2.02674e-06,-8.51108e-07, 6.73648e-07, 1.40857e-06, + 6.21560e-07, 2.05805e-07, 1.21435e-07, 6.07374e-08, 2.73919e-08, + 6.91040e-09, 1.33975e-09, 2.62388e-10, 5.30131e-11, 2.67045e-11, + 1.20841e-11, 5.22862e-12, 2.63937e-12, 4.60859e-13, 3.88419e-14, + 4.73304e-14, 1.10133e-14, 7.56026e-15, 3.22164e-15, 1.50163e-14, + -3.48333e-14, 1.01212e-13}, + c2={ + 0.00000e+00, 4.34352e-05, 1.06711e-04, 1.75119e-04, 2.17394e-04, + 1.88380e-04,-5.91743e-05,-1.19489e-04,-1.45151e-04,-1.24978e-04, + -8.26751e-05,-3.62940e-05,-2.06983e-05,-1.16036e-05,-7.08173e-06, + -2.95826e-06,-8.84796e-07,-2.81945e-07,-8.54518e-08,-4.57306e-08, + -2.55669e-08,-1.65703e-08,-8.73324e-09,-4.75105e-09,-1.29576e-09, + -1.00442e-09,-6.51162e-10,-4.86949e-10,-3.79814e-10,-3.31317e-10, + -1.31578e-10,-3.50539e-10}, + c1={ + 2.13464e-03, 2.56936e-03, 4.07925e-03, 6.88264e-03, 1.07808e-02, + 1.48567e-02, 1.61557e-02, 1.43834e-02, 1.17236e-02, 9.02711e-03, + 6.94835e-03, 3.98918e-03, 2.54956e-03, 1.74317e-03, 1.27946e-03, + 7.75667e-04, 3.91298e-04, 2.16298e-04, 1.24588e-04, 9.18242e-05, + 7.38794e-05, 6.34223e-05, 5.07800e-05, 4.39984e-05, 2.88864e-05, + 2.31356e-05, 1.90166e-05, 1.33600e-05, 9.26583e-06, 5.69746e-06, + 3.64507e-06, 2.63488e-06}, + c0={ + 0.00000e+00, 2.28147e-02, 5.51781e-02, 1.08570e-01, 1.95584e-01, + 3.24834e-01, 4.84902e-01, 6.37363e-01, 7.68989e-01, 8.72225e-01, + 9.51481e-01, 1.08273e+00, 1.16365e+00, 1.21629e+00, 1.25333e+00, + 1.30316e+00, 1.35806e+00, 1.40137e+00, 1.44187e+00, 1.46849e+00, + 1.48913e+00, 1.50607e+00, 1.53427e+00, 1.55794e+00, 1.64542e+00, + 1.71015e+00, 1.76222e+00, 1.84200e+00, 1.89504e+00, 1.93238e+00, + 1.95244e+00, 1.95917e+00}, + HD={ 0.00, 10.01, 20.06, 30.01, 39.94, 49.99, 60.04, + 69.96, 80.01, 89.99, 100.01, 124.88, 150.14, 175.10, + 199.92, 250.10, 350.11, 500.11, 749.73, 999.48, 1251.17, + 1499.34, 1998.97, 2501.89, 5001.05, 7501.24, 9989.15, 14959.29, + 19682.86, 24700.73, 29134.55, 31229.87, 32384.34}, + JD={ + 0.00000, 0.02186, 0.05368, 0.10580, 0.19101, 0.31446, 0.49055, + 0.63704, 0.76908, 0.87138, 0.94881, 1.08050, 1.16182, 1.21449, + 1.25156, 1.30141, 1.35633, 1.39964, 1.44015, 1.46676, 1.48740, + 1.50434, 1.53255, 1.55621, 1.64369, 1.70842, 1.76049, 1.84027, + 1.89331, 1.93065, 1.95071, 1.95745, 1.96018}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end M310_50A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M330_50A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M330_50A.mo new file mode 100644 index 0000000000..201e34bb56 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M330_50A.mo @@ -0,0 +1,67 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record M330_50A "M330-50A @ 50Hz" + extends BaseData( + Type ="M330-50A", + vRef = 3.30, + BRef = 1.50000, + fRef = 50.00, + dens = 7650.00, + rhoEl = 5.20e-7, + lambda= 21.80, + mu_ri = 1462.80, + k0 = 23, + Hpar = 11652.25, + Hsat = 145834.7, + Jsat = 1.99525, + hH1 = 5000.00, + hH2 = 20000.00, + N = 33, + smooth= 0.005, + c3={ + 8.25303e-07, 1.04832e-06, 2.39026e-06, 2.82476e-06,-2.43534e-07, + -4.05353e-06,-4.25414e-06,-3.17212e-06,-1.28737e-07, 1.10264e-06, + 8.25003e-07, 3.07108e-07, 1.27944e-07, 7.93928e-08, 3.05904e-08, + 7.37865e-09, 1.39556e-09, 2.64253e-10, 4.86781e-11, 3.55725e-11, + 5.63774e-12, 6.80921e-12, 2.01021e-12, 4.99912e-13, 3.66876e-14, + 4.33535e-14, 1.16344e-14, 7.61233e-15, 3.00991e-15, 1.26397e-14, + -4.21798e-16, 1.27806e-13}, + c2={ + 0.00000e+00, 2.48138e-05, 5.61757e-05, 1.27863e-04, 2.12773e-04, + 2.05481e-04, 8.32747e-05,-4.51393e-05,-1.38837e-04,-1.42774e-04, + -1.03419e-04,-4.63850e-05,-2.31544e-05,-1.37032e-05,-7.74366e-06, + -3.11367e-06,-9.15301e-07,-2.83150e-07,-8.56847e-08,-4.91369e-08, + -2.24834e-08,-1.83264e-08,-8.00183e-09,-4.99220e-09,-1.24343e-09, + -9.65164e-10,-6.43580e-10,-4.69115e-10,-3.61373e-10,-3.13128e-10, + -2.04549e-10,-2.10867e-10}, + c1={ + 1.83695e-03, 2.08563e-03, 2.89327e-03, 4.73312e-03, 8.14623e-03, + 1.23209e-02, 1.52227e-02, 1.56064e-02, 1.37950e-02, 1.09247e-02, + 7.99573e-03, 4.54364e-03, 2.79025e-03, 1.88269e-03, 1.34607e-03, + 7.98301e-04, 3.98176e-04, 2.17221e-04, 1.25349e-04, 9.16075e-05, + 7.37198e-05, 6.36896e-05, 5.03827e-05, 4.38979e-05, 2.83112e-05, + 2.27273e-05, 1.87496e-05, 1.31877e-05, 9.26956e-06, 5.66580e-06, + 4.18346e-06, 2.10934e-06}, + c0={ + 0.00000e+00, 1.92409e-02, 4.35461e-02, 8.04729e-02, 1.43577e-01, + 2.45841e-01, 3.86296e-01, 5.43562e-01, 6.89819e-01, 8.15866e-01, + 9.27485e-01, 1.06692e+00, 1.15691e+00, 1.21349e+00, 1.25326e+00, + 1.30539e+00, 1.36119e+00, 1.40525e+00, 1.44587e+00, 1.47264e+00, + 1.49301e+00, 1.50985e+00, 1.53824e+00, 1.56164e+00, 1.64798e+00, + 1.71221e+00, 1.76316e+00, 1.84225e+00, 1.89483e+00, 1.93449e+00, + 1.94845e+00, 1.96418e+00}, + HD={ 0.00, 10.02, 19.99, 29.99, 40.01, 49.99, 60.04, + 70.10, 79.95, 90.14, 102.04, 125.08, 150.30, 174.92, + 199.94, 250.39, 349.71, 500.70, 749.78, 1000.05, 1249.81, + 1495.59, 2001.01, 2500.07, 4999.69, 7527.94, 10000.51, 14999.06, + 19716.95, 25059.80, 27923.26, 32916.13, 33466.10}, + JD={ + 0.00000, 0.01852, 0.04416, 0.08001, 0.13893, 0.24031, 0.38507, + 0.54387, 0.69247, 0.81635, 0.92617, 1.06531, 1.15572, 1.21245, + 1.25222, 1.30438, 1.36020, 1.40426, 1.44489, 1.47165, 1.49202, + 1.50887, 1.53725, 1.56065, 1.64700, 1.71122, 1.76217, 1.84126, + 1.89384, 1.93351, 1.94746, 1.96320, 1.96432}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end M330_50A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M350_50A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M350_50A.mo new file mode 100644 index 0000000000..fbe6856473 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M350_50A.mo @@ -0,0 +1,67 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record M350_50A "M350-50A @ 50Hz" + extends BaseData( + Type ="M350-50A", + vRef = 3.50, + BRef = 1.50000, + fRef = 50.00, + rhoEl = 4.50e-7, + lambda= 24.00, + dens = 7650.00, + mu_ri = 1253.27, + k0 = 23, + Hpar = 12495.23, + Hsat = 156864.8, + Jsat = 2.01894, + hH1 = 5000.00, + hH2 = 20000.00, + N = 33, + smooth= 0.005, + c3={ + 1.30943e-06, 1.76540e-06, 2.95940e-06, 8.74022e-07,-2.07419e-06, + -3.02623e-06,-3.76862e-06,-2.76685e-06,-1.79994e-07, 1.17601e-06, + 9.48923e-07, 2.47131e-07, 1.30776e-07, 5.82667e-08, 2.83000e-08, + 7.02395e-09, 1.36506e-09, 2.31282e-10, 5.53054e-11, 2.83632e-11, + 8.01659e-12, 6.25850e-12, 2.15443e-12, 4.77822e-13, 2.87350e-14, + 4.84878e-14, 8.98326e-15, 5.84281e-15, 5.82329e-15, 3.98637e-15, + -1.61346e-15, 7.04108e-14}, + c2={ + 0.00000e+00, 3.93565e-05, 9.23332e-05, 1.80928e-04, 2.07070e-04, + 1.42811e-04, 5.26492e-05,-5.66896e-05,-1.41199e-04,-1.46620e-04, + -1.11663e-04,-4.01098e-05,-2.15256e-05,-1.14907e-05,-7.16862e-06, + -2.97211e-06,-8.85651e-07,-2.59315e-07,-8.55251e-08,-4.46425e-08, + -2.33521e-08,-1.73920e-08,-8.04107e-09,-4.72884e-09,-1.17830e-09, + -9.62544e-10,-6.03205e-10,-4.71803e-10,-3.81537e-10,-3.10788e-10, + -2.60672e-10,-2.76985e-10}, + c1={ + 1.57364e-03, 1.96794e-03, 3.28521e-03, 6.01206e-03, 9.88033e-03, + 1.34934e-02, 1.54346e-02, 1.53955e-02, 1.33808e-02, 1.04913e-02, + 7.93211e-03, 4.11734e-03, 2.57235e-03, 1.72786e-03, 1.26649e-03, + 7.65250e-04, 3.83267e-04, 2.08150e-04, 1.21777e-04, 8.97031e-05, + 7.26901e-05, 6.25926e-05, 4.99260e-05, 4.33819e-05, 2.87505e-05, + 2.33924e-05, 1.95246e-05, 1.42830e-05, 9.88858e-06, 7.08484e-06, + 4.69005e-06, 2.87801e-06}, + c0={ + 0.00000e+00, 1.70826e-02, 4.24723e-02, 8.73903e-02, 1.66179e-01, + 2.88007e-01, 4.33134e-01, 5.83917e-01, 7.31866e-01, 8.51784e-01, + 9.42486e-01, 1.08638e+00, 1.16828e+00, 1.22218e+00, 1.25876e+00, + 1.30726e+00, 1.36072e+00, 1.40350e+00, 1.44300e+00, 1.46864e+00, + 1.48874e+00, 1.50544e+00, 1.53307e+00, 1.55684e+00, 1.64254e+00, + 1.70756e+00, 1.76021e+00, 1.84211e+00, 1.90395e+00, 1.93812e+00, + 1.96265e+00, 1.97543e+00}, + HD={ 0.00, 10.02, 20.02, 30.00, 39.97, 50.30, 60.23, + 69.90, 80.08, 90.12, 100.03, 125.16, 150.23, 175.81, + 200.53, 249.96, 348.98, 501.92, 752.40, 998.80, 1249.01, + 1496.84, 1994.88, 2507.34, 4984.23, 7487.03, 9957.33, 14833.17, + 19982.85, 24032.59, 28223.24, 31593.49, 32904.77}, + JD={ + 0.00000, 0.01606, 0.04233, 0.08334, 0.16110, 0.28531, 0.43068, + 0.58355, 0.73339, 0.85184, 0.94065, 1.08398, 1.16658, 1.22053, + 1.25716, 1.30567, 1.35915, 1.40194, 1.44144, 1.46708, 1.48717, + 1.50388, 1.53151, 1.55527, 1.64097, 1.70600, 1.75864, 1.84054, + 1.90238, 1.93656, 1.96108, 1.97387, 1.97732}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end M350_50A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M400_50A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M400_50A.mo new file mode 100644 index 0000000000..59caecdb15 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M400_50A.mo @@ -0,0 +1,67 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record M400_50A "M400-50A @ 50Hz" + extends BaseData( + Type ="M400-50A", + vRef = 4.00, + BRef = 1.50000, + fRef = 50.00, + rhoEl = 4.50e-7, + lambda= 24.00, + dens = 7700.00, + mu_ri = 973.82, + k0 = 23, + Hpar = 12403.56, + Hsat = 155318.2, + Jsat = 2.02447, + hH1 = 5000.00, + hH2 = 20000.00, + N = 33, + smooth= 0.005, + c3={ + 5.72271e-07, 2.43302e-07, 7.99627e-07, 3.11504e-06, 3.84620e-06, + -3.00575e-06,-4.85923e-06,-3.87915e-07,-3.15109e-06,-2.04888e-06, + 9.58726e-07, 5.83564e-07, 1.72141e-07, 1.02202e-07, 4.56211e-08, + 9.25520e-09, 1.38354e-09, 2.53440e-10, 5.78433e-11, 2.13267e-11, + 1.52527e-11, 4.25375e-12, 2.88466e-12, 4.46033e-13, 3.22002e-14, + 4.37365e-14, 1.22564e-14, 4.35679e-15, 4.35068e-15, 4.66512e-15, + 6.43326e-15, 5.95883e-14}, + c2={ + 0.00000e+00, 1.71866e-05, 2.44918e-05, 4.84246e-05, 1.42316e-04, + 2.57380e-04, 1.67336e-04, 2.09721e-05, 9.44116e-06,-8.70191e-05, + -1.47644e-04,-7.56783e-05,-3.06605e-05,-1.81439e-05,-1.04305e-05, + -3.68724e-06,-9.00131e-07,-2.75880e-07,-8.61578e-08,-4.26992e-08, + -2.66615e-08,-1.52019e-08,-8.84488e-09,-4.52603e-09,-1.18646e-09, + -9.44450e-10,-6.18683e-10,-4.32760e-10,-3.72358e-10,-3.15556e-10, + -2.58401e-10,-1.92566e-10}, + c1={ + 1.22248e-03, 1.39453e-03, 1.81167e-03, 2.53913e-03, 4.45552e-03, + 8.44133e-03, 1.26824e-02, 1.45731e-02, 1.48745e-02, 1.40829e-02, + 1.17684e-02, 6.18060e-03, 3.44617e-03, 2.26330e-03, 1.54444e-03, + 8.48864e-04, 3.88383e-04, 2.11511e-04, 1.21172e-04, 8.89011e-05, + 7.15147e-05, 6.10305e-05, 4.90516e-05, 4.23787e-05, 2.81217e-05, + 2.27832e-05, 1.89022e-05, 1.35856e-05, 9.86488e-06, 6.87108e-06, + 4.52713e-06, 2.98882e-06}, + c0={ + 0.00000e+00, 1.28121e-02, 2.87347e-02, 5.00409e-02, 8.35992e-02, + 1.45997e-01, 2.52961e-01, 3.92247e-01, 5.38326e-01, 6.87739e-01, + 8.16207e-01, 1.03325e+00, 1.15206e+00, 1.22003e+00, 1.26711e+00, + 1.32334e+00, 1.38076e+00, 1.42352e+00, 1.46305e+00, 1.48891e+00, + 1.50884e+00, 1.52532e+00, 1.55248e+00, 1.57511e+00, 1.65962e+00, + 1.72313e+00, 1.77455e+00, 1.85589e+00, 1.90986e+00, 1.94610e+00, + 1.96922e+00, 1.98191e+00}, + HD={ 0.00, 10.01, 20.02, 30.00, 40.04, 50.02, 60.00, + 70.04, 79.95, 90.15, 100.02, 125.04, 150.75, 174.99, + 200.15, 249.42, 349.80, 500.20, 749.73, 1000.16, 1250.83, + 1501.27, 1999.42, 2498.48, 4994.23, 7499.53, 9982.33, 15038.84, + 19660.14, 24012.14, 28095.98, 31507.13, 32584.33}, + JD={ + 0.00000, 0.01174, 0.02872, 0.05212, 0.08379, 0.13713, 0.25006, + 0.39690, 0.53434, 0.68837, 0.81912, 1.03212, 1.15089, 1.21926, + 1.26636, 1.32261, 1.38007, 1.42283, 1.46237, 1.48822, 1.50816, + 1.52464, 1.55179, 1.57443, 1.65894, 1.72245, 1.77386, 1.85521, + 1.90918, 1.94542, 1.96853, 1.98122, 1.98429}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end M400_50A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M470_50A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M470_50A.mo new file mode 100644 index 0000000000..e61b506d9d --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M470_50A.mo @@ -0,0 +1,67 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record M470_50A "M470-50A @ 50Hz" + extends BaseData( + Type ="M470-50A", + vRef = 4.70, + BRef = 1.50000, + fRef = 50.00, + rhoEl = 3.58e-7, + lambda= 28.10, + dens = 7700.00, + mu_ri = 719.13, + k0 = 23, + Hpar = 13221.84, + Hsat = 165628.7, + Jsat = 2.05381, + hH1 = 5000.00, + hH2 = 20000.00, + N = 33, + smooth= 0.005, + c3={ + 4.23501e-07, 1.99147e-07, 8.70201e-08, 8.70152e-07, 3.15225e-06, + 2.87889e-06,-1.00541e-06,-4.49788e-06,-2.54532e-06,-2.55462e-06, + -7.49111e-07, 1.29739e-06, 3.69753e-07, 1.01680e-07, 4.91171e-08, + 8.82758e-09, 1.63533e-09, 2.86210e-10, 5.61168e-11, 3.02473e-11, + 1.06894e-11, 6.24386e-12, 2.64901e-12, 4.58480e-13, 2.45429e-14, + 4.64264e-14, 8.89366e-15, 6.03648e-15, 2.77430e-15, 6.00954e-15, + 4.24588e-15, 4.99038e-14}, + c2={ + 0.00000e+00, 1.26667e-05, 1.86679e-05, 2.12682e-05, 4.74186e-05, + 1.42410e-04, 2.28418e-04, 1.97589e-04, 6.57279e-05,-7.19967e-06, + -8.74040e-05,-1.43609e-04,-4.63113e-05,-1.86824e-05,-1.10776e-05, + -3.68708e-06,-1.03958e-06,-3.05729e-07,-9.06358e-08,-4.85317e-08, + -2.58270e-08,-1.78542e-08,-8.56134e-09,-4.53750e-09,-1.09505e-09, + -9.12746e-10,-5.60455e-10,-4.27453e-10,-3.45677e-10,-2.98939e-10, + -2.40842e-10,-1.94613e-10}, + c1={ + 9.02431e-04, 1.02872e-03, 1.34347e-03, 1.74126e-03, 2.42933e-03, + 4.33613e-03, 8.02901e-03, 1.23832e-02, 1.49564e-02, 1.55154e-02, + 1.45253e-02, 8.74770e-03, 3.99998e-03, 2.38115e-03, 1.63922e-03, + 8.98684e-04, 4.26155e-04, 2.24923e-04, 1.25630e-04, 9.08249e-05, + 7.22195e-05, 6.13594e-05, 4.82546e-05, 4.16222e-05, 2.75251e-05, + 2.25538e-05, 1.88275e-05, 1.39029e-05, 1.04117e-05, 6.79182e-06, + 5.05237e-06, 3.47196e-06}, + c0={ + 0.00000e+00, 9.41676e-03, 2.12299e-02, 3.65500e-02, 5.70022e-02, + 8.93838e-02, 1.49531e-01, 2.54384e-01, 3.90066e-01, 5.36685e-01, + 6.95341e-01, 9.92227e-01, 1.14143e+00, 1.21804e+00, 1.26737e+00, + 1.32791e+00, 1.38973e+00, 1.43569e+00, 1.47734e+00, 1.50397e+00, + 1.52413e+00, 1.54066e+00, 1.56747e+00, 1.59005e+00, 1.67298e+00, + 1.73480e+00, 1.78675e+00, 1.86778e+00, 1.92240e+00, 1.97046e+00, + 1.98944e+00, 2.00481e+00}, + HD={ 0.00, 9.97, 20.01, 29.98, 39.99, 50.04, 60.00, + 70.22, 79.99, 89.54, 100.01, 125.01, 150.01, 174.92, + 199.85, 250.01, 349.98, 499.56, 750.07, 1000.16, 1250.38, + 1499.00, 1995.10, 2501.43, 5004.23, 7480.22, 10009.60, 14994.52, + 19510.15, 25125.71, 28348.23, 31977.55, 33277.47}, + JD={ + 0.00000, 0.00864, 0.02059, 0.03698, 0.05922, 0.08855, 0.14439, + 0.24971, 0.39189, 0.53617, 0.69699, 0.99416, 1.13982, 1.21722, + 1.26680, 1.32736, 1.38921, 1.43518, 1.47684, 1.50347, 1.52363, + 1.54015, 1.56696, 1.58954, 1.67248, 1.73429, 1.78625, 1.86728, + 1.92190, 1.96995, 1.98894, 2.00431, 2.00860}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end M470_50A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M530_50A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M530_50A.mo new file mode 100644 index 0000000000..9388aeb7d2 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M530_50A.mo @@ -0,0 +1,67 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record M530_50A "M530-50A @ 50Hz" + extends BaseData( + Type ="M530-50A", + vRef = 5.30, + BRef = 1.50000, + fRef = 50.00, + rhoEl = 3.11e-7, + lambda= 31.70, + dens = 7700.00, + mu_ri = 196.58, + k0 = 23, + Hpar = 13814.11, + Hsat = 173137.7, + Jsat = 2.06747, + hH1 = 5000.00, + hH2 = 20000.00, + N = 33, + smooth= 0.005, + c3={ + 9.07813e-08,-3.16847e-08, 3.34104e-07, 9.23527e-07, 1.58810e-06, + 3.39753e-06, 2.67545e-06,-3.39965e-06,-3.71597e-06,-4.22437e-06, + -6.29441e-07, 3.03955e-07, 1.03457e-06, 9.68701e-08, 5.47453e-08, + 9.73747e-09, 1.82644e-09, 2.98321e-10, 6.72683e-11, 2.36689e-11, + 1.56235e-11, 5.50840e-12, 2.62096e-12, 4.41805e-13, 2.47881e-14, + 4.11538e-14, 8.62826e-15, 5.76601e-15, 4.04312e-15, 1.21516e-15, + 1.02087e-14, 3.75784e-14}, + c2={ + 0.00000e+00, 2.72389e-06, 1.77038e-06, 1.17929e-05, 3.95033e-05, + 8.70783e-05, 1.88071e-04, 2.67919e-04, 1.64487e-04, 5.39018e-05, + -7.36856e-05,-1.20526e-04,-9.75857e-05,-1.95744e-05,-1.24219e-05, + -4.08373e-06,-1.13080e-06,-3.20164e-07,-9.66411e-08,-4.59866e-08, + -2.83974e-08,-1.66059e-08,-8.24057e-09,-4.35404e-09,-1.04463e-09, + -8.58486e-10,-5.49079e-10,-4.19928e-10,-3.38495e-10,-2.84909e-10, + -2.68671e-10,-1.46034e-10}, + c1={ + 2.45779e-04, 2.73022e-04, 3.18105e-04, 4.53729e-04, 9.66775e-04, + 2.23079e-03, 4.95710e-03, 9.49340e-03, 1.38786e-02, 1.60450e-02, + 1.58458e-02, 1.10284e-02, 5.54120e-03, 2.59641e-03, 1.80891e-03, + 9.70925e-04, 4.43817e-04, 2.29153e-04, 1.25053e-04, 8.92525e-05, + 7.08267e-05, 5.95050e-05, 4.69272e-05, 4.07018e-05, 2.72220e-05, + 2.24582e-05, 1.89307e-05, 1.40959e-05, 1.05255e-05, 7.77134e-06, + 5.30555e-06, 3.64495e-06}, + c0={ + 0.00000e+00, 2.54902e-03, 5.52987e-03, 9.22178e-03, 1.58635e-02, + 3.10378e-02, 6.49958e-02, 1.35557e-01, 2.55843e-01, 4.06075e-01, + 5.68762e-01, 9.06876e-01, 1.11288e+00, 1.20694e+00, 1.26043e+00, + 1.32741e+00, 1.39388e+00, 1.44071e+00, 1.48262e+00, 1.50898e+00, + 1.52863e+00, 1.54490e+00, 1.57148e+00, 1.59298e+00, 1.67434e+00, + 1.73632e+00, 1.78786e+00, 1.86972e+00, 1.92737e+00, 1.96761e+00, + 1.99668e+00, 2.01428e+00}, + HD={ 0.00, 10.00, 20.03, 30.03, 40.03, 50.02, 59.93, + 69.88, 80.02, 89.94, 100.01, 124.81, 149.97, 175.10, + 199.71, 250.48, 351.57, 499.51, 749.27, 1000.28, 1247.99, + 1499.57, 2005.78, 2500.07, 4996.96, 7500.10, 10006.19, 14995.66, + 19703.32, 24121.22, 28575.49, 32579.79, 33875.16}, + JD={ + 0.00000, 0.00229, 0.00586, 0.00982, 0.01655, 0.03309, 0.06403, + 0.12820, 0.25536, 0.40536, 0.57295, 0.90788, 1.11364, 1.20571, + 1.26027, 1.32725, 1.39377, 1.44060, 1.48251, 1.50887, 1.52852, + 1.54479, 1.57137, 1.59287, 1.67423, 1.73621, 1.78775, 1.86961, + 1.92726, 1.96751, 1.99658, 2.01417, 2.01873}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end M530_50A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M600_50A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M600_50A.mo new file mode 100644 index 0000000000..02f09e2444 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M600_50A.mo @@ -0,0 +1,67 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record M600_50A "M600-50A @ 50Hz" + extends BaseData( + Type ="M600-50A", + vRef = 6.00, + BRef = 1.50000, + fRef = 50.00, + rhoEl = 3.11e-7, + lambda= 31.70, + dens = 7750.00, + mu_ri = 439.73, + k0 = 22, + Hpar = 13477.55, + Hsat = 168677.0, + Jsat = 2.07351, + hH1 = 5000.00, + hH2 = 20000.00, + N = 32, + smooth= 0.005, + c3={ + 1.50523e-07, 2.02462e-08,-6.07255e-08,-4.84084e-08, 3.37181e-07, + 2.13336e-06, 5.43918e-06, 5.93800e-07,-4.95943e-06,-2.87895e-06, + -2.46534e-07, 1.17840e-06, 2.47271e-07, 9.94426e-08, 1.43707e-08, + 2.54377e-09, 3.78158e-10, 6.85175e-11, 3.51174e-11, 1.61473e-11, + 5.68986e-12, 2.99489e-12, 4.81343e-13, 2.89820e-14, 4.07497e-14, + 8.63194e-15, 7.63187e-15, 6.57039e-16, 6.75484e-15, 2.17377e-15, + 6.04702e-14}, + c2={ + 0.00000e+00, 9.04927e-06, 9.65455e-06, 7.84325e-06, 6.37854e-06, + 1.67727e-05, 7.90969e-05, 2.41613e-04, 2.59204e-04, 1.09585e-04, + -1.10543e-04,-1.28654e-04,-3.94360e-05,-2.08413e-05,-5.80378e-06, + -1.53987e-06,-3.92123e-07,-1.07311e-07,-5.60660e-08,-2.99570e-08, + -1.76877e-08,-9.15534e-09,-4.67962e-09,-1.08421e-09,-8.62347e-10, + -5.49728e-10,-4.26318e-10,-3.16608e-10,-3.07663e-10,-2.21682e-10, + -1.97066e-10}, + c1={ + 5.51326e-04, 7.32671e-04, 9.19060e-04, 1.09303e-03, 1.23647e-03, + 1.47436e-03, 2.40794e-03, 5.60209e-03, 1.05473e-02, 1.42560e-02, + 1.42315e-02, 8.37428e-03, 4.13218e-03, 2.62123e-03, 1.27816e-03, + 5.51854e-04, 2.61283e-04, 1.35899e-04, 9.51684e-05, 7.38497e-05, + 6.17823e-05, 4.83647e-05, 4.14728e-05, 2.71217e-05, 2.21545e-05, + 1.85435e-05, 1.38921e-05, 1.03322e-05, 7.49900e-06, 5.25304e-06, + 3.67236e-06}, + c0={ + 0.00000e+00, 1.22598e-02, 2.04797e-02, 3.05122e-02, 4.22844e-02, + 5.60291e-02, 7.39470e-02, 1.11149e-01, 1.90596e-01, 3.17831e-01, + 7.04694e-01, 9.83279e-01, 1.13162e+00, 1.21432e+00, 1.30623e+00, + 1.38977e+00, 1.44659e+00, 1.49346e+00, 1.52173e+00, 1.54240e+00, + 1.55945e+00, 1.58662e+00, 1.60881e+00, 1.69049e+00, 1.75312e+00, + 1.80482e+00, 1.88164e+00, 1.93926e+00, 1.97969e+00, 2.00649e+00, + 2.02327e+00}, + HD={ 0.00, 20.04, 30.00, 39.95, 50.03, 60.31, 70.05, + 80.01, 89.88, 99.94, 125.42, 149.91, 175.15, 200.21, + 250.62, 349.52, 499.92, 750.98, 1000.28, 1248.10, 1501.38, + 2001.24, 2499.39, 4989.23, 7541.01, 10098.23, 14863.85, 19655.59, + 24193.95, 28436.86, 32211.63, 33297.92}, + JD={ + 0.00000, 0.01192, 0.02020, 0.03035, 0.04257, 0.05799, 0.07771, + 0.10518, 0.18379, 0.32014, 0.70766, 0.98480, 1.13033, 1.21396, + 1.30594, 1.38958, 1.44641, 1.49328, 1.52155, 1.54222, 1.55927, + 1.58644, 1.60863, 1.69031, 1.75294, 1.80464, 1.88146, 1.93908, + 1.97951, 2.00631, 2.02309, 2.02693}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end M600_50A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M700_50A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M700_50A.mo new file mode 100644 index 0000000000..6718ab70ed --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M700_50A.mo @@ -0,0 +1,67 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record M700_50A "M700-50A @ 50Hz" + extends BaseData( + Type ="M700-50A", + vRef = 7.00, + BRef = 1.50000, + fRef = 50.00, + rhoEl = 3.11e-7, + lambda= 31.70, + dens = 7800.00, + mu_ri = 395.25, + k0 = 23, + Hpar = 13185.51, + Hsat = 164989.8, + Jsat = 2.08224, + hH1 = 5000.00, + hH2 = 20000.00, + N = 33, + smooth= 0.005, + c3={ + 2.25292e-07, 2.17369e-08, 2.69107e-08, 4.53339e-08, 7.62918e-08, + 4.10301e-09, 6.17063e-07, 2.12893e-06, 4.09689e-06, 2.85051e-06, + -5.62987e-06,-2.68036e-07, 1.22849e-06, 3.02997e-07, 1.30077e-07, + 1.50981e-08, 2.75726e-09, 3.90964e-10, 8.10450e-11, 3.84346e-11, + 1.19977e-11, 7.73065e-12, 2.65775e-12, 4.91951e-13, 2.67480e-14, + 3.89445e-14, 1.08901e-14, 6.35911e-15, 2.70478e-15, 3.83695e-15, + 5.17925e-15, 2.38654e-14}, + c2={ + 0.00000e+00, 6.77061e-06, 7.42609e-06, 8.22951e-06, 9.59068e-06, + 1.18803e-05, 1.20035e-05, 3.05037e-05, 9.44037e-05, 2.17652e-04, + 3.02385e-04,-1.19829e-04,-1.40004e-04,-4.82916e-05,-2.55269e-05, + -6.28255e-06,-1.64018e-06,-4.12656e-07,-1.18785e-07,-5.80880e-08, + -2.94735e-08,-2.04431e-08,-8.72660e-09,-4.78915e-09,-1.07761e-09, + -8.78016e-10,-5.85552e-10,-4.23213e-10,-3.36178e-10,-2.92382e-10, + -2.54111e-10,-1.73284e-10}, + c1={ + 4.95428e-04, 5.63253e-04, 7.05954e-04, 8.61753e-04, 1.04011e-03, + 1.25490e-03, 1.49380e-03, 1.91861e-03, 3.16831e-03, 6.29754e-03, + 1.14503e-02, 1.60139e-02, 9.49487e-03, 4.80918e-03, 2.96048e-03, + 1.39179e-03, 5.79763e-04, 2.75122e-04, 1.41968e-04, 9.78131e-05, + 7.60832e-05, 6.35595e-05, 4.88231e-05, 4.21486e-05, 2.73946e-05, + 2.25303e-05, 1.88666e-05, 1.38540e-05, 1.03895e-05, 6.99695e-06, + 5.17997e-06, 2.95669e-06}, + c0={ + 0.00000e+00, 5.18946e-03, 1.15572e-02, 1.93446e-02, 2.88392e-02, + 4.02806e-02, 5.40259e-02, 7.07692e-02, 9.51506e-02, 1.40546e-01, + 2.27086e-01, 6.14343e-01, 9.36459e-01, 1.10497e+00, 1.19988e+00, + 1.29940e+00, 1.39231e+00, 1.45123e+00, 1.50041e+00, 1.52971e+00, + 1.55099e+00, 1.56842e+00, 1.59630e+00, 1.61861e+00, 1.70214e+00, + 1.76402e+00, 1.81553e+00, 1.89616e+00, 1.95116e+00, 1.99787e+00, + 2.01804e+00, 2.03884e+00}, + HD={ 0.00, 10.02, 20.07, 30.02, 40.03, 50.03, 60.04, + 70.03, 80.03, 90.06, 99.97, 124.97, 150.06, 174.94, + 199.99, 249.30, 351.80, 500.20, 750.75, 1000.39, 1248.56, + 1499.45, 2004.65, 2498.48, 5013.32, 7500.67, 10003.92, 14972.93, + 19535.15, 24932.54, 28257.33, 33459.28, 35879.58}, + JD={ + 0.00000, 0.00468, 0.01129, 0.01910, 0.02861, 0.03993, 0.05449, + 0.07231, 0.09723, 0.13879, 0.21669, 0.62048, 0.93798, 1.10360, + 1.19941, 1.29899, 1.39202, 1.45096, 1.50014, 1.52944, 1.55072, + 1.56815, 1.59604, 1.61834, 1.70187, 1.76376, 1.81526, 1.89589, + 1.95089, 1.99760, 2.01777, 2.03857, 2.04505}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end M700_50A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M800_50A.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M800_50A.mo new file mode 100644 index 0000000000..8972f05b7e --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/M800_50A.mo @@ -0,0 +1,67 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic.SSEE; +record M800_50A "M800-50A @ 50Hz" + extends BaseData( + Type ="M800-50A", + vRef = 8.00, + BRef = 1.50000, + fRef = 50.00, + rhoEl = 2.82e-7, + lambda= 37.10, + dens = 7800.00, + mu_ri = 411.68, + k0 = 23, + Hpar = 13353.77, + Hsat = 166704.9, + Jsat = 2.09350, + hH1 = 5000.00, + hH2 = 20000.00, + N = 33, + smooth= 0.005, + c3={ + 1.90315e-07, 2.08524e-08,-2.04512e-08, 2.98284e-08, 1.88974e-08, + 1.10009e-08, 7.91359e-08, 1.94741e-07, 1.94884e-06, 3.76409e-06, + -6.04043e-07,-3.77056e-06, 3.40141e-07, 9.52723e-07, 1.74006e-07, + 2.65371e-08, 2.85748e-09, 5.81237e-10, 7.30224e-11, 4.76474e-11, + 1.35706e-11, 7.91860e-12, 3.29524e-12, 4.93526e-13, 2.86204e-14, + 4.60034e-14, 9.66755e-15, 6.83894e-15, 1.76070e-15, 4.65897e-15, + -1.60819e-15, 3.35981e-14}, + c2={ + 0.00000e+00, 5.74283e-06, 6.36652e-06, 5.75497e-06, 6.65160e-06, + 7.21746e-06, 7.54802e-06, 9.93005e-06, 1.57686e-05, 7.40974e-05, + 1.88039e-04, 1.42163e-04,-1.34057e-04,-1.09278e-04,-3.58149e-05, + -9.81053e-06,-1.84448e-06,-5.57140e-07,-1.22468e-07,-6.74554e-08, + -3.17383e-08,-2.16443e-08,-9.75633e-09,-4.79581e-09,-1.10469e-09, + -8.91893e-10,-5.45869e-10,-4.02414e-10,-3.02611e-10,-2.79251e-10, + -2.19757e-10,-2.37081e-10}, + c1={ + 5.16081e-04, 5.73846e-04, 6.94574e-04, 8.15395e-04, 9.39707e-04, + 1.07814e-03, 1.22603e-03, 1.40140e-03, 1.65822e-03, 2.55479e-03, + 5.19982e-03, 1.35594e-02, 1.37573e-02, 7.84854e-03, 4.11922e-03, + 1.84639e-03, 6.80167e-04, 3.19510e-04, 1.50097e-04, 1.02403e-04, + 7.76177e-05, 6.43821e-05, 4.86685e-05, 4.13664e-05, 2.66563e-05, + 2.17080e-05, 1.81032e-05, 1.34128e-05, 9.98320e-06, 7.40994e-06, + 5.28589e-06, 3.64553e-06}, + c0={ + 0.00000e+00, 5.38466e-03, 1.16973e-02, 1.92328e-02, 2.80107e-02, + 3.80715e-02, 4.96058e-02, 6.27469e-02, 7.79382e-02, 9.79865e-02, + 1.35176e-01, 3.77537e-01, 7.38511e-01, 9.98399e-01, 1.14411e+00, + 1.28195e+00, 1.39506e+00, 1.46528e+00, 1.51931e+00, 1.55044e+00, + 1.57256e+00, 1.59006e+00, 1.61785e+00, 1.64023e+00, 1.72120e+00, + 1.78091e+00, 1.83046e+00, 1.90782e+00, 1.96433e+00, 2.00271e+00, + 2.02955e+00, 2.04562e+00}, + HD={ 0.00, 10.06, 20.03, 30.00, 40.02, 50.00, 60.01, + 70.05, 80.04, 90.02, 100.11, 125.42, 149.84, 174.13, + 199.83, 249.64, 349.71, 499.88, 749.16, 1000.28, 1250.15, + 1498.09, 1998.51, 2500.30, 4993.33, 7471.69, 9978.92, 14925.21, + 19789.68, 24212.13, 28468.68, 32059.37, 34411.49}, + JD={ + 0.00000, 0.00496, 0.01142, 0.01907, 0.02777, 0.03783, 0.04946, + 0.06266, 0.07981, 0.09993, 0.12973, 0.37353, 0.74319, 0.99890, + 1.14296, 1.28154, 1.39480, 1.46505, 1.51909, 1.55021, 1.57233, + 1.58983, 1.61762, 1.64000, 1.72097, 1.78069, 1.83023, 1.90759, + 1.96410, 2.00248, 2.02932, 2.04540, 2.05310}); + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false))); +end M800_50A; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/package.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/package.mo new file mode 100644 index 0000000000..9d2f286803 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/package.mo @@ -0,0 +1,60 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic; +package SSEE "Smoothing Splines with Exponential Extrapolation" + extends Modelica.Icons.MaterialPropertiesPackage; + import Modelica.Units.SI; + + annotation (preferredView="info", Documentation(info=" +

The parameter records contain the following data:

+

Common parameters:

+
    +
  • specific losses vRef
  • +
  • at specified flux density BRef
  • +
  • and frequency fRef
  • +
  • electric resistivity rhoEl
  • +
  • thermal conductivity lambda
  • +
  • density dens
  • +
  • initial relative permeability mu_ri
  • +
+

Parameters for Exponential Extrapolation: +J(H) = JD[k0] + (Jsat - JD[k0])*(1 - exp(-(H - HD[k0])/Hpar))

+
    +
  • Index in raw data where exponential extrapolation starts k0
  • +
  • Parameter in exponential function Hpar
  • +
  • Field strength where saturation is nearly reached Hsat
  • +
  • Saturation polarization Jsat
  • +
+

Homotopy borders for mixing Smoothing Splines with Exponential Extrapolation:

+
    +
  • Field strength where mixing starts hH1
  • +
  • Field strength where mixing ends hH2
  • +
+

For H<hH1 pure spline interpolation is used. + For H>hH2 pure exponential extrapolation is used. + In the region between both are mixed, linearly dependent on H.

+

Number of raw data nodes = 1 + number of spline coefficients N. + The smoothing parameter used for calculation of splines is documented.

+

Parameters for spline interpolation: +J(H) = c0[k] + c1[k]*(H - HD[k]) + c2[k]*(H - HD[k])^2 + c3[k]*(H - HD[k])^3

+
    +
  • coefficients for 3rd power c3
  • +
  • coefficients for 2nd power c2
  • +
  • coefficients for 1st power c1
  • +
  • constant coefficients c0
  • +
+

Raw data nodes:

+
    +
  • field strength array HD
  • +
  • polarization array JD
  • +
+

+Measured data were provided by voestalpine. +Many thanks to that company for allowing us to use this data! +

+

Note:

+
    +
  • The origin (0, 0) has to be included as first node in the arrays.
  • +
  • The arrays have to be specified in ascending order.
  • +
  • The arrays are only specified for positive field strength; it is assumed that the characteristic is point-symmetric to the origin.
  • +
+")); +end SSEE; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/package.order b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/package.order new file mode 100644 index 0000000000..6286301987 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/SSEE/package.order @@ -0,0 +1,17 @@ +Functions +BaseData +CastIron +HP210_35A +HP235_35A +HP250_35A +HP270_35A +M270_50A +M310_50A +M330_50A +M350_50A +M400_50A +M470_50A +M530_50A +M600_50A +M700_50A +M800_50A diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/app_mu_r.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/app_mu_r.mo new file mode 100644 index 0000000000..545f7efee1 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/app_mu_r.mo @@ -0,0 +1,33 @@ +within Modelica.Magnetic.FluxTubes.Material.SoftMagnetic; +function app_mu_r + "Approximation of relative permeability mu_r as a function of flux density B for soft magnetic materials" + extends Modelica.Icons.Function; + input SI.MagneticFluxDensity B + "Flux density in ferromagnetic flux tube element"; + input BaseData material "Material specific parameter set"; + output SI.RelativePermeability mu_r= + 1 + (material.mu_i - 1 + material.c_a*B_N)/(1 + material.c_b*B_N + B_N^material.n) + "Relative magnetic permeability of ferromagnetic flux tube element"; +protected + Real B_N=abs(B/material.B_myMax) + "Flux density B normalized to flux density at maximum relative permeability B_myMax"; + annotation (Inline=true, + Documentation(info=" +

+The relative permeability mu_r as a function of flux density B for all soft magnetic materials currently included in this library is approximated with the following function [Ro00]: +

+ +
+\"Equation +
+ +

+Two of the five parameters of this equation have a physical meaning, namely the initial relative permeability mu_i at B=0 and the magnetic flux density at maximum permeability B_myMax. B_N is the flux density normalized to the latter parameter. +

+

Note:

+

+This function should be preferred over mu_rApprox +since it can be inlined. +

+")); +end app_mu_r; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/mu_rApprox.mo b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/mu_rApprox.mo index a225e9c33b..6702c6bf2e 100644 --- a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/mu_rApprox.mo +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/mu_rApprox.mo @@ -36,6 +36,12 @@ The relative permeability mu_r as a function of flux density B for all soft magn

-Two of the five parameters of this equation have a physical meaning, namely the initial relative permeability mu_i at B=0 and the magnetic flux density at maximum permeability B_myMax. B_N is the flux density normalized to latter parameter.

+Two of the five parameters of this equation have a physical meaning, namely the initial relative permeability mu_i at B=0 and the magnetic flux density at maximum permeability B_myMax. B_N is the flux density normalized to the latter parameter. +

+

Note:

+

+app_mu_r should be preferred +since it can be inlined. +

")); end mu_rApprox; diff --git a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/package.order b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/package.order index 86919f923a..f476e7284b 100644 --- a/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/package.order +++ b/Modelica/Magnetic/FluxTubes/Material/SoftMagnetic/package.order @@ -1,3 +1,4 @@ +MaterialSettings BaseData Steel ElectricSheet @@ -5,3 +6,5 @@ PureIron CobaltIron NickelIron mu_rApprox +app_mu_r +SSEE diff --git a/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/Cuboid.mo b/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/Cuboid.mo index ecceabbac4..97576d404c 100644 --- a/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/Cuboid.mo +++ b/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/Cuboid.mo @@ -1,22 +1,22 @@ within Modelica.Magnetic.FluxTubes.Shapes.FixedShape; model Cuboid "Flux tube with rectangular cross-section; fixed shape; linear or non-linear material characteristics" - + extends FluxTubes.Icons.Cuboid; extends BaseClasses.FixedShape; - extends Modelica.Magnetic.FluxTubes.Icons.Cuboid; - parameter SI.Length l=0.01 "Length in direction of flux" annotation ( - Dialog(group="Fixed geometry", groupImage= + parameter Modelica.Units.SI.Length l=0.01 "Length in direction of flux" + annotation (Dialog(group="Fixed geometry", groupImage= "modelica://Modelica/Resources/Images/Magnetic/FluxTubes/Shapes/CuboidParallelFlux.png")); - parameter SI.Length a=0.01 "Width of rectangular cross-section" + parameter Modelica.Units.SI.Length a=0.01 + "Width of rectangular cross-section" annotation (Dialog(group="Fixed geometry")); - parameter SI.Length b=0.01 "Height of rectangular cross-section" + parameter Modelica.Units.SI.Length b=0.01 + "Height of rectangular cross-section" annotation (Dialog(group="Fixed geometry")); equation A = a*b; G_m = mu_0*mu_r*A/l; - annotation (Documentation(info="

Please refer to the enclosing sub-package FixedShape for a description of all elements of this package and to [Ro41] for derivation and/or coefficients of the equation for permeance G_m. diff --git a/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/GenericFluxTube.mo b/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/GenericFluxTube.mo index 64966d2eeb..d3b036799f 100644 --- a/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/GenericFluxTube.mo +++ b/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/GenericFluxTube.mo @@ -1,19 +1,17 @@ within Modelica.Magnetic.FluxTubes.Shapes.FixedShape; model GenericFluxTube "Flux tube with fixed cross-section and length; linear or non-linear material characteristics" - + extends FluxTubes.Icons.Reluctance; extends BaseClasses.FixedShape; - extends Modelica.Magnetic.FluxTubes.Icons.Reluctance; - parameter SI.Length l=0.01 "Length in direction of flux" - annotation(Dialog(group="Fixed geometry", groupImage= - "modelica://Modelica/Resources/Images/Magnetic/FluxTubes/Shapes/GenericFluxTube.png")); - parameter SI.CrossSection area=0.0001 "Area of cross section" + parameter Modelica.Units.SI.Length l=0.01 "Length in direction of flux" + annotation (Dialog(group="Fixed geometry", groupImage= + "modelica://Modelica/Resources/Images/Magnetic/FluxTubes/Shapes/GenericFluxTube.png")); + parameter Modelica.Units.SI.CrossSection area=0.0001 "Area of cross section" annotation (Dialog(group="Fixed geometry")); equation A = area; G_m = mu_0*mu_r*A/l; - annotation (defaultComponentName="generic", Documentation(info="

Please refer to the enclosing sub-package FixedShape for a description of all elements of this package and to [Ro41] for derivation and/or coefficients of the equation for permeance G_m. diff --git a/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/HollowCylinderAxialFlux.mo b/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/HollowCylinderAxialFlux.mo index fa6388c329..3c5e74826a 100644 --- a/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/HollowCylinderAxialFlux.mo +++ b/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/HollowCylinderAxialFlux.mo @@ -1,24 +1,24 @@ within Modelica.Magnetic.FluxTubes.Shapes.FixedShape; model HollowCylinderAxialFlux "(Hollow) cylinder with axial flux; fixed shape; linear or non-linear material characteristics" - + extends FluxTubes.Icons.HollowCylinderAxialFlux; extends BaseClasses.FixedShape; - extends Modelica.Magnetic.FluxTubes.Icons.HollowCylinderAxialFlux; - parameter SI.Length l=0.01 "Axial length (in direction of flux)" - annotation (Dialog(group="Fixed geometry", groupImage= + parameter Modelica.Units.SI.Length l=0.01 + "Axial length (in direction of flux)" annotation (Dialog(group= + "Fixed geometry", groupImage= "modelica://Modelica/Resources/Images/Magnetic/FluxTubes/Shapes/HollowCylinderAxialFlux.png")); - parameter SI.Radius r_i=0 + parameter Modelica.Units.SI.Radius r_i=0 "Inner radius of hollow cylinder (zero for cylinder)" annotation (Dialog(group="Fixed geometry")); - parameter SI.Radius r_o=0.01 "Outer radius of (hollow) cylinder" + parameter Modelica.Units.SI.Radius r_o=0.01 + "Outer radius of (hollow) cylinder" annotation (Dialog(group="Fixed geometry")); - parameter SI.Angle alpha=2*pi "Central angle" + parameter Modelica.Units.SI.Angle alpha=2*pi "Central angle" annotation (Dialog(group="Fixed geometry")); equation A = (r_o^2 - r_i^2)*alpha/2; G_m = mu_0*mu_r*A/l; - annotation (defaultComponentName="cylinder", Documentation(info="

Please refer to the enclosing sub-package FixedShape for a description of all elements of this package and to [Ro41] for derivation and/or coefficients of the equation for permeance G_m. diff --git a/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/HollowCylinderCircumferentialFlux.mo b/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/HollowCylinderCircumferentialFlux.mo index 6e5127830c..c96166275a 100644 --- a/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/HollowCylinderCircumferentialFlux.mo +++ b/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/HollowCylinderCircumferentialFlux.mo @@ -1,24 +1,23 @@ within Modelica.Magnetic.FluxTubes.Shapes.FixedShape; model HollowCylinderCircumferentialFlux "Hollow cylinder with circumferential flux; fixed shape; linear or non-linear material characteristics" - + extends FluxTubes.Icons.HollowCylinderCircumferentialFlux; extends BaseClasses.FixedShape; - extends Modelica.Magnetic.FluxTubes.Icons.HollowCylinderCircumferentialFlux; + import Modelica.Constants.pi; - parameter SI.Length l=0.02 "Width (orthogonal to flux direction)" - annotation (Dialog(group= + parameter Modelica.Units.SI.Length l=0.02 + "Width (orthogonal to flux direction)" annotation (Dialog(group= "Fixed geometry", groupImage= "modelica://Modelica/Resources/Images/Magnetic/FluxTubes/Shapes/Circumferential.png")); - parameter SI.Radius r_i=0.01 "Inner radius of hollow cylinder" + parameter Modelica.Units.SI.Radius r_i=0.01 "Inner radius of hollow cylinder" annotation (Dialog(group="Fixed geometry")); - parameter SI.Radius r_o=0.02 "Outer radius of hollow cylinder" + parameter Modelica.Units.SI.Radius r_o=0.02 "Outer radius of hollow cylinder" annotation (Dialog(group="Fixed geometry")); - parameter SI.Angle alpha=pi/2 "Angle of cylinder section" + parameter Modelica.Units.SI.Angle alpha=pi/2 "Angle of cylinder section" annotation (Dialog(group="Fixed geometry")); equation A = (r_o - r_i)*l; G_m = mu_0*mu_r*A/((r_o + r_i)/2*alpha); - annotation (defaultComponentName="cylinder", Documentation(info="

Please refer to the enclosing sub-package FixedShape for a description of all elements of this package and to [Ro41] for derivation and/or coefficients of the equation for permeance G_m. diff --git a/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/HollowCylinderRadialFlux.mo b/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/HollowCylinderRadialFlux.mo index 2334f537eb..b6b1f731bf 100644 --- a/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/HollowCylinderRadialFlux.mo +++ b/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/HollowCylinderRadialFlux.mo @@ -1,25 +1,22 @@ within Modelica.Magnetic.FluxTubes.Shapes.FixedShape; model HollowCylinderRadialFlux "Hollow cylinder with radial flux; fixed shape; linear or non-linear material characteristics" - + extends FluxTubes.Icons.HollowCylinderRadialFlux; extends BaseClasses.FixedShape; - extends Modelica.Magnetic.FluxTubes.Icons.HollowCylinderRadialFlux; - - parameter SI.Length l=0.01 "Width (orthogonal to flux direction)" - annotation (Dialog(group= + // area at arithmetic mean radius for calculation of average flux density + parameter Modelica.Units.SI.Length l=0.01 + "Width (orthogonal to flux direction)" annotation (Dialog(group= "Fixed geometry", groupImage= "modelica://Modelica/Resources/Images/Magnetic/FluxTubes/Shapes/HollowCylinderRadialFlux.png")); - parameter SI.Radius r_i=0.01 "Inner radius of hollow cylinder" + parameter Modelica.Units.SI.Radius r_i=0.01 "Inner radius of hollow cylinder" annotation (Dialog(group="Fixed geometry")); - parameter SI.Radius r_o=0.02 "Outer radius of hollow cylinder" + parameter Modelica.Units.SI.Radius r_o=0.02 "Outer radius of hollow cylinder" annotation (Dialog(group="Fixed geometry")); - parameter SI.Angle alpha=2*pi "Central angle" + parameter Modelica.Units.SI.Angle alpha=2*pi "Central angle" annotation (Dialog(group="Fixed geometry")); equation A = l*alpha*(r_o + r_i)/2; - // Area at arithmetic mean radius for calculation of average flux density G_m = mu_0*mu_r*alpha*l/Modelica.Math.log(r_o/r_i); - annotation (defaultComponentName="cylinder", Documentation(info="

Please refer to the enclosing sub-package FixedShape for a description of all elements of this package and to [Ro41] for derivation and/or coefficients of the equation for permeance G_m. diff --git a/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/Toroid.mo b/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/Toroid.mo index 8a26a00be3..1937e63378 100644 --- a/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/Toroid.mo +++ b/Modelica/Magnetic/FluxTubes/Shapes/FixedShape/Toroid.mo @@ -1,21 +1,20 @@ within Modelica.Magnetic.FluxTubes.Shapes.FixedShape; model Toroid "Toroid with circular cross section; fixed shape; linear or non-linear material characteristics" - + extends FluxTubes.Icons.Toroid; extends BaseClasses.FixedShape; - extends Modelica.Magnetic.FluxTubes.Icons.Toroid; + import Modelica.Constants.pi; - parameter SI.Radius r=0.1 "Radius of toroid (middle)" + parameter Modelica.Units.SI.Radius r=0.1 "Radius of toroid (middle)" annotation (Dialog(group="Fixed geometry", groupImage= "modelica://Modelica/Resources/Images/Magnetic/FluxTubes/Shapes/Toroid.png")); - parameter SI.Radius d=0.01 "Diameter of cylindrical core" + parameter Modelica.Units.SI.Radius d=0.01 "Diameter of cylindrical core" annotation (Dialog(group="Fixed geometry")); - parameter SI.Angle alpha=pi/2 "Angle of toroid section" + parameter Modelica.Units.SI.Angle alpha=pi/2 "Angle of toroid section" annotation (Dialog(group="Fixed geometry")); equation - A = d^2*pi/4 "Area at arithmetic mean radius for calculation of average flux density"; + A = d^2*pi/4; G_m = mu_0*mu_r*A/(r*alpha); - annotation (defaultComponentName="cylinder", Documentation(info="

Please refer to the enclosing sub-package FixedShape for a description of all elements of this package and to [Ro41] for derivation and/or coefficients of the equation for permeance G_m. diff --git a/Modelica/Magnetic/FluxTubes/Types/MagType.mo b/Modelica/Magnetic/FluxTubes/Types/MagType.mo new file mode 100644 index 0000000000..30d3254668 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Types/MagType.mo @@ -0,0 +1,5 @@ +within Modelica.Magnetic.FluxTubes.Types; +type MagType = enumeration( + Roschke "Approximation formula according to Roschke", + SSEE "Approximation with Smoothing Splines and Exponential Extrapolation") + "Enumeration defining the approximation of the magnetization characteristic"; diff --git a/Modelica/Magnetic/FluxTubes/Types/MagneticFieldStrengthSlope.mo b/Modelica/Magnetic/FluxTubes/Types/MagneticFieldStrengthSlope.mo new file mode 100644 index 0000000000..2cc01f61c8 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Types/MagneticFieldStrengthSlope.mo @@ -0,0 +1,3 @@ +within Modelica.Magnetic.FluxTubes.Types; +type MagneticFieldStrengthSlope=Real(final quantity="MagneticFieldStrengthSlope", + final unit="A/(m.s)"); diff --git a/Modelica/Magnetic/FluxTubes/Types/MagneticFluxDensitySlope.mo b/Modelica/Magnetic/FluxTubes/Types/MagneticFluxDensitySlope.mo new file mode 100644 index 0000000000..d9bd78b50e --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Types/MagneticFluxDensitySlope.mo @@ -0,0 +1,3 @@ +within Modelica.Magnetic.FluxTubes.Types; +type MagneticFluxDensitySlope=Real(final quantity="MagneticFluxDensitySlope", + final unit="V/m2"); diff --git a/Modelica/Magnetic/FluxTubes/Types/SpecificPower.mo b/Modelica/Magnetic/FluxTubes/Types/SpecificPower.mo new file mode 100644 index 0000000000..df5e85d7e0 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Types/SpecificPower.mo @@ -0,0 +1,2 @@ +within Modelica.Magnetic.FluxTubes.Types; +type SpecificPower=Real(final quantity="SpecificPower", final unit="W/kg"); diff --git a/Modelica/Magnetic/FluxTubes/Types/package.mo b/Modelica/Magnetic/FluxTubes/Types/package.mo new file mode 100644 index 0000000000..1e0c766b27 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Types/package.mo @@ -0,0 +1,5 @@ +within Modelica.Magnetic.FluxTubes; +package Types "Types with choices, especially to build menus" + extends Modelica.Icons.TypesPackage; + +end Types; diff --git a/Modelica/Magnetic/FluxTubes/Types/package.order b/Modelica/Magnetic/FluxTubes/Types/package.order new file mode 100644 index 0000000000..1895b93530 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/Types/package.order @@ -0,0 +1,4 @@ +MagType +SpecificPower +MagneticFieldStrengthSlope +MagneticFluxDensitySlope diff --git a/Modelica/Magnetic/FluxTubes/UsersGuide/Approximation.mo b/Modelica/Magnetic/FluxTubes/UsersGuide/Approximation.mo new file mode 100644 index 0000000000..d9d29ad9d3 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/UsersGuide/Approximation.mo @@ -0,0 +1,57 @@ +within Modelica.Magnetic.FluxTubes.UsersGuide; +model Approximation "Approximation formulae" + extends Modelica.Icons.Information; + annotation (Documentation(info=" +

+In the literature, many functions have been discussed for the approximation of magnetization characteristics: +[Fischer1956] Fischer and Moser
+In the FluxTubes library it is possible to choose between different approximation functions.
+Originally, the formula of [Ro00] Roschke has been implemented: +

+

+            µri - 1 + ca⋅BN
+µr(B) = 1 + ---------------
+            1 + cb⋅BN + BNn
+     |B|
+BN = -----
+     BµMax
+
+

+BµMax is the flux density where the maximum of µr appears.
+µri is the relative permeability at the origin.
+The other parameters ca, cb, n have to be determined to achieve the best fit of given data.
+Note that this formula takes into account the rise of the relative permeability µr to a maximum at BµMax. +

+

+Additionally, an approximation using SSEE [deBoor2001] Smoothing Splines with +[Rao2015] Exponential Extrapolation has been implemented: +

+

+For evaluating cubic splines, the interval k where the desired magnetic field strength H is enclosed has to be searched. +

+

+J(H) = sign(H)⋅(c0k + c1k⋅(|H| - HDk) + c2k⋅(|H| - HDk)2 + c3k⋅(|H| - HDk)3)
+
+

+Exponential Extrapolation is defined by the following formula: +

+

+J(H) = sign(H)⋅(JDk0 + (Jsat - JDk0)⋅(1 - exp(-(|H| - HDk0)/Hpar)))
+
+

+k0 is the index in the array of raw data nodes from which on the exponential extrapolation is fitted. +Hk0≈2000 A/m is a good start. +

+

+In both cases, the derivatives with respect to H and therefore the relative differential permeability µrd can be calculated easily. +

+

+Since extrapolation based on splines often provides only poor results, a soft switch-over from Smoothing Splines to Exponential Extrapolation according to a +linear formula between hH1=5000 A/m and hH2=20000 A/m is used. +

+

+Additionally, it is possible to implement an interpolation based on raw data stored in the data records for SSEE instead of using approximation functions. +Be careful regarding the interpolation method; it could reveal undesired curvature between the nodes. +

+")); +end Approximation; diff --git a/Modelica/Magnetic/FluxTubes/UsersGuide/BasicFormulae.mo b/Modelica/Magnetic/FluxTubes/UsersGuide/BasicFormulae.mo new file mode 100644 index 0000000000..f0a9976e62 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/UsersGuide/BasicFormulae.mo @@ -0,0 +1,105 @@ +within Modelica.Magnetic.FluxTubes.UsersGuide; +model BasicFormulae "Basic relations of properties" + extends Modelica.Icons.Information; + annotation (Documentation(info=" + + + + + + + + + + + + + +
Fig. 1: Passive part of the magnetic circuit: Flux tubeFig. 2: Active part of the magnetic circuit: Electromagnetic converter
+

Note:

+

+The coil shown in Fig. 2 is wound counter-clockwise (positive mathematical direction). +For a coil wound clockwise the number of turns N has to be entered as a negative value.
+There is a left-hand assignment between coil current i and magnetic potential difference Vm.
+The magnetomotive force mmf has the opposite direction to the magnetic potential difference Vm +(and therefore a right-hand assignment), but it is not used in this library. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Magnetic potential difference (in an active part, Fig. 2, i.e. Ampere's law)AVm = N⋅i
Kirchhoff's voltage law of the magnetic circuit∑ Vm = 0∑ VmPassive = -∑ VmActive
Magnetic potential difference (in a passive part, Fig. 1)AVm = H⋅l
Magnetic field strengthA/m H = Vm/l
MagnetizationA/mM = χ⋅H
Susceptibility1χ = µr - 1
Relative permeability1µr = 1 + χ
Magnetic constant(V⋅s)/(A⋅m)µ0 = 1.25663706127⋅10-6 ≈ 4⋅π⋅10-7
PolarizationTJ = µ0⋅χ⋅H
Flux densityTB = J + µ0⋅H = µ0⋅µr⋅H
Magnetic flux (per winding)WbΦ = B⋅A
Magnetic permeanceHGm = 1/Rm = Φ/Vm = µ0⋅µr⋅A/l
Magnetic flux linkage (of the whole coil)Wbψ = N⋅Φ
Induced voltage (Faraday's law)Vv = -dψ/dt
(Self) InductanceHL = N2⋅µ0⋅µr⋅A/l
+")); +end BasicFormulae; diff --git a/Modelica/Magnetic/FluxTubes/UsersGuide/Contact.mo b/Modelica/Magnetic/FluxTubes/UsersGuide/Contact.mo index ac3ffb7e79..615cbfa335 100644 --- a/Modelica/Magnetic/FluxTubes/UsersGuide/Contact.mo +++ b/Modelica/Magnetic/FluxTubes/UsersGuide/Contact.mo @@ -23,6 +23,11 @@ class Contact "Contact" Fax: +49 - 351 - 463 37183
email: Johannes.Ziske@tu-dresden.de

+

+ Prof. Anton Haumer (retired)
+ Technical University of Applied Sciences OTH Regensburg, Germany
+ email: Anton.Haumer@oth-regensburg.de +

Acknowledgements

@@ -36,6 +41,9 @@ class Contact "Contact" JTI-CS-2011-1-SGO-02-026; MOMOLIB - Modelica Model Library Development for Media, Magnetic Systems and Wavelets. The partial financial support by the European Union for this development is highly appreciated. +
  • The magnetization characteristics of the soft magnetic materials included in the + sublibrary with material approximated with Smoothing Splines and Exponential Extrapolation + were provided by voestalpine. The support is highly appreciated!
  • ")); end Contact; diff --git a/Modelica/Magnetic/FluxTubes/UsersGuide/Literature.mo b/Modelica/Magnetic/FluxTubes/UsersGuide/Literature.mo index aa9f8e9a9c..16d5793949 100644 --- a/Modelica/Magnetic/FluxTubes/UsersGuide/Literature.mo +++ b/Modelica/Magnetic/FluxTubes/UsersGuide/Literature.mo @@ -60,6 +60,38 @@ class Literature "Literature"
    +
  • Approximation formulae of magnetization characteristics (besides [Ro00]) are described in: + +
    + + + + + + + + + + + + + + + + + + + +
    [Fischer1956] J. Fischer and H. Moser: + Die Nachbildung von Magnetisierungskurven durch einfache algebraische und transzendente Funktionen, + etz Archiv 42 (1956), pp. 286-299 (in German).
    [Macfadyen1973] W. Macfadyen, W. Woods, R. Simpson and R. Slater: + Representation of magnetization curves by exponential series, + Proceedings of the Institution of Electrical Engineers Vol. 120 (1973), pp. 902-904.
    [deBoor2001] Carl de Boor: A Practical Guide to Splines, + Applied Mathematical Sciences Volume 27. Editors: J.E. Marsden and L. Sirovich. Springer 2001, ISBN 0-387-95366-3.
    [Rao2015] Dantam K. Rao and Vladimir Kuptsov: + Effective Use of Magnetization Data in the Design of Electric Machines With Overfluxed Regions, + IEEE Transactions on Magnetics, Vol. 51, No. 7, July 2015.

    +
  • +
  • Information related to the implemented hysteresis models can be found in:
    diff --git a/Modelica/Magnetic/FluxTubes/UsersGuide/ParameterFit.mo b/Modelica/Magnetic/FluxTubes/UsersGuide/ParameterFit.mo new file mode 100644 index 0000000000..4f87c93188 --- /dev/null +++ b/Modelica/Magnetic/FluxTubes/UsersGuide/ParameterFit.mo @@ -0,0 +1,38 @@ +within Modelica.Magnetic.FluxTubes.UsersGuide; +model ParameterFit "Fitting the parameters" + extends Modelica.Icons.Information; + annotation (Documentation(info=" +

    The workflow of parameter fitting for the approximation based on Smoothing Splines with Exponential Extrapolation is recommended as follows:

    +

    +For smoothing splines routines e.g. in Matlab or +Python are avialable.
    +The idea is to give up perfect hitting the nodes and adding a term smoothing the derivative. +This leads to an optimization problem which is solved by the mentioned routines. The objective function is shown below.
    +p is a smoothing factor to be chosen by the user to achieve the desired result. +

    +
    
    +p⋅∑(JDk - ss(HDk))2 + (1 - p)⋅∫d2ss/dH2⋅dH
    +  k
    +
    +

    +Even if the origin (0, 0) is included in the raw data series, the constant coefficient of the first interval is likely not zero due to the smoothing action. +To ensure that the approximation hits the origin, subtract from the constant coefficients of all intervals the value of the constant coefficient of the first interval, +i.e. shift the complete approximation to hit the origin. +

    +

    +The parameters for exponential extrapolation Jsat and Hpar +can be determined by minimizing the following objective function: +

    +
    
    +∑(JDk - ee(HDk))2
    +k≥k0
    +
    +

    +Functions which can be called from Octave or Matlab are provided in the subdirectory +Approximation of magnetic characteristics +together with the used raw data RD.ods in OpenDocument format as well as the +BaseData Modelica record. +Further information about this preprocssing tool can be found in the enclosed README.md. +

    +")); +end ParameterFit; diff --git a/Modelica/Magnetic/FluxTubes/UsersGuide/ReleaseNotes.mo b/Modelica/Magnetic/FluxTubes/UsersGuide/ReleaseNotes.mo index c667cb7ca0..c62b91f36b 100644 --- a/Modelica/Magnetic/FluxTubes/UsersGuide/ReleaseNotes.mo +++ b/Modelica/Magnetic/FluxTubes/UsersGuide/ReleaseNotes.mo @@ -3,6 +3,14 @@ class ReleaseNotes "Release Notes" extends Modelica.Icons.ReleaseNotes; annotation (Documentation(info=" +
    Version 4.2.0, 2026-08-01 (Anton Haumer)
    + + +
    Version 3.2.2, 2014-12-05 (Johannes Ziske, Thomas Bödrich)
      diff --git a/Modelica/Magnetic/FluxTubes/UsersGuide/package.order b/Modelica/Magnetic/FluxTubes/UsersGuide/package.order index 25e1f11079..c2815151fb 100644 --- a/Modelica/Magnetic/FluxTubes/UsersGuide/package.order +++ b/Modelica/Magnetic/FluxTubes/UsersGuide/package.order @@ -1,4 +1,7 @@ FluxTubeConcept +BasicFormulae +Approximation +ParameterFit ReluctanceForceCalculation Hysteresis Literature diff --git a/Modelica/Magnetic/FluxTubes/package.order b/Modelica/Magnetic/FluxTubes/package.order index d7694b57e1..a672e25663 100644 --- a/Modelica/Magnetic/FluxTubes/package.order +++ b/Modelica/Magnetic/FluxTubes/package.order @@ -9,3 +9,4 @@ Interfaces BaseClasses Icons Utilities +Types diff --git a/Modelica/Resources/Reference/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/CompareCharacteristics/comparisonSignals.txt b/Modelica/Resources/Reference/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/CompareCharacteristics/comparisonSignals.txt new file mode 100644 index 0000000000..20c9ce99a8 --- /dev/null +++ b/Modelica/Resources/Reference/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/CompareCharacteristics/comparisonSignals.txt @@ -0,0 +1,9 @@ +time +Jraw +J +mu_r +mu_rd +v +v_Alt1 +v_Alt2 +v_Alt3 diff --git a/Modelica/Resources/Reference/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/CompareModels/comparisonSignals.txt b/Modelica/Resources/Reference/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/CompareModels/comparisonSignals.txt new file mode 100644 index 0000000000..abcc3c2c40 --- /dev/null +++ b/Modelica/Resources/Reference/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/CompareModels/comparisonSignals.txt @@ -0,0 +1,3 @@ +time +J1 +J2 diff --git a/Modelica/Resources/Reference/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/EIcore/comparisonSignals.txt b/Modelica/Resources/Reference/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/EIcore/comparisonSignals.txt new file mode 100644 index 0000000000..5f4f314ee0 --- /dev/null +++ b/Modelica/Resources/Reference/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/EIcore/comparisonSignals.txt @@ -0,0 +1,3 @@ +time +fluxDensity.y +voltageSensor.v diff --git a/Modelica/Resources/Reference/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/ShowMaterial/comparisonSignals.txt b/Modelica/Resources/Reference/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/ShowMaterial/comparisonSignals.txt new file mode 100644 index 0000000000..e3a6547929 --- /dev/null +++ b/Modelica/Resources/Reference/Modelica/Magnetic/FluxTubes/Examples/BasicExamples/ShowMaterial/comparisonSignals.txt @@ -0,0 +1,4 @@ +time +mu_r +J +J_rD diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/README.md b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/README.md new file mode 100644 index 0000000000..0efa810d11 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/README.md @@ -0,0 +1,27 @@ +# AppMag + +Approximation of Magnetization characteristics +taking into account saturation but neglecting hysteresis + +For a description of the theory see [Approximation of Magnetic Characteristics](docs/ApproximationMagneticCharacteristics.pdf) + +## RawData + +See [Description of RawData](docs/1RawData.md) + +## Usage of routines + +See [Description of Routines](docs/2Routines.md) + +## Results + +See [Description of Results](docs/3Results.md) + +## Usage of results + +See [Description of Modelica examples](docs/4Modelica.md) + +## Acknowledgements + +Raw data sets were provided by [VoestAlpine](https://www.voestalpine.com/isovac/en/Downloads/Datasheets). +Many thanks for that valuable support! diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/SSEE.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/SSEE.m new file mode 100644 index 0000000000..c2efaaf1ee --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/SSEE.m @@ -0,0 +1,127 @@ +function par=SSEE(material, varargin) +% ----------------------------------------------------------------------- +% Purpose: calculate Smoothing Splines + Exponential Extrapolation +% Input : material +% optional fT='txt' or 'xlsx' or 'ods' (fileType) +% p=0.005 smoothing parameter 0= 0 && x <= 1); + addParameter(inP, 'H0', 2000, @(x) isnumeric(x) && x >= 0); + addParameter(inP, 'H1', 5000, @(x) isnumeric(x) && x >= 0); + addParameter(inP, 'H2', 20000, @(x) isnumeric(x) && x >= 0); + addParameter(inP, 'markMax', true, @(x) islogical(x)); + parse(inP, varargin{:}); + fT=inP.Results.fT; + p =inP.Results.p; + H0=inP.Results.H0; + H1=inP.Results.H1; + H2=inP.Results.H2; + markMax=inP.Results.markMax; + disp(material); + dispVal("p =", p ); dispVal("H0=", H0); + dispVal("H1=", H1); dispVal("H2=", H2); +% define constants + mu_0=4e-7*pi; + isOctave=exist("OCTAVE_VERSION","builtin")>0; + if isOctave + pkg load splines; + pkg load io; + end +% read RawData + if strcmp(fT,"xlsx") || strcmp(fT,"ods") + fileName=[rawData 'RD' '.' fT]; + if exist(fileName,'file')~=2 + disp([fileName ' does not exist!']); return; + else + [~, sheets]=xlsfinfo(fileName); + if ismember(material, sheets) + par=read_xls(fileName, material); + else + disp([material 'sheet does not exist!']); return; + end + end + else % "txt" + fileName=[rawData 'RD_' material '.txt']; + if exist(fileName,'file')~=2 + disp([fileName ' does not exist!']); return; + else + par=read_txt(fileName); + end + end + par.material=material; + par.p=p; +% check RawData + if check_RD(par)<0 + disp('Please check rawData'); return; + end +% smoothed spline interpolation + par.pp=csaps(par.HD,par.JD,p); + par.dpp=fnder(par.pp); +% correct all constant coefficients: shift characteristic to hit origin! +% calculate mu_ri and mu_r (of raw data) + if isOctave + dJ=par.pp.coefs(2,4)-par.JD(1); + par.mu_ri=1+par.pp.coefs(2,3)/mu_0; dispVal("mu_ri=", par.mu_ri); + else + dJ=par.pp.coefs(1,4)-par.JD(1); + par.mu_ri=1+par.pp.coefs(1,3)/mu_0; dispVal("mu_ri=", par.mu_ri); + end + par.pp.coefs(:,4)=par.pp.coefs(:,4)-ones(size(par.pp.coefs,1),1)*dJ; + for kp=1:length(par.HD) + par.mu_rD(kp,1) =fun_mu_r(par.JD(kp),par.HD(kp),par.mu_ri); + end + par.mu_rdD=fun_mu_rd(par.HD,par.JD); +% search for grid point near H0 + [~, par.k0]=min(abs(par.HD-H0)); + par.hH1=H1; par.hH2=H2; +% determine optimal exponential extrapolation + obj = @(x)funObjEE(x, par); + x0=[2, 1]; % scaling x=[Jsat, Hpar/10000] + [x,fval]=fminunc(obj, x0); + dispVal("fminunc: fval=",fval); + par.Jsat=x(1); dispVal("Jsat=", par.Jsat); + par.Hpar=x(2)*10000; dispVal("Hpar=", par.Hpar); +% Hsat to approach "near" Jsat (with 1 ppm deviation) + par.Hsat=par.HD(par.k0)+par.Hpar* ... + log((par.Jsat-par.JD(par.k0))/(1e-6*par.Jsat)); +% plot and save result + fig=pltRes(par, false); +% show inflection point of J(H): mu_rd - mu_r = d mu_r/dH * H = 0 + if markMax + fun = @(H)(fnval(par.pp,H)/H-fnval(par.dpp,H)); + par.H_muMax=fzero(fun,[0.1*par.HD(2),par.HD(par.k0)]); + par.J_muMax=appSSEE_J(par, par.H_muMax); + par.B_muMax=mu_0*par.H_muMax+par.J_muMax; + par.mu_rMax=par.B_muMax/(mu_0*par.H_muMax); + disp('Inflection point of J(H) = maximum of mu_r(H):'); + dispVal('H_muMax=',par.H_muMax); + dispVal('B_muMax=',par.B_muMax); + dispVal('mu_rMax=',par.mu_rMax); + figure(fig(2)); plot([0,par.H_muMax],[0,par.J_muMax], 'r-o'); + figure(fig(4)); plot([par.H_muMax,par.H_muMax],[0,par.mu_rMax],'r-o'); + end +% Octave shows additional points at the beginning and at the end! + if isOctave + par.pp=cor_ppOct(par.pp); par.dpp=cor_ppOct(par.dpp); + end + savParSSEE(par); +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/1RawData.md b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/1RawData.md new file mode 100644 index 0000000000..f36eed7718 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/1RawData.md @@ -0,0 +1,40 @@ +# # Description of Raw Data + +Raw data are provided either as text-file *.txt*, open document format *.ods* or Excel *.xlsx*. + +As single text file is named RD_*material*.txt and contains the same information as a single sheet named *material* in one of the two spreadsheet formats. Both spreadsheet formats contain a template sheet that could be used to store new data. + +In order to focus on the parameter determination, the process of importing the raw data into the routines was deliberately kept simple. Therefore it is necessary to follow a specific structure: + +1. \#`1` *necessary to import a text file into Modelica.Tables* + +2. \# `type =`*material* + +3. \# `vRef[W/kg] =`*specific losses* + +4. \# `Bref[T] =`*measured at this peak flux density* + +5. \# `fRef[Hz] =`*measured at this frequency* + +6. \# `rhoEl[Ohm.m] =`*specific electric resistivity* + +7. \# `lambda[W/m.K]=`*specific thermal conductivity* + +8. \# `dens[kg/m3] =`*density of material* + +9. \# `table J [T] vs. H [A/m]`*just a description* + +10. \# `N =`*number of data pairs J H* + +11. `double JH(`*N*`,2)`*necessary to import a text file into Modelica.Tables* + +Lines 2 to 6 are additional parameters not used for the magnetic chracteristic, but they enable a later loss calculation. + +In the spreadsheets, line 8 and 9 are calculated automatically. + +In the text file, count the data pairs and store the number in line 8 and 9. + +Starting in line 10, pairs of measured sata J and H are stored. Bear in mind to include the origin (0,0) as first row. Recommendation: Separate J and H by a tab. +Both arrays J and H have to be strictly increasing. + +The structure of the spreadsheets is designed to be exported as tab-separated text file to get a text file with correct structure. Bear in mind to use the name RD_*material*.txt. diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/2Routines.md b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/2Routines.md new file mode 100644 index 0000000000..37990af0a9 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/2Routines.md @@ -0,0 +1,68 @@ +# Routines + +The routines run both in Matlab and in Octave. +Using Matlab, you need the toolboxes CurveFitting and Optimization. +Using Octave, you need the packages splines and io. + +In future, more routines might be added for different approximation methods. + +To use the routines, copy the routine together with the directories *functions* and *rawData* in your working directory. + +### showRd + +should give an overview over the data set under investigation. + +Usage: `par=showRD(`'*material*'`)` + +*material* refers to the name of the text-file RD_*material*.txt or the name of the sheet *material* in RD.xlsx or RD.ods. + +With an optional parameter 'fT' it is possible to choose the filetype to be used: + +* 'txt' (default) uses the text file. + +* 'ods' uses the open document spreadsheet. + +* 'xlsx' uses the Excel spreadsheet. + +The function produces 4 figures described separately in the Description of Results. + +## SSEE + +calculates the parameters for **Smoothing Splines** with **Exponential Extrapolation**. + +Usage: `par=SSEE(`'*material*'`)` + +*material* refers to the name of the text-file RD_*material*.txt or the name of the sheet *material* in RD.xlsx or RD.ods. + +With an optional parameter 'fT' it is possible to choose the filetype to be used: + +- 'txt' (default) uses the text file. + +- 'ods' uses the open document spreadsheet. + +- 'xlsx' uses the Excel spreadsheet. + +There are optional parameters to control the parameter calculation and the determination of μrMax: + +| argument | default | limits | description | +| -------- | ------- | ------- | ----------------------------------------------- | +| p | 0.005 | 0<=p<=1 | smoothing parameter | +| H0 | 2000 | 0rMax is marked in figure 2 and 4 | + +Bear in mind that you have to inspect the results and adapt the parameters, +especially p, H0, H1, H2. + +p=1 defines no smooting, p=0 maximum smoothing. + +Optional parameters are specified using `('argument', value)`, e.g. + +`par=SSEE('M330-50A', 'p', 0.01, 'markMax', true);` + +The function produces 4 figures described separately in the [Description of Results](3Results.md). + +The routine's output is a struct par, the structure is explained separately in the [Description of Results](3Results.md). + +Additionally, the routine stores a file named Par_*material*.txt containing the parameters that can be used in a Modelica record (just copy and paste). diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/3Results.md b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/3Results.md new file mode 100644 index 0000000000..43fd34cf2c --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/3Results.md @@ -0,0 +1,43 @@ +## Result: struct par of SSEE + +``` +- material name of material +- HD array of measured field strength +- JD array of measured polarization +- mu_rD relative permeability of raw data +- mu_rdD relative differential permeabiility of raw data +- vRef specific losses +- BRef vRef measured with peak flux density Bref +- fRef vRef measured with frequency fRef +- rhoEl specific electric resistivity +- lambda specific thermal conductivity +- dens density of material +- k0 index of raw data field strength where exponential extrapolation is based +- hH1 field strength where switch-over from smoothed splines to exponential extrapolation starts +- hH2 field strength where switch-over from smoothed splines to exponential extrapolation ends +- mu_ri calculated initial relative permeability +- Jsat calculated saturation polarization +- Hsat calculated field strength to reach Jsat with an error of 1 ppm +- Hpar parameter for exponential extrapolation +- pp struct containing the parameters of the smoothing splines +- dpp struct containing the parameters of the derivatives of the smoothing splines +- H_muMax field strength at maximum permeability +- J_muMax polarization at maximum permeability +- B_muMax flux density at maximum permeability +- mu_rMax maximum relative permeability +``` + +### Figures: + +1. J(H) over the whole measured H-range with logarithmic x-axis. + +2. J(H) over a limited range with linear axes to show the behaviour near the origin. The axis limits can be adapted manually. + +3. μr relative permeability and μrd differential relative permeability over the whole measured H-range with double logarithmic axes. + +4. μr relative permeability and μrd differential relative permeability over a limited range with linear axes to show the behaviour near the origin. The axis limits can be adapted manually. + +### Note: + +μrd differential relative permeability of rawData is calculated with difference quotients and therefore strongly dependent on +accuracy of measurements and distance ΔH of measurements. diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/4Modelica.md b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/4Modelica.md new file mode 100644 index 0000000000..9a6e7dd812 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/4Modelica.md @@ -0,0 +1,31 @@ +# Modelica parameter records + +The file Par_*material*.txt can be transferred by copy and paste into a Modelica parameter record as shown in *ShowCharacteristic.mo*: + +``` +record *material* + // copy and paste goes here + annotation(defaultComponentPrefixes="parameter", + defaultComponentName="material"); +end *material*; +``` + +You can investigate your material using *Examples.ShowSSEE*: + +Within 1 second the magnetic field strength `H` is varied between `Hmin` and `Hmax`. + +The following quantities are calculated: + +- Polarization `J` + +- Flux density `B` + +- Relative permability `m_r` + +- Differential relative permability `m_rd` + +- Magnetic flux `psi` (using parameter wA) + +- Induced voltage `v` + +and can be plotted either with respect to time or to the magnetic field strength `H`. diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/ApproximationMagneticCharacteristics.pdf b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/ApproximationMagneticCharacteristics.pdf new file mode 100644 index 0000000000..6de1a6e40d Binary files /dev/null and b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/docs/ApproximationMagneticCharacteristics.pdf differ diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appEE_J.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appEE_J.m new file mode 100644 index 0000000000..abef7cea92 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appEE_J.m @@ -0,0 +1,11 @@ +function J=appEE_J(par, H) +% ----------------------------------------------------------------------- +% Purpose: Approximation of J with exponential extrapolation +% Input : parameter struct par, magnetic field strength H +% Output : Polarization J +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + J=par.JD(par.k0)+(par.Jsat-par.JD(par.k0))* ... + (1-exp(-(H-par.HD(par.k0))/par.Hpar)); +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appEE_mu_rd.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appEE_mu_rd.m new file mode 100644 index 0000000000..f77e045e45 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appEE_mu_rd.m @@ -0,0 +1,12 @@ +function mu_rd=appEE_mu_rd(par, H) +% ----------------------------------------------------------------------- +% Purpose: Approximation of mu_rd with exponential extrapolation +% Input : parameter struct par, magnetic field strength H +% Output : relative differential permeability mu_rd +% Author : A. Haumer +% Date : 2026-08-15 +% ---------------------------------------------------------------------- + mu_0=4e-7*pi; + mu_rd=1+(par.Jsat-par.JD(par.k0))/(mu_0*par.Hpar)* ... + exp(-(H-par.HD(par.k0))/par.Hpar); +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appSSEE_J.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appSSEE_J.m new file mode 100644 index 0000000000..11b52383a4 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appSSEE_J.m @@ -0,0 +1,17 @@ +function J=appSSEE_J(par, H) +% ----------------------------------------------------------------------- +% Purpose: Approximation of J with smoothing spline + exp. extrapolation +% Input : parameter struct par, magnetic field strength H +% Output : Polarization J +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + if Hpar.hH2 + J=appEE_J(par,H); + else + h=(H-par.hH1)/(par.hH2-par.hH1); + J=(1-h)*appSS_J(par,H) + h*appEE_J(par,H); + end +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appSSEE_mu_rd.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appSSEE_mu_rd.m new file mode 100644 index 0000000000..644fc8ae76 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appSSEE_mu_rd.m @@ -0,0 +1,17 @@ +function mu_rd=appSSEE_mu_rd(par, H) +% ----------------------------------------------------------------------- +% Purpose: Approximation mu_rd with smoothing spline + exp. extrapolation +% Input : parameter struct par, magnetic field strength H +% Output : relative differential permeability mu_rd +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + if Hpar.hH2 + mu_rd=appEE_mu_rd(par,H); + else + h=(H-par.hH1)/(par.hH2-par.hH1); + mu_rd=1+(1-h)*(appSS_mu_rd(par,H)-1)+h*(appEE_mu_rd(par,H)-1); + end +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appSS_J.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appSS_J.m new file mode 100644 index 0000000000..80095f6f64 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appSS_J.m @@ -0,0 +1,18 @@ +function J=appSS_J(par, H) +% ----------------------------------------------------------------------- +% Purpose: Approximation of J with smoothing spline +% Input : parameter struct par, magnetic field strength H +% Output : Polarization J +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + J=fnval(par.pp,H); + % par.pp.breaks =par.HD + % par.pp.coefs(:,4)~=par.JD(1:end-1) (smoothing splines) + % k=find(par.HD(1:end-1)<=H & par.HD(2:end)>H, 1); + % J=par.pp.coefs(k,4)+ ... + % par.pp.coefs(k,3)*(H-par.HD(k))+ ... + % par.pp.coefs(k,2)*(H-par.HD(k))^2+ ... + % par.pp.coefs(k,1)*(H-par.HD(k))^3; +end + diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appSS_mu_rd.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appSS_mu_rd.m new file mode 100644 index 0000000000..ef699d4fd1 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/appSS_mu_rd.m @@ -0,0 +1,16 @@ +function mu_rd=appSS_mu_rd(par, H) +% ----------------------------------------------------------------------- +% Purpose: Approximation of mu_rd with smoothing spline +% Input : parameter struct par, magnetic field strength H +% Output : relative differential permeability mu_rd +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + mu_0=4e-7*pi; + mu_rd=1+fnval(par.dpp,H)/mu_0; + % k=find(par.HD(1:end-1)<=H & par.HD(2:end)>H, 1); + % differentiating the cubic polynomial + % mu_rd=1+(par.pp.coefs(k,3)+ ... + % par.pp.coefs(k,2)*2*(H-par.HD(k))+ ... + % par.pp.coefs(k,1)*3*(H-par.HD(k))^2)/mu_0; +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/app_mu_ri.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/app_mu_ri.m new file mode 100644 index 0000000000..009eee535b --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/app_mu_ri.m @@ -0,0 +1,20 @@ +function mu_ri = app_mu_ri(par) +% ----------------------------------------------------------------------- +% Purpose: determine mu_ri using smoothing splines +% Input : parameter struct par +% Output : initial relative permeability mu_ri +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + mu_0=4e-7*pi; + p=0.005; + pp=csaps(par.HD,par.JD,p); + % dpp=fnder(pp); + % mu_ri=1+fnval(dpp,0)/mu_0; +% calculate mu_ri + if exist("OCTAVE_VERSION","builtin")>0 + mu_ri=1+pp.coefs(2,3)/mu_0; + else + mu_ri=1+pp.coefs(1,3)/mu_0; + end +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/check_RD.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/check_RD.m new file mode 100644 index 0000000000..718c0c2e85 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/check_RD.m @@ -0,0 +1,34 @@ +function result=check_RD(par) +% ----------------------------------------------------------------------- +% Purpose: Check RawData +% Input : parameter struct par +% Output : result (<0 means erroneous) +% Author : A. Haumer +% Date : 2026-10-28 +% ----------------------------------------------------------------------- + result=0; + if par.HD(1)~=0 + disp('rawData J(H) has to start with (0,0)'); + result=-1; return; + end + if par.JD(1)~=0 + disp('rawData J(H) has to start with (0,0)'); + result=-2; return; + end + N=length(par.HD); + if N>128 + disp(['Note: too high number of nodes increases the risk of noisy' ... + 'derivative and increases the number of spline intervals']); + for k=1:N-1 + if(par.HD(k)>=par.HD(k+1)) + dispVal('rawData H not strictly increasing: k=', k); + result=-3; return; + end + end + for k=1:N-1 + if(par.JD(k)>=par.JD(k+1)) + dispVal('rawData J not strictly increasing: k=', k); + result=-4; return; + end + end +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/cor_ppOct.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/cor_ppOct.m new file mode 100644 index 0000000000..e3b5696aa1 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/cor_ppOct.m @@ -0,0 +1,15 @@ +function pp=cor_ppOct(ppI) +% ----------------------------------------------------------------------- +% Purpose: correct Octave's pp-struct +% Input : struct ppI (Octave's version) +% Output : struct pp (deleted first and last entry) +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + pp.form =ppI.form; + pp.breaks=ppI.breaks(1,2:size(ppI.breaks,2)-1); + pp.coefs =ppI.coefs(2:size(ppI.coefs,1)-1,:); + pp.pieces=ppI.pieces-2; + pp.order =ppI.order; + pp.dim =ppI.dim; +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/dispVal.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/dispVal.m new file mode 100644 index 0000000000..a40bb44e01 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/dispVal.m @@ -0,0 +1,4 @@ +function dispVal(s, v) +% displays string s and value v + disp(strcat(s, mat2str(v))); +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/funObjEE.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/funObjEE.m new file mode 100644 index 0000000000..c3bc15ef7d --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/funObjEE.m @@ -0,0 +1,15 @@ +function y=funObjEE(x, par) +% ----------------------------------------------------------------------- +% Purpose: objective function for optimization of exp.extrapolation +% Input : Vector of optimization parameters x, struct par +% Output : objective function value to be minimized +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + par.Jsat=x(1); par.Hpar=x(2)*10000; % scaling + y=0; + for kd = par.k0:length(par.HD) + JApp=appEE_J(par, par.HD(kd)); + y = y + (JApp/par.JD(kd)-1)^2; + end +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/fun_mu_r.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/fun_mu_r.m new file mode 100644 index 0000000000..20c6bc9be0 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/fun_mu_r.m @@ -0,0 +1,17 @@ +function mu_r=fun_mu_r(J, H, mu_ri) +% ----------------------------------------------------------------------- +% Purpose: Calculate mu_r from J and H +% Input : polarization J, magnetic field strength H, +% initial relative permeability mu_ri +% Output : relative permeability mu_r +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + mu_0=4e-7*pi; + Heps=1e-6; % smallest field strength to protect against division by 0 + if H<=Heps + mu_r=mu_ri; + else + mu_r=1+J/(mu_0*H); + end +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/fun_mu_rd.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/fun_mu_rd.m new file mode 100644 index 0000000000..9867a4d7a4 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/fun_mu_rd.m @@ -0,0 +1,21 @@ +function mu_rd=fun_mu_rd(HD, JD) +% ----------------------------------------------------------------------- +% Purpose: Calculate mu_rd from J and H +% Input : polarization J and magnetic field strength H +% Beware : numerical differentiation! +% Output : relative differential permeability mu_rd +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + mu_0=4e-7*pi; + N=length(HD); +% first interval: forward difference + mu_rd(1)=1+(JD(2)-JD(1))/(HD(2)-HD(1))/mu_0; +% inner intervals: average between forward and backward difference + for k=2:N-1 + mu_rd(k)=1+((JD(k+1)-JD(k))/(HD(k+1)-HD(k))+ ... + (JD(k)-JD(k-1))/(HD(k)-HD(k-1)))/(2*mu_0); + end +% last interval: backward difference + mu_rd(N)=1+(JD(N)-JD(N-1))/(HD(N)-HD(N-1))/mu_0; +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/pltRes.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/pltRes.m new file mode 100644 index 0000000000..bdcd8255ad --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/pltRes.m @@ -0,0 +1,77 @@ +function fig=pltRes(par,RD) +% ----------------------------------------------------------------------- +% Purpose: Plot results +% Input : parameter struct par, indicator whether rawData alone or not +% Output : handles to figures +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + ND=length(par.HD); + if ~RD + Hmin=min(min(par.HD),0); + Hmax=max(max(par.HD),50000); + Np=10000; % number of points + H=linspace(Hmin,Hmax,Np); +% pre-allocate result vectors to increase speed + J=zeros(Np,1); mu_r=zeros(Np,1); mu_rd=zeros(Np,1); + for kp=1:Np + J(kp)=appSSEE_J(par, H(kp)); + mu_rd(kp)=appSSEE_mu_rd(par, H(kp)); + mu_r(kp) =fun_mu_r(J(kp),H(kp),par.mu_ri); + end + end +% J(H) + fig(1)=figure; + if RD + semilogx(par.HD(2:ND), par.JD(2:ND), ':ob'); hold on; + else + semilogx(H(2:Np), J(2:Np), '-b'); hold on; + semilogx(par.HD(2:ND), par.JD(2:ND), 'ob'); + legend('J(H)','measured','Location','southeast'); + end + grid on; title(par.material); + xlabel("H [A/m]"); ylabel("J [T]"); + fig(2)=figure; + if RD + plot(par.HD, par.JD, ':ob'); hold on; + else + plot(H, J, '-b'); hold on; + plot(par.HD, par.JD, 'ob'); + legend('J(H)','measured','Location','southeast','AutoUpdate','off'); + end + grid on; title(par.material); + xlabel("H [A/m]"); ylabel("J [T]"); + xlim([0 1000]); +% mu_r(H) and mu_rd(H) + fig(3)=figure; + if RD + loglog(par.HD(2:ND), par.mu_rD(2:ND), ':ob'); hold on; + loglog(par.HD(2:ND), par.mu_rdD(2:ND), ':ok'); + legend('\mu_r(H)','\mu_r_d(H)','Location','northeast'); + else + loglog(H(2:Np), mu_r(2:Np), '-b'); hold on; + loglog(par.HD(2:ND), par.mu_rD(2:ND), 'ob'); + loglog(H(2:Np), mu_rd(2:Np), '--k'); + loglog(par.HD(2:ND), par.mu_rdD(2:ND), 'ok'); + legend('\mu_r(H)','measured','\mu_r_d(H)','measured', ... + 'Location','northeast'); + end + grid on; title(par.material); + xlabel("H [A/m]"); ylabel("\mu_r"); + fig(4)=figure; + if RD + plot(par.HD, par.mu_rD, ':ob');hold on; + plot(par.HD, par.mu_rdD, ':ok'); + legend('\mu_r(H)','\mu_r_d(H)','Location','northeast'); + else + plot(H, mu_r, '-b'); hold on; + plot(par.HD, par.mu_rD, 'ob'); + plot(H, mu_rd, '--k'); + plot(par.HD, par.mu_rdD, 'ok'); + legend('\mu_r(H)','measured','\mu_r_d(H)','measured', ... + 'Location','northeast','AutoUpdate','off'); + end + grid on; title(par.material); + xlabel("H [A/m]"); ylabel("\mu_r"); + xlim([0 500]); +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/read_txt.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/read_txt.m new file mode 100644 index 0000000000..ce5a95a9e8 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/read_txt.m @@ -0,0 +1,28 @@ +function par=read_txt(fileName) +% ----------------------------------------------------------------------- +% Purpose: read raw data from txt-file +% Input : fileName +% Output : struct par +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + firstLine=11; % Line before table starts +% get additional scalar parameters to save them later to parameter file + fID=fopen(fileName); % skip first 2 lines #1 and # type + fgetl(fID); fgetl(fID); + line=fgetl(fID); par.vRef =str2double(line(strfind(line,"=")+1:end)); + line=fgetl(fID); par.BRef =str2double(line(strfind(line,"=")+1:end)); + line=fgetl(fID); par.fRef =str2double(line(strfind(line,"=")+1:end)); + line=fgetl(fID); par.rhoEl =str2double(line(strfind(line,"=")+1:end)); + line=fgetl(fID); par.lambda=str2double(line(strfind(line,"=")+1:end)); + line=fgetl(fID); par.dens =str2double(line(strfind(line,"=")+1:end)); + fclose(fID); +% raw data arrays J and H (ensure that all lines use the same delimiter!) + if exist("OCTAVE_VERSION","builtin")>0 + RD=dlmread(fileName,'\t',firstLine,0); + else + RD=readmatrix(fileName,'NumHeaderLines',firstLine); + end + par.HD=RD(:,2); par.JD=RD(:,1); + dispVal("txt: Lines of raw data=", length(par.HD)); +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/read_xls.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/read_xls.m new file mode 100644 index 0000000000..ca082b6495 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/read_xls.m @@ -0,0 +1,37 @@ +function par=read_xls(fileName, material) +% ----------------------------------------------------------------------- +% Purpose: read raw data from spreadsheet +% Input : material -> -> file with raw data fileName / sheet material +% Output : struct par +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + firstRow=12; % Row where table starts + if exist("OCTAVE_VERSION","builtin")>0 +% get additional scalar parameters to save them later to parameter file + par.vRef =xlsread(fileName,material,'B3:B3'); + par.BRef =xlsread(fileName,material,'B4:B4'); + par.fRef =xlsread(fileName,material,'B5:B5'); + par.rhoEl =xlsread(fileName,material,'B6:B6'); + par.lambda=xlsread(fileName,material,'B7:B7'); + par.dens =xlsread(fileName,material,'B8:B8'); + n=firstRow-1+xlsread(fileName,material,'B10:B10'); +% raw data arrays J and H + RD=xlsread(fileName,material, ... + ['A' mat2str(firstRow) ':B' mat2str(n)]); + else +% get additional scalar parameters to save them later to the parameter file + par.vRef =readmatrix(fileName,'Sheet',material,'Range','B3:B3'); + par.BRef =readmatrix(fileName,'Sheet',material,'Range','B4:B4'); + par.fRef =readmatrix(fileName,'Sheet',material,'Range','B5:B5'); + par.rhoEl =readmatrix(fileName,'Sheet',material,'Range','B6:B6'); + par.lambda=readmatrix(fileName,'Sheet',material,'Range','B7:B7'); + par.dens =readmatrix(fileName,'Sheet',material,'Range','B8:B8'); + n=firstRow-1+readmatrix(fileName,'Sheet',material,'Range','B10:B10'); +% raw data arrays J and H + RD=readmatrix(fileName,'Sheet',material, ... + 'Range',['A' mat2str(firstRow) ':B' mat2str(n)]); + end + par.HD=RD(:,2); par.JD=RD(:,1); + dispVal("ods/xls: Lines of raw data=", length(par.HD)); +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/savParSSEE.m b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/savParSSEE.m new file mode 100644 index 0000000000..faf81f884f --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/functions/savParSSEE.m @@ -0,0 +1,80 @@ +function savParSSEE(par) +% ----------------------------------------------------------------------- +% Purpose: Save parameters to file for copy-paste to Modelica +% Input : parameter struct par +% Output : file "Par_"par.material".txt" +% Author : A. Haumer +% Date : 2026-08-15 +% ----------------------------------------------------------------------- + fileName=['Par_' par.material '.txt']; + fID=fopen(fileName,'w'); + fprintf(fID, ' extends BaseData(\n'); +% common parameters + fprintf(fID, ' Type ="%s",\n', par.material); + fprintf(fID, ' vRef = %9.2f,\n', par.vRef); + fprintf(fID, ' BRef = %9.5f,\n', par.BRef); + fprintf(fID, ' fRef = %9.2f,\n', par.fRef); + fprintf(fID, ' rhoEl = %9.2e,\n', par.rhoEl); + fprintf(fID, ' lambda = %9.2f,\n', par.lambda); + fprintf(fID, ' dens = %9.2f,\n', par.dens); + fprintf(fID, ' mu_ri = %9.2f,\n', par.mu_ri); +% Exponential Extrapolation + fprintf(fID, ' k0 = %1u,\n', par.k0); + fprintf(fID, ' Hpar = %9.2f,\n', par.Hpar); + fprintf(fID, ' Hsat = %9.1f,\n', par.Hsat); + fprintf(fID, ' Jsat = %9.5f,\n', par.Jsat); +% Homotopy + fprintf(fID, ' hH1 = %9.2f,\n', par.hH1); + fprintf(fID, ' hH2 = %9.2f,\n', par.hH2); +% length of raw data = 1 + length of interval coefficients + N=length(par.HD); + fprintf(fID, ' N = %1u,\n', N); + fprintf(fID, ' smooth = %9.3e,\n', par.p); +% Smoothing Spline coefficients + for m=1:4 + fprintf(fID, ' c%1u={\n', 4-m); + kB=1; kE=min(kB+4, N-1); + while kB<=N-1 + fprintf(fID, ' '); + for k=kB:kE + if k==N-1 + fprintf(fID, '%12.5e},',par.pp.coefs(k,m)); + else + fprintf(fID, '%12.5e,' ,par.pp.coefs(k,m)); + end + end + fprintf(fID, '\n'); + kB=kE+1; kE=min(kB+4, N-1); + end + end +% Raw Data + fprintf(fID, ' HD={\n'); + kB=1; kE=min(kB+6, N); + while kB<=N + fprintf(fID, ' '); + for k=kB:kE + if k==N + fprintf(fID, '%9.2f},',par.HD(k)); + else + fprintf(fID, '%9.2f,' ,par.HD(k)); + end + end + fprintf(fID, '\n'); + kB=kE+1; kE=min(kB+6, N); + end + fprintf(fID, ' JD={\n'); + kB=1; kE=min(kB+6, N); + while kB<=N + fprintf(fID, ' '); + for k=kB:kE + if k==N + fprintf(fID, '%9.5f});',par.JD(k)); + else + fprintf(fID, '%9.5f,' ,par.JD(k)); + end + end + fprintf(fID, '\n'); + kB=kE+1; kE=min(kB+6, N); + end + fclose(fID); +end diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD.ods b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD.ods new file mode 100644 index 0000000000..61462f846a Binary files /dev/null and b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD.ods differ diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD.xlsx b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD.xlsx new file mode 100644 index 0000000000..11d98e8a13 Binary files /dev/null and b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD.xlsx differ diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_CastIron.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_CastIron.txt new file mode 100644 index 0000000000..3c16252827 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_CastIron.txt @@ -0,0 +1,33 @@ +#1 +# type = CastIron +# vRef[W/kg] = 25.00 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 7.50E-07 +# lambda [W/m.K] = 50 +# dens[kg/m3] = 7500 +# table J [T] vs. H [A/m] +# N = 22 +double JH(22,2) +0 0 +0.039748673 200 +0.086481513 400 +0.189457592 700 +0.230529385 800 +0.312862081 1000 +0.405815621 1250 +0.453463543 1400 +0.494708581 1550 +0.540533245 1750 +0.585515646 2000 +0.689111928 3000 +0.74948576 4000 +0.799289707 5000 +0.84393637 6000 +0.884487695 7000 +0.938575875 8500 +0.985545435 10000 +1.038701313 12000 +1.082742211 14000 +1.127330324 16500 +1.174510946 20000 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_HP210-35A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_HP210-35A.txt new file mode 100644 index 0000000000..c390043b7e --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_HP210-35A.txt @@ -0,0 +1,44 @@ +#1 +# type = HP210-35A +# vRef[W/kg] = 2.10 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 6.45E-07 +# lambda [W/m.K] = 19 +# dens[kg/m3] = 7600 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.025919331 9.985741149 +0.069523566 20.0032985 +0.157919643 29.99131223 +0.310696336 39.99296148 +0.495575717 49.94688643 +0.667311375 60.05989237 +0.79842699 70.04108835 +0.902997153 79.93251719 +0.9866471 90.06256753 +1.059814219 102.0731825 +1.151955768 125.0831117 +1.211916861 149.9906499 +1.250651704 174.6482037 +1.278529261 199.9420815 +1.315699982 249.9389648 +1.358255118 350.0690866 +1.393774236 499.832478 +1.429885084 749.6123618 +1.454792752 996.9833049 +1.475236766 1248.331273 +1.492921426 1501.156421 +1.522227936 1997.375488 +1.547340887 2498.253356 +1.640184287 4984.689266 +1.706306193 7468.284445 +1.756764285 9939.153144 +1.829046238 15036.56266 +1.865075555 19162.44182 +1.886103056 23153.10214 +1.896727738 26361.99302 +1.904031795 30025.40101 +1.906798259 31916.19224 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_HP235-35A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_HP235-35A.txt new file mode 100644 index 0000000000..8af806b199 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_HP235-35A.txt @@ -0,0 +1,44 @@ +#1 +# type = HP235-35A +# vRef[W/kg] = 2.35 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 5.40E-07 +# lambda [W/m.K] = 20.2 +# dens[kg/m3] = 7600 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.025064219 9.997104077 +0.063395152 19.99420815 +0.132218153 30.01631067 +0.249140658 40.01114216 +0.423387807 49.9832478 +0.614766578 59.96217119 +0.772496038 69.99563664 +0.890595111 79.98933183 +0.97862003 90.24437438 +1.053891291 101.9709161 +1.150831707 124.9240307 +1.213981123 149.9679241 +1.255002282 174.443671 +1.285928146 200.5329538 +1.325385141 250.1434975 +1.370293582 349.5691178 +1.40726722 500.0142848 +1.443663468 749.2146593 +1.46907388 1002.096623 +1.48918285 1250.149341 +1.506507424 1499.79287 +1.535805828 1999.648074 +1.560484741 2495.526253 +1.653632628 4996.506711 +1.72046993 7489.874008 +1.772266247 10001.64925 +1.842281096 14728.62731 +1.887729065 19651.04773 +1.910870605 23980.3233 +1.920445258 26898.32322 +1.928038686 30393.55988 +1.930487318 32018.45859 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_HP250-35A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_HP250-35A.txt new file mode 100644 index 0000000000..ac3a6e46ff --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_HP250-35A.txt @@ -0,0 +1,44 @@ +#1 +# type = HP250-35A +# vRef[W/kg] = 2.50 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 5.20E-07 +# lambda [W/m.K] = 21.8 +# dens[kg/m3] = 7600 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.021840209 10.00733071 +0.054138898 20.03056952 +0.107933793 29.99358482 +0.202184603 40.00659699 +0.340557549 49.99233814 +0.530780606 60.03603022 +0.706451898 70.0638142 +0.850728983 79.95524305 +0.953623072 89.93757532 +1.043443446 101.9254644 +1.152532454 125.1172005 +1.223837925 150.3088119 +1.268572977 174.4663969 +1.301992346 199.9193557 +1.34593371 249.6435287 +1.395389128 349.7509246 +1.435177982 501.0596742 +1.473002267 750.6350253 +1.498517631 1000.619442 +1.518110398 1246.399575 +1.535200594 1499.224724 +1.563612476 2006.011314 +1.586467349 2489.844789 +1.673909443 5001.051882 +1.735933501 7478.51108 +1.785221913 10002.78554 +1.856772505 15017.24568 +1.902663445 19923.758 +1.925015803 23462.17379 +1.940032251 27068.76714 +1.949244242 30186.75459 +1.953351557 32254.80749 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_HP270-35A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_HP270-35A.txt new file mode 100644 index 0000000000..8be9393d24 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_HP270-35A.txt @@ -0,0 +1,44 @@ +#1 +# type = HP270-35A +# vRef[W/kg] = 2.70 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 5.20E-07 +# lambda [W/m.K] = 21.8 +# dens[kg/m3] = 7650 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.015649894 10.01642105 +0.036122851 19.9714823 +0.062888745 29.96631379 +0.108412525 40.02932285 +0.190841552 50.11505776 +0.344069325 60.03262134 +0.524943542 70.00699956 +0.69433111 80.06887233 +0.832268408 90.02847874 +0.934021911 99.93695198 +1.105375605 125.1399263 +1.200867552 150.6837885 +1.25728929 174.4209452 +1.299146381 200.1466142 +1.351680741 250.7570957 +1.40782823 352.9325445 +1.44967472 500.9233191 +1.489137999 748.9305861 +1.515589717 1003.573803 +1.535417692 1249.353936 +1.552338009 1501.497309 +1.580032049 1998.73904 +1.603166542 2497.344321 +1.688609408 4998.32478 +1.751000869 7542.143477 +1.798540346 10018.69364 +1.866138033 14771.80643 +1.909859269 19296.52437 +1.937746817 23584.89341 +1.95356293 27296.0257 +1.961767059 30123.12219 +1.96530149 31775.29193 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M270-50A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M270-50A.txt new file mode 100644 index 0000000000..de8c4e1bec --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M270-50A.txt @@ -0,0 +1,44 @@ +#1 +# type = M270-50A +# vRef[W/kg] = 2.70 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 6.45E-07 +# lambda [W/m.K] = 19 +# dens[kg/m3] = 7600 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.023570577 10.01982993 +0.062340678 20.01920659 +0.127788136 30.03903653 +0.227738832 40.01114216 +0.357149832 49.9196154 +0.507143952 59.97921558 +0.62862539 69.97859224 +0.733808342 79.94956159 +0.818037233 89.9716641 +0.901023798 101.993642 +1.020443495 125.1853781 +1.106852295 150.1497309 +1.166394402 175.4436087 +1.207296898 199.9420815 +1.261999142 250.0525941 +1.319269335 348.750987 +1.363469821 500.0142848 +1.403639293 747.3397762 +1.430867572 1000.505813 +1.451897222 1249.581195 +1.469832826 1500.020129 +1.499677667 1998.73904 +1.52526719 2505.980147 +1.619882504 5003.324468 +1.689546199 7501.236936 +1.745291351 10001.64925 +1.82820321 14980.88431 +1.877589842 19444.24244 +1.907500814 23698.52269 +1.923446964 27696.00077 +1.930562005 30591.27483 +1.933450963 32129.81528 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M310-50A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M310-50A.txt new file mode 100644 index 0000000000..f2b464d88d --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M310-50A.txt @@ -0,0 +1,44 @@ +#1 +# type = M310-50A +# vRef[W/kg] = 3.10 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 5.20E-07 +# lambda [W/m.K] = 21.8 +# dens[kg/m3] = 7650 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.021864494 10.008467 +0.053683663 20.06465831 +0.105799286 30.0117655 +0.191012936 39.94296459 +0.31445631 49.98779297 +0.490554968 60.04171169 +0.63703946 69.96154785 +0.76908278 80.01205769 +0.871375023 89.99438996 +0.948814324 100.0051296 +1.08050202 124.878579 +1.16182277 150.138368 +1.214488988 175.1027209 +1.251563217 199.9193557 +1.30140994 250.0980458 +1.356328681 350.1145383 +1.399640469 500.1051882 +1.44014699 749.7259911 +1.466759489 999.4831491 +1.487399488 1251.172005 +1.504343985 1499.338353 +1.532547258 1998.966298 +1.556212504 2501.889493 +1.64369119 5001.051882 +1.708420 7501.236936 +1.760491047 9989.150027 +1.840273301 14959.29475 +1.893312324 19682.86393 +1.930650707 24700.73294 +1.95070779 29134.54746 +1.95744727 31229.87138 +1.960177697 32384.34487 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M330-50A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M330-50A.txt new file mode 100644 index 0000000000..008df8514b --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M330-50A.txt @@ -0,0 +1,44 @@ +#1 +# type = M330-50A +# vRef[W/kg] = 3.30 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 5.20E-07 +# lambda [W/m.K] = 21.8 +# dens[kg/m3] = 7650 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.018521728 10.02210252 +0.044163003 19.99420815 +0.080006324 29.99131223 +0.13892765 40.01114216 +0.240306413 49.99233814 +0.385071091 60.04171169 +0.54386892 70.10358445 +0.692467661 79.94956159 +0.816350598 90.14210802 +0.926168409 102.0390937 +1.065312565 125.0831117 +1.15571517 150.297449 +1.212448107 174.920914 +1.252219647 199.9420815 +1.304379247 250.393482 +1.360198353 349.7054729 +1.404261736 500.6960605 +1.444885723 749.7828057 +1.471653132 1000.051296 +1.492021848 1249.808453 +1.508866283 1495.588587 +1.537254073 2001.011625 +1.56065496 2500.071424 +1.646998696 4999.688331 +1.711221338 7527.939817 +1.762170982 10000.51296 +1.84126455 14999.06499 +1.893840289 19716.95271 +1.933509449 25059.80147 +1.947462537 27923.25933 +1.963198351 32916.1299 +1.964315897 33466.09562 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M350-50A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M350-50A.txt new file mode 100644 index 0000000000..d434f13258 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M350-50A.txt @@ -0,0 +1,44 @@ +#1 +# type = M350-50A +# vRef[W/kg] = 3.50 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 4.50E-07 +# lambda [W/m.K] = 24 +# dens[kg/m3] = 7650 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.016063598 10.01869364 +0.042334439 20.02147918 +0.083336853 30.00040257 +0.161095781 39.97023562 +0.285307307 50.29686461 +0.430684552 60.22806371 +0.583550094 69.89905175 +0.733390883 80.08023526 +0.85183984 90.11938217 +0.940651542 100.0278554 +1.083980905 125.1626522 +1.166577615 150.2292714 +1.220530992 175.8072224 +1.257160163 200.5329538 +1.305674972 249.9616907 +1.359145332 348.9782455 +1.401936002 501.9232567 +1.441438916 752.3962792 +1.467080286 998.8013734 +1.487174474 1249.013049 +1.503876733 1496.838509 +1.531509398 1994.875644 +1.55527308 2507.343698 +1.640974712 4984.234749 +1.706001151 7487.033276 +1.75864464 9957.333829 +1.840544035 14833.16624 +1.902383051 19982.84523 +1.93655871 24032.59277 +1.961084236 28223.24063 +1.973868234 31593.48508 +1.977324612 32904.76698 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M400-50A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M400-50A.txt new file mode 100644 index 0000000000..e2db270601 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M400-50A.txt @@ -0,0 +1,44 @@ +#1 +# type = M400-50A +# vRef[W/kg] = 4.00 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 4.50E-07 +# lambda [W/m.K] = 24 +# dens[kg/m3] = 7700 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.011735983 10.01073959 +0.02871564 20.01920659 +0.05212217 29.9958574 +0.083788911 40.04295836 +0.137132 50.015064 +0.250064914 60.00080514 +0.39690255 70.04108835 +0.534343489 79.94956159 +0.688371597 90.15347095 +0.819115245 100.0164925 +1.03211935 125.03766 +1.150887842 150.7519661 +1.219260725 174.9890916 +1.266359646 200.1466142 +1.322614194 249.4162702 +1.380065148 349.7963763 +1.422831725 500.1960917 +1.462371194 749.7259911 +1.488222339 1000.164925 +1.508159845 1250.831117 +1.524637295 1501.270051 +1.551793124 1999.420815 +1.574428434 2498.480614 +1.658937369 4994.234126 +1.722450155 7499.532497 +1.773863664 9982.33227 +1.855208661 15038.83524 +1.909179501 19660.13807 +1.945417657 24012.1395 +1.968533009 28095.97584 +1.981224359 31507.12683 +1.984294964 32584.33241 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M470-50A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M470-50A.txt new file mode 100644 index 0000000000..0611d1d69c --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M470-50A.txt @@ -0,0 +1,44 @@ +#1 +# type = M470-50A +# vRef[W/kg] = 4.70 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 3.58E-07 +# lambda [W/m.K] = 28.1 +# dens[kg/m3] = 7700 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.008643225 9.969833049 +0.020590387 20.01466142 +0.036979409 29.97540413 +0.059221384 39.99296148 +0.088551731 50.03778985 +0.144387617 59.99625997 +0.249708403 70.21721373 +0.391891279 79.98933183 +0.536168218 89.53987284 +0.696990701 100.0051296 +0.99416437 125.0149341 +1.13981539 150.0133758 +1.217215253 174.920914 +1.266799276 199.8511781 +1.327360885 250.0071424 +1.389213258 349.9781832 +1.435178288 499.5597677 +1.476837989 750.0668789 +1.503466834 1000.164925 +1.523627742 1250.3766 +1.540150879 1498.997465 +1.566959739 1995.102903 +1.589541552 2501.434975 +1.672478484 5004.233502 +1.734289411 7480.215519 +1.786248452 10009.6033 +1.867276709 14994.51982 +1.921896577 19510.14742 +1.969954647 25125.70645 +1.988938198 28348.23284 +2.004305466 31977.55205 +2.008599501 33277.47101 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M530-50A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M530-50A.txt new file mode 100644 index 0000000000..2e84ab114c --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M530-50A.txt @@ -0,0 +1,44 @@ +#1 +# type = M530-50A +# vRef[W/kg] = 5.30 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 3.11E-07 +# lambda [W/m.K] = 31.7 +# dens[kg/m3] = 7700 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.002294404 10.00164925 +0.005858229 20.03284211 +0.00981716 30.03221877 +0.016548593 40.03386802 +0.033089899 50.01960917 +0.06402522 59.92808241 +0.128195192 69.87632589 +0.255356787 80.01773915 +0.405359787 89.93757532 +0.572945753 100.0051296 +0.90788204 124.8104014 +1.113644645 149.9679241 +1.205707246 175.1027209 +1.26026651 199.714823 +1.327246558 250.4843854 +1.393766307 351.5689931 +1.44059813 499.514316 +1.482508604 749.271474 +1.508873022 1000.278554 +1.528519933 1247.990385 +1.544789654 1499.565611 +1.571371341 2005.784055 +1.592870047 2500.071424 +1.674230435 4996.961228 +1.736214215 7500.100643 +1.78775257 10006.19442 +1.869609134 14995.65611 +1.927262843 19703.3172 +1.967505341 24121.22361 +1.996575628 28575.4914 +2.014168114 32579.78723 +2.018726321 33875.16103 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M600-50A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M600-50A.txt new file mode 100644 index 0000000000..b061daa32f --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M600-50A.txt @@ -0,0 +1,44 @@ +#1 +# type = M600-50A +# vRef[W/kg] = 6.00 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 3.11E-07 +# lambda [W/m.K] = 31.7 +# dens[kg/m3] = 7750 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.00196682 10.00164925 +0.011924477 20.03965987 +0.020203312 30.00494774 +0.030347216 39.94750977 +0.042565106 50.03324468 +0.057994001 60.30874049 +0.077714456 70.04676981 +0.105183521 80.00637623 +0.18378537 89.88076068 +0.320135115 99.93695198 +0.707657102 125.4239995 +0.984800641 149.9111094 +1.130330012 175.1481726 +1.213960571 200.2147918 +1.30594404 250.6207405 +1.389577032 349.5236661 +1.446409318 499.9233814 +1.493276402 750.9759132 +1.52154871 1000.278554 +1.542224958 1248.104014 +1.559270197 1501.38368 +1.586443659 2001.238884 +1.60863484 2499.389648 +1.690314789 4989.234437 +1.752944895 7541.007184 +1.804641273 10098.23414 +1.881461935 14863.84615 +1.939080323 19655.5929 +1.979511686 24193.94635 +2.006306636 28436.86368 +2.02309382 32211.62837 +2.026928063 33297.92429 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M700-50A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M700-50A.txt new file mode 100644 index 0000000000..0c820cdfde --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M700-50A.txt @@ -0,0 +1,44 @@ +#1 +# type = M700-50A +# vRef[W/kg] = 7.00 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 3.11E-07 +# lambda [W/m.K] = 31.7 +# dens[kg/m3] = 7800 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.00467742 10.01755735 +0.011294414 20.06920348 +0.019097607 30.02085584 +0.028607191 40.02932285 +0.039925369 50.03324468 +0.05448873 60.03603022 +0.072305372 70.02972542 +0.097231347 80.03478355 +0.138788609 90.06256753 +0.216691802 99.97104077 +0.620475828 124.9694824 +0.937976552 150.0588275 +1.103596005 174.9436399 +1.199406173 199.9875332 +1.298991412 249.3026409 +1.392021962 351.7962517 +1.450960766 500.1960917 +1.500140059 750.7486546 +1.529439847 1000.392183 +1.550723759 1248.558531 +1.56814677 1499.451982 +1.596035995 2004.647762 +1.618338367 2498.480614 +1.701871261 5013.323845 +1.763755675 7500.668789 +1.815263689 10003.92183 +1.895890233 14972.93026 +1.95089053 19535.14586 +1.997598715 24932.53667 +2.01777108 28257.32941 +2.038569796 33459.27786 +2.045049159 35879.58153 diff --git a/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M800-50A.txt b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M800-50A.txt new file mode 100644 index 0000000000..9b961a6f66 --- /dev/null +++ b/Modelica/Resources/Utilities/Modelica/Magnetic/FluxTubes/Material/Approximation/SSEE/rawData/RD_M800-50A.txt @@ -0,0 +1,44 @@ +#1 +# type = M800-50A +# vRef[W/kg] = 8.00 +# Bref[T] = 1.5 +# fRef[Hz] = 50 +# rhoEl [Ohm.m] = 2.82E-07 +# lambda [W/m.K] = 37.1 +# dens[kg/m3] = 7800 +# table J [T] vs. H [A/m] +# N = 33 +double JH(33,2) +0 0 +0.004955084 10.05846389 +0.011420738 20.02829694 +0.019065569 29.9958574 +0.027770395 40.01568733 +0.037834871 49.99688331 +0.049459899 60.01330437 +0.062657745 70.04676981 +0.079805401 80.04046501 +0.099926649 90.01711582 +0.129733298 100.1073959 +0.373528675 125.4239995 +0.743191549 149.8429319 +0.998903036 174.1255091 +1.142956429 199.8284523 +1.281543787 249.6435287 +1.394804562 349.7054729 +1.465053437 499.8779297 +1.519085494 749.1578447 +1.550211907 1000.278554 +1.572331232 1250.149341 +1.589831498 1498.088431 +1.6176219 1998.511781 +1.640002897 2500.298683 +1.72097061 4993.325091 +1.780685104 7471.693323 +1.830230606 9978.923392 +1.907589203 14925.20596 +1.964100075 19789.67545 +2.002484095 24212.12704 +2.02932469 28468.67987 +2.045396875 32059.36513 +2.053097187 34411.49123 diff --git a/ModelicaTest/MultiBody.mo b/ModelicaTest/MultiBody.mo index 405579669d..0be4eb03f6 100644 --- a/ModelicaTest/MultiBody.mo +++ b/ModelicaTest/MultiBody.mo @@ -7391,7 +7391,7 @@ often possible to use the FreeMotion joint such that the singularity sphereDiameter=0.1, r_0(start={0.2,-0.5,0.1}, each fixed=true), v_0(each fixed=true), - stateSelect=StateSelect.avoid) annotation (Placement(transformation( + stateSelect=StateSelect.never) annotation (Placement(transformation( extent={{-10,-10},{10,10}}, rotation=-90, origin={30,-30}))); @@ -7459,7 +7459,8 @@ often possible to use the FreeMotion joint such that the singularity color={95,95,95}, thickness=0.5)); annotation (experiment(StopTime=10), Documentation(info=" -

      This test case is made with the intent of verifying what choices are made by the compiler in terms of state selection when wrong hints are given, here all the bodies have the flag enforceStates=false (or stateSelect=stateSelect.avoid) but the bodies positions and velocities are the only possible states.

      +

      This test case is made with the intent of verifying what choices are made by the compiler in terms of state selection when wrong indications are given, here all the bodies have the flag enforceStates=false but the bodies positions and velocities are the only possible states.

      +


      Dymola ignores the flag and uses bodies variables as states.

      ")); end FreeBodiesEnforceStatesFalse;