#Makefile for siesta # .SUFFIXES: .f .F .o .a .f90 .F90 # # VPATH= ./ : ../NETransport/ : ../Interface : ../smeagolpack # default: what siesta gen-basis # include arch.make # # Uncomment the following line for debugging support # #FFLAGS=$(FFLAGS_DEBUG) # what: @echo @echo "Compilation architecture to be used: ${SIESTA_ARCH}" @echo "If this is not what you want, create the right" @echo "arch.make file using the models in Sys" @echo @echo "Hit ^C to abort..." @sleep 2 # SYSOBJ=$(SYS).o # # Note that machine-specific files are now in top Src directory. # OBJS = arw.o atomlwf.o bands.o bessph.o cgwf.o chkdim.o chkgmx.o \ chempot.o coceri.o conjgr.o constr.o coxmol.o cross.o \ denmat.o detover.o dfscf.o dhscf.o diagon.o digcel.o fft3d.o \ diagg.o diagk.o diagkp.o diag2g.o diag2k.o diagpol.o \ diagsprl.o dipole.o dismin.o dnaefs.o dot.o dynamics.o \ efield.o egandd.o ener3.o extrapol.o extrapolon.o \ fermid.o fixed.o forhar.o gradient.o grdsam.o \ hsparse.o idiag.o initatom.o initdm.o inver.o \ iodm.o iohs.o iolwf.o iorho.o ioxv.o ipack.o \ kgrid.o kgridinit.o kinefsm.o ksv.o ksvinit.o \ madelung.o matel.o meshmatrix.o memory.o meshsubs.o \ minvec.o mulliken.o naefs.o neighb.o nlefsm.o \ on_subs.o ordern.o outcell.o outcoor.o overfsm.o \ paste.o pdos.o pdosg.o pdosk.o phirphi.o pixmol.o plcharge.o \ timestamp.o propor.o pulayx.o \ ranger.o ran3.o recipes.o reclat.o redata.o redcel.o\ reinit.o reord.o rhoofd.o rhoofdsp.o rhooda.o \ savepsi.o shaper.o timer.o \ vmb.o vmat.o vmatsp.o volcel.o xc.o xijorb.o \ cellxc.o cdiag.o rdiag.o \ cgvc.o iocg.o ioeig.o iofa.o iokp.o iomd.o repol.o typecell.o \ ofc.o poison.o readsp.o radfft.o \ siesta.o io.o\ spin_init.o coor.o transfer.o\ broadcast_basis.o sig.o eggbox.o linpack.o # FDF=libfdf.a $(FDF): (cd fdf ; $(MAKE) module) # # Routines using fdf calls. # dhscf.o initdm.o iodm.o iohs.o iolwf.o iorho.o grdsam.o : $(FDF) recoor.o outcoor.o ioxv.o kgrid.o kgridinit.o ksv.o : $(FDF) redata.o siesta.o diagon.o pdos.o plcharge.o: $(FDF) coor.o cgvc.o iocg.o ioeig.o iofa.o iokp.o iomd.o repol.o ofc.o : $(FDF) readsp.o eggbox.o reademtr.o : $(FDF) # atom.o basis_specs.o: $(FDF) gen-basis.o: $(FDF) TRANSPORTOBJ= leads_complex.o negf.o identify.o \ diagonal_alex.o misc.o selfenergy.o gauleg.o transm.o \ invert.o decimate_leads.o gensvd.o rank.o negfk.o negf2g.o \ negf2k.o localdos.o gaucheb.o INTERFACEOBJ = dmbk.o emt2g.o emt2k.o emtg.o emtk.o emtrans.o \ bulktrans.o vmattr.o vvbias.o hsleads.o hsl.o hslk.o \ reademtr.o pasbias.o shifth.o absdiff.o TRANSPORT=NETransport $(TRANSPORT): $(TRANSPORTOBJ) INTERFACE=Smeagol_Siesta $(INTERFACE): $(INTERFACEOBJ) # If you don't want to use your own LINPACK subroutines # you should comment the lines below # LINPACK=linpack.smeagol.a $(LINPACK): (cd ../linpack; $(FC) $(TRANSPORTFLAGS) *.f; \ ar -rv linpack.smeagol.a *.o; \ mv linpack.smeagol.a $(SOURCE_DIR)/Src) #LINPACKOBJ = dcabs1.o zgedi.o zgefa.o #dcabs1.o zgedi.o zgefa.o : $(LINPACK) # If want to use SIESTA provided LINPACK subroutines # contained in file linpack.F you should uncomment # the lines below # #LINPACKOBJ=linpack.o #LINPACK=linpack #$(LINPACK): $(LINPACKOBJ) # cc linpack.o -o linpack -l blas # If you wish to provide your own lapack driver # subroutines you should uncomment the following lines # SMEAGOLLAPACK = lapack.smeagol.a $(SMEAGOLLAPACK): (cd ../smeagolpack; $(FC) $(TRANSPORTFLAGS) -c *.f;\ ar -rv lapack.smeagol.a *.o; \ mv lapack.smeagol.a $(SOURCE_DIR)/Src) SMEAGOLPACKOBJ = zsytf2.o zsytrf.o zsytri.o ieeeck.o ilaenv.o zgebal.o SMEAGOLPACKOBJ = zsytf2.o zsytrf.o zsytri.o #SMEAGOLLAPACK = Smeagol_lapack #$(SMEAGOLLAPACK) : $(SMEAGOLPACKOBJ) # If you wish to use vendor specific lapack driver # subroutines you should uncomment the following lines # #SMEAGOLLAPACK = #SMEAGOLPACKOBJ= # This is crude but will have to do for now. # Note : precision must be the first module # MOD_OBJS=precision.o atom.o atmparams.o atmfuncs.o listsc.o \ memoryinfo.o numbvect.o parallel.o sorting.o \ atomlist.o ionew.o atm_types.o old_atmfuncs.o radial.o parsing.o\ alloc.o phonon.o spher_harm.o periodic_table.o version.o \ basis_types.o pseudopotential.o basis_specs.o sys.o basis_io.o\ chemical.o xml.o writewave.o COM_OBJS=$(OBJS) $(SYSOBJ) ALL_OBJS=$(MOD_OBJS) $(COM_OBJS) # arw.o: ionew.o initatom.o: basis_specs.o basis_types.o basis_io.o atom.o: basis_types.o basis_specs.o: pseudopotential.o basis_types.o chemical.o basis_types.o: pseudopotential.o atmparams.o atom.o initatom.o transfer.o plcharge.o : old_atmfuncs.o basis_types.o atom.o old_atmfuncs.o atmfuncs.o: atmparams.o atomlwf.o dhscf.o dnaefs.o : atmfuncs.o efield.o matel.o mulliken.o outcoor.o : atmfuncs.o overfsm.o shaper.o : atmfuncs.o atomlist.o : atmfuncs.o kinefsm.o naefs.o nlefsm.o overfsm.o : atmfuncs.o siesta.o : atmfuncs.o phonon.o ordern.o hsparse.o redata.o : phonon.o dfscf.o hsparse.o : atmfuncs.o listsc.o rhoofd.o rhoofdsp.o vmat.o vmatsp.o vmattr.o : listsc.o hsparse.o minvec.o : sorting.o chempot.o : numbvect.o memory.o : memoryinfo.o dhscf.o dfscf.o forhar.o rhooda.o rhoofd.o rhoofdsp.o : meshsubs.o vmat.o vmatsp.o vmattr.o vvbias.o: meshsubs.o dfscf.o rhoofd.o rhoofdsp.o vmat.o vmatsp.o vmattr.o : meshmatrix.o siesta.o: atomlist.o old_atmfuncs.o atomlist.o siesta.o atom.o: ionew.o coor.o: atomlist.o radial.o: xml.o atm_types.o: radial.o transfer.o: atm_types.o atmfuncs.o radial.o periodic_table.o atmfuncs.o: atm_types.o radial.o old_atmfuncs.o atmfuncs.o matel.o: spher_harm.o # diag2g.o diag2k.o diagg.o diagk.o diagkp.o diagsprl.o ionew.o: sys.o atmfuncs.o atom.o basis_specs.o: sys.o chkdim.o coor.o diagpol.o matel.o old_atmfuncs.o periodic_table.o: sys.o pdos.o: xml.o atmfuncs.o atomlist.o propor.o spher_harm.o pseudopotential.o: sys.o redata.o dhscf.o: sys.o #---------------------------------------------------- matel.o basis_io.o atom.o : radfft.o # basis_io.o: ionew.o atm_types.o atmfuncs.o radial.o sys.o chemical.o\ basis_types.o xml.o basis_io.o: $(FDF) $(NETCDF_INTERFACE) siesta.o bands.o efield.o fixed.o grdsam.o writewave.o: parsing.o initdm.o repol.o ksv.o: parsing.o # siesta.o atomlist.o coor.o dfscf.o matel.o: alloc.o # broadcast_basis.o: atm_types.o atom.o basis_specs.o: periodic_table.o # $(COM_OBJS): precision.o parallel.o $(MPI_INTERFACE) # # Interfaces to libraries # libmpi_f90.a: @(cd MPI ; $(MAKE) ) libnetcdf_f90.a: @(cd NetCDF ; $(MAKE) ) # # Libraries that might need to be compiled # linalg.a: Libs/blas.f Libs/lapack.f @echo "==> Compiling linalg.a in Libs..." @(cd Libs ; $(MAKE) linalg.a) dc_lapack.a: Libs/dc_lapack.f @echo "==> Compiling dc_lapack.a in Libs..." @(cd Libs ; $(MAKE) dc_lapack.a) # version: @echo @echo "==> Information about compiler and flags" sed "s/SIESTA_ARCH/${SIESTA_ARCH}/g" version.F90 > temp0.F # sed "s/FFLAGS/${FC} ${LDLAGS}/g" temp0.F > temp.F sed "s/FFLAGS/ ${FLAGS}/g" temp0.F > temp.F90 $(FC) -c $(FFLAGS) $(DEFS) temp.F90 @rm -f temp0.F temp.F @mv temp.o version.o @echo siesta: version $(MPI_INTERFACE) $(NETCDF_INTERFACE) $(FDF) \ $(COMP_LIBS) $(ALL_OBJS) $(TRANSPORT) $(LINPACK) \ $(INTERFACE) $(SMEAGOLLAPACK) $(FC) -o $(EXEC) \ $(LDFLAGS) $(ALL_OBJS) $(FDF) \ $(TRANSPORTOBJ) $(LINPACK) $(INTERFACEOBJ)\ $(MPI_INTERFACE) $(SMEAGOLPACKOBJ)\ $(NETCDF_INTERFACE) $(COMP_LIBS) $(LIBS) # GEN-BASIS_OBJS=gen-basis.o basis_types.o precision.o\ basis_io.o chemical.o transfer.o atm_types.o\ atmparams.o atmfuncs.o old_atmfuncs.o radial.o spher_harm.o io.o \ paste.o memoryinfo.o memory.o ionew.o \ chkdim.o basis_specs.o atom.o periodic_table.o\ pseudopotential.o dot.o xc.o recipes.o arw.o radfft.o\ bessph.o sys.o timer.o xml.o $(SYSOBJ) # precision must be the first one here... gen-basis.o: precision.o atom.o basis_types.o basis_specs.o basis_io.o $(FDF) gen-basis: version $(NETCDF_INTERFACE) $(MPI_INTERFACE) $(FDF) \ $(COMP_LIBS) $(GEN-BASIS_OBJS) $(FC) -o gen-basis \ $(LDFLAGS) $(GEN-BASIS_OBJS) $(MPI_INTERFACE) $(FDF) \ $(NETCDF_INTERFACE) $(COMP_LIBS) $(LIBS) # clean: @echo "==> Cleaning object, library, and executable files" rm -f siesta gen-basis *.o *.a *.pc *.pcl rm -f *.mod (cd fdf ; $(MAKE) clean) @if [ -d MPI ] ; then (cd MPI && $(MAKE) clean ) ; fi (cd NetCDF ; $(MAKE) clean ) (cd Libs ; $(MAKE) clean ) (cd ../doc/ ; rm -f *.ps *.aux *.log *.toc *.dvi) pristine: clean cp -fp Include/constr.f . # cleantransp: rm -f $(TRANSPORTOBJ) rm -f $(INTERFACEOBJ) rm -f $(LINPACKOBJ) $(SMEAGOLPACKOBJ) doc : (cd ../doc/ ; latex smeagol.tex ; latex smeagol.tex; dvips -o smeagol_doc.ps smeagol.dvi)