def setUp(self): self.gas = ct.importPhase('h2o2.cti') # create a reservoir for the fuel inlet, and set to pure methane. self.gas.set(T=300.0, P=ct.OneAtm, X='H2:1.0') fuel_in = reactors.Reservoir(self.gas) fuel_mw = self.gas.meanMolarMass() # Oxidizer inlet self.gas.set(T=300.0, P=ct.OneAtm, X='O2:1.0, AR:3.0') oxidizer_in = reactors.Reservoir(self.gas) oxidizer_mw = self.gas.meanMolarMass() # to ignite the fuel/air mixture, we'll introduce a pulse of radicals. # The steady-state behavior is independent of how we do this, so we'll # just use a stream of pure atomic hydrogen. self.gas.set(T=300.0, P=ct.OneAtm, X='H:1.0') self.igniter = reactors.Reservoir(self.gas) # create the combustor, and fill it in initially with a diluent self.gas.set(T=300.0, P=ct.OneAtm, X='AR:1.0') self.combustor = reactors.Reactor(contents=self.gas, volume=1.0) # create a reservoir for the exhaust self.exhaust = reactors.Reservoir(self.gas) # compute fuel and air mass flow rates factor = 0.1 oxidizer_mdot = 4 * factor * oxidizer_mw fuel_mdot = factor * fuel_mw # create and install the mass flow controllers. Controllers # m1 and m2 provide constant mass flow rates, and m3 provides # a short Gaussian pulse only to ignite the mixture m1 = reactors.MassFlowController(upstream=fuel_in, downstream=self.combustor, mdot=fuel_mdot) m2 = reactors.MassFlowController(upstream=oxidizer_in, downstream=self.combustor, mdot=oxidizer_mdot) # The igniter will use a Gaussian 'functor' object to specify the # time-dependent igniter mass flow rate. igniter_mdot = Gaussian(t0=0.1, FWHM=0.05, A=0.1) m3 = reactors.MassFlowController(upstream=self.igniter, downstream=self.combustor, mdot=igniter_mdot) # put a valve on the exhaust line to regulate the pressure self.v = reactors.Valve(upstream=self.combustor, downstream=self.exhaust, Kv=1.0) # the simulation only contains one reactor self.sim = reactors.ReactorNet([self.combustor])
def setUp(self): # reservoir to represent the environment self.gas0 = ct.importPhase('air.cti') self.gas0.set(T=300, P=ct.OneAtm) self.env = reactors.Reservoir(self.gas0) # reactor to represent the side filled with Argon self.gas1 = ct.importPhase('air.cti') self.gas1.set(T=1000.0, P=30 * ct.OneAtm, X='AR:1.0') self.r1 = reactors.Reactor(self.gas1) # reactor to represent the combustible mixture self.gas2 = ct.importPhase('h2o2.cti') self.gas2.set(T=500.0, P=1.5 * ct.OneAtm, X='H2:0.5, O2:1.0, AR:10.0') self.r2 = reactors.Reactor(self.gas2) # Wall between the two reactors self.w1 = reactors.Wall(self.r2, self.r1) self.w1.set(area=1.0, K=2e-4, U=400.0) # Wall to represent heat loss to the environment self.w2 = reactors.Wall(self.r2, self.env) self.w2.set(area=1.0, U=2000.0) # Create the reactor network self.sim = reactors.ReactorNet([self.r1, self.r2])