foodie_test_object Module

module~~foodie_test_object~~UsesGraph module~foodie_test_object foodie_test_object iso_fortran_env iso_fortran_env iso_fortran_env->module~foodie_test_object module~foodie_test_integrand_ladvection foodie_test_integrand_ladvection iso_fortran_env->module~foodie_test_integrand_ladvection module~foodie foodie iso_fortran_env->module~foodie module~foodie_integrator_multistep_object foodie_integrator_multistep_object iso_fortran_env->module~foodie_integrator_multistep_object module~foodie_integrator_multistage_object foodie_integrator_multistage_object iso_fortran_env->module~foodie_integrator_multistage_object module~foodie_integrator_multistage_multistep_object foodie_integrator_multistage_multistep_object iso_fortran_env->module~foodie_integrator_multistage_multistep_object module~foodie_integrator_object foodie_integrator_object iso_fortran_env->module~foodie_integrator_object module~foodie_test_integrand_tester_object foodie_test_integrand_tester_object module~foodie_test_integrand_tester_object->module~foodie_test_object module~foodie_test_integrand_oscillation foodie_test_integrand_oscillation module~foodie_test_integrand_tester_object->module~foodie_test_integrand_oscillation module~foodie_test_integrand_lcce foodie_test_integrand_lcce module~foodie_test_integrand_tester_object->module~foodie_test_integrand_lcce module~foodie_test_integrand_tester_object->module~foodie_test_integrand_ladvection module~foodie_test_integrand_oscillation->module~foodie_test_object penf penf penf->module~foodie_test_object penf->module~foodie_test_integrand_tester_object penf->module~foodie_test_integrand_oscillation penf->module~foodie_test_integrand_lcce penf->module~foodie_test_integrand_ladvection 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 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 penf->module~foodie_integrator_multistage_object module~foodie_integrator_leapfrog foodie_integrator_leapfrog penf->module~foodie_integrator_leapfrog penf->module~foodie_integrator_multistage_multistep_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_lcce->module~foodie_test_object flap flap flap->module~foodie_test_object flap->module~foodie_test_integrand_tester_object flap->module~foodie_test_integrand_oscillation flap->module~foodie_test_integrand_lcce flap->module~foodie_test_integrand_ladvection module~foodie_test_integrand_ladvection->module~foodie_test_object module~foodie->module~foodie_test_object module~foodie->module~foodie_test_integrand_tester_object module~foodie->module~foodie_test_integrand_oscillation module~foodie->module~foodie_test_integrand_lcce module~foodie->module~foodie_test_integrand_ladvection wenoof wenoof wenoof->module~foodie_test_integrand_ladvection 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 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

Definition of test_object for FOODIE tester factory.

Used By

module~~foodie_test_object~~UsedByGraph module~foodie_test_object foodie_test_object program~foodie_tester foodie_tester module~foodie_test_object->program~foodie_tester
Help


Derived Types

type, public :: test_object

Generic FOODIE test object.

Components

TypeVisibility AttributesNameInitial
real(kind=R_P), private, allocatable:: Dt(:)

Time step(s) exercised.

type(command_line_interface), private :: cli

Command line interface handler.

integer(kind=I_P), private :: error

Error handler.

real(kind=R_P), private :: final_time

Final integration time.

integer(kind=I_P), private :: implicit_iterations

Number of iterations (implicit solvers).

class(integrand_tester_object), private, allocatable:: integrand_0

Initial conditions.

logical, private :: is_fast

Flag for activating fast schemes.

type(integrand_ladvection), private :: ladvection_0

Initial conditions for linear advection test.

type(integrand_lcce), private :: lcce_0

Initial conditions for linear constant coefficients eq.

type(integrand_oscillation), private :: oscillation_0

Initial conditions for oscillation test.

character(len=99), private :: output

Output files basename.

integer(kind=I_P), private :: save_frequency

Save frequency.

logical, private :: save_results

Flag for activating results saving.

character(len=99), private :: scheme

Scheme used.

integer(kind=I_P), private :: stages

Number of stages.

Type-Bound Procedures

procedure, public, pass(self) :: execute

Execute selected test(s).

procedure, private, pass(self) :: initialize

Initialize test: set Command Line Interface, parse it and check its validity.


Functions

private pure function observed_order(error, Dt)

Estimate the order of accuracy using 2 subsequent refined numerical solutions.

Arguments

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

Computed errors.

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

Time steps used.

Return Value real(kind=R_P) (1:size(error,dim=1))

Estimation of the order of accuracy.


Subroutines

private subroutine check_scheme_has_fast_mode(scheme, integrator)

Check if a scheme support fast mode integrate.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: scheme

Scheme name.

class(integrator_object), intent(in) :: integrator

Integrator instance.

private subroutine execute(self)

Execute test(s).

Arguments

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

Test.

private subroutine initialize(self)

Initialize test: set Command Line Interface, parse it and check its validity.

Arguments

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

Test.

private subroutine integrate(scheme, integrand_0, Dt, final_time, iterations, stages, is_fast, save_results, output_base_name, save_frequency, error)

Integrate integrand by means of the given scheme.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: scheme

Selected scheme.

class(integrand_tester_object), intent(in) :: integrand_0

Initial conditions.

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

Time step.

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

Final integration time.

integer(kind=I_P), intent(in) :: iterations

Number of fixed point iterations.

integer(kind=I_P), intent(in) :: stages

Number of stages.

logical, intent(in) :: is_fast

Activate fast mode integration.

logical, intent(in) :: save_results

Save results.

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

Base name of output results file.

integer(kind=I_P), intent(in) :: save_frequency

Save frequency.

real(kind=R_P), intent(out) :: error(:)

Error of integrand integration.