From 08ff818f316e452fac982477f7b07a75fcdce82e Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Thu, 18 Mar 2010 18:23:08 +0000 Subject: [PATCH] transport solutions to the finest grid [[Imported from SVN: r5772]] --- harmonicmaps-eoc.cc | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/harmonicmaps-eoc.cc b/harmonicmaps-eoc.cc index 5d73e84e..a1272992 100644 --- a/harmonicmaps-eoc.cc +++ b/harmonicmaps-eoc.cc @@ -6,6 +6,7 @@ #include <dune/grid/uggrid.hh> #include <dune/grid/onedgrid.hh> #include <dune/grid/../../doc/grids/gridfactory/structuredgridfactory.hh> +#include <dune/grid/io/file/amirameshwriter.hh> #include <dune/ag-common/functionspacebases/p1nodalbasis.hh> #include <dune/ag-common/assemblers/operatorassembler.hh> @@ -19,8 +20,7 @@ #include "src/harmonicenergystiffness.hh" #include "src/geodesicfeassembler.hh" #include "src/riemanniantrsolver.hh" -#include "src/rodrefine.hh" -#include "src/rodwriter.hh" +#include "src/geodesicfefunctionadaptor.hh" // grid dimension const int dim = 2; @@ -214,17 +214,34 @@ int main (int argc, char *argv[]) try SolutionType solution; solve(grid, solution, i, parameterSet); -#if 0 + // write solution + std::stringstream numberAsAscii; + numberAsAscii << i; + + BlockVector<FieldVector<double,3> > xEmbedded(solution.size()); + for (int j=0; j<solution.size(); j++) + xEmbedded[j] = solution[j].globalCoordinates(); + + LeafAmiraMeshWriter<GridType> amiramesh; + amiramesh.addGrid(grid->leafView()); + amiramesh.addVertexData(xEmbedded, grid->leafView()); + amiramesh.write("harmonic_result_" + numberAsAscii.str() + ".am"); + // Prolong solution to the very finest grid for (int j=i; j<numLevels; j++) - globalRodRefine(grid, solution); + geodesicFEFunctionAdaptor(*grid, solution); - std::stringstream numberAsAscii; - numberAsAscii << i; - writeRod(solution, "rodGrid_" + numberAsAscii.str()); + //assert(referenceSolution.size() == solution.size()); + + xEmbedded.resize(solution.size()); + for (int j=0; j<solution.size(); j++) + xEmbedded[j] = solution[j].globalCoordinates(); + + LeafAmiraMeshWriter<GridType> amirameshRefined; + amirameshRefined.addGrid(grid->leafView()); + amirameshRefined.addVertexData(xEmbedded, grid->leafView()); + amirameshRefined.write("harmonic_result_" + numberAsAscii.str() + "_refined.am"); - assert(referenceSolution.size() == solution.size()); -#endif #if 0 BlockVector<TargetSpace::TangentVector> difference = computeGeodesicDifference(solution,referenceSolution); -- GitLab