To receive notifications about scheduled maintenance, please subscribe to the mailing-list gitlab-operations@sympa.ethz.ch. You can subscribe to the mailing-list at https://sympa.ethz.ch

Commit 2c7bee0c authored by simone's avatar simone
Browse files

Merging lifev-parallel into head.

notes:
* from now on you will need trilinos instead of aztecoo
* the testsuite is now broken.
* the only solvers that works for now are Oseen, VenantKirchoff and fsi.
* the Handler classes are now obsolete. They are superseeded by FESpace
* the postprocess should come out of the solvers and the default filter
  is ensight. I suggest to install paraview 3.x

next steps:
* import trilinos in cmcsforge
* clean-up the testsuite
* insert mpirun in tests executions
* install trilinos on cmcsforge

Let lifev-dev know of any problem, please
parent abb836ea
......@@ -9,5 +9,5 @@ c-basic-offset: 4
evaluate: (c-set-offset 'innamespace '0)
show-trailing-whitespace: t
indicate-empty-lines: t
;evaluate: (add-hook 'write-file-hooks 'delete-trailing-whitespace)
evaluate: (add-hook 'write-file-hooks 'delete-trailing-whitespace)
......@@ -7,22 +7,22 @@ HOWTO to make a release X_Y_Z
2- update NEWS
3- run make distcheck
3- run make distcheck
o you can try the following command to speed up this check
make distcheck DISTCHECK_CONFIGURE_FLAGS="--enable-opt2" AM_MAKEFLAGS="-j <n>"
make distcheck DISTCHECK_CONFIGURE_FLAGS="--enable-opt2" AM_MAKEFLAGS="-j <n>"
where <n> is the number of processes you want to launch concurrently
e.g.:
make distcheck DISTCHECK_CONFIGURE_FLAGS="--enable-debug --with-aztec=/usr/people1e/deparis/CODICE/supersizing/local/ --with-mpi-include=/usr/lib/mpich/include/ --with-mpi-lib=/usr/lib/mpich/lib/ F77=gfortran"
make distcheck DISTCHECK_CONFIGURE_FLAGS="--enable-debug --with-aztec=/usr/people1e/deparis/CODICE/supersizing/local/ --with-mpi-include=/usr/lib/mpich/include/ --with-mpi-lib=/usr/lib/mpich/lib/ F77=gfortran"
o ensures that the generated tarball is complete
o runs all tests from the tarball
If step 3 went fine then
If step 3 went fine then
4- tag HEAD with the tag LIFEV_X_Y_Z_BRANCH
cd top_srcdir
......
......@@ -56,7 +56,7 @@ apidox-all:
make apidox
cd life && make apidox
all-local:
all-local:
make apidox-all
@echo ""
@echo "************************************************************"
......@@ -75,11 +75,11 @@ upload-api:
MOSTLYCLEANFILES = ChangeLog
$(top_srcdir)/acinclude.m4:
@echo 'm4_include([admin/libtool.m4])' > acinclude.m4
@echo 'm4_include([admin/libtool.m4])' > acinclude.m4
@echo 'm4_include([admin/ltversion.m4])' >> acinclude.m4
@echo 'm4_include([admin/ltoptions.m4])' >> acinclude.m4
@echo 'm4_include([admin/ltsugar.m4])' >> acinclude.m4
@echo 'm4_include([admin/ac_check_aztec.m4])' >> acinclude.m4
@echo 'm4_include([admin/ac_check_trilinos.m4])' >> acinclude.m4
@echo 'm4_include([admin/ac_check_boost.m4])' >> acinclude.m4
@echo 'm4_include([admin/ac_check_itk.m4])' >> acinclude.m4
@echo 'm4_include([admin/ac_check_lapack.m4])' >> acinclude.m4
......@@ -91,6 +91,8 @@ $(top_srcdir)/acinclude.m4:
@echo 'm4_include([admin/ac_find_file.m4])' >> acinclude.m4
@echo 'm4_include([admin/lifev_check_compilers.m4])'>>acinclude.m4
@echo 'm4_include([admin/lifev_default_paths.m4])'>>acinclude.m4
@echo 'm4_include([admin/ax_create_pkgconfig_info.m4])'>>acinclude.m4
@echo 'm4_include([admin/lifev_create_subdirlist.m4])'>>acinclude.m4
#Makefile.headers: tools/update-headers
......
......@@ -4,17 +4,17 @@
LIFECORE_HDRS=life/lifecore/GetPot.hpp life/lifecore/SmartAssert.hpp life/lifecore/about.hpp life/lifecore/application.hpp life/lifecore/chrono.hpp life/lifecore/dataString.hpp life/lifecore/debug.hpp life/lifecore/factory.hpp life/lifecore/fortran_wrap.hpp life/lifecore/life.hpp life/lifecore/lifeassert.hpp life/lifecore/lifemacros.hpp life/lifecore/lifeversion.hpp life/lifecore/policy.hpp life/lifecore/singleton.hpp life/lifecore/switch.hpp life/lifecore/typeInfo.hpp life/lifecore/util_string.hpp
LIFEARRAY_HDRS=life/lifearray/CSRMatrix.hpp life/lifearray/MSRMatrix.hpp life/lifearray/MixedMatrix.hpp life/lifearray/RNM.hpp life/lifearray/RNM_op.hpp life/lifearray/RNM_opc.hpp life/lifearray/RNM_tpl.hpp life/lifearray/SimpleVect.hpp life/lifearray/VBRMatrix.hpp life/lifearray/blockMatrix.hpp life/lifearray/boostmatrix.hpp life/lifearray/connectivity.hpp life/lifearray/elemMat.hpp life/lifearray/elemVec.hpp life/lifearray/pattern.hpp life/lifearray/sparseArray.hpp life/lifearray/tab.hpp life/lifearray/tridiagMatrix.hpp life/lifearray/variables.hpp life/lifearray/vecUnknown.hpp
LIFEARRAY_HDRS=life/lifearray/CSRMatrix.hpp life/lifearray/EpetraMatrix.hpp life/lifearray/EpetraVector.hpp life/lifearray/MSRMatrix.hpp life/lifearray/MixedMatrix.hpp life/lifearray/RNM.hpp life/lifearray/RNM_op.hpp life/lifearray/RNM_opc.hpp life/lifearray/RNM_tpl.hpp life/lifearray/SimpleVect.hpp life/lifearray/VBRMatrix.hpp life/lifearray/blockMatrix.hpp life/lifearray/boostmatrix.hpp life/lifearray/connectivity.hpp life/lifearray/elemMat.hpp life/lifearray/elemVec.hpp life/lifearray/pattern.hpp life/lifearray/sparseArray.hpp life/lifearray/tab.hpp life/lifearray/tridiagMatrix.hpp life/lifearray/variables.hpp life/lifearray/vecUnknown.hpp
LIFEALG_HDRS=life/lifealg/PressureMatrixSolver.hpp life/lifealg/SolverAztec.hpp life/lifealg/SolverBase.hpp life/lifealg/SolverPETSC.hpp life/lifealg/SolverUMFPACK.hpp life/lifealg/algebraic_facto.hpp life/lifealg/cblas.hpp life/lifealg/clapack.hpp life/lifealg/dataAztec.hpp life/lifealg/dataNewton.hpp life/lifealg/generalizedAitken.hpp life/lifealg/givens.hpp life/lifealg/gmres.hpp life/lifealg/inexactLU.hpp life/lifealg/iteration.hpp life/lifealg/linesearch_cubic.hpp life/lifealg/linesearch_parabolic.hpp life/lifealg/newton.hpp life/lifealg/nonLinRichardson.hpp life/lifealg/picard.hpp life/lifealg/preconditioner.hpp life/lifealg/saddlePointCG.hpp
LIFEALG_HDRS=life/lifealg/EpetraMap.hpp life/lifealg/EpetraPreconditioner.hpp life/lifealg/PressureMatrixSolver.hpp life/lifealg/SolverAztec.hpp life/lifealg/SolverBase.hpp life/lifealg/SolverPETSC.hpp life/lifealg/SolverTrilinos.hpp life/lifealg/SolverUMFPACK.hpp life/lifealg/algebraic_facto.hpp life/lifealg/cblas.hpp life/lifealg/clapack.hpp life/lifealg/dataAztec.hpp life/lifealg/dataNewton.hpp life/lifealg/generalizedAitken.hpp life/lifealg/givens.hpp life/lifealg/gmres.hpp life/lifealg/inexactLU.hpp life/lifealg/iteration.hpp life/lifealg/linesearch_cubic.hpp life/lifealg/linesearch_parabolic.hpp life/lifealg/newton.hpp life/lifealg/nonLinRichardson.hpp life/lifealg/picard.hpp life/lifealg/preconditioner.hpp life/lifealg/saddlePointCG.hpp
LIFEMESH_HDRS=life/lifemesh/bareItems.hpp life/lifemesh/basisElSh.hpp life/lifemesh/dataMesh.hpp life/lifemesh/geo0D.hpp life/lifemesh/geoElement.hpp life/lifemesh/geoND.hpp life/lifemesh/identifier.hpp life/lifemesh/markers.hpp life/lifemesh/markers_base.hpp life/lifemesh/meshEntity.hpp life/lifemesh/mesh_util_base.hpp life/lifemesh/regionMesh2D.hpp life/lifemesh/regionMesh3D.hpp life/lifemesh/subDomainNeighbors.hpp
LIFEMESH_HDRS=life/lifemesh/bareItems.hpp life/lifemesh/basisElSh.hpp life/lifemesh/dataMesh.hpp life/lifemesh/geo0D.hpp life/lifemesh/geoElement.hpp life/lifemesh/geoND.hpp life/lifemesh/identifier.hpp life/lifemesh/markers.hpp life/lifemesh/markers_base.hpp life/lifemesh/meshEntity.hpp life/lifemesh/mesh_util_base.hpp life/lifemesh/partitionMesh.hpp life/lifemesh/regionMesh2D.hpp life/lifemesh/regionMesh3D.hpp life/lifemesh/subDomainNeighbors.hpp
LIFEFEM_HDRS=life/lifefem/Operator01.hpp life/lifefem/assemb.hpp life/lifefem/bcCond.hpp life/lifefem/bcFunction.hpp life/lifefem/bcHandler.hpp life/lifefem/bcManage.hpp life/lifefem/bcVector.hpp life/lifefem/bdf.hpp life/lifefem/bdfNS.hpp life/lifefem/currentBFDG.hpp life/lifefem/currentBdDG.hpp life/lifefem/currentBdFE.hpp life/lifefem/currentFE.hpp life/lifefem/currentFEDG.hpp life/lifefem/currentHdivFE.hpp life/lifefem/currentIFDG.hpp life/lifefem/dataTime.hpp life/lifefem/dataTransient.hpp life/lifefem/dof.hpp life/lifefem/dofByFace.hpp life/lifefem/dofDG.hpp life/lifefem/dofInterface3Dto2D.hpp life/lifefem/dofInterface3Dto3D.hpp life/lifefem/dofInterfaceBase.hpp life/lifefem/dofInterfaceHandler.hpp life/lifefem/elemOper.hpp life/lifefem/elemOper2Fluids.hpp life/lifefem/elemOper_ext.hpp life/lifefem/geoMap.hpp life/lifefem/geoMapDG.hpp life/lifefem/interpolate.hpp life/lifefem/localDofPattern.hpp life/lifefem/meshMotion.hpp life/lifefem/postProc.hpp life/lifefem/quadRule.hpp life/lifefem/refEle.hpp life/lifefem/refEleDG.hpp life/lifefem/refFE.hpp life/lifefem/refFEDG.hpp life/lifefem/refHdivFE.hpp life/lifefem/refHybridFE.hpp life/lifefem/regionMesh3D_ALE.hpp life/lifefem/sobolevNorms.hpp life/lifefem/staticBdFE.hpp life/lifefem/subelements.hpp life/lifefem/v2elemVec.hpp life/lifefem/values.hpp
LIFEFEM_HDRS=life/lifefem/FESpace.hpp life/lifefem/Operator01.hpp life/lifefem/assemb.hpp life/lifefem/assembGeneric.hpp life/lifefem/bcCond.hpp life/lifefem/bcFunction.hpp life/lifefem/bcHandler.hpp life/lifefem/bcManage.hpp life/lifefem/bcVector.hpp life/lifefem/bdf.hpp life/lifefem/bdfNS.hpp life/lifefem/bdfNS_template.hpp life/lifefem/bdf_template.hpp life/lifefem/currentBFDG.hpp life/lifefem/currentBdDG.hpp life/lifefem/currentBdFE.hpp life/lifefem/currentFE.hpp life/lifefem/currentFEDG.hpp life/lifefem/currentHdivFE.hpp life/lifefem/currentIFDG.hpp life/lifefem/dataTime.hpp life/lifefem/dataTransient.hpp life/lifefem/dof.hpp life/lifefem/dofByFace.hpp life/lifefem/dofDG.hpp life/lifefem/dofInterface3Dto2D.hpp life/lifefem/dofInterface3Dto3D.hpp life/lifefem/dofInterfaceBase.hpp life/lifefem/dofInterfaceHandler.hpp life/lifefem/elemOper.hpp life/lifefem/elemOper2Fluids.hpp life/lifefem/elemOper_ext.hpp life/lifefem/geoMap.hpp life/lifefem/geoMapDG.hpp life/lifefem/interpolate.hpp life/lifefem/localDofPattern.hpp life/lifefem/meshMotion.hpp life/lifefem/postProc.hpp life/lifefem/quadRule.hpp life/lifefem/refEle.hpp life/lifefem/refEleDG.hpp life/lifefem/refFE.hpp life/lifefem/refFEDG.hpp life/lifefem/refHdivFE.hpp life/lifefem/refHybridFE.hpp life/lifefem/regionMesh3D_ALE.hpp life/lifefem/sobolevNorms.hpp life/lifefem/staticBdFE.hpp life/lifefem/subelements.hpp life/lifefem/v2elemVec.hpp life/lifefem/values.hpp
LIFESOLVER_HDRS=life/lifesolver/AFSolvers.hpp life/lifesolver/ElasticStructureHandler.hpp life/lifesolver/FSIOperator.hpp life/lifesolver/FSISolver.hpp life/lifesolver/HyperbolicSolverIP.hpp life/lifesolver/LevelSetSolver.hpp life/lifesolver/LevelSetSolverUtils.hpp life/lifesolver/NSSolver2FluidsMixed.hpp life/lifesolver/NavierStokesAleHandler.hpp life/lifesolver/NavierStokesAleSolver.hpp life/lifesolver/NavierStokesAleSolverCT.hpp life/lifesolver/NavierStokesAleSolverPC.hpp life/lifesolver/NavierStokesHandler.hpp life/lifesolver/NavierStokesSolverPC.hpp life/lifesolver/NavierStokesWithFlux.hpp life/lifesolver/VenantKirchhofSolver.hpp life/lifesolver/convDiffReactHandler.hpp life/lifesolver/convDiffReactSolverPC.hpp life/lifesolver/darcyHandler.hpp life/lifesolver/darcySolver.hpp life/lifesolver/darcySolverBase.hpp life/lifesolver/dataConvDiffReact.hpp life/lifesolver/dataDarcy.hpp life/lifesolver/dataElasticStructure.hpp life/lifesolver/dataNS2Fluids.hpp life/lifesolver/dataNavierStokes.hpp life/lifesolver/dataSimplifiedStructure.hpp life/lifesolver/exactJacobianBase.hpp life/lifesolver/fixedPointBase.hpp life/lifesolver/fluidToMaster.hpp life/lifesolver/ipStabilization.hpp life/lifesolver/nsip.hpp life/lifesolver/nsipterms.hpp life/lifesolver/parabolicSolver.hpp life/lifesolver/reducedLinFluid.hpp life/lifesolver/sdStabilization.hpp life/lifesolver/simplifiedStructure.hpp life/lifesolver/steklovPoincareBase.hpp life/lifesolver/timeSolver.hpp
LIFESOLVER_HDRS=life/lifesolver/AFSolvers.hpp life/lifesolver/ElasticStructureHandler.hpp life/lifesolver/FSIOperator.hpp life/lifesolver/FSISolver.hpp life/lifesolver/HarmonicExtensionSolver.hpp life/lifesolver/HyperbolicSolverIP.hpp life/lifesolver/LevelSetSolver.hpp life/lifesolver/LevelSetSolverUtils.hpp life/lifesolver/NSSolver2FluidsMixed.hpp life/lifesolver/NavierStokesAleHandler.hpp life/lifesolver/NavierStokesAleSolver.hpp life/lifesolver/NavierStokesAleSolverCT.hpp life/lifesolver/NavierStokesAleSolverPC.hpp life/lifesolver/NavierStokesHandler.hpp life/lifesolver/NavierStokesSolver.hpp life/lifesolver/NavierStokesSolverPC.hpp life/lifesolver/NavierStokesWithFlux.hpp life/lifesolver/Oseen.hpp life/lifesolver/VenantKirchhofSolver.hpp life/lifesolver/convDiffReactHandler.hpp life/lifesolver/convDiffReactSolverPC.hpp life/lifesolver/darcyHandler.hpp life/lifesolver/darcySolver.hpp life/lifesolver/darcySolverBase.hpp life/lifesolver/dataConvDiffReact.hpp life/lifesolver/dataDarcy.hpp life/lifesolver/dataElasticStructure.hpp life/lifesolver/dataNS2Fluids.hpp life/lifesolver/dataNavierStokes.hpp life/lifesolver/dataSimplifiedStructure.hpp life/lifesolver/exactJacobianBase.hpp life/lifesolver/fixedPointBase.hpp life/lifesolver/fluidToMaster.hpp life/lifesolver/ipStabilization.hpp life/lifesolver/nsip.hpp life/lifesolver/nsipterms.hpp life/lifesolver/parabolicSolver.hpp life/lifesolver/reducedLinFluid.hpp life/lifesolver/sdStabilization.hpp life/lifesolver/simplifiedStructure.hpp life/lifesolver/steklovPoincareBase.hpp life/lifesolver/timeSolver.hpp life/lifesolver/OseenShapeDerivative.hpp
LIFEFILTERS_HDRS=life/lifefilters/ensight.hpp life/lifefilters/ensight7Writer.hpp life/lifefilters/gmsh_wrtrs.hpp life/lifefilters/gmv_wrtrs.hpp life/lifefilters/importer.hpp life/lifefilters/medit.hpp life/lifefilters/medit_wrtrs.hpp life/lifefilters/mesh_util.hpp life/lifefilters/openDX_wrtrs.hpp life/lifefilters/postProc.hpp life/lifefilters/readMesh2D.hpp life/lifefilters/readMesh3D.hpp life/lifefilters/selectMarker.hpp life/lifefilters/vtk_wrtrs.hpp
LIFEFILTERS_HDRS=life/lifefilters/ensight.hpp life/lifefilters/ensight7Writer.hpp life/lifefilters/gmsh_wrtrs.hpp life/lifefilters/gmv_wrtrs.hpp life/lifefilters/importer.hpp life/lifefilters/medit.hpp life/lifefilters/medit_wrtrs.hpp life/lifefilters/mesh_util.hpp life/lifefilters/openDX_wrtrs.hpp life/lifefilters/postProc.hpp life/lifefilters/readMesh2D.hpp life/lifefilters/readMesh3D.hpp life/lifefilters/selectMarker.hpp life/lifefilters/vtk_wrtrs.hpp life/lifefilters/exporter.hpp
nobase_include_HEADERS=lifeconfig.h\
$(LIFECORE_HDRS)\
......
......@@ -4,7 +4,7 @@
Bugs fixed in 0.8.1:
====================
[configure]
* ac_aztec was missconfigured. Actually, aztecoo is not supported, you should
* ac_aztec was missconfigured. Actually, aztecoo is not supported, you should
use plain aztec.
Bugs fixed in 0.8.0:
......@@ -55,11 +55,11 @@ New in 0.7.0:
** Renamed lifeV.hpp to life.hpp and split it
** lifeversion.hpp to handle macros and functions to interrogate
life version
** lifemacros.hpp for deprecation, (no)export macros
** lifemacros.hpp for deprecation, (no)export macros
** lifeassert.hpp for assertions macros
* Added SmartAssert class and LIFEV_ASSERT macro (CP)
* Added AboutData class (CP)
** provides information on authors and contributors to an application
* Added AboutData class (CP)
** provides information on authors and contributors to an application
** provides license, copyright and a few other information
* Added Application class (CP)
** base class for applications
......@@ -97,9 +97,9 @@ New in 0.7.0:
New in 0.6.0:
=============
[configure]
* Cleanup, homogenized and centralized lookup directories
* Cleanup, homogenized and centralized lookup directories
for 3rd party libraries (CP,CW)
* Added support for AMD ACML and Intel MKL for both 32bits
* Added support for AMD ACML and Intel MKL for both 32bits
and 64bits arch(CP)
* [lifefem]
......@@ -172,9 +172,9 @@ New in 0.5.0:
* Added FSISolver class (CP)
[lifefilters]
* Added netgen reader/writer(solution) (MM)
* Added gmsh reader (CP)
* Added frontend for mesh readers (CP)
* Added netgen reader/writer(solution) (MM)
* Added gmsh reader (CP)
* Added frontend for mesh readers (CP)
[testsuite]
* Added test for 3D/0D coupling (AM)
......@@ -184,7 +184,7 @@ New in 0.5.0:
* Removed test_darcytetra (VM)
* oned solver can solve 2 coupled tubes (VM)
* Centralized all FSI tests in test_fsi (GF)
* Added test for netgen in lifefilters (MM)
* Added test for netgen in lifefilters (MM)
Bugs fixed in 0.4.0:
......@@ -301,9 +301,9 @@ New in 0.1.0pre5:
=================
* added --enable-debug and --enable-opt to configure script
* LifeV is finally copyrighted properly
* LifeV libraries are now LGPL. Header and implementation have
* LifeV libraries are now LGPL. Header and implementation have
been updated accordingly.
* LifeV testsuite is now GPL. Header and implementation have
* LifeV testsuite is now GPL. Header and implementation have
been updated accordingly.
......@@ -317,7 +317,7 @@ New in 0.1.0pre4:
=================
* 'make distcheck' works from start to finish properly
* lifev compiles entirely included all testsuite tests
* removed entirely testsuite/development: either created a proper
* removed entirely testsuite/development: either created a proper
testsuite/test_{} test or moved the test to the lifev-sandbox
* added lifecore/testsuite for small tests programs related to lifecore
* life libraries should be std:: clean. no more using namespace std::
......
# -*- autoconf -*-
#
#
AC_INIT([lifev], [0.8.1], [lifev-dev@webmail.mate.polimi.it])
AC_INIT([lifev], [0.9.0], [lifev-dev@webmail.mate.polimi.it])
LIFEV_VERSION_MAJOR=0
LIFEV_VERSION_MINOR=8
LIFEV_VERSION_MICRO=1
LIFEV_VERSION_MINOR=9
LIFEV_VERSION_MICRO=0
LIFEV_VERSION_EXTRA=
AC_SUBST(LIFEV_VERSION_MAJOR)
AC_SUBST(LIFEV_VERSION_MINOR)
......@@ -43,15 +43,15 @@ AM_CONFIG_HEADER(lifeconfig.h)
LIFEV_CHECK_COMPILERS
# no need for static libs
AC_DISABLE_STATIC
AC_ENABLE_STATIC
AC_PROG_LIBTOOL
AC_CHECK_TYPE(size_t, unsigned)
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
dnl under amd64 size_t, unsigned do not have the same type
dnl AC_CHECK_TYPE(size_t, unsigned)
AC_MSG_CHECKING(for size_t == uint)
AC_TRY_RUN(AC_LANG_PROGRAM([
#include <cstdlib>
......@@ -67,7 +67,8 @@ return !(sizeof(size_t)==sizeof(uint));
AC_MSG_RESULT(no)
size_t_same_as_uint=no
])
AC_LANG_RESTORE
dnl AC_LANG_RESTORE
# pdflatex
AC_CHECK_PROG(PDFLATEX, pdflatex,[pdflatex],[no])
......@@ -91,19 +92,19 @@ dnl
dnl checks for some scientific computing libraries
dnl
dnl libm
AC_CHECK_LIB(m,cos,[LIBS="-lm ${LIBS}"],${LIBS})
AC_CHECK_LIB(m,cos,[LIBS="-lm ${LIBS}"],[ echo "simple math functions not found"; exit 1;])
dnl umfpack
# disable it for not since it is not used yet: need to check for "NO"
# AC_CHECK_UMFPACK(4.3.0) # at least umfpack 4.3
AM_CONDITIONAL(HAVE_UMFPACK, test "x$umfpack_libs" != "x" )
dnl lapack, blas, g2c
dnl lapack, blas
AC_CHECK_LAPACK
AC_CHECK_UMFPACK
AM_CONDITIONAL(HAVE_UMFPACK, test "x$umfpack_libs" != "x" )
dnl AC_CHECK_UMFPACK
dnl AM_CONDITIONAL(HAVE_UMFPACK, test "x$umfpack_libs" != "x" )
dnl aztec
AC_CHECK_AZTEC
dnl trilinos
AC_CHECK_TRILINOS
dnl petsc
dnl AC_CHECK_PETSC(2.1.6) #
AM_CONDITIONAL(HAVE_PETSC, test "x$petsc_libs" != "x" )
......@@ -117,16 +118,16 @@ AC_CHECK_LIB([grace_np],GraceClose,[grace_libs="-lgrace_np"],[grace_libs=""])
AC_SUBST(grace_libs)
dnl pvm
AC_CHECK_PVM
AM_CONDITIONAL(HAVE_PVM, test "x$pvm_libs" != "x" )
dnl AC_CHECK_PVM
dnl AM_CONDITIONAL(HAVE_PVM, test "x$pvm_libs" != "x" )
#all_includes="-I\$(top_srcdir) -I\$(top_srcdir)/life/lifecore -I\$(top_srcdir)/life/lifearray -I\$(top_srcdir)/life/lifemesh -I\$(top_srcdir)/life/lifealg -I\$(top_srcdir)/life/lifefem -I\$(top_srcdir)/life/lifesolver -I\$(top_srcdir)/life/lifefilters"
#AC_SUBST(all_includes)
CPPFLAGS="-I\$(top_srcdir) ${CPPFLAGS}"
CPPFLAGS="-I\${top_srcdir} ${CPPFLAGS}"
life_libs="\$(top_builddir)/life/lifefilters/liblifefilters.la \$(top_builddir)/life/lifesolver/liblifesolver.la \$(top_builddir)/life/lifefem/liblifefem.la \$(top_builddir)/life/lifealg/liblifealg.la \$(top_builddir)/life/lifemesh/liblifemesh.la \$(top_builddir)/life/lifearray/liblifearray.la \$(top_builddir)/life/lifecore/liblifecore.la"
life_libs="\${top_builddir}/life/lifefilters/liblifefilters.la \${top_builddir}/life/lifesolver/liblifesolver.la \${top_builddir}/life/lifefem/liblifefem.la \${top_builddir}/life/lifealg/liblifealg.la \${top_builddir}/life/lifemesh/liblifemesh.la \${top_builddir}/life/lifearray/liblifearray.la \${top_builddir}/life/lifecore/liblifecore.la"
#life_libs="\$(top_builddir)/life/lifefilters/liblifefilters.la \$(top_builddir)/life/lifesolver/liblifesolver.la \$(top_builddir)/life/lifefem/liblifefem.la \$(top_builddir)/life/lifealg/liblifealg.la \$(top_builddir)/life/lifemesh/liblifemesh.la \$(top_builddir)/life/lifearray/liblifearray.la \$(top_builddir)/life/lifecore/liblifecore.la"
......
/* -*- Mode : c++; c-tab-always-indent: t; indent-tabs-mode: nil; -*-
<short description here>
Gilles Fourestey gilles.fourestey@epfl.ch
*/
/** \file EpetraMap.cpp
*/
#include "EpetraMap.hpp"
namespace LifeV
{
EpetraMap::EpetraMap():
M_epetraMap(0),
M_uniqueEpetraMap(0)
{}
EpetraMap::EpetraMap(int NumGlobalElements,
int NumMyElements,
int* MyGlobalElements,
int IndexBase,
const Epetra_Comm& Comm):
M_epetraMap(0),
M_uniqueEpetraMap(0)
{
createMap( NumGlobalElements,
NumMyElements,
MyGlobalElements,
IndexBase,
Comm);
}
EpetraMap::~EpetraMap()
{
delete M_epetraMap;
delete M_uniqueEpetraMap;
}
EpetraMap &
EpetraMap::operator = (const EpetraMap& _epetraMap)
{
if (this != &_epetraMap)
{
if (!_epetraMap.getEpetra_Map() == 0)
{
if (M_epetraMap != 0)
{
*M_epetraMap = *_epetraMap.getEpetra_Map();
*M_uniqueEpetraMap = *_epetraMap.getUniqueEpetra_Map();
}
else
{
M_epetraMap = new Epetra_Map(*_epetraMap.getEpetra_Map());
M_uniqueEpetraMap = new Epetra_Map(*_epetraMap.getUniqueEpetra_Map());
}
}
}
return *this;
}
EpetraMap &
EpetraMap::operator += (const EpetraMap& _epetraMap)
{
if (this->getEpetra_Map() == 0)
{
this->operator = (_epetraMap);
return *this;
}
if (_epetraMap.getEpetra_Map() == 0)
return *this;
int* pointer;
std::vector<int> map;
pointer = M_epetraMap->MyGlobalElements();
for (int ii = 0; ii < M_epetraMap->NumMyElements(); ++ii, ++pointer)
{
map.push_back(*pointer);
}
int numGlobalElements = getUniqueEpetra_Map()->NumGlobalElements();
// std::cout << "NumGlobalElements = " << numGlobalElements << std::endl;
pointer = _epetraMap.getEpetra_Map()->MyGlobalElements();
for (int ii = 0; ii < _epetraMap.getEpetra_Map()->NumMyElements(); ++ii, ++pointer)
{
// std::cout << "pointer = " << *pointer << std::endl;
map.push_back(*pointer + numGlobalElements);
}
int IndexBase = M_epetraMap->IndexBase();
delete M_epetraMap;
M_epetraMap = new Epetra_Map(-1, map.size(), &map[0], IndexBase, _epetraMap.getEpetra_Map()->Comm());
map.resize(0);
pointer = M_uniqueEpetraMap->MyGlobalElements();
for (int ii = 0; ii < M_uniqueEpetraMap->NumMyElements(); ++ii, ++pointer)
{
map.push_back(*pointer);
}
pointer = _epetraMap.getUniqueEpetra_Map()->MyGlobalElements();
for (int ii = 0; ii < _epetraMap.getUniqueEpetra_Map()->NumMyElements(); ++ii, ++pointer)
{
map.push_back(*pointer + numGlobalElements);
}
delete M_uniqueEpetraMap;
M_uniqueEpetraMap = new Epetra_Map(-1, map.size(), &map[0], IndexBase, _epetraMap.getEpetra_Map()->Comm());
// uniqueMap();
return *this;
}
EpetraMap::EpetraMap(const EpetraMap& _epetraMap):
M_epetraMap (0),
M_uniqueEpetraMap(0)
{
this->operator=(_epetraMap);
}
void
EpetraMap::createMap(int NumGlobalElements,
int NumMyElements,
int* MyGlobalElements,
int IndexBase,
const Epetra_Comm &Comm)
{
delete M_epetraMap;
delete M_uniqueEpetraMap;
M_epetraMap = new Epetra_Map(NumGlobalElements,
NumMyElements,
MyGlobalElements,
IndexBase,
Comm);
uniqueMap();
}
void
EpetraMap::uniqueMap()
{
int MyPID ( M_epetraMap->Comm().MyPID() );
int NumIDs ( M_epetraMap->NumMyElements() );
int indexBase( M_epetraMap->MinAllGID() );
Epetra_IntSerialDenseVector GIDList (NumIDs);
M_epetraMap->MyGlobalElements(GIDList.Values());
Epetra_IntSerialDenseVector PIDList (NumIDs);
Epetra_IntSerialDenseVector LIDList (NumIDs);
M_epetraMap->RemoteIDList(NumIDs, GIDList.Values(), PIDList.Values(), LIDList.Values());
// now use LIDList has a helping pointer
int MyUniqueElements(0);
for (int i(0); i< NumIDs; i++)
if (PIDList[i] == MyPID)
LIDList[MyUniqueElements++] = GIDList[i];
LIDList.Resize(MyUniqueElements);
bubbleSort(LIDList);
delete M_uniqueEpetraMap;
M_uniqueEpetraMap = new Epetra_Map(-1,
LIDList.Length(),
LIDList.Values(),
indexBase,
M_epetraMap->Comm());
}
void
EpetraMap::bubbleSort(Epetra_IntSerialDenseVector& Elements)
{
int hold;
for (int pass(0); pass < Elements.Length()-1; pass++)
for (int j(0); j < Elements.Length()-1; j++)
if (Elements[j] > Elements[j+1])
{
hold = Elements[j];
Elements[j] = Elements[j+1];
Elements[j+1]= hold;
}
}
void
EpetraMap::setUp(const RefFE& refFE,
Epetra_Comm& _comm,
std::vector<int>& repeatedNodeVector,
std::vector<int>& repeatedEdgeVector,
std::vector<int>& repeatedFaceVector,
std::vector<int>& repeatedElemVector)
{
int indexBase = 1;
if (refFE.nbDofPerVertex)
{
int numNode = repeatedNodeVector.size();
EpetraMap repeatedNodeMap(-1, numNode, &repeatedNodeVector[0], indexBase, _comm);
operator+=(repeatedNodeMap);
}
if (refFE.nbDofPerEdge)
{
int numEdge = repeatedEdgeVector.size();
EpetraMap repeatedEdgeMap(-1, numEdge, &repeatedEdgeVector[0], indexBase, _comm);
operator+=(repeatedEdgeMap);
}
if (refFE.nbDofPerFace)
{
int numFace = repeatedFaceVector.size();
EpetraMap repeatedFaceMap(-1, numFace, &repeatedFaceVector[0], indexBase, _comm);
operator+=(repeatedFaceMap);
}
if (refFE.nbDofPerVolume)
{
int numElem = repeatedElemVector.size();
EpetraMap repeatedElemMap(-1, numElem, &repeatedElemVector[0], indexBase, _comm);
operator+=(repeatedElemMap);
}
}
}
/* -*- Mode : c++; c-tab-always-indent: t; indent-tabs-mode: nil; -*-
This file is part of the LifeV library
Author(s): Gilles Fourestey gilles.fourestey@epfl.ch
Date: 2004-10-26
Copyright (C) 2004 EPFL
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/** \file EpetraMap.hpp
*/
#ifndef _EPETRAMAP_
#define _EPETRAMAP_
#include <life/lifefem/refFE.hpp>
#include "Epetra_Map.h"
#include "Epetra_Comm.h"
#include "life/lifecore/life.hpp"
#include "life/lifemesh/partitionMesh.hpp"
namespace LifeV
{
////////////////////////////////////////////////////////////////
//
// Epetra Matrix format Wrapper
//
///////////////////////////////////////////////////////////////
class EpetraMap
{
public:
EpetraMap();
EpetraMap(int NumGlobalElements,
int NumMyElements,
int* MyGlobalElements,
int IndexBase,
const Epetra_Comm& Comm);
template<typename Mesh>
EpetraMap(const RefFE& refFE,
const partitionMesh<Mesh>& meshPart,
Epetra_Comm& _comm);
template<typename Mesh>
EpetraMap(const RefFE& refFE,
const Mesh& mesh,
Epetra_Comm& _comm);
EpetraMap(const EpetraMap& _epetraMap);
~EpetraMap();
EpetraMap& operator = (const EpetraMap& _epetraMap);
EpetraMap& operator += (const EpetraMap& _epetraMap);
EpetraMap operator + (const EpetraMap& _epetraMap)
{
EpetraMap map( *this );
return map += _epetraMap;
}
Epetra_Map const * getEpetra_Map() const
{return M_epetraMap;}
Epetra_Map const * getRepeatedEpetra_Map() const
{return M_epetraMap;}
Epetra_Map const * getUniqueEpetra_Map() const
{return M_uniqueEpetraMap;}
Epetra_Comm const& Comm() const { return M_uniqueEpetraMap->Comm(); }
// Epetra_Map* getEpetra_Map(){return M_epetraMap;}
void createMap(int NumGlobalElements,
int NumMyElements,
int* MyGlobalElements,
int IndexBase,
const Epetra_Comm &Comm) ;
// EpetraMap& uniqueMap();
private:
void uniqueMap();
void bubbleSort(Epetra_IntSerialDenseVector& Elements);
void setUp(const RefFE& refFE,
Epetra_Comm& _comm,
std::vector<int>& repeatedNodeVector,
std::vector<int>& repeatedEdgeVector,
std::vector<int>& repeatedFaceVector,
std::vector<int>& repeatedElemVector);
Epetra_Map* M_epetraMap;
Epetra_Map* M_uniqueEpetraMap;
};
template<typename Mesh>
EpetraMap::