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"
......
......@@ -5,6 +5,7 @@
#include "ElementMatrix.h"
#include "ElementVector.h"
#include "DOFVector.h"
#include "OpenMP.h"
#include <vector>
#include <algorithm>
......@@ -43,6 +44,9 @@ namespace AMDiS {
nRow = psi->getNumber();
nCol = phi->getNumber();
int maxThreads = omp_get_max_threads();
terms.resize(maxThreads);
switch (order) {
case 0:
terms = op->zeroOrder;
......@@ -60,8 +64,8 @@ namespace AMDiS {
// check if all terms are symmetric
symmetric = true;
for (int i = 0; i < static_cast<int>(terms.size()); i++) {
if (!(terms[i])->isSymmetric()) {
for (int i = 0; i < static_cast<int>(terms[0].size()); i++) {
if (!(terms[0][i])->isSymmetric()) {
symmetric = false;
break;
}
......@@ -104,9 +108,10 @@ namespace AMDiS {
((*it2).second)->valid = false;
}
int myRank = omp_get_thread_num();
// calls initElement of each term
::std::vector<OperatorTerm*>::iterator it;
for (it = terms.begin(); it != terms.end(); ++it) {
for (it = terms[myRank].begin(); it != terms[myRank].end(); ++it) {
(*it)->initElement(elInfo, this, quad);
}
}
......@@ -293,7 +298,8 @@ namespace AMDiS {
&optimizedSubAssemblers :
&standardSubAssemblers;
::std::vector<OperatorTerm*> opTerms = op->zeroOrder;
int myRank = omp_get_thread_num();
::std::vector<OperatorTerm*> opTerms = op->zeroOrder[myRank];
sort(opTerms.begin(), opTerms.end());
......@@ -314,8 +320,8 @@ namespace AMDiS {
// check if all terms are pw_const
bool pwConst = true;
for (int i = 0; i < static_cast<int>( op->zeroOrder.size()); i++) {
if (!op->zeroOrder[i]->isPWConst()) {
for (int i = 0; i < static_cast<int>( op->zeroOrder[myRank].size()); i++) {
if (!op->zeroOrder[myRank][i]->isPWConst()) {
pwConst = false;
break;
}
......@@ -352,8 +358,11 @@ namespace AMDiS {
&standardSubAssemblersGrdPsi :
&standardSubAssemblersGrdPhi);
int myRank = omp_get_thread_num();
::std::vector<OperatorTerm*> opTerms
= (type == GRD_PSI) ? op->firstOrderGrdPsi : op->firstOrderGrdPhi;
= (type == GRD_PSI) ?
op->firstOrderGrdPsi[myRank] :
op->firstOrderGrdPhi[myRank];
// check if a assembler is needed at all
if (opTerms.size() == 0) {
......@@ -417,8 +426,10 @@ namespace AMDiS {
Quadrature *quad,
bool optimized)
{
int myRank = omp_get_thread_num();
// check if a assembler is needed at all
if(op->secondOrder.size() == 0) {
if (op->secondOrder[myRank].size() == 0) {
return NULL;
}
......@@ -429,7 +440,7 @@ namespace AMDiS {
&optimizedSubAssemblers :
&standardSubAssemblers;
::std::vector<OperatorTerm*> opTerms = op->zeroOrder;
::std::vector<OperatorTerm*> opTerms = op->zeroOrder[myRank];
sort(opTerms.begin(), opTerms.end());
......@@ -448,8 +459,8 @@ namespace AMDiS {
// check if all terms are pw_const
bool pwConst = true;
for (int i = 0; i < static_cast<int>( op->secondOrder.size()); i++) {
if (!op->secondOrder[i]->isPWConst()) {
for (int i = 0; i < static_cast<int>( op->secondOrder[myRank].size()); i++) {
if (!op->secondOrder[myRank][i]->isPWConst()) {
pwConst = false;
break;
}
......@@ -484,17 +495,16 @@ namespace AMDiS {
double psival;
double *phival = GET_MEMORY(double, nCol);
int numPoints = quadrature->getNumPoints();
double *c = GET_MEMORY(double, numPoints);
for (int iq = 0; iq < numPoints; iq++) {
c[iq] = 0.0;
}
int myRank = omp_get_thread_num();
::std::vector<OperatorTerm*>::iterator termIt;
for (termIt = terms.begin(); termIt != terms.end(); ++termIt) {
for (termIt = terms[myRank].begin(); termIt != terms[myRank].end(); ++termIt) {
(static_cast<ZeroOrderTerm*>((*termIt)))->getC(elInfo, numPoints, c);
}
......@@ -544,12 +554,14 @@ namespace AMDiS {
int numPoints = quadrature->getNumPoints();
double *c = GET_MEMORY(double, numPoints);
for (int iq = 0; iq < numPoints; iq++) {
c[iq] = 0.0;
}
int myRank = omp_get_thread_num();
::std::vector<OperatorTerm*>::iterator termIt;
for (termIt = terms.begin(); termIt != terms.end(); ++termIt) {
for (termIt = terms[myRank].begin(); termIt != terms[myRank].end(); ++termIt) {
(static_cast<ZeroOrderTerm*>((*termIt)))->getC(elInfo, numPoints, c);
}
......@@ -562,6 +574,7 @@ namespace AMDiS {
(*vec)[i] += quadrature->getWeight(iq) * c[iq] * psi;
}
}
FREE_MEMORY(c, double, numPoints);
}
......@@ -583,14 +596,15 @@ namespace AMDiS {
}
int numPoints = quadrature->getNumPoints();
double *c = GET_MEMORY(double, numPoints);
for (int iq = 0; iq < numPoints; iq++) {
c[iq] = 0.0;
}
int myRank = omp_get_thread_num();
::std::vector<OperatorTerm*>::iterator termIt;
for (termIt = terms.begin(); termIt != terms.end(); ++termIt) {
for (termIt = terms[myRank].begin(); termIt != terms[myRank].end(); ++termIt) {
(static_cast<ZeroOrderTerm*>((*termIt)))->getC(elInfo, numPoints, c);
}
......@@ -636,14 +650,15 @@ namespace AMDiS {
}
int numPoints = quadrature->getNumPoints();
double *c = GET_MEMORY(double, numPoints);
for (int iq = 0; iq < numPoints; iq++) {
c[iq] = 0.0;
}
int myRank = omp_get_thread_num();
::std::vector<OperatorTerm*>::iterator termIt;
for (termIt = terms.begin(); termIt != terms.end(); ++termIt) {
for (termIt = terms[myRank].begin(); termIt != terms[myRank].end(); ++termIt) {
(static_cast<ZeroOrderTerm*>((*termIt)))->getC(elInfo, numPoints, c);
}
......@@ -677,8 +692,10 @@ namespace AMDiS {
}
c[0] = 0.0;
for (int i = 0; i < static_cast<int>( terms.size()); i++) {
(static_cast<ZeroOrderTerm*>((terms[i])))->getC(elInfo, 1, c);
int myRank = omp_get_thread_num();
for (int i = 0; i < static_cast<int>( terms[myRank].size()); i++) {
(static_cast<ZeroOrderTerm*>((terms[myRank][i])))->getC(elInfo, 1, c);
}
c[0] *= elInfo->getDet();
......@@ -703,7 +720,7 @@ namespace AMDiS {
void Pre0::calculateElementVector(const ElInfo *elInfo, ElementVector *vec)
{
double *c = GET_MEMORY(double, 1);;
double *c = GET_MEMORY(double, 1);
if (firstCall) {
q00 = Q00PsiPhi::provideQ00PsiPhi(owner->getRowFESpace()->getBasisFcts(),
......@@ -716,8 +733,9 @@ namespace AMDiS {
::std::vector<OperatorTerm*>::iterator termIt;
int myRank = omp_get_thread_num();
c[0] = 0.0;
for (termIt = terms.begin(); termIt != terms.end(); ++termIt) {
for (termIt = terms[myRank].begin(); termIt != terms[myRank].end(); ++termIt) {
(static_cast<ZeroOrderTerm*>( *termIt))->getC(elInfo, 1, c);
}
......@@ -736,7 +754,7 @@ namespace AMDiS {
void Stand10::calculateElementMatrix(const ElInfo *elInfo, ElementMatrix *mat)
{
DimVec<double> grdPsi(dim, NO_INIT);
DimVec<double> grdPsi(dim, DEFAULT_VALUE, 0.0);
double *phival = GET_MEMORY(double, nCol);
const BasisFunction *psi = owner->getRowFESpace()->getBasisFcts();
......@@ -744,12 +762,14 @@ namespace AMDiS {
int numPoints = quadrature->getNumPoints();
VectorOfFixVecs<DimVec<double> > Lb(dim,numPoints,NO_INIT);
VectorOfFixVecs<DimVec<double> > Lb(dim, numPoints, NO_INIT);
for (int iq = 0; iq < numPoints; iq++) {
Lb[iq].set(0.0);
}
for (int i = 0; i < static_cast<int>(terms.size()); i++) {
(static_cast<FirstOrderTerm*>((terms[i])))->getLb(elInfo, numPoints, Lb);
int myRank = omp_get_thread_num();
for (int i = 0; i < static_cast<int>(terms[myRank].size()); i++) {
(static_cast<FirstOrderTerm*>((terms[myRank][i])))->getLb(elInfo, numPoints, Lb);
}
for (int iq = 0; iq < numPoints; iq++) {
......@@ -760,7 +780,7 @@ namespace AMDiS {
}
for (int i = 0; i < nRow; i++) {
grdPsi = (*(psi->getGrdPhi(i)))(quadrature->getLambda(iq));
(*(psi->getGrdPhi(i)))(quadrature->getLambda(iq), grdPsi);
for (int j = 0; j < nCol; j++) {
(*mat)[i][j] += quadrature->getWeight(iq) * (Lb[iq] * grdPsi) * phival[j];
}
......@@ -796,8 +816,9 @@ namespace AMDiS {
Lb[iq].set(0.0);
}
for (int i = 0; i < static_cast<int>(terms.size()); i++) {
(static_cast<FirstOrderTerm*>((terms[i])))->getLb(elInfo, numPoints, Lb);
int myRank = omp_get_thread_num();