[docs]defsym_inviscid_flux(sym_cv,sym_pressure):"""Return symbolic expression for inviscid flux."""returnmake_conserved(dim=sym_cv.dim,mass=sym_cv.momentum,momentum=(sym_cv.mass*(np.outer(sym_cv.velocity,sym_cv.velocity))+sym_pressure*np.eye(sym_cv.dim)),energy=(sym_cv.energy+sym_pressure)*sym_cv.velocity,species_mass=sym_cv.species_mass.reshape(-1,1)*sym_cv.velocity)
[docs]defsym_euler(sym_cv,sym_pressure):"""Return symbolic expression for the NS operator applied to a fluid state."""return-sym_div(sym_cv.dim,sym_inviscid_flux(sym_cv,sym_pressure))
[docs]defsym_viscous_stress_tensor(sym_cv,mu=1):"""Symbolic version of the viscous stress tensor."""dvel=sym_grad(sym_cv.dim,sym_cv.velocity)returnmu*((dvel+dvel.T)-(2./3.)*(dvel.trace()*np.eye(sym_cv.dim)))
[docs]defsym_viscous_flux(sym_cv,sym_temperature,mu=1,kappa=0,species_diffusivities=None):"""Return symbolic version of viscous flux."""dim=sym_cv.dimrho=sym_cv.massmom=sym_cv.momentumvel=mom/rho# viscous stress tensor = momentum fluxtau=sym_viscous_stress_tensor(sym_cv,mu=mu)# energy flux : viscous + heat_fluxe_flux=np.dot(tau,vel)-sym_heat_flux(dim,sym_temperature,kappa=kappa)# species fluxessp_flux=sym_diffusive_flux(sym_cv,species_diffusivities=species_diffusivities)returnmake_conserved(dim=dim,mass=0*mom,energy=e_flux,momentum=tau,species_mass=-sp_flux)