# define build type
IF( DEFINED CMAKE_BUILD_TYPE )
SET( CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Set to either \"Release\" or \"Debug\"" )
ELSE()
SET( CMAKE_BUILD_TYPE Release CACHE STRING "Set to either \"Release\" or \"Debug\"" )
ENDIF()
PROJECT(openEMS CXX C)
cmake_minimum_required(VERSION 2.8)
# default
set(LIB_VERSION_MAJOR 0)
set(LIB_VERSION_MINOR 0)
set(LIB_VERSION_PATCH 35)
set(LIB_VERSION_STRING ${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH})
set(VERSION "v${LIB_VERSION_STRING}")
IF(EXISTS ${PROJECT_SOURCE_DIR}/localConfig.cmake)
include(${PROJECT_SOURCE_DIR}/localConfig.cmake)
ENDIF()
#ADD_DEFINITIONS( -D__SSE2__ )
set(VERSION "v0.0.35")
# add git revision
IF(EXISTS ${PROJECT_SOURCE_DIR}/.git )
FIND_PACKAGE(Git)
# Get the latest abbreviated commit hash of the working branch
execute_process(
COMMAND ${GIT_EXECUTABLE} describe --tags
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GITREV
)
set(VERSION ${GITREV})
string(STRIP ${VERSION} VERSION)
message(STATUS "Found Git repository, ${PROJECT_NAME} version tag: ${VERSION}")
ENDIF()
ADD_DEFINITIONS(-DGIT_VERSION=\"${VERSION}\")
#
# Set up RPATH for the project
#
option(ENABLE_RPATH "Enable rpath support on Linux and Mac" ON)
if(NOT CMAKE_INSTALL_RPATH)
# the RPATH to be used when installing, but only if it's not a system directory
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
ENDIF("${isSystemDir}" STREQUAL "-1")
endif()
if(APPLE AND NOT CMAKE_INSTALL_NAME_DIR)
set(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}")
endif()
if(UNIX AND ENABLE_RPATH)
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
endif()
if (WITH_MPI)
ADD_DEFINITIONS(-DMPI_SUPPORT)
# Require MPI for this project:
find_package(MPI REQUIRED)
INCLUDE_DIRECTORIES( ${MPI_INCLUDE_PATH} )
message(STATUS "Found MPI. INCLUDE " ${MPI_INCLUDE_PATH})
endif()
# Set locations of extra CMake modules
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${openEMS_SOURCE_DIR}/cmake/Modules/")
# fparser
# $ cmake -D FPARSER_ROOT_DIR=~/opt/openEMS .
# SET(FPARSER_ROOT_DIR ~/opt/openEMS)
find_library(fparser_LIBRARIES
NAMES fparser
HINTS ${FPARSER_ROOT_DIR}/lib${LIB_SUFFIX}
NO_CMAKE_FIND_ROOT_PATH
)
message(STATUS "fparser: ${fparser_LIBRARIES}" )
#TODO test if fparser was found
INCLUDE_DIRECTORIES( ${FPARSER_ROOT_DIR}/include )
# CSXCAD
# $ cmake -D CSXCAD_ROOT_DIR=~/opt/openEMS .
# SET(CSXCAD_ROOT_DIR ~/opt/openEMS)
find_library(CSXCAD_LIBRARIES
NAMES CSXCAD
HINTS ${CSXCAD_ROOT_DIR}/lib${LIB_SUFFIX}
NO_CMAKE_FIND_ROOT_PATH
)
message(STATUS "CSXCAD_LIBRARIES: ${CSXCAD_LIBRARIES}" )
#TODO test if CSXCADs was found
find_path(CSXCAD_INCLUDE_DIR
NAMES ContinuousStructure.h
HINTS ${CSXCAD_ROOT_DIR}/include
PATH_SUFFIXES "CSXCAD" ${CSXCAD_INCLUDE_DIR}
NO_CMAKE_FIND_ROOT_PATH
)
message(STATUS "CSXCAD_INCLUDE_DIR: ${CSXCAD_INCLUDE_DIR}" )
INCLUDE_DIRECTORIES( ${CSXCAD_INCLUDE_DIR} )
# TinyXML module from https://github.com/ros/cmake_modules
find_package(TinyXML REQUIRED)
ADD_DEFINITIONS( -DTIXML_USE_STL )
message(STATUS "TinyXML_INCLUDE_DIR: ${TinyXML_INCLUDE_DIR}")
message(STATUS "TinyXML_LIBRARY: ${TinyXML_LIBRARY}")
INCLUDE_DIRECTORIES( ${TinyXML_INCLUDE_DIR} )
# hdf5
find_package(HDF5 1.8 COMPONENTS C HL REQUIRED)
INCLUDE_DIRECTORIES (${HDF5_INCLUDE_DIRS})
link_directories(${HDF5_LIBRARIES})
# hdf5 compat
#ADD_DEFINITIONS( -DH5_USE_16_API )
#ADD_DEFINITIONS( -DH5_BUILT_AS_DYNAMIC_LIB )
# boost
find_package(Boost 1.46 COMPONENTS
thread
system
date_time
serialization
chrono
REQUIRED
)
message(STATUS "Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
message(STATUS "Boost_LIBRARIES: ${Boost_LIBRARIES}")
INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIRS})
# vtk
find_package(VTK COMPONENTS vtkIOXML vtkIOGeometry vtkIOLegacy vtkIOPLY NO_MODULE REQUIRED)
message(STATUS "Found package VTK. Using version " ${VTK_VERSION})
if("${VTK_MAJOR_VERSION}" GREATER 5)
set( vtk_LIBS ${VTK_LIBRARIES} )
else()
set( vtk_LIBS
vtkCommon
vtkIO
)
endif()
message(STATUS "vtk libraries " ${vtk_LIBS})
include(${VTK_USE_FILE})
INCLUDE_DIRECTORIES (${VTK_INCLUDE_DIR})
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
set(ARCH "x86_64")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "amd64")
set(ARCH "x86_64")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64")
set(ARCH "x86_64")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "ppc64")
set(ARCH "ppc64")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "ppc64le")
set(ARCH "ppc64")
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "unknown")
set(ARCH "unknown")
message(FATAL_ERROR "Unable to determine target architecture! Try setting CMAKE_SYSTEM_PROCESSOR to a valid value.")
else()
set(ARCH "unsupported")
endif()
if(${ARCH} STREQUAL "x86_64")
message(STATUS "Detected 64-bit x86 target")
#set(CMAKE_CXX_FLAGS "-msse -march=native")
elseif(${ARCH} STREQUAL "ppc64")
message(STATUS "Detected 64-bit POWER target")
set(CMAKE_CXX_FLAGS "-DNO_WARN_X86_INTRINSICS -DSSE_CORRECT_DENORMALS")
elseif(${ARCH} STREQUAL "unsupported")
message(FATAL_ERROR "Unsupported target architecture! Try porting openEMS to your architecture...")
else()
message(FATAL_ERROR "Unable to determine target architecture! Aborting.")
endif()
# independent tool
ADD_SUBDIRECTORY( nf2ff )
set(SOURCES
openems.cpp
)
set(PUB_HEADERS openems.h openems_global.h)
# libs
ADD_SUBDIRECTORY( tools )
ADD_SUBDIRECTORY( FDTD )
ADD_SUBDIRECTORY( FDTD/extensions )
ADD_SUBDIRECTORY( Common )
INCLUDE_DIRECTORIES( ${openEMS_SOURCE_DIR} ) #find tools
message(STATUS "Sources:" ${SOURCES})
if (${MPI_CXX_FOUND})
set(CMAKE_CXX_COMPILE_FLAGS ${CMAKE_CXX_COMPILE_FLAGS} ${MPI_COMPILE_FLAGS})
set(CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} ${MPI_LINK_FLAGS})
SET(CMAKE_CXX_COMPILER ${MPI_CXX_COMPILER})
endif()
add_library( openEMS SHARED ${SOURCES})
#ADD_EXECUTABLE( openEMS main.cpp ${SOURCES})
set_target_properties(openEMS PROPERTIES VERSION ${LIB_VERSION_STRING} SOVERSION ${LIB_VERSION_MAJOR} )
TARGET_LINK_LIBRARIES( openEMS
${CSXCAD_LIBRARIES}
${fparser_LIBRARIES}
${TinyXML_LIBRARY}
${HDF5_LIBRARIES}
${HDF5_HL_LIBRARIES}
${Boost_LIBRARIES}
${vtk_LIBS}
${MPI_LIBRARIES}
)
if (WIN32)
# make sure "BUILD_OPENEMS_LIB" is only set for openEMS (dll) not openEMS_bin (exe)
target_compile_definitions(openEMS PRIVATE -DBUILD_OPENEMS_LIB )
endif (WIN32)
# main program
ADD_EXECUTABLE( openEMS_bin main.cpp )
SET_TARGET_PROPERTIES(openEMS_bin PROPERTIES OUTPUT_NAME openEMS)
TARGET_LINK_LIBRARIES(openEMS_bin openEMS)
if (WIN32)
INSTALL(TARGETS openEMS DESTINATION bin)
else()
INSTALL(TARGETS openEMS DESTINATION lib${LIB_SUFFIX})
endif()
INSTALL(TARGETS openEMS_bin DESTINATION bin)
if (UNIX)
INSTALL( FILES openEMS.sh
DESTINATION bin
PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
if (WITH_MPI)
INSTALL( FILES openEMS_MPI.sh
DESTINATION bin
PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
endif()
endif ()
INSTALL(FILES ${PUB_HEADERS} DESTINATION include/openEMS)
INSTALL( DIRECTORY matlab DESTINATION share/openEMS )
# TODO mpi, tarball, debug, release
没有合适的资源?快使用搜索试试~ 我知道了~
openEMS 是使用 EC- FDTD方法 的免费电磁场求解器_C++_代码_下载
共346个文件
m:127个
h:68个
cpp:66个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 131 浏览量
2022-07-03
14:26:39
上传
评论
收藏 1.86MB ZIP 举报
温馨提示
openEMS - 一个免费且开放的电磁场求解器 更多详情、使用方法,请下载后阅读README.md文件
资源推荐
资源详情
资源评论
收起资源包目录
openEMS 是使用 EC- FDTD方法 的免费电磁场求解器_C++_代码_下载
(346个子文件)
h5readatt_octave.cc 3KB
debian.changelog 1KB
FindTinyXML.cmake 3KB
debian.control 525B
COPYING 34KB
operator.cpp 56KB
openems.cpp 39KB
engine_ext_upml.cpp 21KB
nf2ff.cpp 18KB
nf2ff_calc.cpp 17KB
sar_calculation.cpp 17KB
hdf5_file_reader.cpp 17KB
operator_cylindermultigrid.cpp 17KB
operator_cylinder.cpp 17KB
openems_fdtd_mpi.cpp 15KB
operator_ext_upml.cpp 15KB
hdf5_file_writer.cpp 15KB
AdrOp.cpp 15KB
operator_ext_tfsf.cpp 14KB
operator_ext_lorentzmaterial.cpp 13KB
engine_ext_lorentzmaterial.cpp 13KB
processfields_sar.cpp 11KB
engine_multithread.cpp 10KB
operator_ext_excitation.cpp 10KB
engine_interface_fdtd.cpp 10KB
vtk_file_writer.cpp 9KB
processfields.cpp 9KB
processing.cpp 9KB
engine_ext_mur_abc.cpp 9KB
operator_ext_conductingsheet.cpp 9KB
engine_cylindermultigrid.cpp 8KB
engine_sse.cpp 7KB
processfields_fd.cpp 7KB
engine_ext_tfsf.cpp 7KB
engine_sse_compressed.cpp 7KB
processmodematch.cpp 7KB
engine.cpp 7KB
excitation.cpp 7KB
operator_sse_compressed.cpp 6KB
operator_ext_mur_abc.cpp 6KB
engine_ext_dispersive.cpp 6KB
engine_ext_excitation.cpp 5KB
engine_mpi.cpp 5KB
engine_ext_cylindermultigrid.cpp 5KB
processintegral.cpp 5KB
operator_mpi.cpp 5KB
operator_multithread.cpp 5KB
processcurrent.cpp 5KB
useful.cpp 5KB
ExpenseLog.cpp 4KB
array_ops.cpp 4KB
engine_ext_steadystate.cpp 4KB
operator_ext_cylinder.cpp 3KB
operator_base.cpp 3KB
engine_ext_cylinder.cpp 3KB
operator_ext_steadystate.cpp 3KB
engine_interface_sse_fdtd.cpp 3KB
engine_extension.cpp 3KB
processfields_td.cpp 3KB
ErrorMsg.cpp 2KB
engine_interface_cylindrical_fdtd.cpp 2KB
global.cpp 2KB
processfieldprobe.cpp 2KB
operator_ext_dispersive.cpp 2KB
operator_sse.cpp 2KB
main.cpp 2KB
operator_extension.cpp 1KB
processvoltage.cpp 1KB
main.cpp 1KB
engine_interface_base.cpp 1KB
engine_cylinder.cpp 1KB
fedora17.diff 379B
debian.docs 15B
Doxyfile 64KB
openEMS.dsc 422B
operator.h 13KB
operator_base.h 7KB
processing.h 6KB
array_ops.h 6KB
aligned_allocator.h 5KB
AdrOp.h 5KB
operator_cylinder.h 5KB
openems.h 5KB
operator_ext_upml.h 4KB
operator_sse_compressed.h 4KB
sar_calculation.h 4KB
engine_interface_base.h 4KB
operator_cylindermultigrid.h 4KB
processfields.h 4KB
nf2ff_calc.h 4KB
engine.h 4KB
engine_extension.h 4KB
engine_multithread.h 4KB
excitation.h 3KB
cond_sheet_parameter.h 3KB
hdf5_file_writer.h 3KB
vtk_file_writer.h 3KB
engine_interface_fdtd.h 3KB
operator_extension.h 3KB
operator_ext_excitation.h 3KB
共 346 条
- 1
- 2
- 3
- 4
资源评论
- whl_2022-09-22发现一个宝藏资源,赶紧冲冲冲!支持大佬~
- 2301_767927602024-04-19怎么能有这么好的资源!只能用感激涕零来形容TAT...
快撑死的鱼
- 粉丝: 1w+
- 资源: 9154
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功