From: wolf Date: Sat, 20 Feb 1999 14:57:32 +0000 (+0000) Subject: Let the cell iterators in the equation class functions be DoF iterators rather than... X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a5ddbe6f8123d40327acfefe6fd0936dd0a6e67d;p=dealii-svn.git Let the cell iterators in the equation class functions be DoF iterators rather than Tria iterators. This is necessary if one does not only want to access the geometry in the assemble functions, but also needs to have access to data on the FE grid, for example in nonlinear problems. git-svn-id: https://svn.dealii.org/trunk@863 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/Attic/examples/error-estimation/error-estimation.cc b/deal.II/deal.II/Attic/examples/error-estimation/error-estimation.cc index bf56362131..ea856cbbe1 100644 --- a/deal.II/deal.II/Attic/examples/error-estimation/error-estimation.cc +++ b/deal.II/deal.II/Attic/examples/error-estimation/error-estimation.cc @@ -48,13 +48,13 @@ class PoissonEquation : public Equation { virtual void assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; virtual void assemble (dFMatrix &cell_matrix, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; virtual void assemble (dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; protected: const bool use_coefficient; const Function &right_hand_side; @@ -259,7 +259,7 @@ template <> void PoissonEquation<2>::assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues<2> &fe_values, - const Triangulation<2>::cell_iterator &) const { + const DoFHandler<2>::cell_iterator &) const { for (unsigned int point=0; point::assemble (dFMatrix &cell_matrix, template void PoissonEquation::assemble (dFMatrix &, const FEValues &, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { Assert (false, ExcPureVirtualFunctionCalled()); }; @@ -293,7 +293,7 @@ void PoissonEquation::assemble (dFMatrix &, template void PoissonEquation::assemble (dVector &, const FEValues &, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { Assert (false, ExcPureVirtualFunctionCalled()); }; diff --git a/deal.II/deal.II/Attic/examples/poisson/Makefile b/deal.II/deal.II/Attic/examples/poisson/Makefile index b355f178df..f43777d1c6 100644 --- a/deal.II/deal.II/Attic/examples/poisson/Makefile +++ b/deal.II/deal.II/Attic/examples/poisson/Makefile @@ -51,8 +51,8 @@ h-files = $(wildcard *.h) lib-h-files = $(wildcard ../../include/*/*.h) # list of libraries needed to link with -libs = ./Obj.a -ldeal_II_2d -llac -lbase -libs.g = ./Obj.g.a -ldeal_II_2d.g -llac.g -lbase.g +libs = ./Obj.a -ldeal_II_3d -llac -lbase +libs.g = ./Obj.g.a -ldeal_II_3d.g -llac.g -lbase.g # check whether we use debug mode or not diff --git a/deal.II/deal.II/Attic/examples/poisson/equation.cc b/deal.II/deal.II/Attic/examples/poisson/equation.cc index 915b92a52c..ed7b4ebabe 100644 --- a/deal.II/deal.II/Attic/examples/poisson/equation.cc +++ b/deal.II/deal.II/Attic/examples/poisson/equation.cc @@ -13,7 +13,7 @@ template <> void PoissonEquation<1>::assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues<1> &fe_values, - const Triangulation<1>::cell_iterator &) const { + const DoFHandler<1>::cell_iterator &) const { for (unsigned int point=0; point::assemble (dFMatrix &cell_matrix, -#if deal_II_dimension == 2 +//#if deal_II_dimension >= 2 -template <> -void PoissonEquation<2>::assemble (dFMatrix &cell_matrix, - dVector &rhs, - const FEValues<2> &fe_values, - const Triangulation<2>::cell_iterator &) const { - const vector > >&gradients = fe_values.get_shape_grads (); +template +void PoissonEquation::assemble (dFMatrix &cell_matrix, + dVector &rhs, + const FEValues &fe_values, + const DoFHandler::cell_iterator &) const { + const vector > >&gradients = fe_values.get_shape_grads (); const dFMatrix &values = fe_values.get_shape_values (); vector rhs_values (fe_values.n_quadrature_points); const vector &weights = fe_values.get_JxW_values (); @@ -58,14 +58,14 @@ void PoissonEquation<2>::assemble (dFMatrix &cell_matrix, }; }; -#endif +//#endif template void PoissonEquation::assemble (dFMatrix &, const FEValues &, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { Assert (false, ExcPureVirtualFunctionCalled()); }; @@ -74,7 +74,7 @@ void PoissonEquation::assemble (dFMatrix &, template void PoissonEquation::assemble (dVector &, const FEValues &, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { Assert (false, ExcPureVirtualFunctionCalled()); }; @@ -83,4 +83,4 @@ void PoissonEquation::assemble (dVector &, -template class PoissonEquation<2>; +template class PoissonEquation<3>; diff --git a/deal.II/deal.II/Attic/examples/poisson/poisson.cc b/deal.II/deal.II/Attic/examples/poisson/poisson.cc index a84e555c61..b4017ea350 100644 --- a/deal.II/deal.II/Attic/examples/poisson/poisson.cc +++ b/deal.II/deal.II/Attic/examples/poisson/poisson.cc @@ -15,7 +15,7 @@ int main (int argc, char **argv) { return 1; }; - PoissonProblem<2> poisson; + PoissonProblem<3> poisson; MultipleParameterLoop input_data; poisson.declare_parameters(input_data); diff --git a/deal.II/deal.II/Attic/examples/poisson/poisson.h b/deal.II/deal.II/Attic/examples/poisson/poisson.h index a26bd89b74..f85471ab30 100644 --- a/deal.II/deal.II/Attic/examples/poisson/poisson.h +++ b/deal.II/deal.II/Attic/examples/poisson/poisson.h @@ -45,13 +45,13 @@ class PoissonEquation : public Equation { virtual void assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; virtual void assemble (dFMatrix &cell_matrix, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; virtual void assemble (dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; protected: const Function &right_hand_side; }; diff --git a/deal.II/deal.II/Attic/examples/poisson/poisson.prm b/deal.II/deal.II/Attic/examples/poisson/poisson.prm index 9d94d10703..165e2d9d0f 100644 --- a/deal.II/deal.II/Attic/examples/poisson/poisson.prm +++ b/deal.II/deal.II/Attic/examples/poisson/poisson.prm @@ -1,5 +1,5 @@ set Test run = { zoom in | ball | curved line | random | jump | L-region} -set Global refinement = {{ 2 | 5 | 6 | 0 | 2 | 5 }} +set Global refinement = {{ 1 | 3 | 3 | 0 | 3 | 3 }} #{{ 2 | 3 | 3 | 1 | 3 | 3 }} set Right hand side = {{ zero | zero | trigpoly | constant | zero | zero }} set Boundary values = {{ sine | sine | zero | zero | jump | sine }} -set Output file = gnuplot.{{ zoom_in | ball | curved_line | random | jump | L-region }} +set Output file = results/{{ zoom_in | ball | curved_line | random | jump | L-region }}.inp diff --git a/deal.II/deal.II/include/numerics/assembler.h b/deal.II/deal.II/include/numerics/assembler.h index 9ab6b98b4c..17c5722977 100644 --- a/deal.II/deal.II/include/numerics/assembler.h +++ b/deal.II/deal.II/include/numerics/assembler.h @@ -59,7 +59,7 @@ class Equation { virtual void assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; /** * Virtual function which only assembles @@ -76,7 +76,7 @@ class Equation { */ virtual void assemble (dFMatrix &cell_matrix, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; /** * Virtual function which only assembles @@ -93,7 +93,7 @@ class Equation { */ virtual void assemble (dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; /** * Return number of equations for this diff --git a/deal.II/deal.II/include/numerics/matrices.h b/deal.II/deal.II/include/numerics/matrices.h index ad19460c3b..89f4df8269 100644 --- a/deal.II/deal.II/include/numerics/matrices.h +++ b/deal.II/deal.II/include/numerics/matrices.h @@ -527,7 +527,7 @@ class MassMatrix : public Equation { virtual void assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues &fe_values, - const typename Triangulation::cell_iterator &) const; + const typename DoFHandler::cell_iterator &) const; /** * Construct the cell matrix for this cell. @@ -536,7 +536,7 @@ class MassMatrix : public Equation { */ virtual void assemble (dFMatrix &cell_matrix, const FEValues &fe_values, - const typename Triangulation::cell_iterator &) const; + const typename DoFHandler::cell_iterator &) const; /** * Only construct the right hand side @@ -547,7 +547,7 @@ class MassMatrix : public Equation { */ virtual void assemble (dVector &rhs, const FEValues &fe_values, - const typename Triangulation::cell_iterator &) const; + const typename DoFHandler::cell_iterator &) const; /** * Exception @@ -630,7 +630,7 @@ class LaplaceMatrix : public Equation { virtual void assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues &fe_values, - const typename Triangulation::cell_iterator &) const; + const typename DoFHandler::cell_iterator &) const; /** * Construct the cell matrix for this cell. @@ -639,7 +639,7 @@ class LaplaceMatrix : public Equation { */ virtual void assemble (dFMatrix &cell_matrix, const FEValues &fe_values, - const typename Triangulation::cell_iterator &) const; + const typename DoFHandler::cell_iterator &) const; /** * Only construct the right hand side @@ -650,7 +650,7 @@ class LaplaceMatrix : public Equation { */ virtual void assemble (dVector &rhs, const FEValues &fe_values, - const typename Triangulation::cell_iterator &) const; + const typename DoFHandler::cell_iterator &) const; /** * Exception diff --git a/deal.II/deal.II/source/numerics/assembler.cc b/deal.II/deal.II/source/numerics/assembler.cc index c286a070bf..fa493e4001 100644 --- a/deal.II/deal.II/source/numerics/assembler.cc +++ b/deal.II/deal.II/source/numerics/assembler.cc @@ -21,7 +21,7 @@ template void Equation::assemble (dFMatrix &, dVector &, const FEValues &, - const typename Triangulation::cell_iterator &) const { + const typename DoFHandler::cell_iterator &) const { Assert (false, ExcPureVirtualFunctionCalled()); }; @@ -30,7 +30,7 @@ void Equation::assemble (dFMatrix &, template void Equation::assemble (dFMatrix &, const FEValues &, - const typename Triangulation::cell_iterator &) const { + const typename DoFHandler::cell_iterator &) const { Assert (false, ExcPureVirtualFunctionCalled()); }; @@ -39,7 +39,7 @@ void Equation::assemble (dFMatrix &, template void Equation::assemble (dVector &, const FEValues &, - const typename Triangulation::cell_iterator &) const { + const typename DoFHandler::cell_iterator &) const { Assert (false, ExcPureVirtualFunctionCalled()); }; diff --git a/deal.II/deal.II/source/numerics/matrices.cc b/deal.II/deal.II/source/numerics/matrices.cc index 9075fc1e9f..61ff2185f7 100644 --- a/deal.II/deal.II/source/numerics/matrices.cc +++ b/deal.II/deal.II/source/numerics/matrices.cc @@ -543,7 +543,7 @@ MassMatrix::MassMatrix (const Function * const rhs, template void MassMatrix::assemble (dFMatrix &cell_matrix, const FEValues &fe_values, - const typename Triangulation::cell_iterator &) const { + const typename DoFHandler::cell_iterator &) const { const unsigned int total_dofs = fe_values.total_dofs, n_q_points = fe_values.n_quadrature_points; @@ -585,7 +585,7 @@ template void MassMatrix::assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { Assert (right_hand_side != 0, ExcNoRHSSelected()); const unsigned int total_dofs = fe_values.total_dofs, @@ -642,7 +642,7 @@ void MassMatrix::assemble (dFMatrix &cell_matrix, template void MassMatrix::assemble (dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { Assert (right_hand_side != 0, ExcNoRHSSelected()); const unsigned int total_dofs = fe_values.total_dofs, @@ -679,7 +679,7 @@ template void LaplaceMatrix::assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { Assert (right_hand_side != 0, ExcNoRHSSelected()); const unsigned int total_dofs = fe_values.total_dofs, @@ -738,7 +738,7 @@ void LaplaceMatrix::assemble (dFMatrix &cell_matrix, template void LaplaceMatrix::assemble (dFMatrix &cell_matrix, const FEValues &fe_values, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { const unsigned int total_dofs = fe_values.total_dofs, n_q_points = fe_values.n_quadrature_points; @@ -778,7 +778,7 @@ void LaplaceMatrix::assemble (dFMatrix &cell_matrix, template void LaplaceMatrix::assemble (dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { Assert (right_hand_side != 0, ExcNoRHSSelected()); const unsigned int total_dofs = fe_values.total_dofs, diff --git a/tests/big-tests/error-estimation/error-estimation.cc b/tests/big-tests/error-estimation/error-estimation.cc index bf56362131..ea856cbbe1 100644 --- a/tests/big-tests/error-estimation/error-estimation.cc +++ b/tests/big-tests/error-estimation/error-estimation.cc @@ -48,13 +48,13 @@ class PoissonEquation : public Equation { virtual void assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; virtual void assemble (dFMatrix &cell_matrix, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; virtual void assemble (dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; protected: const bool use_coefficient; const Function &right_hand_side; @@ -259,7 +259,7 @@ template <> void PoissonEquation<2>::assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues<2> &fe_values, - const Triangulation<2>::cell_iterator &) const { + const DoFHandler<2>::cell_iterator &) const { for (unsigned int point=0; point::assemble (dFMatrix &cell_matrix, template void PoissonEquation::assemble (dFMatrix &, const FEValues &, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { Assert (false, ExcPureVirtualFunctionCalled()); }; @@ -293,7 +293,7 @@ void PoissonEquation::assemble (dFMatrix &, template void PoissonEquation::assemble (dVector &, const FEValues &, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { Assert (false, ExcPureVirtualFunctionCalled()); }; diff --git a/tests/big-tests/poisson/Makefile b/tests/big-tests/poisson/Makefile index b355f178df..f43777d1c6 100644 --- a/tests/big-tests/poisson/Makefile +++ b/tests/big-tests/poisson/Makefile @@ -51,8 +51,8 @@ h-files = $(wildcard *.h) lib-h-files = $(wildcard ../../include/*/*.h) # list of libraries needed to link with -libs = ./Obj.a -ldeal_II_2d -llac -lbase -libs.g = ./Obj.g.a -ldeal_II_2d.g -llac.g -lbase.g +libs = ./Obj.a -ldeal_II_3d -llac -lbase +libs.g = ./Obj.g.a -ldeal_II_3d.g -llac.g -lbase.g # check whether we use debug mode or not diff --git a/tests/big-tests/poisson/equation.cc b/tests/big-tests/poisson/equation.cc index 915b92a52c..ed7b4ebabe 100644 --- a/tests/big-tests/poisson/equation.cc +++ b/tests/big-tests/poisson/equation.cc @@ -13,7 +13,7 @@ template <> void PoissonEquation<1>::assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues<1> &fe_values, - const Triangulation<1>::cell_iterator &) const { + const DoFHandler<1>::cell_iterator &) const { for (unsigned int point=0; point::assemble (dFMatrix &cell_matrix, -#if deal_II_dimension == 2 +//#if deal_II_dimension >= 2 -template <> -void PoissonEquation<2>::assemble (dFMatrix &cell_matrix, - dVector &rhs, - const FEValues<2> &fe_values, - const Triangulation<2>::cell_iterator &) const { - const vector > >&gradients = fe_values.get_shape_grads (); +template +void PoissonEquation::assemble (dFMatrix &cell_matrix, + dVector &rhs, + const FEValues &fe_values, + const DoFHandler::cell_iterator &) const { + const vector > >&gradients = fe_values.get_shape_grads (); const dFMatrix &values = fe_values.get_shape_values (); vector rhs_values (fe_values.n_quadrature_points); const vector &weights = fe_values.get_JxW_values (); @@ -58,14 +58,14 @@ void PoissonEquation<2>::assemble (dFMatrix &cell_matrix, }; }; -#endif +//#endif template void PoissonEquation::assemble (dFMatrix &, const FEValues &, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { Assert (false, ExcPureVirtualFunctionCalled()); }; @@ -74,7 +74,7 @@ void PoissonEquation::assemble (dFMatrix &, template void PoissonEquation::assemble (dVector &, const FEValues &, - const Triangulation::cell_iterator &) const { + const DoFHandler::cell_iterator &) const { Assert (false, ExcPureVirtualFunctionCalled()); }; @@ -83,4 +83,4 @@ void PoissonEquation::assemble (dVector &, -template class PoissonEquation<2>; +template class PoissonEquation<3>; diff --git a/tests/big-tests/poisson/poisson.cc b/tests/big-tests/poisson/poisson.cc index a84e555c61..b4017ea350 100644 --- a/tests/big-tests/poisson/poisson.cc +++ b/tests/big-tests/poisson/poisson.cc @@ -15,7 +15,7 @@ int main (int argc, char **argv) { return 1; }; - PoissonProblem<2> poisson; + PoissonProblem<3> poisson; MultipleParameterLoop input_data; poisson.declare_parameters(input_data); diff --git a/tests/big-tests/poisson/poisson.h b/tests/big-tests/poisson/poisson.h index a26bd89b74..f85471ab30 100644 --- a/tests/big-tests/poisson/poisson.h +++ b/tests/big-tests/poisson/poisson.h @@ -45,13 +45,13 @@ class PoissonEquation : public Equation { virtual void assemble (dFMatrix &cell_matrix, dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; virtual void assemble (dFMatrix &cell_matrix, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; virtual void assemble (dVector &rhs, const FEValues &fe_values, - const Triangulation::cell_iterator &cell) const; + const DoFHandler::cell_iterator &cell) const; protected: const Function &right_hand_side; }; diff --git a/tests/big-tests/poisson/poisson.prm b/tests/big-tests/poisson/poisson.prm index 9d94d10703..165e2d9d0f 100644 --- a/tests/big-tests/poisson/poisson.prm +++ b/tests/big-tests/poisson/poisson.prm @@ -1,5 +1,5 @@ set Test run = { zoom in | ball | curved line | random | jump | L-region} -set Global refinement = {{ 2 | 5 | 6 | 0 | 2 | 5 }} +set Global refinement = {{ 1 | 3 | 3 | 0 | 3 | 3 }} #{{ 2 | 3 | 3 | 1 | 3 | 3 }} set Right hand side = {{ zero | zero | trigpoly | constant | zero | zero }} set Boundary values = {{ sine | sine | zero | zero | jump | sine }} -set Output file = gnuplot.{{ zoom_in | ball | curved_line | random | jump | L-region }} +set Output file = results/{{ zoom_in | ball | curved_line | random | jump | L-region }}.inp