foodie_test_oscillation_test Module

module~~foodie_test_oscillation_test~~UsesGraph module~foodie_test_oscillation_test foodie_test_oscillation_test penf penf penf->module~foodie_test_oscillation_test module~foodie_test_integrand_oscillation foodie_test_integrand_oscillation penf->module~foodie_test_integrand_oscillation 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_oscillation->module~foodie_test_oscillation_test iso_fortran_env iso_fortran_env iso_fortran_env->module~foodie_test_oscillation_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_oscillation_test module~foodie->module~foodie_test_integrand_oscillation module~foodie->module~foodie_test_integrand_tester_object flap flap flap->module~foodie_test_oscillation_test flap->module~foodie_test_integrand_oscillation flap->module~foodie_test_integrand_tester_object module~foodie_test_integrand_tester_object->module~foodie_test_integrand_oscillation 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

Oscillation test handler definition.

Used By

module~~foodie_test_oscillation_test~~UsedByGraph module~foodie_test_oscillation_test foodie_test_oscillation_test program~foodie_test_oscillation foodie_test_oscillation module~foodie_test_oscillation_test->program~foodie_test_oscillation
Help


Derived Types

type, public :: oscillation_test

Class to handle oscillation test(s).

Components

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

Time step(s) exercised.

real(kind=R_P), private :: U0(1:2) =[0._R_P, 0._R_P]

Initial conditions.

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.

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

Oscillation frequency.

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:,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(oscillation_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(oscillation_test), intent(inout) :: self

Test.

private subroutine integrate(scheme, frequency, 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) :: frequency

Oscillation frequency.

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

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(1:)

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, frequency, 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) :: frequency

Oscillation frequency.

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

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(oscillation_test), intent(in) :: self

Test.

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

Selected scheme.