use options for future cross-platform support
This commit is contained in:
parent
cfddba930b
commit
7aadfd56ca
|
@ -25,7 +25,6 @@ set (petsc_config_makefile "${PETSC_TEMP}/Makefile.petsc")
|
||||||
file (WRITE "${petsc_config_makefile}"
|
file (WRITE "${petsc_config_makefile}"
|
||||||
"## This file was auto generated by CMake
|
"## This file was auto generated by CMake
|
||||||
# PETSC_DIR = ${PETSC_DIR}
|
# PETSC_DIR = ${PETSC_DIR}
|
||||||
# PETSC_ARCH = ${PETSC_ARCH}
|
|
||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
include ${petsc_conf_rules}
|
include ${petsc_conf_rules}
|
||||||
include ${petsc_conf_variables}
|
include ${petsc_conf_variables}
|
||||||
|
@ -99,11 +98,21 @@ endforeach(exlib)
|
||||||
set(CMAKE_Fortran_COMPILER "${MPIEXEC}")
|
set(CMAKE_Fortran_COMPILER "${MPIEXEC}")
|
||||||
project (DAMASK Fortran)
|
project (DAMASK Fortran)
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
|
||||||
|
|
||||||
|
find_package(FFTW REQUIRED)
|
||||||
|
find_package(PythonInterp REQUIRED)
|
||||||
|
find_program(F2PY_EXECUTABLE NAMES "f2py${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}"
|
||||||
|
"f2py-${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}"
|
||||||
|
"f2py${PYTHON_VERSION_MAJOR}"
|
||||||
|
"f2py")
|
||||||
|
|
||||||
message("***Found PETSC_DIR:\n${PETSC_DIR}\n" )
|
message("***Found PETSC_DIR:\n${PETSC_DIR}\n" )
|
||||||
message("***Found PETSC_INCLUDES:\n${PETSC_INCLUDES}\n" )
|
message("***Found PETSC_INCLUDES:\n${PETSC_INCLUDES}\n" )
|
||||||
message("***Found PETSC_EXTERNAL_LIB:\n${PETSC_EXTERNAL_LIB}\n")
|
message("***Found PETSC_EXTERNAL_LIB:\n${PETSC_EXTERNAL_LIB}\n")
|
||||||
message("***Found PETSC_LINKER:\n${PETSC_LINKER}\n" )
|
message("***Found PETSC_LINKER:\n${PETSC_LINKER}\n" )
|
||||||
message("***Found FORTRAN MPI COMPILER:\n${MPIEXEC}\n" )
|
message("***Found FORTRAN MPI COMPILER:\n${MPIEXEC}\n" )
|
||||||
|
message("***Found FFTW_LIB:\n${FFTW_LIBRARIES}")
|
||||||
|
|
||||||
|
|
||||||
# # https://cmake.org/Wiki/CMake_FAQ#How_do_I_use_a_different_compiler.3F
|
# # https://cmake.org/Wiki/CMake_FAQ#How_do_I_use_a_different_compiler.3F
|
||||||
|
@ -114,6 +123,14 @@ message("***Found FORTRAN MPI COMPILER:\n${MPIEXEC}\n" )
|
||||||
set (DAMASK_VERSION_MAJOR 1)
|
set (DAMASK_VERSION_MAJOR 1)
|
||||||
set (DAMASK_VERSION_MINOR ${DAMASK_V})
|
set (DAMASK_VERSION_MINOR ${DAMASK_V})
|
||||||
|
|
||||||
|
# Built-in options for DAMASK build system
|
||||||
|
# -> can be overwritten from commandline/install_script
|
||||||
|
option(OPENMP "Use OpenMP libaries for DAMASK" ON )
|
||||||
|
option(DAMASK_PROCESSING "Build pre/post processing modules for DAMASK" OFF )
|
||||||
|
option(OPTIMIZATION "DAMASK optimization level [OFF,DEFENSIVE,AGGRESSIVE,ULTRA]" NONE)
|
||||||
|
option(SPECTRAL "Build spectral sovler for DAMASAK" OFF )
|
||||||
|
option(FEM "Builb FEM solver for DAMASK" OFF )
|
||||||
|
|
||||||
# COMPILE VARIABLES
|
# COMPILE VARIABLES
|
||||||
add_definitions(-DDAMASKVERSION="${DAMASK_V}")
|
add_definitions(-DDAMASKVERSION="${DAMASK_V}")
|
||||||
add_definitions(-DPETSc)
|
add_definitions(-DPETSc)
|
||||||
|
@ -142,7 +159,7 @@ endif()
|
||||||
set (DAMASK_INCLUDE_FLAGS "${DAMASK_INCLUDE_FLAGS} ${PETSC_INCLUDES}" )
|
set (DAMASK_INCLUDE_FLAGS "${DAMASK_INCLUDE_FLAGS} ${PETSC_INCLUDES}" )
|
||||||
set (DAMASK_INCLUDE_FLAGS "${DAMASK_INCLUDE_FLAGS} -I${PROJECT_SOURCE_DIR}/lib")
|
set (DAMASK_INCLUDE_FLAGS "${DAMASK_INCLUDE_FLAGS} -I${PROJECT_SOURCE_DIR}/lib")
|
||||||
|
|
||||||
if ("${OPTIMIZATION}" STREQUAL "OFF")
|
if ("${OPTIMIZATION}" STREQUAL "NONE")
|
||||||
set (OPTIMIZATION_ifort "-O0 -no-ip")
|
set (OPTIMIZATION_ifort "-O0 -no-ip")
|
||||||
set (OPTIMIZATION_gfortran "-O0" )
|
set (OPTIMIZATION_gfortran "-O0" )
|
||||||
elseif ("${OPTIMIZATION}" STREQUAL "DEFENSIVE")
|
elseif ("${OPTIMIZATION}" STREQUAL "DEFENSIVE")
|
||||||
|
@ -445,6 +462,11 @@ elseif (FEM)
|
||||||
DESTINATION ${CMAKE_INSTALL_PREFIX})
|
DESTINATION ${CMAKE_INSTALL_PREFIX})
|
||||||
endif(SPECTRAL)
|
endif(SPECTRAL)
|
||||||
|
|
||||||
|
if (DAMASK_PROCESSING)
|
||||||
|
INSTALL(PROGRAMS ${PROJECT_BINARY_DIR}/src/core.so
|
||||||
|
DESTINATION ${PROJECT_SOURCE_DIR}/lib/damask)
|
||||||
|
endif(DAMASK_PROCESSING)
|
||||||
|
|
||||||
##
|
##
|
||||||
# ADD TESTING CASES
|
# ADD TESTING CASES
|
||||||
# add_test (SmokeTestRun
|
# add_test (SmokeTestRun
|
||||||
|
|
|
@ -30,6 +30,7 @@ cd FEM
|
||||||
# OPTIMIZATION | [OFF,DEFENSIVE,AGGRESSIVE,ULTRA]
|
# OPTIMIZATION | [OFF,DEFENSIVE,AGGRESSIVE,ULTRA]
|
||||||
# DAMASK_DRIVER | [SPECTRAL, FEM]
|
# DAMASK_DRIVER | [SPECTRAL, FEM]
|
||||||
# DAMASK_INSTALL | Directory to install binary output
|
# DAMASK_INSTALL | Directory to install binary output
|
||||||
|
# INSTALL_PROCESSING | Build supporting pre/post processing scripts
|
||||||
cmake -D PETSC_DIR=${PETSC_DIR} \
|
cmake -D PETSC_DIR=${PETSC_DIR} \
|
||||||
-D DAMASK_V=${DAMASKVERSION} \
|
-D DAMASK_V=${DAMASKVERSION} \
|
||||||
-D CMAKE_BUILD_TYPE=RELEASE \
|
-D CMAKE_BUILD_TYPE=RELEASE \
|
||||||
|
@ -37,6 +38,7 @@ cmake -D PETSC_DIR=${PETSC_DIR} \
|
||||||
-D OPTIMIZATION=DEFENSIVE \
|
-D OPTIMIZATION=DEFENSIVE \
|
||||||
-D DAMASK_DRIVER=FEM \
|
-D DAMASK_DRIVER=FEM \
|
||||||
-D DAMASK_INSTALL=${HOME}/bin \
|
-D DAMASK_INSTALL=${HOME}/bin \
|
||||||
|
-D INSTALL_PROCESSING=YES \
|
||||||
../..
|
../..
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
|
|
@ -44,6 +44,7 @@ cmake -D PETSC_DIR=${PETSC_DIR} \
|
||||||
-D DAMASK_V=${DAMASKVERSION} \
|
-D DAMASK_V=${DAMASKVERSION} \
|
||||||
-D CMAKE_BUILD_TYPE=RELEASE \
|
-D CMAKE_BUILD_TYPE=RELEASE \
|
||||||
-D OPENMP=ON \
|
-D OPENMP=ON \
|
||||||
|
-D DAMASK_PROCESSING=ON \
|
||||||
-D OPTIMIZATION=DEFENSIVE \
|
-D OPTIMIZATION=DEFENSIVE \
|
||||||
-D DAMASK_DRIVER=SPECTRAL \
|
-D DAMASK_DRIVER=SPECTRAL \
|
||||||
-D DAMASK_INSTALL=${HOME}/bin \
|
-D DAMASK_INSTALL=${HOME}/bin \
|
||||||
|
|
|
@ -196,3 +196,51 @@ if (SPECTRAL)
|
||||||
add_executable(DAMASKSpectral.exe "DAMASK_spectral.f90")
|
add_executable(DAMASKSpectral.exe "DAMASK_spectral.f90")
|
||||||
target_link_libraries(DAMASKSpectral.exe DAMASK_EXE)
|
target_link_libraries(DAMASKSpectral.exe DAMASK_EXE)
|
||||||
endif(SPECTRAL)
|
endif(SPECTRAL)
|
||||||
|
|
||||||
|
if (DAMASK_PROCESSING)
|
||||||
|
# set compiler flags based on type of compiler used
|
||||||
|
if (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel")
|
||||||
|
set(CORECOMPILER "${CORECOMPILER} --fcompiler=intelem")
|
||||||
|
set(CORECOMPILER "${CORECOMPILER} --f90flags=\"-fPIC -fpp -stand f08 -diag-disable 5268 -assume byterecl -real-size 64 -integer-size 32 -shared-intel\"")
|
||||||
|
elseif(${CMAKE_Fortran_COMPILER_ID} STREQUAL "GNU")
|
||||||
|
set(CORECOMPILER "${CORECOMPILER} --fcompiler=gnu95")
|
||||||
|
set(CORECOMPILER "${CORECOMPILER} --f90flags=\"-fPIC -fno-range-check -xf95-cpp-input -std=f2008 -fall-intrinsics -fdefault-real-8 -fdefault-double-8\"")
|
||||||
|
endif(${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel")
|
||||||
|
# set CORE compiler options
|
||||||
|
set(CORE_COMPILE_OPTIONS "${COMPILEROPTIONS} -DSpectral -DFLOAT=8 -DINT=4")
|
||||||
|
set(CORE_COMPILE_OPTIONS "${COMPILEROPTIONS} -I${PROJECT_SOURCE_DIR}/lib")
|
||||||
|
set(CORE_COMPILE_OPTIONS "${COMPILEROPTIONS} -DDAMASKVERSION=\\\"${DAMASK_V}\\\"")
|
||||||
|
# set CORE link flags
|
||||||
|
if (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel")
|
||||||
|
set(CORE_LDFLAGS "${CORE_LDFLAGS} -openmp -Wl")
|
||||||
|
elseif(${CMAKE_Fortran_COMPILER_ID} STREQUAL "GNU")
|
||||||
|
set(CORE_LDFLAGS "${CORE_LDFLAGS} -shared -Wl,-undefined,dynamic_lookup")
|
||||||
|
endif(${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel")
|
||||||
|
|
||||||
|
# source file for building core
|
||||||
|
set(COREFILES "${COREFILES} prec.f90" )
|
||||||
|
set(COREFILES "${COREFILES} spectral_interface.f90")
|
||||||
|
set(COREFILES "${COREFILES} IO.f90" )
|
||||||
|
set(COREFILES "${COREFILES} libs.f90" )
|
||||||
|
set(COREFILES "${COREFILES} numerics.f90" )
|
||||||
|
set(COREFILES "${COREFILES} debug.f90" )
|
||||||
|
set(COREFILES "${COREFILES} math.f90" )
|
||||||
|
set(COREFILES "${COREFILES} FEsolving.f90" )
|
||||||
|
set(COREFILES "${COREFILES} mesh.f90" )
|
||||||
|
set(COREFILES "${COREFILES} core_quit.f90" )
|
||||||
|
|
||||||
|
execute_process(COMMAND F2PY_EXECUTABLE damask.core.pyf )
|
||||||
|
endif(DAMASK_PROCESSING)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue