From 9330489e6e13cf22b91e7b00f9d9c541755f77b9 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Fri, 14 Jul 2017 15:12:58 +0100 Subject: [PATCH] Fixed checks to second smoother. Fixed makefiles to include LINKOPT option *(empty by default) Updated example new solver. --- examples/fileread/Makefile | 1 + examples/pdegen/Makefile | 1 + mlprec/impl/level/mld_c_base_onelev_check.f90 | 12 +++++++++++- mlprec/impl/level/mld_d_base_onelev_check.f90 | 12 +++++++++++- mlprec/impl/level/mld_s_base_onelev_check.f90 | 12 +++++++++++- mlprec/impl/level/mld_z_base_onelev_check.f90 | 12 +++++++++++- tests/fileread/Makefile | 1 + tests/newslv/Makefile | 3 ++- tests/newslv/mld_d_tlu_solver.f90 | 11 ++--------- 9 files changed, 51 insertions(+), 14 deletions(-) diff --git a/examples/fileread/Makefile b/examples/fileread/Makefile index e847a66f..21bc8292 100644 --- a/examples/fileread/Makefile +++ b/examples/fileread/Makefile @@ -4,6 +4,7 @@ include $(MLDINCDIR)/Make.inc.mld2p4 MLDLIBDIR=$(MLDDIR)/lib MLD_LIBS=-L$(MLDLIBDIR) -lpsb_krylov -lmld_prec -lpsb_prec FINCLUDES=$(FMFLAG). $(FMFLAG)$(MLDINCDIR) $(PSBLAS_INCLUDES) $(FIFLAG). +LINKOPT= DMOBJS=mld_dexample_ml.o data_input.o D1OBJS=mld_dexample_1lev.o data_input.o diff --git a/examples/pdegen/Makefile b/examples/pdegen/Makefile index 050f077a..eaf9276f 100644 --- a/examples/pdegen/Makefile +++ b/examples/pdegen/Makefile @@ -4,6 +4,7 @@ include $(MLDINCDIR)/Make.inc.mld2p4 MLDLIBDIR=$(MLDDIR)/lib MLD_LIBS=-L$(MLDLIBDIR) -lpsb_krylov -lmld_prec -lpsb_prec FINCLUDES=$(FMFLAG). $(FMFLAG)$(MLDINCDIR) $(PSBLAS_INCLUDES) $(FIFLAG). +LINKOPT= DMOBJS=mld_dexample_ml.o data_input.o D1OBJS=mld_dexample_1lev.o data_input.o diff --git a/mlprec/impl/level/mld_c_base_onelev_check.f90 b/mlprec/impl/level/mld_c_base_onelev_check.f90 index 6ce1af76..24e15704 100644 --- a/mlprec/impl/level/mld_c_base_onelev_check.f90 +++ b/mlprec/impl/level/mld_c_base_onelev_check.f90 @@ -68,7 +68,7 @@ subroutine mld_c_base_onelev_check(lv,info) if (allocated(lv%sm2a)) then call lv%sm2a%check(info) - else + else if (.not.inner_check(lv%sm2,lv%sm)) then info=3111 call psb_errpush(info,name) goto 9999 @@ -82,4 +82,14 @@ subroutine mld_c_base_onelev_check(lv,info) 9999 call psb_error_handler(err_act) return +contains + function inner_check(smp,sm) result(res) + implicit none + logical :: res + class(mld_c_base_smoother_type), intent(in), pointer :: smp + class(mld_c_base_smoother_type), intent(in), target :: sm + + res = associated(smp, sm) + end function inner_check + end subroutine mld_c_base_onelev_check diff --git a/mlprec/impl/level/mld_d_base_onelev_check.f90 b/mlprec/impl/level/mld_d_base_onelev_check.f90 index 8aa574a6..b5ea7199 100644 --- a/mlprec/impl/level/mld_d_base_onelev_check.f90 +++ b/mlprec/impl/level/mld_d_base_onelev_check.f90 @@ -68,7 +68,7 @@ subroutine mld_d_base_onelev_check(lv,info) if (allocated(lv%sm2a)) then call lv%sm2a%check(info) - else + else if (.not.inner_check(lv%sm2,lv%sm)) then info=3111 call psb_errpush(info,name) goto 9999 @@ -82,4 +82,14 @@ subroutine mld_d_base_onelev_check(lv,info) 9999 call psb_error_handler(err_act) return +contains + function inner_check(smp,sm) result(res) + implicit none + logical :: res + class(mld_d_base_smoother_type), intent(in), pointer :: smp + class(mld_d_base_smoother_type), intent(in), target :: sm + + res = associated(smp, sm) + end function inner_check + end subroutine mld_d_base_onelev_check diff --git a/mlprec/impl/level/mld_s_base_onelev_check.f90 b/mlprec/impl/level/mld_s_base_onelev_check.f90 index 19c2ac25..53447d35 100644 --- a/mlprec/impl/level/mld_s_base_onelev_check.f90 +++ b/mlprec/impl/level/mld_s_base_onelev_check.f90 @@ -68,7 +68,7 @@ subroutine mld_s_base_onelev_check(lv,info) if (allocated(lv%sm2a)) then call lv%sm2a%check(info) - else + else if (.not.inner_check(lv%sm2,lv%sm)) then info=3111 call psb_errpush(info,name) goto 9999 @@ -82,4 +82,14 @@ subroutine mld_s_base_onelev_check(lv,info) 9999 call psb_error_handler(err_act) return +contains + function inner_check(smp,sm) result(res) + implicit none + logical :: res + class(mld_s_base_smoother_type), intent(in), pointer :: smp + class(mld_s_base_smoother_type), intent(in), target :: sm + + res = associated(smp, sm) + end function inner_check + end subroutine mld_s_base_onelev_check diff --git a/mlprec/impl/level/mld_z_base_onelev_check.f90 b/mlprec/impl/level/mld_z_base_onelev_check.f90 index 1c136b4e..0b6c1457 100644 --- a/mlprec/impl/level/mld_z_base_onelev_check.f90 +++ b/mlprec/impl/level/mld_z_base_onelev_check.f90 @@ -68,7 +68,7 @@ subroutine mld_z_base_onelev_check(lv,info) if (allocated(lv%sm2a)) then call lv%sm2a%check(info) - else + else if (.not.inner_check(lv%sm2,lv%sm)) then info=3111 call psb_errpush(info,name) goto 9999 @@ -82,4 +82,14 @@ subroutine mld_z_base_onelev_check(lv,info) 9999 call psb_error_handler(err_act) return +contains + function inner_check(smp,sm) result(res) + implicit none + logical :: res + class(mld_z_base_smoother_type), intent(in), pointer :: smp + class(mld_z_base_smoother_type), intent(in), target :: sm + + res = associated(smp, sm) + end function inner_check + end subroutine mld_z_base_onelev_check diff --git a/tests/fileread/Makefile b/tests/fileread/Makefile index 2c0b14e7..09fd5ed6 100644 --- a/tests/fileread/Makefile +++ b/tests/fileread/Makefile @@ -9,6 +9,7 @@ DFSOBJS=mld_df_sample.o data_input.o SFSOBJS=mld_sf_sample.o data_input.o CFSOBJS=mld_cf_sample.o data_input.o ZFSOBJS=mld_zf_sample.o data_input.o +LINKOPT= EXEDIR=./runs diff --git a/tests/newslv/Makefile b/tests/newslv/Makefile index e60374b6..85700301 100644 --- a/tests/newslv/Makefile +++ b/tests/newslv/Makefile @@ -8,12 +8,13 @@ FINCLUDES=$(FMFLAG). $(FMFLAG)$(MLDINCDIR) $(PSBLAS_INCLUDES) $(FIFLAG). PD3DOBJS=mld_pde3d_newslv.o data_input.o mld_d_tlu_solver.o mld_d_tlu_solver_impl.o PSOBJS=spde.o data_input.o EXEDIR=./runs +LINKOPT= all: mld_pde3d_newslv mld_pde3d_newslv: $(PD3DOBJS) - $(FLINK) $(PD3DOBJS) -o mld_pde3d_newslv $(MLD_LIBS) $(PSBLAS_LIBS) $(LDLIBS) + $(FLINK) $(LINKOPT) $(PD3DOBJS) -o mld_pde3d_newslv $(MLD_LIBS) $(PSBLAS_LIBS) $(LDLIBS) /bin/mv mld_pde3d_newslv $(EXEDIR) diff --git a/tests/newslv/mld_d_tlu_solver.f90 b/tests/newslv/mld_d_tlu_solver.f90 index b4b7e0e9..ff8dfecd 100644 --- a/tests/newslv/mld_d_tlu_solver.f90 +++ b/tests/newslv/mld_d_tlu_solver.f90 @@ -99,6 +99,7 @@ module mld_d_tlu_solver !procedure, pass(sv) :: csetr => d_tlu_solver_csetr !procedure, pass(sv) :: sizeof => d_tlu_solver_sizeof !procedure, pass(sv) :: get_nzeros => d_tlu_solver_get_nzeros + !procedure, nopass :: get_id => d_tlu_solver_get_id ! @@ -109,11 +110,10 @@ module mld_d_tlu_solver procedure, pass(sv) :: default => d_tlu_solver_default procedure, pass(sv) :: build => mld_d_tlu_solver_bld procedure, nopass :: get_fmt => d_tlu_solver_get_fmt - procedure, nopass :: get_id => d_tlu_solver_get_id end type mld_d_tlu_solver_type - private :: d_tlu_solver_get_fmt, d_tlu_solver_get_id + private :: d_tlu_solver_get_fmt, d_tlu_solver_descr, d_tlu_solver_default interface subroutine mld_d_tlu_solver_bld(a,desc_a,sv,info,b,amold,vmold, imold) @@ -159,13 +159,6 @@ contains val = "TLU solver" end function d_tlu_solver_get_fmt - function d_tlu_solver_get_id() result(val) - implicit none - integer(psb_ipk_) :: val - - val = mld_ilu_n_ - end function d_tlu_solver_get_id - subroutine d_tlu_solver_descr(sv,info,iout,coarse) Implicit None