Reorganized directory structure and build process.

stopcriterion
Salvatore Filippone 17 years ago
parent 15f2102d4a
commit 408386cd11

@ -0,0 +1,37 @@
##########################################################
# #
# Note: directories external to the MLD2P4 subtree #
# must be specified here with absolute pathnames #
# #
##########################################################
PSBLASDIR=$(HOME)/NUMERICAL/PSBLAS2/psblas2-dev
include $(PSBLASDIR)/Make.inc
##########################################################
# #
# Additional defines and libraries for multilevel #
# Note that these libraries should be compatible #
# (compiled with) the compilers specified in the #
# PSBLAS main Make.inc #
# #
# #
##########################################################
SLUINCDIR=/usr/local/SuperLU_3.0
SLULIBDIR=/usr/local/SuperLU_3.0
SLU=-lslu_lx_gcc42 -L$(SLULIBDIR)
#SLUDistLIBDIR=/usr/local/SLUDist_2.0
#SLUDistINCDIR=/usr/local/SLUDist_2.0
#SLUDist=-lslud-gcc42 -L$(SLUDistLIBDIR) -L $(HOME)/LIB
#SLUDISTDEF=-DHave_SLUDist_ -I$(SLUDistINCDIR)
SLUDEF=-DHave_SLU_ -I$(SLUINCDIR)
UMFINCDIR=$(HOME)/LIB/Umfpack_gcc41
UMFLIBDIR=$(HOME)/LIB/Umfpack_gcc41
UMF=-lumfpack -lamd -L$(UMFLIBDIR)
UMFDEF=-DHave_UMF_ -I$(UMFINCDIR)
LDLIBS=$(BLACS) $(SLU) $(SLUDist) $(UMF) $(BLAS) $(METIS_LIB)
# Add -DLargeFptr for 64-bit addresses
CDEFINES=-DAdd_ $(SLUDEF) $(UMFDEF) $(SLUDISTDEF)

@ -1,51 +1,18 @@
PSBLASDIR=../psblas2 include Make.inc
include $(PSBLASDIR)/Make.inc lib: mlp kryl
LIBDIR=$(PSBLASDIR)/lib
HERE=. mlp:
FINCLUDES=$(FMFLAG)$(LIBDIR) $(FMFLAG). (cd mlprec; make lib)
kryl:
(cd krylov; make symlink)
MODOBJS=mld_prec_type.o mld_prec_mod.o psb_prec_mod.o (cd krylov; make lib)
MPFOBJS=mld_daggrmat_raw_asb.o mld_daggrmat_smth_asb.o \ veryclean:
mld_zaggrmat_raw_asb.o mld_zaggrmat_smth_asb.o (cd mlprec; make veryclean)
MPCOBJS=mld_slud_impl.o mld_zslud_impl.o (cd krylov; make veryclean)
F90OBJS=mld_dasmat_bld.o mld_dslu_bld.o mld_dumf_bld.o mld_dilu_fct.o\ /bin/rm -f $(OBJS) $(LOCAL_MODS)
mld_dmlprec_bld.o mld_dsp_renum.o mld_dbjac_bld.o mld_dilu_bld.o \
mld_dprecbld.o mld_dprecfree.o mld_dprecset.o mld_dprecinit.o\
mld_dbaseprec_bld.o mld_ddiagsc_bld.o mld_daggrmap_bld.o \
mld_dprec_aply.o mld_dmlprec_aply.o mld_dslud_bld.o\
mld_dbaseprec_aply.o mld_dbjac_aply.o mld_daggrmat_asb.o \
mld_zasmat_bld.o mld_zslu_bld.o mld_zumf_bld.o mld_zilu_fct.o\
mld_zmlprec_bld.o mld_zsp_renum.o mld_zbjac_bld.o mld_zilu_bld.o \
mld_zprecbld.o mld_zprecfree.o mld_zprecset.o mld_zprecinit.o \
mld_zbaseprec_bld.o mld_zdiagsc_bld.o mld_zaggrmap_bld.o \
mld_zprec_aply.o mld_zmlprec_aply.o mld_zslud_bld.o\
mld_zbaseprec_aply.o mld_zbjac_aply.o mld_zaggrmat_asb.o\
$(MPFOBJS)
COBJS=mld_slu_impl.o mld_umf_impl.o mld_zslu_impl.o mld_zumf_impl.o
OBJS=$(F90OBJS) $(COBJS) $(MPFOBJS) $(MPCOBJS) $(MODOBJS)
LIBMOD=psb_prec_mod$(.mod)
LOCAL_MODS=$(LIBMOD) mld_prec_type$(.mod) mld_prec_mod$(.mod)
LIBNAME=$(PRECLIBNAME)
lib: mpobjs $(OBJS)
$(AR) $(HERE)/$(LIBNAME) $(OBJS)
$(RANLIB) $(HERE)/$(LIBNAME)
/bin/cp -p $(HERE)/$(LIBNAME) $(LIBDIR)
/bin/cp -p $(LIBMOD) $(LOCAL_MODS) $(LIBDIR)
$(F90OBJS) $(MPFOBJS): $(MODOBJS)
psb_prec_mod.o: mld_prec_mod.o
mld_prec_mod.o: mld_prec_type.o
mpobjs:
(make $(MPFOBJS) F90="$(MPF90)" F90COPT="$(F90COPT)")
(make $(MPCOBJS) CC="$(MPCC)" CCOPT="$(CCOPT)")
veryclean: clean
/bin/rm -f $(LIBNAME)
clean: clean:
(cd mlprec; make clean)
(cd krylov; make clean)
/bin/rm -f $(OBJS) $(LOCAL_MODS) /bin/rm -f $(OBJS) $(LOCAL_MODS)

@ -7,13 +7,13 @@ Daniela di Serafino
To compile: To compile:
0. Unpack the tar file in a directory of your choice; it can be inside 0. Unpack the tar file in a directory of your choice (preferrably
the main PSBLAS directory, or somewhere else. outside the main PSBLAS directory).
1. Edit Makefile and point PSBLASDIR to the main PSBLAS directory 1. Edit Make.inc and point PSBLASDIR to the main PSBLAS directory;
2. Edit PSBLASDIR/Makefile modifying the PREC variable to make it this must be an ABSOLUTE pathname
point to this directory, e.g. 2. Uncomment the variable definition for SLU, SLUDist, UMFPACK as
PREC=./mld2p4 desired, and fix the installation directory/library names. Again,
3. Run make from the main PSBLAS directory. directories must be ABSOLUTE pathnames.

@ -0,0 +1,49 @@
include ../Make.inc
LIBDIR=../lib
PSBLIBDIR=$(PSBLASDIR)/lib
HERE=.
#
# Don't you dare touch the include order here!
# The method source file are symlinked, so as not to duplicate
# code, and the symlinks are recompiled using the local version
# of psb_prec_mod, so that they are tricked into using the
# MLD preconditioners while believing to be using the PSB ones.
#
FINCLUDES=$(FMFLAG). $(FMFLAG)$(LIBDIR) $(FMFLAG)$(PSBLIBDIR)
PSBKRYLDIR=$(PSBLASDIR)/krylov
METHDOBJS=psb_dcgstab.o psb_dcg.o psb_dcgs.o \
psb_dbicg.o psb_dcgstabl.o psb_dgmresr.o\
psb_zcgstab.o psb_zcgs.o psb_zgmresr.o
LIBMOD=psb_krylov_mod$(.mod)
MODOBJS=$(LIBMOD:$(.mod)=.o)
LOCAL_MODS=psb_prec_mod$(.mod)
LOCAL_OBJS=$(LOCAL_MODS:$(.mod)=.o)
OBJS=$(METHDOBJS) $(MODOBJS)
LIBNAME=libmld_krylov.a
lib: $(OBJS)
$(AR) $(HERE)/$(LIBNAME) $(OBJS)
$(RANLIB) $(HERE)/$(LIBNAME)
/bin/cp -p $(HERE)/$(LIBNAME) $(LIBDIR)
/bin/cp -p $(LIBMOD) $(LIBDIR)
$(METHDOBJS): psb_prec_mod.o
symlink:
(/bin/ln -fs $(PSBKRYLDIR)/*.f90 . )
(/bin/ln -fs $(PSBKRYLDIR)/*.F90 . )
mld_krylov_mod.o: mld_krylov_mod.f90 $(LIBDIR)/mld_prec_mod$(.mod)
$(F90) $(F90COPT) $(FINCLUDES) -c $<
psb_krylov_mod.o: psb_krylov_mod.f90 $(LIBDIR)/mld_prec_mod$(.mod)
$(F90) $(F90COPT) $(FINCLUDES) -c $<
veryclean: clean
(sh ./cleansymlinks *f90 *F90)
/bin/rm -f $(LIBNAME)
clean:
/bin/rm -f $(OBJS) $(LOCAL_MODS) $(LIBMOD) $(LOCAL_OBJS)

@ -0,0 +1,9 @@
#!/bin/sh
for file in $*
do
if [ -L $file ]
then
/bin/rm -f $file
fi
done

@ -0,0 +1,354 @@
!!$
!!$ Parallel Sparse BLAS v2.0
!!$ (C) Copyright 2006 Salvatore Filippone University of Rome Tor Vergata
!!$ Alfredo Buttari University of Rome Tor Vergata
!!$
!!$ Redistribution and use in source and binary forms, with or without
!!$ modification, are permitted provided that the following conditions
!!$ are met:
!!$ 1. Redistributions of source code must retain the above copyright
!!$ notice, this list of conditions and the following disclaimer.
!!$ 2. Redistributions in binary form must reproduce the above copyright
!!$ notice, this list of conditions, and the following disclaimer in the
!!$ documentation and/or other materials provided with the distribution.
!!$ 3. The name of the PSBLAS group or the names of its contributors may
!!$ not be used to endorse or promote products derived from this
!!$ software without specific written permission.
!!$
!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PSBLAS GROUP OR ITS CONTRIBUTORS
!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
!!$ POSSIBILITY OF SUCH DAMAGE.
!!$
!!$
!
! This is a partial duplication of material already present in the Krylov
! part of the PSBLAS subtree. This is not as bad as it sounds, since
! 1. There is no actual computation here, these are just wrappers around
! the actual methods, so very little code is necessary;
! 2. Changing the wrappers enables issuing error messages with a subroutine
! name coherent with what the user sees;
! 3. At the very least we would need a layer renaming the PSBLAS krylov interfaces,
! so we are doing approx. the same amount of (re)coding.
!
Module mld_krylov_mod
interface mld_krylov
module procedure mld_dkrylov, mld_zkrylov
end interface
interface psb_cg
subroutine psb_dcg(a,prec,b,x,eps,&
& desc_a,info,itmax,iter,err,itrace,istop)
use psb_base_mod
use psb_prec_mod
type(psb_dspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a
real(kind(1.d0)), intent(in) :: b(:)
real(kind(1.d0)), intent(inout) :: x(:)
real(kind(1.d0)), intent(in) :: eps
type(psb_dprec_type), intent(in) :: prec
integer, intent(out) :: info
integer, optional, intent(in) :: itmax, itrace,istop
integer, optional, intent(out) :: iter
real(kind(1.d0)), optional, intent(out) :: err
end subroutine psb_dcg
end interface
interface psb_bicg
subroutine psb_dbicg(a,prec,b,x,eps,&
& desc_a,info,itmax,iter,err,itrace,istop)
use psb_base_mod
use psb_prec_mod
type(psb_dspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a
real(kind(1.d0)), intent(in) :: b(:)
real(kind(1.d0)), intent(inout) :: x(:)
real(kind(1.d0)), intent(in) :: eps
type(psb_dprec_type), intent(in) :: prec
integer, intent(out) :: info
integer, optional, intent(in) :: itmax, itrace,istop
integer, optional, intent(out) :: iter
real(kind(1.d0)), optional, intent(out) :: err
end subroutine psb_dbicg
end interface
interface psb_bicgstab
subroutine psb_dcgstab(a,prec,b,x,eps,&
& desc_a,info,itmax,iter,err,itrace,istop)
use psb_base_mod
use psb_prec_mod
type(psb_dspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a
real(kind(1.d0)), intent(in) :: b(:)
real(kind(1.d0)), intent(inout) :: x(:)
real(kind(1.d0)), intent(in) :: eps
type(psb_dprec_type), intent(in) :: prec
integer, intent(out) :: info
integer, optional, intent(in) :: itmax, itrace,istop
integer, optional, intent(out) :: iter
real(kind(1.d0)), optional, intent(out) :: err
end subroutine psb_dcgstab
subroutine psb_zcgstab(a,prec,b,x,eps,&
& desc_a,info,itmax,iter,err,itrace,istop)
use psb_base_mod
use psb_prec_mod
type(psb_zspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a
complex(kind(1.d0)), intent(in) :: b(:)
complex(kind(1.d0)), intent(inout) :: x(:)
real(kind(1.d0)), intent(in) :: eps
type(psb_zprec_type), intent(in) :: prec
integer, intent(out) :: info
integer, optional, intent(in) :: itmax, itrace,istop
integer, optional, intent(out) :: iter
real(kind(1.d0)), optional, intent(out) :: err
end subroutine psb_zcgstab
end interface
interface psb_bicgstabl
Subroutine psb_dcgstabl(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err, itrace,irst,istop)
use psb_base_mod
use psb_prec_mod
Type(psb_dspmat_type), Intent(in) :: a
Type(psb_desc_type), Intent(in) :: desc_a
type(psb_dprec_type), intent(in) :: prec
Real(Kind(1.d0)), Intent(in) :: b(:)
Real(Kind(1.d0)), Intent(inout) :: x(:)
Real(Kind(1.d0)), Intent(in) :: eps
integer, intent(out) :: info
Integer, Optional, Intent(in) :: itmax, itrace, irst,istop
Integer, Optional, Intent(out) :: iter
Real(Kind(1.d0)), Optional, Intent(out) :: err
end subroutine psb_dcgstabl
end interface
interface psb_rgmres
Subroutine psb_dgmresr(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,irst,istop)
use psb_base_mod
use psb_prec_mod
Type(psb_dspmat_type), Intent(in) :: a
Type(psb_desc_type), Intent(in) :: desc_a
type(psb_dprec_type), intent(in) :: prec
Real(Kind(1.d0)), Intent(in) :: b(:)
Real(Kind(1.d0)), Intent(inout) :: x(:)
Real(Kind(1.d0)), Intent(in) :: eps
integer, intent(out) :: info
Integer, Optional, Intent(in) :: itmax, itrace, irst,istop
Integer, Optional, Intent(out) :: iter
Real(Kind(1.d0)), Optional, Intent(out) :: err
end subroutine psb_dgmresr
Subroutine psb_zgmresr(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,irst,istop)
use psb_base_mod
use psb_prec_mod
Type(psb_zspmat_type), Intent(in) :: a
Type(psb_desc_type), Intent(in) :: desc_a
type(psb_zprec_type), intent(in) :: prec
complex(Kind(1.d0)), Intent(in) :: b(:)
complex(Kind(1.d0)), Intent(inout) :: x(:)
Real(Kind(1.d0)), Intent(in) :: eps
integer, intent(out) :: info
Integer, Optional, Intent(in) :: itmax, itrace, irst,istop
Integer, Optional, Intent(out) :: iter
Real(Kind(1.d0)), Optional, Intent(out) :: err
end subroutine psb_zgmresr
end interface
interface psb_cgs
subroutine psb_dcgs(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,istop)
use psb_base_mod
use psb_prec_mod
type(psb_dspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a
type(psb_dprec_type), intent(in) :: prec
real(kind(1.d0)), intent(in) :: b(:)
real(kind(1.d0)), intent(inout) :: x(:)
real(kind(1.d0)), intent(in) :: eps
integer, intent(out) :: info
integer, optional, intent(in) :: itmax, itrace,istop
integer, optional, intent(out) :: iter
real(kind(1.d0)), optional, intent(out) :: err
end subroutine psb_dcgs
subroutine psb_zcgs(a,prec,b,x,eps,&
& desc_a,info,itmax,iter,err,itrace,istop)
use psb_base_mod
use psb_prec_mod
type(psb_zspmat_type), intent(in) :: a
type(psb_desc_type), intent(in) :: desc_a
complex(kind(1.d0)), intent(in) :: b(:)
complex(kind(1.d0)), intent(inout) :: x(:)
real(kind(1.d0)), intent(in) :: eps
type(psb_zprec_type), intent(in) :: prec
integer, intent(out) :: info
integer, optional, intent(in) :: itmax, itrace,istop
integer, optional, intent(out) :: iter
real(kind(1.d0)), optional, intent(out) :: err
end subroutine psb_zcgs
end interface
contains
Subroutine mld_dkrylov(method,a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,irst,istop)
use psb_base_mod
use psb_prec_mod
character(len=*) :: method
Type(psb_dspmat_type), Intent(in) :: a
Type(psb_desc_type), Intent(in) :: desc_a
type(psb_dprec_type), intent(in) :: prec
Real(Kind(1.d0)), Intent(in) :: b(:)
Real(Kind(1.d0)), Intent(inout) :: x(:)
Real(Kind(1.d0)), Intent(in) :: eps
integer, intent(out) :: info
Integer, Optional, Intent(in) :: itmax, itrace, irst,istop
Integer, Optional, Intent(out) :: iter
Real(Kind(1.d0)), Optional, Intent(out) :: err
integer :: ictxt,me,np,err_act
character(len=20) :: name
info = 0
name = 'mld_krylov'
call psb_erractionsave(err_act)
ictxt=psb_cd_get_context(desc_a)
call psb_info(ictxt, me, np)
select case(toupper(method))
case('CG')
call psb_cg(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,istop)
case('CGS')
call psb_cgs(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,istop)
case('BICG')
call psb_bicg(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,istop)
case('BICGSTAB')
call psb_bicgstab(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,istop)
case('RGMRES')
call psb_rgmres(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,irst,istop)
case('BICGSTABL')
call psb_bicgstabl(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,irst,istop)
case default
if (me==0) write(0,*) 'Warning: Unknown method ',method,&
& ' in ',name,' defaulting to BiCGSTAB'
call psb_bicgstab(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,istop)
end select
if(info/=0) then
call psb_errpush(info,name)
goto 9999
end if
call psb_erractionrestore(err_act)
return
9999 continue
call psb_erractionrestore(err_act)
if (err_act.eq.psb_act_abort_) then
call psb_error(ictxt)
return
end if
end subroutine mld_dkrylov
Subroutine mld_zkrylov(method,a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,irst,istop)
use psb_base_mod
use psb_prec_mod
character(len=*) :: method
Type(psb_zspmat_type), Intent(in) :: a
Type(psb_desc_type), Intent(in) :: desc_a
type(psb_zprec_type), intent(in) :: prec
complex(Kind(1.d0)), Intent(in) :: b(:)
complex(Kind(1.d0)), Intent(inout) :: x(:)
Real(Kind(1.d0)), Intent(in) :: eps
integer, intent(out) :: info
Integer, Optional, Intent(in) :: itmax, itrace, irst,istop
Integer, Optional, Intent(out) :: iter
Real(Kind(1.d0)), Optional, Intent(out) :: err
integer :: ictxt,me,np,err_act
character(len=20) :: name
info = 0
name = 'mld_krylov'
call psb_erractionsave(err_act)
ictxt=psb_cd_get_context(desc_a)
call psb_info(ictxt, me, np)
select case(toupper(method))
!!$ case('CG')
!!$ call psb_cg(a,prec,b,x,eps,desc_a,info,&
!!$ &itmax,iter,err,itrace,istop)
case('CGS')
call psb_cgs(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,istop)
!!$ case('BICG')
!!$ call psb_bicg(a,prec,b,x,eps,desc_a,info,&
!!$ &itmax,iter,err,itrace,istop)
case('BICGSTAB')
call psb_bicgstab(a,prec,b,x,eps,desc_a,info,&
& itmax,iter,err,itrace,istop)
case('RGMRES')
call psb_rgmres(a,prec,b,x,eps,desc_a,info,&
& itmax,iter,err,itrace,irst,istop)
!!$ case('BICGSTABL')
!!$ call psb_bicgstabl(a,prec,b,x,eps,desc_a,info,&
!!$ &itmax,iter,err,itrace,irst,istop)
case default
if (me==0) write(0,*) 'Warning: Unknown method ',method,&
& ' in ',name,' defaulting to BiCGSTAB'
call psb_bicgstab(a,prec,b,x,eps,desc_a,info,&
&itmax,iter,err,itrace,istop)
end select
if(info/=0) then
call psb_errpush(info,name)
goto 9999
end if
call psb_erractionrestore(err_act)
return
9999 continue
call psb_erractionrestore(err_act)
if (err_act.eq.psb_act_abort_) then
call psb_error(ictxt)
return
end if
end subroutine mld_zkrylov
end module mld_krylov_mod

@ -34,6 +34,15 @@
!!$ POSSIBILITY OF SUCH DAMAGE. !!$ POSSIBILITY OF SUCH DAMAGE.
!!$ !!$
!!$ !!$
!
! This version of the preconditioner module PSB_PREC_MODE renames
! "on the fly" the MLD preconditioner routines and data types so that
! the Krylov iterations in PSBLAS can be tricked into using the MLD versions
! instead of the original ones. Since there is no native runtime polymorphism
! this implies a recompilation, but thanks to the renaming feature of
! Fortran 95 (and to the compatibility of the calling sequences) there is
! no need to change the source code for the Krylov methods.
!
module psb_prec_mod module psb_prec_mod
#if (__GNUC__==4) && (__GNUC_MINOR__<=2) #if (__GNUC__==4) && (__GNUC_MINOR__<=2)

@ -0,0 +1,51 @@
include ../Make.inc
LIBDIR=../lib
PSBLIBDIR=$(PSBLASDIR)/lib
HERE=.
FINCLUDES=$(FMFLAG). $(FMFLAG)$(LIBDIR) $(FMFLAG)$(PSBLIBDIR)
MODOBJS=mld_prec_type.o mld_prec_mod.o
MPFOBJS=mld_daggrmat_raw_asb.o mld_daggrmat_smth_asb.o \
mld_zaggrmat_raw_asb.o mld_zaggrmat_smth_asb.o
MPCOBJS=mld_slud_impl.o mld_zslud_impl.o
F90OBJS=mld_dasmat_bld.o mld_dslu_bld.o mld_dumf_bld.o mld_dilu_fct.o\
mld_dmlprec_bld.o mld_dsp_renum.o mld_dbjac_bld.o mld_dilu_bld.o \
mld_dprecbld.o mld_dprecfree.o mld_dprecset.o mld_dprecinit.o\
mld_dbaseprec_bld.o mld_ddiagsc_bld.o mld_daggrmap_bld.o \
mld_dprec_aply.o mld_dmlprec_aply.o mld_dslud_bld.o\
mld_dbaseprec_aply.o mld_dbjac_aply.o mld_daggrmat_asb.o \
mld_zasmat_bld.o mld_zslu_bld.o mld_zumf_bld.o mld_zilu_fct.o\
mld_zmlprec_bld.o mld_zsp_renum.o mld_zbjac_bld.o mld_zilu_bld.o \
mld_zprecbld.o mld_zprecfree.o mld_zprecset.o mld_zprecinit.o \
mld_zbaseprec_bld.o mld_zdiagsc_bld.o mld_zaggrmap_bld.o \
mld_zprec_aply.o mld_zmlprec_aply.o mld_zslud_bld.o\
mld_zbaseprec_aply.o mld_zbjac_aply.o mld_zaggrmat_asb.o\
$(MPFOBJS)
COBJS=mld_slu_impl.o mld_umf_impl.o mld_zslu_impl.o mld_zumf_impl.o
OBJS=$(F90OBJS) $(COBJS) $(MPFOBJS) $(MPCOBJS) $(MODOBJS)
LIBMOD=mld_prec_mod$(.mod)
LOCAL_MODS=$(LIBMOD) mld_prec_type$(.mod)
LIBNAME=libmld_prec.a
lib: mpobjs $(OBJS)
$(AR) $(HERE)/$(LIBNAME) $(OBJS)
$(RANLIB) $(HERE)/$(LIBNAME)
/bin/cp -p $(HERE)/$(LIBNAME) $(LIBDIR)
/bin/cp -p $(LIBMOD) $(LOCAL_MODS) $(LIBDIR)
$(F90OBJS) $(MPFOBJS): $(MODOBJS)
psb_prec_mod.o: mld_prec_mod.o
mld_prec_mod.o: mld_prec_type.o
mpobjs:
(make $(MPFOBJS) F90="$(MPF90)" F90COPT="$(F90COPT)")
(make $(MPCOBJS) CC="$(MPCC)" CCOPT="$(CCOPT)")
veryclean: clean
/bin/rm -f $(LIBNAME)
clean:
/bin/rm -f $(OBJS) $(LOCAL_MODS)
Loading…
Cancel
Save