コード例 #1
0
                    sa_dict['thermo'][observable][label].append(rms.getconcentrationsensitivity(
                        self.bsol, observable, label, t))

            # get kinetics SA coefficients
            sa_dict['kinetics'][observable] = dict()
            for rxn_number in range(num_rxns):
                sa_dict['kinetics'][observable][rxn_number] = list()
                for t in sa_dict['time']:
                    sa_dict['kinetics'][observable][rxn_number].append(rms.getconcentrationsensitivity(
                        self.bsol, observable, rxn_number, t))
        return sa_dict

    def get_idt_by_T(self):
        """
        Finds the ignition point by approximating dT/dt as a first order forward difference
        and then finds the point of maximum slope. Since this adapter simulates at constant T, this method
        returns a dictionary whose values are empty lists.

        Returns:
            idt_dict (dict): Dictionary whose keys include 'idt' and 'idt_index' and whose values are lists of
                             the ignition delay time in seconds and index at which idt occurs respectively.
        """
        idt_dict = {'idt': list(),
                    'idt_index': list(),
                    }

        return idt_dict


register_simulate_adapter("RMSConstantTP", RMSConstantTP)
コード例 #2
0
                V0 = None
            self.reinitialize_simulation(
                T0=T0,
                P0=P0,
                X0=condition.mol_frac,
                V0=V0,
            )
            if criteria == 'mol_frac':
                x0 = self.model.X[spc_index]
            elif criteria == 'mass_frac':
                x0 = self.model.mass_fraction_dict()[species]
            else:
                raise ValueError(f'Invalid criteria: {criteria}')

            while True:
                self.cantera_simulation.step()

                if criteria == 'mol_frac':
                    x1 = self.model.X[spc_index]
                else:
                    x1 = self.model.mass_fraction_dict()[species]

                if x1 < x0 * 0.5:
                    break
            t50_list.append(self.cantera_simulation.time)

        return t50_list


register_simulate_adapter("CanteraConstantUV", CanteraConstantUV)
コード例 #3
0
ファイル: cantera_constantTP.py プロジェクト: pk-organics/T3
                P0 = condition.P0.value_si
                V0 = None
            self.reinitialize_simulation(T0=T0,
                                         P0=P0,
                                         X0=condition.mol_frac,
                                         V0=V0,
                                         )
            if criteria == 'mol_frac':
                x0 = self.model.X[spc_index]
            elif criteria == 'mass_frac':
                x0 = self.model.mass_fraction_dict()[species]
            else:
                raise ValueError(f'Invalid criteria: {criteria}')

            while True:
                self.cantera_simulation.step()

                if criteria == 'mol_frac':
                    x1 = self.model.X[spc_index]
                else:
                    x1 = self.model.mass_fraction_dict()[species]

                if x1 < x0 * 0.5:
                    break
            t50_list.append(self.cantera_simulation.time)

        return t50_list


register_simulate_adapter("CanteraConstantTP", CanteraConstantTP)
コード例 #4
0
                sa_dict['kinetics'][observable][rxn_number] = list()
                for t in sa_dict['time']:
                    sa_dict['kinetics'][observable][rxn_number].append(
                        rms.getconcentrationsensitivity(
                            self.bsol, observable, rxn_number, t))
        return sa_dict

    def get_idt_by_T(self):
        """
        Finds the ignition point by approximating dT/dt as a first order forward difference
        and then finds the point of maximum slope.

        Returns:
            idt_dict (dict): Dictionary whose keys include 'idt' and 'idt_index' and whose values are lists of
                             the ignition delay time in seconds and index at which idt occurs respectively.
        """
        idt_dict = {
            'idt': list(),
            'idt_index': list(),
        }
        time = self.sol.t
        temperature = np.array([self.sol(t)[-2] for t in self.sol.t])
        dTdt = np.diff(temperature) / np.diff(time)
        idt_dict['idt_index'].append(int(np.argmax(dTdt)))
        idt_dict['idt'].append(time[idt_dict['idt_index'][0]])

        return idt_dict


register_simulate_adapter("RMSConstantUV", RMSConstantUV)