Initialize a object to provide RK scheme.
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
156 this%nstage, this%tend_buf_size, &
157 this%low_storage_flag, this%imex_flag )
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
162 allocate ( this%coef_a_im(this%nstage,this%nstage), this%coef_b_im(this%nstage), this%coef_c_im(this%nstage) )
163
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, &
192 this%coef_a_ex, this%coef_b_ex, this%coef_c_ex, &
193 this%coef_sig_ex, this%coef_gam_ex, &
194 this%coef_a_im, this%coef_b_im, this%coef_c_im, &
195 this%tend_buf_indmap )
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)