foodie_test_lcce_test Module

module~~foodie_test_lcce_test~~UsesGraph module~foodie_test_lcce_test foodie_test_lcce_test penf penf penf->module~foodie_test_lcce_test module~foodie_test_integrand_lcce foodie_test_integrand_lcce penf->module~foodie_test_integrand_lcce module~foodie foodie penf->module~foodie module~foodie_test_integrand_tester_object foodie_test_integrand_tester_object penf->module~foodie_test_integrand_tester_object 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_lcce->module~foodie_test_lcce_test iso_fortran_env iso_fortran_env iso_fortran_env->module~foodie_test_lcce_test 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->module~foodie_test_lcce_test module~foodie->module~foodie_test_integrand_lcce module~foodie->module~foodie_test_integrand_tester_object flap flap flap->module~foodie_test_lcce_test flap->module~foodie_test_integrand_lcce flap->module~foodie_test_integrand_tester_object module~foodie_test_integrand_tester_object->module~foodie_test_integrand_lcce 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

Linear constant coefficients test handler definition.

Used By

module~~foodie_test_lcce_test~~UsedByGraph module~foodie_test_lcce_test foodie_test_lcce_test program~foodie_test_lcce foodie_test_lcce module~foodie_test_lcce_test->program~foodie_test_lcce
Help


Derived Types

type, public :: lcce_test

Class to handle linear constant coefficients equation test(s).

Components

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

Time step(s) exercised.

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

Initial conditions.

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

a coefficient.

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

b coefficient.

type(command_line_interface), private :: cli

Command line interface handler.

integer(kind=I_P), private :: error =0

Error handler.

logical, private :: errors_analysis =.false.

Flag for activating errors analysis.

logical, private :: exact_solution =.false.

Flag for activating exact solution saving.

real(kind=R_P), private :: final_time =0.0_R_P

Final integration time.

integer(kind=I_P), private :: implicit_iterations =0

Number of iterations (implicit solvers).

logical, private :: is_fast =.false.

Flag for activating fast schemes.

character(len=99), private :: output =''

Output files basename.

logical, private :: results =.false.

Flag for activating results saving.

character(len=99), private :: scheme =''

Scheme used.

integer(kind=I_P), private :: stages =0

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.

procedure, private, pass(self) :: test

Perform the test.


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:2)

Computed errors.

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

Time steps used.

Return Value real(kind=R_P)

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 selected test(s).

Arguments

Type IntentOptional AttributesName
class(lcce_test), 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(lcce_test), intent(inout) :: self

Test.

private subroutine integrate(scheme, a, b, U0, final_time, Dt, iterations, stages, is_fast, solution, error, last_step)

Integrate domain by means of the given scheme.

Arguments

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

Selected scheme.

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

a coefficient.

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

b coefficient.

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

Initial state.

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

Final integration time.

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

Time step.

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.

real(kind=R_P), intent(out), allocatable:: solution(:,:)

Solution at each time step, X-Y.

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

Error (norm L2) with respect the exact solution.

integer(kind=I_P), intent(out) :: last_step

Last time step computed.

private subroutine save_results(results, output, scheme, a, b, U0, save_exact_solution, solution)

Save results (and plots).

Arguments

Type IntentOptional AttributesName
logical, intent(in) :: results

Flag for activating results saving.

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

Output files basename coming from CLI.

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

Selected scheme: must be defined into solvers.

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

a coefficient.

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

b coefficient.

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

Initial state.

logical, intent(in) :: save_exact_solution

Flag for saving exact solution.

real(kind=R_P), intent(in) :: solution(0:,0:)

Solution at each time step.

private subroutine test(self, scheme)

Perform the test.

Arguments

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

Test.

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

Selected scheme.