|
|
@ -461,6 +461,12 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
allocate(mld_d_id_solver_type :: level%sm%sv, stat=info)
|
|
|
|
allocate(mld_d_id_solver_type :: level%sm%sv, stat=info)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
if (allocated(level%sm)) then
|
|
|
|
|
|
|
|
if (allocated(level%sm%sv)) &
|
|
|
|
|
|
|
|
& call level%sm%sv%default()
|
|
|
|
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case (mld_diag_scale_)
|
|
|
|
case (mld_diag_scale_)
|
|
|
|
if (allocated(level%sm%sv)) then
|
|
|
|
if (allocated(level%sm%sv)) then
|
|
|
|
select type (sv => level%sm%sv)
|
|
|
|
select type (sv => level%sm%sv)
|
|
|
@ -475,6 +481,11 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
allocate(mld_d_diag_solver_type :: level%sm%sv, stat=info)
|
|
|
|
allocate(mld_d_diag_solver_type :: level%sm%sv, stat=info)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
if (allocated(level%sm)) then
|
|
|
|
|
|
|
|
if (allocated(level%sm%sv)) &
|
|
|
|
|
|
|
|
& call level%sm%sv%default()
|
|
|
|
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case (mld_ilu_n_,mld_milu_n_,mld_ilu_t_)
|
|
|
|
case (mld_ilu_n_,mld_milu_n_,mld_ilu_t_)
|
|
|
|
if (allocated(level%sm%sv)) then
|
|
|
|
if (allocated(level%sm%sv)) then
|
|
|
@ -490,6 +501,12 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
allocate(mld_d_ilu_solver_type :: level%sm%sv, stat=info)
|
|
|
|
allocate(mld_d_ilu_solver_type :: level%sm%sv, stat=info)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
if (allocated(level%sm)) then
|
|
|
|
|
|
|
|
if (allocated(level%sm%sv)) &
|
|
|
|
|
|
|
|
& call level%sm%sv%default()
|
|
|
|
|
|
|
|
end if
|
|
|
|
|
|
|
|
call level%sm%sv%set(mld_sub_solve_,val,info)
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef HAVE_UMF_
|
|
|
|
#ifdef HAVE_UMF_
|
|
|
|
case (mld_umf_)
|
|
|
|
case (mld_umf_)
|
|
|
|
if (allocated(level%sm%sv)) then
|
|
|
|
if (allocated(level%sm%sv)) then
|
|
|
@ -505,6 +522,10 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
allocate(mld_d_umf_solver_type :: level%sm%sv, stat=info)
|
|
|
|
allocate(mld_d_umf_solver_type :: level%sm%sv, stat=info)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
if (allocated(level%sm)) then
|
|
|
|
|
|
|
|
if (allocated(level%sm%sv)) &
|
|
|
|
|
|
|
|
& call level%sm%sv%default()
|
|
|
|
|
|
|
|
end if
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_SLU_
|
|
|
|
#ifdef HAVE_SLU_
|
|
|
|
case (mld_slu_)
|
|
|
|
case (mld_slu_)
|
|
|
@ -521,16 +542,16 @@ contains
|
|
|
|
else
|
|
|
|
else
|
|
|
|
allocate(mld_d_slu_solver_type :: level%sm%sv, stat=info)
|
|
|
|
allocate(mld_d_slu_solver_type :: level%sm%sv, stat=info)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
if (allocated(level%sm)) then
|
|
|
|
|
|
|
|
if (allocated(level%sm%sv)) &
|
|
|
|
|
|
|
|
& call level%sm%sv%default()
|
|
|
|
|
|
|
|
end if
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
case default
|
|
|
|
case default
|
|
|
|
!
|
|
|
|
!
|
|
|
|
! Do nothing and hope for the best :)
|
|
|
|
! Do nothing and hope for the best :)
|
|
|
|
!
|
|
|
|
!
|
|
|
|
end select
|
|
|
|
end select
|
|
|
|
if (allocated(level%sm)) then
|
|
|
|
|
|
|
|
if (allocated(level%sm%sv)) &
|
|
|
|
|
|
|
|
& call level%sm%sv%default()
|
|
|
|
|
|
|
|
end if
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end subroutine onelev_set_solver
|
|
|
|
end subroutine onelev_set_solver
|
|
|
|
|
|
|
|
|
|
|
|