added "core" package capability to processing
(renamed former f2py modules) reverted pathinfo...
This commit is contained in:
parent
429af90ccb
commit
35bd460e39
|
@ -17,7 +17,7 @@
|
|||
! along with DAMASK. If not, see <http://www.gnu.org/licenses/>.
|
||||
!
|
||||
!##############################################################
|
||||
!* $Id: prec.f90 1033 2011-10-20 16:46:11Z MPIE\m.diehl $
|
||||
!* $Id$
|
||||
!##############################################################
|
||||
|
||||
MODULE prec
|
|
@ -1,4 +1,4 @@
|
|||
! $Id: postprocessingMath.pyf 979 2011-08-25 18:18:38Z MPIE\m.diehl $
|
||||
! $Id$
|
||||
! -*- f90 -*-
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
! Note: the context of this file is case sensitive.
|
||||
|
@ -11,8 +11,8 @@
|
|||
! - if the dimension of an array depend on a array that is itself an input, use the C-Syntax: (1) becomes [0] etc.
|
||||
! - be sure that the precision defined for math.f90 is integer, real*8, and complex*16
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
python module DAMASK ! in
|
||||
interface ! in :DAMASK
|
||||
python module core ! in
|
||||
interface ! in :core
|
||||
module math ! in :math:math.f90
|
||||
|
||||
subroutine volume_compare(res,geomdim,defgrad,nodes,volume_mismatch) ! in :math:math.f90
|
||||
|
@ -156,5 +156,5 @@ python module DAMASK ! in
|
|||
end subroutine math_equivStrain33_field
|
||||
end module math
|
||||
end interface
|
||||
end python module DAMASK
|
||||
end python module core
|
||||
|
|
@ -240,6 +240,11 @@ prec.o: prec.f90
|
|||
endif
|
||||
|
||||
|
||||
tidy:
|
||||
rm -rf *.o
|
||||
rm -rf *.mod
|
||||
rm -rf *.a
|
||||
|
||||
clean:
|
||||
rm -rf *.o
|
||||
rm -rf *.mod
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# possible options are MSC, FFTW, IKML, ACML, LAPACK
|
||||
|
||||
ACML /opt/acml4.4.0
|
||||
#ACML /opt/acml4.4.0
|
||||
LAPACK /usr
|
||||
FFTW ./fftw
|
||||
MSC /msc
|
||||
|
|
|
@ -36,25 +36,37 @@ Sets up the pre and post processing tools of DAMASK
|
|||
""" + string.replace('$Id: addDivergence.py 1129 2011-12-01 12:01:13Z MPIE\m.diehl $','\n','\\n')
|
||||
)
|
||||
|
||||
compilers = ['intel','ifort','intel32','gfortran','gnu95']
|
||||
|
||||
parser.add_option('--F90', dest='compiler', type='string', \
|
||||
help='name of F90 compiler [%default]')
|
||||
help='name of F90 compiler')
|
||||
|
||||
parser.set_defaults(compiler = 'ifort')
|
||||
(options,filenames) = parser.parse_args()
|
||||
|
||||
#translating name of compiler for use with f2py and setting subdirname of acml
|
||||
if options.compiler == 'gfortran':
|
||||
f2py_compiler='gnu95 --f90flags="-fno-range-check"'
|
||||
else:
|
||||
f2py_compiler='intelem'
|
||||
if options.compiler not in compilers:
|
||||
parser.error('compiler has to be one out of --F90 %s'%(', '.join(compilers)))
|
||||
|
||||
acml_subdir='%s64/lib'%options.compiler
|
||||
f2py_compiler = {
|
||||
'gfortran': 'gnu95 --f90flags="-fno-range-check"',
|
||||
'gnu95': 'gnu95 --f90flags="-fno-range-check"',
|
||||
'intel32': 'intel',
|
||||
'intel': 'intelem',
|
||||
'ifort': 'intelem',
|
||||
}[options.compiler]
|
||||
|
||||
|
||||
damaskEnv = damask.Environment()
|
||||
baseDir = damaskEnv.relPath('processing/')
|
||||
codeDir = damaskEnv.relPath('code/')
|
||||
|
||||
if 'ikml' in damaskEnv.pathInfo and damaskEnv.pathInfo['ikml'] != '':
|
||||
lib_lapack = '' # TODO!!
|
||||
elif 'acml' in damaskEnv.pathInfo and damaskEnv.pathInfo['acml'] != '':
|
||||
lib_lapack = '-L%s -lacml'%(os.path.join(damaskEnv.pathInfo['acml'],'%s64')) # can we use linker flag?
|
||||
# lib_lapack = os.path.join(damaskEnv.pathInfo['acml'],'%s64/lib/libacml.a'%options.compiler) # why linking against static lib?
|
||||
elif 'lapack' in damaskEnv.pathInfo and damaskEnv.pathInfo['lapack'] != '':
|
||||
lib_lapack = '-L%s -llapack'%(damaskEnv.pathInfo['lapack']) # see http://cens.ioc.ee/pipermail/f2py-users/2003-December/000621.html
|
||||
|
||||
#define ToDo list
|
||||
bin_link = { \
|
||||
'pre' : [
|
||||
|
@ -101,21 +113,21 @@ compile = { \
|
|||
|
||||
execute = { \
|
||||
'postMath' : [
|
||||
'rm %s'%(os.path.join(damaskEnv.relPath('lib/'),'DAMASK.so')),
|
||||
'make tidy',
|
||||
'rm %s'%(os.path.join(damaskEnv.relPath('lib/damask'),'core.so')),
|
||||
# The following command is used to compile math.f90 and make the functions defined in DAMASK_math.pyf
|
||||
# available for python in the module DAMASK_math.so
|
||||
# It uses the fortran wrapper f2py that is included in the numpy package to construct the
|
||||
# module postprocessingMath.so out of the fortran code postprocessingMath.f90
|
||||
# for the generation of the pyf file:
|
||||
#f2py -m DAMASK -h DAMASK.pyf --overwrite-signature ../../code/math.f90 \
|
||||
'f2py %s '%(os.path.join(codeDir,'DAMASK.pyf')) +\
|
||||
'-c --fcompiler=%s '%(f2py_compiler) +\
|
||||
'%s ' %(os.path.join(codeDir,'DAMASK2Python_helper.f90'))+\
|
||||
'%s ' %(os.path.join(codeDir,'math.f90'))+\
|
||||
'%s '
|
||||
%(os.path.join(damaskEnv.pathInfo['fftw'],'lib/libfftw3.a'))+\
|
||||
'%s' %(os.path.join(damaskEnv.pathInfo['acml'],acml_subdir,'libacml.a')),
|
||||
'mv %s %s' %(os.path.join(codeDir,'DAMASK.so'),damaskEnv.relPath('lib/')),
|
||||
'f2py %s'%(os.path.join(codeDir,'damask.core.pyf')) +\
|
||||
' -c --fcompiler=%s'%(f2py_compiler) +\
|
||||
' %s'%(os.path.join(codeDir,'core_modules.f90'))+\
|
||||
' %s'%(os.path.join(codeDir,'math.f90'))+\
|
||||
' -L%s -lfftw3'%(damaskEnv.pathInfo['fftw'])+\
|
||||
' %s'%lib_lapack,
|
||||
'mv %s %s' %(os.path.join(codeDir,'core.so'),damaskEnv.relPath('lib/damask')),
|
||||
]
|
||||
}
|
||||
|
||||
|
@ -135,9 +147,14 @@ for dir in compile:
|
|||
os.chdir(codeDir) # needed for compilation with gfortran and f2py
|
||||
for tasks in execute:
|
||||
for cmd in execute[tasks]:
|
||||
os.system(cmd)
|
||||
os.chdir(damaskEnv.relPath('processing/setup/'))
|
||||
try:
|
||||
print 'executing...:',cmd
|
||||
os.system(cmd)
|
||||
except:
|
||||
print 'failed..!'
|
||||
pass
|
||||
|
||||
os.chdir(damaskEnv.relPath('processing/setup/'))
|
||||
modules = glob.glob('*.mod')
|
||||
for module in modules:
|
||||
print 'removing', module
|
||||
|
|
Loading…
Reference in New Issue