Commit 78c6ba70 authored by Dave Moxey's avatar Dave Moxey

Remove old utilities, refactor executable macros

parent 36f56dde
MACRO(CHANGE_EXTENSION output var new_ext)
GET_FILENAME_COMPONENT(FileName ${var} NAME_WE)
GET_FILENAME_COMPONENT(Path ${var} PATH)
SET(${output} ${Path}/${FileName}.${new_ext})
MACRO(CONSTRUCT_DEBIAN_DEPS depends outvar)
SET(${outvar} "")
FOREACH (pkg ${depends})
STRING(TOLOWER ${pkg} pkg_lower)
SET(${outvar} "${DEB_DEPS}, nektar++-${pkg_lower} (>= ${NEKTAR_VERSION})")
ENDFOREACH()
# Remove starting ", "
STRING(SUBSTRING ${${outvar}} 2 -1 ${outvar})
ENDMACRO()
MACRO(FINALISE_CPACK_COMPONENT name)
CMAKE_PARSE_ARGUMENTS(COMP "" "DESCRIPTION" "" ${ARGN})
SET(CPACK_COMPONENT_${name}_DISPLAY_NAME nektar++-${name})
SET(CPACK_COMPONENT_${name}_DESCRIPTION ${COMP_DESCRIPTION})
LIST(REMOVE_DUPLICATES "CPACK_COMPONENT_${name}_DEPENDS")
CONSTRUCT_DEBIAN_DEPS(${CPACK_COMPONENT_${name}_DEPENDS} "CPACK_DEBIAN_${name}_DEPENDS")
ENDMACRO()
MACRO(SET_COMMON_PROPERTIES name)
SET_TARGET_PROPERTIES(${name} PROPERTIES DEBUG_POSTFIX -g)
SET_TARGET_PROPERTIES(${name} PROPERTIES MINSIZEREL_POSTFIX -ms)
......@@ -18,8 +31,8 @@ MACRO(SET_COMMON_PROPERTIES name)
# warning)" warning (4800)
# 4250 - Inheritance via dominance. Nektar appears to be handling the
# diamond correctly.
# 4373 - Overriding a virtual method with parameters that differ by const
# or volatile conforms to the standard.
# 4373 - Overriding a virtual method with parameters that differ by const
# or volatile conforms to the standard.
# /Za is necessary to prevent temporaries being bound to reference
# parameters.
SET_TARGET_PROPERTIES(${name} PROPERTIES COMPILE_FLAGS
......@@ -30,10 +43,10 @@ MACRO(SET_COMMON_PROPERTIES name)
ENDIF( MSVC )
IF( ${CMAKE_COMPILER_IS_GNUCXX} )
IF(NEKTAR_ENABLE_PROFILE)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -pg")
IF(NEKTAR_ENABLE_PROFILE)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -pg")
SET(LINK_FLAGS "${LINK_FLAGS} -pg")
ENDIF(NEKTAR_ENABLE_PROFILE)
ENDIF( ${CMAKE_COMPILER_IS_GNUCXX} )
......@@ -76,33 +89,12 @@ MACRO(SET_COMMON_PROPERTIES name)
ENDIF( CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" )
ENDMACRO(SET_COMMON_PROPERTIES name)
MACRO(SETUP_PRECOMPILED_HEADERS sourceFiles precompiledHeader)
IF( NEKTAR_USE_PRECOMPILED_HEADERS )
IF( MSVC )
# /Yu"stdafx.h"
#MESSAGE(${${precompiledHeader}})
#MESSAGE(${${sourceFiles}})
SET_SOURCE_FILES_PROPERTIES(${${sourceFiles}}
PROPERTIES COMPILE_FLAGS "/Yu\"${${precompiledHeader}}\"")
LIST(GET ${sourceFiles} 0 OUTVAR)
#MESSAGE(${OUTVAR})
SET_SOURCE_FILES_PROPERTIES(${OUTVAR}
PROPERTIES COMPILE_FLAGS "/Yc\"${${precompiledHeader}}\"")
ENDIF()
ENDIF()
ENDMACRO()
MACRO(ADD_NEKTAR_EXECUTABLE name component sources)
IF( ${ARGC} LESS 4 )
ADD_EXECUTABLE(${name} ${${sources}})
ELSE( ${ARGC} LESS 4 )
ADD_EXECUTABLE(${name} ${${sources}} ${${ARGV3}})
ENDIF( ${ARGC} LESS 4)
MACRO(ADD_NEKTAR_EXECUTABLE name)
CMAKE_PARSE_ARGUMENTS(NEKEXE "" "COMPONENT" "DEPENDS;SOURCES" ${ARGN})
ADD_EXECUTABLE(${name} ${NEKEXE_SOURCES})
SET_COMMON_PROPERTIES(${name})
IF( ${CMAKE_SYSTEM} MATCHES "Linux.*" )
IF (${CMAKE_SYSTEM} MATCHES "Linux.*")
# The boost thread library needs pthread on linux.
GET_TARGET_PROPERTY(THE_COMPILE_FLAGS ${name} COMPILE_FLAGS)
GET_TARGET_PROPERTY(THE_LINK_FLAGS ${name} LINK_FLAGS)
......@@ -113,47 +105,54 @@ MACRO(ADD_NEKTAR_EXECUTABLE name component sources)
ENDIF(NOT THE_COMPILE_FLAGS)
IF(NOT THE_LINK_FLAGS )
SET(THE_LINK_FLAGS "")
SET(THE_LINK_FLAGS "")
ENDIF(NOT THE_LINK_FLAGS)
SET_TARGET_PROPERTIES(${name}
SET_TARGET_PROPERTIES(${name}
PROPERTIES COMPILE_FLAGS "${THE_COMPILE_FLAGS} -pthread")
SET_TARGET_PROPERTIES(${name}
SET_TARGET_PROPERTIES(${name}
PROPERTIES LINK_FLAGS "${THE_LINK_FLAGS} -pthread")
ENDIF( ${CMAKE_SYSTEM} MATCHES "Linux.*" )
SET_PROPERTY(TARGET ${name} PROPERTY FOLDER ${component})
INSTALL(TARGETS ${name}
RUNTIME DESTINATION ${NEKTAR_BIN_DIR} COMPONENT ${component} OPTIONAL
ARCHIVE DESTINATION ${NEKTAR_LIB_DIR} COMPONENT ${component} OPTIONAL
LIBRARY DESTINATION ${NEKTAR_LIB_DIR} COMPONENT ${component} OPTIONAL)
ENDIF()
ENDMACRO(ADD_NEKTAR_EXECUTABLE name component sources)
SET_PROPERTY(TARGET ${name} PROPERTY FOLDER ${NEKEXE_COMPONENT})
INSTALL(TARGETS ${name}
RUNTIME DESTINATION ${NEKTAR_BIN_DIR} COMPONENT ${NEKEXE_COMPONENT} OPTIONAL
ARCHIVE DESTINATION ${NEKTAR_LIB_DIR} COMPONENT ${NEKEXE_COMPONENT} OPTIONAL
LIBRARY DESTINATION ${NEKTAR_LIB_DIR} COMPONENT ${NEKEXE_COMPONENT} OPTIONAL)
# Add dependencies for executable. We append the dependencies to the CPack
# component list so that we can resolve these later.
TARGET_LINK_LIBRARIES(${name} LINK_PUBLIC ${NEKEXE_DEPENDS})
FOREACH(dep ${NEKEXE_DEPENDS})
LIST(APPEND CPACK_COMPONENT_${NEKEXE_COMPONENT}_DEPENDS ${dep})
ENDFOREACH()
ENDMACRO()
FUNCTION(ADD_NEKTAR_LIBRARY)
CMAKE_PARSE_ARGUMENTS(NEKLIB "" "NAME;DESCRIPTION" "DEPENDS;SOURCES;HEADERS" ${ARGN})
MACRO(ADD_NEKTAR_LIBRARY name)
CMAKE_PARSE_ARGUMENTS(NEKLIB "" "DESCRIPTION;GROUP" "DEPENDS;SOURCES;HEADERS" ${ARGN})
ADD_LIBRARY(${NEKLIB_NAME} ${NEKTAR_LIBRARY_TYPE} ${NEKLIB_SOURCES} ${NEKLIB_HEADERS})
ADD_LIBRARY(${name} ${NEKTAR_LIBRARY_TYPE} ${NEKLIB_SOURCES} ${NEKLIB_HEADERS})
# Infer component name from lower-case library name
STRING(TOLOWER ${NEKLIB_NAME} NEKLIB_COMPONENT)
STRING(TOLOWER ${name} NEKLIB_COMPONENT)
SET_PROPERTY(TARGET ${NEKLIB_NAME} PROPERTY FOLDER ${NEKLIB_COMPONENT})
SET_PROPERTY(TARGET ${NEKLIB_NAME} PROPERTY VERSION ${NEKTAR_VERSION})
SET_PROPERTY(TARGET ${name} PROPERTY FOLDER ${NEKLIB_COMPONENT})
SET_PROPERTY(TARGET ${name} PROPERTY VERSION ${NEKTAR_VERSION})
SET_COMMON_PROPERTIES(${NEKLIB_NAME})
SET_COMMON_PROPERTIES(${name})
INSTALL(TARGETS ${NEKLIB_NAME}
INSTALL(TARGETS ${name}
EXPORT Nektar++Libraries
RUNTIME DESTINATION ${NEKTAR_BIN_DIR} COMPONENT ${NEKLIB_COMPONENT} OPTIONAL
ARCHIVE DESTINATION ${NEKTAR_LIB_DIR} COMPONENT ${NEKLIB_COMPONENT} OPTIONAL
LIBRARY DESTINATION ${NEKTAR_LIB_DIR} COMPONENT ${NEKLIB_COMPONENT} OPTIONAL)
RUNTIME DESTINATION ${NEKTAR_BIN_DIR} COMPONENT ${NEKLIB_COMPONENT} OPTIONAL
ARCHIVE DESTINATION ${NEKTAR_LIB_DIR} COMPONENT ${NEKLIB_COMPONENT} OPTIONAL
LIBRARY DESTINATION ${NEKTAR_LIB_DIR} COMPONENT ${NEKLIB_COMPONENT} OPTIONAL)
FOREACH(HEADER ${NEKLIB_HEADERS})
STRING(REGEX MATCH "(.*)[/\\]" DIR ${HEADER})
INSTALL(FILES ${HEADER} DESTINATION ${NEKTAR_INCLUDE_DIR}/${NEKLIB_NAME}/${DIR})
ENDFOREACH(HEADER HEADERS)
INSTALL(FILES ${HEADER}
DESTINATION ${NEKTAR_INCLUDE_DIR}/${name}/${DIR}
COMPONENT dev)
ENDFOREACH()
# Add CPack information
SET(CPACK_COMPONENT_${NEKLIB_COMPONENT}_DISPLAY_NAME nektar++-${NEKLIB_COMPONENT})
......@@ -161,24 +160,14 @@ FUNCTION(ADD_NEKTAR_LIBRARY)
SET(CPACK_COMPONENT_${NEKLIB_COMPONENT}_DESCRIPTION ${NEKLIB_DESCRIPTION})
# If we have dependencies then link against them, and also configure CPack
# Debian dependencies, which are a special case for some reason...
# Debian dependencies, which are a special case for some reason. Then set up
# standard CPack components.
IF(NEKLIB_DEPENDS)
TARGET_LINK_LIBRARIES(${NEKLIB_NAME} LINK_PUBLIC ${NEKLIB_DEPENDS})
SET(DEB_DEPS "")
FOREACH (pkg ${NEKLIB_DEPENDS})
STRING(TOLOWER ${pkg} pkg_lower)
SET(DEB_DEPS "${DEB_DEPS}, nektar++-${pkg_lower} (>= ${NEKTAR_VERSION})")
ENDFOREACH()
# Remove starting ", "
STRING(SUBSTRING ${DEB_DEPS} 2 -1 DEB_DEPS)
SET(CPACK_DEBIAN_${NEKLIB_DEPENDS}_DEPENDS ${DEB_DEPS})
# Set general CPack component dependencies.
TARGET_LINK_LIBRARIES(${name} LINK_PUBLIC ${NEKLIB_DEPENDS})
CONSTRUCT_DEBIAN_DEPS(${NEKLIB_DEPENDS} "CPACK_DEBIAN_${NEKLIB_NAME}_DEPENDS")
SET(CPACK_COMPONENT_${NEKLIB_COMPONENT}_DEPENDS ${NEKLIB_DEPENDS})
ENDIF()
ENDFUNCTION()
ENDMACRO()
# Adds a test with a given name.
# The Test Definition File should be in a subdirectory called Tests relative
......
# Define components
SET(CPACK_COMPONENTS_ALL lib solvers)
cpack_add_component(lib
DISPLAY_NAME "nektar++-lib"
DESCRIPTION "Nektar++ libraries")
cpack_add_component(solvers
DISPLAY_NAME "nektar++-solvers"
DESCRIPTION "Nektar++ solvers"
DEPENDS lib)
set(CPACK_PACKAGE_VENDOR "Imperial College London")
set(CPACK_PACKAGE_CONTACT
"Nektar++ users mailing list <nektar-users@imperial.ac.uk>")
......@@ -41,4 +30,4 @@ configure_file(${CMAKE_SOURCE_DIR}/cmake/NektarCPackConfig.cmake.in
set(CPACK_PROJECT_CONFIG_FILE ${CMAKE_BINARY_DIR}/NektarCPackConfig.cmake)
# Finally, include the CPack module
INCLUDE(CPack)
include(CPack)
......@@ -4,7 +4,7 @@ SET(UnitTestSubDirs UnitTests)
SET(DemoSubDirs Demos)
SET(TimingsSubDirs Timings)
SUBDIRS(${LibrarySubDirs} )
SUBDIRS(${LibrarySubDirs})
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/library)
......
......@@ -18,7 +18,7 @@ SET(COLLECTIONS_HEADERS
Operator.h
)
ADD_NEKTAR_LIBRARY(NAME Collections
ADD_NEKTAR_LIBRARY(Collections
DESCRIPTION "Nektar++ Collections library"
SOURCES ${COLLECTIONS_SOURCES}
HEADERS ${COLLECTIONS_HEADERS}
......
#include "BlockMat.h"
/*
g++ -I../../../include -g -o SCdemo SCdemo.cpp -L../../ -lBlockMat -lblas -llapack -lg2c
*/
using namespace blockmat;
/* declare matrix
| 1 2 - - |
A = | 3 4 - - | using submatrix mat = | 1 2 |
| - - 1 2 | | 3 4 |
| - - 3 4 |
| 1 2 3 - - - - - - |
B = | 4 5 6 - - - - - - | using submatrix mat = | 1 2 3 |
| 1 2 3 1 2 3 1 2 3 | | 4 5 6 |
| 4 5 6 4 5 6 4 5 6 |
| 1 2 3 - - - - - - |
| 4 5 6 - - - - - - |
C = | 7 0 0 - - - - - - | using submatrix mat = | 1 2 3 |
| - - - 1 2 3 - - - | | 4 5 6 |
| - - - 4 5 6 - - - | | 7 0 0 |
| - - - 7 0 0 - - - |
| - - - - - - 1 2 3 |
| - - - - - - 4 5 6 |
| - - - - - - 7 0 0 |
| 1 2 1 2 |
D = | 3 4 3 4 | using submatrix mat = | 1 2 |
| 5 6 5 6 | | 3 4 |
| - - 1 2 | | 5 6 |
| - - 3 4 |
| - - 5 6 |
| - - 1 2 |
| - - 3 4 |
| - - 5 6 |
Calculate DC = A - B*C*D
*/
main(){
BlockMat *A,*B,*C,*D,*T,*SC;
double *mat;
mat = new double [9];
mat[0] = 1; mat[1] = 2; mat[2] = 3;
mat[3] = 4; mat[4] = 5; mat[5] = 6;
mat[6] = 7; mat[7] = 0; mat[8] = 0;
cout << "A: " << endl;
A = new BlockMat(2,2);
A->GenBlock(0,0,2,2,mat);
A->GenBlock(1,1,2,2,mat);
A->PrintBlocks();
cout << endl << "B: " << endl;
B = new BlockMat(2,3);
B->GenBlock(0,0,2,3,mat);
B->GenBlock(1,0,2,3,mat);
B->GenBlock(1,1,2,3,mat);
B->GenBlock(1,2,2,3,mat);
B->PrintBlocks();
cout << endl << "C: " << endl;
C = new BlockMat(3,3);
C->GenBlock(0,0,3,3,mat);
C->GenBlock(1,1,3,3,mat);
C->GenBlock(2,2,3,3,mat);
C->PrintBlocks();
cout << endl << "C^{-1}: " << endl;
C->invert_diag();
C->PrintBlocks();
cout << endl << "D: " << endl;
D = new BlockMat(3,2);
D->GenBlock(0,0,3,2,mat);
D->GenBlock(0,1,3,2,mat);
D->GenBlock(1,1,3,2,mat);
D->GenBlock(2,1,3,2,mat);
D->PrintBlocks();
cout << endl << "SC=A-B*C*D: " << endl;
SC = new BlockMat(2,2);
T = new BlockMat(3,2);
// T->geMxM(RowMajor,RowMajor,1,*C,*D,0);
T->MxM(*C,*D);
SC->sub(*A,SC->MxM(*B,*T));
SC->PrintBlocks();
cout << endl << "SC=A-D^T*C*D: " << endl;
T->MxM(*C,*D);
SC->sub(*A,SC->MtxM(*D,*T));
SC->PrintBlocks();
cout << endl << "SC=A-B*C*B^T: " << endl;
T->MxMt(*C,*B);
//T->geMxM(RowMajor,ColMajor,1,*C,*B,0);
SC->sub(*A,SC->MxM(*B,*T));
SC->PrintBlocks();
delete A;
delete B;
delete C;
delete D;
delete T;
delete SC;
delete[] mat;
return 0;
}
#include "BlockMat.h"
/*
g++ -I../../../include -g -o demo demo.cpp -L../../ -lBlockMat -lblas -lg2c -llapack
*/
using namespace blockmat;
main(){
int i;
BlockMat *A,*B,*C;
double *mat;
/* declare matrix
| 1 2 - - |
A = | 3 4 - - | using submatrix mat = | 1 2 |
| - - 1 2 | | 3 4 |
| - - 3 4 |
*/
mat = new double [4];
mat[0] = 1; mat[1] = 2; mat[2] = 3; mat[3] = 4;
cout << "A: " << endl;
A = new BlockMat(2,2);
A->GenBlock(0,0,2,2,mat);
A->GenBlock(0,1,2,2,mat);
A->GenBlock(1,1,2,2,mat);
A->PrintBlocks();
cout << endl << "B: " << endl;
B = new BlockMat(2,2);
B->GenBlock(0,0,2,2,mat);
B->GenBlock(1,1,2,2,mat);
B->PrintBlocks();
cout << endl << "C=A+B: " << endl;
C = new BlockMat(2,2);
C->add(*A,*B);
C->PrintBlocks();
cout << endl << "C=A-B: " << endl;
C->sub(*A,*B);
C->PrintBlocks();
cout << endl << "C=A*B: " << endl;
C->MxM(*A,*B);
C->PrintBlocks();
double *y = new(double)[4];
double *v = new(double)[4];
Vmath::fill(4,1.0,v,1);
Vmath::zero(4,y,1);
cout << endl << "y = A*v: "<< endl;
C->Mxvpy(v,y);
for(i = 0; i < 4; ++i)
cout << y[i] << " ";
cout << endl;
Vmath::zero(4,y,1);
cout << endl << "y = A^T*v: "<< endl;
//C->Mtxvpy(v,y);
C->geMxv(ColMajor,1,v,1,y);
for(i = 0; i < 4; ++i)
cout << y[i] << " ";
cout << endl;
delete A;
delete B;
delete C;
delete[] y;
delete[] v;
delete[] mat;
return 0;
}
SUBDIRS(LibUtilities StdRegions SpatialDomains LocalRegions Collections MultiRegions)
SUBDIRS(LibUtilities StdRegions LocalRegions Collections MultiRegions)
FINALISE_CPACK_COMPONENT(demos DESCRIPTION "Nektar++ Demos")
SET(LinkLibraries MultiRegions)
SET(CollectionTimingSource CollectionTiming.cpp)
ADD_NEKTAR_EXECUTABLE(CollectionTiming demos CollectionTimingSource)
TARGET_LINK_LIBRARIES(CollectionTiming ${LinkLibraries})
#ADD_NEKTAR_TEST(LinearAdvDiffReact2D_P7_Modes)
IF (NEKTAR_USE_MPI)
# ADD_NEKTAR_TEST(Helmholtz2D_CG_P7_Modes_AllBCs_xxt_full)
ENDIF (NEKTAR_USE_MPI)
ADD_NEKTAR_EXECUTABLE(CollectionTiming
COMPONENT demos DEPENDS MultiRegions SOURCES CollectionTiming.cpp)
#SET(GraphSources
# GraphExample.cpp)
SET(MemoryManagerSources
MemoryManager.cpp)
SET(PartitionAnalyseSources
PartitionAnalyse.cpp)
SET(FoundationSources
FoundationDemo.cpp)
SET(NodalTriFeketeSources
NodalTriFeketeDemo.cpp)
SET(NodalTriElecSources
NodalTriElecDemo.cpp)
SET(NodalTriEvenlySpacedSources
NodalTriEvenlySpacedDemo.cpp)
SET(NodalTetEvenlySpacedSources
NodalTetEvenlySpacedDemo.cpp)
SET(NodalTetElecSources
NodalTetElecDemo.cpp)
SET(TimeIntegrationDemoSources
TimeIntegrationDemo.cpp)
#ADD_NEKTAR_EXECUTABLE(Graph demos GraphSources )
#SET_LAPACK_LINK_LIBRARIES(Graph)
#ADD_NEKTAR_EXECUTABLE(MemoryManager MemoryManagerSources )
ADD_NEKTAR_EXECUTABLE(PartitionAnalyse demos PartitionAnalyseSources)
TARGET_LINK_LIBRARIES(PartitionAnalyse LibUtilities)
ADD_NEKTAR_EXECUTABLE(FoundationDemo demos FoundationSources )
TARGET_LINK_LIBRARIES(FoundationDemo LibUtilities)
ADD_NEKTAR_EXECUTABLE(NodalTriFeketeDemo demos NodalTriFeketeSources )
TARGET_LINK_LIBRARIES(NodalTriFeketeDemo LibUtilities)
ADD_NEKTAR_EXECUTABLE(NodalTriElecDemo demos NodalTriElecSources)
TARGET_LINK_LIBRARIES(NodalTriElecDemo LibUtilities)
ADD_NEKTAR_EXECUTABLE(NodalTriEvenlySpacedDemo demos NodalTriEvenlySpacedSources)
TARGET_LINK_LIBRARIES(NodalTriEvenlySpacedDemo LibUtilities)
ADD_NEKTAR_EXECUTABLE(NodalTetEvenlySpacedDemo demos NodalTetEvenlySpacedSources)
TARGET_LINK_LIBRARIES(NodalTetEvenlySpacedDemo LibUtilities)
ADD_NEKTAR_EXECUTABLE(NodalTetElecDemo demos NodalTetElecSources)
TARGET_LINK_LIBRARIES(NodalTetElecDemo LibUtilities)
ADD_NEKTAR_EXECUTABLE(TimeIntegrationDemo demos TimeIntegrationDemoSources)
TARGET_LINK_LIBRARIES(TimeIntegrationDemo LibUtilities)
ADD_NEKTAR_EXECUTABLE(PartitionAnalyse
COMPONENT demos DEPENDS LibUtilities SOURCES PartitionAnalyse.cpp)
ADD_NEKTAR_EXECUTABLE(FoundationDemo
COMPONENT demos DEPENDS LibUtilities SOURCES FoundationDemo.cpp)
ADD_NEKTAR_EXECUTABLE(NodalTriFeketeDemo
COMPONENT demos DEPENDS LibUtilities SOURCES NodalTriFeketeDemo.cpp)
ADD_NEKTAR_EXECUTABLE(NodalTriElecDemo
COMPONENT demos DEPENDS LibUtilities SOURCES NodalTriElecDemo.cpp)
ADD_NEKTAR_EXECUTABLE(NodalTriEvenlySpacedDemo
COMPONENT demos DEPENDS LibUtilities SOURCES NodalTriEvenlySpacedDemo.cpp)
ADD_NEKTAR_EXECUTABLE(NodalTetEvenlySpacedDemo
COMPONENT demos DEPENDS LibUtilities SOURCES NodalTetEvenlySpacedDemo.cpp)
ADD_NEKTAR_EXECUTABLE(NodalTetElecDemo
COMPONENT demos DEPENDS LibUtilities SOURCES NodalTetElecDemo.cpp)
ADD_NEKTAR_EXECUTABLE(TimeIntegrationDemo
COMPONENT demos DEPENDS LibUtilities SOURCES TimeIntegrationDemo.cpp)
SET(LinkLibraries LocalRegions)
SET(LocProject1DSource LocProject1D.cpp)
ADD_NEKTAR_EXECUTABLE(LocProject1D demos LocProject1DSource)
TARGET_LINK_LIBRARIES(LocProject1D ${LinkLibraries})
SET(LocProject2DSource LocProject2D.cpp)
ADD_NEKTAR_EXECUTABLE(LocProject2D demos LocProject2DSource)
TARGET_LINK_LIBRARIES(LocProject2D ${LinkLibraries})
SET(LocProject3DSource LocProject3D.cpp)
ADD_NEKTAR_EXECUTABLE(LocProject3D demos LocProject3DSource)
TARGET_LINK_LIBRARIES(LocProject3D ${LinkLibraries})
SET(LocProject_Diff1DSource LocProject_Diff1D.cpp)
ADD_NEKTAR_EXECUTABLE(LocProject_Diff1D demos LocProject_Diff1DSource)
TARGET_LINK_LIBRARIES(LocProject_Diff1D ${LinkLibraries})
SET(LocProject_Diff2DSource LocProject_Diff2D.cpp)
ADD_NEKTAR_EXECUTABLE(LocProject_Diff2D demos LocProject_Diff2DSource)
TARGET_LINK_LIBRARIES(LocProject_Diff2D ${LinkLibraries})
SET(LocProject_Diff3DSource LocProject_Diff3D.cpp)
ADD_NEKTAR_EXECUTABLE(LocProject_Diff3D demos LocProject_Diff3DSource)
TARGET_LINK_LIBRARIES(LocProject_Diff3D ${LinkLibraries})
ADD_NEKTAR_EXECUTABLE(LocProject1D
COMPONENT demos DEPENDS LocalRegions SOURCES LocProject1D.cpp)
ADD_NEKTAR_EXECUTABLE(LocProject2D
COMPONENT demos DEPENDS LocalRegions SOURCES LocProject2D.cpp)
ADD_NEKTAR_EXECUTABLE(LocProject3D
COMPONENT demos DEPENDS LocalRegions SOURCES LocProject3D.cpp)
ADD_NEKTAR_EXECUTABLE(LocProject_Diff1D
COMPONENT demos DEPENDS LocalRegions SOURCES LocProject_Diff1D.cpp)
ADD_NEKTAR_EXECUTABLE(LocProject_Diff2D
COMPONENT demos DEPENDS LocalRegions SOURCES LocProject_Diff2D.cpp)
ADD_NEKTAR_EXECUTABLE(LocProject_Diff3D
COMPONENT demos DEPENDS LocalRegions SOURCES LocProject_Diff3D.cpp)
# Generate list of available subdirectories
FILE(GLOB dir_list "*")
......
<?xml version="1.0" encoding="utf-8" ?>
<NEKTAR>
<!-- Embed a 2-dimensional object in a 2-dimensional space -->
<!-- DIM <= SPACE -->