correct_children Subroutine

private subroutine correct_children(mg, lvl)

Arguments

Type IntentOptional Attributes Name
type(mg_t), intent(inout) :: mg
integer, intent(in) :: lvl

Calls

proc~~correct_children~3~~CallsGraph proc~correct_children~3 correct_children proc~mg_prolong~3 mg_prolong proc~correct_children~3->proc~mg_prolong~3 proc~prolong_onto~3 prolong_onto proc~mg_prolong~3->proc~prolong_onto~3 proc~prolong_set_buffer~3 prolong_set_buffer proc~mg_prolong~3->proc~prolong_set_buffer~3 proc~sort_and_transfer_buffers~3 sort_and_transfer_buffers proc~mg_prolong~3->proc~sort_and_transfer_buffers~3 proc~mg_get_child_offset~3 mg_get_child_offset proc~prolong_onto~3->proc~mg_get_child_offset~3 proc~prolong_set_buffer~3->proc~mg_get_child_offset~3 mpi_waitall mpi_waitall proc~sort_and_transfer_buffers~3->mpi_waitall proc~mpi_irecv_wrapper mpi_irecv_wrapper proc~sort_and_transfer_buffers~3->proc~mpi_irecv_wrapper proc~mpi_isend_wrapper mpi_isend_wrapper proc~sort_and_transfer_buffers~3->proc~mpi_isend_wrapper proc~sort_sendbuf~3 sort_sendbuf proc~sort_and_transfer_buffers~3->proc~sort_sendbuf~3 mpi_irecv mpi_irecv proc~mpi_irecv_wrapper->mpi_irecv mpi_isend mpi_isend proc~mpi_isend_wrapper->mpi_isend interface~mrgrnk~3 mrgrnk proc~sort_sendbuf~3->interface~mrgrnk~3 proc~i_mrgrnk~3 I_mrgrnk interface~mrgrnk~3->proc~i_mrgrnk~3

Called by

proc~~correct_children~3~~CalledByGraph proc~correct_children~3 correct_children proc~mg_fas_fmg~3 mg_fas_fmg proc~mg_fas_fmg~3->proc~correct_children~3 proc~mg_fas_vcycle~3 mg_fas_vcycle proc~mg_fas_fmg~3->proc~mg_fas_vcycle~3 proc~mg_fas_vcycle~3->proc~correct_children~3 proc~diffusion_solve_acoeff~3 diffusion_solve_acoeff proc~diffusion_solve_acoeff~3->proc~mg_fas_fmg~3 proc~diffusion_solve_acoeff~3->proc~mg_fas_vcycle~3 proc~diffusion_solve_vcoeff~3 diffusion_solve_vcoeff proc~diffusion_solve_vcoeff~3->proc~mg_fas_fmg~3 proc~diffusion_solve_vcoeff~3->proc~mg_fas_vcycle~3 proc~diffusion_solve~3 diffusion_solve proc~diffusion_solve~3->proc~mg_fas_fmg~3 proc~diffusion_solve~3->proc~mg_fas_vcycle~3

Source Code

  subroutine correct_children(mg, lvl)
    type(mg_t), intent(inout) :: mg
    integer, intent(in)       :: lvl
    integer                   :: i, id

    do i = 1, size(mg%lvls(lvl)%my_parents)
       id = mg%lvls(lvl)%my_parents(i)

       ! Store the correction in mg_ires
       mg%boxes(id)%cc(:, :, :, mg_ires) = mg%boxes(id)%cc(:, :, :,&
           mg_iphi) - mg%boxes(id)%cc(:, :, :, mg_iold)
    end do

    call mg_prolong(mg, lvl, mg_ires, mg_iphi, mg%box_prolong, add=.true.)
  end subroutine correct_children