FluidInterface

class FluidInterface
    extends Modelica.Blocks.Icons.Block;

    function calcStribeckForce
        input Real velocity;
        input Real force;
        input Real fBreakaway;
        input Real fMixedFriction;
        input Real vViscous;
        input Real etaViscous;
        output Real stribeckForce;
    external "C"
        stribeckForce = calcStribeckForce(velocity, force, fBreakaway, fMixedFriction, vViscous, etaViscous)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcStribeckForce;

    function calcRho
        input Integer id;
        input Real pressure;
        input Real temperature;
        output Real rho;
    external "C"
        rho = calcRho(id, pressure, temperature)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcRho;

    function calcNu
        input Integer id;
        input Real pressure;
        input Real temperature;
        output Real nu;
    external "C"
        nu = calcNu(id, pressure, temperature)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcNu;

    function calcAs
        input Integer id;
        input Real pressure;
        input Real temperature;
        output Real as;
    external "C"
        as = calcAs(id, pressure, temperature)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcAs;

    function calcKt
        input Integer id;
        input Real pressure;
        input Real temperature;
        output Real kt;
    external "C"
        kt = calcKt(id, pressure, temperature)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcKt;

    function calcKs
        input Integer id;
        input Real pressure;
        input Real temperature;
        output Real ks;
    external "C"
        ks = calcKs(id, pressure, temperature)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcKs;

    function calcGammap
        input Integer id;
        input Real pressure;
        input Real temperature;
        output Real gammap;
    external "C"
        gammap = calcGammap(id, pressure, temperature)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcGammap;

    function calcCp
        input Integer id;
        input Real pressure;
        input Real temperature;
        output Real cp;
    external "C"
        cp = calcCp(id, pressure, temperature)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcCp;

    function calcEta
        input Integer id;
        input Real pressure;
        input Real temperature;
        output Real eta;
    external "C"
        eta = calcEta(id, pressure, temperature)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcEta;

    function getK
        input Integer id;
        output Real k;
    external "C"
        k = getK(id)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end getK;

    function calcLaminarFactor
        input Real dp;
        output Real y;
    external "C"
        y = calcLaminarFactor(dp)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcLaminarFactor;

    function calcLaminarFactorEx
        input Real dp;
        input Real pLimit;
        output Real y;
    external "C"
        y = calcLaminarFactorEx(dp, pLimit)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcLaminarFactorEx;

    function calcCoefficient
        input Real volumeFlow;
        input Real dp;
        output Real coefficient;
    external "C"
        coefficient = calcCoefficient(volumeFlow, dp)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcCoefficient;

    function calcConductance
        input Real volumeFlow;
        input Real dp;
        output Real conductance;
    external "C"
        conductance = calcConductance(volumeFlow, dp)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcConductance;

    function calcPLaminar
        input Real volumeFlow;
        input Real dp;
        input Real rho;
        input Real kinVis;
        output Real pLaminar;
    external "C"
        pLaminar = calcPLaminar(volumeFlow, dp, rho, kinVis)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcPLaminar;

    function calcKtCorrection
        input Real kt;
        input Real propDissolvedAir;
        input Real polytropicExponent;
        input Real pressure;
        output Real ktCorr;
    external "C"
        ktCorr = calcKtCorrection(kt, propDissolvedAir, polytropicExponent, pressure)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcKtCorrection;

    function calcAdjustCoefficient
        input Real volumeFlow;
        input Real dp;
        input Real signal;
        output Real coefficient;
    external "C"
        coefficient = calcAdjustCoefficient(volumeFlow, dp, signal)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcAdjustCoefficient;

    function calcVariableConductance
        input Real volumeFlow;
        input Real dp;
        input Real signal;
        output Real conductance;
    external "C"
        conductance = calcVariableConductance(volumeFlow, dp, signal)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end calcVariableConductance;

    function registerFluid
        input Integer id;
        input Real pRef;
        input Real TRef;
        input Real rhoRef;
        input Real Kt;
        input Real Gammap;
        input Real cpRef;
        input Real v1;
        input Real v2;
        input Real T1;
        input Real T2;
        output Integer fluidID;
    external "C"
        fluidID = registerFluid(id, pRef, TRef, rhoRef, Kt, Gammap, cpRef, v1, v2, T1, T2)
            annotation (
                Library = "hbffluids",
                LibraryDirectory = "modelica://HydraulicsByFluidon/Resources/Library");
    end registerFluid;
end FluidInterface;