Updates for new linmap internal structure.

stopcriterion
Salvatore Filippone 6 years ago
parent 5357260a84
commit 19d33fae2c

@ -16,21 +16,21 @@ mlp:
cd mlprec && $(MAKE) all
install: all
$(SHELL) ./mkdir.sh $(INSTALL_LIBDIR) &&\
mkdir -p $(INSTALL_LIBDIR) &&\
$(INSTALL_DATA) lib/*.a $(INSTALL_LIBDIR)
$(SHELL) ./mkdir.sh $(INSTALL_INCLUDEDIR) &&\
mkdir -p $(INSTALL_INCLUDEDIR) &&\
$(INSTALL_DATA) Make.inc $(INSTALL_INCLUDEDIR)/Make.inc.mld2p4
$(SHELL) ./mkdir.sh $(INSTALL_INCLUDEDIR) && \
mkdir -p $(INSTALL_INCLUDEDIR) && \
$(INSTALL_DATA) include/*.h $(INSTALL_INCLUDEDIR)
$(SHELL) ./mkdir.sh $(INSTALL_MODULESDIR) && \
mkdir -p $(INSTALL_MODULESDIR) && \
$(INSTALL_DATA) modules/*$(.mod) $(INSTALL_MODULESDIR)
$(SHELL) ./mkdir.sh $(INSTALL_DOCSDIR) && \
mkdir -p $(INSTALL_DOCSDIR) && \
/bin/cp -fr docs/*pdf docs/html $(INSTALL_DOCSDIR)
$(SHELL) ./mkdir.sh $(INSTALL_DOCSDIR) && \
mkdir -p $(INSTALL_DOCSDIR) && \
$(INSTALL_DATA) README LICENSE $(INSTALL_DOCSDIR)
$(SHELL) ./mkdir.sh $(INSTALL_SAMPLESDIR) && \
./mkdir.sh $(INSTALL_SAMPLESDIR)/simple &&\
./mkdir.sh $(INSTALL_SAMPLESDIR)/advanced && \
mkdir -p $(INSTALL_SAMPLESDIR) && \
mkdir -p $(INSTALL_SAMPLESDIR)/simple &&\
mkdir -p $(INSTALL_SAMPLESDIR)/advanced && \
(cd examples; /bin/cp -fr pdegen fileread $(INSTALL_SAMPLESDIR)/simple ) && \
(cd tests; /bin/cp -fr pdegen fileread $(INSTALL_SAMPLESDIR)/advanced )
cleanlib:

@ -1,20 +0,0 @@
#!/bin/sh
dir=$1;
dir_cmp=`echo $dir | sed 's./. /.g'`
if [ ! -d $dir ]
then
path=''
for cmp in $dir_cmp ; do
path="$path$cmp";
if [ ! -d $path ] ; then
mkdir $path; rc=$?;
if [ $rc != 0 ] ; then
echo "Error while making directory $path "
exit 1
fi
fi
done
fi

@ -102,17 +102,17 @@ subroutine mld_c_base_onelev_dump(lv,level,info,prefix,head,ac,rp,&
call lv%ac%print(fname,head=head,iv=ivr)
end if
if (rp_) then
ivr = lv%map%p_desc_X%get_global_indices(owned=.false.)
ivc = lv%map%p_desc_Y%get_global_indices(owned=.false.)
ivr = lv%map%p_desc_U%get_global_indices(owned=.false.)
ivc = lv%map%p_desc_V%get_global_indices(owned=.false.)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_r.mtx'
call lv%map%map_X2Y%print(fname,head=head,ivr=ivc,ivc=ivr)
call lv%map%mat_U2V%print(fname,head=head,ivr=ivc,ivc=ivr)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_p.mtx'
call lv%map%map_Y2X%print(fname,head=head,ivr=ivr,ivc=ivc)
call lv%map%mat_V2U%print(fname,head=head,ivr=ivr,ivc=ivc)
end if
if (tprol_) then
! Tentative prolongator is stored with column indices already
! in global numbering, so only IVR is needed.
ivr = lv%map%p_desc_X%get_global_indices(owned=.false.)
ivr = lv%map%p_desc_U%get_global_indices(owned=.false.)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_tprol.mtx'
!
! This is not implemented yet.
@ -127,9 +127,9 @@ subroutine mld_c_base_onelev_dump(lv,level,info,prefix,head,ac,rp,&
end if
if (rp_) then
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_r.mtx'
call lv%map%map_X2Y%print(fname,head=head)
call lv%map%mat_U2V%print(fname,head=head)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_p.mtx'
call lv%map%map_Y2X%print(fname,head=head)
call lv%map%mat_V2U%print(fname,head=head)
end if
if (tprol_) then
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_tprol.mtx'

@ -102,17 +102,17 @@ subroutine mld_d_base_onelev_dump(lv,level,info,prefix,head,ac,rp,&
call lv%ac%print(fname,head=head,iv=ivr)
end if
if (rp_) then
ivr = lv%map%p_desc_X%get_global_indices(owned=.false.)
ivc = lv%map%p_desc_Y%get_global_indices(owned=.false.)
ivr = lv%map%p_desc_U%get_global_indices(owned=.false.)
ivc = lv%map%p_desc_V%get_global_indices(owned=.false.)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_r.mtx'
call lv%map%map_X2Y%print(fname,head=head,ivr=ivc,ivc=ivr)
call lv%map%mat_U2V%print(fname,head=head,ivr=ivc,ivc=ivr)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_p.mtx'
call lv%map%map_Y2X%print(fname,head=head,ivr=ivr,ivc=ivc)
call lv%map%mat_V2U%print(fname,head=head,ivr=ivr,ivc=ivc)
end if
if (tprol_) then
! Tentative prolongator is stored with column indices already
! in global numbering, so only IVR is needed.
ivr = lv%map%p_desc_X%get_global_indices(owned=.false.)
ivr = lv%map%p_desc_U%get_global_indices(owned=.false.)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_tprol.mtx'
!
! This is not implemented yet.
@ -127,9 +127,9 @@ subroutine mld_d_base_onelev_dump(lv,level,info,prefix,head,ac,rp,&
end if
if (rp_) then
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_r.mtx'
call lv%map%map_X2Y%print(fname,head=head)
call lv%map%mat_U2V%print(fname,head=head)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_p.mtx'
call lv%map%map_Y2X%print(fname,head=head)
call lv%map%mat_V2U%print(fname,head=head)
end if
if (tprol_) then
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_tprol.mtx'

@ -102,17 +102,17 @@ subroutine mld_s_base_onelev_dump(lv,level,info,prefix,head,ac,rp,&
call lv%ac%print(fname,head=head,iv=ivr)
end if
if (rp_) then
ivr = lv%map%p_desc_X%get_global_indices(owned=.false.)
ivc = lv%map%p_desc_Y%get_global_indices(owned=.false.)
ivr = lv%map%p_desc_U%get_global_indices(owned=.false.)
ivc = lv%map%p_desc_V%get_global_indices(owned=.false.)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_r.mtx'
call lv%map%map_X2Y%print(fname,head=head,ivr=ivc,ivc=ivr)
call lv%map%mat_U2V%print(fname,head=head,ivr=ivc,ivc=ivr)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_p.mtx'
call lv%map%map_Y2X%print(fname,head=head,ivr=ivr,ivc=ivc)
call lv%map%mat_V2U%print(fname,head=head,ivr=ivr,ivc=ivc)
end if
if (tprol_) then
! Tentative prolongator is stored with column indices already
! in global numbering, so only IVR is needed.
ivr = lv%map%p_desc_X%get_global_indices(owned=.false.)
ivr = lv%map%p_desc_U%get_global_indices(owned=.false.)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_tprol.mtx'
!
! This is not implemented yet.
@ -127,9 +127,9 @@ subroutine mld_s_base_onelev_dump(lv,level,info,prefix,head,ac,rp,&
end if
if (rp_) then
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_r.mtx'
call lv%map%map_X2Y%print(fname,head=head)
call lv%map%mat_U2V%print(fname,head=head)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_p.mtx'
call lv%map%map_Y2X%print(fname,head=head)
call lv%map%mat_V2U%print(fname,head=head)
end if
if (tprol_) then
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_tprol.mtx'

@ -102,17 +102,17 @@ subroutine mld_z_base_onelev_dump(lv,level,info,prefix,head,ac,rp,&
call lv%ac%print(fname,head=head,iv=ivr)
end if
if (rp_) then
ivr = lv%map%p_desc_X%get_global_indices(owned=.false.)
ivc = lv%map%p_desc_Y%get_global_indices(owned=.false.)
ivr = lv%map%p_desc_U%get_global_indices(owned=.false.)
ivc = lv%map%p_desc_V%get_global_indices(owned=.false.)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_r.mtx'
call lv%map%map_X2Y%print(fname,head=head,ivr=ivc,ivc=ivr)
call lv%map%mat_U2V%print(fname,head=head,ivr=ivc,ivc=ivr)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_p.mtx'
call lv%map%map_Y2X%print(fname,head=head,ivr=ivr,ivc=ivc)
call lv%map%mat_V2U%print(fname,head=head,ivr=ivr,ivc=ivc)
end if
if (tprol_) then
! Tentative prolongator is stored with column indices already
! in global numbering, so only IVR is needed.
ivr = lv%map%p_desc_X%get_global_indices(owned=.false.)
ivr = lv%map%p_desc_U%get_global_indices(owned=.false.)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_tprol.mtx'
!
! This is not implemented yet.
@ -127,9 +127,9 @@ subroutine mld_z_base_onelev_dump(lv,level,info,prefix,head,ac,rp,&
end if
if (rp_) then
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_r.mtx'
call lv%map%map_X2Y%print(fname,head=head)
call lv%map%mat_U2V%print(fname,head=head)
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_p.mtx'
call lv%map%map_Y2X%print(fname,head=head)
call lv%map%mat_V2U%print(fname,head=head)
end if
if (tprol_) then
write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_tprol.mtx'

@ -441,8 +441,8 @@ subroutine mld_c_hierarchy_bld(a,desc_a,prec,info)
do i=2, iszv
prec%precv(i)%base_a => prec%precv(i)%ac
prec%precv(i)%base_desc => prec%precv(i)%desc_ac
prec%precv(i)%map%p_desc_X => prec%precv(i-1)%base_desc
prec%precv(i)%map%p_desc_Y => prec%precv(i)%base_desc
prec%precv(i)%map%p_desc_U => prec%precv(i-1)%base_desc
prec%precv(i)%map%p_desc_V => prec%precv(i)%base_desc
end do
end if

@ -520,9 +520,9 @@ contains
if (level < nlev) then
! Apply the restriction
call psb_map_X2Y(cone,vx2l,&
call p%precv(level+1)%map%map_U2V(cone,vx2l,&
& czero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
& info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -540,9 +540,9 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(cone,p%precv(level+1)%wrk%vy2l,&
& cone,vy2l,&
& p%precv(level+1)%map,info,work=work,&
call p%precv(level+1)%map%map_V2U(cone,&
& p%precv(level+1)%wrk%vy2l, cone,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -653,9 +653,9 @@ contains
& a_err='Error during residue')
goto 9999
end if
call psb_map_X2Y(cone,vty,&
call p%precv(level+1)%map%map_U2V(cone,vty,&
& czero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
& info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -664,9 +664,9 @@ contains
end if
else
! Shortcut: just transfer x2l.
call psb_map_X2Y(cone,vx2l,&
call p%precv(level+1)%map%map_U2V(cone,vx2l,&
& czero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
& info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -680,9 +680,9 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(cone,p%precv(level+1)%wrk%vy2l,&
& cone,vy2l,&
& p%precv(level+1)%map,info,work=work,&
call p%precv(level+1)%map%map_V2U(cone,&
& p%precv(level+1)%wrk%vy2l,cone,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -697,9 +697,9 @@ contains
if (info == psb_success_) call psb_spmm(-cone,base_a,&
& vy2l,cone,vty,&
& base_desc,info,work=work,trans=trans)
if (info == psb_success_) call psb_map_X2Y(cone,vty,&
& czero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
if (info == psb_success_) &
& call p%precv(level+1)%map%map_U2V(cone,vty,&
& czero,p%precv(level+1)%wrk%vx2l,info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -709,9 +709,9 @@ contains
call inner_ml_aply(level+1,p,trans,work,info)
if (info == psb_success_) call psb_map_Y2X(cone,p%precv(level+1)%wrk%vy2l,&
& cone,vy2l,&
& p%precv(level+1)%map,info,work=work,&
if (info == psb_success_) call p%precv(level+1)%map%map_V2U(cone, &
& p%precv(level+1)%wrk%vy2l,cone,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
@ -889,9 +889,9 @@ contains
end if
! Apply the restriction
call psb_map_X2Y(cone,vty,&
call p%precv(level + 1)%map%map_U2V(cone,vty,&
& czero,p%precv(level + 1)%wrk%vx2l,&
& p%precv(level + 1)%map,info,work=work,&
&info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
@ -925,9 +925,9 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(cone,p%precv(level+1)%wrk%vy2l,&
& cone,vy2l,&
& p%precv(level+1)%map,info,work=work,&
call p%precv(level+1)%map%map_V2U(cone,&
& p%precv(level+1)%wrk%vy2l,cone,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
@ -1415,9 +1415,9 @@ contains
if (level < nlev) then
! Apply the restriction
call psb_map_X2Y(cone,mlwrk(level)%x2l,&
call p%precv(level+1)%map%map_U2V(cone,mlwrk(level)%x2l,&
& czero,mlwrk(level+1)%x2l,&
& p%precv(level+1)%map,info,work=work)
& info,work=work)
mlwrk(level+1)%y2l(:) = czero
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -1435,9 +1435,9 @@ contains
!
! Apply the prolongator and add correction.
!
call psb_map_Y2X(cone,mlwrk(level+1)%y2l,&
& cone,mlwrk(level)%y2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_V2U(cone,&
& mlwrk(level+1)%y2l,cone,mlwrk(level)%y2l,&
& info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during prolongation')
@ -1555,9 +1555,8 @@ contains
& a_err='Error during residue')
goto 9999
end if
call psb_map_X2Y(cone,mlwrk(level)%ty,&
& czero,mlwrk(level+1)%x2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_U2V(cone,mlwrk(level)%ty,&
& czero,mlwrk(level+1)%x2l,info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during restriction')
@ -1565,9 +1564,8 @@ contains
end if
else
! Shortcut: just transfer x2l.
call psb_map_X2Y(cone,mlwrk(level)%x2l,&
& czero,mlwrk(level+1)%x2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_U2V(cone,mlwrk(level)%x2l,&
& czero,mlwrk(level+1)%x2l,info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during restriction')
@ -1595,9 +1593,8 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(cone,mlwrk(level+1)%y2l,&
& cone,mlwrk(level)%y2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_V2U(cone,mlwrk(level+1)%y2l,&
& cone,mlwrk(level)%y2l,info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during prolongation')

@ -441,8 +441,8 @@ subroutine mld_d_hierarchy_bld(a,desc_a,prec,info)
do i=2, iszv
prec%precv(i)%base_a => prec%precv(i)%ac
prec%precv(i)%base_desc => prec%precv(i)%desc_ac
prec%precv(i)%map%p_desc_X => prec%precv(i-1)%base_desc
prec%precv(i)%map%p_desc_Y => prec%precv(i)%base_desc
prec%precv(i)%map%p_desc_U => prec%precv(i-1)%base_desc
prec%precv(i)%map%p_desc_V => prec%precv(i)%base_desc
end do
end if

@ -520,9 +520,9 @@ contains
if (level < nlev) then
! Apply the restriction
call psb_map_X2Y(done,vx2l,&
call p%precv(level+1)%map%map_U2V(done,vx2l,&
& dzero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
& info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -540,9 +540,9 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(done,p%precv(level+1)%wrk%vy2l,&
& done,vy2l,&
& p%precv(level+1)%map,info,work=work,&
call p%precv(level+1)%map%map_V2U(done,&
& p%precv(level+1)%wrk%vy2l, done,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -653,9 +653,9 @@ contains
& a_err='Error during residue')
goto 9999
end if
call psb_map_X2Y(done,vty,&
call p%precv(level+1)%map%map_U2V(done,vty,&
& dzero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
& info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -664,9 +664,9 @@ contains
end if
else
! Shortcut: just transfer x2l.
call psb_map_X2Y(done,vx2l,&
call p%precv(level+1)%map%map_U2V(done,vx2l,&
& dzero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
& info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -680,9 +680,9 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(done,p%precv(level+1)%wrk%vy2l,&
& done,vy2l,&
& p%precv(level+1)%map,info,work=work,&
call p%precv(level+1)%map%map_V2U(done,&
& p%precv(level+1)%wrk%vy2l,done,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -697,9 +697,9 @@ contains
if (info == psb_success_) call psb_spmm(-done,base_a,&
& vy2l,done,vty,&
& base_desc,info,work=work,trans=trans)
if (info == psb_success_) call psb_map_X2Y(done,vty,&
& dzero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
if (info == psb_success_) &
& call p%precv(level+1)%map%map_U2V(done,vty,&
& dzero,p%precv(level+1)%wrk%vx2l,info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -709,9 +709,9 @@ contains
call inner_ml_aply(level+1,p,trans,work,info)
if (info == psb_success_) call psb_map_Y2X(done,p%precv(level+1)%wrk%vy2l,&
& done,vy2l,&
& p%precv(level+1)%map,info,work=work,&
if (info == psb_success_) call p%precv(level+1)%map%map_V2U(done, &
& p%precv(level+1)%wrk%vy2l,done,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
@ -889,9 +889,9 @@ contains
end if
! Apply the restriction
call psb_map_X2Y(done,vty,&
call p%precv(level + 1)%map%map_U2V(done,vty,&
& dzero,p%precv(level + 1)%wrk%vx2l,&
& p%precv(level + 1)%map,info,work=work,&
&info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
@ -925,9 +925,9 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(done,p%precv(level+1)%wrk%vy2l,&
& done,vy2l,&
& p%precv(level+1)%map,info,work=work,&
call p%precv(level+1)%map%map_V2U(done,&
& p%precv(level+1)%wrk%vy2l,done,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
@ -1415,9 +1415,9 @@ contains
if (level < nlev) then
! Apply the restriction
call psb_map_X2Y(done,mlwrk(level)%x2l,&
call p%precv(level+1)%map%map_U2V(done,mlwrk(level)%x2l,&
& dzero,mlwrk(level+1)%x2l,&
& p%precv(level+1)%map,info,work=work)
& info,work=work)
mlwrk(level+1)%y2l(:) = dzero
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -1435,9 +1435,9 @@ contains
!
! Apply the prolongator and add correction.
!
call psb_map_Y2X(done,mlwrk(level+1)%y2l,&
& done,mlwrk(level)%y2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_V2U(done,&
& mlwrk(level+1)%y2l,done,mlwrk(level)%y2l,&
& info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during prolongation')
@ -1555,9 +1555,8 @@ contains
& a_err='Error during residue')
goto 9999
end if
call psb_map_X2Y(done,mlwrk(level)%ty,&
& dzero,mlwrk(level+1)%x2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_U2V(done,mlwrk(level)%ty,&
& dzero,mlwrk(level+1)%x2l,info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during restriction')
@ -1565,9 +1564,8 @@ contains
end if
else
! Shortcut: just transfer x2l.
call psb_map_X2Y(done,mlwrk(level)%x2l,&
& dzero,mlwrk(level+1)%x2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_U2V(done,mlwrk(level)%x2l,&
& dzero,mlwrk(level+1)%x2l,info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during restriction')
@ -1595,9 +1593,8 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(done,mlwrk(level+1)%y2l,&
& done,mlwrk(level)%y2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_V2U(done,mlwrk(level+1)%y2l,&
& done,mlwrk(level)%y2l,info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during prolongation')

@ -441,8 +441,8 @@ subroutine mld_s_hierarchy_bld(a,desc_a,prec,info)
do i=2, iszv
prec%precv(i)%base_a => prec%precv(i)%ac
prec%precv(i)%base_desc => prec%precv(i)%desc_ac
prec%precv(i)%map%p_desc_X => prec%precv(i-1)%base_desc
prec%precv(i)%map%p_desc_Y => prec%precv(i)%base_desc
prec%precv(i)%map%p_desc_U => prec%precv(i-1)%base_desc
prec%precv(i)%map%p_desc_V => prec%precv(i)%base_desc
end do
end if

@ -520,9 +520,9 @@ contains
if (level < nlev) then
! Apply the restriction
call psb_map_X2Y(sone,vx2l,&
call p%precv(level+1)%map%map_U2V(sone,vx2l,&
& szero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
& info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -540,9 +540,9 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(sone,p%precv(level+1)%wrk%vy2l,&
& sone,vy2l,&
& p%precv(level+1)%map,info,work=work,&
call p%precv(level+1)%map%map_V2U(sone,&
& p%precv(level+1)%wrk%vy2l, sone,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -653,9 +653,9 @@ contains
& a_err='Error during residue')
goto 9999
end if
call psb_map_X2Y(sone,vty,&
call p%precv(level+1)%map%map_U2V(sone,vty,&
& szero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
& info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -664,9 +664,9 @@ contains
end if
else
! Shortcut: just transfer x2l.
call psb_map_X2Y(sone,vx2l,&
call p%precv(level+1)%map%map_U2V(sone,vx2l,&
& szero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
& info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -680,9 +680,9 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(sone,p%precv(level+1)%wrk%vy2l,&
& sone,vy2l,&
& p%precv(level+1)%map,info,work=work,&
call p%precv(level+1)%map%map_V2U(sone,&
& p%precv(level+1)%wrk%vy2l,sone,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -697,9 +697,9 @@ contains
if (info == psb_success_) call psb_spmm(-sone,base_a,&
& vy2l,sone,vty,&
& base_desc,info,work=work,trans=trans)
if (info == psb_success_) call psb_map_X2Y(sone,vty,&
& szero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
if (info == psb_success_) &
& call p%precv(level+1)%map%map_U2V(sone,vty,&
& szero,p%precv(level+1)%wrk%vx2l,info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -709,9 +709,9 @@ contains
call inner_ml_aply(level+1,p,trans,work,info)
if (info == psb_success_) call psb_map_Y2X(sone,p%precv(level+1)%wrk%vy2l,&
& sone,vy2l,&
& p%precv(level+1)%map,info,work=work,&
if (info == psb_success_) call p%precv(level+1)%map%map_V2U(sone, &
& p%precv(level+1)%wrk%vy2l,sone,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
@ -889,9 +889,9 @@ contains
end if
! Apply the restriction
call psb_map_X2Y(sone,vty,&
call p%precv(level + 1)%map%map_U2V(sone,vty,&
& szero,p%precv(level + 1)%wrk%vx2l,&
& p%precv(level + 1)%map,info,work=work,&
&info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
@ -925,9 +925,9 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(sone,p%precv(level+1)%wrk%vy2l,&
& sone,vy2l,&
& p%precv(level+1)%map,info,work=work,&
call p%precv(level+1)%map%map_V2U(sone,&
& p%precv(level+1)%wrk%vy2l,sone,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
@ -1415,9 +1415,9 @@ contains
if (level < nlev) then
! Apply the restriction
call psb_map_X2Y(sone,mlwrk(level)%x2l,&
call p%precv(level+1)%map%map_U2V(sone,mlwrk(level)%x2l,&
& szero,mlwrk(level+1)%x2l,&
& p%precv(level+1)%map,info,work=work)
& info,work=work)
mlwrk(level+1)%y2l(:) = szero
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -1435,9 +1435,9 @@ contains
!
! Apply the prolongator and add correction.
!
call psb_map_Y2X(sone,mlwrk(level+1)%y2l,&
& sone,mlwrk(level)%y2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_V2U(sone,&
& mlwrk(level+1)%y2l,sone,mlwrk(level)%y2l,&
& info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during prolongation')
@ -1555,9 +1555,8 @@ contains
& a_err='Error during residue')
goto 9999
end if
call psb_map_X2Y(sone,mlwrk(level)%ty,&
& szero,mlwrk(level+1)%x2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_U2V(sone,mlwrk(level)%ty,&
& szero,mlwrk(level+1)%x2l,info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during restriction')
@ -1565,9 +1564,8 @@ contains
end if
else
! Shortcut: just transfer x2l.
call psb_map_X2Y(sone,mlwrk(level)%x2l,&
& szero,mlwrk(level+1)%x2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_U2V(sone,mlwrk(level)%x2l,&
& szero,mlwrk(level+1)%x2l,info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during restriction')
@ -1595,9 +1593,8 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(sone,mlwrk(level+1)%y2l,&
& sone,mlwrk(level)%y2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_V2U(sone,mlwrk(level+1)%y2l,&
& sone,mlwrk(level)%y2l,info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during prolongation')

@ -441,8 +441,8 @@ subroutine mld_z_hierarchy_bld(a,desc_a,prec,info)
do i=2, iszv
prec%precv(i)%base_a => prec%precv(i)%ac
prec%precv(i)%base_desc => prec%precv(i)%desc_ac
prec%precv(i)%map%p_desc_X => prec%precv(i-1)%base_desc
prec%precv(i)%map%p_desc_Y => prec%precv(i)%base_desc
prec%precv(i)%map%p_desc_U => prec%precv(i-1)%base_desc
prec%precv(i)%map%p_desc_V => prec%precv(i)%base_desc
end do
end if

@ -520,9 +520,9 @@ contains
if (level < nlev) then
! Apply the restriction
call psb_map_X2Y(zone,vx2l,&
call p%precv(level+1)%map%map_U2V(zone,vx2l,&
& zzero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
& info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -540,9 +540,9 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(zone,p%precv(level+1)%wrk%vy2l,&
& zone,vy2l,&
& p%precv(level+1)%map,info,work=work,&
call p%precv(level+1)%map%map_V2U(zone,&
& p%precv(level+1)%wrk%vy2l, zone,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -653,9 +653,9 @@ contains
& a_err='Error during residue')
goto 9999
end if
call psb_map_X2Y(zone,vty,&
call p%precv(level+1)%map%map_U2V(zone,vty,&
& zzero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
& info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -664,9 +664,9 @@ contains
end if
else
! Shortcut: just transfer x2l.
call psb_map_X2Y(zone,vx2l,&
call p%precv(level+1)%map%map_U2V(zone,vx2l,&
& zzero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
& info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -680,9 +680,9 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(zone,p%precv(level+1)%wrk%vy2l,&
& zone,vy2l,&
& p%precv(level+1)%map,info,work=work,&
call p%precv(level+1)%map%map_V2U(zone,&
& p%precv(level+1)%wrk%vy2l,zone,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -697,9 +697,9 @@ contains
if (info == psb_success_) call psb_spmm(-zone,base_a,&
& vy2l,zone,vty,&
& base_desc,info,work=work,trans=trans)
if (info == psb_success_) call psb_map_X2Y(zone,vty,&
& zzero,p%precv(level+1)%wrk%vx2l,&
& p%precv(level+1)%map,info,work=work,&
if (info == psb_success_) &
& call p%precv(level+1)%map%map_U2V(zone,vty,&
& zzero,p%precv(level+1)%wrk%vx2l,info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -709,9 +709,9 @@ contains
call inner_ml_aply(level+1,p,trans,work,info)
if (info == psb_success_) call psb_map_Y2X(zone,p%precv(level+1)%wrk%vy2l,&
& zone,vy2l,&
& p%precv(level+1)%map,info,work=work,&
if (info == psb_success_) call p%precv(level+1)%map%map_V2U(zone, &
& p%precv(level+1)%wrk%vy2l,zone,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
@ -889,9 +889,9 @@ contains
end if
! Apply the restriction
call psb_map_X2Y(zone,vty,&
call p%precv(level + 1)%map%map_U2V(zone,vty,&
& zzero,p%precv(level + 1)%wrk%vx2l,&
& p%precv(level + 1)%map,info,work=work,&
&info,work=work,&
& vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1))
if (info /= psb_success_) then
@ -925,9 +925,9 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(zone,p%precv(level+1)%wrk%vy2l,&
& zone,vy2l,&
& p%precv(level+1)%map,info,work=work,&
call p%precv(level+1)%map%map_V2U(zone,&
& p%precv(level+1)%wrk%vy2l,zone,vy2l,&
& info,work=work,&
& vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1))
if (info /= psb_success_) then
@ -1415,9 +1415,9 @@ contains
if (level < nlev) then
! Apply the restriction
call psb_map_X2Y(zone,mlwrk(level)%x2l,&
call p%precv(level+1)%map%map_U2V(zone,mlwrk(level)%x2l,&
& zzero,mlwrk(level+1)%x2l,&
& p%precv(level+1)%map,info,work=work)
& info,work=work)
mlwrk(level+1)%y2l(:) = zzero
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
@ -1435,9 +1435,9 @@ contains
!
! Apply the prolongator and add correction.
!
call psb_map_Y2X(zone,mlwrk(level+1)%y2l,&
& zone,mlwrk(level)%y2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_V2U(zone,&
& mlwrk(level+1)%y2l,zone,mlwrk(level)%y2l,&
& info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during prolongation')
@ -1555,9 +1555,8 @@ contains
& a_err='Error during residue')
goto 9999
end if
call psb_map_X2Y(zone,mlwrk(level)%ty,&
& zzero,mlwrk(level+1)%x2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_U2V(zone,mlwrk(level)%ty,&
& zzero,mlwrk(level+1)%x2l,info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during restriction')
@ -1565,9 +1564,8 @@ contains
end if
else
! Shortcut: just transfer x2l.
call psb_map_X2Y(zone,mlwrk(level)%x2l,&
& zzero,mlwrk(level+1)%x2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_U2V(zone,mlwrk(level)%x2l,&
& zzero,mlwrk(level+1)%x2l,info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during restriction')
@ -1595,9 +1593,8 @@ contains
!
! Apply the prolongator
!
call psb_map_Y2X(zone,mlwrk(level+1)%y2l,&
& zone,mlwrk(level)%y2l,&
& p%precv(level+1)%map,info,work=work)
call p%precv(level+1)%map%map_V2U(zone,mlwrk(level+1)%y2l,&
& zone,mlwrk(level)%y2l,info,work=work)
if (info /= psb_success_) then
call psb_errpush(psb_err_internal_error_,name,&
& a_err='Error during prolongation')

@ -810,8 +810,8 @@ contains
if (info == psb_success_) then
pout%precv(lev)%base_a => pout%precv(lev)%ac
pout%precv(lev)%base_desc => pout%precv(lev)%desc_ac
pout%precv(lev)%map%p_desc_X => pout%precv(lev-1)%base_desc
pout%precv(lev)%map%p_desc_Y => pout%precv(lev)%base_desc
pout%precv(lev)%map%p_desc_U => pout%precv(lev-1)%base_desc
pout%precv(lev)%map%p_desc_V => pout%precv(lev)%base_desc
end if
end do
end if
@ -851,8 +851,8 @@ contains
do i=2, size(b%precv)
b%precv(i)%base_a => b%precv(i)%ac
b%precv(i)%base_desc => b%precv(i)%desc_ac
b%precv(i)%map%p_desc_X => b%precv(i-1)%base_desc
b%precv(i)%map%p_desc_Y => b%precv(i)%base_desc
b%precv(i)%map%p_desc_U => b%precv(i-1)%base_desc
b%precv(i)%map%p_desc_V => b%precv(i)%base_desc
end do
else

@ -810,8 +810,8 @@ contains
if (info == psb_success_) then
pout%precv(lev)%base_a => pout%precv(lev)%ac
pout%precv(lev)%base_desc => pout%precv(lev)%desc_ac
pout%precv(lev)%map%p_desc_X => pout%precv(lev-1)%base_desc
pout%precv(lev)%map%p_desc_Y => pout%precv(lev)%base_desc
pout%precv(lev)%map%p_desc_U => pout%precv(lev-1)%base_desc
pout%precv(lev)%map%p_desc_V => pout%precv(lev)%base_desc
end if
end do
end if
@ -851,8 +851,8 @@ contains
do i=2, size(b%precv)
b%precv(i)%base_a => b%precv(i)%ac
b%precv(i)%base_desc => b%precv(i)%desc_ac
b%precv(i)%map%p_desc_X => b%precv(i-1)%base_desc
b%precv(i)%map%p_desc_Y => b%precv(i)%base_desc
b%precv(i)%map%p_desc_U => b%precv(i-1)%base_desc
b%precv(i)%map%p_desc_V => b%precv(i)%base_desc
end do
else

@ -810,8 +810,8 @@ contains
if (info == psb_success_) then
pout%precv(lev)%base_a => pout%precv(lev)%ac
pout%precv(lev)%base_desc => pout%precv(lev)%desc_ac
pout%precv(lev)%map%p_desc_X => pout%precv(lev-1)%base_desc
pout%precv(lev)%map%p_desc_Y => pout%precv(lev)%base_desc
pout%precv(lev)%map%p_desc_U => pout%precv(lev-1)%base_desc
pout%precv(lev)%map%p_desc_V => pout%precv(lev)%base_desc
end if
end do
end if
@ -851,8 +851,8 @@ contains
do i=2, size(b%precv)
b%precv(i)%base_a => b%precv(i)%ac
b%precv(i)%base_desc => b%precv(i)%desc_ac
b%precv(i)%map%p_desc_X => b%precv(i-1)%base_desc
b%precv(i)%map%p_desc_Y => b%precv(i)%base_desc
b%precv(i)%map%p_desc_U => b%precv(i-1)%base_desc
b%precv(i)%map%p_desc_V => b%precv(i)%base_desc
end do
else

@ -810,8 +810,8 @@ contains
if (info == psb_success_) then
pout%precv(lev)%base_a => pout%precv(lev)%ac
pout%precv(lev)%base_desc => pout%precv(lev)%desc_ac
pout%precv(lev)%map%p_desc_X => pout%precv(lev-1)%base_desc
pout%precv(lev)%map%p_desc_Y => pout%precv(lev)%base_desc
pout%precv(lev)%map%p_desc_U => pout%precv(lev-1)%base_desc
pout%precv(lev)%map%p_desc_V => pout%precv(lev)%base_desc
end if
end do
end if
@ -851,8 +851,8 @@ contains
do i=2, size(b%precv)
b%precv(i)%base_a => b%precv(i)%ac
b%precv(i)%base_desc => b%precv(i)%desc_ac
b%precv(i)%map%p_desc_X => b%precv(i-1)%base_desc
b%precv(i)%map%p_desc_Y => b%precv(i)%base_desc
b%precv(i)%map%p_desc_U => b%precv(i-1)%base_desc
b%precv(i)%map%p_desc_V => b%precv(i)%base_desc
end do
else

Loading…
Cancel
Save