Source code for libICEpost.src.engineModel.EngineGeometry.EngineGeometry

#####################################################################
#                                 DOC                               #
#####################################################################

"""
@author: F. Ramognino       <federico.ramognino@polimi.it>
Last update:        12/06/2023
"""

#####################################################################
#                               IMPORT                              #
#####################################################################

from libICEpost.src.base.BaseClass import BaseClass, abstractmethod


from collections.abc import Iterable
import numpy as np
import pandas as pd

#############################################################################
#                               MAIN CLASSES                                #
#############################################################################
[docs] class EngineGeometry(BaseClass): """ Base class for handling engine geometrical parameters during cycle. """ @property @abstractmethod def patches(cls) -> list[str]: """The list of patches""" #########################################################################
[docs] def __str__(self): STR = "{:15s} {:15s}".format("TypeName", self.TypeName) return STR
################################### #Instant. chamber volume:
[docs] @abstractmethod def V(self,CA:float|Iterable[float]) -> float|np.ndarray: """ Returns the instantaneous in-cylinder volume at CA Args: CA (float | Iterable[float]): Time in CA Returns: float|np.ndarray: In-cylinder volume [m^3] """
###################################
[docs] @abstractmethod def A(self,CA:float|Iterable[float]) -> float|np.ndarray: """ Returns the chamber area at CA Args: CA (float | Iterable[float]): Time in CA Returns: float|np.ndarray: [m^2] """
###################################
[docs] @abstractmethod def areas(self,CA:float|Iterable[float]) -> pd.DataFrame: """ Get pandas.Dataframe with area of all patches at CA Args: CA (float | Iterable[float]): Time in CA Returns: pandas.Dataframe: DataFrame of areas [m^2] at CA. Columns are patch names and CA. """
################################### #Time (in CA) derivative of chamber volume:
[docs] @abstractmethod def dVdCA(self,CA:float|Iterable[float]) -> float|np.ndarray: """ Returns the time (in CA) derivative of instantaneous in-cylinder volume at CA Args: CA (float | Iterable[float]): Time in CA Returns: float|np.ndarray: dV/dCA [m^3/CA] """
######################################################################### #Create selection table EngineGeometry.createRuntimeSelectionTable()