1- ! < Define the abstract type [[integrator_multistage_explicit_object ]] of FOODIE ODE integrators.
1+ ! < Define the abstract type [[integrator_multistage_object ]] of FOODIE ODE integrators.
22
3- module foodie_integrator_multistage_explicit_object
4- ! < Define the abstract type [[integrator_multistage_explicit_object ]] of FOODIE ODE integrators.
3+ module foodie_integrator_multistage_object
4+ ! < Define the abstract type [[integrator_multistage_object ]] of FOODIE ODE integrators.
55
66use , intrinsic :: iso_fortran_env, only : stderr= >error_unit
77use foodie_integrand_object, only : integrand_object
@@ -10,9 +10,9 @@ module foodie_integrator_multistage_explicit_object
1010
1111implicit none
1212private
13- public :: integrator_multistage_explicit_object
13+ public :: integrator_multistage_object
1414
15- type, extends(integrator_object), abstract :: integrator_multistage_explicit_object
15+ type, extends(integrator_object), abstract :: integrator_multistage_object
1616 ! < Abstract type of FOODIE ODE integrators of the multistage family.
1717 integer (I_P) :: registers ! < Number of registers used for stages.
1818 integer (I_P) :: stages ! < Number of stages.
@@ -29,63 +29,63 @@ module foodie_integrator_multistage_explicit_object
2929 procedure , pass(self) :: steps_number ! < Return number of steps used.
3030 ! public methods
3131 procedure , pass(self) :: allocate_integrand_members ! < Allocate integrand members.
32- procedure , pass(lhs) :: assign_multistage ! < Assign members of [[integrator_multistage_explicit_object ]] and parents.
32+ procedure , pass(lhs) :: assign_multistage ! < Assign members of [[integrator_multistage_object ]] and parents.
3333 procedure , pass(self) :: destroy_multistage ! < Destroy the integrator.
34- endtype integrator_multistage_explicit_object
34+ endtype integrator_multistage_object
3535
3636abstract interface
37- ! < Abstract interfaces of deferred methods of [[integrator_multistage_explicit_object ]].
37+ ! < Abstract interfaces of deferred methods of [[integrator_multistage_object ]].
3838 subroutine integrate_interface (self , U , Dt , t , new_Dt )
3939 ! < Integrate integrand field.
40- import :: integrand_object, integrator_multistage_explicit_object , R_P
41- class(integrator_multistage_explicit_object ), intent (inout ) :: self ! < Integrator.
42- class(integrand_object), intent (inout ) :: U ! < Integrand.
43- real (R_P), intent (in ) :: Dt ! < Time step.
44- real (R_P), intent (in ) :: t ! < Time.
45- real (R_P), intent (out ), optional :: new_Dt ! < New adapted time step.
40+ import :: integrand_object, integrator_multistage_object , R_P
41+ class(integrator_multistage_object ), intent (inout ) :: self ! < Integrator.
42+ class(integrand_object), intent (inout ) :: U ! < Integrand.
43+ real (R_P), intent (in ) :: Dt ! < Time step.
44+ real (R_P), intent (in ) :: t ! < Time.
45+ real (R_P), intent (out ), optional :: new_Dt ! < New adapted time step.
4646 end subroutine integrate_interface
4747
4848 subroutine integrate_fast_interface (self , U , Dt , t , new_Dt )
4949 ! < Integrate integrand field, fast mode.
50- import :: integrand_object, integrator_multistage_explicit_object , R_P
51- class(integrator_multistage_explicit_object ), intent (inout ) :: self ! < Integrator.
52- class(integrand_object), intent (inout ) :: U ! < Field to be integrated.
53- real (R_P), intent (in ) :: Dt ! < Time step.
54- real (R_P), intent (in ) :: t ! < Time.
55- real (R_P), intent (out ), optional :: new_Dt ! < New adapted time step.
50+ import :: integrand_object, integrator_multistage_object , R_P
51+ class(integrator_multistage_object ), intent (inout ) :: self ! < Integrator.
52+ class(integrand_object), intent (inout ) :: U ! < Field to be integrated.
53+ real (R_P), intent (in ) :: Dt ! < Time step.
54+ real (R_P), intent (in ) :: t ! < Time.
55+ real (R_P), intent (out ), optional :: new_Dt ! < New adapted time step.
5656 end subroutine integrate_fast_interface
5757endinterface
5858
5959contains
6060 ! deferred methods
6161 elemental function is_multistage (self )
6262 ! < Return .true. for multistage integrator.
63- class(integrator_multistage_explicit_object ), intent (in ) :: self ! < Integrator.
64- logical :: is_multistage ! < Inquire result.
63+ class(integrator_multistage_object ), intent (in ) :: self ! < Integrator.
64+ logical :: is_multistage ! < Inquire result.
6565
6666 is_multistage = .true.
6767 end function is_multistage
6868
6969 elemental function is_multistep (self )
7070 ! < Return .true. for multistage integrator.
71- class(integrator_multistage_explicit_object ), intent (in ) :: self ! < Integrator.
72- logical :: is_multistep ! < Inquire result.
71+ class(integrator_multistage_object ), intent (in ) :: self ! < Integrator.
72+ logical :: is_multistep ! < Inquire result.
7373
7474 is_multistep = .false.
7575 end function is_multistep
7676
7777 elemental function stages_number (self )
7878 ! < Return number of stages used.
79- class(integrator_multistage_explicit_object ), intent (in ) :: self ! < Integrator.
80- integer (I_P) :: stages_number ! < Number of stages used.
79+ class(integrator_multistage_object ), intent (in ) :: self ! < Integrator.
80+ integer (I_P) :: stages_number ! < Number of stages used.
8181
8282 stages_number = self% stages
8383 end function stages_number
8484
8585 elemental function steps_number (self )
8686 ! < Return number of steps used.
87- class(integrator_multistage_explicit_object ), intent (in ) :: self ! < Integrator.
88- integer (I_P) :: steps_number ! < Number of steps used.
87+ class(integrator_multistage_object ), intent (in ) :: self ! < Integrator.
88+ integer (I_P) :: steps_number ! < Number of steps used.
8989
9090 steps_number = 0
9191 end function steps_number
@@ -95,9 +95,9 @@ pure subroutine allocate_integrand_members(self, U)
9595 ! < Allocate members of interpolator being of [[integrand_object]] class.
9696 ! <
9797 ! < @note It is assumed that the integrator has been properly initialized before calling this method.
98- class(integrator_multistage_explicit_object ), intent (inout ) :: self ! < Integrator.
99- class(integrand_object), intent (in ) :: U ! < Integrand.
100- integer (I_P) :: s ! < Counter.
98+ class(integrator_multistage_object ), intent (inout ) :: self ! < Integrator.
99+ class(integrand_object), intent (in ) :: U ! < Integrand.
100+ integer (I_P) :: s ! < Counter.
101101
102102 if (self% is_multistage() .and. self% registers > 0 ) then
103103 if (allocated (self% stage)) deallocate (self% stage)
@@ -114,14 +114,14 @@ pure subroutine allocate_integrand_members(self, U)
114114 end subroutine allocate_integrand_members
115115
116116 pure subroutine assign_multistage (lhs , rhs )
117- ! < Assign members of [[integrator_multistage_explicit_object ]] and parents.
118- class(integrator_multistage_explicit_object ), intent (inout ) :: lhs ! < Left hand side.
119- class(integrator_object), intent (in ) :: rhs ! < Right hand side.
120- integer (I_P) :: s ! < Counter.
117+ ! < Assign members of [[integrator_multistage_object ]] and parents.
118+ class(integrator_multistage_object ), intent (inout ) :: lhs ! < Left hand side.
119+ class(integrator_object), intent (in ) :: rhs ! < Right hand side.
120+ integer (I_P) :: s ! < Counter.
121121
122122 call lhs% assign_abstract(rhs= rhs)
123123 select type (rhs)
124- class is (integrator_multistage_explicit_object )
124+ class is (integrator_multistage_object )
125125 lhs% registers = rhs% registers
126126 lhs% stages = rhs% stages
127127 if (allocated (lhs% stage)) deallocate (lhs% stage)
@@ -141,12 +141,12 @@ pure subroutine assign_multistage(lhs, rhs)
141141
142142 elemental subroutine destroy_multistage (self )
143143 ! < Destroy the integrator.
144- class(integrator_multistage_explicit_object ), intent (inout ) :: self ! < Integrator.
144+ class(integrator_multistage_object ), intent (inout ) :: self ! < Integrator.
145145
146146 call self% destroy_abstract
147147 self% registers = 0
148148 self% stages = 0
149149 if (allocated (self% stage)) deallocate (self% stage)
150150 if (allocated (self% buffer)) deallocate (self% buffer)
151151 end subroutine destroy_multistage
152- endmodule foodie_integrator_multistage_explicit_object
152+ endmodule foodie_integrator_multistage_object
0 commit comments