FE-Project
Loading...
Searching...
No Matches
scale_timeint_rk Module Reference

Module common / Runge-Kutta scheme. More...

Data Types

type  timeint_rk
 Derived type to provide RK scheme. More...
type  timeint_rk_var

Functions/Subroutines

subroutine timeint_rk_init (this, rk_scheme_name, dt, var_num, ndim, size_each_var)
 Initialize a object to provide RK scheme.

Detailed Description

Module common / Runge-Kutta scheme.

Description
Driver module to provide various Runge-Kutta schemes.
Author
Yuta Kawai, Team SCALE

Function/Subroutine Documentation

◆ timeint_rk_init()

subroutine scale_timeint_rk::timeint_rk_init ( class(timeint_rk), intent(inout) this,
character(*), intent(in) rk_scheme_name,
real(rp), intent(in) dt,
integer, intent(in) var_num,
integer, intent(in) ndim,
integer, dimension(ndim), intent(in) size_each_var )

Initialize a object to provide RK scheme.

Parameters
rk_scheme_nameName of RK scheme
dtTimestep
ndimNumber of spatial Dimension
var_numNumber of variables
size_each_varArray to store size of each dimension

Definition at line 134 of file scale_timeint_rk.F90.

136
140 implicit none
141 class(timeint_rk), intent(inout) :: this
142 character(*), intent(in) :: rk_scheme_name
143 real(RP), intent(in) :: dt
144 integer, intent(in) :: var_num
145 integer, intent(in) :: ndim
146 integer, intent(in) :: size_each_var(ndim)
147 !----------------------------------------
148
149 this%dt = dt
150 this%ndim = ndim
151 this%var_num = var_num
152 allocate( this%size_each_var(ndim) )
153 this%size_each_var(:) = size_each_var(:)
154
155 call timeint_rk_butcher_tab_get_info( rk_scheme_name, & ! (in)
156 this%nstage, this%tend_buf_size, & ! (out)
157 this%low_storage_flag, this%imex_flag ) ! (out)
158
159 allocate ( this%coef_a_ex(this%nstage,this%nstage), this%coef_b_ex(this%nstage), this%coef_c_ex(this%nstage) )
160 allocate ( this%coef_sig_ex(this%nstage+1,this%nstage), this%coef_gam_ex(this%nstage+1,this%nstage) )
161! if (this%imex_flag) then
162 allocate ( this%coef_a_im(this%nstage,this%nstage), this%coef_b_im(this%nstage), this%coef_c_im(this%nstage) )
163! end if
164
165 select case(this%ndim)
166 case(1)
167 allocate( this%tend_buf1D_ex(size_each_var(1), var_num, this%tend_buf_size) )
168 if ( this%imex_flag ) then
169 allocate( this%tend_buf1D_im(size_each_var(1), var_num, this%tend_buf_size) )
170 end if
171 allocate( this%var0_1D(size_each_var(1), var_num) )
172 allocate( this%varTmp_1D(size_each_var(1), var_num) )
173 case(2)
174 allocate( this%tend_buf2D_ex(size_each_var(1),size_each_var(2), var_num, this%tend_buf_size) )
175 if ( this%imex_flag ) then
176 allocate( this%tend_buf2D_im(size_each_var(1),size_each_var(2), var_num, this%tend_buf_size) )
177 end if
178 allocate( this%var0_2D(size_each_var(1),size_each_var(2), var_num) )
179 allocate( this%varTmp_2D(size_each_var(1),size_each_var(2), var_num) )
180 case(3)
181 allocate( this%tend_buf3D_ex(size_each_var(1),size_each_var(2),size_each_var(3), var_num, this%tend_buf_size) )
182 if ( this%imex_flag ) then
183 allocate( this%tend_buf3D_im(size_each_var(1),size_each_var(2),size_each_var(3), var_num, this%tend_buf_size) )
184 end if
185 allocate( this%var0_3D(size_each_var(1),size_each_var(2),size_each_var(3), var_num) )
186 allocate( this%varTmp_3D(size_each_var(1),size_each_var(2),size_each_var(3), var_num) )
187 end select
188 allocate( this%tend_buf_indmap(this%nstage) )
189
191 rk_scheme_name, this%nstage, this%imex_flag, & ! (in)
192 this%coef_a_ex, this%coef_b_ex, this%coef_c_ex, & ! (out)
193 this%coef_sig_ex, this%coef_gam_ex, & ! (out)
194 this%coef_a_im, this%coef_b_im, this%coef_c_im, & ! (out)
195 this%tend_buf_indmap ) ! (out)
196
197 return
Module common / Runge-Kutta scheme.
subroutine, public timeint_rk_butcher_tab_get_info(rk_scheme_name, nstage, tend_buf_size, low_storage_flag, imex_flag)
subroutine, public timeint_rk_butcher_tab_get(rk_scheme_name, nstage, imex_flag, coef_a_ex, coef_b_ex, coef_c_ex, coef_sig_ex, coef_gam_ex, coef_a_im, coef_b_im, coef_c_im, tend_buf_indmap)

References scale_timeint_rk_butcher_tab::timeint_rk_butcher_tab_get(), and scale_timeint_rk_butcher_tab::timeint_rk_butcher_tab_get_info().