@@ -53,6 +53,8 @@ module foodie_integrator_lmm_ssp_vss
5353 trim (class_name_)// ' _steps_4_order_3' , &
5454 trim (class_name_)// ' _steps_5_order_3' ] ! < List of supported schemes.
5555
56+ logical , parameter :: has_fast_mode_= .false. ! < Flag to check if integrator provides *fast mode* integrate.
57+
5658type, extends(integrator_object) :: integrator_lmm_ssp_vss
5759 ! < FOODIE integrator: provide an explicit class of Linear Multi-step Methods (LLM) with Strong Stability Preserving property and
5860 ! < variable stepsize (VSS), from 2nd to 3rd order accurate.
@@ -65,6 +67,7 @@ module foodie_integrator_lmm_ssp_vss
6567 ! deferred methods
6668 procedure , pass(self) :: class_name ! < Return the class name of schemes.
6769 procedure , pass(self) :: description ! < Return pretty-printed object description.
70+ procedure , pass(self) :: has_fast_mode ! < Return .true. if the integrator class has *fast mode* integrate.
6871 procedure , pass(lhs) :: integr_assign_integr ! < Operator `=`.
6972 procedure , pass(self) :: is_supported ! < Return .true. if the integrator class support the given scheme.
7073 procedure , pass(self) :: supported_schemes ! < Return the list of supported schemes.
@@ -121,6 +124,14 @@ pure function description(self, prefix) result(desc)
121124 desc = desc// prefix_// ' + ' // supported_schemes_(ubound (supported_schemes_, dim= 1 ))
122125 end function description
123126
127+ elemental function has_fast_mode (self )
128+ ! < Return .true. if the integrator class has *fast mode* integrate.
129+ class(integrator_lmm_ssp_vss), intent (in ) :: self ! < Integrator.
130+ logical :: has_fast_mode ! < Inquire result.
131+
132+ has_fast_mode = has_fast_mode_
133+ end function has_fast_mode
134+
124135 pure subroutine integr_assign_integr (lhs , rhs )
125136 ! < Operator `=`.
126137 class(integrator_lmm_ssp_vss), intent (inout ) :: lhs ! < Left hand side.
0 commit comments