Skip to content
Snippets Groups Projects
Commit b462d889 authored by Elias Pipping's avatar Elias Pipping
Browse files

[Cleanup] Friction writing: Use a general projector for outputting

parent 44911747
No related branches found
No related tags found
No related merge requests found
...@@ -7,10 +7,11 @@ ...@@ -7,10 +7,11 @@
template <class ScalarVector, class Vector> template <class ScalarVector, class Vector>
BoundaryWriter<ScalarVector, Vector>::BoundaryWriter( BoundaryWriter<ScalarVector, Vector>::BoundaryWriter(
Vector const &vertexCoordinates, Vector const &vertexCoordinates,
Dune::BitSetVector<1> const &_boundaryNodes) Dune::BitSetVector<1> const &_boundaryNodes, Projector projector)
: displacementWriter("displacements", std::fstream::out), : displacementWriter("displacements", std::fstream::out),
velocityWriter("velocities", std::fstream::out), velocityWriter("velocities", std::fstream::out),
boundaryNodes(_boundaryNodes) { boundaryNodes(_boundaryNodes),
projector_(projector) {
std::fstream vertexCoordinateWriter("coordinates", std::fstream::out); std::fstream vertexCoordinateWriter("coordinates", std::fstream::out);
for (size_t i = 0; i < boundaryNodes.size(); ++i) for (size_t i = 0; i < boundaryNodes.size(); ++i)
if (boundaryNodes[i][0]) if (boundaryNodes[i][0])
...@@ -31,8 +32,8 @@ void BoundaryWriter<ScalarVector, Vector>::writeKinetics(Vector const &u, ...@@ -31,8 +32,8 @@ void BoundaryWriter<ScalarVector, Vector>::writeKinetics(Vector const &u,
if (!boundaryNodes[i][0]) if (!boundaryNodes[i][0])
continue; continue;
displacementWriter << u[i][0] << " "; displacementWriter << projector_(u[i]) << " ";
velocityWriter << v[i][0] << " "; velocityWriter << projector_(v[i]) << " ";
} }
displacementWriter << std::endl; displacementWriter << std::endl;
......
...@@ -7,9 +7,13 @@ ...@@ -7,9 +7,13 @@
#include <dune/common/bitsetvector.hh> #include <dune/common/bitsetvector.hh>
template <class ScalarVector, class Vector> class BoundaryWriter { template <class ScalarVector, class Vector> class BoundaryWriter {
protected:
using Projector = std::function<double(typename Vector::block_type const &)>;
public: public:
BoundaryWriter(Vector const &vertexCoordinates, BoundaryWriter(Vector const &vertexCoordinates,
Dune::BitSetVector<1> const &_boundaryNodes); Dune::BitSetVector<1> const &_boundaryNodes,
Projector projector);
virtual ~BoundaryWriter(); virtual ~BoundaryWriter();
...@@ -19,5 +23,7 @@ template <class ScalarVector, class Vector> class BoundaryWriter { ...@@ -19,5 +23,7 @@ template <class ScalarVector, class Vector> class BoundaryWriter {
std::fstream displacementWriter; std::fstream displacementWriter;
std::fstream velocityWriter; std::fstream velocityWriter;
Dune::BitSetVector<1> const &boundaryNodes; Dune::BitSetVector<1> const &boundaryNodes;
Projector projector_;
}; };
#endif #endif
...@@ -7,8 +7,9 @@ ...@@ -7,8 +7,9 @@
template <class ScalarVector, class Vector> template <class ScalarVector, class Vector>
FrictionWriter<ScalarVector, Vector>::FrictionWriter( FrictionWriter<ScalarVector, Vector>::FrictionWriter(
Vector const &vertexCoordinates, Vector const &vertexCoordinates,
Dune::BitSetVector<1> const &_boundaryNodes) Dune::BitSetVector<1> const &_boundaryNodes,
: BW(vertexCoordinates, _boundaryNodes), typename BW::Projector projector)
: BW(vertexCoordinates, _boundaryNodes, projector),
coefficientWriter("coefficients", std::fstream::out), coefficientWriter("coefficients", std::fstream::out),
stateWriter("states", std::fstream::out) {} stateWriter("states", std::fstream::out) {}
......
...@@ -14,7 +14,8 @@ class FrictionWriter : public BoundaryWriter<ScalarVector, Vector> { ...@@ -14,7 +14,8 @@ class FrictionWriter : public BoundaryWriter<ScalarVector, Vector> {
public: public:
FrictionWriter(Vector const &vertexCoordinates, FrictionWriter(Vector const &vertexCoordinates,
Dune::BitSetVector<1> const &_boundaryNodes); Dune::BitSetVector<1> const &_boundaryNodes,
typename BW::Projector projector);
~FrictionWriter(); ~FrictionWriter();
......
...@@ -280,8 +280,9 @@ int main(int argc, char *argv[]) { ...@@ -280,8 +280,9 @@ int main(int argc, char *argv[]) {
vertexCoordinates[vertexMapper.map(*it)] = geometry.corner(0); vertexCoordinates[vertexMapper.map(*it)] = geometry.corner(0);
} }
} }
FrictionWriter<ScalarVector, Vector> frictionWriter(vertexCoordinates, FrictionWriter<ScalarVector, Vector> frictionWriter(
frictionalNodes); vertexCoordinates, frictionalNodes,
[](LocalVector const &x) { return x[0]; });
auto const reportFriction = [&](Vector const &_u, Vector const &_v, auto const reportFriction = [&](Vector const &_u, Vector const &_v,
ScalarVector const &_alpha) { ScalarVector const &_alpha) {
ScalarVector c; ScalarVector c;
......
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