From b4b126dce5f9fe2ecf9a016a15e335170e8adf09 Mon Sep 17 00:00:00 2001 From: Oliver Sander <oliver.sander@tu-dresden.de> Date: Tue, 13 Aug 2024 05:46:49 +0200 Subject: [PATCH] Change template arg of CosseratVTKWriter to be the grid view Rather than the grid itself. Because the grid view is all that a writer needs to know about. --- dune/gfe/cosseratvtkwriter.hh | 8 ++++---- src/cosserat-continuum.cc | 12 ++++++------ src/rod3d.cc | 2 +- test/nonplanarcosseratenergytest.cc | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dune/gfe/cosseratvtkwriter.hh b/dune/gfe/cosseratvtkwriter.hh index b126e1f3..d814d73b 100644 --- a/dune/gfe/cosseratvtkwriter.hh +++ b/dune/gfe/cosseratvtkwriter.hh @@ -17,11 +17,11 @@ /** \brief Write the configuration of a Cosserat material in VTK format */ -template <class GridType> +template <class GridView> class CosseratVTKWriter { - static const int dim = GridType::dimension; + static const int dim = GridView::dimension; template <typename Basis1, typename Basis2> static void downsample(const Basis1& basis1, const std::vector<Dune::GFE::ProductManifold<RealTuple<double,3>,Rotation<double,3> > >& v1, @@ -80,7 +80,7 @@ class CosseratVTKWriter s << 's' << std::setw(4) << std::setfill('0') << commSize << '-'; s << 'p' << std::setw(4) << std::setfill('0') << commRank << '-'; s << name; - if(GridType::dimension > 1) + if(GridView::dimension > 1) s << ".vtu"; else s << ".vtp"; @@ -103,7 +103,7 @@ class CosseratVTKWriter } s << 's' << std::setw(4) << std::setfill('0') << commSize << '-'; s << name; - if(GridType::dimension > 1) + if(GridView::dimension > 1) s << ".pvtu"; else s << ".pvtp"; diff --git a/src/cosserat-continuum.cc b/src/cosserat-continuum.cc index ad1d6bbe..6f561541 100644 --- a/src/cosserat-continuum.cc +++ b/src/cosserat-continuum.cc @@ -413,14 +413,14 @@ int main (int argc, char *argv[]) try // Output initial iterate (of homotopy loop) if (dim == 2 && dimworld == 2) { - CosseratVTKWriter<GridType>::writeMixed<DeformationFEBasis,OrientationFEBasis>(deformationFEBasis,x[_0], + CosseratVTKWriter<GridView>::writeMixed<DeformationFEBasis,OrientationFEBasis>(deformationFEBasis,x[_0], orientationFEBasis,x[_1], resultPath + "cosserat_homotopy_0_l" + std::to_string(numLevels)); } else if (dim == 2 && dimworld == 3) { #if MIXED_SPACE - CosseratVTKWriter<GridType>::write<DeformationFEBasis>(deformationFEBasis, x[_0], resultPath + "cosserat_homotopy_0_l" + std::to_string(numLevels)); + CosseratVTKWriter<GridView>::write<DeformationFEBasis>(deformationFEBasis, x[_0], resultPath + "cosserat_homotopy_0_l" + std::to_string(numLevels)); #else - CosseratVTKWriter<GridType>::write<DeformationFEBasis>(deformationFEBasis, x, resultPath + "cosserat_homotopy_0_l" + std::to_string(numLevels)); + CosseratVTKWriter<GridView>::write<DeformationFEBasis>(deformationFEBasis, x, resultPath + "cosserat_homotopy_0_l" + std::to_string(numLevels)); #endif } else if (dim == 3 && dimworld == 3) { @@ -735,14 +735,14 @@ int main (int argc, char *argv[]) try iAsAscii << i+1; if (dim == 2 && dimworld == 2) { - CosseratVTKWriter<GridType>::writeMixed<DeformationFEBasis,OrientationFEBasis>(deformationFEBasis,x[_0], + CosseratVTKWriter<GridView>::writeMixed<DeformationFEBasis,OrientationFEBasis>(deformationFEBasis,x[_0], orientationFEBasis,x[_1], resultPath + "cosserat_homotopy_" + iAsAscii.str()); } else if (dim == 2 && dimworld == 3) { #if MIXED_SPACE - CosseratVTKWriter<GridType>::write<DeformationFEBasis>(deformationFEBasis, x[_0], resultPath + "cosserat_homotopy_" + std::to_string(i+1) + "_l" + std::to_string(numLevels)); + CosseratVTKWriter<GridView>::write<DeformationFEBasis>(deformationFEBasis, x[_0], resultPath + "cosserat_homotopy_" + std::to_string(i+1) + "_l" + std::to_string(numLevels)); #else - CosseratVTKWriter<GridType>::write<DeformationFEBasis>(deformationFEBasis, x, resultPath + "cosserat_homotopy_" + std::to_string(i+1) + "_l" + std::to_string(numLevels)); + CosseratVTKWriter<GridView>::write<DeformationFEBasis>(deformationFEBasis, x, resultPath + "cosserat_homotopy_" + std::to_string(i+1) + "_l" + std::to_string(numLevels)); #endif } else if (dim == 3 && dimworld == 3) { diff --git a/src/rod3d.cc b/src/rod3d.cc index 68cb905f..9e199f71 100644 --- a/src/rod3d.cc +++ b/src/rod3d.cc @@ -294,7 +294,7 @@ int main (int argc, char *argv[]) try #else std::cout << "Falling back to legacy file writing. Get dune-vtk for better results" << std::endl; // Fall-back solution for users without dune-vtk - CosseratVTKWriter<GridType>::write<ScalarBasis>(scalarBasis,x, resultPath + "rod3d-result"); + CosseratVTKWriter<GridView>::write<ScalarBasis>(scalarBasis,x, resultPath + "rod3d-result"); #endif } diff --git a/test/nonplanarcosseratenergytest.cc b/test/nonplanarcosseratenergytest.cc index 16733a46..9a55a5fc 100644 --- a/test/nonplanarcosseratenergytest.cc +++ b/test/nonplanarcosseratenergytest.cc @@ -114,7 +114,7 @@ double calculateEnergy(const int numLevels, const F1 referenceConfigurationFunct solTuple[_0][i] = sol[i][_0]; solTuple[_1][i] = sol[i][_1]; } - CosseratVTKWriter<GridType>::write<FEBasis>(feBasis, solTuple, "configuration_l" + std::to_string(numLevels)); + CosseratVTKWriter<decltype(gridView)>::write<FEBasis>(feBasis, solTuple, "configuration_l" + std::to_string(numLevels)); double energy = 0; // A view on the FE basis on a single element -- GitLab