From 686810b1e9feee7bec8614ed39db20073e5f0ca7 Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Thu, 5 Jul 2012 11:21:21 +0200 Subject: [PATCH] Use a #define for the dimension --- src/Makefile.am | 63 ++++++++++++++++++++++++++++---------- src/assemblers_tmpl.cc | 68 ++++++++++++------------------------------ src/mysolver_tmpl.cc | 42 +++++++++----------------- src/one-body-sample.cc | 6 +++- src/vtk_tmpl.cc | 56 +++++++++++----------------------- 5 files changed, 103 insertions(+), 132 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index ba97418e..2e267a97 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -4,33 +4,64 @@ check_PROGRAMS = \ test-gradient-method bin_PROGRAMS = \ - one-body-sample + one-body-sample-2D \ + one-body-sample-3D -.PHONY: run-one-body-sample -run-one-body-sample: one-body-sample - libtool --mode execute ./one-body-sample +## 2D +.PHONY: run-one-body-sample-2D +run-one-body-sample-2D: one-body-sample-2D + libtool --mode execute ./one-body-sample-2D -.PHONY: run-one-body-sample-time -run-one-body-sample-time: one-body-sample - libtool --mode execute time ./one-body-sample >/dev/null +.PHONY: run-one-body-sample-2D-time +run-one-body-sample-2D-time: one-body-sample-2D + libtool --mode execute time ./one-body-sample-2D >/dev/null -.PHONY: run-one-body-sample-valgrind -run-one-body-sample-valgrind: one-body-sample - libtool --mode execute valgrind ./one-body-sample +.PHONY: run-one-body-sample-2D-valgrind +run-one-body-sample-2D-valgrind: one-body-sample-2D + libtool --mode execute valgrind ./one-body-sample-2D -.PHONY: run-one-body-sample-gdb -run-one-body-sample-gdb: one-body-sample - libtool --mode execute gdb ./one-body-sample +.PHONY: run-one-body-sample-2D-gdb +run-one-body-sample-2D-gdb: one-body-sample-2D + libtool --mode execute gdb ./one-body-sample-2D -one_body_sample_SOURCES = \ +one_body_sample_2D_SOURCES = \ assemblers.cc \ compute_state.cc \ compute_state_ruina.cc \ mysolver.cc \ one-body-sample.cc \ vtk.cc -one_body_sample_CPPFLAGS = \ - $(AM_CPPFLAGS) -Dsrcdir=\"$(srcdir)\" + +one_body_sample_2D_CPPFLAGS = \ + $(AM_CPPFLAGS) -Dsrcdir=\"$(srcdir)\" -DDIM=2 + +## 3D +.PHONY: run-one-body-sample-3D +run-one-body-sample-3D: one-body-sample-3D + libtool --mode execute ./one-body-sample-3D + +.PHONY: run-one-body-sample-3D-time +run-one-body-sample-3D-time: one-body-sample-3D + libtool --mode execute time ./one-body-sample-3D >/dev/null + +.PHONY: run-one-body-sample-3D-valgrind +run-one-body-sample-3D-valgrind: one-body-sample-3D + libtool --mode execute valgrind ./one-body-sample-3D + +.PHONY: run-one-body-sample-3D-gdb +run-one-body-sample-3D-gdb: one-body-sample-3D + libtool --mode execute gdb ./one-body-sample-3D + +one_body_sample_3D_SOURCES = \ + assemblers.cc \ + compute_state.cc \ + compute_state_ruina.cc \ + mysolver.cc \ + one-body-sample.cc \ + vtk.cc + +one_body_sample_3D_CPPFLAGS = \ + $(AM_CPPFLAGS) -Dsrcdir=\"$(srcdir)\" -DDIM=3 test_gradient_method_SOURCES = \ test-gradient-method.cc diff --git a/src/assemblers_tmpl.cc b/src/assemblers_tmpl.cc index 61fdb817..19367f1a 100644 --- a/src/assemblers_tmpl.cc +++ b/src/assemblers_tmpl.cc @@ -1,3 +1,7 @@ +#ifndef DIM +#error DIM unset +#endif + #include <dune/common/fmatrix.hh> #include <dune/common/fvector.hh> // #include <dune/grid/yaspgrid.hh> @@ -5,65 +9,31 @@ #include <dune/fufem/functionspacebases/p1nodalbasis.hh> -// {{{ 2D -typedef Dune::FieldVector<double, 2> SmallVector2; -typedef Dune::FieldMatrix<double, 2, 2> SmallMatrix2; -typedef Dune::BCRSMatrix<SmallMatrix2> MatrixType2; -typedef Dune::BlockVector<SmallVector2> VectorType2; - -typedef Dune::ALUGrid<2, 2, Dune::simplex, Dune::nonconforming> GridType2; -// typedef Dune::YaspGrid<2> GridType2; -typedef GridType2::LeafGridView GridView2; -typedef P1NodalBasis<GridView2, double> P1Basis2; - -template void assemble_neumann<GridType2, GridView2, SmallVector2, P1Basis2>( - GridView2 const &gridView, P1Basis2 const &feBasis, - Dune::BitSetVector<1> const &neumannNodes, - Dune::BlockVector<SmallVector2> &f, - Dune::VirtualFunction<double, double> const &neumann, double time); - -template Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>> -assemble_frictional<GridType2, GridView2, SmallVector2, P1Basis2>( - GridView2 const &gridView, P1Basis2 const &feBasis, - Dune::BitSetVector<1> const &frictionalNodes); - -template Dune::shared_ptr< - Dune::GlobalNonlinearity<VectorType2, MatrixType2> const> -assemble_nonlinearity<VectorType2, MatrixType2>( - Dune::ParameterTree const &parset, - Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>> - nodalIntegrals, - Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>> state, - double h); -// }}} - -// {{{ 3D -typedef Dune::FieldVector<double, 3> SmallVector3; -typedef Dune::FieldMatrix<double, 3, 3> SmallMatrix3; -typedef Dune::BCRSMatrix<SmallMatrix3> MatrixType3; -typedef Dune::BlockVector<SmallVector3> VectorType3; +typedef Dune::FieldVector<double, DIM> SmallVector; +typedef Dune::FieldMatrix<double, DIM, DIM> SmallMatrix; +typedef Dune::BCRSMatrix<SmallMatrix> MatrixType; +typedef Dune::BlockVector<SmallVector> VectorType; -typedef Dune::ALUGrid<3, 3, Dune::simplex, Dune::nonconforming> GridType3; -// typedef Dune::YaspGrid<3> GridType3; -typedef GridType3::LeafGridView GridView3; -typedef P1NodalBasis<GridView3, double> P1Basis3; +typedef Dune::ALUGrid<DIM, DIM, Dune::simplex, Dune::nonconforming> GridType; +// typedef Dune::YaspGrid<DIM> GridType; +typedef GridType::LeafGridView GridView; +typedef P1NodalBasis<GridView, double> P1Basis; -template void assemble_neumann<GridType3, GridView3, SmallVector3, P1Basis3>( - GridView3 const &gridView, P1Basis3 const &feBasis, +template void assemble_neumann<GridType, GridView, SmallVector, P1Basis>( + GridView const &gridView, P1Basis const &feBasis, Dune::BitSetVector<1> const &neumannNodes, - Dune::BlockVector<SmallVector3> &f, + Dune::BlockVector<SmallVector> &f, Dune::VirtualFunction<double, double> const &neumann, double time); template Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>> -assemble_frictional<GridType3, GridView3, SmallVector3, P1Basis3>( - GridView3 const &gridView, P1Basis3 const &feBasis, +assemble_frictional<GridType, GridView, SmallVector, P1Basis>( + GridView const &gridView, P1Basis const &feBasis, Dune::BitSetVector<1> const &frictionalNodes); template Dune::shared_ptr< - Dune::GlobalNonlinearity<VectorType3, MatrixType3> const> -assemble_nonlinearity<VectorType3, MatrixType3>( + Dune::GlobalNonlinearity<VectorType, MatrixType> const> +assemble_nonlinearity<VectorType, MatrixType>( Dune::ParameterTree const &parset, Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>> nodalIntegrals, Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>> state, double h); -// }}} diff --git a/src/mysolver_tmpl.cc b/src/mysolver_tmpl.cc index 44d1ab8e..e2ced974 100644 --- a/src/mysolver_tmpl.cc +++ b/src/mysolver_tmpl.cc @@ -1,3 +1,7 @@ +#ifndef DIM +#error DIM unset +#endif + #include <dune/common/fmatrix.hh> #include <dune/common/fvector.hh> //#include <dune/grid/yaspgrid.hh> @@ -8,34 +12,16 @@ #include <dune/tectonic/myblockproblem.hh> #include <dune/tectonic/myconvexproblem.hh> -// {{{ 2D -typedef Dune::FieldVector<double, 2> SmallVector2; -typedef Dune::FieldMatrix<double, 2, 2> SmallMatrix2; -typedef Dune::BlockVector<SmallVector2> VectorType2; -typedef Dune::BCRSMatrix<SmallMatrix2> MatrixType2; - -typedef MyConvexProblem<MatrixType2, VectorType2> MyConvexProblemType2; -typedef MyBlockProblem<MyConvexProblemType2> MyBlockProblemType2; - -typedef Dune::ALUGrid<2, 2, Dune::simplex, Dune::nonconforming> GridType2; -// typedef Dune::YaspGrid<2> GridType2; - -template class MySolver<2, VectorType2, MatrixType2, GridType2, - MyBlockProblemType2>; -// }}} - -// {{{ 3D -typedef Dune::FieldVector<double, 3> SmallVector3; -typedef Dune::FieldMatrix<double, 3, 3> SmallMatrix3; -typedef Dune::BlockVector<SmallVector3> VectorType3; -typedef Dune::BCRSMatrix<SmallMatrix3> MatrixType3; +typedef Dune::FieldVector<double, DIM> SmallVector; +typedef Dune::FieldMatrix<double, DIM, DIM> SmallMatrix; +typedef Dune::BlockVector<SmallVector> VectorType; +typedef Dune::BCRSMatrix<SmallMatrix> MatrixType; -typedef MyConvexProblem<MatrixType3, VectorType3> MyConvexProblemType3; -typedef MyBlockProblem<MyConvexProblemType3> MyBlockProblemType3; +typedef MyConvexProblem<MatrixType, VectorType> MyConvexProblemType; +typedef MyBlockProblem<MyConvexProblemType> MyBlockProblemType; -typedef Dune::ALUGrid<3, 3, Dune::simplex, Dune::nonconforming> GridType3; -// typedef Dune::YaspGrid<3> GridType3; +typedef Dune::ALUGrid<DIM, DIM, Dune::simplex, Dune::nonconforming> GridType; +// typedef Dune::YaspGrid<DIM> GridType; -template class MySolver<3, VectorType3, MatrixType3, GridType3, - MyBlockProblemType3>; -// }}} +template class MySolver<DIM, VectorType, MatrixType, GridType, + MyBlockProblemType>; diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index 9ea4016b..2141c5c4 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -10,6 +10,10 @@ #error srcdir unset #endif +#ifndef DIM +#error DIM unset +#endif + #ifndef HAVE_PYTHON #error Python is required #endif @@ -71,7 +75,7 @@ #include "enum_parser.cc" #include "enum_state_model.cc" -int const dim = 2; +int const dim = DIM; template <class GridView> void setup_boundary(GridView const &gridView, diff --git a/src/vtk_tmpl.cc b/src/vtk_tmpl.cc index 73bb3237..f1d50ca9 100644 --- a/src/vtk_tmpl.cc +++ b/src/vtk_tmpl.cc @@ -1,4 +1,6 @@ -#include "vtk.hh" +#ifndef DIM +#error DIM unset +#endif #include <dune/common/fmatrix.hh> #include <dune/common/fvector.hh> @@ -11,40 +13,18 @@ typedef Dune::BlockVector<Dune::FieldVector<double, 1>> SingletonVectorType; -// {{{ 2D -typedef Dune::FieldVector<double, 2> SmallVector2; -typedef Dune::FieldMatrix<double, 2, 2> SmallMatrix2; -typedef Dune::BlockVector<SmallVector2> VectorType2; - -typedef Dune::ALUGrid<2, 2, Dune::simplex, Dune::nonconforming> GridType2; -// typedef Dune::YaspGrid<2> GridType2; -typedef GridType2::LeafGridView GridView2; -typedef P1NodalBasis<GridView2, double> P1Basis2; -typedef P0Basis<GridView2, double> P0Basis2; - -template void writeVtk<P1Basis2, P0Basis2, VectorType2, SingletonVectorType, - GridView2>(P1Basis2 vertexBasis, - VectorType2 displacement, - SingletonVectorType state, P0Basis2 cellBasis, - SingletonVectorType stress, - GridView2 gridView, std::string filename); -// }}} - -// {{{ 3D -typedef Dune::FieldVector<double, 3> SmallVector3; -typedef Dune::FieldMatrix<double, 3, 3> SmallMatrix3; -typedef Dune::BlockVector<SmallVector3> VectorType3; - -typedef Dune::ALUGrid<3, 3, Dune::simplex, Dune::nonconforming> GridType3; -// typedef Dune::YaspGrid<3> GridType3; -typedef GridType3::LeafGridView GridView3; -typedef P1NodalBasis<GridView3, double> P1Basis3; -typedef P0Basis<GridView3, double> P0Basis3; - -template void writeVtk<P1Basis3, P0Basis3, VectorType3, SingletonVectorType, - GridView3>(P1Basis3 vertexBasis, - VectorType3 displacement, - SingletonVectorType state, P0Basis3 cellBasis, - SingletonVectorType stress, - GridView3 gridView, std::string filename); -// }}} +typedef Dune::FieldVector<double, DIM> SmallVector; +typedef Dune::FieldMatrix<double, DIM, DIM> SmallMatrix; +typedef Dune::BlockVector<SmallVector> VectorType; + +typedef Dune::ALUGrid<DIM, DIM, Dune::simplex, Dune::nonconforming> GridType; +// typedef Dune::YaspGrid<> GridType; +typedef GridType::LeafGridView GridView; +typedef P1NodalBasis<GridView, double> P1Basis; +typedef P0Basis<GridView, double> MyP0Basis; + +template void writeVtk<P1Basis, MyP0Basis, VectorType, SingletonVectorType, + GridView>(P1Basis vertexBasis, VectorType displacement, + SingletonVectorType state, MyP0Basis cellBasis, + SingletonVectorType stress, GridView gridView, + std::string filename); -- GitLab