Skip to content
Snippets Groups Projects
Forked from gmsh / gmsh
14665 commits behind the upstream repository.
dgConservationLawPerfectGas.h 1.80 KiB
#ifndef _DG_CONSERVATION_LAW_PERFECT_GAS_H_
#define _DG_CONSERVATION_LAW_PERFECT_GAS_H_
#include "dgConservationLaw.h"
// Compressible Navier-Stokes equations
// d(rho)/dt  + d(rhou)/dx  + d(rhov)/dy = 0
// d(rhou)/dt + d(rhou^2+p)/dx + d(rhouv)/dy + d(t_xx)/dx + d(t_xy)/dy= 0
// d(rhov)/dt + d(rhouv)/dx + d(rhov^2+p)/dy + d(t_xy)/dx + d(t_yy)/dy= 0
// d(rhoE)/dt + d(rhouH)/dx + d(rhovH)/dy + d(ut_xx+vt_xy-q_x)/dx + d(ut_xy+vt_yy-q_y)/dy= 0
class dgPerfectGasLaw2d : public dgConservationLaw {
  class advection;
  class diffusion;
  class riemann;
  class riemannGodunov;
  class source;
  class maxConvectiveSpeed;
  class maxDiffusivity;
  class clipToPhysics;
  // the name of the functions for 
  // viscosity (_muFunctionName)
  // thermal conductivity (_kappaFunctionName)
  std::string _kappaFunctionName,_muFunctionName;
  std::string _sourceFunctionName;

  public:
  dataCacheDouble *newMaxConvectiveSpeed( dataCacheMap &cacheMap) const;
  dataCacheDouble *newMaximumDiffusivity( dataCacheMap &cacheMap) const;
  dataCacheDouble *newConvectiveFlux( dataCacheMap &cacheMap) const;
  dataCacheDouble *newRiemannSolver( dataCacheMap &cacheMapLeft, dataCacheMap &cacheMapRight) const;
  dataCacheDouble *newDiffusiveFlux( dataCacheMap &cacheMap) const;
  dataCacheDouble *newSourceTerm (dataCacheMap &cacheMap) const;
  dataCacheDouble *newClipToPhysics (dataCacheMap &cacheMap) const;
  dgPerfectGasLaw2d();  
  dgBoundaryCondition *newWallBoundary() ;
  dgBoundaryCondition *newSlipWallBoundary() ;
  // sets some coefficients 
  void setViscosityAndThermalConductivity (std::string a, std::string b){
    _muFunctionName = a;
    _kappaFunctionName = b;
  }
  // sets some coefficients 
  void setSource(std::string a){
    _sourceFunctionName = a;
  }
};
class binding;
void dgPerfectGasLaw2dRegisterBindings(binding *b);
#endif