Commit d90b228b authored by Chris Cantwell's avatar Chris Cantwell
Browse files

Merge branch 'master' into feature/fieldconvert

Conflicts:
	library/MultiRegions/DisContField2D.cpp
	library/MultiRegions/ExpList.h
parents 9ca8bb8a 5f4c0946
......@@ -296,7 +296,6 @@ INSTALL(FILES ${CMAKE_BINARY_DIR}/Nektar++Config.cmake
${CMAKE_SOURCE_DIR}/cmake/FindMetis.cmake
${CMAKE_SOURCE_DIR}/cmake/FindFFTW.cmake
${CMAKE_SOURCE_DIR}/cmake/FindWin32Lapack.cmake
${CMAKE_SOURCE_DIR}/cmake/NektarCommon.cmake
${CMAKE_SOURCE_DIR}/cmake/FindTinyXml.cmake
${CMAKE_SOURCE_DIR}/cmake/FindGSMPI.cmake
${CMAKE_SOURCE_DIR}/cmake/FindXXT.cmake
......
# - Nektar++ Config File
#
# Use this module by invoking find_package with the form:
# FIND_PACKAGE(Nektar++
# [version] [EXACT] # Minimum or EXACT version e.g. 1.36.0
# [REQUIRED] # Fail with error if Nektar++ is not found
# ) #
#
# This sets the following variables:
# Nektar++_FOUND - True if headers and requested libraries were found
# Nektar++_VERSION - Nektar++_VERSION
# Nektar++_INCLUDE_DIRS - Nektar++ include directories
# Nektar++_LIBRARY_DIRS - Link directories for Nektar++ libraries
# Nektar++_DEFINITIONS - Nektar++ build flags
# Nektar++_LIBRARIES - Nektar++ component libraries to be linked
#
# Nektar++_TP_INCLUDE_DIRS - Nektar++ ThirdParty include directories
# Nektar++_TP_LIBRARY_DIRS - Link directories for Nektar++ ThirdParty libraries
# Nektar++_TP_LIBRARIES - Nektar++ ThirdParty libraries to be linked
#
# Example Use:
# FIND_PACKAGE(Nektar++ REQUIRED)
# ADD_DEFINITIONS(${NEKTAR++_DEFINITIONS})
# INCLUDE_DIRECTORIES(${NEKTAR++_INCLUDE_DIRS} ${NEKTAR++_TP_INCLUDE_DIRS})
# LINK_DIRECTORIES(${NEKTAR++_LIBRARY_DIRS} ${NEKTAR++_TP_LIBRARY_DIRS})
# TARGET_LINK_LIBRARIES(${ProjectName} ${NEKTAR++_LIBRARIES} ${NEKTAR++_TP_LIBRARIES})
#
# set basic variables
SET(NEKTAR++_FOUND "ON")
SET(NEKTAR++_VERSION "@NEKTAR_VERSION@")
SET(NEKTAR++_ROOT_DIR "@CMAKE_INSTALL_PREFIX@")
SET(NEKTAR++_INCLUDE_DIRS "${NEKTAR++_ROOT_DIR}/@NEKTAR_INCLUDE_DIR@")
SET(NEKTAR++_LIBRARY_DIRS "${NEKTAR++_ROOT_DIR}/@NEKTAR_LIB_DIR@")
SET(NEKTAR++_BIN_DIR "${NEKTAR++_ROOT_DIR}/@NEKTAR_BIN_DIR@")
SET(NEKTAR++_SHARE_DIR "${NEKTAR++_ROOT_DIR}/@NEKTAR_SHARE_DIR@")
SET(NEKTAR++_DEFINITIONS "")
SET(NEKTAR++_LIBRARIES SolverUtils MultiRegions LocalRegions SpatialDomains StdRegions LibUtilities)
SET(NEKTAR++_TP_INCLUDE_DIRS "")
SET(NEKTAR++_TP_LIBRARIES "")
SET(NEKTAR++_TP_LIBRARY_DIRS "@CMAKE_SOURCE_DIR@/ThirdParty/dist/lib/")
# add Nektar++_ROOT_DIR to the cmake search path, so Nektars custom FindXXX modules can be used
SET(CMAKE_MODULE_PATH ${NEKTAR++_ROOT_DIR} ${CMAKE_MODULE_PATH})
# set nektars config variables
SET(NEKTAR_USE_MEMORY_POOLS "@NEKTAR_USE_MEMORY_POOLS@")
MARK_AS_ADVANCED(NEKTAR_USE_MEMORY_POOLS)
IF( NEKTAR_USE_MEMORY_POOLS )
SET(NEKTAR++_DEFINITIONS "${NEKTAR++_DEFINITIONS} -DNEKTAR_MEMORY_POOL_ENABLED")
ENDIF( NEKTAR_USE_MEMORY_POOLS )
SET(NEKTAR_USE_SMV "@NEKTAR_USE_SMV@")
IF( NEKTAR_USE_SMV )
SET(NEKTAR++_DEFINITIONS "${NEKTAR++_DEFINITIONS} -DNEKTAR_USING_SMV")
ENDIF( NEKTAR_USE_SMV )
SET(NEKTAR_USE_ACML "@NEKTAR_USE_ACML@")
SET(NEKTAR_USE_ACML "@NEKTAR_USE_EXPRESSION_TEMPLATES@")
IF( NEKTAR_USE_EXPRESSION_TEMPLATES )
SET(NEKTAR++_DEFINITIONS "${NEKTAR++_DEFINITIONS} -DNEKTAR_USE_EXPRESSION_TEMPLATES")
ENDIF( NEKTAR_USE_EXPRESSION_TEMPLATES )
SET(NEKTAR_USE_WIN32_LAPACK "@NEKTAR_USE_WIN32_LAPACK@")
IF( NEKTAR_USE_WIN32_LAPACK )
GET_FILENAME_COMPONENT(WIN32_BLAS_PATH "@WIN32_BLAS@" PATH)
GET_FILENAME_COMPONENT(WIN32_LAPACK_PATH "@WIN32_LAPACK@" PATH)
ENDIF( NEKTAR_USE_WIN32_LAPACK )
SET(NEKTAR_USE_BLAS_LAPACK "@NEKTAR_USE_BLAS_LAPACK@")
IF( NEKTAR_USE_BLAS_LAPACK )
SET(NEKTAR++_DEFINITIONS "${NEKTAR++_DEFINITIONS} -DNEKTAR_USING_LAPACK -DNEKTAR_USING_BLAS")
ENDIF( NEKTAR_USE_BLAS_LAPACK )
SET(NEKTAR_USE_EXPRESSION_TEMPLATES "@NEKTAR_USE_EXPRESSION_TEMPLATES@")
MARK_AS_ADVANCED(NEKTAR_USE_EXPRESSION_TEMPLATES)
SET(NEKTAR_FULL_DEBUG "@NEKTAR_FULL_DEBUG@")
IF ( NEKTAR_FULL_DEBUG )
SET(NEKTAR++_DEFINITIONS "${NEKTAR++_DEFINITIONS} -DNEKTAR_FULLDEBUG")
ENDIF( NEKTAR_FULL_DEBUG)
SET(Boost_USE_STATIC_LIBS "@Boost_USE_STATIC_LIBS@")
SET(Boost_USE_MULTITHREADED "@Boost_USE_MULTITHREADED@")
SET(BOOST_INCLUDEDIR "@BOOST_INCLUDEDIR@")
SET(BOOST_LIBRARYDIR "@BOOST_LIBRARYDIR@")
SET(Boost_FOUND "@Boost_FOUND@")
SET(Boost_INCLUDE_DIRS "@Boost_INCLUDE_DIRS@")
SET(Boost_INCLUDE_DIR "@Boost_INCLUDE_DIR@")
SET(Boost_LIBRARIES "@Boost_LIBRARIES@")
SET(Boost_LIBRARY_DIRS "@Boost_LIBRARY_DIRS@")
SET(Boost_VERSION "@Boost_VERSION@")
SET(Boost_THREAD_LIBRARY "@Boost_THREAD_LIBRARY@")
SET(Boost_ZLIB_LIBRARY "@Boost_ZLIB_LIBRARY@")
SET(Boost_IOSTREAMS_LIBRARY "@Boost_IOSTREAMS_LIBRARY@")
SET(Boost_DATE_TIME_LIBRARY "@Boost_DATE_TIME_LIBRARY@")
SET(Boost_FILESYSTEM_LIBRARY "@Boost_FILESYSTEM_LIBRARY@")
SET(Boost_SYSTEM_LIBRARY "@Boost_SYSTEM_LIBRARY@")
SET(Boost_PROGRAM_OPTIONS_LIBRARY "@Boost_PROGRAM_OPTIONS_LIBRARY@")
SET(NEKTAR_USE_DIRECT_BLAS_CALLS "@NEKTAR_USE_DIRECT_BLAS_CALLS@")
MARK_AS_ADVANCED(NEKTAR_USE_DIRECT_BLAS_CALLS)
SET(NEKTAR_USE_SMV "@NEKTAR_USE_SMV@")
MARK_AS_ADVANCED(NEKTAR_USE_SMV)
SET(NEKTAR++_TP_INCLUDE_DIRS ${NEKTAR++_TP_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
SET(NEKTAR++_TP_LIBRARIES ${NEKTAR++_TP_LIBRARIES} ${Boost_LIBRARIES})
SET(NEKTAR_USE_MPI "@NEKTAR_USE_MPI@")
SET(MPI_LIBRARY "@MPI_LIBRARY@")
SET(MPI_EXTRA_LIBRARY "@MPI_EXTRA_LIBRARY@")
SET(MPI_INCLUDE_PATH "@MPI_INCLUDE_PATH@")
SET(NEKTAR_FULL_DEBUG "@NEKTAR_FULL_DEBUG@")
SET(CMAKE_MODULE_PATH ${NEKTAR++_ROOT_DIR} ${CMAKE_MODULE_PATH})
SET(NEKTAR++_TP_INCLUDE_DIRS ${NEKTAR++_TP_INCLUDE_DIRS} ${MPI_INCLUDE_PATH})
SET(NEKTAR++_TP_LIBRARIES ${NEKTAR++_TP_LIBRARIES} ${MPI_LIBRARY} ${MPI_EXTRA_LIBRARY})
IF( NEKTAR_USE_MPI )
SET(NEKTAR++_DEFINITIONS "${NEKTAR++_DEFINITIONS} -DNEKTAR_USE_MPI")
ENDIF( NEKTAR_USE_MPI )
SET(LOKI_ADDITIONAL_INCLUDE_DIRS "@LOKI_INCLUDE_DIR@")
INCLUDE(${NEKTAR++_ROOT_DIR}/FindLoki.cmake)
SET(NEKTAR++_TP_INCLUDE_DIRS ${NEKTAR++_TP_INCLUDE_DIRS} ${LOKI_ADDITIONAL_INCLUDE_DIRS})
SET(TINYXML_ADDITIONAL_INCLUDE_DIRS "@TINYXML_BASE@")
INCLUDE(${NEKTAR++_ROOT_DIR}/FindTinyXml.cmake)
SET(NEKTAR_USE_ACML "@NEKTAR_USE_ACML@")
SET(ACML_USE_SHARED_LIBRARIES "@ACML_USE_SHARED_LIBRARIES@")
SET(ACML_USE_OPENMP_LIBRARIES "@ACML_USE_OPENMP_LIBRARIES@")
SET(NEKTAR++_TP_INCLUDE_DIRS ${NEKTAR++_TP_INCLUDE_DIRS} ${TINYXML_ADDITIONAL_INCLUDE_DIRS})
SET(NEKTAR_USE_WIN32_LAPACK "@NEKTAR_USE_WIN32_LAPACK@")
SET(WIN32_LAPACK "@WIN32_LAPACK@")
SET(WIN32_BLAS "@WIN32_BLAS@")
SET(WIN32_LAPACK_FOUND "@WIN32_LAPACK_FOUND@")
SET(LAPACK_DIR "@LAPACK_DIR@")
SET(NEKTAR_USE_ATLAS "@NEKTAR_USE_ATLAS@")
SET(NEKTAR_USE_MKL "@NEKTAR_USE_MKL@")
SET(NEKTAR_USE_BLAS_LAPACK "@NEKTAR_USE_BLAS_LAPACK@")
SET(NEKTAR_USE_SYSTEM_BLAS_LAPACK "@NEKTAR_USE_SYSTEM_BLAS_LAPACK@")
MARK_AS_ADVANCED(NEKTAR_USE_BLAS_LAPACK)
SET(NEKTAR_BUILD_SHARED "@NEKTAR_BUILD_SHARED@")
SET(METIS_FOUND "@METIS_FOUND@")
SET(NEKTAR_USE_METIS "@NEKTAR_USE_METIS@")
SET(METIS_LIB "@METIS_LIB@" CACHE FILEPATH "Metis Library" FORCE)
MARK_AS_ADVANCED(METIS_FOUND)
MARK_AS_ADVANCED(METIS_LIB)
MARK_AS_ADVANCED(NEKTAR_USE_METIS)
SET(FFTW_FOUND "@FFTW_FOUND@")
SET(NEKTAR_USE_FFTW "@NEKTAR_USE_FFTW@")
SET(FFTW_LIB "@FFTW_LIB@" CACHE FILEPATH "FFTW Library" FORCE)
SET(FFTW_INCLUDE_DIR "@FFTW_INCLUDE_DIR@")
MARK_AS_ADVANCED(FFTW_FOUND)
MARK_AS_ADVANCED(FFTW_LIB)
MARK_AS_ADVANCED(FFTW_INCLUDE_DIR)
MARK_AS_ADVANCED(NEKTAR_USE_FFTW)
SET(ARPACK_FOUND "@ARPACK_FOUND@")
SET(NEKTAR_USE_ARPACK "@NEKTAR_USE_ARPACK@")
SET(ARPACK_LIB "@ARPACK_LIB@" CACHE FILEPATH "ARPACK library" FORCE)
SET(ARPACK_INCLUDE_DIR "@ARPACK_INCLUDE_DIR@")
MARK_AS_ADVANCED(ARPACK_FOUND)
MARK_AS_ADVANCED(ARPACK_LIB)
MARK_AS_ADVANCED(ARPACK_INCLUDE_DIR)
MARK_AS_ADVANCED(NEKTAR_USE_ARPACK)
SET(VTK_FOUND "@VTK_FOUND@")
SET(NEKTAR_USE_VTK "@NEKTAR_USE_VTK@")
SET(VTK_USE_FILE "@VTK_USE_FILE@" CACHE FILEPATH "VTK library config." FORCE)
SET(VTK_INCLUDE_DIRS "@VTK_INCLUDE_DIRS@")
MARK_AS_ADVANCED(VTK_FOUND)
MARK_AS_ADVANCED(NEKTAR_USE_VTK)
MARK_AS_ADVANCED(VTK_USE_FILE)
MARK_AS_ADVANCED(VTK_INCLUDE_DIRS)
IF (${CMAKE_COMPILER_IS_GNUCXX})
SET(NEKTAR_ENABLE_PROFILE "@ NEKTAR_ENABLE_PROFILE@")
ENDIF (${CMAKE_COMPILER_IS_GNUCXX})
SET(NEKTAR_USE_TINYXML_STL "@NEKTAR_USE_TINYXML_STL@")
IF( APPLE )
SET(NEKTAR_USE_ACCELERATE_FRAMEWORK "@NEKTAR_USE_ACCELERATE_FRAMEWORK@")
SET(NEKTAR_USE_CHUD_FRAMEWORK "@NEKTAR_USE_CHUD_FRAMEWORK@")
MARK_AS_ADVANCED(NEKTAR_USE_CHUD_FRAMEWORK)
ENDIF(APPLE)
SET(NEKTAR++_TP_INCLUDE_DIRS ${NEKTAR++_TP_INCLUDE_DIRS} ${FFTW_INCLUDE_DIR})
IF( NEKTAR_USE_WIN32_LAPACK )
GET_FILENAME_COMPONENT(WIN32_BLAS_PATH "@WIN32_BLAS@" PATH)
GET_FILENAME_COMPONENT(WIN32_LAPACK_PATH "@WIN32_LAPACK@" PATH)
SET(ARPACK_INCLUDE_DIR "@ARPACK_INCLUDE_DIR@")
SET(NEKTAR++_TP_INCLUDE_DIRS ${NEKTAR++_TP_INCLUDE_DIRS} ${ARPACK_INCLUDE_DIR})
SET(WIN32_LAPACK_ADDITIONAL_DIRS ${WIN32_BLAS_PATH} ${WIN32_LAPACK_PATH})
ENDIF( NEKTAR_USE_WIN32_LAPACK )
SET(VTK_INCLUDE_DIRS "@VTK_INCLUDE_DIRS@")
SET(NEKTAR++_TP_INCLUDE_DIRS ${NEKTAR++_TP_INCLUDE_DIRS} ${VTK_INCLUDE_DIRS})
INCLUDE(${NEKTAR++_ROOT_DIR}/NektarCommon.cmake)
# find and add Nektar++ libraries
INCLUDE(${NEKTAR++_LIBRARY_DIRS}/Nektar++Libraries.cmake)
FIND_FILE(NEKTAR_DEBUG_LIBRARIES Nektar++Libraries-debug.cmake ${NEKTAR++_LIBRARY_DIRS})
IF( NEKTAR_DEBUG_LIBRARIES )
INCLUDE(${NEKTAR_DEBUG_LIBRARIES})
ENDIF( NEKTAR_DEBUG_LIBRARIES )
FIND_FILE(NEKTAR_RELEASE_LIBRARIES Nektar++Libraries-release.cmake ${NEKTAR++_LIBRARY_DIRS})
IF(NEKTAR_RELEASE_LIBRARIES)
INCLUDE(${NEKTAR_RELEASE_LIBRARIES})
ENDIF(NEKTAR_RELEASE_LIBRARIES)
FIND_FILE(NEKTAR_RELEASE_WITH_DEBUG_INFO_LIBRARIES Nektar++Libraries-relwithdebinfo.cmake ${NEKTAR++_LIBRARY_DIRS})
IF(NEKTAR_RELEASE_WITH_DEBUG_INFO_LIBRARIES)
INCLUDE(${NEKTAR_RELEASE_WITH_DEBUG_INFO_LIBRARIES})
ENDIF(NEKTAR_RELEASE_WITH_DEBUG_INFO_LIBRARIES)
SET(NEKTAR++_LIBRARIES SolverUtils MultiRegions LocalRegions SpatialDomains StdRegions LibUtilities)
MARK_AS_ADVANCED(NEKTAR_RELEASE_LIBRARIES)
MARK_AS_ADVANCED(NEKTAR_DEBUG_LIBRARIES)
MARK_AS_ADVANCED(NEKTAR_RELEASE_WITH_DEBUG_INFO_LIBRARIES)
IF(NEKTAR_USE_FFTW)
INCLUDE_DIRECTORIES(${FFTW_INCLUDE_DIR})
ENDIF(NEKTAR_USE_FFTW)
IF(NEKTAR_USE_ARPACK)
INCLUDE_DIRECTORIES(${ARPACK_INCLUDE_DIR})
ENDIF(NEKTAR_USE_ARPACK)
INCLUDE_DIRECTORIES(SYSTEM ${Boost_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${LOKI_INCLUDE_DIR} ${TINYXML_BASE} )
# platform dependent options
if(${CMAKE_SYSTEM} MATCHES "Linux.*")
set(NEKTAR++_TP_LIBRARIES ${NEKTAR++_TP_LIBRARIES} rt)
SET(NEKTAR++_DEFINITIONS "${NEKTAR++_DEFINITIONS} -pthread")
endif(${CMAKE_SYSTEM} MATCHES "Linux.*")
SET(NEKTAR_PACKAGE_GENERATOR "@NEKTAR_PACKAGE_GENERATOR@")
SET(NEKTAR_USING_BLAS "@NEKTAR_USING_BLAS@")
SET(NEKTAR_USING_LAPACK "@NEKTAR_USING_LAPACK@")
SET(NEKTAR_USING_MKL "@NEKTAR_USING_MKL@")
SET(NEKTAR_USING_ACML "@NEKTAR_USING_ACML@")
SET(NEKTAR_USING_OPENBLAS "@NEKTAR_USING_OPENBLAS@")
SET(NEKTAR_USING_SMV "@NEKTAR_USING_SMV@")
if(${CMAKE_SYSTEM} MATCHES "Darwin-*")
SET(NEKTAR++_DEFINITIONS "${NEKTAR++_DEFINITIONS} -Wl,-undefined,dynamic_lookup -Wl,-rpath,${CMAKE_INSTALL_PREFIX}/${LIB_DIR} -Wl,-rpath,${Boost_LIBRARY_DIRS}")
endif(${CMAKE_SYSTEM} MATCHES "Darwin-*")
......@@ -348,19 +348,10 @@ TARGET_LINK_LIBRARIES(LibUtilities
${ZLIB_LIBRARY}
${TINYXML_LIB}
)
IF( UNIX AND NOT APPLE )
TARGET_LINK_LIBRARIES(LibUtilities rt)
ENDIF( UNIX AND NOT APPLE )
SET_LAPACK_LINK_LIBRARIES(LibUtilities)
# This doesn't preserve the BasicUtils, Memory, etc. Find a way to fix this.
INSTALL(FILES ${BasicConstHeaders} DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities/BasicConst COMPONENT dev)
INSTALL(FILES ${LinearAlgebraHeaders} DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities/LinearAlgebra COMPONENT dev)
INSTALL(FILES ${FoundationHeaders} DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities/Foundations COMPONENT dev)
INSTALL(FILES ${InterpreterHeaders} DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities/Interpreter COMPONENT dev)
INSTALL(FILES ${PolyLibHeaders} DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities/Polylib COMPONENT dev)
INSTALL(FILES ${CommunicationHeaders} DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities/Communication COMPONENT dev)
INSTALL(FILES ${ExpressionTemplates} DESTINATION ${NEKTAR_INCLUDE_DIR}/ExpressionTemplates COMPONENT dev)
INSTALL(FILES ${BasicUtilsHeaders} DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities/BasicUtils COMPONENT dev)
INSTALL(FILES ${MemoryHeaders} DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities/Memory COMPONENT dev)
INSTALL(FILES ${KernelHeaders} DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities/Kernel COMPONENT dev)
INSTALL(FILES ${TimeIntegrationHeaders} DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities/TimeIntegration COMPONENT dev)
INSTALL(FILES ${BaseHeaders} DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities COMPONENT dev)
INSTALL(FILES ${FFTHeaders} DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities/FFT COMPONENT dev)
INSTALL(DIRECTORY ./ DESTINATION ${NEKTAR_INCLUDE_DIR}/LibUtilities COMPONENT dev FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp")
......@@ -58,4 +58,4 @@ TARGET_LINK_LIBRARIES(LocalRegions
)
SET_LAPACK_LINK_LIBRARIES(LocalRegions)
INSTALL(FILES ${LOCAL_REGIONS_HEADERS} DESTINATION ${NEKTAR_INCLUDE_DIR}/LocalRegions COMPONENT dev)
INSTALL(DIRECTORY ./ DESTINATION ${NEKTAR_INCLUDE_DIR}/LocalRegions COMPONENT dev FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp")
......@@ -868,6 +868,11 @@ namespace Nektar
return m_bndCondTraceToGlobalTraceMap[i];
}
const Array<OneD, const int> &AssemblyMap
::GetBndCondTraceToGlobalTraceMap()
{
return m_bndCondTraceToGlobalTraceMap;
}
NekDouble AssemblyMap::GetBndCondCoeffsToGlobalCoeffsSign(const int i)
{
......
......@@ -157,8 +157,10 @@ namespace Nektar
MULTI_REGIONS_EXPORT NekDouble GetBndCondCoeffsToGlobalCoeffsSign(const int i);
/// Returns the global index of the boundary trace giving the
/// index on the boundary expansion
/// index on the boundary expansion
MULTI_REGIONS_EXPORT int GetBndCondTraceToGlobalTraceMap(const int i);
MULTI_REGIONS_EXPORT const Array<OneD, const int>
&GetBndCondTraceToGlobalTraceMap();
/// Returns the number of global Dirichlet boundary coefficients.
MULTI_REGIONS_EXPORT int GetNumGlobalDirBndCoeffs() const;
......
......@@ -100,19 +100,19 @@ IF(NEKTAR_USE_MPI)
GlobalLinSysXxt.h
GlobalLinSysXxtFull.h
GlobalLinSysXxtStaticCond.h
PreconditionerLinear.cpp
PreconditionerLinearWithLowEnergy.cpp
PreconditionerLinearWithDiag.cpp
PreconditionerLinearWithBlock.cpp
PreconditionerLinear.h
PreconditionerLinearWithLowEnergy.h
PreconditionerLinearWithDiag.h
PreconditionerLinearWithBlock.h
)
SET(MULTI_REGIONS_SOURCES ${MULTI_REGIONS_SOURCES}
GlobalLinSysXxt.cpp
GlobalLinSysXxtFull.cpp
GlobalLinSysXxtStaticCond.cpp
PreconditionerLinear.h
PreconditionerLinearWithLowEnergy.h
PreconditionerLinearWithDiag.h
PreconditionerLinearWithBlock.h
PreconditionerLinear.cpp
PreconditionerLinearWithLowEnergy.cpp
PreconditionerLinearWithDiag.cpp
PreconditionerLinearWithBlock.cpp
)
ENDIF(NEKTAR_USE_MPI)
......@@ -134,10 +134,7 @@ TARGET_LINK_LIBRARIES(MultiRegions
)
SET_LAPACK_LINK_LIBRARIES(MultiRegions)
INSTALL(FILES ${MULTI_REGIONS_HEADERS} DESTINATION ${NEKTAR_INCLUDE_DIR}/MultiRegions COMPONENT dev)
INSTALL(FILES ${ASSEMBLY_MAP_HEADERS} DESTINATION ${NEKTAR_INCLUDE_DIR}/MultiRegions/AssemblyMap COMPONENT dev)
INSTALL(DIRECTORY ./ DESTINATION ${NEKTAR_INCLUDE_DIR}/MultiRegions COMPONENT dev FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp")
......@@ -47,16 +47,19 @@ namespace Nektar
{
}
ContField3DHomogeneous1D::ContField3DHomogeneous1D(const ContField3DHomogeneous1D &In):
DisContField3DHomogeneous1D (In,false)
ContField3DHomogeneous1D::ContField3DHomogeneous1D(
const ContField3DHomogeneous1D &In):
DisContField3DHomogeneous1D (In,false)
{
bool False = false;
ContField2DSharedPtr zero_plane = boost::dynamic_pointer_cast<ContField2D> (In.m_planes[0]);
ContField2DSharedPtr zero_plane =
boost::dynamic_pointer_cast<ContField2D> (In.m_planes[0]);
for(int n = 0; n < m_planes.num_elements(); ++n)
{
m_planes[n] = MemoryManager<ContField2D>::AllocateSharedPtr(*zero_plane,False);
m_planes[n] = MemoryManager<ContField2D>::
AllocateSharedPtr(*zero_plane,False);
}
SetCoeffPhys();
......@@ -67,14 +70,14 @@ namespace Nektar
}
ContField3DHomogeneous1D::ContField3DHomogeneous1D(
const LibUtilities::SessionReaderSharedPtr &pSession,
const LibUtilities::BasisKey &HomoBasis,
const NekDouble lhom,
const bool useFFT,
const bool dealiasing,
const SpatialDomains::MeshGraphSharedPtr &graph2D,
const std::string &variable,
const bool CheckIfSingularSystem):
const LibUtilities::SessionReaderSharedPtr &pSession,
const LibUtilities::BasisKey &HomoBasis,
const NekDouble lhom,
const bool useFFT,
const bool dealiasing,
const SpatialDomains::MeshGraphSharedPtr &graph2D,
const std::string &variable,
const bool CheckIfSingularSystem):
DisContField3DHomogeneous1D(pSession,HomoBasis,lhom,useFFT,dealiasing)
{
int i,n,nel;
......@@ -82,7 +85,7 @@ namespace Nektar
ContField2DSharedPtr plane_two;
SpatialDomains::BoundaryConditions bcs(m_session, graph2D);
m_graph = graph2D;
m_graph = graph2D;
// Plane zero (k=0 - cos) - singularaty check required for Poisson
// problems
......@@ -128,7 +131,8 @@ namespace Nektar
nel = GetExpSize();
m_globalOptParam = MemoryManager<NekOptimize::GlobalOptParam>::AllocateSharedPtr(nel);
m_globalOptParam = MemoryManager<NekOptimize::GlobalOptParam>::
AllocateSharedPtr(nel);
SetCoeffPhys();
......@@ -136,7 +140,8 @@ namespace Nektar
}
void ContField3DHomogeneous1D::v_ImposeDirichletConditions(Array<OneD,NekDouble>& outarray)
void ContField3DHomogeneous1D::v_ImposeDirichletConditions(
Array<OneD,NekDouble>& outarray)
{
Array<OneD, NekDouble> tmp;
int ncoeffs = m_planes[0]->GetNcoeffs();
......@@ -215,13 +220,16 @@ namespace Nektar
}
else
{
HomogeneousFwdTrans(inarray,fce,(flags.isSet(eUseGlobal))?eGlobal:eLocal);
HomogeneousFwdTrans(inarray, fce,
(flags.isSet(eUseGlobal))?eGlobal:eLocal);
}
bool smode = false;
if (m_homogeneousBasis->GetBasisType() == LibUtilities::eFourierHalfModeRe ||
m_homogeneousBasis->GetBasisType() == LibUtilities::eFourierHalfModeIm )
if (m_homogeneousBasis->GetBasisType() ==
LibUtilities::eFourierHalfModeRe ||
m_homogeneousBasis->GetBasisType() ==
LibUtilities::eFourierHalfModeIm )
{
smode = true;
}
......@@ -233,11 +241,13 @@ namespace Nektar
beta = 2*M_PI*(m_transposition->GetK(n))/m_lhom;
new_factors = factors;
// add in Homogeneous Fourier direction and SVV if turned on
new_factors[StdRegions::eFactorLambda] += beta*beta*(1+GetSpecVanVisc(n));
new_factors[StdRegions::eFactorLambda] +=
beta*beta*(1+GetSpecVanVisc(n));
m_planes[n]->HelmSolve(fce + cnt,
e_out = outarray + cnt1,
flags, new_factors, varcoeff, dirForcing);
flags, new_factors, varcoeff,
dirForcing);
}
cnt += m_planes[n]->GetTotPoints();
......
......@@ -49,30 +49,35 @@ namespace Nektar
{
namespace MultiRegions
{
DisContField2D::DisContField2D(void):
ExpList2D (),
m_bndCondExpansions(),
m_bndConditions (),
m_trace (NullExpListSharedPtr)
DisContField2D::DisContField2D(void)
: ExpList2D (),
m_bndCondExpansions(),
m_bndConditions (),
m_trace (NullExpListSharedPtr)
{
}
DisContField2D::DisContField2D(
const DisContField2D &In,
const bool DeclareCoeffPhysArrays) :
ExpList2D (In,DeclareCoeffPhysArrays),
m_bndCondExpansions (In.m_bndCondExpansions),
m_bndConditions (In.m_bndConditions),
m_globalBndMat (In.m_globalBndMat),
m_trace (In.m_trace),
m_traceMap (In.m_traceMap),
m_boundaryEdges (In.m_boundaryEdges),
m_periodicVerts (In.m_periodicVerts),
m_periodicEdges (In.m_periodicEdges),
m_periodicFwdCopy (In.m_periodicFwdCopy),
m_periodicBwdCopy (In.m_periodicBwdCopy),
m_leftAdjacentEdges (In.m_leftAdjacentEdges)
const bool DeclareCoeffPhysArrays)
: ExpList2D (In,DeclareCoeffPhysArrays),
m_bndCondExpansions (In.m_bndCondExpansions),
m_bndConditions (In.m_bndConditions),
m_globalBndMat (In.m_globalBndMat),
m_traceMap (In.m_traceMap),
m_boundaryEdges (In.m_boundaryEdges),
m_periodicVerts (In.m_periodicVerts),
m_periodicEdges (In.m_periodicEdges),
m_periodicFwdCopy (In.m_periodicFwdCopy),
m_periodicBwdCopy (In.m_periodicBwdCopy),
m_leftAdjacentEdges (In.m_leftAdjacentEdges)
{
if (In.m_trace)
{
m_trace = MemoryManager<ExpList1D>::AllocateSharedPtr(
*boost::dynamic_pointer_cast<ExpList1D>(In.m_trace),
DeclareCoeffPhysArrays);
}
}
DisContField2D::DisContField2D(
......@@ -81,7 +86,7 @@ namespace Nektar
const std::string &variable,
const bool SetUpJustDG,
const bool DeclareCoeffPhysArrays)
: ExpList2D(pSession,graph2D,DeclareCoeffPhysArrays),
: ExpList2D(pSession, graph2D, DeclareCoeffPhysArrays),
m_bndCondExpansions(),
m_bndConditions(),
m_trace(NullExpListSharedPtr),
......@@ -112,9 +117,9 @@ namespace Nektar
else
{
// Set element edges to point to Robin BC edges if required.
int i,cnt;
Array<OneD, int> ElmtID,EdgeID;
GetBoundaryToElmtMap(ElmtID,EdgeID);
int i, cnt;
Array<OneD, int> ElmtID, EdgeID;
GetBoundaryToElmtMap(ElmtID, EdgeID);
for(cnt = i = 0; i < m_bndCondExpansions.num_elements(); ++i)
{
......@@ -124,26 +129,28 @@ namespace Nektar
for(e = 0; e < locExpList->GetExpSize(); ++e)
{
LocalRegions::Expansion2DSharedPtr exp2d
= boost::dynamic_pointer_cast<
LocalRegions::Expansion2DSharedPtr exp2d =
boost::dynamic_pointer_cast<
LocalRegions::Expansion2D>((*m_exp)[ElmtID[cnt+e]]);
LocalRegions::Expansion1DSharedPtr exp1d
= boost::dynamic_pointer_cast<
LocalRegions::Expansion1DSharedPtr exp1d =
boost::dynamic_pointer_cast<
LocalRegions::Expansion1D>(locExpList->GetExp(e));
LocalRegions::ExpansionSharedPtr exp
= boost::dynamic_pointer_cast<
LocalRegions::ExpansionSharedPtr exp =
boost::dynamic_pointer_cast<
LocalRegions::Expansion> (locExpList->GetExp(e));
exp2d->SetEdgeExp(EdgeID[cnt+e],exp);
exp1d->SetAdjacentElementExp(EdgeID[cnt+e],exp2d);
exp2d->SetEdgeExp(EdgeID[cnt+e], exp);
exp1d->SetAdjacentElementExp(EdgeID[cnt+e], exp2d);
}
cnt += m_bndCondExpansions[i]->GetExpSize();
}
if(m_session->DefinesSolverInfo("PROJECTION"))
{
std::string ProjectStr = m_session->GetSolverInfo("PROJECTION");
if((ProjectStr == "MixedCGDG")||(ProjectStr == "Mixed_CG_Discontinuous"))
std::string ProjectStr =
m_session->GetSolverInfo("PROJECTION");
if((ProjectStr == "MixedCGDG") ||
(ProjectStr == "Mixed_CG_Discontinuous"))
{
SetUpDG();
}
......@@ -167,13 +174,13 @@ namespace Nektar
const SpatialDomains::MeshGraphSharedPtr &graph2D,
const std::string &variable,
const bool SetUpJustDG,
const bool DeclareCoeffPhysArrays) :
ExpList2D(In,DeclareCoeffPhysArrays),
m_trace(NullExpListSharedPtr)
const bool DeclareCoeffPhysArrays)
: ExpList2D(In,DeclareCoeffPhysArrays),
m_trace(NullExpListSharedPtr)
{
// Set up boundary conditions for this variable.
SpatialDomains::BoundaryConditions bcs(m_session, graph2D);
GenerateBoundaryConditionExpansion(graph2D,bcs,variable);
GenerateBoundaryConditionExpansion(graph2D, bcs, variable);
if (DeclareCoeffPhysArrays)
{
......@@ -227,8 +234,11 @@ namespace Nektar
if(m_session->DefinesSolverInfo("PROJECTION"))