magpicard_integrate Subroutine

public subroutine magpicard_integrate(this, lev, qSDC, fSDC, dt, fintSDC, flags)

Compute SDC integral fintSDC = \int_{t_n}^{t_m} fSDC dt

Arguments

Type IntentOptional AttributesName
class(pf_magpicard_t), intent(inout) :: this
class(pf_level_t), intent(in) :: lev
class(pf_encap_t), intent(in) :: qSDC(:)
class(pf_encap_t), intent(in) :: fSDC(:,:)
real(kind=pfdp), intent(in) :: dt
class(pf_encap_t), intent(inout) :: fintSDC(:)
integer, intent(in), optional :: flags

Called by

proc~~magpicard_integrate~~CalledByGraph proc~magpicard_integrate magpicard_integrate proc~magpicard_sweep magpicard_sweep proc~magpicard_sweep->proc~magpicard_integrate

Contents

Source Code


Source Code

  subroutine magpicard_integrate(this, lev, qSDC, fSDC, dt, fintSDC, flags)
    class(pf_magpicard_t), intent(inout) :: this
    class(pf_level_t), intent(in   ) :: lev
    class(pf_encap_t), intent(in   ) :: qSDC(:), fSDC(:, :)
    real(pfdp),        intent(in   ) :: dt
    class(pf_encap_t), intent(inout) :: fintSDC(:)
    integer, optional, intent(in   ) :: flags
    
    integer :: j, m

    do m = 1, lev%nnodes-1
       call fintSDC(m)%setval(0.0_pfdp)
       do j = 1, lev%nnodes
          call fintSDC(m)%axpy(dt*lev%sdcmats%qmat(m,j), fSDC(j,1))
       end do
    end do
  end subroutine magpicard_integrate