def evolve(self, dt): """ Evolve the equations of compressible hydrodynamics through a timestep dt. """ tm_evolve = self.tc.timer("evolve") tm_evolve.begin() dens = self.cc_data.get_var("density") xmom = self.cc_data.get_var("x-momentum") ymom = self.cc_data.get_var("y-momentum") ener = self.cc_data.get_var("energy") erad = self.cc_data.get_var("erad") grav = self.rp.get_param("compressible.grav") myg = self.cc_data.grid Flux_x, Flux_y = unsplitFluxes(self.cc_data, self.rp, self.vars, self.tc, dt) old_dens = dens.copy() old_ymom = ymom.copy() # conservative update dtdx = dt/myg.dx dtdy = dt/myg.dy for n in range(self.vars.nvar): var = self.cc_data.get_var_by_index(n) var[myg.ilo:myg.ihi+1,myg.jlo:myg.jhi+1] += \ dtdx*(Flux_x[myg.ilo :myg.ihi+1,myg.jlo :myg.jhi+1,n] - \ Flux_x[myg.ilo+1:myg.ihi+2,myg.jlo :myg.jhi+1,n]) + \ dtdy*(Flux_y[myg.ilo :myg.ihi+1,myg.jlo :myg.jhi+1,n] - \ Flux_y[myg.ilo :myg.ihi+1,myg.jlo+1:myg.jhi+2,n]) # radiation source terms # HACK -- need to update # gravitational source terms ymom += 0.5*dt*(dens + old_dens)*grav ener += 0.5*dt*(ymom + old_ymom)*grav # parabolic update # HACK -- need to update tm_evolve.end()
def evolve(self, dt): """ Evolve the equations of compressible hydrodynamics through a timestep dt. """ tm_evolve = self.tc.timer("evolve") tm_evolve.begin() dens = self.cc_data.get_var("density") xmom = self.cc_data.get_var("x-momentum") ymom = self.cc_data.get_var("y-momentum") ener = self.cc_data.get_var("energy") erad = self.cc_data.get_var("erad") grav = self.rp.get_param("compressible.grav") myg = self.cc_data.grid Flux_x, Flux_y = unsplitFluxes(self.cc_data, self.rp, self.vars, self.tc, dt) old_dens = dens.copy() old_ymom = ymom.copy() # conservative update dtdx = dt / myg.dx dtdy = dt / myg.dy for n in range(self.vars.nvar): var = self.cc_data.get_var_by_index(n) var[myg.ilo:myg.ihi+1,myg.jlo:myg.jhi+1] += \ dtdx*(Flux_x[myg.ilo :myg.ihi+1,myg.jlo :myg.jhi+1,n] - \ Flux_x[myg.ilo+1:myg.ihi+2,myg.jlo :myg.jhi+1,n]) + \ dtdy*(Flux_y[myg.ilo :myg.ihi+1,myg.jlo :myg.jhi+1,n] - \ Flux_y[myg.ilo :myg.ihi+1,myg.jlo+1:myg.jhi+2,n]) # radiation source terms # HACK -- need to update # gravitational source terms ymom += 0.5 * dt * (dens + old_dens) * grav ener += 0.5 * dt * (ymom + old_ymom) * grav # parabolic update # HACK -- need to update tm_evolve.end()
def evolve(self): """ Evolve the equations of compressible hydrodynamics through a timestep dt. """ tm_evolve = self.tc.timer("evolve") tm_evolve.begin() dens = self.cc_data.get_var("density") ymom = self.cc_data.get_var("y-momentum") ener = self.cc_data.get_var("energy") grav = self.rp.get_param("compressible.grav") myg = self.cc_data.grid Flux_x, Flux_y = unsplitFluxes(self.cc_data, self.rp, self.vars, self.tc, self.dt) old_dens = dens.copy() old_ymom = ymom.copy() # conservative update dtdx = self.dt / myg.dx dtdy = self.dt / myg.dy for n in range(self.vars.nvar): var = self.cc_data.get_var_by_index(n) var.v()[:,:] += \ dtdx*(Flux_x.v(n=n) - Flux_x.ip(1, n=n)) + \ dtdy*(Flux_y.v(n=n) - Flux_y.jp(1, n=n)) # gravitational source terms ymom.d[:, :] += 0.5 * self.dt * (dens.d[:, :] + old_dens.d[:, :]) * grav ener.d[:, :] += 0.5 * self.dt * (ymom.d[:, :] + old_ymom.d[:, :]) * grav # increment the time self.cc_data.t += self.dt self.n += 1 tm_evolve.end()
def evolve(self): """ Evolve the equations of compressible hydrodynamics through a timestep dt. """ tm_evolve = self.tc.timer("evolve") tm_evolve.begin() dens = self.cc_data.get_var("density") ymom = self.cc_data.get_var("y-momentum") ener = self.cc_data.get_var("energy") grav = self.rp.get_param("compressible.grav") myg = self.cc_data.grid Flux_x, Flux_y = unsplitFluxes(self.cc_data, self.aux_data, self.rp, self.vars, self.solid, self.tc, self.dt) old_dens = dens.copy() old_ymom = ymom.copy() # conservative update dtdx = self.dt/myg.dx dtdy = self.dt/myg.dy for n in range(self.vars.nvar): var = self.cc_data.get_var_by_index(n) var.v()[:,:] += \ dtdx*(Flux_x.v(n=n) - Flux_x.ip(1, n=n)) + \ dtdy*(Flux_y.v(n=n) - Flux_y.jp(1, n=n)) # gravitational source terms ymom.d[:,:] += 0.5*self.dt*(dens.d[:,:] + old_dens.d[:,:])*grav ener.d[:,:] += 0.5*self.dt*(ymom.d[:,:] + old_ymom.d[:,:])*grav # increment the time self.cc_data.t += self.dt self.n += 1 tm_evolve.end()