Improve handling of pointers in hierarchy_bld

development
sfilippone 5 months ago
parent 5a83c63810
commit cab98295e2

@ -454,8 +454,13 @@ subroutine amg_c_hierarchy_bld(a,desc_a,prec,info)
do i=2, iszv do i=2, iszv
prec%precv(i)%base_a => prec%precv(i)%ac prec%precv(i)%base_a => prec%precv(i)%ac
prec%precv(i)%base_desc => prec%precv(i)%desc_ac prec%precv(i)%base_desc => prec%precv(i)%desc_ac
prec%precv(i)%linmap%p_desc_U => prec%precv(i-1)%base_desc ! This is needed when the linmap object has been built
prec%precv(i)%linmap%p_desc_V => prec%precv(i)%base_desc ! reusing the base_desc descriptor through a pointer.
! With PSBLAS 4 we will have a better solution
if (associated(prec%precv(i)%linmap%p_desc_U)) &
& prec%precv(i)%linmap%p_desc_U => prec%precv(i-1)%base_desc
if (associated(prec%precv(i)%linmap%p_desc_V))&
& prec%precv(i)%linmap%p_desc_V => prec%precv(i)%base_desc
end do end do
end if end if

@ -454,8 +454,13 @@ subroutine amg_d_hierarchy_bld(a,desc_a,prec,info)
do i=2, iszv do i=2, iszv
prec%precv(i)%base_a => prec%precv(i)%ac prec%precv(i)%base_a => prec%precv(i)%ac
prec%precv(i)%base_desc => prec%precv(i)%desc_ac prec%precv(i)%base_desc => prec%precv(i)%desc_ac
prec%precv(i)%linmap%p_desc_U => prec%precv(i-1)%base_desc ! This is needed when the linmap object has been built
prec%precv(i)%linmap%p_desc_V => prec%precv(i)%base_desc ! reusing the base_desc descriptor through a pointer.
! With PSBLAS 4 we will have a better solution
if (associated(prec%precv(i)%linmap%p_desc_U)) &
& prec%precv(i)%linmap%p_desc_U => prec%precv(i-1)%base_desc
if (associated(prec%precv(i)%linmap%p_desc_V))&
& prec%precv(i)%linmap%p_desc_V => prec%precv(i)%base_desc
end do end do
end if end if

@ -454,8 +454,13 @@ subroutine amg_s_hierarchy_bld(a,desc_a,prec,info)
do i=2, iszv do i=2, iszv
prec%precv(i)%base_a => prec%precv(i)%ac prec%precv(i)%base_a => prec%precv(i)%ac
prec%precv(i)%base_desc => prec%precv(i)%desc_ac prec%precv(i)%base_desc => prec%precv(i)%desc_ac
prec%precv(i)%linmap%p_desc_U => prec%precv(i-1)%base_desc ! This is needed when the linmap object has been built
prec%precv(i)%linmap%p_desc_V => prec%precv(i)%base_desc ! reusing the base_desc descriptor through a pointer.
! With PSBLAS 4 we will have a better solution
if (associated(prec%precv(i)%linmap%p_desc_U)) &
& prec%precv(i)%linmap%p_desc_U => prec%precv(i-1)%base_desc
if (associated(prec%precv(i)%linmap%p_desc_V))&
& prec%precv(i)%linmap%p_desc_V => prec%precv(i)%base_desc
end do end do
end if end if

@ -454,8 +454,13 @@ subroutine amg_z_hierarchy_bld(a,desc_a,prec,info)
do i=2, iszv do i=2, iszv
prec%precv(i)%base_a => prec%precv(i)%ac prec%precv(i)%base_a => prec%precv(i)%ac
prec%precv(i)%base_desc => prec%precv(i)%desc_ac prec%precv(i)%base_desc => prec%precv(i)%desc_ac
prec%precv(i)%linmap%p_desc_U => prec%precv(i-1)%base_desc ! This is needed when the linmap object has been built
prec%precv(i)%linmap%p_desc_V => prec%precv(i)%base_desc ! reusing the base_desc descriptor through a pointer.
! With PSBLAS 4 we will have a better solution
if (associated(prec%precv(i)%linmap%p_desc_U)) &
& prec%precv(i)%linmap%p_desc_U => prec%precv(i-1)%base_desc
if (associated(prec%precv(i)%linmap%p_desc_V))&
& prec%precv(i)%linmap%p_desc_V => prec%precv(i)%base_desc
end do end do
end if end if

Loading…
Cancel
Save