vhelmholtz_set_methods Subroutine

public subroutine vhelmholtz_set_methods(mg)

Arguments

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

Called by

proc~~vhelmholtz_set_methods~2~~CalledByGraph proc~vhelmholtz_set_methods~2 vhelmholtz_set_methods proc~mg_set_methods~2 mg_set_methods proc~mg_set_methods~2->proc~vhelmholtz_set_methods~2 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 vhelmholtz_set_methods(mg)
    type(mg_t), intent(inout) :: mg

    if (mg%n_extra_vars == 0 .and. mg%is_allocated) then
       error stop "vhelmholtz_set_methods: mg%n_extra_vars == 0"
    else
       mg%n_extra_vars = max(1, mg%n_extra_vars)
    end if

    mg%subtract_mean = .false.

    ! Use Neumann zero boundary conditions for the variable coefficient, since
    ! it is needed in ghost cells.
    mg%bc(:, mg_iveps)%bc_type = mg_bc_neumann
    mg%bc(:, mg_iveps)%bc_value = 0.0_dp

    select case (mg%geometry_type)
    case (mg_cartesian)
       mg%box_op => box_vhelmh

       select case (mg%smoother_type)
       case (mg_smoother_gs, mg_smoother_gsrb)
          mg%box_smoother => box_gs_vhelmh
       case default
          error stop "vhelmholtz_set_methods: unsupported smoother type"
       end select
    case default
       error stop "vhelmholtz_set_methods: unsupported geometry"
    end select

  end subroutine vhelmholtz_set_methods