rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
Functions
fv_num_conv_flux_engquist_osher.m File Reference

Function computing a numerical convective Engquist-Osher flux matrix. More...

Go to the source code of this file.

Functions

function
num_flux = 
fv_num_conv_flux_engquist_osher (model, model_data, U, NU_ind)
 Function computing a numerical convective Engquist-Osher flux matrix. More...
 

Detailed Description

Function computing a numerical convective Engquist-Osher flux matrix.

Definition in file fv_num_conv_flux_engquist_osher.m.

Function Documentation

function num_flux = fv_num_conv_flux_engquist_osher (   model,
  model_data,
  U,
  NU_ind 
)

Function computing a numerical convective Engquist-Osher flux matrix.

Engquist-Osher-Flux in 2D

\[g_{jl}(u,v) = |e_{jl}| \cdot (c^+_{jl}(u) + c^-_{jl}(v))\]

with

\[c^+_{jl}(u) = c_{jl}(0) + \int_0^u \max(c_{jl}'(s),0) ds\]

\[c^-_{jl}(u) = \int_0^u \min(c_{jl}'(s),0) ds\]

\[c_{jl}(u) = f(u) \cdot n_{jl}\]

if we assume, that

  1. \(f'(u)\cdot n\) does not change sign on \([0,u]\) and
  2. \(f(0) = 0\) then this simplifies to

    \[c^+_{jl}(u) = \left\{\begin{array}{rl} f(u)\cdot n_{jl} & \mbox{if }f'(u)\cdot n_{jl} > 0 \\ 0 & \mbox{otherwise} \end{array}\right.\]

    \[c^-_{jl}(v) = \left\{\begin{array}{rl} f(v)\cdot n_{jl} & \mbox{if }f'(v)\cdot n_{jl} < 0 \\ 0 & \mbox{otherwise}. \end{array}\right.\]

Dirichlet-boundary treatment is performed, but Neumann-values are set to nan. They must be performed by the calling function.

fields of num_flux
Lg: lipschitz constant satisfying

\[|g_{ij}(w,v) - g_{ij}(w',v')| \leq Lg |S_{ij}| ( |w'-w| + |v'-v| ).\]

G: the matrix of numerical flux values across the edges.
boundary treatment is performed as follows
  • in dirichlet-boundary points, the neighbour-values are simply set to this value and the flux is computed.
  • Neumann-treatment is not performed here
We assume for the convective flux function
  1. \(f'(u)\cdot n\) does not change sign on interval \((u,0)\)
  2. \(f(0) = 0\)

Additionally, a velocity function must be available in order to compute the derivative of the convection term.

Parameters
modelmodel
model_datamodel data
UU
NU_indNU ind
Return values
num_fluxnum flux
Required fields of model_data:
  • grid —  a structure containing geometry information of a mesh used for discretizations
Required fields of model:
  • flux_quad_degree —  flux quad degree
  • flux_linear —  flux linear
  • divclean_mode —  divclean mode
  • dirichlet_values_ptr —  dirichlet values ptr
  • conv_flux_ptr —  conv flux ptr
  • conv_flux_derivative_ptr —  conv flux derivative ptr
Generated fields of num_flux:
  • G —  G
  • Lg —  Lg

Definition at line 17 of file fv_num_conv_flux_engquist_osher.m.

Here is the call graph for this function:

Here is the caller graph for this function: