Skip to content
Snippets Groups Projects
Commit 92959cd2 authored by Oliver Sander's avatar Oliver Sander Committed by sander@FU-BERLIN.DE
Browse files

replace neumannassembler by BoundaryFunctionalAssembler

[[Imported from SVN: r6737]]
parent c0bfa724
No related branches found
No related tags found
No related merge requests found
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#include <dune/fufem/boundarypatch.hh> #include <dune/fufem/boundarypatch.hh>
#include <dune/fufem/prolongboundarypatch.hh> #include <dune/fufem/prolongboundarypatch.hh>
#include <dune/fufem/sampleonbitfield.hh> #include <dune/fufem/sampleonbitfield.hh>
#include <dune/fufem/neumannassembler.hh>
#include <dune/fufem/computestress.hh> #include <dune/fufem/computestress.hh>
#include <dune/fufem/functionspacebases/q1nodalbasis.hh> #include <dune/fufem/functionspacebases/q1nodalbasis.hh>
...@@ -392,10 +391,17 @@ int main (int argc, char *argv[]) try ...@@ -392,10 +391,17 @@ int main (int argc, char *argv[]) try
rodX[0].r, rodX[0].r,
neumannValues); neumannValues);
rhs3d = 0; /* rhs3d = 0;
assembleAndAddNeumannTerm<GridType::LevelGridView, VectorType>(interfaceBoundary[complex.continuumGrids_["continuum"]->maxLevel()], assembleAndAddNeumannTerm<GridType::LevelGridView, VectorType>(interfaceBoundary[complex.continuumGrids_["continuum"]->maxLevel()],
neumannValues, neumannValues,
rhs3d); rhs3d);*/
/** \todo The LevelBasis is a hack. The interfaceBoundary should really by a LeafBoundaryPatch anyways */
typedef P1NodalBasis<GridType::LevelGridView,double> LevelBasis;
LevelBasis levelBasis(complex.continuumGrids_["continuum"]->levelView(toplevel));
BoundaryFunctionalAssembler<LevelBasis> boundaryFunctionalAssembler(levelBasis, interfaceBoundary.back());
BasisGridFunction<LevelBasis, VectorType> neumannValuesFunction(levelBasis, neumannValues);
NeumannBoundaryAssembler<GridType, FieldVector<double,dim> > localNeumannAssembler(neumannValuesFunction);
boundaryFunctionalAssembler.assemble(localNeumannAssembler, rhs3d, true);
// /////////////////////////////////////////////////////////// // ///////////////////////////////////////////////////////////
// Solve the Neumann problem for the continuum // Solve the Neumann problem for the continuum
......
...@@ -11,6 +11,9 @@ ...@@ -11,6 +11,9 @@
#include <dune/istl/bcrsmatrix.hh> #include <dune/istl/bcrsmatrix.hh>
#include <dune/istl/bvector.hh> #include <dune/istl/bvector.hh>
#include <dune/fufem/assemblers/boundaryfunctionalassembler.hh>
#include <dune/fufem/assemblers/localassemblers/neumannboundaryassembler.hh>
#include <dune/gfe/coupling/rodcontinuumcomplex.hh> #include <dune/gfe/coupling/rodcontinuumcomplex.hh>
template <class GridView, class MatrixType, class VectorType> template <class GridView, class MatrixType, class VectorType>
...@@ -78,9 +81,11 @@ public: ...@@ -78,9 +81,11 @@ public:
// The weak form of the Neumann data // The weak form of the Neumann data
VectorType rhs = weakVolumeAndNeumannTerm_; VectorType rhs = weakVolumeAndNeumannTerm_;
assembleAndAddNeumannTerm<GridView, VectorType>(interface_,
neumannValues, BoundaryFunctionalAssembler<P1Basis> boundaryFunctionalAssembler(basis, interface_);
rhs); BasisGridFunction<P1Basis,VectorType> neumannValuesFunction(basis,neumannValues);
NeumannBoundaryAssembler<typename GridView::Grid, Dune::FieldVector<double,3> > localNeumannAssembler(neumannValuesFunction);
boundaryFunctionalAssembler.assemble(localNeumannAssembler, rhs, false);
// Solve the Neumann problem for the continuum // Solve the Neumann problem for the continuum
VectorType x = dirichletValues_; VectorType x = dirichletValues_;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment