foreseer_euler_1d Module

module~~foreseer_euler_1d~~UsesGraph module~foreseer_euler_1d foreseer_euler_1d foodie foodie foodie->module~foreseer_euler_1d wenoof wenoof wenoof->module~foreseer_euler_1d module~foreseer foreseer module~foreseer->module~foreseer_euler_1d penf penf penf->module~foreseer_euler_1d module~foreseer_eos_object foreseer_eos_object penf->module~foreseer_eos_object module~foreseer_riemann_solver_compressible_hllc foreseer_riemann_solver_compressible_hllc penf->module~foreseer_riemann_solver_compressible_hllc module~foreseer_primitive_object foreseer_primitive_object penf->module~foreseer_primitive_object module~foreseer_riemann_solver_compressible_llf foreseer_riemann_solver_compressible_llf penf->module~foreseer_riemann_solver_compressible_llf module~foreseer_compressible_transformations foreseer_compressible_transformations penf->module~foreseer_compressible_transformations module~foreseer_riemann_solver_object foreseer_riemann_solver_object penf->module~foreseer_riemann_solver_object module~foreseer_eos_compressible foreseer_eos_compressible penf->module~foreseer_eos_compressible module~foreseer_conservative_object foreseer_conservative_object penf->module~foreseer_conservative_object module~foreseer_riemann_solver_compressible_exact foreseer_riemann_solver_compressible_exact penf->module~foreseer_riemann_solver_compressible_exact module~foreseer_conservative_compressible foreseer_conservative_compressible penf->module~foreseer_conservative_compressible module~foreseer_riemann_pattern_compressible_pvl foreseer_riemann_pattern_compressible_pvl penf->module~foreseer_riemann_pattern_compressible_pvl module~foreseer_riemann_solver_compressible_roe foreseer_riemann_solver_compressible_roe penf->module~foreseer_riemann_solver_compressible_roe module~foreseer_primitive_compressible foreseer_primitive_compressible penf->module~foreseer_primitive_compressible module~foreseer_riemann_solver_compressible_pvl foreseer_riemann_solver_compressible_pvl penf->module~foreseer_riemann_solver_compressible_pvl module~foreseer_riemann_pattern_compressible_object foreseer_riemann_pattern_compressible_object penf->module~foreseer_riemann_pattern_compressible_object iso_fortran_env iso_fortran_env iso_fortran_env->module~foreseer_euler_1d iso_fortran_env->module~foreseer_eos_compressible iso_fortran_env->module~foreseer_conservative_compressible iso_fortran_env->module~foreseer_primitive_compressible vecfor vecfor vecfor->module~foreseer_euler_1d vecfor->module~foreseer_riemann_solver_compressible_hllc vecfor->module~foreseer_primitive_object vecfor->module~foreseer_riemann_solver_compressible_llf vecfor->module~foreseer_compressible_transformations vecfor->module~foreseer_riemann_solver_object module~foreseer_riemann_pattern_object foreseer_riemann_pattern_object vecfor->module~foreseer_riemann_pattern_object vecfor->module~foreseer_conservative_object vecfor->module~foreseer_riemann_solver_compressible_exact vecfor->module~foreseer_conservative_compressible vecfor->module~foreseer_riemann_pattern_compressible_pvl vecfor->module~foreseer_riemann_solver_compressible_roe vecfor->module~foreseer_primitive_compressible vecfor->module~foreseer_riemann_solver_compressible_pvl vecfor->module~foreseer_riemann_pattern_compressible_object module~foreseer_eos_object->module~foreseer module~foreseer_eos_object->module~foreseer_riemann_solver_compressible_hllc module~foreseer_eos_object->module~foreseer_primitive_object module~foreseer_eos_object->module~foreseer_riemann_solver_compressible_llf module~foreseer_eos_object->module~foreseer_compressible_transformations module~foreseer_eos_object->module~foreseer_riemann_solver_object module~foreseer_eos_object->module~foreseer_riemann_pattern_object module~foreseer_eos_object->module~foreseer_eos_compressible module~foreseer_eos_object->module~foreseer_conservative_object module~foreseer_eos_object->module~foreseer_riemann_solver_compressible_exact module~foreseer_eos_object->module~foreseer_conservative_compressible module~foreseer_eos_object->module~foreseer_riemann_pattern_compressible_pvl module~foreseer_eos_object->module~foreseer_riemann_solver_compressible_roe module~foreseer_eos_object->module~foreseer_primitive_compressible module~foreseer_eos_object->module~foreseer_riemann_solver_compressible_pvl module~foreseer_eos_object->module~foreseer_riemann_pattern_compressible_object module~foreseer_riemann_solver_compressible_hllc->module~foreseer module~foreseer_primitive_object->module~foreseer module~foreseer_primitive_object->module~foreseer_primitive_compressible module~foreseer_riemann_solver_compressible_llf->module~foreseer module~foreseer_compressible_transformations->module~foreseer module~foreseer_riemann_solver_object->module~foreseer module~foreseer_riemann_solver_object->module~foreseer_riemann_solver_compressible_hllc module~foreseer_riemann_solver_object->module~foreseer_riemann_solver_compressible_llf module~foreseer_riemann_solver_object->module~foreseer_riemann_solver_compressible_exact module~foreseer_riemann_solver_object->module~foreseer_riemann_solver_compressible_roe module~foreseer_riemann_solver_object->module~foreseer_riemann_solver_compressible_pvl module~foreseer_riemann_pattern_object->module~foreseer module~foreseer_riemann_pattern_object->module~foreseer_riemann_pattern_compressible_object module~foreseer_eos_compressible->module~foreseer module~foreseer_eos_compressible->module~foreseer_riemann_solver_compressible_roe module~foreseer_eos_compressible->module~foreseer_riemann_pattern_compressible_object module~foreseer_conservative_object->module~foreseer module~foreseer_conservative_object->module~foreseer_riemann_solver_compressible_hllc module~foreseer_conservative_object->module~foreseer_riemann_solver_compressible_llf module~foreseer_conservative_object->module~foreseer_riemann_solver_object module~foreseer_conservative_object->module~foreseer_riemann_pattern_object module~foreseer_conservative_object->module~foreseer_riemann_solver_compressible_exact module~foreseer_conservative_object->module~foreseer_conservative_compressible module~foreseer_conservative_object->module~foreseer_riemann_pattern_compressible_pvl module~foreseer_conservative_object->module~foreseer_riemann_solver_compressible_roe module~foreseer_conservative_object->module~foreseer_riemann_solver_compressible_pvl module~foreseer_conservative_object->module~foreseer_riemann_pattern_compressible_object module~foreseer_riemann_solver_compressible_exact->module~foreseer module~foreseer_conservative_compressible->module~foreseer module~foreseer_conservative_compressible->module~foreseer_riemann_solver_compressible_hllc module~foreseer_conservative_compressible->module~foreseer_riemann_solver_compressible_llf module~foreseer_conservative_compressible->module~foreseer_compressible_transformations module~foreseer_conservative_compressible->module~foreseer_riemann_solver_compressible_exact module~foreseer_conservative_compressible->module~foreseer_riemann_solver_compressible_roe module~foreseer_conservative_compressible->module~foreseer_riemann_solver_compressible_pvl module~foreseer_conservative_compressible->module~foreseer_riemann_pattern_compressible_object module~foreseer_riemann_pattern_compressible_pvl->module~foreseer module~foreseer_riemann_pattern_compressible_pvl->module~foreseer_riemann_solver_compressible_hllc module~foreseer_riemann_pattern_compressible_pvl->module~foreseer_riemann_solver_compressible_llf module~foreseer_riemann_pattern_compressible_pvl->module~foreseer_riemann_solver_compressible_exact module~foreseer_riemann_pattern_compressible_pvl->module~foreseer_riemann_solver_compressible_roe module~foreseer_riemann_pattern_compressible_pvl->module~foreseer_riemann_solver_compressible_pvl module~foreseer_riemann_solver_compressible_roe->module~foreseer module~foreseer_primitive_compressible->module~foreseer module~foreseer_primitive_compressible->module~foreseer_compressible_transformations module~foreseer_riemann_solver_compressible_pvl->module~foreseer module~foreseer_riemann_pattern_compressible_object->module~foreseer module~foreseer_riemann_pattern_compressible_object->module~foreseer_riemann_pattern_compressible_pvl
Help

Definition of Euler 1D class for FORESEER test.

Used By

module~~foreseer_euler_1d~~UsedByGraph module~foreseer_euler_1d foreseer_euler_1d program~foreseer_test_shock_tube foreseer_test_shock_tube module~foreseer_euler_1d->program~foreseer_test_shock_tube
Help


Abstract Interfaces

abstract interface

Abstract interfaces of euler_1d pointer methods.

  • private subroutine reconstruct_interfaces_(self, conservative, r_conservative)

    Reconstruct interface states.

    Arguments

    Type IntentOptional AttributesName
    class(euler_1d), intent(in) :: self

    Euler field.

    type(conservative_compressible), intent(in) :: conservative(1-self%Ng:)

    Conservative variables.

    type(conservative_compressible), intent(inout) :: r_conservative(1:,0:)

    Reconstructed conservative variables.


Derived Types

type, public, extends(integrand) :: euler_1d

Euler 1D PDEs system field.

Components

TypeVisibility AttributesNameInitial
character(len=:), public, allocatable:: BC_L

Left boundary condition type.

character(len=:), public, allocatable:: BC_R

Right boundary condition type.

real(kind=R8P), public :: Dx =0._R8P

Space step.

integer(kind=I4P), public :: Ng =0

Ghost cells number.

integer(kind=I4P), public :: Ni =0

Space dimension.

type(conservative_compressible), public, allocatable:: U(:)

Integrand (state) variables.

type(eos_compressible), public :: eos

Equation of state.

class(interpolator_object), public, allocatable:: interpolator

WENO interpolator.

procedure(reconstruct_interfaces_), public, pointer:: reconstruct_interfaces=> reconstruct_interfaces_characteristic

Reconstruct interface states.

class(riemann_solver_object), public, allocatable:: riemann_solver

Riemann solver.

integer(kind=I4P), public :: weno_order =0

WENO reconstruction order.

Type-Bound Procedures

procedure, public, pass(lhs) :: add => add_euler

Operator +.

procedure, public, pass(lhs) :: assign_integrand => euler_assign_euler

Operator =.

procedure, public, pass(lhs) :: assign_real => euler_assign_real

Operator euler = real.

procedure, public, pass(self) :: destroy

Destroy field.

procedure, public, pass(self) :: dt => compute_dt

Compute the current time step, by means of CFL condition.

procedure, private, pass(self) :: impose_boundary_conditions

Impose boundary conditions.

procedure, public, pass(self) :: initialize

Initialize field.

procedure, public, pass(lhs) :: integrand_multiply_integrand => euler_multiply_euler

Operator *.

procedure, public, pass(lhs) :: integrand_multiply_real => euler_multiply_real

Operator euler * real.

procedure, public, pass(lhs) :: local_error => euler_local_error

Operator ||euler-euler||.

procedure, public, pass(self) :: output

Extract Euler field.

procedure, public, pass(rhs) :: real_multiply_integrand => real_multiply_euler

Operator real * euler.

procedure, private, pass(self) :: reconstruct_interfaces_characteristic

Reconstruct (charc.) interface states.

procedure, private, pass(self) :: reconstruct_interfaces_conservative

Reconstruct (cons.) interface states.

procedure, private, pass(self) :: reconstruct_interfaces_primitive

Reconstruct (prim.) interface states.

procedure, public, pass(lhs) :: sub => sub_euler

Operator -.

procedure, public, pass(self) :: t => dEuler_dt

Time derivative, residuals function.


Functions

private function add_euler(lhs, rhs) result(opr)

Add two Euler fields.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: lhs

Left hand side.

class(integrand), intent(in) :: rhs

Right hand side.

Return Value class(integrand), allocatable

Operator result.

private pure function compute_dt(self, steps_max, t_max, t, CFL) result(Dt)

Compute the current time step by means of CFL condition.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: self

Euler field.

integer(kind=I4P), intent(in) :: steps_max

Maximun number of time steps.

real(kind=R8P), intent(in) :: t_max

Maximum integration time.

real(kind=R8P), intent(in) :: t

Time.

real(kind=R8P), intent(in) :: CFL

CFL value.

Return Value real(kind=R8P)

Time step.

private function dEuler_dt(self, t) result(dState_dt)

Time derivative of Euler field, the residuals function.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: self

Euler field.

real(kind=R8P), intent(in), optional :: t

Time.

Return Value class(integrand), allocatable

Euler field time derivative.

private function euler_local_error(lhs, rhs) result(error)

Estimate local truncation error between 2 euler approximations.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: lhs

Left hand side.

class(integrand), intent(in) :: rhs

Right hand side.

Return Value real(kind=R8P)

Error estimation.

private function euler_multiply_euler(lhs, rhs) result(opr)

Multiply an Euler field by another one.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: lhs

Left hand side.

class(integrand), intent(in) :: rhs

Right hand side.

Return Value class(integrand), allocatable

Operator result.

private function euler_multiply_real(lhs, rhs) result(opr)

Multiply an Euler field by a real scalar.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: lhs

Left hand side.

real(kind=R8P), intent(in) :: rhs

Right hand side.

Return Value class(integrand), allocatable

Operator result.

private pure function output(self, is_primitive) result(state)

Output the Euler field state.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: self

Euler field.

logical, intent(in), optional :: is_primitive

Output in primitive variables.

Return Value real(kind=R8P), allocatable, (:,:)

Euler state vector.

private function real_multiply_euler(lhs, rhs) result(opr)

Multiply a real scalar by an Euler field.

Arguments

Type IntentOptional AttributesName
real(kind=R8P), intent(in) :: lhs

Left hand side.

class(euler_1d), intent(in) :: rhs

Right hand side.

Return Value class(integrand), allocatable

Operator result.

private function sub_euler(lhs, rhs) result(opr)

Subtract two Euler fields.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: lhs

Left hand side.

class(integrand), intent(in) :: rhs

Right hand side.

Return Value class(integrand), allocatable

Operator result.


Subroutines

private pure subroutine destroy(self)

Destroy field.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(inout) :: self

Euler field.

private subroutine euler_assign_euler(lhs, rhs)

Assign one Euler field to another.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(inout) :: lhs

Left hand side.

class(integrand), intent(in) :: rhs

Right hand side.

private subroutine euler_assign_real(lhs, rhs)

Assign one real to an Euler field.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(inout) :: lhs

Left hand side.

real(kind=R8P), intent(in) :: rhs

Right hand side.

private pure subroutine impose_boundary_conditions(self, U)

Impose boundary conditions.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: self

Euler field.

type(conservative_compressible), intent(inout) :: U(1-self%Ng:)

Conservative variables.

private subroutine initialize(self, Ni, Dx, BC_L, BC_R, initial_state, eos, weno_order, weno_variables, riemann_solver_scheme)

Initialize field.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(inout) :: self

Euler field.

integer(kind=I4P), intent(in) :: Ni

Space dimension.

real(kind=R8P), intent(in) :: Dx

Space step.

character(len=*), intent(in) :: BC_L

Left boundary condition type.

character(len=*), intent(in) :: BC_R

Right boundary condition type.

type(primitive_compressible), intent(in) :: initial_state(1:)

Initial state of primitive variables.

type(eos_compressible), intent(in) :: eos

Equation of state.

integer(kind=I4P), intent(in), optional :: weno_order

WENO reconstruction order.

character(len=*), intent(in), optional :: weno_variables

Variables on which WENO reconstruction is done.

character(len=*), intent(in), optional :: riemann_solver_scheme

Riemann solver scheme.

private subroutine reconstruct_interfaces_characteristic(self, conservative, r_conservative)

Reconstruct interfaces states.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: self

Euler field.

type(conservative_compressible), intent(in) :: conservative(1-self%Ng:)

Conservative variables.

type(conservative_compressible), intent(inout) :: r_conservative(1:,0:)

Reconstructed conservative vars.

private subroutine reconstruct_interfaces_conservative(self, conservative, r_conservative)

Reconstruct interfaces states.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: self

Euler field.

type(conservative_compressible), intent(in) :: conservative(1-self%Ng:)

Conservative variables.

type(conservative_compressible), intent(inout) :: r_conservative(1:,0:)

Reconstructed conservative vars.

private subroutine reconstruct_interfaces_primitive(self, conservative, r_conservative)

Reconstruct interfaces states.

Arguments

Type IntentOptional AttributesName
class(euler_1d), intent(in) :: self

Euler field.

type(conservative_compressible), intent(in) :: conservative(1-self%Ng:)

Conservative variables.

type(conservative_compressible), intent(inout) :: r_conservative(1:,0:)

Reconstructed conservative vars.