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

* Splitted Assember.h and Assembler.cc in several files

* First support for independent meshes for different components
parent ec239f4e
......@@ -88,6 +88,10 @@ $(SOURCE_DIR)/Serializable.h $(SOURCE_DIR)/BallProject.h $(SOURCE_DIR)/CylinderP
$(SOURCE_DIR)/MacroReader.h $(SOURCE_DIR)/MacroReader.cc \
$(SOURCE_DIR)/ValueReader.h $(SOURCE_DIR)/ValueReader.cc \
$(SOURCE_DIR)/Projection.h $(SOURCE_DIR)/Projection.cc \
$(SOURCE_DIR)/SubAssembler.h $(SOURCE_DIR)/SubAssembler.cc \
$(SOURCE_DIR)/ZeroOrderAssembler.h $(SOURCE_DIR)/ZeroOrderAssembler.cc \
$(SOURCE_DIR)/FirstOrderAssembler.h $(SOURCE_DIR)/FirstOrderAssembler.cc \
$(SOURCE_DIR)/SecondOrderAssembler.h $(SOURCE_DIR)/SecondOrderAssembler.cc \
$(SOURCE_DIR)/Assembler.h $(SOURCE_DIR)/Assembler.cc \
$(SOURCE_DIR)/AdaptInfo.h $(SOURCE_DIR)/AdaptInfo.cc \
$(SOURCE_DIR)/Marker.h $(SOURCE_DIR)/Marker.cc \
......@@ -221,6 +225,8 @@ $(SOURCE_DIR)/ElementInfo.h \
$(SOURCE_DIR)/VertexInfo.h \
$(SOURCE_DIR)/PeriodicInfo.h \
$(SOURCE_DIR)/OpenMP.h \
$(SOURCE_DIR)/ScalableQuadrature.h $(SOURCE_DIR)/ScalableQuadrature.cc \
$(SOURCE_DIR)/SubElInfo.h $(SOURCE_DIR)/SubElInfo.cc \
$(SOURCE_DIR)/parareal/ProblemBase.h \
$(SOURCE_DIR)/parareal/AdaptParaReal.h $(SOURCE_DIR)/parareal/AdaptParaReal.cc
......@@ -245,9 +251,6 @@ $(COMPOSITE_SOURCE_DIR)/ElementLevelSet.cc \
$(COMPOSITE_SOURCE_DIR)/CompositeFEMOperator.h \
$(COMPOSITE_SOURCE_DIR)/CompositeFEMOperator.cc \
$(COMPOSITE_SOURCE_DIR)/SubPolytope.h $(COMPOSITE_SOURCE_DIR)/SubPolytope.cc \
$(COMPOSITE_SOURCE_DIR)/ScalableQuadrature.h \
$(COMPOSITE_SOURCE_DIR)/ScalableQuadrature.cc \
$(COMPOSITE_SOURCE_DIR)/SubElInfo.h $(COMPOSITE_SOURCE_DIR)/SubElInfo.cc \
$(COMPOSITE_SOURCE_DIR)/SubElementAssembler.h \
$(COMPOSITE_SOURCE_DIR)/SubElementAssembler.cc \
$(COMPOSITE_SOURCE_DIR)/TranslateLsFct.h
......
......@@ -123,11 +123,19 @@ am__libamdis_la_SOURCES_DIST = $(PARALLEL_DIR)/ConditionalEstimator.h \
$(SOURCE_DIR)/CylinderProject.h $(SOURCE_DIR)/MacroReader.h \
$(SOURCE_DIR)/MacroReader.cc $(SOURCE_DIR)/ValueReader.h \
$(SOURCE_DIR)/ValueReader.cc $(SOURCE_DIR)/Projection.h \
$(SOURCE_DIR)/Projection.cc $(SOURCE_DIR)/Assembler.h \
$(SOURCE_DIR)/Assembler.cc $(SOURCE_DIR)/AdaptInfo.h \
$(SOURCE_DIR)/AdaptInfo.cc $(SOURCE_DIR)/Marker.h \
$(SOURCE_DIR)/Marker.cc $(SOURCE_DIR)/SystemVector.h \
$(SOURCE_DIR)/MatrixVector.h $(SOURCE_DIR)/MatrixVector.cc \
$(SOURCE_DIR)/Projection.cc $(SOURCE_DIR)/SubAssembler.h \
$(SOURCE_DIR)/SubAssembler.cc \
$(SOURCE_DIR)/ZeroOrderAssembler.h \
$(SOURCE_DIR)/ZeroOrderAssembler.cc \
$(SOURCE_DIR)/FirstOrderAssembler.h \
$(SOURCE_DIR)/FirstOrderAssembler.cc \
$(SOURCE_DIR)/SecondOrderAssembler.h \
$(SOURCE_DIR)/SecondOrderAssembler.cc \
$(SOURCE_DIR)/Assembler.h $(SOURCE_DIR)/Assembler.cc \
$(SOURCE_DIR)/AdaptInfo.h $(SOURCE_DIR)/AdaptInfo.cc \
$(SOURCE_DIR)/Marker.h $(SOURCE_DIR)/Marker.cc \
$(SOURCE_DIR)/SystemVector.h $(SOURCE_DIR)/MatrixVector.h \
$(SOURCE_DIR)/MatrixVector.cc \
$(SOURCE_DIR)/SurfaceQuadrature.h \
$(SOURCE_DIR)/SurfaceQuadrature.cc $(SOURCE_DIR)/LeafData.h \
$(SOURCE_DIR)/LeafData.cc $(SOURCE_DIR)/BoundaryManager.h \
......@@ -237,7 +245,10 @@ am__libamdis_la_SOURCES_DIST = $(PARALLEL_DIR)/ConditionalEstimator.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)/parareal/ProblemBase.h \
$(SOURCE_DIR)/OpenMP.h $(SOURCE_DIR)/ScalableQuadrature.h \
$(SOURCE_DIR)/ScalableQuadrature.cc $(SOURCE_DIR)/SubElInfo.h \
$(SOURCE_DIR)/SubElInfo.cc \
$(SOURCE_DIR)/parareal/ProblemBase.h \
$(SOURCE_DIR)/parareal/AdaptParaReal.h \
$(SOURCE_DIR)/parareal/AdaptParaReal.cc
@USE_PARALLEL_AMDIS_TRUE@am__objects_1 = \
......@@ -262,15 +273,17 @@ am_libamdis_la_OBJECTS = $(am__objects_1) \
libamdis_la-CreatorMap.lo libamdis_la-ProblemInterpolScal.lo \
libamdis_la-ProblemInterpolVec.lo libamdis_la-MacroReader.lo \
libamdis_la-ValueReader.lo libamdis_la-Projection.lo \
libamdis_la-Assembler.lo libamdis_la-AdaptInfo.lo \
libamdis_la-Marker.lo libamdis_la-MatrixVector.lo \
libamdis_la-SurfaceQuadrature.lo libamdis_la-LeafData.lo \
libamdis_la-BoundaryManager.lo libamdis_la-DirichletBC.lo \
libamdis_la-RobinBC.lo libamdis_la-MatVecMultiplier.lo \
libamdis_la-FileWriter.lo libamdis_la-ElementFileWriter.lo \
libamdis_la-ElInfo.lo libamdis_la-ElInfoStack.lo \
libamdis_la-Operator.lo libamdis_la-Mesh.lo \
libamdis_la-AdaptStationary.lo \
libamdis_la-SubAssembler.lo libamdis_la-ZeroOrderAssembler.lo \
libamdis_la-FirstOrderAssembler.lo \
libamdis_la-SecondOrderAssembler.lo libamdis_la-Assembler.lo \
libamdis_la-AdaptInfo.lo libamdis_la-Marker.lo \
libamdis_la-MatrixVector.lo libamdis_la-SurfaceQuadrature.lo \
libamdis_la-LeafData.lo libamdis_la-BoundaryManager.lo \
libamdis_la-DirichletBC.lo libamdis_la-RobinBC.lo \
libamdis_la-MatVecMultiplier.lo libamdis_la-FileWriter.lo \
libamdis_la-ElementFileWriter.lo libamdis_la-ElInfo.lo \
libamdis_la-ElInfoStack.lo libamdis_la-Operator.lo \
libamdis_la-Mesh.lo libamdis_la-AdaptStationary.lo \
libamdis_la-AdaptInstationary.lo \
libamdis_la-DiagonalPreconditioner.lo \
libamdis_la-ILUPreconditioner.lo \
......@@ -303,7 +316,8 @@ am_libamdis_la_OBJECTS = $(am__objects_1) \
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-AdaptParaReal.lo
libamdis_la-DataCollector.lo libamdis_la-ScalableQuadrature.lo \
libamdis_la-SubElInfo.lo libamdis_la-AdaptParaReal.lo
libamdis_la_OBJECTS = $(am_libamdis_la_OBJECTS)
libcompositeFEM_la_LIBADD =
am_libcompositeFEM_la_OBJECTS = libcompositeFEM_la-CFE_Integration.lo \
......@@ -314,8 +328,6 @@ am_libcompositeFEM_la_OBJECTS = libcompositeFEM_la-CFE_Integration.lo \
libcompositeFEM_la-ElementLevelSet.lo \
libcompositeFEM_la-CompositeFEMOperator.lo \
libcompositeFEM_la-SubPolytope.lo \
libcompositeFEM_la-ScalableQuadrature.lo \
libcompositeFEM_la-SubElInfo.lo \
libcompositeFEM_la-SubElementAssembler.lo
libcompositeFEM_la_OBJECTS = $(am_libcompositeFEM_la_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(srcdir)
......@@ -519,6 +531,10 @@ $(SOURCE_DIR)/Serializable.h $(SOURCE_DIR)/BallProject.h $(SOURCE_DIR)/CylinderP
$(SOURCE_DIR)/MacroReader.h $(SOURCE_DIR)/MacroReader.cc \
$(SOURCE_DIR)/ValueReader.h $(SOURCE_DIR)/ValueReader.cc \
$(SOURCE_DIR)/Projection.h $(SOURCE_DIR)/Projection.cc \
$(SOURCE_DIR)/SubAssembler.h $(SOURCE_DIR)/SubAssembler.cc \
$(SOURCE_DIR)/ZeroOrderAssembler.h $(SOURCE_DIR)/ZeroOrderAssembler.cc \
$(SOURCE_DIR)/FirstOrderAssembler.h $(SOURCE_DIR)/FirstOrderAssembler.cc \
$(SOURCE_DIR)/SecondOrderAssembler.h $(SOURCE_DIR)/SecondOrderAssembler.cc \
$(SOURCE_DIR)/Assembler.h $(SOURCE_DIR)/Assembler.cc \
$(SOURCE_DIR)/AdaptInfo.h $(SOURCE_DIR)/AdaptInfo.cc \
$(SOURCE_DIR)/Marker.h $(SOURCE_DIR)/Marker.cc \
......@@ -652,6 +668,8 @@ $(SOURCE_DIR)/ElementInfo.h \
$(SOURCE_DIR)/VertexInfo.h \
$(SOURCE_DIR)/PeriodicInfo.h \
$(SOURCE_DIR)/OpenMP.h \
$(SOURCE_DIR)/ScalableQuadrature.h $(SOURCE_DIR)/ScalableQuadrature.cc \
$(SOURCE_DIR)/SubElInfo.h $(SOURCE_DIR)/SubElInfo.cc \
$(SOURCE_DIR)/parareal/ProblemBase.h \
$(SOURCE_DIR)/parareal/AdaptParaReal.h $(SOURCE_DIR)/parareal/AdaptParaReal.cc
......@@ -672,9 +690,6 @@ $(COMPOSITE_SOURCE_DIR)/ElementLevelSet.cc \
$(COMPOSITE_SOURCE_DIR)/CompositeFEMOperator.h \
$(COMPOSITE_SOURCE_DIR)/CompositeFEMOperator.cc \
$(COMPOSITE_SOURCE_DIR)/SubPolytope.h $(COMPOSITE_SOURCE_DIR)/SubPolytope.cc \
$(COMPOSITE_SOURCE_DIR)/ScalableQuadrature.h \
$(COMPOSITE_SOURCE_DIR)/ScalableQuadrature.cc \
$(COMPOSITE_SOURCE_DIR)/SubElInfo.h $(COMPOSITE_SOURCE_DIR)/SubElInfo.cc \
$(COMPOSITE_SOURCE_DIR)/SubElementAssembler.h \
$(COMPOSITE_SOURCE_DIR)/SubElementAssembler.cc \
$(COMPOSITE_SOURCE_DIR)/TranslateLsFct.h
......@@ -787,6 +802,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-Estimator.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-FileWriter.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-FiniteElemSpace.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-FirstOrderAssembler.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-FixVec.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-Flag.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-GNUPlotWriter.Plo@am__quote@
......@@ -839,9 +855,13 @@ distclean-compile:
@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-ScalableQuadrature.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-SecondOrderAssembler.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@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-StlVector.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-SubAssembler.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-SubElInfo.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-SurfaceQuadrature.Plo@am__quote@
@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@
......@@ -853,6 +873,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-ValueWriter.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-VertexVector.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-VtkWriter.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-ZeroOrderAssembler.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-demangle.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcompositeFEM_la-CFE_Integration.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcompositeFEM_la-CFE_NormAndErrorFcts.Plo@am__quote@
......@@ -861,8 +882,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcompositeFEM_la-ElementLevelSet.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcompositeFEM_la-LevelSetAdaptMesh.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcompositeFEM_la-PenaltyOperator.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcompositeFEM_la-ScalableQuadrature.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcompositeFEM_la-SubElInfo.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcompositeFEM_la-SubElementAssembler.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcompositeFEM_la-SubPolytope.Plo@am__quote@
......@@ -1111,6 +1130,34 @@ libamdis_la-Projection.lo: $(SOURCE_DIR)/Projection.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-Projection.lo `test -f '$(SOURCE_DIR)/Projection.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/Projection.cc
libamdis_la-SubAssembler.lo: $(SOURCE_DIR)/SubAssembler.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-SubAssembler.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-SubAssembler.Tpo" -c -o libamdis_la-SubAssembler.lo `test -f '$(SOURCE_DIR)/SubAssembler.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/SubAssembler.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-SubAssembler.Tpo" "$(DEPDIR)/libamdis_la-SubAssembler.Plo"; else rm -f "$(DEPDIR)/libamdis_la-SubAssembler.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SOURCE_DIR)/SubAssembler.cc' object='libamdis_la-SubAssembler.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-SubAssembler.lo `test -f '$(SOURCE_DIR)/SubAssembler.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/SubAssembler.cc
libamdis_la-ZeroOrderAssembler.lo: $(SOURCE_DIR)/ZeroOrderAssembler.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-ZeroOrderAssembler.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-ZeroOrderAssembler.Tpo" -c -o libamdis_la-ZeroOrderAssembler.lo `test -f '$(SOURCE_DIR)/ZeroOrderAssembler.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/ZeroOrderAssembler.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-ZeroOrderAssembler.Tpo" "$(DEPDIR)/libamdis_la-ZeroOrderAssembler.Plo"; else rm -f "$(DEPDIR)/libamdis_la-ZeroOrderAssembler.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SOURCE_DIR)/ZeroOrderAssembler.cc' object='libamdis_la-ZeroOrderAssembler.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-ZeroOrderAssembler.lo `test -f '$(SOURCE_DIR)/ZeroOrderAssembler.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/ZeroOrderAssembler.cc
libamdis_la-FirstOrderAssembler.lo: $(SOURCE_DIR)/FirstOrderAssembler.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-FirstOrderAssembler.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-FirstOrderAssembler.Tpo" -c -o libamdis_la-FirstOrderAssembler.lo `test -f '$(SOURCE_DIR)/FirstOrderAssembler.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/FirstOrderAssembler.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-FirstOrderAssembler.Tpo" "$(DEPDIR)/libamdis_la-FirstOrderAssembler.Plo"; else rm -f "$(DEPDIR)/libamdis_la-FirstOrderAssembler.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SOURCE_DIR)/FirstOrderAssembler.cc' object='libamdis_la-FirstOrderAssembler.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-FirstOrderAssembler.lo `test -f '$(SOURCE_DIR)/FirstOrderAssembler.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/FirstOrderAssembler.cc
libamdis_la-SecondOrderAssembler.lo: $(SOURCE_DIR)/SecondOrderAssembler.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-SecondOrderAssembler.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-SecondOrderAssembler.Tpo" -c -o libamdis_la-SecondOrderAssembler.lo `test -f '$(SOURCE_DIR)/SecondOrderAssembler.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/SecondOrderAssembler.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-SecondOrderAssembler.Tpo" "$(DEPDIR)/libamdis_la-SecondOrderAssembler.Plo"; else rm -f "$(DEPDIR)/libamdis_la-SecondOrderAssembler.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SOURCE_DIR)/SecondOrderAssembler.cc' object='libamdis_la-SecondOrderAssembler.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-SecondOrderAssembler.lo `test -f '$(SOURCE_DIR)/SecondOrderAssembler.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/SecondOrderAssembler.cc
libamdis_la-Assembler.lo: $(SOURCE_DIR)/Assembler.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-Assembler.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-Assembler.Tpo" -c -o libamdis_la-Assembler.lo `test -f '$(SOURCE_DIR)/Assembler.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/Assembler.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-Assembler.Tpo" "$(DEPDIR)/libamdis_la-Assembler.Plo"; else rm -f "$(DEPDIR)/libamdis_la-Assembler.Tpo"; exit 1; fi
......@@ -1608,6 +1655,20 @@ libamdis_la-DataCollector.lo: $(SOURCE_DIR)/DataCollector.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-DataCollector.lo `test -f '$(SOURCE_DIR)/DataCollector.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/DataCollector.cc
libamdis_la-ScalableQuadrature.lo: $(SOURCE_DIR)/ScalableQuadrature.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-ScalableQuadrature.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-ScalableQuadrature.Tpo" -c -o libamdis_la-ScalableQuadrature.lo `test -f '$(SOURCE_DIR)/ScalableQuadrature.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/ScalableQuadrature.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-ScalableQuadrature.Tpo" "$(DEPDIR)/libamdis_la-ScalableQuadrature.Plo"; else rm -f "$(DEPDIR)/libamdis_la-ScalableQuadrature.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SOURCE_DIR)/ScalableQuadrature.cc' object='libamdis_la-ScalableQuadrature.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-ScalableQuadrature.lo `test -f '$(SOURCE_DIR)/ScalableQuadrature.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/ScalableQuadrature.cc
libamdis_la-SubElInfo.lo: $(SOURCE_DIR)/SubElInfo.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-SubElInfo.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-SubElInfo.Tpo" -c -o libamdis_la-SubElInfo.lo `test -f '$(SOURCE_DIR)/SubElInfo.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/SubElInfo.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-SubElInfo.Tpo" "$(DEPDIR)/libamdis_la-SubElInfo.Plo"; else rm -f "$(DEPDIR)/libamdis_la-SubElInfo.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SOURCE_DIR)/SubElInfo.cc' object='libamdis_la-SubElInfo.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-SubElInfo.lo `test -f '$(SOURCE_DIR)/SubElInfo.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/SubElInfo.cc
libamdis_la-AdaptParaReal.lo: $(SOURCE_DIR)/parareal/AdaptParaReal.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-AdaptParaReal.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-AdaptParaReal.Tpo" -c -o libamdis_la-AdaptParaReal.lo `test -f '$(SOURCE_DIR)/parareal/AdaptParaReal.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/parareal/AdaptParaReal.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-AdaptParaReal.Tpo" "$(DEPDIR)/libamdis_la-AdaptParaReal.Plo"; else rm -f "$(DEPDIR)/libamdis_la-AdaptParaReal.Tpo"; exit 1; fi
......@@ -1671,20 +1732,6 @@ libcompositeFEM_la-SubPolytope.lo: $(COMPOSITE_SOURCE_DIR)/SubPolytope.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) $(libcompositeFEM_la_CXXFLAGS) $(CXXFLAGS) -c -o libcompositeFEM_la-SubPolytope.lo `test -f '$(COMPOSITE_SOURCE_DIR)/SubPolytope.cc' || echo '$(srcdir)/'`$(COMPOSITE_SOURCE_DIR)/SubPolytope.cc
libcompositeFEM_la-ScalableQuadrature.lo: $(COMPOSITE_SOURCE_DIR)/ScalableQuadrature.cc
@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcompositeFEM_la_CXXFLAGS) $(CXXFLAGS) -MT libcompositeFEM_la-ScalableQuadrature.lo -MD -MP -MF "$(DEPDIR)/libcompositeFEM_la-ScalableQuadrature.Tpo" -c -o libcompositeFEM_la-ScalableQuadrature.lo `test -f '$(COMPOSITE_SOURCE_DIR)/ScalableQuadrature.cc' || echo '$(srcdir)/'`$(COMPOSITE_SOURCE_DIR)/ScalableQuadrature.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libcompositeFEM_la-ScalableQuadrature.Tpo" "$(DEPDIR)/libcompositeFEM_la-ScalableQuadrature.Plo"; else rm -f "$(DEPDIR)/libcompositeFEM_la-ScalableQuadrature.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(COMPOSITE_SOURCE_DIR)/ScalableQuadrature.cc' object='libcompositeFEM_la-ScalableQuadrature.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) $(libcompositeFEM_la_CXXFLAGS) $(CXXFLAGS) -c -o libcompositeFEM_la-ScalableQuadrature.lo `test -f '$(COMPOSITE_SOURCE_DIR)/ScalableQuadrature.cc' || echo '$(srcdir)/'`$(COMPOSITE_SOURCE_DIR)/ScalableQuadrature.cc
libcompositeFEM_la-SubElInfo.lo: $(COMPOSITE_SOURCE_DIR)/SubElInfo.cc
@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcompositeFEM_la_CXXFLAGS) $(CXXFLAGS) -MT libcompositeFEM_la-SubElInfo.lo -MD -MP -MF "$(DEPDIR)/libcompositeFEM_la-SubElInfo.Tpo" -c -o libcompositeFEM_la-SubElInfo.lo `test -f '$(COMPOSITE_SOURCE_DIR)/SubElInfo.cc' || echo '$(srcdir)/'`$(COMPOSITE_SOURCE_DIR)/SubElInfo.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libcompositeFEM_la-SubElInfo.Tpo" "$(DEPDIR)/libcompositeFEM_la-SubElInfo.Plo"; else rm -f "$(DEPDIR)/libcompositeFEM_la-SubElInfo.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(COMPOSITE_SOURCE_DIR)/SubElInfo.cc' object='libcompositeFEM_la-SubElInfo.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) $(libcompositeFEM_la_CXXFLAGS) $(CXXFLAGS) -c -o libcompositeFEM_la-SubElInfo.lo `test -f '$(COMPOSITE_SOURCE_DIR)/SubElInfo.cc' || echo '$(srcdir)/'`$(COMPOSITE_SOURCE_DIR)/SubElInfo.cc
libcompositeFEM_la-SubElementAssembler.lo: $(COMPOSITE_SOURCE_DIR)/SubElementAssembler.cc
@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcompositeFEM_la_CXXFLAGS) $(CXXFLAGS) -MT libcompositeFEM_la-SubElementAssembler.lo -MD -MP -MF "$(DEPDIR)/libcompositeFEM_la-SubElementAssembler.Tpo" -c -o libcompositeFEM_la-SubElementAssembler.lo `test -f '$(COMPOSITE_SOURCE_DIR)/SubElementAssembler.cc' || echo '$(srcdir)/'`$(COMPOSITE_SOURCE_DIR)/SubElementAssembler.cc; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libcompositeFEM_la-SubElementAssembler.Tpo" "$(DEPDIR)/libcompositeFEM_la-SubElementAssembler.Plo"; else rm -f "$(DEPDIR)/libcompositeFEM_la-SubElementAssembler.Tpo"; exit 1; fi
......
......@@ -16,11 +16,9 @@ namespace AMDiS {
// false - no
////////////////////////////////////////////////////////////////////////////
int zeroCounter;
for (int i = 0; i < numIntPoints; i++) {
zeroCounter = 0;
for (int j = 0; j < dim+1; j++) {
int zeroCounter = 0;
for (int j = 0; j < dim + 1; j++) {
if (fabs((*intPoints)[i][j]) <= 1.e-15 ) {
zeroCounter++;
}
......@@ -119,7 +117,7 @@ namespace AMDiS {
TEST_EXIT(dim == 1 && numIntPoints == 1)("invalid call of this routine\n");
VectorOfFixVecs<DimVec<double> > *subElVertices =
NEW VectorOfFixVecs<DimVec<double> >(dim, dim+1, NO_INIT);
NEW VectorOfFixVecs<DimVec<double> >(dim, dim + 1, NO_INIT);
DimVec<double> vertex(dim, DEFAULT_VALUE, 1.0);
/**
......@@ -132,8 +130,7 @@ namespace AMDiS {
* subelement.
*/
vertex[1] = 0.0;
}
else {
} else {
/**
* The vertex in element with barycentric coordinates (0,1) is in
* subelement.
......@@ -189,7 +186,7 @@ namespace AMDiS {
("invalid call of this routine\n");
VectorOfFixVecs<DimVec<double> >*subElVertices =
NEW VectorOfFixVecs<DimVec<double> >(dim, dim+1, NO_INIT);
NEW VectorOfFixVecs<DimVec<double> >(dim, dim + 1, NO_INIT);
DimVec<double> vertex(dim, DEFAULT_VALUE, 1.0);
/**
......@@ -197,7 +194,7 @@ namespace AMDiS {
* a subelement of element.
*/
for (int i = 0; i < numIntPoints; i++) {
for (int j = 0; j < dim+1; j++) {
for (int j = 0; j < dim + 1; j++) {
if ( fabs((*intPoints)[i][j]) <= 1.e-15 ) {
vertex[j] = 0.0;
};
......@@ -232,7 +229,7 @@ namespace AMDiS {
int SubPolytope::getIndexSecondFaceIntPoint0(int indexFirstFace, int dim)
{
for (int i = 0; i < dim+1; i++) {
for (int i = 0; i < dim + 1; i++) {
if ( fabs((*intPoints)[0][i]) <= 1.e-15 && i != indexFirstFace ) {
return i;
}
......@@ -276,7 +273,7 @@ namespace AMDiS {
("invalid index for vertex of a tetrahedron");
VectorOfFixVecs<DimVec<double> > *subElVertices =
NEW VectorOfFixVecs<DimVec<double> >(dim, dim+1, NO_INIT);
NEW VectorOfFixVecs<DimVec<double> >(dim, dim + 1, NO_INIT);
DimVec<double> vertexA(dim, DEFAULT_VALUE, 0.0);
DimVec<double> vertexB(dim, DEFAULT_VALUE, 0.0);
......@@ -319,7 +316,7 @@ namespace AMDiS {
// Get the edges including the intersection points.
for (int i = 0; i < numIntPoints; i++) {
int k = 0;
for (int j = 0; j < dim+1; j++) {
for (int j = 0; j < dim + 1; j++) {
if (fabs((*intPoints)[i][j]) > 1.e-15 ) {
indexEdge[k] = j;
k++;
......@@ -332,7 +329,7 @@ namespace AMDiS {
// Get the vertex of element adjacent with indexElVertInPol1 whose
// common edge with indexElVertInPol1 doesn't contain an
// intersection point, and store it in indexElVertInPol2.
for (int i = 0; i < dim+1; i++) {
for (int i = 0; i < dim + 1; i++) {
if (intPointOnEdge[indexElVertInPol1][i] == false &&
i != indexElVertInPol1 ) {
indexElVertInPol2 = i;
......
......@@ -11,1329 +11,6 @@
namespace AMDiS {
std::vector<SubAssembler*> ZeroOrderAssembler::optimizedSubAssemblers;
std::vector<SubAssembler*> FirstOrderAssembler::optimizedSubAssemblersGrdPhi;
std::vector<SubAssembler*> FirstOrderAssembler::optimizedSubAssemblersGrdPsi;
std::vector<SubAssembler*> SecondOrderAssembler::optimizedSubAssemblers;
std::vector<SubAssembler*> ZeroOrderAssembler::standardSubAssemblers;
std::vector<SubAssembler*> FirstOrderAssembler::standardSubAssemblersGrdPhi;
std::vector<SubAssembler*> FirstOrderAssembler::standardSubAssemblersGrdPsi;
std::vector<SubAssembler*> SecondOrderAssembler::standardSubAssemblers;
SubAssembler::SubAssembler(Operator *op,
Assembler *assembler,
Quadrature *quadrat,
int order,
bool optimized,
FirstOrderType type)
: nRow(0),
nCol(0),
coordsAtQPs(NULL),
coordsNumAllocated(0),
quadrature(quadrat),
psiFast(NULL),
phiFast(NULL),
owner(assembler),
symmetric(true),
opt(optimized),
firstCall(true)
{
const BasisFunction *psi = assembler->rowFESpace->getBasisFcts();
const BasisFunction *phi = assembler->colFESpace->getBasisFcts();
nRow = psi->getNumber();
nCol = phi->getNumber();
int maxThreads = omp_get_max_threads();
terms.resize(maxThreads);
switch (order) {
case 0:
terms = op->zeroOrder;
break;
case 1:
if(type == GRD_PHI)
terms = op->firstOrderGrdPhi;
else
terms = op->firstOrderGrdPsi;
break;
case 2:
terms = op->secondOrder;
break;
}
// check if all terms are symmetric
symmetric = true;
for (int i = 0; i < static_cast<int>(terms[0].size()); i++) {
if (!(terms[0][i])->isSymmetric()) {
symmetric = false;
break;
}
}
dim = assembler->rowFESpace->getMesh()->getDim();
}
FastQuadrature *SubAssembler::updateFastQuadrature(FastQuadrature *quadFast,
const BasisFunction *psi,
Flag updateFlag)
{
if (!quadFast) {
quadFast = FastQuadrature::provideFastQuadrature(psi,
*quadrature,
updateFlag);
} else {
if (!quadFast->initialized(updateFlag))
quadFast->init(updateFlag);
}
return quadFast;
}
void SubAssembler::initElement(const ElInfo* elInfo,
Quadrature *quad)
{
// set corrdsAtQPs invalid
coordsValid = false;
// set values at QPs invalid
std::map<const DOFVectorBase<double>*, ValuesAtQPs*>::iterator it1;
for (it1 = valuesAtQPs.begin(); it1 != valuesAtQPs.end(); ++it1) {
((*it1).second)->valid = false;
}
// set gradients at QPs invalid
std::map<const DOFVectorBase<double>*, GradientsAtQPs*>::iterator it2;
for (it2 = gradientsAtQPs.begin(); it2 != gradientsAtQPs.end(); ++it2) {
((*it2).second)->valid = false;
}
int myRank = omp_get_thread_num();
// calls initElement of each term
std::vector<OperatorTerm*>::iterator it;
for (it = terms[myRank].begin(); it != terms[myRank].end(); ++it) {
(*it)->initElement(elInfo, this, quad);
}
}
WorldVector<double>* SubAssembler::getCoordsAtQPs(const ElInfo* elInfo,
Quadrature *quad)
{
Quadrature *localQuad = quad ? quad : quadrature;
const int nPoints = localQuad->getNumPoints();
// already calculated for this element ?
if (coordsValid) {
return coordsAtQPs;
}
if (coordsAtQPs) {
if (coordsNumAllocated != nPoints) {
DELETE [] coordsAtQPs;
coordsAtQPs = NEW WorldVector<double>[nPoints];
coordsNumAllocated = nPoints;
}
} else {
coordsAtQPs = NEW WorldVector<double>[nPoints];
coordsNumAllocated = nPoints;
}
// set new values
WorldVector<double>* k = &(coordsAtQPs[0]);
for (int l = 0; k < &(coordsAtQPs[nPoints]); ++k, ++l) {
elInfo->coordToWorld(localQuad->getLambda(l), k);
}
// mark values as valid
coordsValid = true;
return coordsAtQPs;
}
double* SubAssembler::getVectorAtQPs(DOFVectorBase<double>* dv,
const ElInfo* elInfo,
Quadrature *quad)
{
FUNCNAME("SubAssembler::getVectorAtQPs()");
const DOFVectorBase<double>* vec = dv ? dv : owner->operat->getUhOld();
TEST_EXIT_DBG(vec)("no dof vector!\n");
if (valuesAtQPs[vec] && valuesAtQPs[vec]->valid)
return valuesAtQPs[vec]->values.getValArray();
Quadrature *localQuad = quad ? quad : quadrature;
if (!valuesAtQPs[vec]) {
valuesAtQPs[vec] = new ValuesAtQPs;
}
valuesAtQPs[vec]->values.resize(localQuad->getNumPoints());
double *values = valuesAtQPs[vec]->values.getValArray();
bool sameFESpaces =
(vec->getFESpace() == owner->rowFESpace) ||
(vec->getFESpace() == owner->colFESpace);
if (opt && !quad && sameFESpaces) {
const BasisFunction *psi = owner->rowFESpace->getBasisFcts();
const BasisFunction *phi = owner->colFESpace->getBasisFcts();
if (vec->getFESpace()->getBasisFcts() == psi) {
psiFast = updateFastQuadrature(psiFast, psi, INIT_PHI);
} else if(vec->getFESpace()->getBasisFcts() == phi) {
phiFast = updateFastQuadrature(phiFast, phi, INIT_PHI);
}
}
// calculate new values
const BasisFunction *basFcts = vec->getFESpace()->getBasisFcts();
if (opt && !quad && sameFESpaces) {
if (psiFast->getBasisFunctions() == basFcts) {
vec->getVecAtQPs(elInfo, NULL, psiFast, values);
} else if(phiFast->getBasisFunctions() == basFcts) {
vec->getVecAtQPs(elInfo, NULL, phiFast, values);
} else {
vec->getVecAtQPs(elInfo, localQuad, NULL, values);
}
} else {
vec->getVecAtQPs(elInfo, localQuad, NULL, values);
}
valuesAtQPs[vec]->valid = true;
return values;
}
WorldVector<double>* SubAssembler::getGradientsAtQPs(DOFVectorBase<double>* dv,
const ElInfo* elInfo,
Quadrature *quad)
{
FUNCNAME("SubAssembler::getGradientsAtQPs()");
const DOFVectorBase<double>* vec = dv ? dv : owner->operat->getUhOld();
TEST_EXIT_DBG(vec)("no dof vector!\n");
if (gradientsAtQPs[vec] && gradientsAtQPs[vec]->valid)
return gradientsAtQPs[vec]->values.getValArray();
Quadrature *localQuad = quad ? quad : quadrature;
if (!gradientsAtQPs[vec]) {
gradientsAtQPs[vec] = new GradientsAtQPs;
}
gradientsAtQPs[vec]->values.resize(localQuad->getNumPoints());
WorldVector<double> *values = gradientsAtQPs[vec]->values.getValArray();
const BasisFunction *psi = owner->rowFESpace->getBasisFcts();
const BasisFunction *phi = owner->colFESpace->getBasisFcts();
bool sameFESpaces =
(vec->getFESpace() == owner->rowFESpace) ||
(vec->getFESpace() == owner->colFESpace);
if (opt && !quad && sameFESpaces) {
if (vec->getFESpace()->getBasisFcts() == psi) {
psiFast = updateFastQuadrature(psiFast, psi, INIT_GRD_PHI);
} else if(vec->getFESpace()->getBasisFcts() == phi) {
phiFast = updateFastQuadrature(phiFast, phi, INIT_GRD_PHI);
}
}
// calculate new values
const BasisFunction *basFcts = vec->getFESpace()->getBasisFcts();
if (opt && !quad && sameFESpaces) {
if (psiFast->getBasisFunctions() == basFcts) {
vec->getGrdAtQPs(elInfo, NULL, psiFast, values);
} else {
vec->getGrdAtQPs(elInfo, NULL, phiFast, values);
}
} else {
vec->getGrdAtQPs(elInfo, localQuad, NULL, values);
}
gradientsAtQPs[vec]->valid = true;
return values;
}