FluidPropertySensor

model FluidPropertySensor
    import SI = Modelica.SIunits;
    import HydraulicsByFluidon.Media.Base.FluidInterface;

    extends HydraulicsByFluidon.Components.Sensors.Base.Sensor;

    parameter HydraulicsByFluidon.Types.TFluidPropertyTypes propertyType = HydraulicsByFluidon.Types.TFluidPropertyTypes.rho "Output property";
equation
    value = if propertyType == HydraulicsByFluidon.Types.TFluidPropertyTypes.rho then FluidInterface.calcRho(fluidPort.fluidId, fluidPort.p, fluidPort.fluidTemperature) else if propertyType == HydraulicsByFluidon.Types.TFluidPropertyTypes.nu then FluidInterface.calcNu(fluidPort.fluidId, fluidPort.p, fluidPort.fluidTemperature) else if propertyType == HydraulicsByFluidon.Types.TFluidPropertyTypes.eta then FluidInterface.calcEta(fluidPort.fluidId, fluidPort.p, fluidPort.fluidTemperature) else if propertyType == HydraulicsByFluidon.Types.TFluidPropertyTypes.Kt then FluidInterface.calcKt(fluidPort.fluidId, fluidPort.p, fluidPort.fluidTemperature) else if propertyType == HydraulicsByFluidon.Types.TFluidPropertyTypes.Ks then FluidInterface.calcKs(fluidPort.fluidId, fluidPort.p, fluidPort.fluidTemperature) else if propertyType == HydraulicsByFluidon.Types.TFluidPropertyTypes.cp then FluidInterface.calcCp(fluidPort.fluidId, fluidPort.p, fluidPort.fluidTemperature) else if propertyType == HydraulicsByFluidon.Types.TFluidPropertyTypes.gammap then FluidInterface.calcGammap(fluidPort.fluidId, fluidPort.p, fluidPort.fluidTemperature) else FluidInterface.calcAs(fluidPort.fluidId, fluidPort.p, fluidPort.fluidTemperature);
    fluidPort.mFlow = 0;

    annotation (
        Icon(
            coordinateSystem(initialScale = 0.1),
            graphics = {
                Line(
                    rotation = -45,
                    points = {
                        {0, 25}, 
                        {0, -25}},
                    color = {0, 93, 152}), 
                Polygon(
                    origin = {-32, -32},
                    lineColor = {0, 93, 152},
                    fillColor = {0, 93, 152},
                    fillPattern = FillPattern.Solid,
                    points = {
                        {59, 59}, 
                        {45, 51}, 
                        {51, 45}, 
                        {59, 59}}), 
                Text(
                    origin = {0, 22},
                    lineColor = {0, 93, 152},
                    fillColor = {0, 93, 152},
                    extent = {
                        {-30, -25}, 
                        {30, -55}},
                    textString = "fluid")}),
        Documentation(info = "<html>\n            <p>\n                Following fluid properties are available:\n                <ul>\n                    <li>Density</li>\n                    <li>Kinematic viscosity</li>\n                    <li>Dynamic viscosity</li>\n                    <li>Isothermal bulk modulus</li>\n                    <li>Isentropic bulk modulus</li>\n                    <li>Specific heat capacity at constant pressure</li>\n                    <li>Isobaric thermal expansion coefficient</li>\n                    <li>Sound speed</li>\n                </ul>\n            </p>\n            <p>\n                The chosen fluid property is measured at fluid temperature and pressure at the fluid port.\n            </p>\n        </html>"));
end FluidPropertySensor;