Commit f8646256 authored by Thomas Witkowski's avatar Thomas Witkowski
Browse files

* Merge of PardisoSolver and parallel assembler

parent d56091a2
......@@ -127,6 +127,8 @@ $(SOURCE_DIR)/Element.h $(SOURCE_DIR)/ElementConnection.h \
$(SOURCE_DIR)/ElInfo.h $(SOURCE_DIR)/ElInfo1d.h $(SOURCE_DIR)/ElInfo2d.h $(SOURCE_DIR)/ElInfo3d.h \
$(SOURCE_DIR)/Error.h $(SOURCE_DIR)/Error.hh \
$(SOURCE_DIR)/Estimator.h $(SOURCE_DIR)/Estimator.cc \
$(SOURCE_DIR)/ResidualEstimator.h $(SOURCE_DIR)/ResidualEstimator.cc \
$(SOURCE_DIR)/ResidualParallelEstimator.h $(SOURCE_DIR)/ResidualParallelEstimator.cc \
$(SOURCE_DIR)/FiniteElemSpace.h \
$(SOURCE_DIR)/FixVec.h $(SOURCE_DIR)/FixVec.hh \
$(SOURCE_DIR)/FixVecConvert.h \
......@@ -134,7 +136,7 @@ $(SOURCE_DIR)/Flag.h \
$(SOURCE_DIR)/Global.h \
$(SOURCE_DIR)/GMResSolver.h $(SOURCE_DIR)/GMResSolver.hh \
$(SOURCE_DIR)/GMResSolver2.h $(SOURCE_DIR)/GMResSolver2.hh \
$(SOURCE_DIR)/TFQMR.h \ $(SOURCE_DIR)/TFQMR.hh \
$(SOURCE_DIR)/TFQMR.h $(SOURCE_DIR)/TFQMR.hh \
$(SOURCE_DIR)/VecSymSolver.h $(SOURCE_DIR)/VecSymSolver.hh \
$(SOURCE_DIR)/UmfPackSolver.h $(SOURCE_DIR)/UmfPackSolver.hh \
$(SOURCE_DIR)/PardisoSolver.h $(SOURCE_DIR)/PardisoSolver.hh $(SOURCE_DIR)/PardisoSolver.cc \
......@@ -152,7 +154,9 @@ $(SOURCE_DIR)/Preconditioner.h \
$(SOURCE_DIR)/Quadrature.h \
$(SOURCE_DIR)/RCNeighbourList.h \
$(SOURCE_DIRe)/RefinementManager.h \
$(SOURCE_DIR)/RefinementManager1d.h $(SOURCE_DIR)/RefinementManager2d.h $(SOURCE_DIR)/RefinementManager3d.h \
$(SOURCE_DIR)/RefinementManager1d.h \
$(SOURCE_DIR)/RefinementManager2d.h \
$(SOURCE_DIR)/RefinementManager3d.h \
$(SOURCE_DIR)/TecPlotWriter.h $(SOURCE_DIR)/TecPlotWriter.hh \
$(SOURCE_DIR)/Tetrahedron.h \
$(SOURCE_DIR)/Traverse.h \
......@@ -177,7 +181,9 @@ $(SOURCE_DIR)/demangle.cc \
$(SOURCE_DIR)/DOFAdmin.cc \
$(SOURCE_DIR)/DOFMatrix.cc \
$(SOURCE_DIR)/Element.cc \
$(SOURCE_DIR)/ElInfo1d.cc $(SOURCE_DIR)/ElInfo2d.cc $(SOURCE_DIR)/ElInfo3d.cc \
$(SOURCE_DIR)/ElInfo1d.cc \
$(SOURCE_DIR)/ElInfo2d.cc \
$(SOURCE_DIR)/ElInfo3d.cc \
$(SOURCE_DIR)/FiniteElemSpace.cc \
$(SOURCE_DIR)/FixVec.cc \
$(SOURCE_DIR)/Flag.cc \
......@@ -196,6 +202,7 @@ $(SOURCE_DIR)/RefinementManager2d.cc \
$(SOURCE_DIR)/RefinementManager3d.cc \
$(SOURCE_DIR)/Tetrahedron.cc \
$(SOURCE_DIR)/Traverse.cc \
$(SOURCE_DIR)/TraverseParallel.h $(SOURCE_DIR)/TraverseParallel.cc \
$(SOURCE_DIR)/Triangle.cc \
$(SOURCE_DIR)/TecPlotWriter.cc \
$(SOURCE_DIR)/ValueWriter.cc \
......@@ -211,11 +218,8 @@ $(SOURCE_DIR)/OpenMP.h
COMPOSITE_SOURCE_DIR = ../compositeFEM/src
if AMDIS_DEBUG
libcompositeFEM_la_CXXFLAGS = -g -O0 -Wall -DDEBUG=1 -I$(SOURCE_DIR)
else
libcompositeFEM_la_CXXFLAGS = -O2 -Wall -DDEBUG=0 -I$(SOURCE_DIR)
endif
libcompositeFEM_la_CXXFLAGS = $(libamdis_la_CXXFLAGS)
libcompositeFEM_la_SOURCES = $(COMPOSITE_SOURCE_DIR)/CFE_Integration.h \
$(COMPOSITE_SOURCE_DIR)/CFE_Integration.cc \
......
......@@ -166,26 +166,29 @@ am__libamdis_la_SOURCES_DIST = $(PARALLEL_DIR)/ConditionalEstimator.h \
$(SOURCE_DIR)/ElInfo1d.h $(SOURCE_DIR)/ElInfo2d.h \
$(SOURCE_DIR)/ElInfo3d.h $(SOURCE_DIR)/Error.h \
$(SOURCE_DIR)/Error.hh $(SOURCE_DIR)/Estimator.h \
$(SOURCE_DIR)/Estimator.cc $(SOURCE_DIR)/FiniteElemSpace.h \
$(SOURCE_DIR)/FixVec.h $(SOURCE_DIR)/FixVec.hh \
$(SOURCE_DIR)/FixVecConvert.h $(SOURCE_DIR)/Flag.h \
$(SOURCE_DIR)/Global.h $(SOURCE_DIR)/GMResSolver.h \
$(SOURCE_DIR)/GMResSolver.hh $(SOURCE_DIR)/GMResSolver2.h \
$(SOURCE_DIR)/GMResSolver2.hh $(SOURCE_DIR)/TFQMR.h \ \
$(SOURCE_DIR)/TFQMR.hh $(SOURCE_DIR)/VecSymSolver.h \
$(SOURCE_DIR)/VecSymSolver.hh $(SOURCE_DIR)/UmfPackSolver.h \
$(SOURCE_DIR)/UmfPackSolver.hh $(SOURCE_DIR)/PardisoSolver.h \
$(SOURCE_DIR)/PardisoSolver.hh $(SOURCE_DIR)/PardisoSolver.cc \
$(SOURCE_DIR)/Lagrange.h $(SOURCE_DIR)/Line.h \
$(SOURCE_DIR)/MacroElement.h $(SOURCE_DIR)/MacroWriter.h \
$(SOURCE_DIR)/Markings.h $(SOURCE_DIR)/Markings.hh \
$(SOURCE_DIR)/MemoryManager.h $(SOURCE_DIR)/Mesh.h \
$(SOURCE_DIR)/ODirSolver.h $(SOURCE_DIR)/ODirSolver.hh \
$(SOURCE_DIR)/OEMSolver.h $(SOURCE_DIR)/OEMSolver.hh \
$(SOURCE_DIR)/OResSolver.h $(SOURCE_DIR)/OResSolver.hh \
$(SOURCE_DIR)/Parameters.h $(SOURCE_DIR)/Parametric.h \
$(SOURCE_DIR)/Preconditioner.h $(SOURCE_DIR)/Quadrature.h \
$(SOURCE_DIR)/RCNeighbourList.h \
$(SOURCE_DIR)/Estimator.cc $(SOURCE_DIR)/ResidualEstimator.h \
$(SOURCE_DIR)/ResidualEstimator.cc \
$(SOURCE_DIR)/ResidualParallelEstimator.h \
$(SOURCE_DIR)/ResidualParallelEstimator.cc \
$(SOURCE_DIR)/FiniteElemSpace.h $(SOURCE_DIR)/FixVec.h \
$(SOURCE_DIR)/FixVec.hh $(SOURCE_DIR)/FixVecConvert.h \
$(SOURCE_DIR)/Flag.h $(SOURCE_DIR)/Global.h \
$(SOURCE_DIR)/GMResSolver.h $(SOURCE_DIR)/GMResSolver.hh \
$(SOURCE_DIR)/GMResSolver2.h $(SOURCE_DIR)/GMResSolver2.hh \
$(SOURCE_DIR)/TFQMR.h $(SOURCE_DIR)/TFQMR.hh \
$(SOURCE_DIR)/VecSymSolver.h $(SOURCE_DIR)/VecSymSolver.hh \
$(SOURCE_DIR)/UmfPackSolver.h $(SOURCE_DIR)/UmfPackSolver.hh \
$(SOURCE_DIR)/PardisoSolver.h $(SOURCE_DIR)/PardisoSolver.hh \
$(SOURCE_DIR)/PardisoSolver.cc $(SOURCE_DIR)/Lagrange.h \
$(SOURCE_DIR)/Line.h $(SOURCE_DIR)/MacroElement.h \
$(SOURCE_DIR)/MacroWriter.h $(SOURCE_DIR)/Markings.h \
$(SOURCE_DIR)/Markings.hh $(SOURCE_DIR)/MemoryManager.h \
$(SOURCE_DIR)/Mesh.h $(SOURCE_DIR)/ODirSolver.h \
$(SOURCE_DIR)/ODirSolver.hh $(SOURCE_DIR)/OEMSolver.h \
$(SOURCE_DIR)/OEMSolver.hh $(SOURCE_DIR)/OResSolver.h \
$(SOURCE_DIR)/OResSolver.hh $(SOURCE_DIR)/Parameters.h \
$(SOURCE_DIR)/Parametric.h $(SOURCE_DIR)/Preconditioner.h \
$(SOURCE_DIR)/Quadrature.h $(SOURCE_DIR)/RCNeighbourList.h \
$(SOURCE_DIRe)/RefinementManager.h \
$(SOURCE_DIR)/RefinementManager1d.h \
$(SOURCE_DIR)/RefinementManager2d.h \
......@@ -221,13 +224,15 @@ am__libamdis_la_SOURCES_DIST = $(PARALLEL_DIR)/ConditionalEstimator.h \
$(SOURCE_DIR)/RefinementManager2d.cc \
$(SOURCE_DIR)/RefinementManager3d.cc \
$(SOURCE_DIR)/Tetrahedron.cc $(SOURCE_DIR)/Traverse.cc \
$(SOURCE_DIR)/Triangle.cc $(SOURCE_DIR)/TecPlotWriter.cc \
$(SOURCE_DIR)/ValueWriter.cc $(SOURCE_DIR)/MemoryPool.h \
$(SOURCE_DIR)/MemoryPool.cc $(SOURCE_DIR)/MemoryManager.cc \
$(SOURCE_DIR)/VtkWriter.h $(SOURCE_DIR)/VtkWriter.cc \
$(SOURCE_DIR)/DataCollector.h $(SOURCE_DIR)/DataCollector.cc \
$(SOURCE_DIR)/ElementInfo.h $(SOURCE_DIR)/VertexInfo.h \
$(SOURCE_DIR)/PeriodicInfo.h $(SOURCE_DIR)/OpenMP.h
$(SOURCE_DIR)/TraverseParallel.h \
$(SOURCE_DIR)/TraverseParallel.cc $(SOURCE_DIR)/Triangle.cc \
$(SOURCE_DIR)/TecPlotWriter.cc $(SOURCE_DIR)/ValueWriter.cc \
$(SOURCE_DIR)/MemoryPool.h $(SOURCE_DIR)/MemoryPool.cc \
$(SOURCE_DIR)/MemoryManager.cc $(SOURCE_DIR)/VtkWriter.h \
$(SOURCE_DIR)/VtkWriter.cc $(SOURCE_DIR)/DataCollector.h \
$(SOURCE_DIR)/DataCollector.cc $(SOURCE_DIR)/ElementInfo.h \
$(SOURCE_DIR)/VertexInfo.h $(SOURCE_DIR)/PeriodicInfo.h \
$(SOURCE_DIR)/OpenMP.h
@USE_PARALLEL_AMDIS_TRUE@am__objects_1 = \
@USE_PARALLEL_AMDIS_TRUE@ libamdis_la-ConditionalEstimator.lo \
@USE_PARALLEL_AMDIS_TRUE@ libamdis_la-MeshStructure.lo \
......@@ -263,6 +268,8 @@ am_libamdis_la_OBJECTS = $(am__objects_1) \
libamdis_la-ILUPreconditioner.lo \
libamdis_la-ILUTPreconditioner.lo libamdis_la-BFGS_Precond.lo \
libamdis_la-DOFVector.lo libamdis_la-Estimator.lo \
libamdis_la-ResidualEstimator.lo \
libamdis_la-ResidualParallelEstimator.lo \
libamdis_la-PardisoSolver.lo libamdis_la-ProblemInstat.lo \
libamdis_la-ProblemNonLin.lo libamdis_la-NonLinUpdater.lo \
libamdis_la-QPsiPhi.lo libamdis_la-BasisFunction.lo \
......@@ -283,10 +290,11 @@ am_libamdis_la_OBJECTS = $(am__objects_1) \
libamdis_la-RefinementManager1d.lo \
libamdis_la-RefinementManager2d.lo \
libamdis_la-RefinementManager3d.lo libamdis_la-Tetrahedron.lo \
libamdis_la-Traverse.lo libamdis_la-Triangle.lo \
libamdis_la-TecPlotWriter.lo libamdis_la-ValueWriter.lo \
libamdis_la-MemoryPool.lo libamdis_la-MemoryManager.lo \
libamdis_la-VtkWriter.lo libamdis_la-DataCollector.lo
libamdis_la-Traverse.lo libamdis_la-TraverseParallel.lo \
libamdis_la-Triangle.lo libamdis_la-TecPlotWriter.lo \
libamdis_la-ValueWriter.lo libamdis_la-MemoryPool.lo \
libamdis_la-MemoryManager.lo libamdis_la-VtkWriter.lo \
libamdis_la-DataCollector.lo
libamdis_la_OBJECTS = $(am_libamdis_la_OBJECTS)
libcompositeFEM_la_LIBADD =
am_libcompositeFEM_la_OBJECTS = libcompositeFEM_la-CFE_Integration.lo \
......@@ -543,6 +551,8 @@ $(SOURCE_DIR)/Element.h $(SOURCE_DIR)/ElementConnection.h \
$(SOURCE_DIR)/ElInfo.h $(SOURCE_DIR)/ElInfo1d.h $(SOURCE_DIR)/ElInfo2d.h $(SOURCE_DIR)/ElInfo3d.h \
$(SOURCE_DIR)/Error.h $(SOURCE_DIR)/Error.hh \
$(SOURCE_DIR)/Estimator.h $(SOURCE_DIR)/Estimator.cc \
$(SOURCE_DIR)/ResidualEstimator.h $(SOURCE_DIR)/ResidualEstimator.cc \
$(SOURCE_DIR)/ResidualParallelEstimator.h $(SOURCE_DIR)/ResidualParallelEstimator.cc \
$(SOURCE_DIR)/FiniteElemSpace.h \
$(SOURCE_DIR)/FixVec.h $(SOURCE_DIR)/FixVec.hh \
$(SOURCE_DIR)/FixVecConvert.h \
......@@ -550,7 +560,7 @@ $(SOURCE_DIR)/Flag.h \
$(SOURCE_DIR)/Global.h \
$(SOURCE_DIR)/GMResSolver.h $(SOURCE_DIR)/GMResSolver.hh \
$(SOURCE_DIR)/GMResSolver2.h $(SOURCE_DIR)/GMResSolver2.hh \
$(SOURCE_DIR)/TFQMR.h \ $(SOURCE_DIR)/TFQMR.hh \
$(SOURCE_DIR)/TFQMR.h $(SOURCE_DIR)/TFQMR.hh \
$(SOURCE_DIR)/VecSymSolver.h $(SOURCE_DIR)/VecSymSolver.hh \
$(SOURCE_DIR)/UmfPackSolver.h $(SOURCE_DIR)/UmfPackSolver.hh \
$(SOURCE_DIR)/PardisoSolver.h $(SOURCE_DIR)/PardisoSolver.hh $(SOURCE_DIR)/PardisoSolver.cc \
......@@ -568,7 +578,9 @@ $(SOURCE_DIR)/Preconditioner.h \
$(SOURCE_DIR)/Quadrature.h \
$(SOURCE_DIR)/RCNeighbourList.h \
$(SOURCE_DIRe)/RefinementManager.h \
$(SOURCE_DIR)/RefinementManager1d.h $(SOURCE_DIR)/RefinementManager2d.h $(SOURCE_DIR)/RefinementManager3d.h \
$(SOURCE_DIR)/RefinementManager1d.h \
$(SOURCE_DIR)/RefinementManager2d.h \
$(SOURCE_DIR)/RefinementManager3d.h \
$(SOURCE_DIR)/TecPlotWriter.h $(SOURCE_DIR)/TecPlotWriter.hh \
$(SOURCE_DIR)/Tetrahedron.h \
$(SOURCE_DIR)/Traverse.h \
......@@ -593,7 +605,9 @@ $(SOURCE_DIR)/demangle.cc \
$(SOURCE_DIR)/DOFAdmin.cc \
$(SOURCE_DIR)/DOFMatrix.cc \
$(SOURCE_DIR)/Element.cc \
$(SOURCE_DIR)/ElInfo1d.cc $(SOURCE_DIR)/ElInfo2d.cc $(SOURCE_DIR)/ElInfo3d.cc \
$(SOURCE_DIR)/ElInfo1d.cc \
$(SOURCE_DIR)/ElInfo2d.cc \
$(SOURCE_DIR)/ElInfo3d.cc \
$(SOURCE_DIR)/FiniteElemSpace.cc \
$(SOURCE_DIR)/FixVec.cc \
$(SOURCE_DIR)/Flag.cc \
......@@ -612,6 +626,7 @@ $(SOURCE_DIR)/RefinementManager2d.cc \
$(SOURCE_DIR)/RefinementManager3d.cc \
$(SOURCE_DIR)/Tetrahedron.cc \
$(SOURCE_DIR)/Traverse.cc \
$(SOURCE_DIR)/TraverseParallel.h $(SOURCE_DIR)/TraverseParallel.cc \
$(SOURCE_DIR)/Triangle.cc \
$(SOURCE_DIR)/TecPlotWriter.cc \
$(SOURCE_DIR)/ValueWriter.cc \
......@@ -625,8 +640,7 @@ $(SOURCE_DIR)/PeriodicInfo.h \
$(SOURCE_DIR)/OpenMP.h
COMPOSITE_SOURCE_DIR = ../compositeFEM/src
@AMDIS_DEBUG_FALSE@libcompositeFEM_la_CXXFLAGS = -O2 -Wall -DDEBUG=0 -I$(SOURCE_DIR)
@AMDIS_DEBUG_TRUE@libcompositeFEM_la_CXXFLAGS = -g -O0 -Wall -DDEBUG=1 -I$(SOURCE_DIR)
libcompositeFEM_la_CXXFLAGS = $(libamdis_la_CXXFLAGS)
libcompositeFEM_la_SOURCES = $(COMPOSITE_SOURCE_DIR)/CFE_Integration.h \
$(COMPOSITE_SOURCE_DIR)/CFE_Integration.cc \
$(COMPOSITE_SOURCE_DIR)/CFE_NormAndErrorFcts.h \
......@@ -803,6 +817,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-RefinementManager1d.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-RefinementManager2d.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-RefinementManager3d.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-ResidualEstimator.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-ResidualParallelEstimator.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-RobinBC.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-SparseVector.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-StandardProblemIteration.Plo@am__quote@
......@@ -811,6 +827,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-TecPlotWriter.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-Tetrahedron.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-Traverse.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-TraverseParallel.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-Triangle.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-V3Vector.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-ValueReader.Plo@am__quote@
......@@ -1236,6 +1253,20 @@ libamdis_la-Estimator.lo: $(SOURCE_DIR)/Estimator.cc
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -c -o libamdis_la-Estimator.lo `test -f '$(SOURCE_DIR)/Estimator.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/Estimator.cc
libamdis_la-ResidualEstimator.lo: $(SOURCE_DIR)/ResidualEstimator.cc
@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -MT libamdis_la-ResidualEstimator.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-ResidualEstimator.Tpo" -c -o libamdis_la-ResidualEstimator.lo `test -f '$(SOURCE_DIR)/ResidualEstimator.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/ResidualEstimator.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-ResidualEstimator.Tpo" "$(DEPDIR)/libamdis_la-ResidualEstimator.Plo"; else rm -f "$(DEPDIR)/libamdis_la-ResidualEstimator.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SOURCE_DIR)/ResidualEstimator.cc' object='libamdis_la-ResidualEstimator.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -c -o libamdis_la-ResidualEstimator.lo `test -f '$(SOURCE_DIR)/ResidualEstimator.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/ResidualEstimator.cc
libamdis_la-ResidualParallelEstimator.lo: $(SOURCE_DIR)/ResidualParallelEstimator.cc
@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -MT libamdis_la-ResidualParallelEstimator.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-ResidualParallelEstimator.Tpo" -c -o libamdis_la-ResidualParallelEstimator.lo `test -f '$(SOURCE_DIR)/ResidualParallelEstimator.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/ResidualParallelEstimator.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-ResidualParallelEstimator.Tpo" "$(DEPDIR)/libamdis_la-ResidualParallelEstimator.Plo"; else rm -f "$(DEPDIR)/libamdis_la-ResidualParallelEstimator.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SOURCE_DIR)/ResidualParallelEstimator.cc' object='libamdis_la-ResidualParallelEstimator.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -c -o libamdis_la-ResidualParallelEstimator.lo `test -f '$(SOURCE_DIR)/ResidualParallelEstimator.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/ResidualParallelEstimator.cc
libamdis_la-PardisoSolver.lo: $(SOURCE_DIR)/PardisoSolver.cc
@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -MT libamdis_la-PardisoSolver.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-PardisoSolver.Tpo" -c -o libamdis_la-PardisoSolver.lo `test -f '$(SOURCE_DIR)/PardisoSolver.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/PardisoSolver.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-PardisoSolver.Tpo" "$(DEPDIR)/libamdis_la-PardisoSolver.Plo"; else rm -f "$(DEPDIR)/libamdis_la-PardisoSolver.Tpo"; exit 1; fi
......@@ -1488,6 +1519,13 @@ libamdis_la-Traverse.lo: $(SOURCE_DIR)/Traverse.cc
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -c -o libamdis_la-Traverse.lo `test -f '$(SOURCE_DIR)/Traverse.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/Traverse.cc
libamdis_la-TraverseParallel.lo: $(SOURCE_DIR)/TraverseParallel.cc
@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -MT libamdis_la-TraverseParallel.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-TraverseParallel.Tpo" -c -o libamdis_la-TraverseParallel.lo `test -f '$(SOURCE_DIR)/TraverseParallel.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/TraverseParallel.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-TraverseParallel.Tpo" "$(DEPDIR)/libamdis_la-TraverseParallel.Plo"; else rm -f "$(DEPDIR)/libamdis_la-TraverseParallel.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SOURCE_DIR)/TraverseParallel.cc' object='libamdis_la-TraverseParallel.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -c -o libamdis_la-TraverseParallel.lo `test -f '$(SOURCE_DIR)/TraverseParallel.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/TraverseParallel.cc
libamdis_la-Triangle.lo: $(SOURCE_DIR)/Triangle.cc
@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -MT libamdis_la-Triangle.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-Triangle.Tpo" -c -o libamdis_la-Triangle.lo `test -f '$(SOURCE_DIR)/Triangle.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/Triangle.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-Triangle.Tpo" "$(DEPDIR)/libamdis_la-Triangle.Plo"; else rm -f "$(DEPDIR)/libamdis_la-Triangle.Tpo"; exit 1; fi
......
......@@ -2,6 +2,7 @@
#include "ElementMatrix.h"
#include "ElementVector.h"
#include "OpenMP.h"
#include "SubElementAssembler.h"
#include "SubElInfo.h"
......@@ -116,9 +117,11 @@ CompositeFEMOperator::getElementMatrix(const ElInfo *elInfo,
subElementAssembler->getNCol());
subPolMat2->set(0.0);
if(!assembler) {
assembler = NEW StandardAssembler(this, NULL, NULL, NULL, NULL,
rowFESpace, colFESpace);
int myRank = omp_get_thread_num();
if (!assembler[myRank]) {
assembler[myRank] =
NEW StandardAssembler(this, NULL, NULL, NULL, NULL, rowFESpace, colFESpace);
}
if (elLS->getLevelSetDomain() ==
......@@ -129,7 +132,7 @@ CompositeFEMOperator::getElementMatrix(const ElInfo *elInfo,
elLS->setLevelSetDomain(ElementLevelSet::LEVEL_SET_INTERIOR);
}
assembler->calculateElementMatrix(elInfo, elMat, 1.0);
assembler[myRank]->calculateElementMatrix(elInfo, elMat, 1.0);
subElementAssembler->getSubPolytopeMatrix(subPolytope,
subElementAssembler,
elInfo,
......@@ -259,20 +262,21 @@ CompositeFEMOperator::getElementVector(const ElInfo *elInfo,
subPolVec2 = NEW ElementVector(subElementAssembler->getNRow());
subPolVec2->set(0.0);
if(!assembler) {
assembler = NEW StandardAssembler(this, NULL, NULL, NULL, NULL,
rowFESpace, colFESpace);
int myRank = omp_get_thread_num();
if (!assembler[myRank]) {
assembler[myRank] =
NEW StandardAssembler(this, NULL, NULL, NULL, NULL, rowFESpace, colFESpace);
}
if (elLS->getLevelSetDomain() ==
ElementLevelSet::LEVEL_SET_INTERIOR) {
elLS->setLevelSetDomain(ElementLevelSet::LEVEL_SET_EXTERIOR);
}
else {
} else {
elLS->setLevelSetDomain(ElementLevelSet::LEVEL_SET_INTERIOR);
}
assembler->calculateElementVector(elInfo, elVec, 1.0);
assembler[myRank]->calculateElementVector(elInfo, elVec, 1.0);
subElementAssembler->getSubPolytopeVector(subPolytope,
subElementAssembler,
elInfo,
......
......@@ -52,7 +52,7 @@ WARN_LOGFILE =
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ../src/
FILE_PATTERNS = *.h *.hh *.cc
FILE_PATTERNS = *.h
RECURSIVE = NO
EXCLUDE =
EXCLUDE_PATTERNS =
......
......@@ -44,7 +44,7 @@ available_tags=" CXX F77"
# ### BEGIN LIBTOOL CONFIG
# Libtool was configured on host NWRW09:
# Libtool was configured on host NWRW15:
# Shell to use when invoking shell scripts.
SHELL="/bin/sh"
......@@ -7266,7 +7266,7 @@ disable_libs=static
# End:
# ### BEGIN LIBTOOL TAG CONFIG: CXX
# Libtool was configured on host NWRW09:
# Libtool was configured on host NWRW15:
# Shell to use when invoking shell scripts.
SHELL="/bin/sh"
......@@ -7574,7 +7574,7 @@ include_expsyms=""
# ### BEGIN LIBTOOL TAG CONFIG: F77
# Libtool was configured on host NWRW09:
# Libtool was configured on host NWRW15:
# Shell to use when invoking shell scripts.
SHELL="/bin/sh"
......
......@@ -63,7 +63,7 @@ namespace AMDiS {
coarsenAllowed(0),
refinementAllowed(1),
refineBisections(1),
coarseBisections(1)
coarseBisections(1)
{
double totalTol = 1.0;
double relSpaceErr = 1.0;
......
This diff is collapsed.
......@@ -118,7 +118,7 @@ namespace AMDiS {
* Returns \ref terms
*/
inline ::std::vector<OperatorTerm*> *getTerms() {
return &terms;
return &terms[omp_get_thread_num()];
};
/** \brief
......@@ -273,7 +273,7 @@ namespace AMDiS {
/** \brief
* List of all terms with a contribution to this SubAssembler
*/
::std::vector<OperatorTerm*> terms;
::std::vector< ::std::vector<OperatorTerm*> > terms;
/** \brief
*
......
......@@ -69,12 +69,13 @@ namespace AMDiS {
const WorldVector<double>& BasisFunction::evalGrdUh(const DimVec<double>& lambda,
const DimVec<WorldVector<double> >& grd_lambda,
const double *uh_loc, WorldVector<double>* grd_uh) const
const double *uh_loc,
WorldVector<double>* grd_uh) const
{
static WorldVector<double> grd;
static WorldVector<double> grd;
DimVec<double> grd_b(dim, DEFAULT_VALUE, 0.);
WorldVector<double> *val;
DimVec<double> grd_b(dim, DEFAULT_VALUE, 0.0);
WorldVector<double> *val;
DimVec<double> grd1(dim, DEFAULT_VALUE, 0.);
val = grd_uh ? grd_uh : &grd;
......@@ -83,7 +84,8 @@ namespace AMDiS {
grd1[j] = 0.0;
for (int i = 0; i < nBasFcts; i++) {
grd_b = (*(*grdPhi)[i])(lambda);
(*(*grdPhi)[i])(lambda, grd_b);
for (int j = 0; j < dim + 1; j++)
grd1[j] += uh_loc[i] * grd_b[j];
}
......@@ -96,7 +98,7 @@ namespace AMDiS {
(*val)[i] += grd_lambda[j][i] * grd1[j];
}
return((*val));
return ((*val));
}
const WorldMatrix<double>& BasisFunction::evalD2Uh(const DimVec<double>& lambda,
......@@ -104,14 +106,12 @@ namespace AMDiS {
const double *uh_loc, WorldMatrix<double>* D2_uh) const
{
static WorldMatrix<double> D2(DEFAULT_VALUE, 0.);
DimMat<double> D2_b(dim, NO_INIT);
WorldMatrix<double> *val;
DimMat<double> D2_b(dim, DEFAULT_VALUE, 0.0);
DimMat<double> D2_tmp(dim, DEFAULT_VALUE, 0.0);
val = D2_uh ? D2_uh : &D2;
WorldMatrix<double> *val = D2_uh ? D2_uh : &D2;
for (int i = 0; i < nBasFcts; i++) {
D2_b = (*(*d2Phi)[i])(lambda);
(*(*d2Phi)[i])(lambda, D2_b);
for (int k = 0; k < dim + 1; k++)
for (int l = 0; l < dim + 1; l++)
D2_tmp[k][l] += uh_loc[i] * D2_b[k][l];
......@@ -122,12 +122,12 @@ namespace AMDiS {
for (int i = 0; i < dow; i++)
for (int j = 0; j < dow; j++) {
(*val)[i][j] = 0.0;
for (int k = 0; k < dim+1; k++)
for (int l = 0; l < dim+1; l++)
for (int k = 0; k < dim + 1; k++)
for (int l = 0; l < dim + 1; l++)
(*val)[i][j] += grd_lambda[k][i] * grd_lambda[l][j] * D2_tmp[k][l];
}
return((*val));
return ((*val));
}
......
......@@ -38,7 +38,6 @@ namespace AMDiS {
// ============================================================================
class DOFAdmin;
//template<typename T> class DOFMatrix;
class Element;
class ElInfo;
class RCNeighbourList;
......@@ -54,17 +53,64 @@ namespace AMDiS {
template <typename T, GeoIndex d> class FixVec;
template <typename T> class VectorOfFixVecs;
// ============================================================================
// ===== function interfaces===================================================
// ============================================================================
/** \brief
* Function interface for evaluating basis functions.
*/
class BasFctType
{
public:
BasFctType() {};
virtual ~BasFctType() {};
virtual double operator()(const DimVec<double>&) const = 0;
};
/** \brief
* Function interface for evaluating gradients of basis functions.
*/
class GrdBasFctType
{
public:
GrdBasFctType() {};
virtual ~GrdBasFctType() {};
virtual void operator()(const DimVec<double>&,
DimVec<double>&) const = 0;
};
/** \brief
* Function interface for evaluating second derivative of basis functions.
*/
class D2BasFctType
{
public:
D2BasFctType() {};
virtual ~D2BasFctType() {};
virtual void operator()(const DimVec<double>&,
DimMat<double>&) const = 0;
};
// ============================================================================
// ===== typedefs =============================================================
// ============================================================================
typedef AbstractFunction<double, DimVec<double> > BasFctType;
typedef AbstractFunction<DimVec<double>, DimVec<double> > GrdBasFctType;
typedef AbstractFunction<DimMat<double>, DimVec<double> > D2BasFctType;
typedef BasFctType *BFptr;
typedef GrdBasFctType *GBFptr;
typedef D2BasFctType *DBFptr;
// ============================================================================
// ===== class BasisFunction ==================================================
// ============================================================================
......
......@@ -27,28 +27,27 @@ namespace AMDiS {
{
// ===== fill local conditions ==============================================
const FiniteElemSpace *feSpace = vec->getFESpace();
const BoundaryType *localBound = NULL;
const DegreeOfFreedom *dofIndices = NULL;
const BasisFunction *basisFcts = feSpace->getBasisFcts();
int nBasFcts = basisFcts->getNumber();
DOFAdmin *admin = feSpace->getAdmin();
Vector<DegreeOfFreedom> dofIndices;
const BasisFunction *basisFcts = feSpace->getBasisFcts();
int nBasFcts = basisFcts->getNumber();
DOFAdmin *admin = feSpace->getAdmin();
::std::map<BoundaryType, BoundaryCondition*>::iterator it;
if (localBCs.size() > 0) {
// get boundaries of all DOFs
localBound = basisFcts->getBound(elInfo, NULL);
BoundaryType *localBound = GET_MEMORY(BoundaryType, nBasFcts);
basisFcts->getBound(elInfo, localBound);
// get dof indices
dofIndices = basisFcts->getLocalIndices(elInfo->getElement(),
admin, NULL);
basisFcts->getLocalIndicesVec(elInfo->getElement(), admin, &dofIndices);
// apply non dirichlet boundary conditions
for (it = localBCs.begin(); it != localBCs.end(); ++it) {
if ((*it).second) {
if (!(*it).second->isDirichlet()) {
(*it).second->fillBoundaryCondition(vec, elInfo, dofIndices, localBound, nBasFcts);
(*it).second->fillBoundaryCondition(vec, elInfo, &dofIndices[0], localBound, nBasFcts);
}
}
}
......@@ -57,10 +56,12 @@ namespace AMDiS {
for (it = localBCs.begin(); it != localBCs.end(); ++it) {
if ((*it).second) {
if ((*it).second->isDirichlet()) {
(*it).second->fillBoundaryCondition(vec, elInfo, dofIndices, localBound, nBasFcts);
(*it).second->fillBoundaryCondition(vec, elInfo, &dofIndices[0], localBound, nBasFcts);
}
}
}
FREE_MEMORY(localBound, BoundaryType, nBasFcts);
}
}
......@@ -69,38 +70,37 @@ namespace AMDiS {
{
// ===== fill local conditions ==============================================
const FiniteElemSpace *feSpace = mat->getRowFESpace();
const BoundaryType *localBound = NULL;
const DegreeOfFreedom *dofIndices = NULL;
const BasisFunction *basisFcts = feSpace->getBasisFcts();
int nBasFcts = basisFcts->getNumber();
DOFAdmin *admin = feSpace->getAdmin();
Vector<DegreeOfFreedom> dofIndices;
const BasisFunction *basisFcts = feSpace->getBasisFcts();
int nBasFcts = basisFcts->getNumber();
DOFAdmin *admin = feSpace->getAdmin();
::std::map<BoundaryType, BoundaryCondition*>::iterator it;
if (localBCs.size() > 0) {
// get boundaries of all DOFs
localBound = basisFcts->getBound(elInfo, NULL);
const BoundaryType *localBound = basisFcts->getBound(elInfo, NULL);
// get dof indices
dofIndices = basisFcts->getLocalIndices(elInfo->getElement(), admin, NULL);