# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from gpa_api.models.base_model_ import Model
from gpa_api.models.fluid import Fluid
from gpa_api.models.metric import Metric
from gpa_api import util

from gpa_api.models.fluid import Fluid  # noqa: E501
from gpa_api.models.metric import Metric  # noqa: E501

class CalculationStep(Model):
    """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

    Do not edit the class manually.
    """

    def __init__(self, id=None, time=None, wi=None, gcv=None, gcv_mass=None, density=None, temp=None, volume=None, energy=None, created_date=None, liquid=None, gas=None):  # noqa: E501
        """CalculationStep - a model defined in OpenAPI

        :param id: The id of this CalculationStep.  # noqa: E501
        :type id: str
        :param time: The time of this CalculationStep.  # noqa: E501
        :type time: Metric
        :param wi: The wi of this CalculationStep.  # noqa: E501
        :type wi: Metric
        :param gcv: The gcv of this CalculationStep.  # noqa: E501
        :type gcv: Metric
        :param gcv_mass: The gcv_mass of this CalculationStep.  # noqa: E501
        :type gcv_mass: Metric
        :param density: The density of this CalculationStep.  # noqa: E501
        :type density: Metric
        :param temp: The temp of this CalculationStep.  # noqa: E501
        :type temp: Metric
        :param volume: The volume of this CalculationStep.  # noqa: E501
        :type volume: Metric
        :param energy: The energy of this CalculationStep.  # noqa: E501
        :type energy: Metric
        :param created_date: The created_date of this CalculationStep.  # noqa: E501
        :type created_date: datetime
        :param liquid: The liquid of this CalculationStep.  # noqa: E501
        :type liquid: Fluid
        :param gas: The gas of this CalculationStep.  # noqa: E501
        :type gas: Fluid
        """
        self.openapi_types = {
            'id': str,
            'time': Metric,
            'wi': Metric,
            'gcv': Metric,
            'gcv_mass': Metric,
            'density': Metric,
            'temp': Metric,
            'volume': Metric,
            'energy': Metric,
            'created_date': datetime,
            'liquid': Fluid,
            'gas': Fluid
        }

        self.attribute_map = {
            'id': 'id',
            'time': 'time',
            'wi': 'wi',
            'gcv': 'gcv',
            'gcv_mass': 'gcvMass',
            'density': 'density',
            'temp': 'temp',
            'volume': 'volume',
            'energy': 'energy',
            'created_date': 'createdDate',
            'liquid': 'liquid',
            'gas': 'gas'
        }

        self._id = id
        self._time = time
        self._wi = wi
        self._gcv = gcv
        self._gcv_mass = gcv_mass
        self._density = density
        self._temp = temp
        self._volume = volume
        self._energy = energy
        self._created_date = created_date
        self._liquid = liquid
        self._gas = gas

    @classmethod
    def from_dict(cls, dikt) -> 'CalculationStep':
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The CalculationStep of this CalculationStep.  # noqa: E501
        :rtype: CalculationStep
        """
        return util.deserialize_model(dikt, cls)

    @property
    def id(self):
        """Gets the id of this CalculationStep.


        :return: The id of this CalculationStep.
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this CalculationStep.


        :param id: The id of this CalculationStep.
        :type id: str
        """

        self._id = id

    @property
    def time(self):
        """Gets the time of this CalculationStep.


        :return: The time of this CalculationStep.
        :rtype: Metric
        """
        return self._time

    @time.setter
    def time(self, time):
        """Sets the time of this CalculationStep.


        :param time: The time of this CalculationStep.
        :type time: Metric
        """

        self._time = time

    @property
    def wi(self):
        """Gets the wi of this CalculationStep.


        :return: The wi of this CalculationStep.
        :rtype: Metric
        """
        return self._wi

    @wi.setter
    def wi(self, wi):
        """Sets the wi of this CalculationStep.


        :param wi: The wi of this CalculationStep.
        :type wi: Metric
        """

        self._wi = wi

    @property
    def gcv(self):
        """Gets the gcv of this CalculationStep.


        :return: The gcv of this CalculationStep.
        :rtype: Metric
        """
        return self._gcv

    @gcv.setter
    def gcv(self, gcv):
        """Sets the gcv of this CalculationStep.


        :param gcv: The gcv of this CalculationStep.
        :type gcv: Metric
        """

        self._gcv = gcv

    @property
    def gcv_mass(self):
        """Gets the gcv_mass of this CalculationStep.


        :return: The gcv_mass of this CalculationStep.
        :rtype: Metric
        """
        return self._gcv_mass

    @gcv_mass.setter
    def gcv_mass(self, gcv_mass):
        """Sets the gcv_mass of this CalculationStep.


        :param gcv_mass: The gcv_mass of this CalculationStep.
        :type gcv_mass: Metric
        """

        self._gcv_mass = gcv_mass

    @property
    def density(self):
        """Gets the density of this CalculationStep.


        :return: The density of this CalculationStep.
        :rtype: Metric
        """
        return self._density

    @density.setter
    def density(self, density):
        """Sets the density of this CalculationStep.


        :param density: The density of this CalculationStep.
        :type density: Metric
        """

        self._density = density

    @property
    def temp(self):
        """Gets the temp of this CalculationStep.


        :return: The temp of this CalculationStep.
        :rtype: Metric
        """
        return self._temp

    @temp.setter
    def temp(self, temp):
        """Sets the temp of this CalculationStep.


        :param temp: The temp of this CalculationStep.
        :type temp: Metric
        """

        self._temp = temp

    @property
    def volume(self):
        """Gets the volume of this CalculationStep.


        :return: The volume of this CalculationStep.
        :rtype: Metric
        """
        return self._volume

    @volume.setter
    def volume(self, volume):
        """Sets the volume of this CalculationStep.


        :param volume: The volume of this CalculationStep.
        :type volume: Metric
        """

        self._volume = volume

    @property
    def energy(self):
        """Gets the energy of this CalculationStep.


        :return: The energy of this CalculationStep.
        :rtype: Metric
        """
        return self._energy

    @energy.setter
    def energy(self, energy):
        """Sets the energy of this CalculationStep.


        :param energy: The energy of this CalculationStep.
        :type energy: Metric
        """

        self._energy = energy

    @property
    def created_date(self):
        """Gets the created_date of this CalculationStep.


        :return: The created_date of this CalculationStep.
        :rtype: datetime
        """
        return self._created_date

    @created_date.setter
    def created_date(self, created_date):
        """Sets the created_date of this CalculationStep.


        :param created_date: The created_date of this CalculationStep.
        :type created_date: datetime
        """

        self._created_date = created_date

    @property
    def liquid(self):
        """Gets the liquid of this CalculationStep.


        :return: The liquid of this CalculationStep.
        :rtype: Fluid
        """
        return self._liquid

    @liquid.setter
    def liquid(self, liquid):
        """Sets the liquid of this CalculationStep.


        :param liquid: The liquid of this CalculationStep.
        :type liquid: Fluid
        """

        self._liquid = liquid

    @property
    def gas(self):
        """Gets the gas of this CalculationStep.


        :return: The gas of this CalculationStep.
        :rtype: Fluid
        """
        return self._gas

    @gas.setter
    def gas(self, gas):
        """Sets the gas of this CalculationStep.


        :param gas: The gas of this CalculationStep.
        :type gas: Fluid
        """

        self._gas = gas
