foodie_test_integrand_lcce Module

module~~foodie_test_integrand_lcce~~UsesGraph module~foodie_test_integrand_lcce foodie_test_integrand_lcce penf penf penf->module~foodie_test_integrand_lcce module~foodie_test_integrand_tester_object foodie_test_integrand_tester_object penf->module~foodie_test_integrand_tester_object module~foodie foodie penf->module~foodie module~foodie_integrator_adams_bashforth foodie_integrator_adams_bashforth penf->module~foodie_integrator_adams_bashforth module~foodie_integrator_ms_runge_kutta_ssp foodie_integrator_ms_runge_kutta_ssp penf->module~foodie_integrator_ms_runge_kutta_ssp module~foodie_error_codes foodie_error_codes penf->module~foodie_error_codes module~foodie_integrator_lmm_ssp foodie_integrator_lmm_ssp penf->module~foodie_integrator_lmm_ssp module~foodie_integrator_euler_explicit foodie_integrator_euler_explicit penf->module~foodie_integrator_euler_explicit module~foodie_integrator_multistep_object foodie_integrator_multistep_object penf->module~foodie_integrator_multistep_object module~foodie_integrator_runge_kutta_emd foodie_integrator_runge_kutta_emd penf->module~foodie_integrator_runge_kutta_emd module~foodie_integrator_adams_bashforth_moulton foodie_integrator_adams_bashforth_moulton penf->module~foodie_integrator_adams_bashforth_moulton module~foodie_integrator_adams_moulton foodie_integrator_adams_moulton penf->module~foodie_integrator_adams_moulton module~foodie_integrator_runge_kutta_lssp foodie_integrator_runge_kutta_lssp penf->module~foodie_integrator_runge_kutta_lssp module~foodie_integrator_lmm_ssp_vss foodie_integrator_lmm_ssp_vss penf->module~foodie_integrator_lmm_ssp_vss module~foodie_integrator_runge_kutta_ssp foodie_integrator_runge_kutta_ssp penf->module~foodie_integrator_runge_kutta_ssp module~foodie_integrand_object foodie_integrand_object penf->module~foodie_integrand_object module~foodie_integrator_runge_kutta_low_storage foodie_integrator_runge_kutta_low_storage penf->module~foodie_integrator_runge_kutta_low_storage module~foodie_integrator_multistage_object foodie_integrator_multistage_object penf->module~foodie_integrator_multistage_object module~foodie_integrator_leapfrog foodie_integrator_leapfrog penf->module~foodie_integrator_leapfrog module~foodie_integrator_multistage_multistep_object foodie_integrator_multistage_multistep_object penf->module~foodie_integrator_multistage_multistep_object module~foodie_integrator_object foodie_integrator_object penf->module~foodie_integrator_object module~foodie_integrator_backward_differentiation_formula foodie_integrator_backward_differentiation_formula penf->module~foodie_integrator_backward_differentiation_formula module~foodie_test_integrand_tester_object->module~foodie_test_integrand_lcce flap flap flap->module~foodie_test_integrand_lcce flap->module~foodie_test_integrand_tester_object module~foodie->module~foodie_test_integrand_lcce module~foodie->module~foodie_test_integrand_tester_object module~foodie_integrator_adams_bashforth->module~foodie module~foodie_integrator_adams_bashforth->module~foodie_integrator_adams_bashforth_moulton module~foodie_integrator_ms_runge_kutta_ssp->module~foodie module~foodie_error_codes->module~foodie module~foodie_error_codes->module~foodie_integrator_adams_bashforth module~foodie_error_codes->module~foodie_integrator_ms_runge_kutta_ssp module~foodie_error_codes->module~foodie_integrator_lmm_ssp module~foodie_error_codes->module~foodie_integrator_euler_explicit module~foodie_error_codes->module~foodie_integrator_runge_kutta_emd module~foodie_error_codes->module~foodie_integrator_adams_bashforth_moulton module~foodie_error_codes->module~foodie_integrator_adams_moulton module~foodie_error_codes->module~foodie_integrator_runge_kutta_lssp module~foodie_error_codes->module~foodie_integrator_lmm_ssp_vss module~foodie_error_codes->module~foodie_integrator_runge_kutta_ssp module~foodie_error_codes->module~foodie_integrator_runge_kutta_low_storage module~foodie_error_codes->module~foodie_integrator_leapfrog module~foodie_error_codes->module~foodie_integrator_backward_differentiation_formula module~foodie_integrator_lmm_ssp->module~foodie module~foodie_integrator_euler_explicit->module~foodie module~foodie_integrator_multistep_object->module~foodie module~foodie_integrator_multistep_object->module~foodie_integrator_adams_bashforth module~foodie_integrator_multistep_object->module~foodie_integrator_lmm_ssp module~foodie_integrator_multistep_object->module~foodie_integrator_adams_bashforth_moulton module~foodie_integrator_multistep_object->module~foodie_integrator_adams_moulton module~foodie_integrator_multistep_object->module~foodie_integrator_lmm_ssp_vss module~foodie_integrator_multistep_object->module~foodie_integrator_leapfrog module~foodie_integrator_multistep_object->module~foodie_integrator_backward_differentiation_formula module~foodie_integrator_runge_kutta_emd->module~foodie module~foodie_integrator_adams_bashforth_moulton->module~foodie iso_fortran_env iso_fortran_env iso_fortran_env->module~foodie iso_fortran_env->module~foodie_integrator_multistep_object iso_fortran_env->module~foodie_integrator_multistage_object iso_fortran_env->module~foodie_integrator_multistage_multistep_object iso_fortran_env->module~foodie_integrator_object module~foodie_integrator_adams_moulton->module~foodie module~foodie_integrator_adams_moulton->module~foodie_integrator_adams_bashforth_moulton module~foodie_integrator_runge_kutta_lssp->module~foodie module~foodie_integrator_lmm_ssp_vss->module~foodie module~foodie_integrator_runge_kutta_ssp->module~foodie module~foodie_integrand_object->module~foodie module~foodie_integrand_object->module~foodie_integrator_adams_bashforth module~foodie_integrand_object->module~foodie_integrator_ms_runge_kutta_ssp module~foodie_integrand_object->module~foodie_integrator_lmm_ssp module~foodie_integrand_object->module~foodie_integrator_euler_explicit module~foodie_integrand_object->module~foodie_integrator_multistep_object module~foodie_integrand_object->module~foodie_integrator_runge_kutta_emd module~foodie_integrand_object->module~foodie_integrator_adams_bashforth_moulton module~foodie_integrand_object->module~foodie_integrator_adams_moulton module~foodie_integrand_object->module~foodie_integrator_runge_kutta_lssp module~foodie_integrand_object->module~foodie_integrator_lmm_ssp_vss module~foodie_integrand_object->module~foodie_integrator_runge_kutta_ssp module~foodie_integrand_object->module~foodie_integrator_runge_kutta_low_storage module~foodie_integrand_object->module~foodie_integrator_multistage_object module~foodie_integrand_object->module~foodie_integrator_leapfrog module~foodie_integrand_object->module~foodie_integrator_multistage_multistep_object module~foodie_integrand_object->module~foodie_integrator_backward_differentiation_formula module~foodie_integrator_runge_kutta_low_storage->module~foodie module~foodie_integrator_multistage_object->module~foodie module~foodie_integrator_multistage_object->module~foodie_integrator_euler_explicit module~foodie_integrator_multistage_object->module~foodie_integrator_runge_kutta_emd module~foodie_integrator_multistage_object->module~foodie_integrator_runge_kutta_lssp module~foodie_integrator_multistage_object->module~foodie_integrator_runge_kutta_ssp module~foodie_integrator_multistage_object->module~foodie_integrator_runge_kutta_low_storage module~foodie_integrator_leapfrog->module~foodie module~foodie_integrator_multistage_multistep_object->module~foodie module~foodie_integrator_multistage_multistep_object->module~foodie_integrator_ms_runge_kutta_ssp module~foodie_integrator_object->module~foodie module~foodie_integrator_object->module~foodie_integrator_adams_bashforth module~foodie_integrator_object->module~foodie_integrator_ms_runge_kutta_ssp module~foodie_integrator_object->module~foodie_integrator_lmm_ssp module~foodie_integrator_object->module~foodie_integrator_euler_explicit module~foodie_integrator_object->module~foodie_integrator_multistep_object module~foodie_integrator_object->module~foodie_integrator_runge_kutta_emd module~foodie_integrator_object->module~foodie_integrator_adams_bashforth_moulton module~foodie_integrator_object->module~foodie_integrator_adams_moulton module~foodie_integrator_object->module~foodie_integrator_runge_kutta_lssp module~foodie_integrator_object->module~foodie_integrator_lmm_ssp_vss module~foodie_integrator_object->module~foodie_integrator_runge_kutta_ssp module~foodie_integrator_object->module~foodie_integrator_runge_kutta_low_storage module~foodie_integrator_object->module~foodie_integrator_multistage_object module~foodie_integrator_object->module~foodie_integrator_leapfrog module~foodie_integrator_object->module~foodie_integrator_multistage_multistep_object module~foodie_integrator_object->module~foodie_integrator_backward_differentiation_formula module~foodie_integrator_backward_differentiation_formula->module~foodie
Help

Define integrand_lcce, the linear constant coefficients equation test field that is a concrete extension of the abstract integrand type.

Used By

module~~foodie_test_integrand_lcce~~UsedByGraph module~foodie_test_integrand_lcce foodie_test_integrand_lcce module~foodie_test_lcce_test foodie_test_lcce_test module~foodie_test_integrand_lcce->module~foodie_test_lcce_test module~foodie_test_object foodie_test_object module~foodie_test_integrand_lcce->module~foodie_test_object program~foodie_test_lcce foodie_test_lcce module~foodie_test_lcce_test->program~foodie_test_lcce program~foodie_tester foodie_tester module~foodie_test_object->program~foodie_tester
Help


Derived Types

type, public, extends(integrand_tester_object) :: integrand_lcce

The linear constant coefficient equation field.

Components

TypeVisibility AttributesNameInitial
real(kind=R_P), private :: U =0._R_P

Integrand (state) variable.

real(kind=R_P), private :: U0 =0._R_P

Integrand initial state.

real(kind=R_P), private :: a =0._R_P

a constant.

real(kind=R_P), private :: b =0._R_P

b constant.

Type-Bound Procedures

generic, public :: add_fast => integrand_add_integrand_fast

Overloading add_fast method.

procedure, public, pass(lhs) :: assign_integrand

= operator.

procedure, public, pass(lhs) :: assign_real

= real operator.

generic, public :: assignment(=) => assign_integrand, assign_real

Overloading = assignament.

procedure, public, pass(self) :: description

Return an informative description of the test.

procedure, public, pass(self) :: error

Return error.

procedure, public, pass(self) :: exact_solution

Return exact solution.

procedure, public, pass(self) :: export_tecplot

Export integrand to Tecplot file.

procedure, public, pass(self) :: initialize

Initialize field.

procedure, public, pass(lhs) :: integrand_add_integrand

+ operator.

procedure, public, pass(opr) :: integrand_add_integrand_fast

+ fast operator.

procedure, public, pass(lhs) :: integrand_add_real

+ real operator.

procedure, public, pass(self) :: integrand_dimension

Return integrand dimension.

procedure, public, pass(lhs) :: integrand_multiply_integrand

* operator.

procedure, public, pass(opr) :: integrand_multiply_integrand_fast

* fast operator.

procedure, public, pass(lhs) :: integrand_multiply_real

* real operator.

procedure, public, pass(lhs) :: integrand_multiply_real_scalar

* real_scalar operator.

procedure, public, pass(opr) :: integrand_multiply_real_scalar_fast

* real_scalar fast operator.

procedure, public, pass(lhs) :: integrand_sub_integrand

- operator.

procedure, public, pass(lhs) :: integrand_sub_real

- real operator.

procedure, public, pass(opr) :: integrand_subtract_integrand_fast

- fast operator.

procedure, public, pass(lhs) :: local_error

||integrand_lcce - integrand_lcce|| operator.

generic, public :: multiply_fast => integrand_multiply_integrand_fast, integrand_multiply_real_scalar_fast

Overloading multiply_fast method.

generic, public :: operator(*) => integrand_multiply_integrand, integrand_multiply_real, real_multiply_integrand, integrand_multiply_real_scalar, real_scalar_multiply_integrand

Overloading * operator.

generic, public :: operator(+) => integrand_add_integrand, integrand_add_real, real_add_integrand

Overloading + operator.

generic, public :: operator(-) => integrand_sub_integrand, integrand_sub_real, real_sub_integrand

Overloading - operator.

generic, public :: operator(.lterror.) => local_error

Estimate local truncation error.

procedure, public, pass(self) :: output

Extract integrand state field.

procedure, public, pass(self) :: parse_cli

Initialize from command line interface.

procedure, public, pass(rhs) :: real_add_integrand

real + operator.

procedure, public, pass(rhs) :: real_multiply_integrand

real * operator.

procedure, public, pass(rhs) :: real_scalar_multiply_integrand

real_scalar * operator.

procedure, public, pass(rhs) :: real_sub_integrand

real - operator.

procedure, public, nopass :: set_cli

Set command line interface.

generic, public :: subtract_fast => integrand_subtract_integrand_fast

Overloading subtract_fast method.

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

Time derivative, residuals.

procedure, public, pass(self) :: t_fast

Time derivative, residuals, fast mode.


Functions

private pure function dU_dt(self, t) result(dState_dt)

Time derivative of field.

Arguments

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

Integrand.

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

Time.

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

Integrand time derivative.

private pure function description(self, prefix) result(desc)

Return informative integrator description.

Arguments

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

Integrand.

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

Prefixing string.

Return Value character(len=:), allocatable

Description.

private pure function error(self, t, t0, U0)

Return error.

Arguments

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

Integrand.

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

Time.

real(kind=R_P), intent(in), optional :: t0

Initial time.

class(integrand_object), intent(in), optional :: U0

Initial conditions.

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

Error.

private pure function exact_solution(self, t, t0, U0) result(exact)

Return exact solution.

Arguments

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

Integrand.

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

Time.

real(kind=R_P), intent(in), optional :: t0

Initial time.

class(integrand_object), intent(in), optional :: U0

Initial conditions.

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

Exact solution.

private pure function integrand_add_integrand(lhs, rhs) result(opr)

+ operator.

Arguments

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

Left hand side.

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

Right hand side.

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

Operator result.

private pure function integrand_add_real(lhs, rhs) result(opr)

+ real operator.

Arguments

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

Left hand side.

real(kind=R_P), intent(in) :: rhs(1:)

Right hand side.

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

Operator result.

private pure function integrand_dimension(self)

return integrand dimension.

Arguments

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

integrand.

Return Value integer(kind=I_P)

integrand dimension.

private pure function integrand_multiply_integrand(lhs, rhs) result(opr)

* operator.

Arguments

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

Left hand side.

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

Right hand side.

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

Operator result.

private pure function integrand_multiply_real(lhs, rhs) result(opr)

* real_scalar operator.

Arguments

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

Left hand side.

real(kind=R_P), intent(in) :: rhs(1:)

Right hand side.

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

Operator result.

private pure function integrand_multiply_real_scalar(lhs, rhs) result(opr)

* real_scalar operator.

Arguments

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

Left hand side.

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

Right hand side.

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

Operator result.

private pure function integrand_sub_integrand(lhs, rhs) result(opr)

- operator.

Arguments

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

Left hand side.

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

Right hand side.

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

Operator result.

private pure function integrand_sub_real(lhs, rhs) result(opr)

- real operator.

Arguments

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

Left hand side.

real(kind=R_P), intent(in) :: rhs(1:)

Right hand side.

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

Operator result.

private pure function local_error(lhs, rhs) result(error)

Estimate local truncation error between 2 oscillation approximations.

Arguments

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

Left hand side.

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

Right hand side.

Return Value real(kind=R_P)

Error estimation.

private pure function output(self) result(state)

Extract integrand state field.

Arguments

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

Integrand.

Return Value real(kind=R_P)

State.

private pure function real_add_integrand(lhs, rhs) result(opr)

real + operator.

Arguments

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

Left hand side.

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

Left hand side.

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

Operator result.

private pure function real_multiply_integrand(lhs, rhs) result(opr)

real_scalar * operator.

Arguments

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

Left hand side.

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

Right hand side.

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

Operator result.

private pure function real_scalar_multiply_integrand(lhs, rhs) result(opr)

real_scalar * operator.

Arguments

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

Left hand side.

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

Right hand side.

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

Operator result.

private pure function real_sub_integrand(lhs, rhs) result(opr)

real - operator.

Arguments

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

Left hand side.

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

Left hand side.

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

Operator result.


Subroutines

private pure subroutine assign_integrand(lhs, rhs)

= operator.

Arguments

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

Left hand side.

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

Right hand side.

private pure subroutine assign_real(lhs, rhs)

= real operator.

Arguments

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

Left hand side.

real(kind=R_P), intent(in) :: rhs(1:)

Right hand side.

private subroutine export_tecplot(self, file_name, t, scheme, close_file, with_exact_solution, U0)

Export integrand to Tecplot file.

Arguments

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

Advection field.

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

File name.

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

Time.

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

Scheme used to integrate integrand.

logical, intent(in), optional :: close_file

Flag for closing file.

logical, intent(in), optional :: with_exact_solution

Flag for export also exact solution.

class(integrand_object), intent(in), optional :: U0

Initial conditions.

private pure subroutine initialize(self, Dt)

Initialize integrand.

Arguments

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

Integrand.

real(kind=R_P), intent(in) :: Dt

Time step.

private pure subroutine integrand_add_integrand_fast(opr, lhs, rhs)

+ fast operator.

Arguments

Type IntentOptional AttributesName
class(integrand_lcce), intent(inout) :: opr

Operator result.

class(integrand_object), intent(in) :: lhs

Left hand side.

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

Right hand side.

private pure subroutine integrand_multiply_integrand_fast(opr, lhs, rhs)

* fast operator.

Arguments

Type IntentOptional AttributesName
class(integrand_lcce), intent(inout) :: opr

Operator result.

class(integrand_object), intent(in) :: lhs

Left hand side.

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

Right hand side.

private pure subroutine integrand_multiply_real_scalar_fast(opr, lhs, rhs)

* real_scalar fast operator.

Arguments

Type IntentOptional AttributesName
class(integrand_lcce), intent(inout) :: opr

Operator result.

class(integrand_object), intent(in) :: lhs

Left hand side.

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

Right hand side.

private pure subroutine integrand_subtract_integrand_fast(opr, lhs, rhs)

- fast operator.

Arguments

Type IntentOptional AttributesName
class(integrand_lcce), intent(inout) :: opr

Operator result.

class(integrand_object), intent(in) :: lhs

Left hand side.

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

Right hand side.

private subroutine parse_cli(self, cli)

Initialize from command line interface.

Arguments

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

Advection field.

type(command_line_interface), intent(inout) :: cli

Command line interface handler.

private subroutine set_cli(cli)

Set command line interface.

Arguments

Type IntentOptional AttributesName
type(command_line_interface), intent(inout) :: cli

Command line interface handler.

private subroutine t_fast(self, t)

Time derivative function of integrand class, i.e. the residuals function. Fast mode acting directly on self.

Arguments

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

Integrand.

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

Time.