This module defines a class that can be used to solve the Linear Euler equations in 2-D. The Linear Euler Equations, here, are the Euler equations linearized about a motionless background state.
The conserved variables are
The conservative flux is
and the source terms are null.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=prec), | public | :: | c | = | 1.0_prec | ||
type(MappedScalar2D), | public | :: | dSdt | ||||
real(kind=prec), | public | :: | dt | ||||
real(kind=prec), | public | :: | entropy | ||||
type(MappedVector2D), | public | :: | flux | ||||
type(MappedScalar2D), | public | :: | fluxDivergence | ||||
real(kind=prec), | public | :: | g | = | 0.0_prec | ||
type(SEMQuad), | public, | pointer | :: | geometry | |||
logical, | public | :: | gradient_enabled | = | .false. | ||
integer, | public | :: | ioIterate | = | 0 | ||
type(Mesh2D), | public, | pointer | :: | mesh | |||
integer, | public | :: | nvar | ||||
logical, | public | :: | prescribed_bcs_enabled | = | .true. | ||
real(kind=prec), | public | :: | rho0 | = | 1.0_prec | ||
type(MappedScalar2D), | public | :: | solution | ||||
type(MappedVector2D), | public | :: | solutionGradient | ||||
type(MappedScalar2D), | public | :: | source | ||||
real(kind=prec), | public | :: | t | ||||
logical, | public | :: | tecplot_enabled | = | .true. | ||
procedure(SELF_timeIntegrator), | public, | pointer | :: | timeIntegrator | => | Euler_timeIntegrator | |
type(MappedScalar2D), | public | :: | workSol |
procedure, public :: AdditionalFree => AdditionalFree_Model | |
procedure, public :: AdditionalInit => AdditionalInit_Model | |
procedure, public :: AdditionalOutput => AdditionalOutput_Model | |
procedure, public :: BoundaryFlux => BoundaryFlux_DGModel2D_t | |
procedure, public :: CalculateEntropy => CalculateEntropy_DGModel2D_t | |
procedure, public :: CalculateSolutionGradient => CalculateSolutionGradient_DGModel2D_t | |
procedure, public :: CalculateTendency => CalculateTendency_DGModel2D_t | |
procedure, public :: Euler_timeIntegrator | |
procedure, public :: FluxMethod => fluxmethod_DGModel2D_t | |
procedure, public :: ForwardStep => ForwardStep_Model | |
procedure, public :: Free => Free_DGModel2D_t | |
procedure, public :: GetSimulationTime | |
procedure, public :: IncrementIOCounter | |
procedure, public :: Init => Init_DGModel2D_t | |
procedure, public :: LowStorageRK2_timeIntegrator | |
procedure, public :: LowStorageRK3_timeIntegrator | |
procedure, public :: LowStorageRK4_timeIntegrator | |
procedure, public :: PreTendency => PreTendency_Model | |
procedure, public :: PrintType => PrintType_Model | |
procedure, public :: ReadModel => Read_DGModel2D_t | |
procedure, public :: ReportEntropy => ReportEntropy_Model | |
procedure, public :: ReportMetrics => ReportMetrics_DGModel2D_t | |
procedure, public :: ReportUserMetrics => ReportUserMetrics_Model | |
procedure, public :: SetBoundaryCondition => setboundarycondition_DGModel2D_t | |
procedure, public :: SetGradientBoundaryCondition => setgradientboundarycondition_DGModel2D_t | |
procedure, public :: SetMetadata => SetMetadata_LinearEuler2D_t | |
procedure, public :: SetNumberOfVariables => SetNumberOfVariables_LinearEuler2D_t | |
procedure, public :: SetSimulationTime | |
generic, public :: SetSolution => SetSolutionFromChar_DGModel2D_t, SetSolutionFromEqn_DGModel2D_t | |
generic, public :: SetTimeIntegrator => SetTimeIntegrator_withChar | |
procedure, public :: SourceMethod => sourcemethod_DGModel2D_t | |
procedure, public :: SphericalSoundWave => SphericalSoundWave_LinearEuler2D_t | |
procedure, public :: UpdateGRK2 => UpdateGRK2_DGModel2D_t | |
procedure, public :: UpdateGRK3 => UpdateGRK3_DGModel2D_t | |
procedure, public :: UpdateGRK4 => UpdateGRK4_DGModel2D_t | |
procedure, public :: UpdateSolution => UpdateSolution_DGModel2D_t | |
procedure, public :: WriteModel => Write_DGModel2D_t | |
procedure, public :: WriteTecplot => WriteTecplot_DGModel2D_t | |
procedure, public :: entropy_func => entropy_func_LinearEuler2D_t | |
procedure, public :: flux1D => flux1d_Model | |
procedure, public :: flux2d => flux2d_LinearEuler2D_t | |
procedure, public :: flux3D => flux3d_Model | |
procedure, public :: hbc1d_NoNormalFlow => hbc1d_Generic_Model | |
procedure, public :: hbc1d_Prescribed => hbc1d_Prescribed_Model | |
procedure, public :: hbc1d_Radiation => hbc1d_Generic_Model | |
procedure, public :: hbc2d_NoNormalFlow => hbc2d_NoNormalFlow_LinearEuler2D_t | |
procedure, public :: hbc2d_Prescribed => hbc2d_Prescribed_Model | |
procedure, public :: hbc2d_Radiation => hbc2d_Generic_Model | |
procedure, public :: hbc3d_NoNormalFlow => hbc3d_Generic_Model | |
procedure, public :: hbc3d_Prescribed => hbc3d_Prescribed_Model | |
procedure, public :: hbc3d_Radiation => hbc3d_Generic_Model | |
procedure, public :: pbc1d_NoNormalFlow => pbc1d_Generic_Model | |
procedure, public :: pbc1d_Prescribed => pbc1d_Prescribed_Model | |
procedure, public :: pbc1d_Radiation => pbc1d_Generic_Model | |
procedure, public :: pbc2d_NoNormalFlow => pbc2d_Generic_Model | |
procedure, public :: pbc2d_Prescribed => pbc2d_Prescribed_Model | |
procedure, public :: pbc2d_Radiation => pbc2d_Generic_Model | |
procedure, public :: pbc3d_NoNormalFlow => pbc3d_Generic_Model | |
procedure, public :: pbc3d_Prescribed => pbc3d_Prescribed_Model | |
procedure, public :: pbc3d_Radiation => pbc3d_Generic_Model | |
procedure, public :: riemannflux1d => riemannflux1d_Model | |
procedure, public :: riemannflux2d => riemannflux2d_LinearEuler2D_t | |
procedure, public :: riemannflux3d => riemannflux3d_Model | |
procedure, public :: source1d => source1d_Model | |
procedure, public :: source2d => source2d_Model | |
procedure, public :: source3d => source3d_Model |
The entropy function is the sum of kinetic and internal energy For the linear model, this is
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LinearEuler2D_t), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LinearEuler2D_t), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar,1:2) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LinearEuler2D_t), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | nhat(1:2) |
Uses a local lax-friedrich's upwind flux The max eigenvalue is taken as the sound speed
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LinearEuler2D_t), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | sL(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | sR(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar,1:2) | |||
real(kind=prec), | intent(in) | :: | nhat(1:2) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LinearEuler2D_t), | intent(inout) | :: | this |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LinearEuler2D_t), | intent(inout) | :: | this |
This subroutine sets the initial condition for a weak blast wave problem. The initial condition is given by
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(LinearEuler2D_t), | intent(inout) | :: | this | |||
real(kind=prec), | intent(in) | :: | rhoprime | |||
real(kind=prec), | intent(in) | :: | Lr | |||
real(kind=prec), | intent(in) | :: | x0 | |||
real(kind=prec), | intent(in) | :: | y0 |