diff --git a/code/DAMASK2Python_helper.f90 b/code/core_modules.f90 similarity index 97% rename from code/DAMASK2Python_helper.f90 rename to code/core_modules.f90 index bb6b30488..9389115ce 100644 --- a/code/DAMASK2Python_helper.f90 +++ b/code/core_modules.f90 @@ -17,7 +17,7 @@ ! along with DAMASK. If not, see . ! !############################################################## -!* $Id: prec.f90 1033 2011-10-20 16:46:11Z MPIE\m.diehl $ +!* $Id$ !############################################################## MODULE prec diff --git a/code/DAMASK.pyf b/code/damask.core.pyf similarity index 98% rename from code/DAMASK.pyf rename to code/damask.core.pyf index 6510d94b5..f6affd82a 100644 --- a/code/DAMASK.pyf +++ b/code/damask.core.pyf @@ -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 diff --git a/code/makefile b/code/makefile index ecec7444b..645da2b3f 100644 --- a/code/makefile +++ b/code/makefile @@ -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 diff --git a/lib/pathinfo b/lib/pathinfo index 68f6c040e..adcf3115a 100644 --- a/lib/pathinfo +++ b/lib/pathinfo @@ -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 diff --git a/processing/setup/setup_processing.py b/processing/setup/setup_processing.py index 999dec934..4e6703890 100755 --- a/processing/setup/setup_processing.py +++ b/processing/setup/setup_processing.py @@ -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