Commit b640da9e authored by Thomas Witkowski's avatar Thomas Witkowski

Work on PETSc solver structur. Removed all OpenMP stuff.

parent 2ddb447b
......@@ -121,7 +121,6 @@ SET(AMDIS_SRC ${SOURCE_DIR}/AdaptBase.cc
${SOURCE_DIR}/RefinementManager2d.cc
${SOURCE_DIR}/RefinementManager3d.cc
${SOURCE_DIR}/ResidualEstimator.cc
${SOURCE_DIR}/ResidualParallelEstimator.cc
${SOURCE_DIR}/RobinBC.cc
${SOURCE_DIR}/ScalableQuadrature.cc
${SOURCE_DIR}/SecondOrderAssembler.cc
......@@ -134,7 +133,6 @@ SET(AMDIS_SRC ${SOURCE_DIR}/AdaptBase.cc
${SOURCE_DIR}/SurfaceQuadrature.cc
${SOURCE_DIR}/Tetrahedron.cc
${SOURCE_DIR}/Traverse.cc
${SOURCE_DIR}/TraverseParallel.cc
${SOURCE_DIR}/Triangle.cc
${SOURCE_DIR}/VertexVector.cc
${SOURCE_DIR}/ZeroOrderAssembler.cc
......
......@@ -44,7 +44,7 @@ available_tags=" CXX F77"
# ### BEGIN LIBTOOL CONFIG
# Libtool was configured on host p1q024:
# Libtool was configured on host deimos101:
# Shell to use when invoking shell scripts.
SHELL="/bin/sh"
......@@ -6760,7 +6760,7 @@ build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
# End:
# ### BEGIN LIBTOOL TAG CONFIG: CXX
# Libtool was configured on host p1q024:
# Libtool was configured on host deimos101:
# Shell to use when invoking shell scripts.
SHELL="/bin/sh"
......@@ -7065,7 +7065,7 @@ include_expsyms=""
# ### BEGIN LIBTOOL TAG CONFIG: F77
# Libtool was configured on host p1q024:
# Libtool was configured on host deimos101:
# Shell to use when invoking shell scripts.
SHELL="/bin/sh"
......
......@@ -18,7 +18,6 @@
#include "Element.h"
#include "QPsiPhi.h"
#include "DOFVector.h"
#include "OpenMP.h"
namespace AMDiS {
......
......@@ -32,13 +32,12 @@
#define AMDIS_ASSEMBLER_H
#include <vector>
#include "AMDiS_fwd.h"
#include "FixVec.h"
#include "ZeroOrderAssembler.h"
#include "FirstOrderAssembler.h"
#include "SecondOrderAssembler.h"
#include "ElInfo.h"
#include "OpenMP.h"
#include "AMDiS_fwd.h"
namespace AMDiS {
......
......@@ -16,7 +16,6 @@
#include "DOFVector.h"
#include "BasisFunction.h"
#include "Lagrange.h"
#include "OpenMP.h"
namespace AMDiS {
......
......@@ -207,15 +207,10 @@ namespace AMDiS {
TEST_EXIT(dofIndexed)("no dofIndexed\n");
#ifdef _OPENMP
#pragma omp critical (dofIndexAccess)
#endif
{
if (dofIndexed->getSize() < size)
dofIndexed->resize(size);
dofIndexedList.push_back(dofIndexed);
}
if (dofIndexed->getSize() < size)
dofIndexed->resize(size);
dofIndexedList.push_back(dofIndexed);
}
......@@ -224,18 +219,13 @@ namespace AMDiS {
FUNCNAME("DOFAdmin::removeDOFIndexed()");
bool removed = false;
#ifdef _OPENMP
#pragma omp critical (dofIndexAccess)
#endif
{
std::list<DOFIndexedBase*>::iterator it;
std::list<DOFIndexedBase*>::iterator end = dofIndexedList.end();
for (it = dofIndexedList.begin(); it != end; ++it) {
if (*it == dofIndexed) {
dofIndexedList.erase(it);
removed = true;
break;
}
std::list<DOFIndexedBase*>::iterator it;
std::list<DOFIndexedBase*>::iterator end = dofIndexedList.end();
for (it = dofIndexedList.begin(); it != end; ++it) {
if (*it == dofIndexed) {
dofIndexedList.erase(it);
removed = true;
break;
}
}
......
......@@ -35,7 +35,6 @@
#include "Global.h"
#include "FixVec.h"
#include "Serializable.h"
#include "OpenMP.h"
#include "AMDiS_fwd.h"
namespace AMDiS {
......
......@@ -157,10 +157,6 @@ namespace AMDiS {
{
FUNCNAME("DOFVector<double>::getRecoveryGradient()");
#ifdef _OPENMP
ERROR_EXIT("Using static variable while using OpenMP parallelization!\n");
#endif
// define result vector
static DOFVector<WorldVector<double> > *vec = NULL;
......@@ -614,10 +610,6 @@ namespace AMDiS {
{
FUNCNAME("DOFVector<double>::getGradient()");
#ifdef _OPENMP
ERROR_EXIT("Using static variable while using OpenMP parallelization!\n");
#endif
Mesh *mesh = feSpace->getMesh();
int dim = mesh->getDim();
int dow = Global::getGeo(WORLD);
......
......@@ -826,26 +826,9 @@ namespace AMDiS {
("y.size = %d too small: admin->size = %d\n", y.getSize(),
admin->getUsedSize());
// This is the old implementation of the mv-multiplication. It have been changed
// because of the OpenMP-parallelization:
// typename DOFVector<T>::Iterator xIterator(dynamic_cast<DOFIndexed<T>*>(const_cast<DOFVector<T>*>(&x)), USED_DOFS);
// typename DOFVector<T>::Iterator yIterator(dynamic_cast<DOFIndexed<T>*>(&y), USED_DOFS);
// for(xIterator.reset(), yIterator.reset();
// !xIterator.end();
// ++xIterator, ++yIterator)
// {
// *yIterator += alpha * (*xIterator);
// };
int i;
int maxI = y.getSize();
#ifdef _OPENMP
#pragma omp parallel for schedule(dynamic, 25000) default(shared) private(i)
#endif
for (i = 0; i < maxI; i++)
if (!admin->isDofFree(i))
y[i] += alpha * x[i];
for (int i = 0; i < y.getSize(); i++)
if (!admin->isDofFree(i))
y[i] += alpha * x[i];
}
template<typename T>
......@@ -892,26 +875,9 @@ namespace AMDiS {
("y.size = %d too small: admin->size = %d\n", y.getSize(),
admin->getUsedSize());
// This is the old implementation of the mv-multiplication. It have been changed
// because of the OpenMP-parallelization:
// typename DOFVector<T>::Iterator xIterator(dynamic_cast<DOFIndexed<T>*>(const_cast<DOFVector<T>*>(&x)), USED_DOFS);
// typename DOFVector<T>::Iterator yIterator(dynamic_cast<DOFIndexed<T>*>(&y), USED_DOFS);
// for(xIterator.reset(), yIterator.reset();
// !xIterator.end();
// ++xIterator, ++yIterator)
// {
// *yIterator = alpha *(*yIterator)+ (*xIterator);
// };
int i;
int maxI = y.getSize();
#ifdef _OPENMP
#pragma omp parallel for schedule(dynamic, 25000) default(shared) private(i)
#endif
for (i = 0; i < maxI; i++)
if (!admin->isDofFree(i))
y[i] = alpha * y[i] + x[i];
for (int i = 0; i < y.getSize(); i++)
if (!admin->isDofFree(i))
y[i] = alpha * y[i] + x[i];
}
template<typename T>
......
......@@ -19,7 +19,6 @@
#include "FiniteElemSpace.h"
#include "Quadrature.h"
#include "DOFVector.h"
#include "OpenMP.h"
namespace AMDiS {
......@@ -266,16 +265,11 @@ namespace AMDiS {
const double *values;
if (firstCall) {
#ifdef _OPENMP
#pragma omp critical
#endif
{
q10 = Q10PsiPhi::provideQ10PsiPhi(rowFeSpace->getBasisFcts(),
colFeSpace->getBasisFcts(),
quadrature);
q1 = Q1Psi::provideQ1Psi(rowFeSpace->getBasisFcts(), quadrature);
firstCall = false;
}
q10 = Q10PsiPhi::provideQ10PsiPhi(rowFeSpace->getBasisFcts(),
colFeSpace->getBasisFcts(),
quadrature);
q1 = Q1Psi::provideQ1Psi(rowFeSpace->getBasisFcts(), quadrature);
firstCall = false;
}
const int **nEntries = q10->getNumberEntries();
......@@ -353,16 +347,11 @@ namespace AMDiS {
void Quad01::calculateElementMatrix(const ElInfo *elInfo, ElementMatrix& mat)
{
if (firstCall) {
#ifdef _OPENMP
#pragma omp critical
#endif
{
const BasisFunction *basFcts = rowFeSpace->getBasisFcts();
psiFast = updateFastQuadrature(psiFast, basFcts, INIT_PHI);
basFcts = colFeSpace->getBasisFcts();
phiFast = updateFastQuadrature(phiFast, basFcts, INIT_GRD_PHI);
firstCall = false;
}
const BasisFunction *basFcts = rowFeSpace->getBasisFcts();
psiFast = updateFastQuadrature(psiFast, basFcts, INIT_PHI);
basFcts = colFeSpace->getBasisFcts();
phiFast = updateFastQuadrature(phiFast, basFcts, INIT_GRD_PHI);
firstCall = false;
}
int nPoints = quadrature->getNumPoints();
......@@ -406,16 +395,11 @@ namespace AMDiS {
const double *values;
if (firstCall) {
#ifdef _OPENMP
#pragma omp critical
#endif
{
q01 = Q01PsiPhi::provideQ01PsiPhi(rowFeSpace->getBasisFcts(),
colFeSpace->getBasisFcts(),
quadrature);
q1 = Q1Psi::provideQ1Psi(rowFeSpace->getBasisFcts(), quadrature);
firstCall = false;
}
q01 = Q01PsiPhi::provideQ01PsiPhi(rowFeSpace->getBasisFcts(),
colFeSpace->getBasisFcts(),
quadrature);
q1 = Q1Psi::provideQ1Psi(rowFeSpace->getBasisFcts(), quadrature);
firstCall = false;
}
const int **nEntries = q01->getNumberEntries();
......@@ -447,16 +431,11 @@ namespace AMDiS {
const double *values;
if (firstCall) {
#ifdef _OPENMP
#pragma omp critical
#endif
{
q10 = Q10PsiPhi::provideQ10PsiPhi(rowFeSpace->getBasisFcts(),
colFeSpace->getBasisFcts(),
quadrature);
q1 = Q1Psi::provideQ1Psi(rowFeSpace->getBasisFcts(), quadrature);
firstCall = false;
}
q10 = Q10PsiPhi::provideQ10PsiPhi(rowFeSpace->getBasisFcts(),
colFeSpace->getBasisFcts(),
quadrature);
q1 = Q1Psi::provideQ1Psi(rowFeSpace->getBasisFcts(), quadrature);
firstCall = false;
}
const int *nEntries = q1->getNumberEntries();
......
......@@ -932,9 +932,6 @@ namespace AMDiS {
if (indices) {
result = indices;
} else {
#ifdef _OPENMP
ERROR_EXIT("Using static variable while using OpenMP parallelization!\n");
#endif
if (localVec && nBasFcts > localVecSize) {
delete [] localVec;
localVec = new DegreeOfFreedom[nBasFcts];
......
......@@ -152,7 +152,6 @@ NonLinSolver.h \
NonLinSolver.hh \
NonLinUpdater.h \
OEMSolver.h \
OpenMP.h \
Operator.h \
Operator.hh \
OperatorTerm.h \
......@@ -187,7 +186,6 @@ RefinementManager1d.h \
RefinementManager2d.h \
RefinementManager3d.h \
ResidualEstimator.h \
ResidualParallelEstimator.h \
RobinBC.h \
RobinBC.hh \
ScalableQuadrature.h \
......@@ -211,7 +209,6 @@ SystemVector.h \
Tetrahedron.h \
TimedObject.h \
Traverse.h \
TraverseParallel.h \
Triangle.h \
UmfPackSolver.h \
VertexInfo.h \
......@@ -354,7 +351,6 @@ RefinementManager1d.cc \
RefinementManager2d.cc \
RefinementManager3d.cc \
ResidualEstimator.cc \
ResidualParallelEstimator.cc \
RobinBC.cc \
ScalableQuadrature.cc \
SecondOrderAssembler.cc \
......@@ -367,7 +363,6 @@ SubQuadrature.cc \
SurfaceQuadrature.cc \
Tetrahedron.cc \
Traverse.cc \
TraverseParallel.cc \
Triangle.cc \
VertexVector.cc \
ZeroOrderAssembler.cc \
......
......@@ -118,18 +118,17 @@ am__libamdis_la_SOURCES_DIST = parallel/CheckerPartitioner.cc \
RCNeighbourList.cc Recovery.cc RecoveryEstimator.cc \
RefinementManager.cc RefinementManager1d.cc \
RefinementManager2d.cc RefinementManager3d.cc \
ResidualEstimator.cc ResidualParallelEstimator.cc RobinBC.cc \
ScalableQuadrature.cc SecondOrderAssembler.cc \
SecondOrderTerm.cc Serializer.cc StandardProblemIteration.cc \
SubAssembler.cc SubElInfo.cc SubQuadrature.cc \
SurfaceQuadrature.cc Tetrahedron.cc Traverse.cc \
TraverseParallel.cc Triangle.cc VertexVector.cc \
ZeroOrderAssembler.cc ZeroOrderTerm.cc io/ArhReader.cc \
io/ArhWriter.cc io/DataCollector.cc io/DofWriter.cc \
io/ElementFileWriter.cc io/FileWriter.cc io/GNUPlotWriter.cc \
io/MacroInfo.cc io/MacroReader.cc io/MacroWriter.cc \
io/PngWriter.cc io/PovrayWriter.cc io/ValueReader.cc \
io/ValueWriter.cc io/VtkWriter.cc parallel/InteriorBoundary.cc \
ResidualEstimator.cc RobinBC.cc ScalableQuadrature.cc \
SecondOrderAssembler.cc SecondOrderTerm.cc Serializer.cc \
StandardProblemIteration.cc SubAssembler.cc SubElInfo.cc \
SubQuadrature.cc SurfaceQuadrature.cc Tetrahedron.cc \
Traverse.cc Triangle.cc VertexVector.cc ZeroOrderAssembler.cc \
ZeroOrderTerm.cc io/ArhReader.cc io/ArhWriter.cc \
io/DataCollector.cc io/DofWriter.cc io/ElementFileWriter.cc \
io/FileWriter.cc io/GNUPlotWriter.cc io/MacroInfo.cc \
io/MacroReader.cc io/MacroWriter.cc io/PngWriter.cc \
io/PovrayWriter.cc io/ValueReader.cc io/ValueWriter.cc \
io/VtkWriter.cc parallel/InteriorBoundary.cc \
time/RosenbrockAdaptInstationary.cc time/RosenbrockMethod.cc \
time/RosenbrockStationary.cc
@USE_PARALLEL_DOMAIN_AMDIS_TRUE@am__objects_1 = libamdis_la-CheckerPartitioner.lo \
......@@ -187,26 +186,24 @@ am_libamdis_la_OBJECTS = $(am__objects_3) libamdis_la-AdaptBase.lo \
libamdis_la-RefinementManager1d.lo \
libamdis_la-RefinementManager2d.lo \
libamdis_la-RefinementManager3d.lo \
libamdis_la-ResidualEstimator.lo \
libamdis_la-ResidualParallelEstimator.lo \
libamdis_la-RobinBC.lo libamdis_la-ScalableQuadrature.lo \
libamdis_la-ResidualEstimator.lo libamdis_la-RobinBC.lo \
libamdis_la-ScalableQuadrature.lo \
libamdis_la-SecondOrderAssembler.lo \
libamdis_la-SecondOrderTerm.lo libamdis_la-Serializer.lo \
libamdis_la-StandardProblemIteration.lo \
libamdis_la-SubAssembler.lo libamdis_la-SubElInfo.lo \
libamdis_la-SubQuadrature.lo libamdis_la-SurfaceQuadrature.lo \
libamdis_la-Tetrahedron.lo libamdis_la-Traverse.lo \
libamdis_la-TraverseParallel.lo libamdis_la-Triangle.lo \
libamdis_la-VertexVector.lo libamdis_la-ZeroOrderAssembler.lo \
libamdis_la-ZeroOrderTerm.lo libamdis_la-ArhReader.lo \
libamdis_la-ArhWriter.lo libamdis_la-DataCollector.lo \
libamdis_la-DofWriter.lo libamdis_la-ElementFileWriter.lo \
libamdis_la-FileWriter.lo libamdis_la-GNUPlotWriter.lo \
libamdis_la-MacroInfo.lo libamdis_la-MacroReader.lo \
libamdis_la-MacroWriter.lo libamdis_la-PngWriter.lo \
libamdis_la-PovrayWriter.lo libamdis_la-ValueReader.lo \
libamdis_la-ValueWriter.lo libamdis_la-VtkWriter.lo \
libamdis_la-InteriorBoundary.lo \
libamdis_la-Triangle.lo libamdis_la-VertexVector.lo \
libamdis_la-ZeroOrderAssembler.lo libamdis_la-ZeroOrderTerm.lo \
libamdis_la-ArhReader.lo libamdis_la-ArhWriter.lo \
libamdis_la-DataCollector.lo libamdis_la-DofWriter.lo \
libamdis_la-ElementFileWriter.lo libamdis_la-FileWriter.lo \
libamdis_la-GNUPlotWriter.lo libamdis_la-MacroInfo.lo \
libamdis_la-MacroReader.lo libamdis_la-MacroWriter.lo \
libamdis_la-PngWriter.lo libamdis_la-PovrayWriter.lo \
libamdis_la-ValueReader.lo libamdis_la-ValueWriter.lo \
libamdis_la-VtkWriter.lo libamdis_la-InteriorBoundary.lo \
libamdis_la-RosenbrockAdaptInstationary.lo \
libamdis_la-RosenbrockMethod.lo \
libamdis_la-RosenbrockStationary.lo
......@@ -475,7 +472,6 @@ NonLinSolver.h \
NonLinSolver.hh \
NonLinUpdater.h \
OEMSolver.h \
OpenMP.h \
Operator.h \
Operator.hh \
OperatorTerm.h \
......@@ -510,7 +506,6 @@ RefinementManager1d.h \
RefinementManager2d.h \
RefinementManager3d.h \
ResidualEstimator.h \
ResidualParallelEstimator.h \
RobinBC.h \
RobinBC.hh \
ScalableQuadrature.h \
......@@ -534,7 +529,6 @@ SystemVector.h \
Tetrahedron.h \
TimedObject.h \
Traverse.h \
TraverseParallel.h \
Triangle.h \
UmfPackSolver.h \
VertexInfo.h \
......@@ -677,7 +671,6 @@ RefinementManager1d.cc \
RefinementManager2d.cc \
RefinementManager3d.cc \
ResidualEstimator.cc \
ResidualParallelEstimator.cc \
RobinBC.cc \
ScalableQuadrature.cc \
SecondOrderAssembler.cc \
......@@ -690,7 +683,6 @@ SubQuadrature.cc \
SurfaceQuadrature.cc \
Tetrahedron.cc \
Traverse.cc \
TraverseParallel.cc \
Triangle.cc \
VertexVector.cc \
ZeroOrderAssembler.cc \
......@@ -911,7 +903,6 @@ distclean-compile:
@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-RosenbrockAdaptInstationary.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-RosenbrockMethod.Plo@am__quote@
......@@ -928,7 +919,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-SurfaceQuadrature.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-ValueReader.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-ValueWriter.Plo@am__quote@
......@@ -1569,13 +1559,6 @@ libamdis_la-ResidualEstimator.lo: ResidualEstimator.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-ResidualEstimator.lo `test -f 'ResidualEstimator.cc' || echo '$(srcdir)/'`ResidualEstimator.cc
libamdis_la-ResidualParallelEstimator.lo: 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 'ResidualParallelEstimator.cc' || echo '$(srcdir)/'`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='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 'ResidualParallelEstimator.cc' || echo '$(srcdir)/'`ResidualParallelEstimator.cc
libamdis_la-RobinBC.lo: RobinBC.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-RobinBC.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-RobinBC.Tpo" -c -o libamdis_la-RobinBC.lo `test -f 'RobinBC.cc' || echo '$(srcdir)/'`RobinBC.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-RobinBC.Tpo" "$(DEPDIR)/libamdis_la-RobinBC.Plo"; else rm -f "$(DEPDIR)/libamdis_la-RobinBC.Tpo"; exit 1; fi
......@@ -1660,13 +1643,6 @@ libamdis_la-Traverse.lo: 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 'Traverse.cc' || echo '$(srcdir)/'`Traverse.cc
libamdis_la-TraverseParallel.lo: 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 'TraverseParallel.cc' || echo '$(srcdir)/'`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='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 'TraverseParallel.cc' || echo '$(srcdir)/'`TraverseParallel.cc
libamdis_la-Triangle.lo: 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 'Triangle.cc' || echo '$(srcdir)/'`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
......
// ============================================================================
// == ==
// == AMDiS - Adaptive multidimensional simulations ==
// == ==
// == http://www.amdis-fem.org ==
// == ==
// ============================================================================
//
// Software License for AMDiS
//
// Copyright (c) 2010 Dresden University of Technology
// All rights reserved.
// Authors: Simon Vey, Thomas Witkowski et al.
//
// This file is part of AMDiS
//
// See also license.opensource.txt in the distribution.
/** \file OpenMP.h */
#ifndef AMDIS_OPENMP_H
#define AMDIS_OPENMP_H
#ifdef _OPENMP
#include <algorithm>
#include <omp.h>
const bool amdisHaveOpenMP = true;
inline int omp_get_overall_max_threads()
{
return std::max(omp_get_max_threads(), omp_get_num_threads());
}
#else
const bool amdisHaveOpenMP = false;
inline int omp_get_max_threads()
{
return 1;
}
inline int omp_get_num_procs()
{
return 1;
}
inline int omp_get_num_threads()
{
return 1;
}
inline int omp_get_thread_num()
{
return 0;
}
inline int omp_get_overall_max_threads()
{
return 1;
}
#endif
#endif
......@@ -30,7 +30,6 @@
#include "MatrixVector.h"
#include "ElInfo.h"
#include "AbstractFunction.h"
#include "OpenMP.h"
#include "SubAssembler.h"
#include "OperatorTerm.h"
#include "ZeroOrderTerm.h"
......
......@@ -243,23 +243,14 @@ namespace AMDiS {
return;
}
#ifdef _OPENMP
double wtime = omp_get_wtime();
#endif
clock_t first = clock();
SolverMatrix<DOFMatrix> solverMatrix;
solverMatrix.setMatrix(*systemMatrix);
solver->solveSystem(solverMatrix, *solution, *rhs);
#ifdef _OPENMP
INFO(info, 8)("solution of discrete system needed %.5f seconds system time / %.5f seconds wallclock time\n",
TIME_USED(first, clock()),
omp_get_wtime() - wtime);
#else
INFO(info, 8)("solution of discrete system needed %.5f seconds\n",
TIME_USED(first, clock()));
#endif
adaptInfo->setSolverIterations(solver->getIterations());
adaptInfo->setMaxSolverIterations(solver->getMaxIterations());
......
......@@ -34,7 +34,6 @@
#include "PeriodicBC.h"
#include "Lagrange.h"
#include "Flag.h"
#include "TraverseParallel.h"
#include "io/VtkWriter.h"
#include "io/ValueReader.h"
#include "ProblemVecDbg.h"
......@@ -510,21 +509,12 @@ namespace AMDiS {
return;
}
#ifdef _OPENMP
double wtime = omp_get_wtime();
#endif
clock_t first = clock();
solver->solveSystem(solverMatrix, *solution, *rhs);
#ifdef _OPENMP
INFO(info, 8)("solution of discrete system needed %.5f seconds system time / %.5f seconds wallclock time\n",
TIME_USED(first, clock()), omp_get_wtime() - wtime);
#else
INFO(info, 8)("solution of discrete system needed %.5f seconds\n",
TIME_USED(first, clock()));
#endif
adaptInfo->setSolverIterations(solver->getIterations());
adaptInfo->setMaxSolverIterations(solver->getMaxIterations());
......@@ -539,12 +529,8 @@ namespace AMDiS {
#ifdef HAVE_PARALLEL_DOMAIN_AMDIS
double first = MPI::Wtime();
#else
#ifdef _OPENMP
double first =