Initialize a object to provide RK scheme.
137
141 implicit none
142 class(timeint_rk), intent(inout) :: this
143 character(*), intent(in) :: rk_scheme_name
144 real(RP), intent(in) :: dt
145 integer, intent(in) :: var_num
146 integer, intent(in) :: ndim
147 integer, intent(in) :: size_each_var(ndim)
148
149
150
151
152 this%dt = dt
153 this%ndim = ndim
154 this%var_num = var_num
155 allocate( this%size_each_var(ndim) )
156 this%size_each_var(:) = size_each_var(:)
157
158
159
161 this%nstage, this%tend_buf_size, &
162 this%low_storage_flag, this%imex_flag )
163
164 allocate ( this%coef_a_ex(this%nstage,this%nstage), this%coef_b_ex(this%nstage), this%coef_c_ex(this%nstage) )
165 allocate ( this%coef_sig_ex(this%nstage+1,this%nstage), this%coef_gam_ex(this%nstage+1,this%nstage) )
166
167 allocate ( this%coef_a_im(this%nstage,this%nstage), this%coef_b_im(this%nstage), this%coef_c_im(this%nstage) )
168
169
170 select case(this%ndim)
171 case(1)
172 allocate( this%tend_buf1D_ex(size_each_var(1), var_num, this%tend_buf_size) )
173
174 if ( this%imex_flag ) then
175 allocate( this%tend_buf1D_im(size_each_var(1), var_num, this%tend_buf_size) )
176 else
177 allocate( this%tend_buf1D_im(1,1,1) )
178 end if
179
180 allocate( this%var0_1D(size_each_var(1), var_num) )
181 allocate( this%varTmp_1D(size_each_var(1), var_num) )
182
183 case(2)
184 allocate( this%tend_buf2D_ex(size_each_var(1),size_each_var(2), var_num, this%tend_buf_size) )
185
186 if ( this%imex_flag ) then
187 allocate( this%tend_buf2D_im(size_each_var(1),size_each_var(2), var_num, this%tend_buf_size) )
188 else
189 allocate( this%tend_buf2D_im(1,1,1,1) )
190 end if
191
192 allocate( this%var0_2D(size_each_var(1),size_each_var(2), var_num) )
193 allocate( this%varTmp_2D(size_each_var(1),size_each_var(2), var_num) )
194
195 case(3)
196 allocate( this%tend_buf3D_ex(size_each_var(1),size_each_var(2),size_each_var(3), var_num, this%tend_buf_size) )
197
198 if ( this%imex_flag ) then
199 allocate( this%tend_buf3D_im(size_each_var(1),size_each_var(2),size_each_var(3), var_num, this%tend_buf_size) )
200 else
201 allocate( this%tend_buf3D_im(1,1,1,1,1) )
202 end if
203
204 allocate( this%var0_3D(size_each_var(1),size_each_var(2),size_each_var(3), var_num) )
205 allocate( this%varTmp_3D(size_each_var(1),size_each_var(2),size_each_var(3), var_num) )
206
207 end select
208 allocate( this%tend_buf_indmap(this%nstage) )
209
211 rk_scheme_name, this%nstage, this%imex_flag, &
212 this%coef_a_ex, this%coef_b_ex, this%coef_c_ex, &
213 this%coef_sig_ex, this%coef_gam_ex, &
214 this%coef_a_im, this%coef_b_im, this%coef_c_im, &
215 this%tend_buf_indmap )
216
217
218
219
220
221
222
223
224
225
226
227
228 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)