Skip to content

Commit 63928dc

Browse files
committed
Merge remote-tracking branch 'libzinc/master'
2 parents 48a9377 + 44a826d commit 63928dc

File tree

6 files changed

+1619
-22
lines changed

6 files changed

+1619
-22
lines changed

CMakeLists.txt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ CMAKE_MINIMUM_REQUIRED( VERSION 2.6 )
4141

4242
# Set this nampspace to keep these options seperate from other project options
4343
SET( FIELDML_NAMESPACE_NAME FIELDML )
44+
PROJECT(fieldml)
4445

4546
MACRO( OPTION_WITH_DEFAULT OPTION_NAME OPTION_STRING OPTION_DEFAULT )
4647
IF( NOT DEFINED ${OPTION_NAME} )
@@ -102,9 +103,17 @@ ADD_SUBDIRECTORY( core )
102103
SET( LIBRARY_TARGET_NAME fieldml_io_api )
103104
SET( FIELDML_IO_API_LIBRARY_TARGET_NAME ${LIBRARY_TARGET_NAME} )
104105
ADD_SUBDIRECTORY( io )
105-
106+
GET_DIRECTORY_PROPERTY(HDF5_INCLUDE_DIRS DIRECTORY io DEFINITION HDF5_INCLUDE_DIRS)
107+
GET_DIRECTORY_PROPERTY(HDF5_MINE_LIBRARIES DIRECTORY io DEFINITION HDF5_MINE_LIBRARIES)
108+
GET_DIRECTORY_PROPERTY(MPI_LIBRARIES DIRECTORY io DEFINITION MPI_MINE_LIBRARIES)
109+
GET_DIRECTORY_PROPERTY(MPI_INCLUDE_DIRS DIRECTORY io DEFINITION MPI_INCLUDE_DIRS)
110+
GET_DIRECTORY_PROPERTY(HDF5_USE_MPI DIRECTORY io DEFINITION HDF5_USE_MPI)
106111
ADD_SUBDIRECTORY( test )
107112

113+
foreach(arg ${MPI_LIBRARIES})
114+
set(MPI_MINE_LIBRARIES "${MPI_MINE_LIBRARIES} ${arg}")
115+
endforeach(arg ${MPI_LIBRARIES})
116+
108117
IF( ${FIELDML_NAMESPACE_NAME}_INSTALL_CONFIG )
109118
SET( LIBRARY_CONFIG_FILE ${CMAKE_CURRENT_BINARY_DIR}/fieldml-config.cmake )
110119
SET( CONFIG_FILE_CONTENTS
@@ -113,8 +122,8 @@ IF( ${FIELDML_NAMESPACE_NAME}_INSTALL_CONFIG )
113122
"\nGET_FILENAME_COMPONENT( SELF_DIR \"\${CMAKE_CURRENT_LIST_FILE}\" PATH )"
114123
"\nINCLUDE( \${SELF_DIR}/fieldml-targets.cmake )"
115124
"\nGET_FILENAME_COMPONENT( ${FIELDML_NAMESPACE_NAME}_INCLUDE_DIRS \"\${SELF_DIR}/../../include\" ABSOLUTE )"
116-
"\nSET( ${FIELDML_NAMESPACE_NAME}_INCLUDE_DIRS \"\${${FIELDML_NAMESPACE_NAME}_INCLUDE_DIRS}\" \"${LIBXML2_INCLUDE_DIR}\" \"${HDF5_INCLUDE_DIR}\" )"
117-
"\nSET( ${FIELDML_NAMESPACE_NAME}_LIBRARIES ${FIELDML_API_LIBRARY_TARGET_NAME} ${FIELDML_IO_API_LIBRARY_TARGET_NAME} )"
125+
"\nSET( ${FIELDML_NAMESPACE_NAME}_INCLUDE_DIRS \"\${${FIELDML_NAMESPACE_NAME}_INCLUDE_DIRS}\" \"${LIBXML2_INCLUDE_DIR}\" \"${HDF5_INCLUDE_DIRS}\" \"${MPI_INCLUDE_DIRS}\" )"
126+
"\nSET( ${FIELDML_NAMESPACE_NAME}_LIBRARIES ${FIELDML_API_LIBRARY_TARGET_NAME} ${FIELDML_IO_API_LIBRARY_TARGET_NAME} ${HDF5_MINE_LIBRARIES} ${MPI_MINE_LIBRARIES})"
118127
"\nSET( ${FIELDML_NAMESPACE_NAME}_DEFINITIONS )"
119128
"\nSET( ${FIELDML_NAMESPACE_NAME}_FOUND TRUE )"
120129
"\nENDIF( NOT DEFINED _${FIELDML_NAMESPACE_NAME}_CONFIG_CMAKE )"

io/CMakeLists.txt

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,21 @@
3838
PROJECT( io )
3939

4040
OPTION_WITH_DEFAULT( FIELDML_USE_HDF5 "Do you want to use netgen?" FALSE )
41-
41+
SET( HDF5_USE_MPI FALSE )
42+
SET( HDF5_INCLUDE_DIRS "" )
43+
SET( HDF5_MINE_LIBRARIES "" )
44+
SET( MPI_INCLUDE_DIRS "" )
45+
SET( MPI_MINE_LIBRARIES "" )
46+
4247
IF( FIELDML_USE_HDF5 )
43-
FIND_PATH(HDF5_INCLUDE_DIR hdf5.h
44-
NO_DEFAULT_PATH
45-
)
46-
FIND_LIBRARY(HDF5_LIBRARY NAMES hdf5
47-
NO_DEFAULT_PATH
48-
)
49-
MARK_AS_ADVANCED(HDF5_INCLUDE_DIR)
50-
MARK_AS_ADVANCED(HDF5_LIBRARY)
48+
FIND_PACKAGE( HDF5 REQUIRED C )
49+
SET( HDF5_USE_MPI ${HDF5_ENABLE_PARALLEL} )
50+
IF ( HDF5_USE_MPI )
51+
FIND_PACKAGE( MPI REQUIRED )
52+
ENDIF (HDF5_USE_MPI)
5153
ADD_DEFINITIONS( -DFIELDML_HDF5_ARRAY )
52-
SET( HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIR} )
53-
SET( HDF5_LIBRARIES ${HDF5_LIBRARY} )
54-
SET( CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${IELDML_HDF5_ARRAY_DEFINE} )
55-
SET( CMAKE ${CMAKE_C_FLAGS} ${IELDML_HDF5_ARRAY_DEFINE} )
56-
SET( DEPENDENT_LIBS ${DEPENDENT_LIBS} ${HDF5_LIBRARIES} )
57-
SET( INCLUDE_DIRS ${INCLUDE_DIRS} ${HDF5_INCLUDE_DIRS} )
54+
SET( CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${FIELDML_HDF5_ARRAY_DEFINE} )
55+
SET( CMAKE ${CMAKE_C_FLAGS} ${FIELDML_HDF5_ARRAY_DEFINE} )
5856
ENDIF( FIELDML_USE_HDF5 )
5957

6058
IF( ${FIELDML_NAMESPACE_NAME}_BUILD_STATIC_LIB )
@@ -68,6 +66,30 @@ ELSE( ${FIELDML_NAMESPACE_NAME}_BUILD_STATIC_LIB )
6866
ENDIF( WIN32 )
6967
ENDIF( ${FIELDML_NAMESPACE_NAME}_BUILD_STATIC_LIB )
7068

69+
IF( FIELDML_USE_HDF5 )
70+
IF( HDF5_FOUND )
71+
SET( HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIR} )
72+
SET( HDF5_MINE_LIBRARIES ${HDF5_LIBRARIES} )
73+
SET( DEPENDENT_LIBS ${DEPENDENT_LIBS} ${HDF5_MINE_LIBRARIES} )
74+
SET( INCLUDE_DIRS ${INCLUDE_DIRS} ${HDF5_INCLUDE_DIRS} )
75+
IF( HDF5_USE_MPI )
76+
IF( MPI_FOUND )
77+
SET( MPI_INCLUDE_DIRS ${MPI_INCLUDE_PATH} )
78+
SET( MPI_MINE_LIBRARIES ${MPI_LIBRARIES} )
79+
SET( DEPENDENT_LIBS ${DEPENDENT_LIBS} ${MPI_MINE_LIBRARIES} )
80+
SET( INCLUDE_DIRS ${INCLUDE_DIRS} ${MPI_INCLUDE_DIRS} )
81+
ELSE( MPI_FOUND )
82+
MESSAGE( FATAL_ERROR "MPI was requested but not found." )
83+
ENDIF( MPI_FOUND )
84+
ADD_DEFINITIONS( -DFIELDML_PHDF5_ARRAY )
85+
SET( CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${FIELDML_PHDF5_ARRAY_DEFINE} )
86+
SET( CMAKE ${CMAKE_C_FLAGS} ${FIELDML_PHDF5_ARRAY_DEFINE} )
87+
ENDIF( HDF5_USE_MPI )
88+
ELSE( HDF5_FOUND )
89+
MESSAGE( FATAL_ERROR "HDF5 was requested but not found." )
90+
ENDIF( HDF5_FOUND )
91+
ENDIF( FIELDML_USE_HDF5 )
92+
7193
SET( CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX} )
7294
FIND_PACKAGE( LibXml2 REQUIRED )
7395

@@ -112,11 +134,11 @@ ENDIF( "${CMAKE_BUILD_TYPE}" STREQUAL "Debug" )
112134
IF( WIN32 )
113135
ADD_DEFINITIONS( -D_CRT_SECURE_NO_WARNINGS )
114136
ENDIF( WIN32 )
115-
INCLUDE_DIRECTORIES( ${FIELDML_API_PUBLIC_HDRS} ${HDF5_INCLUDE_DIR} )
137+
INCLUDE_DIRECTORIES( ${FIELDML_API_PUBLIC_HDRS} ${HDF5_INCLUDE_DIRS} ${MPI_INCLUDE_DIRS} )
116138

117139
# Create library
118140
ADD_LIBRARY( ${LIBRARY_TARGET_NAME} ${LIBRARY_BUILD_TYPE} ${FIELDML_IO_API_SRCS} ${FIELDML_IO_API_PUBLIC_HDRS} ${FIELDML_IO_API_PRIVATE_HDRS} ${LIBRARY_WIN32_XTRAS} )
119-
TARGET_LINK_LIBRARIES( ${LIBRARY_TARGET_NAME} ${HDF5_LIBRARY} )
141+
TARGET_LINK_LIBRARIES( ${LIBRARY_TARGET_NAME} ${HDF5_MINE_LIBRARIES} ${MPI_MINE_LIBRARIES} )
120142

121143
# Install targets
122144
IF( WIN32 AND NOT ${UPPERCASE_LIBRARY_TARGET_NAME}_BUILD_STATIC_LIB )

io/src/Hdf5ArrayDataReader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ Hdf5ArrayDataReader *Hdf5ArrayDataReader::create( FieldmlIoContext *context, con
8080
hid_t accessProperties = H5Pcreate( H5P_FILE_ACCESS );
8181
if( H5Pset_fapl_mpio( accessProperties, MPI_COMM_WORLD, MPI_INFO_NULL ) >= 0 )
8282
{
83-
Hdf5ArrayDataReader *hdf5reader = new Hdf5ArrayDataReader( _session, root, source, accessProperties );
83+
Hdf5ArrayDataReader *hdf5reader = new Hdf5ArrayDataReader( context, root, source, accessProperties );
8484
if( !hdf5reader->ok )
8585
{
8686
delete hdf5reader;

test/CMakeLists.txt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ FIND_PACKAGE( ZLIB QUIET )
4141
SET( TEST_EXE_SRCS src/fieldml_test.cpp )
4242
SET( TEST_EXE_TARGET_NAME fieldml_test )
4343

44+
IF ( HDF5_USE_MPI )
45+
SET( TEST_PHDF5_EXE_SRCS src/fieldml_phdf5_test.cpp )
46+
SET( TEST_PHDF5_EXE_TARGET_NAME fieldml_phdf5_test )
47+
ENDIF (HDF5_USE_MPI)
48+
4449
SET( SIMPLE_TEST_SRCS src/SimpleTest.cpp )
4550
SET( SIMPLE_TEST_HDRS src )
4651

@@ -53,6 +58,7 @@ SET( TEST_CREATE_EXE_TARGET_NAME fieldml_test_create )
5358
SET( FIELDML_API_PUBLIC_HDRS ../core/src )
5459
SET( FIELDML_IO_API_PUBLIC_HDRS ../io/src )
5560
SET( INPUT_RESOURCES input/I16BE.h5 )
61+
SET( OUTPUT_RESOURCES output/visualisation.cmiss )
5662

5763
IF( ${UPPERCASE_LIBRARY_TARGET_NAME}_BUILD_TEST )
5864
OPTION_WITH_DEFAULT( BUILD_TEST_WITH_SZLIB "Build test application with SZLIB" FALSE )
@@ -67,9 +73,12 @@ IF( ${UPPERCASE_LIBRARY_TARGET_NAME}_BUILD_TEST )
6773
SET( SZIP_LIBRARY ${SZIP_LIBRARY} )
6874
ENDIF( BUILD_TEST_WITH_SZLIB )
6975

70-
INCLUDE_DIRECTORIES( ${FIELDML_API_PUBLIC_HDRS} ${FIELDML_IO_API_PUBLIC_HDRS} ${SIMPLE_TEST_HDRS})
76+
INCLUDE_DIRECTORIES( ${FIELDML_API_PUBLIC_HDRS} ${FIELDML_IO_API_PUBLIC_HDRS} ${SIMPLE_TEST_HDRS} ${MPI_INCLUDE_DIRS} )
7177

7278
ADD_EXECUTABLE( ${TEST_EXE_TARGET_NAME} ${TEST_EXE_SRCS} )
79+
IF ( HDF5_USE_MPI )
80+
ADD_EXECUTABLE( ${TEST_PHDF5_EXE_TARGET_NAME} ${TEST_PHDF5_EXE_SRCS} )
81+
ENDIF ( HDF5_USE_MPI )
7382
IF( WIN32 )
7483
ADD_EXECUTABLE( ${TEST_ARRAY_READING_EXE_TARGET_NAME} ${SIMPLE_TEST_SRCS} ${TEST_ARRAY_READING_EXE_SRCS} )
7584
ADD_EXECUTABLE( ${TEST_CREATE_EXE_TARGET_NAME} ${SIMPLE_TEST_SRCS} ${TEST_CREATE_EXE_SRCS} )
@@ -78,19 +87,28 @@ IF( ${UPPERCASE_LIBRARY_TARGET_NAME}_BUILD_TEST )
7887
ADD_EXECUTABLE( ${TEST_CREATE_EXE_TARGET_NAME} ${TEST_CREATE_EXE_SRCS} ${SIMPLE_TEST_SRCS} )
7988
ENDIF( WIN32 )
8089
TARGET_LINK_LIBRARIES( ${TEST_EXE_TARGET_NAME} ${FIELDML_API_LIBRARY_TARGET_NAME} ${FIELDML_IO_API_LIBRARY_TARGET_NAME} ${LIBXML2_LIBRARIES} ${ZLIB_LIBRARIES} ${HDF5_LIBRARY} ${SZIP_LIBRARY} )
90+
IF ( HDF5_USE_MPI )
91+
TARGET_LINK_LIBRARIES( ${TEST_PHDF5_EXE_TARGET_NAME} ${FIELDML_API_LIBRARY_TARGET_NAME} ${FIELDML_IO_API_LIBRARY_TARGET_NAME} ${LIBXML2_LIBRARIES} ${ZLIB_LIBRARIES} ${HDF5_LIBRARY} ${SZIP_LIBRARY} )
92+
ENDIF ( HDF5_USE_MPI )
8193
TARGET_LINK_LIBRARIES( ${TEST_ARRAY_READING_EXE_TARGET_NAME} ${FIELDML_API_LIBRARY_TARGET_NAME} ${FIELDML_IO_API_LIBRARY_TARGET_NAME} ${LIBXML2_LIBRARIES} ${ZLIB_LIBRARIES} ${HDF5_LIBRARY} ${SZIP_LIBRARY} )
8294
TARGET_LINK_LIBRARIES( ${TEST_CREATE_EXE_TARGET_NAME} ${FIELDML_API_LIBRARY_TARGET_NAME} ${FIELDML_IO_API_LIBRARY_TARGET_NAME} ${LIBXML2_LIBRARIES} ${ZLIB_LIBRARIES} ${HDF5_LIBRARY} ${SZIP_LIBRARY} )
8395

8496
INSTALL( TARGETS ${TEST_EXE_TARGET_NAME} EXPORT fieldml-targets
8597
${LIBRARY_INSTALL_TYPE}
8698
DESTINATION test )
99+
IF ( HDF5_USE_MPI )
100+
INSTALL( TARGETS ${TEST_PHDF5_EXE_TARGET_NAME} EXPORT fieldml-targets
101+
${LIBRARY_INSTALL_TYPE}
102+
DESTINATION test )
103+
ENDIF ( HDF5_USE_MPI )
87104
INSTALL( TARGETS ${TEST_ARRAY_READING_EXE_TARGET_NAME} EXPORT fieldml-targets ${LIBRARY_INSTALL_TYPE}
88105
DESTINATION test )
89106
INSTALL( TARGETS ${TEST_CREATE_EXE_TARGET_NAME} EXPORT fieldml-targets ${LIBRARY_INSTALL_TYPE}
90107
DESTINATION test )
91108

92109

93110
INSTALL( FILES ${INPUT_RESOURCES} DESTINATION test/input )
111+
INSTALL( FILES ${OUTPUT_RESOURCES} DESTINATION test/output )
94112

95113

96114
ENDIF( ${UPPERCASE_LIBRARY_TARGET_NAME}_BUILD_TEST )

test/output/visualisation.cmiss

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
gfx create region activation;
2+
gfx read region ../phdf5_test.xml region activation;
3+
gfx define face egroup activation;
4+
5+
# Create some graphics
6+
7+
8+
gfx modify g_element activation lines coordinate cube.geometric.parameters select_on invisible material default selected_material default_selected;
9+
gfx modify g_element activation surfaces coordinate cube.geometric.parameters select_on invisible material default data cube.activationTime.source spectrum default selected_material default_selected render_shaded;
10+
11+
gfx timekeeper default maximum 40 speed 5
12+
gfx define field activation/time time_value
13+
gfx define field activation/propagation add fields time cube.activationTime.source scale_factors 1 -1;
14+
gfx modify g_element /activation/ iso_surfaces coordinate cube.geometric.parameters tessellation default LOCAL iso_scalar propagation iso_values 0 use_elements select_on material default data cube.activationTime.source spectrum default selected_material default_selected render_shaded;
15+
gfx modify spectrum default clear overwrite_colour;
16+
gfx modify spectrum default linear reverse range -4.44089e-16 40 extend_above extend_below rainbow colour_range 0 1 component 1;
17+
18+
19+
gfx create window 1;
20+
gfx modify window 1 view parallel eye_point 107.251 60.8674 123.396 interest_point 20 20 20 up_vector -0.729654 -0.137133 0.669925 view_angle 40 near_clipping_plane 1.41328 far_clipping_plane 505.059 relative_viewport ndc_placement -1 1 2 2 viewport_coordinates 0 0 1 1;
21+
gfx timekeeper default play;

0 commit comments

Comments
 (0)