libICEpost.src.engineModel.HeatTransferModel ============================================ .. py:module:: libICEpost.src.engineModel.HeatTransferModel .. autoapi-nested-parse:: @author: F. Ramognino Last update: 12/06/2023 Package with models for describing heat losses at walls. Submodules ---------- .. toctree:: :maxdepth: 1 /autoapi/libICEpost/src/engineModel/HeatTransferModel/HeatTransferModel/index /autoapi/libICEpost/src/engineModel/HeatTransferModel/Woschni/index Classes ------- .. autoapisummary:: libICEpost.src.engineModel.HeatTransferModel.HeatTransferModel libICEpost.src.engineModel.HeatTransferModel.Woschni Package Contents ---------------- .. py:class:: HeatTransferModel Bases: :py:obj:`libICEpost.src.base.BaseClass.BaseClass` Base class for modeling of wall heat transfer. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. py:method:: fromDictionary(dictionary: dict) -> Self :classmethod: Construct from dictionary with heat transfer model parameters (to be overloaded for docstring) :returns: instance of selected heatTransferModel :rtype: Self .. py:method:: h(*, engine: libICEpost.src.engineModel.EngineModel.EngineModel.EngineModel, CA: float | collections.abc.Iterable | None = None, **kwargs) -> float :abstractmethod: Compute wall heat transfer coefficient at walls. To be overwritten. :param engine: The engine model from which taking data. :type engine: EngineModel :param CA: Time for which computing heat transfer. If None, uses engine.time.time. Defaults to None. :type CA: float | Iterable | None, optional :returns: convective wall heat transfer coefficient [W/(m^2 K)] :rtype: float .. py:method:: update(/, **args) -> None Update coefficients of the model .. py:class:: Woschni(/, *, nwos: float = 1.32, C1: float = 3.26, C2cv: float = 2.28, C2ge: float = 6.18, C2corrcv: float = 0.308, C2corrge: float = 0.417, C3comp: float = 0.0, C3comb: float = 0.00324, useTurbulence: bool = False) Bases: :py:obj:`libICEpost.src.engineModel.HeatTransferModel.HeatTransferModel.HeatTransferModel` Class for computation of wall heat transfer with Woschni model: h = C1 * (p/1000.)^.8 * T^(-0.53) * D^(-0.2) * uwos^(0.8) \ C2Prime = C2 + C2corr * (u'/upMean) \ uwos = C2Prime * upMean + C3 * (p - p_mot) * Vs * T0 / (p0 * V0) \ p_mot = p * ( V0 / V )**nwos Vs: Displacement volume upMean: Mean piston speed Where: 1) C2 changes depending if at closed-valves (C2cv) or during gas-exchange (C2ge) 2) C3 changes depending if during compression (C3comp) or during combustion/expansion (C3comb) 3) Reference conditions (0) are at IVC or startTime if it is in closed-valve region. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Attibutes: coeffs: dict Container for model constants .. py:method:: fromDictionary(dictionary: dict) -> Woschni :classmethod: Construct from dictionary. :param dictionary: the input dictionary, containing: nwos (float, default 1.32) C1 (float, default 3.26) C2cv (float, default 2.28) C2ge (float, default 6.18) C2corrcv(float, default 0.308) C2corrge(float, default 0.417) C3comp (float, default 0.0) C3comb (float, default 3.24e-3) useTurbulence (bool, False) :type dictionary: dict :returns: Instance of this class :rtype: Woschni .. py:attribute:: coeffs .. py:method:: h(*, engine: libICEpost.src.engineModel.EngineModel.EngineModel.EngineModel, CA: float | collections.abc.Iterable | None = None, **kwargs) -> float Compute convective wall heat transfer with Woschni correlation: h = C1 * (p/1000.)^.8 * T^(-0.53) * D^(-0.2) * uwos^(0.8) \ C2Prime = C2 + C2corr * (u'/upMean) \ uwos = C2Prime * upMean + C3 * (p - p_mot) * Vs * T0 / (p0 * V0) \ p_mot = p * ( V0 / V )**nwos Vs: Displacement volume upMean: Mean piston speed Where: 1) C2 changes depending if at closed-valves (C2cv) or during gas-exchange (C2ge) 2) C3 changes depending if during compression (C3comp) or during combustion/expansion (C3comb) 3) Reference conditions (0) are at IVC or startTime if it is in closed-valve region. 4) C2corr changes depending if at closed-valves (C2corrcv) or during gas-exchange (C2corrge) :param engine: The engine model from which taking data. :type engine: EngineModel :param CA: Time for which computing heat transfer. If None, uses engine.time.time. Defaults to None. :type CA: float | Iterable | None, optional :returns: convective wall heat transfer coefficient [W/(m^2 K)] :rtype: float .. py:method:: uwos(engine: libICEpost.src.engineModel.EngineModel.EngineModel.EngineModel, *, CA: float | collections.abc.Iterable | None = None) -> float uwos = C2Prime * upMean + C3 * (p - p_mot) * Vs * T0 / (p0 * V0) \ C2Prime = C2 + C2corr * (u'/upMean) \ p_mot = p * ( V0 / V )**nwos Vs: Displacement volume upMean: Mean piston speed Where: 1) C2 changes depending if at closed-valves (C2cv) or during gas-exchange (C2ge) 2) C3 changes depending if during compression (C3comp) or during combustion/expansion (C3comb) 3) Reference conditions (0) are at IVC or startTime if it is in closed-valve region. 4) C2corr changes depending if at closed-valves (C2corrcv) or during gas-exchange (C2corrge) :param engine: The engine model from which taking data. :type engine: EngineModel :param CA: Time for which computing heat transfer. If None, uses engine.time.time. Defaults to None. :type CA: float | Iterable | None, optional .. py:method:: p_mot(*, p0: float | collections.abc.Iterable, V: float | collections.abc.Iterable, V0: float | collections.abc.Iterable) p_mot = p0 * ( V0 / V )**nwos