mg_set_methods Subroutine

public subroutine mg_set_methods(mg)

Arguments

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

Calls

proc~~mg_set_methods~2~~CallsGraph proc~mg_set_methods~2 mg_set_methods proc~ahelmholtz_set_methods~2 ahelmholtz_set_methods proc~mg_set_methods~2->proc~ahelmholtz_set_methods~2 proc~helmholtz_set_methods~2 helmholtz_set_methods proc~mg_set_methods~2->proc~helmholtz_set_methods~2 proc~laplacian_set_methods~2 laplacian_set_methods proc~mg_set_methods~2->proc~laplacian_set_methods~2 proc~vhelmholtz_set_methods~2 vhelmholtz_set_methods proc~mg_set_methods~2->proc~vhelmholtz_set_methods~2 proc~vlaplacian_set_methods~2 vlaplacian_set_methods proc~mg_set_methods~2->proc~vlaplacian_set_methods~2

Called by

proc~~mg_set_methods~2~~CalledByGraph proc~mg_set_methods~2 mg_set_methods proc~check_methods~2 check_methods proc~check_methods~2->proc~mg_set_methods~2 proc~diffusion_solve_acoeff~2 diffusion_solve_acoeff proc~diffusion_solve_acoeff~2->proc~mg_set_methods~2 proc~mg_fas_fmg~2 mg_fas_fmg proc~diffusion_solve_acoeff~2->proc~mg_fas_fmg~2 proc~mg_fas_vcycle~2 mg_fas_vcycle proc~diffusion_solve_acoeff~2->proc~mg_fas_vcycle~2 proc~diffusion_solve_vcoeff~2 diffusion_solve_vcoeff proc~diffusion_solve_vcoeff~2->proc~mg_set_methods~2 proc~diffusion_solve_vcoeff~2->proc~mg_fas_fmg~2 proc~diffusion_solve_vcoeff~2->proc~mg_fas_vcycle~2 proc~diffusion_solve~2 diffusion_solve proc~diffusion_solve~2->proc~mg_set_methods~2 proc~diffusion_solve~2->proc~mg_fas_fmg~2 proc~diffusion_solve~2->proc~mg_fas_vcycle~2 proc~mg_fas_fmg~2->proc~check_methods~2 proc~mg_fas_fmg~2->proc~mg_fas_vcycle~2 proc~mg_fas_vcycle~2->proc~check_methods~2

Source Code

  subroutine mg_set_methods(mg)

    type(mg_t), intent(inout) :: mg

    ! Set default prolongation method (routines below can override this)
    mg%box_prolong => mg_prolong_sparse

    select case (mg%operator_type)
    case (mg_laplacian)
       call laplacian_set_methods(mg)
    case (mg_vlaplacian)
       call vlaplacian_set_methods(mg)
    case (mg_helmholtz)
       call helmholtz_set_methods(mg)
    case (mg_vhelmholtz)
       call vhelmholtz_set_methods(mg)
    case (mg_ahelmholtz)
       call ahelmholtz_set_methods(mg)
    case default
       error stop "mg_set_methods: unknown operator"
    end select

    ! For red-black, perform two smoothing sub-steps so that all unknowns are
    ! updated per cycle
    if (mg%smoother_type == mg_smoother_gsrb) then
       mg%n_smoother_substeps = 2
    else
       mg%n_smoother_substeps = 1
    end if
  end subroutine mg_set_methods