more lib compilation updates

This commit is contained in:
Axel Kohlmeyer
2017-08-08 07:20:33 -04:00
parent 8bba29d91e
commit b3244f9c98
18 changed files with 312 additions and 250 deletions

View File

@ -12,7 +12,7 @@ try:
except: from urllib import urlretrieve as geturl except: from urllib import urlretrieve as geturl
except: except:
def geturl(url,fname): def geturl(url,fname):
cmd = "curl -o %s %s" % (fname,url) cmd = 'curl -L -o "%s" %s' % (fname,url)
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
return txt return txt
@ -139,7 +139,7 @@ if buildflag:
if os.path.isdir(kimdir): if os.path.isdir(kimdir):
print("kim-api is already installed at %s.\nRemoving it for re-install" % kimdir) print("kim-api is already installed at %s.\nRemoving it for re-install" % kimdir)
cmd = "rm -rf %s" % kimdir cmd = 'rm -rf "%s"' % kimdir
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
# configure LAMMPS to use kim-api to be installed # configure LAMMPS to use kim-api to be installed
@ -160,48 +160,48 @@ if buildflag:
print("Downloading kim-api tarball ...") print("Downloading kim-api tarball ...")
geturl(url,"%s/%s.tgz" % (thisdir,version)) geturl(url,"%s/%s.tgz" % (thisdir,version))
print("Unpacking kim-api tarball ...") print("Unpacking kim-api tarball ...")
cmd = "cd %s; rm -rf %s; tar zxvf %s.tgz" % (thisdir,version,version) cmd = 'cd "%s"; rm -rf "%s"; tar -xzvf %s.tgz' % (thisdir,version,version)
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
# configure kim-api # configure kim-api
print("Configuring kim-api ...") print("Configuring kim-api ...")
cmd = "cd %s/%s; ./configure --prefix='%s'" % (thisdir,version,kimdir) cmd = 'cd "%s/%s"; ./configure --prefix="%s"' % (thisdir,version,kimdir)
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
# build kim-api # build kim-api
print("Configuring example Models") print("Configuring example Models")
cmd = "cd %s/%s; make add-examples" % (thisdir,version) cmd = 'cd "%s/%s"; make add-examples' % (thisdir,version)
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
if verboseflag: print (txt.decode("UTF-8")) if verboseflag: print (txt.decode("UTF-8"))
if everythingflag: if everythingflag:
print("Configuring all OpenKIM models, this will take a while ...") print("Configuring all OpenKIM models, this will take a while ...")
cmd = "cd %s/%s; make add-OpenKIM" % (thisdir,version) cmd = 'cd "%s/%s"; make add-OpenKIM' % (thisdir,version)
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
if verboseflag: print(txt.decode("UTF-8")) if verboseflag: print(txt.decode("UTF-8"))
print("Building kim-api ...") print("Building kim-api ...")
cmd = "cd %s/%s; make" % (thisdir,version) cmd = 'cd "%s/%s"; make' % (thisdir,version)
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
if verboseflag: print(txt.decode("UTF-8")) if verboseflag: print(txt.decode("UTF-8"))
# install kim-api # install kim-api
print("Installing kim-api ...") print("Installing kim-api ...")
cmd = "cd %s/%s; make install" % (thisdir,version) cmd = 'cd "%s/%s"; make install' % (thisdir,version)
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
if verboseflag: print(txt.decode("UTF-8")) if verboseflag: print(txt.decode("UTF-8"))
cmd = "cd %s/%s; make install-set-default-to-v1" %(thisdir,version) cmd = 'cd "%s/%s"; make install-set-default-to-v1' %(thisdir,version)
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
if verboseflag: print(txt.decode("UTF-8")) if verboseflag: print(txt.decode("UTF-8"))
# remove source files # remove source files
print("Removing kim-api source and build files ...") print("Removing kim-api source and build files ...")
cmd = "cd %s; rm -rf %s; rm -rf %s.tgz" % (thisdir,version,version) cmd = 'cd "%s"; rm -rf %s; rm -rf %s.tgz' % (thisdir,version,version)
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
# add a single model (and possibly its driver) to existing KIM installation # add a single model (and possibly its driver) to existing KIM installation
@ -219,11 +219,11 @@ if addflag:
geturl(url,"%s/%s.tgz" % (thisdir,addmodelname)) geturl(url,"%s/%s.tgz" % (thisdir,addmodelname))
print("Unpacking item tarball ...") print("Unpacking item tarball ...")
cmd = "cd %s; tar zxvf %s.tgz" % (thisdir,addmodelname) cmd = 'cd "%s"; tar -xzvf %s.tgz' % (thisdir,addmodelname)
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
print("Building item ...") print("Building item ...")
cmd = "cd %s/%s; make; make install" %(thisdir,addmodelname) cmd = 'cd "%s/%s"; make; make install' %(thisdir,addmodelname)
try: try:
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
@ -231,18 +231,18 @@ if addflag:
# Error: but first, check to see if it needs a driver # Error: but first, check to see if it needs a driver
firstRunOutput = e.output.decode("UTF-8") firstRunOutput = e.output.decode("UTF-8")
cmd = "cd %s/%s; make kim-item-type" % (thisdir,addmodelname) cmd = 'cd "%s/%s"; make kim-item-type' % (thisdir,addmodelname)
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
txt = txt.decode("UTF-8") txt = txt.decode("UTF-8")
if txt == "ParameterizedModel": if txt == "ParameterizedModel":
# Get and install driver # Get and install driver
cmd = "cd %s/%s; make model-driver-name" % (thisdir,addmodelname) cmd = 'cd "%s/%s"; make model-driver-name' % (thisdir,addmodelname)
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
adddrivername = txt.decode("UTF-8").strip() adddrivername = txt.decode("UTF-8").strip()
print("First installing model driver: %s..." % adddrivername) print("First installing model driver: %s..." % adddrivername)
cmd = "cd %s; python Install.py -n -a %s" % (thisdir,adddrivername) cmd = 'cd "%s"; python Install.py -n -a %s' % (thisdir,adddrivername)
try: try:
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
@ -254,7 +254,7 @@ if addflag:
# now install the model that needed the driver # now install the model that needed the driver
print("Now installing model : %s" % addmodelname) print("Now installing model : %s" % addmodelname)
cmd = "cd %s; python Install.py -n -a %s" % (thisdir,addmodelname) cmd = 'cd "%s"; python Install.py -n -a %s' % (thisdir,addmodelname)
try: try:
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
@ -272,5 +272,5 @@ if addflag:
if verboseflag: print(txt.decode("UTF-8")) if verboseflag: print(txt.decode("UTF-8"))
print("Removing kim item source and build files ...") print("Removing kim item source and build files ...")
cmd = "cd %s; rm -rf %s; rm -rf %s.tgz" %(thisdir,addmodelname,addmodelname) cmd = 'cd "%s"; rm -rf %s; rm -rf %s.tgz' %(thisdir,addmodelname,addmodelname)
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)

4
lib/mscg/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
# files to ignore
/liblink
/includelink
/MSCG-release-master

View File

@ -3,127 +3,133 @@
# Install.py tool to download, unpack, build, and link to the MS-CG library # Install.py tool to download, unpack, build, and link to the MS-CG library
# used to automate the steps described in the README file in this dir # used to automate the steps described in the README file in this dir
import sys,os,re,commands from __future__ import print_function
import sys,os,re,subprocess
try:
import ssl
try: from urllib.request import urlretrieve as geturl
except: from urllib import urlretrieve as geturl
except:
def geturl(url,fname):
cmd = 'curl -L -o "%s" %s' % (fname,url)
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
return txt
# help message # help message
help = """ help = """
Syntax from src dir: make lib-mscg args="-h hpath hdir -g -b [suffix] -l" Syntax from src dir: make lib-mscg args="-p [path] -m [suffix]"
Syntax from lib dir: python Install.py -h hpath hdir -g -b [suffix] -l Syntax from lib dir: python Install.py -p [path] -m [suffix]
specify one or more options, order does not matter specify one or more options, order does not matter
-h = set home dir of MS-CG to be hpath/hdir -b = download and build MS-CG library (default)
hpath can be full path, contain '~' or '.' chars -p = specify folder of existing MS-CG installation
default hpath = . = lib/mscg -m = machine suffix specifies which src/Make/Makefile.suffix to use
default hdir = MSCG-release-master = what GitHub zipfile unpacks to
-g = grab (download) zipfile from MS-CG GitHub website
unpack it to hpath/hdir
hpath must already exist
if hdir already exists, it will be deleted before unpack
-b = build MS-CG library in its src dir
optional suffix specifies which src/Make/Makefile.suffix to use
default suffix = g++_simple default suffix = g++_simple
-l = create 2 softlinks (includelink,liblink) in lib/mscg to MS-CG src dir
Example: Example:
make lib-mscg args="-g -b -l" # download/build in lib/mscg/MSCG-release-master make lib-mscg args="-b " # download/build in lib/mscg/MSCG-release-master
""" """
# settings # settings
url = "https://github.com/uchicago-voth/MSCG-release/archive/master.zip" url = "http://github.com/uchicago-voth/MSCG-release/archive/master.tar.gz"
zipfile = "MS-CG-master.zip" tarfile = "MS-CG-master.tar.gz"
zipdir = "MSCG-release-master" tardir = "MSCG-release-master"
# print error message or help # print error message or help
def error(str=None): def error(str=None):
if not str: print help if not str: print(help)
else: print "ERROR",str else: print("ERROR",str)
sys.exit() sys.exit()
# expand to full path name # expand to full path name
# process leading '~' or relative path # process leading '~' or relative path
def fullpath(path): def fullpath(path):
return os.path.abspath(os.path.expanduser(path)) return os.path.abspath(os.path.expanduser(path))
# parse args # parse args
args = sys.argv[1:] args = sys.argv[1:]
nargs = len(args) nargs = len(args)
if nargs == 0: error()
homepath = "." homepath = "."
homedir = zipdir homedir = tardir
grabflag = 0 buildflag = True
buildflag = 0 pathflag = False
linkflag = True
msuffix = "g++_simple" msuffix = "g++_simple"
linkflag = 0
iarg = 0 iarg = 0
while iarg < nargs: while iarg < nargs:
if args[iarg] == "-h": if args[iarg] == "-p":
if iarg+3 > nargs: error() if iarg+2 > nargs: error()
homepath = args[iarg+1] mscgpath = fullpath(args[iarg+1])
homedir = args[iarg+2] pathflag = True
iarg += 3 buildflag = False
elif args[iarg] == "-g": iarg += 2
grabflag = 1 elif args[iarg] == "-m":
iarg += 1 if iarg+2 > nargs: error()
msuffix = args[iarg+1]
iarg += 2
elif args[iarg] == "-b": elif args[iarg] == "-b":
buildflag = 1 buildflag = True
if iarg+1 < nargs and args[iarg+1][0] != '-':
msuffix = args[iarg+1]
iarg += 1
iarg += 1
elif args[iarg] == "-l":
linkflag = 1
iarg += 1 iarg += 1
else: error() else: error()
homepath = fullpath(homepath) homepath = fullpath(homepath)
if not os.path.isdir(homepath): error("MS-CG path does not exist")
homedir = "%s/%s" % (homepath,homedir) homedir = "%s/%s" % (homepath,homedir)
# download and unpack MS-CG zipfile if (pathflag):
if not os.path.isdir(mscgpath): error("MS-CG path does not exist")
homedir = mscgpath
if grabflag: if (buildflag and pathflag):
print "Downloading MS-CG ..." error("Cannot use -b and -p flag at the same time")
cmd = "curl -L %s > %s/%s" % (url,homepath,zipfile)
print cmd
print commands.getoutput(cmd)
print "Unpacking MS-CG zipfile ..." # download and unpack MS-CG tarfile
if os.path.exists("%s/%s" % (homepath,zipdir)):
commands.getoutput("rm -rf %s/%s" % (homepath,zipdir)) if buildflag:
cmd = "cd %s; unzip %s" % (homepath,zipfile) print("Downloading MS-CG ...")
commands.getoutput(cmd) geturl(url,"%s/%s" % (homepath,tarfile))
if os.path.basename(homedir) != zipdir:
if os.path.exists(homedir): commands.getoutput("rm -rf %s" % homedir) print("Unpacking MS-CG tarfile ...")
os.rename("%s/%s" % (homepath,zipdir),homedir) if os.path.exists("%s/%s" % (homepath,tardir)):
cmd = 'rm -rf "%s/%s"' % (homepath,tardir)
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
cmd = 'cd "%s"; tar -xzvf %s' % (homepath,tarfile)
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
os.remove("%s/%s" % (homepath,tarfile))
if os.path.basename(homedir) != tardir:
if os.path.exists(homedir):
cmd = 'rm -rf "%s"' % homedir
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
os.rename("%s/%s" % (homepath,tardir),homedir)
# build MS-CG # build MS-CG
if buildflag: if buildflag:
print "Building MS-CG ..." print("Building MS-CG ...")
cmd = "cd %s/src; cp Make/Makefile.%s .; make -f Makefile.%s" % \ cmd = 'cd "%s/src"; cp Make/Makefile.%s .; make -f Makefile.%s' % \
(homedir,msuffix,msuffix) (homedir,msuffix,msuffix)
txt = commands.getoutput(cmd) txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
print txt print(txt.decode('UTF-8'))
# create 2 links in lib/mscg to MS-CG src dir # create 2 links in lib/mscg to MS-CG src dir
if linkflag: if linkflag:
print "Creating links to MS-CG include and lib files" print("Creating links to MS-CG include and lib files")
if os.path.isfile("includelink") or os.path.islink("includelink"): if os.path.isfile("includelink") or os.path.islink("includelink"):
os.remove("includelink") os.remove("includelink")
if os.path.isfile("liblink") or os.path.islink("liblink"): if os.path.isfile("liblink") or os.path.islink("liblink"):
os.remove("liblink") os.remove("liblink")
cmd = "ln -s %s/src includelink" % homedir cmd = 'ln -s "%s/src" includelink' % homedir
commands.getoutput(cmd) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
cmd = "ln -s %s/src liblink" % homedir cmd = 'ln -s "%s/src" liblink' % homedir
commands.getoutput(cmd) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)

View File

@ -68,7 +68,7 @@ OBJ = $(SRC:.cpp=.o)
# ------ SETTINGS ------ # ------ SETTINGS ------
CC = g++ CC = g++
CCFLAGS = -O -g -fPIC -Wall #-Wno-deprecated CCFLAGS = -O3 -g -fPIC -Wall #-Wno-deprecated
ARCHIVE = ar ARCHIVE = ar
ARCHFLAG = -rc ARCHFLAG = -rc
DEPFLAGS = -M DEPFLAGS = -M

View File

@ -1,110 +0,0 @@
# *
# *_________________________________________________________________________*
# * POEMS: PARALLELIZABLE OPEN SOURCE EFFICIENT MULTIBODY SOFTWARE *
# * DESCRIPTION: SEE READ-ME *
# * FILE NAME: Makefile *
# * AUTHORS: See Author List *
# * GRANTS: See Grants List *
# * COPYRIGHT: (C) 2005 by Authors as listed in Author's List *
# * LICENSE: Please see License Agreement *
# * DOWNLOAD: Free at www.rpi.edu/~anderk5 *
# * ADMINISTRATOR: Prof. Kurt Anderson *
# * Computational Dynamics Lab *
# * Rensselaer Polytechnic Institute *
# * 110 8th St. Troy NY 12180 *
# * CONTACT: anderk5@rpi.edu *
# *_________________________________________________________________________*/
SHELL = /bin/sh
# which file will be copied to Makefile.lammps
EXTRAMAKE = Makefile.lammps.empty
# ------ FILES ------
SRC_MAIN = workspace.cpp system.cpp poemsobject.cpp
INC_MAIN = workspace.h system.h poemsobject.h
SRC_BODY = body.cpp rigidbody.cpp particle.cpp inertialframe.cpp
INC_BODY = bodies.h body.h rigidbody.h particle.h inertialframe.h
SRC_JOINT = joint.cpp revolutejoint.cpp prismaticjoint.cpp sphericaljoint.cpp \
freebodyjoint.cpp body23joint.cpp mixedjoint.cpp
INC_JOINT = joints.h joint.h revolutejoint.h prismaticjoint.h sphericaljoint.h \
freebodyjoint.h body23joint.h mixedjoint.h
SRC_POINT = point.cpp fixedpoint.cpp
INC_POINT = points.h point.h fixedpoint.h
SRC_SOLVE = solver.cpp
INC_SOLVE = solver.h
SRC_ORDERN = onsolver.cpp onfunctions.cpp onbody.cpp
INC_ORDERN = onsolver.h onfunctions.h onbody.h
SRC_MAT = virtualmatrix.cpp matrix.cpp matrixfun.cpp mat3x3.cpp virtualcolmatrix.cpp \
colmatrix.cpp vect3.cpp virtualrowmatrix.cpp rowmatrix.cpp mat6x6.cpp vect6.cpp \
fastmatrixops.cpp colmatmap.cpp eulerparameters.cpp vect4.cpp norm.cpp mat4x4.cpp \
INC_MAT = matrices.h virtualmatrix.h matrix.h matrixfun.h mat3x3.h virtualcolmatrix.h \
colmatrix.h vect3.h virtualrowmatrix.h rowmatrix.h mat6x6.h vect6.h \
fastmatrixops.h colmatmap.h eulerparameters.h vect4.h norm.h mat4x4.h
SRC_MISC = poemstreenode.cpp
INC_MISC = poemslist.h poemstreenode.h poemstree.h poemsnodelib.h SystemProcessor.h defines.h POEMSChain.h
SRC = $(SRC_MAIN) $(SRC_BODY) $(SRC_JOINT) $(SRC_POINT) $(SRC_SOLVE) $(SRC_ORDERN) $(SRC_MAT) $(SRC_MISC)
INC = $(INC_MAIN) $(INC_BODY) $(INC_JOINT) $(INC_POINT) $(INC_SOLVE) $(INC_ORDERN) $(INC_MAT) $(INC_MISC)
FILES = $(SRC) $(INC) Makefile Authors_List.txt Grants_List.txt POEMS_License.txt README Copyright_Notice
# ------ DEFINITIONS ------
DIR = Obj_mingw32/
LIB = $(DIR)libpoems.a
OBJ = $(SRC:%.cpp=$(DIR)%.o)
# ------ SETTINGS ------
CC = i686-w64-mingw32-g++
CCFLAGS = -O2 -march=i686 -mtune=generic -mfpmath=387 -mpc64 \
-ffast-math -funroll-loops -finline-functions -fno-rtti \
-fno-exceptions -fstrict-aliasing \
-Wall -W -Wno-uninitialized
ARCHIVE = i686-w64-mingw32-ar
ARCHFLAG = -rcs
DEPFLAGS = -M
LINK = i686-w64-mingw32-g++
LINKFLAGS = -O
USRLIB =
SYSLIB =
# ------ MAKE PROCEDURE ------
default: $(DIR) $(LIB)
$(DIR):
-mkdir $(DIR)
$(LIB): $(OBJ)
$(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ)
@cp $(EXTRAMAKE) Makefile.lammps
# ------ COMPILE RULES ------
$(DIR)%.o:%.cpp
$(CC) $(CCFLAGS) -c $< -o $@
# ------ DEPENDENCIES ------
include .depend
# ------ CLEAN ------
clean:
-rm $(DIR)*.o $(DIR)*.d *~ $(LIB)
tar:
-tar -cvf ../POEMS.tar $(FILES)

View File

@ -1,13 +0,0 @@
# -*- makefile -*- wrapper for non-MPI libraries
SHELL=/bin/sh
all:
$(MAKE) $(MFLAGS) mingw32-cross
-rm -f Obj_mingw32-mpi
ln -s Obj_mingw32 Obj_mingw32-mpi
clean:
$(MAKE) $(MFLAGS) clean-mingw32-cross
-rm -f Obj_mingw32-mpi

View File

@ -1,13 +0,0 @@
# -*- makefile -*- wrapper for non-MPI libraries
SHELL=/bin/sh
all:
$(MAKE) $(MFLAGS) mingw64-cross
-rm -f Obj_mingw64-mpi
ln -s Obj_mingw64 Obj_mingw64-mpi
clean:
$(MAKE) $(MFLAGS) clean-mingw64-cross
-rm -f Obj_mingw64-mpi

View File

@ -62,40 +62,31 @@ FILES = $(SRC) $(INC) Makefile Authors_List.txt Grants_List.txt POEMS_License.tx
# ------ DEFINITIONS ------ # ------ DEFINITIONS ------
DIR = Obj_mingw64/ LIB = libpoems.a
LIB = $(DIR)libpoems.a OBJ = $(SRC:.cpp=.o)
OBJ = $(SRC:%.cpp=$(DIR)%.o)
# ------ SETTINGS ------ # ------ SETTINGS ------
CC = x86_64-w64-mingw32-g++ CC = mpicxx
CCFLAGS = -O2 -march=core2 -mtune=core2 -msse2 -mpc64 \ CCFLAGS = -O3 -g -fPIC -Wall #-Wno-deprecated
-ffast-math -funroll-loops -finline-functions -fno-rtti \ ARCHIVE = ar
-fno-exceptions -fstrict-aliasing \ ARCHFLAG = -rc
-Wall -W -Wno-uninitialized
ARCHIVE = x86_64-w64-mingw32-ar
ARCHFLAG = -rcs
DEPFLAGS = -M DEPFLAGS = -M
LINK = x86_64-w64-mingw32-g++ LINK = mpicxx
LINKFLAGS = -O LINKFLAGS = -O
USRLIB = USRLIB =
SYSLIB = SYSLIB =
# ------ MAKE PROCEDURE ------ # ------ MAKE PROCEDURE ------
default: $(DIR) $(LIB) lib: $(OBJ)
$(DIR):
-mkdir $(DIR)
$(LIB): $(OBJ)
$(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ) $(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ)
@cp $(EXTRAMAKE) Makefile.lammps @cp $(EXTRAMAKE) Makefile.lammps
# ------ COMPILE RULES ------ # ------ COMPILE RULES ------
$(DIR)%.o:%.cpp %.o:%.cpp
$(CC) $(CCFLAGS) -c $< -o $@ $(CC) $(CCFLAGS) -c $<
# ------ DEPENDENCIES ------ # ------ DEPENDENCIES ------
@ -104,7 +95,7 @@ include .depend
# ------ CLEAN ------ # ------ CLEAN ------
clean: clean:
-rm $(DIR)*.o $(DIR)*.d *~ $(LIB) -rm *.o *.d *~ $(LIB)
tar: tar:
-tar -cvf ../POEMS.tar $(FILES) -tar -cvf ../POEMS.tar $(FILES)

1
lib/poems/Makefile.serial Symbolic link
View File

@ -0,0 +1 @@
Makefile.g++

66
lib/qmmm/Makefile.mpi Normal file
View File

@ -0,0 +1,66 @@
# -*- Makefile -*- for coupling LAMMPS to PWscf for QM/MM molecular dynamics
# this file will be copied to Makefile.lammps
EXTRAMAKE = Makefile.lammps.empty
# top level directory of Quantum ESPRESSO 5.4.1 or later
QETOPDIR=$(HOME)/compile/espresso
# import compiler settings from Quantum ESPRESSO
sinclude $(QETOPDIR)/make.sys
# FLAGS for c++ OpenMPI 1.8.8 or later when QE was compiled with GNU Fortran 4.x
MPICXX=mpicxx
MPICXXFLAGS= -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 -O2 -g -fPIC\
-I../../src -I$(QETOPDIR)/COUPLE/include
MPILIBS=-fopenmp -lgfortran -ldl -ljpeg -lpng -lz -lmpi_mpifh -lmpi
# location of required libraries
# part 1: hi-level libraries for building pw.x
PWOBJS = \
$(QETOPDIR)/COUPLE/src/libqecouple.a \
$(QETOPDIR)/PW/src/libpw.a \
$(QETOPDIR)/Modules/libqemod.a
# part 2: lo-level libraries for all of Q-E
LIBOBJS = \
$(QETOPDIR)/FFTXlib/libqefft.a \
$(QETOPDIR)/LAXlib/libqela.a \
$(QETOPDIR)/clib/clib.a \
$(QETOPDIR)/iotk/src/libiotk.a
# part 3: add-on libraries and main library for LAMMPS
sinclude ../../src/Makefile.package
LAMMPSCFG = mpi
LAMMPSLIB = ../../src/liblammps_$(LAMMPSCFG).a
# part 4: local QM/MM library and progams
SRC=pwqmmm.c libqmmm.c
OBJ=$(SRC:%.c=%.o)
default: libqmmm.a
all : tldeps libqmmm.a pwqmmm.x
pwqmmm.x : pwqmmm.o $(OBJ) $(PWOBJS) $(LIBOBJS) $(LAMMPSLIB)
$(MPICXX) $(LDFLAGS) -o $@ $^ $(PKG_PATH) $(PKG_LIB) $(MPILIBS) $(LIBS)
libqmmm.a: libqmmm.o
$(AR) $(ARFLAGS) $@ $^
@cp $(EXTRAMAKE) Makefile.lammps
%.o: %.c
$(MPICXX) -c $(LAMMPSFLAGS) $(MPICXXFLAGS) $< -o $@
tldeps:
( cd $(QETOPDIR) ; $(MAKE) $(MFLAGS) couple || exit 1)
$(MAKE) -C ../../src $(MFLAGS) $(LAMMPSCFG)
$(MAKE) -C ../../src $(MFLAGS) mode=lib $(LAMMPSCFG)
clean :
-rm -f *.x *.o *.a *~ *.F90 *.d *.mod *.i *.L
# explicit dependencies
pwqmmm.o: pwqmmm.c libqmmm.h
libqmmm.o: libqmmm.c libqmmm.h

66
lib/qmmm/Makefile.serial Normal file
View File

@ -0,0 +1,66 @@
# -*- Makefile -*- for coupling LAMMPS to PWscf for QM/MM molecular dynamics
# this file will be copied to Makefile.lammps
EXTRAMAKE = Makefile.lammps.empty
# top level directory of Quantum ESPRESSO 5.4.1 or later
QETOPDIR=$(HOME)/compile/espresso
# import compiler settings from Quantum ESPRESSO
sinclude $(QETOPDIR)/make.sys
# FLAGS for GNU c++ with STUBS. non-functional for real coupling
MPICXX=g++
MPICXXFLAGS= -I../../src/STUBS -O2 -g -fPIC\
-I../../src -I$(QETOPDIR)/COUPLE/include
MPILIBS=-fopenmp -lgfortran -ldl -ljpeg -lpng -lz -lmpi_mpifh -lmpi
# location of required libraries
# part 1: hi-level libraries for building pw.x
PWOBJS = \
$(QETOPDIR)/COUPLE/src/libqecouple.a \
$(QETOPDIR)/PW/src/libpw.a \
$(QETOPDIR)/Modules/libqemod.a
# part 2: lo-level libraries for all of Q-E
LIBOBJS = \
$(QETOPDIR)/FFTXlib/libqefft.a \
$(QETOPDIR)/LAXlib/libqela.a \
$(QETOPDIR)/clib/clib.a \
$(QETOPDIR)/iotk/src/libiotk.a
# part 3: add-on libraries and main library for LAMMPS
sinclude ../../src/Makefile.package
LAMMPSCFG = mpi
LAMMPSLIB = ../../src/liblammps_$(LAMMPSCFG).a
# part 4: local QM/MM library and progams
SRC=pwqmmm.c libqmmm.c
OBJ=$(SRC:%.c=%.o)
default: libqmmm.a
all : tldeps libqmmm.a pwqmmm.x
pwqmmm.x : pwqmmm.o $(OBJ) $(PWOBJS) $(LIBOBJS) $(LAMMPSLIB)
$(MPICXX) $(LDFLAGS) -o $@ $^ $(PKG_PATH) $(PKG_LIB) $(MPILIBS) $(LIBS)
libqmmm.a: libqmmm.o
$(AR) $(ARFLAGS) $@ $^
@cp $(EXTRAMAKE) Makefile.lammps
%.o: %.c
$(MPICXX) -c $(LAMMPSFLAGS) $(MPICXXFLAGS) $< -o $@
tldeps:
( cd $(QETOPDIR) ; $(MAKE) $(MFLAGS) couple || exit 1)
$(MAKE) -C ../../src $(MFLAGS) $(LAMMPSCFG)
$(MAKE) -C ../../src $(MFLAGS) mode=lib $(LAMMPSCFG)
clean :
-rm -f *.x *.o *.a *~ *.F90 *.d *.mod *.i *.L
# explicit dependencies
pwqmmm.o: pwqmmm.c libqmmm.h
libqmmm.o: libqmmm.c libqmmm.h

View File

@ -28,7 +28,7 @@ OBJ = $(SRC:.F=.o)
# ------ SETTINGS ------ # ------ SETTINGS ------
F90 = gfortran F90 = gfortran
F90FLAGS = -O -fPIC -fno-second-underscore F90FLAGS = -O3 -fPIC -fno-second-underscore
ARCHIVE = ar ARCHIVE = ar
ARCHFLAG = -rc ARCHFLAG = -rc
USRLIB = USRLIB =

View File

@ -0,0 +1,5 @@
# Settings that the LAMMPS build will import when this package library is used
reax_SYSINC =
reax_SYSLIB =
reax_SYSPATH =

51
lib/reax/Makefile.mpi Normal file
View File

@ -0,0 +1,51 @@
# *
# *_________________________________________________________________________*
# * Fortran Library for Reactive Force Field *
# * DESCRIPTION: SEE READ-ME *
# * FILE NAME: Makefile *
# * CONTRIBUTING AUTHORS: Hansohl Cho(MIT), Aidan Thompson(SNL) *
# * and Greg Wagner(SNL) *
# * CONTACT: hansohl@mit.edu, athompson@sandia.gov, gjwagne@sandia.gov *
# *_________________________________________________________________________*/
SHELL = /bin/sh
# which file will be copied to Makefile.lammps
EXTRAMAKE = Makefile.lammps.empty
# ------ FILES ------
SRC = reax_connect.F reax_inout.F reax_lammps.F reax_poten.F reax_reac.F reax_charges.F
HEADERFILES = reax_defs.h *.blk
# ------ DEFINITIONS ------
LIB = libreax.a
OBJ = $(SRC:.F=.o)
# ------ SETTINGS ------
F90 = mpifort
F90FLAGS = -O3 -fPIC
ARCHIVE = ar
ARCHFLAG = -rc
USRLIB =
SYSLIB =
# ------ MAKE PROCEDURE ------
lib: $(OBJ)
$(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ)
@cp $(EXTRAMAKE) Makefile.lammps
# ------ COMPILE RULES ------
%.o:%.F $(HEADERFILES)
$(F90) $(F90FLAGS) -c $<
# ------ CLEAN ------
clean:
-rm *.o $(LIB)

1
lib/reax/Makefile.serial Symbolic link
View File

@ -0,0 +1 @@
Makefile.gfortran

View File

@ -98,7 +98,7 @@ if buildflag:
edir = glob.glob("%s/eigen-eigen-*" % homepath) edir = glob.glob("%s/eigen-eigen-*" % homepath)
for one in edir: for one in edir:
if os.path.isdir(one): if os.path.isdir(one):
subprocess.check_output("rm -rf %s" % one,stderr=subprocess.STDOUT,shell=True) subprocess.check_output('rm -rf "%s"' % one,stderr=subprocess.STDOUT,shell=True)
cmd = 'cd "%s"; tar -xzvf %s' % (homepath,tarball) cmd = 'cd "%s"; tar -xzvf %s' % (homepath,tarball)
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
edir = glob.glob("%s/eigen-eigen-*" % homepath) edir = glob.glob("%s/eigen-eigen-*" % homepath)
@ -113,5 +113,5 @@ if linkflag:
os.remove("includelink") os.remove("includelink")
if pathflag: linkdir = eigenpath if pathflag: linkdir = eigenpath
else: linkdir = "%s/%s" % (homepath,homedir) else: linkdir = "%s/%s" % (homepath,homedir)
cmd = "ln -s %s includelink" % linkdir cmd = 'ln -s "%s" includelink' % linkdir
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)

View File

@ -1,5 +1,5 @@
# Settings that the LAMMPS build will import when this package library is used # Settings that the LAMMPS build will import when this package library is used
user-smd_SYSINC = user-smd_SYSINC = -I../../lib/includelink/eigen3
user-smd_SYSLIB = user-smd_SYSLIB =
user-smd_SYSPATH = user-smd_SYSPATH =

View File

@ -5,8 +5,16 @@
from __future__ import print_function from __future__ import print_function
import sys,os,re,subprocess import sys,os,re,subprocess
try: from urllib.request import urlretrieve as geturl
except: from urllib import urlretrieve as geturl try:
import ssl
try: from urllib.request import urlretrieve as geturl
except: from urllib import urlretrieve as geturl
except:
def geturl(url,fname):
cmd = 'curl -L -o "%s" %s' % (fname,url)
txt = subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
return txt
# help message # help message
@ -55,7 +63,6 @@ nargs = len(args)
homepath = "." homepath = "."
homedir = version homedir = version
grabflag = True
buildflag = True buildflag = True
pathflag = False pathflag = False
linkflag = True linkflag = True
@ -89,7 +96,7 @@ if (buildflag and pathflag):
# download and unpack Voro++ tarball # download and unpack Voro++ tarball
if grabflag: if buildflag:
print("Downloading Voro++ ...") print("Downloading Voro++ ...")
geturl(url,"%s/%s.tar.gz" % (homepath,version)) geturl(url,"%s/%s.tar.gz" % (homepath,version))
@ -122,7 +129,7 @@ if linkflag:
os.remove("includelink") os.remove("includelink")
if os.path.isfile("liblink") or os.path.islink("liblink"): if os.path.isfile("liblink") or os.path.islink("liblink"):
os.remove("liblink") os.remove("liblink")
cmd = ['ln -s "%s/src" includelink' % homedir, 'includelink'] cmd = 'ln -s "%s/src" includelink' % homedir
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)
cmd = ['ln -s "%s/src" liblink' % homedir] cmd = 'ln -s "%s/src" liblink' % homedir
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True) subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=True)