Class to solve the linear conservation law (Hyperbolic equation) in 1-D by a MUSCL Finite Volume scheme. More...

#include <LCL1D.h>

Inheritance diagram for LCL1D:
Muscl1D Muscl

Public Member Functions

 LCL1D (Mesh &m)
 Constructor using mesh instance.
 
 LCL1D (Mesh &m, Vect< real_t > &U)
 Constructor.
 
 ~LCL1D ()
 Destructor.
 
Vect< real_t > & getFlux ()
 Return sidewise fluxes.
 
void setInitialCondition (Vect< real_t > &u)
 Assign initial condition by a vector.
 
void setInitialCondition (real_t u)
 Assign a constant initial condition.
 
void setReconstruction ()
 Run MUSCL reconstruction.
 
real_t runOneTimeStep ()
 Run one time step of the linear conservation law.
 
void setBC (real_t u)
 Set Dirichlet boundary condition.
 
void setBC (const Side &sd, real_t u)
 Set Dirichlet boundary condition.
 
void setBC (int code, real_t u)
 Set Dirichlet boundary condition.
 
void setVelocity (Vect< real_t > &v)
 Set convection velocity.
 
void setVelocity (real_t v)
 Set (constant) convection velocity.
 
void setReferenceLength (real_t dx)
 Assign reference length value.
 
real_t getReferenceLength () const
 Return reference length.
 
void Forward (const Vect< real_t > &Flux, Vect< real_t > &Field)
 Computation of the primal variable n->n+1.
 
- Public Member Functions inherited from Muscl1D
 Muscl1D (Mesh &m)
 Constructor using mesh instance.
 
 ~Muscl1D ()
 Destructor.
 
real_t getMeanLength () const
 Return mean length.
 
real_t getMaximumLength () const
 Return maximal length.
 
real_t getMinimumLength () const
 Return mimal length.
 
real_t getTauLim () const
 Return mean length.
 
void print_mesh_stat ()
 Output mesh information.
 
- Public Member Functions inherited from Muscl
 Muscl (Mesh &m)
 Constructor using mesh instance.
 
virtual ~Muscl ()
 Destructor.
 
void setTimeStep (real_t dt)
 Assign time step value.
 
real_t getTimeStep () const
 Return time step value.
 
void setCFL (real_t CFL)
 Assign CFL value.
 
real_t getCFL () const
 Return CFL value.
 
void setReferenceLength (real_t dx)
 Assign reference length value.
 
real_t getReferenceLength () const
 Return reference length.
 
MeshgetMesh () const
 Return reference to Mesh instance.
 
void setVerbose (int v)
 Set verbosity parameter.
 
bool setReconstruction (const Vect< real_t > &U, Vect< real_t > &LU, Vect< real_t > &RU, size_t dof)
 Function to reconstruct by the Muscl method.
 
void setMethod (const Method &s)
 Choose a flux solver.
 
void setSolidZoneCode (int c)
 Choose a code for solid zone.
 
bool getSolidZone () const
 Return flag for presence of solid zones.
 
int getSolidZoneCode () const
 Return code of solid zone, 0 if this one is not present.
 
void setLimiter (Limiter l)
 Choose a flux limiter.
 

Additional Inherited Members

- Public Types inherited from Muscl
enum  Method {
  FIRST_ORDER_METHOD = 0 ,
  MULTI_SLOPE_Q_METHOD = 1 ,
  MULTI_SLOPE_M_METHOD = 2
}
 Enumeration for flux choice. More...
 
enum  Limiter {
  MINMOD_LIMITER = 0 ,
  VANLEER_LIMITER = 1 ,
  SUPERBEE_LIMITER = 2 ,
  VANALBADA_LIMITER = 3 ,
  MAX_LIMITER = 4
}
 Enumeration of flux limiting methods. More...
 
enum  SolverType {
  ROE_SOLVER = 0 ,
  VFROE_SOLVER = 1 ,
  LF_SOLVER = 2 ,
  RUSANOV_SOLVER = 3 ,
  HLL_SOLVER = 4 ,
  HLLC_SOLVER = 5 ,
  MAX_SOLVER = 6
}
 Enumeration of various solvers for the Riemann problem. More...
 

Detailed Description

Class to solve the linear conservation law (Hyperbolic equation) in 1-D by a MUSCL Finite Volume scheme.

Author
S. Clain, V. Clauzon

Member Function Documentation

◆ Forward()

void Forward ( const Vect< real_t > &  Flux,
Vect< real_t > &  Field 
)

Computation of the primal variable n->n+1.

Vector Flux contains elementwise fluxes issued from the Riemann problem, calculated with, as left element, getNeighborElement(1) and right element getNeighborElement(2) if getNeighborElement(2) doesn't exist, we are on a boundary and we prescribe a symmetry condition

◆ runOneTimeStep()

real_t runOneTimeStep ( )

Run one time step of the linear conservation law.

Returns
Value of the time step

◆ setBC() [1/3]

void setBC ( const Side sd,
real_t  u 
)

Set Dirichlet boundary condition.

Assign a constant value to a side

Parameters
[in]sdSide to which value is prescibed
[in]uValue to prescribe

◆ setBC() [2/3]

void setBC ( int  code,
real_t  u 
)

Set Dirichlet boundary condition.

Assign a constant value sides with a given code

Parameters
[in]codeCode of sides to which value is prescibed
[in]uValue to prescribe

◆ setBC() [3/3]

void setBC ( real_t  u)

Set Dirichlet boundary condition.

Assign a constant value u to all boundary sides

◆ setInitialCondition() [1/2]

void setInitialCondition ( real_t  u)

Assign a constant initial condition.

Parameters
[in]uConstant value for the initial condition

◆ setInitialCondition() [2/2]

void setInitialCondition ( Vect< real_t > &  u)

Assign initial condition by a vector.

Parameters
[in]uVector containing initial condition

◆ setVelocity()

void setVelocity ( Vect< real_t > &  v)

Set convection velocity.

Parameters
[in]vVect instance containing velocity