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~~CallsGraph proc~mg_set_methods mg_set_methods proc~ahelmholtz_set_methods ahelmholtz_set_methods proc~mg_set_methods->proc~ahelmholtz_set_methods proc~helmholtz_set_methods helmholtz_set_methods proc~mg_set_methods->proc~helmholtz_set_methods proc~laplacian_set_methods laplacian_set_methods proc~mg_set_methods->proc~laplacian_set_methods proc~vhelmholtz_set_methods vhelmholtz_set_methods proc~mg_set_methods->proc~vhelmholtz_set_methods proc~vlaplacian_set_methods vlaplacian_set_methods proc~mg_set_methods->proc~vlaplacian_set_methods

Called by

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

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