Skip to content

Commit

Permalink
Merge branch 'main' into red_blood_cells/merge - a difficult merge!
Browse files Browse the repository at this point in the history
Notable things:
- Adopted CMake from main branch

- Adopted main's dependency handling, including addubg for VTK and HDF

- Made use of the RBC controlled by a top-level CMake var
  (HEMELB_BUILD_RBC default OFF)

- Isolated all RBC code and libraries within that library as far as
  possible

- Added basic error handling for VTK code

- Got most unit tests passing and all executing without crash (some
  are failing)

- Removed HEMELB_LATTICE type aliases from Distribution output/input
  to deal with new LB Traits class
  • Loading branch information
rupertnash committed Nov 17, 2020
2 parents f85dac8 + 470f184 commit 247fe53
Show file tree
Hide file tree
Showing 992 changed files with 21,403 additions and 17,521 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ Tools/hemeTools/parsers/geometry/BaseSite.h
Tools/hemeTools/parsers/geometry/BaseSite.so
Tools/hemeTools/utils/xdr.c
Tools/hemeTools/utils/xdr.so
revision_info.txt
hemelb-prefix/src/hemelb-stamp/hemelb-urlinfo.txt
.*.sw[p, o, n]
tags
Expand Down
29 changes: 29 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
This file lists the contributors to HemeLB. If their contributions are
owned by their institution(s), this is listed in parentheses after
their name. The details of authorship can be viewed in the git log.

UCL = University College London, UK
UoE = The University of Edinburgh, UK
BUL = Brunel University London, UK

James Hetherington (UCL)
Hywel Carver (UCL)
Rupert Nash (UCL, UoE)
Miguel O. Bernabeu (UCL, UoE)
Marco Mazzeo (UCL)
Steven Manos (UCL)
Derek Groen (UCL, BUL)
David Scott (UoE)
Nick Westlake (UCL)
Daniel Holmes (UoE)
Stefan Zasada (UCL)
Jens H. Nielsen (UCL)
Mayeul d'Avezac (UCL)
Wojciech Kozlowski (UCL)
Robert Haines (University of Manchester)
Jiri Jaros (UCL)
Gary Doctors (UCL)
Robin Richardson (UCL)
Mohamed Itani (UCL)
Sebastian Schmieschek (UCL)
David Abou Chacra
128 changes: 27 additions & 101 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,113 +1,39 @@
cmake_minimum_required (VERSION 3.1)
# This file is part of HemeLB and is Copyright (C)
# the HemeLB team and/or their institutions, as detailed in the
# file AUTHORS. This software is provided under the terms of the
# license in the file LICENSE.

cmake_minimum_required (VERSION 3.10)

Project(HemeLBMaster)
include(ExternalProject)

#------- Conditional compile options ----------
include(ExternalProject)

OPTION(TIXML_USE_STL "Use STL with TIXML" ON)
if(TIXML_USE_STL)
add_definitions(-DTIXML_USE_STL)
endif(TIXML_USE_STL)
set(HEMELB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR})

option(HEMELB_USE_DEBUGGER "Use built in hemelb debugger" OFF)
option(HEMELB_VALIDATE_GEOMETRY "Validate geometry" OFF)
set(HEMELB_READING_GROUP_SIZE 5
CACHE INTEGER "Number of cores to use to read geometry file.")
set(HEMELB_LOG_LEVEL Info
CACHE STRING "Log level, choose 'Critical', 'Error', 'Warning', 'Info', 'Debug' or 'Trace'" )
set_property(CACHE HEMELB_LOG_LEVEL PROPERTY STRINGS Critical Error Warning Info Debug Trace)
set(HEMELB_STEERING_LIB basic
CACHE STRING "Steering library, choose 'basic' or 'none'" )
set_property(CACHE HEMELB_STEERING_LIB PROPERTY STRINGS basic none)
option(HEMELB_USE_MULTIMACHINE "Use multi-level parallelism support" OFF)
option(HEMELB_BUILD_UNITTESTS "Build the unit-tests" ON)
option(HEMELB_USE_STREAKLINES "Calculate streakline images" OFF)
option(HEMELB_USE_ALL_WARNINGS_GNU "Show all compiler warnings on development builds (gnu-style-compilers)" ON)
option(HEMELB_STATIC_ASSERT "Use simple compile-time assertions" ON)
set(HEMELB_OPTIMISATION "-O4" CACHE STRING "Optimisation level (can be blank or -O1 to -O4)")
option(HEMELB_BUILD_MULTISCALE "Build HemeLB Multiscale functionality" OFF)
set(HEMELB_LATTICE "D3Q15"
CACHE STRING "Select the lattice type to use (D3Q15,D3Q19,D3Q27)")
set(HEMELB_KERNEL "LBGK"
CACHE STRING
"Select the kernel to use
(LBGK,EntropicAnsumali,EntropicChik,MRT,NNCY,NNCYMOUSE,NNC,NNTPL,GuoForcingLBGK)")
set_property(CACHE HEMELB_KERNEL PROPERTY STRINGS
LBGK EntropicAnsumali EntropicChik MRT NNCY NNCYMOUSE NNC NNTPL GuoForcingLBGK)
set(HEMELB_WALL_BOUNDARY "SIMPLEBOUNCEBACK"
CACHE STRING "Select the boundary conditions to be used at the walls (BFL,GZS,SIMPLEBOUNCEBACK,JUNKYANG)")
set(HEMELB_INLET_BOUNDARY "NASHZEROTHORDERPRESSUREIOLET"
CACHE STRING "Select the boundary conditions to be used at the inlet (NASHZEROTHORDERPRESSUREIOLET,LADDIOLET)")
set(HEMELB_OUTLET_BOUNDARY "NASHZEROTHORDERPRESSUREIOLET"
CACHE STRING "Select the boundary conditions to be used at the outlets (NASHZEROTHORDERPRESSUREIOLET,LADDIOLET)")
set(HEMELB_WALL_INLET_BOUNDARY "NASHZEROTHORDERPRESSURESBB"
CACHE STRING "Select the boundary conditions to be used at corners between walls and inlets (NASHZEROTHORDERPRESSURESBB,NASHZEROTHORDERPRESSUREBFL,LADDIOLETSBB,LADDIOLETBFL)")
set(HEMELB_WALL_OUTLET_BOUNDARY "NASHZEROTHORDERPRESSURESBB"
CACHE STRING "Select the boundary conditions to be used at corners between walls and outlets (NASHZEROTHORDERPRESSURESBB,NASHZEROTHORDERPRESSUREBFL,LADDIOLETSBB,LADDIOLETBFL)")
set(HEMELB_STEERING_HOST "CCS" CACHE STRING "Use a default host suffix for steering? (CCS, NGS2Leeds, NGS2Manchester, LONI, NCSA or blank)")
option(HEMELB_DEPENDENCIES_SET_RPATH "Set runtime RPATH" ON)
set(HEMELB_SUBPROJECT_MAKE_JOBS 1 CACHE INTEGER "Number of jobs to use for subproject build steps")
option(HEMELB_WAIT_ON_CONNECT "Wait for steering client" OFF)
option(HEMELB_IMAGES_TO_NULL "Write images to null" OFF)
option(HEMELB_USE_SSE3 "Use SSE3 intrinsics" OFF)
set(HEMELB_COMPUTE_ARCHITECTURE "AMDBULLDOZER"
CACHE STRING "Select the architecture of the machine being used (INTELSANDYBRIDGE,AMDBULLDOZER,NEUTRAL,ISBFILEVELOCITYINLET)")
option(HEMELB_USE_VELOCITY_WEIGHTS_FILE "Use Velocity weights file" OFF)
# Include the options for the main code
include("Code/cmake/options.cmake")
# and create a list of them to pass to the main configure step
hemelb_pass_cmake_defines(HEMELB_CODE_CMAKE_DEFINES)

#------- Dependencies -----------

add_subdirectory(dependencies)

# ------ HemeLB ------------------
message("${PROJECT_SOURCE_DIR}/Code")

ExternalProject_Add(
hemelb
DOWNLOAD_COMMAND ""
SOURCE_DIR "${PROJECT_SOURCE_DIR}/Code"
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
-DHEMELB_DEPENDENCIES_PATH=${CMAKE_CURRENT_SOURCE_DIR}/dependencies
-DHEMELB_DEPENDENCIES_INSTALL_PATH=${HEMELB_DEPENDENCIES_INSTALL_PATH}
-DTIXML_USE_STL=${TIXML_USE_STL}
-DHEMELB_USE_DEBUGGER=${HEMELB_USE_DEBUGGER}
-DHEMELB_VALIDATE_GEOMETRY=${HEMELB_VALIDATE_GEOMETRY}
-DHEMELB_LOG_LEVEL=${HEMELB_LOG_LEVEL}
-DHEMELB_STEERING_LIB=${HEMELB_STEERING_LIB}
-DHEMELB_USE_MULTIMACHINE=${HEMELB_USE_MULTIMACHINE}
-DHEMELB_BUILD_UNITTESTS=${HEMELB_BUILD_UNITTESTS}
-DHEMELB_USE_STREAKLINES=${HEMELB_USE_STREAKLINES}
-DHEMELB_OPTIMISATION=${HEMELB_OPTIMISATION}
-DHEMELB_READING_GROUP_SIZE=${HEMELB_READING_GROUP_SIZE}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DMPI_C_COMPILER=${MPI_C_COMPILER}
-DMPI_CXX_COMPILER=${MPI_CXX_COMPILER}
-DMPI_C_NO_INTERROGATE=${MPI_C_NO_INTERROGATE}
-DMPI_CXX_NO_INTERROGATE=${MPI_CXX_NO_INTERROGATE}
-DHEMELB_USE_ALL_WARNINGS_GNU=${HEMELB_USE_ALL_WARNINGS_GNU}
-DHEMELB_STEERING_HOST=${HEMELB_STEERING_HOST}
-DCTEMPLATE_USE_STATIC=${CTEMPLATE_USE_STATIC}
-DCPPUNIT_USE_STATIC=${CPPUNIT_USE_STATIC}
-DHEMELB_DEPENDENCIES_SET_RPATH=${HEMELB_DEPENDENCIES_SET_RPATH}
-DHEMELB_STATIC_ASSERT=${HEMELB_STATIC_ASSERT}
-DHEMELB_LATTICE=${HEMELB_LATTICE}
-DHEMELB_KERNEL=${HEMELB_KERNEL}
-DHEMELB_WALL_BOUNDARY=${HEMELB_WALL_BOUNDARY}
-DHEMELB_INLET_BOUNDARY=${HEMELB_INLET_BOUNDARY}
-DHEMELB_OUTLET_BOUNDARY=${HEMELB_OUTLET_BOUNDARY}
-DHEMELB_WALL_INLET_BOUNDARY=${HEMELB_WALL_INLET_BOUNDARY}
-DHEMELB_WALL_OUTLET_BOUNDARY=${HEMELB_WALL_OUTLET_BOUNDARY}
-DHEMELB_WAIT_ON_CONNECT=${HEMELB_WAIT_ON_CONNECT}
-DHEMELB_BUILD_MULTISCALE=${HEMELB_BUILD_MULTISCALE}
-DHEMELB_IMAGES_TO_NULL=${HEMELB_IMAGES_TO_NULL}
-DHEMELB_USE_SSE3=${HEMELB_USE_SSE3}
-DHEMELB_COMPUTE_ARCHITECTURE=${HEMELB_COMPUTE_ARCHITECTURE}
-DHEMELB_USE_VELOCITY_WEIGHTS_FILE=${HEMELB_USE_VELOCITY_WEIGHTS_FILE}
BUILD_COMMAND make -j${HEMELB_SUBPROJECT_MAKE_JOBS}
)
hemelb
SOURCE_DIR ${PROJECT_SOURCE_DIR}/Code
CONFIGURE_COMMAND "${CMAKE_COMMAND};${PROJECT_SOURCE_DIR}/Code;${HEMELB_CODE_CMAKE_DEFINES}"
BUILD_COMMAND make -j${HEMELB_SUBPROJECT_MAKE_JOBS}
)

# These are handled in dependencies/CMakeLists.txt and needed here
# to ensure they are build in correct order.

foreach(dep cppunit parmetis tinyxml boost ctemplate zlib mpwide cookoff hdf5 vtk)
if(TARGET ${dep})
add_dependencies(hemelb ${dep})
endif()
endforeach()
add_dependencies(hemelb parmetis tinyxml boost catch2 ctemplate zlib)
if(HEMELB_BUILD_MULTISCALE)
add_dependencies(hemelb MPWide)
endif()
Loading

0 comments on commit 247fe53

Please sign in to comment.