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

Write result files to VTK instead of AmiraMesh

[[Imported from SVN: r8968]]
parent cd21b7d8
No related branches found
No related tags found
No related merge requests found
...@@ -13,7 +13,7 @@ const int order = 1; ...@@ -13,7 +13,7 @@ const int order = 1;
#include <dune/grid/uggrid.hh> #include <dune/grid/uggrid.hh>
#include <dune/grid/onedgrid.hh> #include <dune/grid/onedgrid.hh>
#include <dune/grid/utility/structuredgridfactory.hh> #include <dune/grid/utility/structuredgridfactory.hh>
#include <dune/grid/io/file/amirameshwriter.hh> #include <dune/grid/io/file/vtk/vtkwriter.hh>
#include <dune/grid/io/file/amirameshreader.hh> #include <dune/grid/io/file/amirameshreader.hh>
#include <dune/grid/io/file/gmshreader.hh> #include <dune/grid/io/file/gmshreader.hh>
...@@ -25,6 +25,7 @@ const int order = 1; ...@@ -25,6 +25,7 @@ const int order = 1;
#include <dune/fufem/assemblers/localassemblers/massassembler.hh> #include <dune/fufem/assemblers/localassemblers/massassembler.hh>
#include <dune/fufem/functiontools/boundarydofs.hh> #include <dune/fufem/functiontools/boundarydofs.hh>
#include <dune/fufem/functiontools/basisinterpolator.hh> #include <dune/fufem/functiontools/basisinterpolator.hh>
#include <dune/fufem/functions/vtkbasisgridfunction.hh>
#include <dune/solvers/solvers/iterativesolver.hh> #include <dune/solvers/solvers/iterativesolver.hh>
#include <dune/solvers/norms/h1seminorm.hh> #include <dune/solvers/norms/h1seminorm.hh>
...@@ -212,18 +213,8 @@ int main (int argc, char *argv[]) try ...@@ -212,18 +213,8 @@ int main (int argc, char *argv[]) try
BlockVector<TargetSpace::CoordinateType> xEmbedded(referenceSolution.size()); BlockVector<TargetSpace::CoordinateType> xEmbedded(referenceSolution.size());
for (size_t j=0; j<referenceSolution.size(); j++) for (size_t j=0; j<referenceSolution.size(); j++)
xEmbedded[j] = referenceSolution[j].globalCoordinates(); xEmbedded[j] = referenceSolution[j].globalCoordinates();
#if !defined THIRD_ORDER && ! defined SECOND_ORDER
LeafAmiraMeshWriter<GridType> amiramesh;
amiramesh.addGrid(referenceGrid->leafView());
amiramesh.addVertexData(xEmbedded, referenceGrid->leafView());
amiramesh.write("reference_result.am");
#endif
// //////////////////////////////////////////////////////////////////////
// Compute mass matrix and laplace matrix to emulate L2 and H1 norms
// //////////////////////////////////////////////////////////////////////
// Set up a basis of the underlying fe space
#ifdef THIRD_ORDER #ifdef THIRD_ORDER
typedef P3NodalBasis<GridType::LeafGridView,double> FEBasis; typedef P3NodalBasis<GridType::LeafGridView,double> FEBasis;
#elif defined SECOND_ORDER #elif defined SECOND_ORDER
...@@ -232,6 +223,22 @@ int main (int argc, char *argv[]) try ...@@ -232,6 +223,22 @@ int main (int argc, char *argv[]) try
typedef P1NodalBasis<GridType::LeafGridView,double> FEBasis; typedef P1NodalBasis<GridType::LeafGridView,double> FEBasis;
#endif #endif
FEBasis referenceBasis(referenceGrid->leafView()); FEBasis referenceBasis(referenceGrid->leafView());
#if !defined THIRD_ORDER && ! defined SECOND_ORDER
VTKWriter<GridType::LeafGridView> vtkWriter(referenceGrid->leafView());
shared_ptr<VTKBasisGridFunction<FEBasis,BlockVector<TargetSpace::CoordinateType> > > vtkVectorField
= Dune::shared_ptr<VTKBasisGridFunction<FEBasis,BlockVector<TargetSpace::CoordinateType> > >
(new VTKBasisGridFunction<FEBasis,BlockVector<TargetSpace::CoordinateType> >(referenceBasis, xEmbedded, "unit vectors"));
vtkWriter.addVertexData(vtkVectorField);
vtkWriter.write("reference_result");
#endif
// //////////////////////////////////////////////////////////////////////
// Compute mass matrix and laplace matrix to emulate L2 and H1 norms
// //////////////////////////////////////////////////////////////////////
OperatorAssembler<FEBasis,FEBasis> operatorAssembler(referenceBasis, referenceBasis); OperatorAssembler<FEBasis,FEBasis> operatorAssembler(referenceBasis, referenceBasis);
LaplaceAssembler<GridType, FEBasis::LocalFiniteElement, FEBasis::LocalFiniteElement> laplaceLocalAssembler(2*(order-1)); LaplaceAssembler<GridType, FEBasis::LocalFiniteElement, FEBasis::LocalFiniteElement> laplaceLocalAssembler(2*(order-1));
...@@ -277,12 +284,15 @@ int main (int argc, char *argv[]) try ...@@ -277,12 +284,15 @@ int main (int argc, char *argv[]) try
for (size_t j=0; j<solution.size(); j++) for (size_t j=0; j<solution.size(); j++)
xEmbedded[j] = solution[j].globalCoordinates(); xEmbedded[j] = solution[j].globalCoordinates();
LeafAmiraMeshWriter<GridType> amiramesh; FEBasis feBasis(grid->leafView());
amiramesh.addGrid(grid->leafView()); VTKWriter<GridType::LeafGridView> vtkWriter(grid->leafView());
#if ! defined THIRD_ORDER && ! defined SECOND_ORDER
amiramesh.addVertexData(xEmbedded, grid->leafView()); shared_ptr<VTKBasisGridFunction<FEBasis,BlockVector<TargetSpace::CoordinateType> > > vtkVectorField
#endif = Dune::shared_ptr<VTKBasisGridFunction<FEBasis,BlockVector<TargetSpace::CoordinateType> > >
amiramesh.write("harmonic_result_" + numberAsAscii.str() + ".am"); (new VTKBasisGridFunction<FEBasis,BlockVector<TargetSpace::CoordinateType> >(feBasis, xEmbedded, "unit vectors"));
vtkWriter.addVertexData(vtkVectorField);
vtkWriter.write("harmonic_result_" + numberAsAscii.str());
double newL2 = GFEDifferenceNormSquared<FEBasis,TargetSpace>::compute(*referenceGrid, referenceSolution, double newL2 = GFEDifferenceNormSquared<FEBasis,TargetSpace>::compute(*referenceGrid, referenceSolution,
*grid, solution, *grid, solution,
......
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