Exemple #1
0
    def build_parameters(rblock, config):
        parent = rblock.parent_block()
        units = parent.get_metadata().derived_units

        rbasis = parent.config.reaction_basis
        if rbasis == MaterialFlowBasis.molar:
            r_base = units["amount"]
        elif rbasis == MaterialFlowBasis.mass:
            r_base = units["mass"]
        else:
            raise BurntToast(
                "{} for unexpected reaction basis {}. This should not happen "
                "so please contact the IDAES developers with this bug.".format(
                    rblock.name, rbasis))

        c_form = config.concentration_form
        if c_form is None:
            raise ConfigurationError(
                "{} concentration_form configuration argument was not set. "
                "Please ensure that this argument is included in your "
                "configuration dict.".format(rblock.name))
        elif (c_form == ConcentrationForm.moleFraction
              or c_form == ConcentrationForm.massFraction):
            r_units = r_base * units["volume"]**-1 * units["time"]**-1
        else:
            order = 0
            for p, j in parent.config.property_package._phase_component_set:
                order += -rblock.reaction_order[p, j].value

            if (c_form == ConcentrationForm.molarity
                    or c_form == ConcentrationForm.activity):
                c_units = units["density_mole"]
            elif c_form == ConcentrationForm.molality:
                c_units = units["amount"] * units["mass"]**-1
            elif c_form == ConcentrationForm.partialPressure:
                c_units = units["pressure"]
            else:
                raise BurntToast(
                    "{} get_concentration_term received unrecognised "
                    "ConcentrationForm ({}). This should not happen - please "
                    "contact the IDAES developers with this bug.".format(
                        rblock.name, c_form))

            r_units = (r_base * units["length"]**-3 * units["time"]**-1 *
                       c_units**order)

        rblock.arrhenius_const = Var(
            doc="Arrhenius constant (pre-exponential factor)", units=r_units)
        set_param_value(rblock,
                        param="arrhenius_const",
                        units=r_units,
                        config=config)

        rblock.energy_activation = Var(doc="Activation energy",
                                       units=units["energy_mole"])

        set_param_value(rblock,
                        param="energy_activation",
                        units=units["energy_mole"],
                        config=config)
Exemple #2
0
    def build_parameters(cobj):
        if not hasattr(cobj, "cp_mol_ig_comp_coeff_A"):
            cp_mol_ig_comp.build_parameters(cobj)

        units = cobj.parent_block().get_metadata().derived_units

        cobj.entr_mol_form_vap_comp_ref = Var(
                doc="Vapor phase molar entropy of formation @ Tref",
                units=units["entropy_mole"])
        set_param_value(cobj,
                        param="entr_mol_form_vap_comp_ref",
                        units=units["entropy_mole"])
Exemple #3
0
    def build_parameters(cobj):
        if not hasattr(cobj, "cp_mol_liq_comp_coeff_1"):
            cp_mol_liq_comp.build_parameters(cobj)

        units = cobj.parent_block().get_metadata().derived_units

        cobj.enth_mol_form_liq_comp_ref = Var(
            doc="Liquid phase molar heat of formation @ Tref",
            units=units["energy_mole"])
        set_param_value(cobj,
                        param="enth_mol_form_liq_comp_ref",
                        units=units["energy_mole"])
Exemple #4
0
    def build_parameters(cobj):
        if not hasattr(cobj, "cp_mol_ig_comp_coeff_A"):
            cp_mol_ig_comp.build_parameters(cobj)

        base_units = cobj.parent_block().get_metadata().default_units
        h_units = (base_units["mass"] * base_units["length"]**2 *
                   base_units["time"]**-2 * base_units["amount"]**-1)

        cobj.enth_mol_form_vap_comp_ref = Var(
            doc="Vapor phase molar heat of formation @ Tref",
            units=pyunits.cal / pyunits.mol)
        set_param_value(cobj,
                        param="enth_mol_form_vap_comp_ref",
                        units=pyunits.cal / pyunits.mol)
Exemple #5
0
    def build_parameters(cobj):
        cobj.cp_mol_ig_comp_coeff_A = Var(
            doc="Parameter A for ideal gas molar heat capacity",
            units=pyunits.cal / pyunits.mol / pyunits.K)
        set_param_value(cobj,
                        param="cp_mol_ig_comp_coeff",
                        units=pyunits.cal / pyunits.mol / pyunits.K,
                        index="A")

        cobj.cp_mol_ig_comp_coeff_B = Var(
            doc="Parameter B for ideal gas molar heat capacity",
            units=pyunits.cal / pyunits.mol / pyunits.K**2)
        set_param_value(cobj,
                        param="cp_mol_ig_comp_coeff",
                        units=pyunits.cal / pyunits.mol / pyunits.K**2,
                        index="B")

        cobj.cp_mol_ig_comp_coeff_C = Var(
            doc="Parameter C for ideal gas molar heat capacity",
            units=pyunits.cal / pyunits.mol / pyunits.K**3)
        set_param_value(cobj,
                        param="cp_mol_ig_comp_coeff",
                        units=pyunits.cal / pyunits.mol / pyunits.K**3,
                        index="C")

        cobj.cp_mol_ig_comp_coeff_D = Var(
            doc="Parameter D for ideal gas molar heat capacity",
            units=pyunits.cal / pyunits.mol / pyunits.K**4)
        set_param_value(cobj,
                        param="cp_mol_ig_comp_coeff",
                        units=pyunits.cal / pyunits.mol / pyunits.K**4,
                        index="D")
Exemple #6
0
    def build_parameters(cobj):
        cobj.dens_mol_liq_comp_coeff_1 = Var(
            doc="Parameter 1 for liquid phase molar density",
            units=pyunits.kmol * pyunits.m**-3)
        set_param_value(cobj,
                        param="dens_mol_liq_comp_coeff",
                        units=pyunits.kmol * pyunits.m**-3,
                        index="1")

        cobj.dens_mol_liq_comp_coeff_2 = Var(
            doc="Parameter 2 for liquid phase molar density", units=None)
        set_param_value(cobj,
                        param="dens_mol_liq_comp_coeff",
                        units=None,
                        index="2")

        cobj.dens_mol_liq_comp_coeff_3 = Var(
            doc="Parameter 3 for liquid phase molar density", units=pyunits.K)
        set_param_value(cobj,
                        param="dens_mol_liq_comp_coeff",
                        units=pyunits.K,
                        index="3")

        cobj.dens_mol_liq_comp_coeff_4 = Var(
            doc="Parameter 4 for liquid phase molar density", units=None)
        set_param_value(cobj,
                        param="dens_mol_liq_comp_coeff",
                        units=None,
                        index="4")
Exemple #7
0
    def build_parameters(cobj):
        cobj.pressure_sat_comp_coeff_A = Var(
                doc="Coefficient A for calculating Psat",
                units=None)
        set_param_value(cobj,
                        param="pressure_sat_comp_coeff",
                        units=None,
                        index="A")

        cobj.pressure_sat_comp_coeff_B = Var(
                doc="Coefficient B for calculating Psat",
                units=None)
        set_param_value(cobj,
                        param="pressure_sat_comp_coeff",
                        units=None,
                        index="B")

        cobj.pressure_sat_comp_coeff_C = Var(
                doc="Coefficient C for calculating Psat",
                units=None)
        set_param_value(cobj,
                        param="pressure_sat_comp_coeff",
                        units=None,
                        index="C")

        cobj.pressure_sat_comp_coeff_D = Var(
                doc="Coefficient D for calculating Psat",
                units=None)
        set_param_value(cobj,
                        param="pressure_sat_comp_coeff",
                        units=None,
                        index="D")
Exemple #8
0
    def build_parameters(rblock, config):
        units = rblock.parent_block().get_metadata().derived_units

        rbasis = rblock.parent_block().config.reaction_basis
        if rbasis == MaterialFlowBasis.molar:
            basis = "mole"
        elif rbasis == MaterialFlowBasis.mass:
            basis = "mass"

        rblock.dh_rxn_ref = Var(
            doc="Specific heat of reaction at reference state",
            units=units["energy_" + basis])

        set_param_value(rblock,
                        param="dh_rxn_ref",
                        units=units["energy_" + basis],
                        config=config)
Exemple #9
0
    def build(self):
        super(ComponentData, self).build()

        # If the component_list does not exist, add reference to new Component
        # The IF is mostly for backwards compatability, to allow for old-style
        # property packages where the component_list already exists but we
        # need to add new Component objects
        if not self.config._component_list_exists:
            if not self.config._electrolyte:
                self.__add_to_component_list()
            else:
                self._add_to_electrolyte_component_list()

        base_units = self.parent_block().get_metadata().default_units
        if isinstance(base_units["mass"], _PyomoUnit):
            # Backwards compatability check
            p_units = (base_units["mass"] / base_units["length"] /
                       base_units["time"]**2)
        else:
            # Backwards compatability check
            p_units = None

        # Create Param for molecular weight if provided
        if "mw" in self.config.parameter_data:
            if isinstance(self.config.parameter_data["mw"], tuple):
                mw_init = pyunits.convert_value(
                    self.config.parameter_data["mw"][0],
                    from_units=self.config.parameter_data["mw"][1],
                    to_units=base_units["mass"] / base_units["amount"])
            else:
                _log.debug("{} no units provided for parameter mw - assuming "
                           "default units".format(self.name))
                mw_init = self.config.parameter_data["mw"]
            self.mw = Param(initialize=mw_init,
                            units=base_units["mass"] / base_units["amount"])

        # Create Vars for common parameters
        param_dict = {
            "pressure_crit": p_units,
            "temperature_crit": base_units["temperature"],
            "omega": None
        }
        for p, u in param_dict.items():
            if p in self.config.parameter_data:
                self.add_component(p, Var(units=u))
                set_param_value(self, p, u)
Exemple #10
0
    def build_parameters(rblock, config):
        parent = rblock.parent_block()
        units = parent.get_metadata().derived_units

        c_form = config.concentration_form
        if c_form is None:
            raise ConfigurationError(
                "{} concentration_form configuration argument was not set. "
                "Please ensure that this argument is included in your "
                "configuration dict.".format(rblock.name))
        elif (c_form == ConcentrationForm.moleFraction
              or c_form == ConcentrationForm.massFraction):
            e_units = None
        else:
            order = 0
            for p, j in parent.config.property_package._phase_component_set:
                order += rblock.reaction_order[p, j].value

            if (c_form == ConcentrationForm.molarity
                    or c_form == ConcentrationForm.activity):
                c_units = units["density_mole"]
            elif c_form == ConcentrationForm.molality:
                c_units = units["amount"] * units["mass"]**-1
            elif c_form == ConcentrationForm.partialPressure:
                c_units = units["pressure"]
            else:
                raise BurntToast(
                    "{} get_concentration_term received unrecognised "
                    "ConcentrationForm ({}). This should not happen - please "
                    "contact the IDAES developers with this bug.".format(
                        rblock.name, c_form))

            e_units = c_units**order

        rblock.k_eq_ref = Var(doc="Equilibrium constant at reference state",
                              units=e_units)
        set_param_value(rblock, param="k_eq_ref", units=e_units, config=config)

        rblock.T_eq_ref = Var(
            doc="Reference temperature for equilibrium constant",
            units=units["temperature"])
        set_param_value(rblock,
                        param="T_eq_ref",
                        units=units["temperature"],
                        config=config)
Exemple #11
0
    def build_parameters(cobj):
        cobj.cp_mol_liq_comp_coeff_1 = Var(
            doc="Parameter 1 for liquid phase molar heat capacity",
            units=pyunits.J * pyunits.kmol**-1 * pyunits.K**-1)
        set_param_value(cobj,
                        param="cp_mol_liq_comp_coeff",
                        units=pyunits.J * pyunits.kmol**-1 * pyunits.K**-1,
                        index="1")

        cobj.cp_mol_liq_comp_coeff_2 = Var(
            doc="Parameter 2 for liquid phase molar heat capacity",
            units=pyunits.J * pyunits.kmol**-1 * pyunits.K**-2)
        set_param_value(cobj,
                        param="cp_mol_liq_comp_coeff",
                        units=pyunits.J * pyunits.kmol**-1 * pyunits.K**-2,
                        index="2")

        cobj.cp_mol_liq_comp_coeff_3 = Var(
            doc="Parameter 3 for liquid phase molar heat capacity",
            units=pyunits.J * pyunits.kmol**-1 * pyunits.K**-3)
        set_param_value(cobj,
                        param="cp_mol_liq_comp_coeff",
                        units=pyunits.J * pyunits.kmol**-1 * pyunits.K**-3,
                        index="3")

        cobj.cp_mol_liq_comp_coeff_4 = Var(
            doc="Parameter 4 for liquid phase molar heat capacity",
            units=pyunits.J * pyunits.kmol**-1 * pyunits.K**-4)
        set_param_value(cobj,
                        param="cp_mol_liq_comp_coeff",
                        units=pyunits.J * pyunits.kmol**-1 * pyunits.K**-4,
                        index="4")

        cobj.cp_mol_liq_comp_coeff_5 = Var(
            doc="Parameter 5 for liquid phase molar heat capacity",
            units=pyunits.J * pyunits.kmol**-1 * pyunits.K**-5)
        set_param_value(cobj,
                        param="cp_mol_liq_comp_coeff",
                        units=pyunits.J * pyunits.kmol**-1 * pyunits.K**-5,
                        index="5")
Exemple #12
0
    def build_parameters(cobj):
        cobj.pressure_sat_comp_coeff_A = Var(
            doc="Antoine A coefficient for calculating Psat", units=None)
        set_param_value(cobj,
                        param="pressure_sat_comp_coeff",
                        units=None,
                        index="A")

        cobj.pressure_sat_comp_coeff_B = Var(
            doc="Antoine B coefficient for calculating Psat", units=pyunits.K)
        set_param_value(cobj,
                        param="pressure_sat_comp_coeff",
                        units=pyunits.K,
                        index="B")

        cobj.pressure_sat_comp_coeff_C = Var(
            doc="Antoine C coefficient for calculating Psat", units=pyunits.K)
        set_param_value(cobj,
                        param="pressure_sat_comp_coeff",
                        units=pyunits.K,
                        index="C")
Exemple #13
0
    def build_parameters(cobj):
        cobj.cp_mol_ig_comp_coeff_A = Var(
            doc="Shomate A parameter for ideal gas molar heat capacity",
            units=pyunits.J * pyunits.mol**-1 * pyunits.K**-1)
        set_param_value(cobj,
                        param="cp_mol_ig_comp_coeff",
                        units=pyunits.J * pyunits.mol**-1 * pyunits.K**-1,
                        index="A")

        cobj.cp_mol_ig_comp_coeff_B = Var(
            doc="Shomate B parameter for ideal gas molar heat capacity",
            units=pyunits.J * pyunits.mol**-1 * pyunits.K**-1 *
            pyunits.kiloK**-1)
        set_param_value(cobj,
                        param="cp_mol_ig_comp_coeff",
                        units=pyunits.J * pyunits.mol**-1 * pyunits.K**-1 *
                        pyunits.kiloK**-1,
                        index="B")

        cobj.cp_mol_ig_comp_coeff_C = Var(
            doc="Shomate C parameter for ideal gas molar heat capacity",
            units=pyunits.J * pyunits.mol**-1 * pyunits.K**-1 *
            pyunits.kiloK**-2)
        set_param_value(cobj,
                        param="cp_mol_ig_comp_coeff",
                        units=pyunits.J * pyunits.mol**-1 * pyunits.K**-1 *
                        pyunits.kiloK**-2,
                        index="C")

        cobj.cp_mol_ig_comp_coeff_D = Var(
            doc="Shomate D parameter for ideal gas molar heat capacity",
            units=pyunits.J * pyunits.mol**-1 * pyunits.K**-1 *
            pyunits.kiloK**-3)
        set_param_value(cobj,
                        param="cp_mol_ig_comp_coeff",
                        units=pyunits.J * pyunits.mol**-1 * pyunits.K**-1 *
                        pyunits.kiloK**-3,
                        index="D")

        cobj.cp_mol_ig_comp_coeff_E = Var(
            doc="Shomate E parameter for ideal gas molar heat capacity",
            units=pyunits.J * pyunits.mol**-1 * pyunits.K**-1 *
            pyunits.kiloK**2)
        set_param_value(cobj,
                        param="cp_mol_ig_comp_coeff",
                        units=pyunits.J * pyunits.mol**-1 * pyunits.K**-1 *
                        pyunits.kiloK**2,
                        index="E")

        cobj.cp_mol_ig_comp_coeff_F = Var(
            doc="Shomate F parameter for ideal gas molar heat capacity",
            units=pyunits.kJ * pyunits.mol**-1)
        set_param_value(cobj,
                        param="cp_mol_ig_comp_coeff",
                        units=pyunits.kJ * pyunits.mol**-1,
                        index="F")

        cobj.cp_mol_ig_comp_coeff_G = Var(
            doc="Shomate G parameter for ideal gas molar heat capacity",
            units=pyunits.J * pyunits.mol**-1 * pyunits.K**-1)
        set_param_value(cobj,
                        param="cp_mol_ig_comp_coeff",
                        units=pyunits.J * pyunits.mol**-1 * pyunits.K**-1,
                        index="G")

        cobj.cp_mol_ig_comp_coeff_H = Var(
            doc="Shomate H parameter for ideal gas molar heat capacity",
            units=pyunits.kJ * pyunits.mol**-1)
        set_param_value(cobj,
                        param="cp_mol_ig_comp_coeff",
                        units=pyunits.kJ * pyunits.mol**-1,
                        index="H")