diff --git a/dune/fem-dg/models/modelwrapper.hh b/dune/fem-dg/models/modelwrapper.hh index 65f3d2343799b2b18dd2e3202f6a59568947c4ca..71d5e337abe7cd91ba37f6a5af63416e171aa2d9 100644 --- a/dune/fem-dg/models/modelwrapper.hh +++ b/dune/fem-dg/models/modelwrapper.hh @@ -338,15 +338,6 @@ namespace Fem DomainType& velocity) const { velocity = AdditionalType :: velocity( en, x, u ); - /* - for(int i=0; i<dimDomain; ++i) - { - // U = (rho, rho v_0,...,rho v_(d-1), e ) - // we store \rho u but do not need to divide by \rho here since only - // sign is needed. - velocity[i] = u[i+1]; - } - */ } // we have physical check for this model @@ -382,6 +373,7 @@ namespace Fem const RangeType& uRight, RangeType& jump) const { + jump = AdditionalType :: jump( it, x, uLeft, uRight ); // take pressure as shock detection values //const RangeFieldType pl = pressure( uLeft ); //const RangeFieldType pr = pressure( uRight ); diff --git a/pydemo/euler/euler.ufl b/pydemo/euler/euler.ufl index 4efd3b885f440daa351f10df981fefe4bdc43e13..945f4fd52d5fc2664ac07ee017681f3f61681bfc 100644 --- a/pydemo/euler/euler.ufl +++ b/pydemo/euler/euler.ufl @@ -2,7 +2,7 @@ gamma = 1.4 class Compressible2DEuler: def rhoeps(U): v = 0.5*(U[1]**2 + U[2]**2)/U[0] - rE = U[-1] + rE = U[3] return rE - v def pressure(U): return (gamma-1)*Compressible2DEuler.rhoeps(U) @@ -12,7 +12,7 @@ class Compressible2DEuler: return [U[0],U[1]/U[0],U[2]/U[0],Compressible2DEuler.pressure(U)] def F_c(U): rho, u,v, p = Compressible2DEuler.toPrim(U) - rE = U[-1] + rE = U[3] res = as_matrix( [ [rho*u, rho*v], [rho*u**2 + p, rho*u*v], [rho*u*v, rho*v**2 + p], @@ -26,6 +26,10 @@ class Compressible2DEuler: return as_vector( [U[1],U[2]] ) def physical(U): return conditional( (U[0]>1e-8), conditional( Compressible2DEuler.rhoeps(U) > 1e-8 , 1, 0 ), 0 ) + def jump(U,V): + pL = Compressible2DEuler.pressure(U) + pR = Compressible2DEuler.pressure(V) + return (pL - pR)/(0.5*(pL + pR)) Model = Compressible2DEuler diff --git a/python/dune/femdg/_operators.py b/python/dune/femdg/_operators.py index 563e6fdd8cfab807119b02b3e06194819984b8c8..5edbb74114506292d695265a19232c746969562a 100644 --- a/python/dune/femdg/_operators.py +++ b/python/dune/femdg/_operators.py @@ -234,6 +234,16 @@ def createFemDGSolver(Model, space): targs=['class Entity, class Point'], static=True, predefined=predefined) + jump = getattr(Model,"jump",None) + jump = jump(u,v) + generateMethod(struct, jump, + 'double', 'jump', + args=['const Intersection& it', 'const Point &x', + 'const RangeType &u', + 'const RangeType &v'], + targs=['class Intersection, class Point'], static=True, + predefined=predefined) + writer = SourceWriter(StringWriter()) writer.emit([struct])