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

[Cleanup] Print grid info

parent 9724d521
No related branches found
No related tags found
No related merge requests found
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
#include <dune/fufem/sharedpointermap.hh> #include <dune/fufem/sharedpointermap.hh>
#include <dune/solvers/norms/energynorm.hh> #include <dune/solvers/norms/energynorm.hh>
#include <dune/solvers/norms/sumnorm.hh> #include <dune/solvers/norms/sumnorm.hh>
#include <dune/solvers/norms/twonorm.hh>
#include <dune/solvers/solvers/loopsolver.hh> #include <dune/solvers/solvers/loopsolver.hh>
#include <dune/solvers/solvers/solver.hh> #include <dune/solvers/solvers/solver.hh>
#include <dune/tnnmg/nonlinearities/zerononlinearity.hh> #include <dune/tnnmg/nonlinearities/zerononlinearity.hh>
...@@ -81,6 +82,21 @@ void initPython() { ...@@ -81,6 +82,21 @@ void initPython() {
Python::run("sys.path.append('" datadir "')"); Python::run("sys.path.append('" datadir "')");
} }
template <class Geometry> double diameter(Geometry const &geometry) {
auto const numCorners = geometry.corners();
std::vector<typename Geometry::GlobalCoordinate> corners(numCorners);
for (int i = 0; i < numCorners; ++i)
corners[i] = geometry.corner(i);
TwoNorm<typename Geometry::GlobalCoordinate> twoNorm;
double diameter = 0.0;
for (int i = 0; i < numCorners; ++i)
for (int j = 0; j < i; ++j)
diameter = std::max(diameter, twoNorm.diff(corners[i], corners[j]));
return diameter;
}
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
try { try {
Dune::ParameterTree parset; Dune::ParameterTree parset;
...@@ -97,10 +113,24 @@ int main(int argc, char *argv[]) { ...@@ -97,10 +113,24 @@ int main(int argc, char *argv[]) {
auto const refinements = parset.get<size_t>("grid.refinements"); auto const refinements = parset.get<size_t>("grid.refinements");
grid->globalRefine(refinements); grid->globalRefine(refinements);
double minDiameter = std::numeric_limits<double>::infinity();
double maxDiameter = 0.0;
for (auto it = grid->template leafbegin<0>();
it != grid->template leafend<0>(); ++it) {
auto const geometry = it->geometry();
auto const diam = diameter(geometry);
minDiameter = std::min(minDiameter, diam);
maxDiameter = std::max(maxDiameter, diam);
}
std::cout << "min diameter: " << minDiameter << std::endl;
std::cout << "max diameter: " << maxDiameter << std::endl;
using GridView = Grid::LeafGridView; using GridView = Grid::LeafGridView;
GridView const leafView = grid->leafGridView(); GridView const leafView = grid->leafGridView();
size_t const leafVertexCount = leafView.size(dims); size_t const leafVertexCount = leafView.size(dims);
std::cout << "Number of DOFs: " << leafVertexCount << std::endl;
auto myFaces = gridConstructor.constructFaces(leafView); auto myFaces = gridConstructor.constructFaces(leafView);
// Neumann boundary // Neumann boundary
......
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