From 475c49667412d1c880857322fca3122ceac58105 Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Mon, 18 May 1998 08:44:52 +0000 Subject: [PATCH] Mainly changes for the String->string conversion of the parameter handler module, but also some minor performance tweaks with assumptions on the size of passed vectors. git-svn-id: https://svn.dealii.org/trunk@307 0785d39b-7218-0410-832d-ea1e28bc413d --- .../deal.II/Attic/examples/dof/dof_test.cc | 23 +++++------- .../error-estimation/error-estimation.cc | 26 ++++++------- .../Attic/examples/poisson/equation.cc | 2 +- .../deal.II/Attic/examples/poisson/problem.cc | 37 +++++++++++-------- tests/big-tests/dof/dof_test.cc | 23 +++++------- .../error-estimation/error-estimation.cc | 26 ++++++------- tests/big-tests/poisson/equation.cc | 2 +- tests/big-tests/poisson/problem.cc | 37 +++++++++++-------- 8 files changed, 92 insertions(+), 84 deletions(-) diff --git a/deal.II/deal.II/Attic/examples/dof/dof_test.cc b/deal.II/deal.II/Attic/examples/dof/dof_test.cc index 254ba9a5ec..4d4ae3aba9 100644 --- a/deal.II/deal.II/Attic/examples/dof/dof_test.cc +++ b/deal.II/deal.II/Attic/examples/dof/dof_test.cc @@ -12,14 +12,9 @@ #include -#include +#include #include -extern "C" { -# include -} - -extern TriaActiveIterator<1,CellAccessor<1> > x; -extern TriaActiveIterator<2,CellAccessor<2> > y; +#include @@ -116,9 +111,11 @@ void TestCases::create_new (const unsigned int) { template void TestCases::declare_parameters (ParameterHandler &prm) { if (dim>=2) - prm.declare_entry ("Test run", "zoom in", "zoom in\\|ball\\|curved line\\|random"); + prm.declare_entry ("Test run", "zoom in", + Patterns::Sequence("zoom in|ball|curved line|random")); else - prm.declare_entry ("Test run", "zoom in", "zoom in\\|random"); + prm.declare_entry ("Test run", "zoom in", + Patterns::Sequence("zoom in|random")); prm.declare_entry ("Grid file", "grid.1"); prm.declare_entry ("Sparsity file", "sparsity.1"); prm.declare_entry ("Condensed sparsity file", "sparsity.c.1"); @@ -133,7 +130,7 @@ void TestCases::run (ParameterHandler &prm) { cout << " Making grid..." << endl; - String test = prm.get ("Test run"); + string test = prm.get ("Test run"); unsigned int test_case; if (test=="zoom in") test_case = 1; else @@ -238,7 +235,7 @@ void TestCases::run (ParameterHandler &prm) { // output the grid cout << " Writing grid..." << endl; - ofstream out(prm.get("Grid file")); + ofstream out(prm.get("Grid file").c_str()); tria->print_gnuplot (out); @@ -259,7 +256,7 @@ void TestCases::run (ParameterHandler &prm) { int unconstrained_bandwidth = sparsity.bandwidth(); cout << " Writing sparsity pattern... (This may take a while)" << endl; - ofstream sparsity_out (prm.get("Sparsity file")); + ofstream sparsity_out (prm.get("Sparsity file").c_str()); sparsity.print_gnuplot (sparsity_out); @@ -271,7 +268,7 @@ void TestCases::run (ParameterHandler &prm) { constraints.condense (sparsity); cout << " Writing condensed sparsity pattern... (This may take a while)" << endl; - ofstream c_sparsity_out (prm.get("Condensed sparsity file")); + ofstream c_sparsity_out (prm.get("Condensed sparsity file").c_str()); sparsity.print_gnuplot (c_sparsity_out); 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 d4b53f46c5..e0a91ecf09 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 @@ -336,18 +336,18 @@ void PoissonProblem::create_new (const unsigned int) { template void PoissonProblem::declare_parameters (ParameterHandler &prm) { prm.declare_entry ("Test case", "Gauss shape", - "Gauss shape\\|Singular\\|Kink"); + Patterns::Sequence("Gauss shape|Singular|Kink")); prm.declare_entry ("Initial refinement", "2", - ParameterHandler::RegularExpressions::Integer); + Patterns::Integer()); prm.declare_entry ("Refinement criterion", "estimated error", - "global\\|true error\\|estimated error"); + Patterns::Sequence("global|true error|estimated error")); prm.declare_entry ("Refinement fraction", "0.3", - ParameterHandler::RegularExpressions::Double); + Patterns::Double()); prm.declare_entry ("Maximum cells", "3000", - ParameterHandler::RegularExpressions::Integer); + Patterns::Integer()); prm.declare_entry ("Output base filename", ""); - prm.declare_entry ("Output format", "ucd" - "ucd\\|gnuplot"); + prm.declare_entry ("Output format", "ucd", + Patterns::Sequence("ucd|gnuplot")); }; @@ -495,7 +495,7 @@ void PoissonProblem::run (ParameterHandler &prm) { out.add_data_vector (h1_error_per_dof, "H1-Error"); out.add_data_vector (estimated_error_per_dof, "Estimated Error"); out.add_data_vector (error_ratio, "Ratio True:Estimated Error"); - String filename = prm.get ("Output base filename"); + string filename = prm.get ("Output base filename"); switch (refine_mode) { case global: @@ -518,7 +518,7 @@ void PoissonProblem::run (ParameterHandler &prm) { filename += ".gnuplot"; cout << " Writing error plots to <" << filename << ">..." << endl; - ofstream outfile(filename); + ofstream outfile(filename.c_str()); if (prm.get("Output format")=="ucd") out.write_ucd (outfile); else @@ -548,7 +548,7 @@ void PoissonProblem::run (ParameterHandler &prm) { ++refine_step; }; - String filename = prm.get ("Output base filename"); + string filename = prm.get ("Output base filename"); switch (refine_mode) { case global: @@ -566,7 +566,7 @@ void PoissonProblem::run (ParameterHandler &prm) { filename += "finest_mesh.gnuplot"; cout << " Wrinting finest grid to <" << filename << ">... " << endl; - ofstream finest_mesh (filename); + ofstream finest_mesh (filename.c_str()); tria->print_gnuplot (finest_mesh); finest_mesh.close(); @@ -580,7 +580,7 @@ void PoissonProblem::run (ParameterHandler &prm) { template void PoissonProblem::print_history (const ParameterHandler &prm, const RefineMode refine_mode) const { - String filename(prm.get("Output base filename")); + string filename(prm.get("Output base filename")); filename += "history."; switch (refine_mode) { @@ -598,7 +598,7 @@ void PoissonProblem::print_history (const ParameterHandler &prm, cout << endl << "Printing convergence history to <" << filename << ">..." << endl; - ofstream out(filename); + ofstream out(filename.c_str()); out << "# n_dofs l2_error linfty_error " << "h1_error estimated_error" << endl; diff --git a/deal.II/deal.II/Attic/examples/poisson/equation.cc b/deal.II/deal.II/Attic/examples/poisson/equation.cc index 20f1724589..ea43603d23 100644 --- a/deal.II/deal.II/Attic/examples/poisson/equation.cc +++ b/deal.II/deal.II/Attic/examples/poisson/equation.cc @@ -32,7 +32,7 @@ void PoissonEquation<2>::assemble (dFMatrix &cell_matrix, const Triangulation<2>::cell_iterator &) const { const vector > >&gradients = fe_values.get_shape_grads (); const dFMatrix &values = fe_values.get_shape_values (); - vector rhs_values; + vector rhs_values (fe_values.n_quadrature_points); const vector &weights = fe_values.get_JxW_values (); right_hand_side.value_list (fe_values.get_quadrature_points(), rhs_values); diff --git a/deal.II/deal.II/Attic/examples/poisson/problem.cc b/deal.II/deal.II/Attic/examples/poisson/problem.cc index 48dad443c8..cd95664c87 100644 --- a/deal.II/deal.II/Attic/examples/poisson/problem.cc +++ b/deal.II/deal.II/Attic/examples/poisson/problem.cc @@ -25,9 +25,11 @@ class BoundaryValuesSine : public Function { */ virtual void value_list (const vector > &points, vector &values) const { + Assert (values.size() == points.size(), + ExcVectorHasWrongSize(values.size(), points.size())); for (unsigned int i=0; i void PoissonProblem::declare_parameters (ParameterHandler &prm) { if (dim>=2) prm.declare_entry ("Test run", "zoom in", - "tensor\\|zoom in\\|ball\\|curved line\\|random\\|jump\\|L-region"); + Patterns::Sequence("tensor|zoom in|ball|curved line|" + "random|jump|L-region")); else - prm.declare_entry ("Test run", "zoom in", "tensor\\|zoom in\\|random"); + prm.declare_entry ("Test run", "zoom in", + Patterns::Sequence("tensor|zoom in|random")); prm.declare_entry ("Global refinement", "0", - ParameterHandler::RegularExpressions::Integer); + Patterns::Integer()); prm.declare_entry ("Right hand side", "zero", - "zero\\|constant\\|trigpoly\\|poly"); + Patterns::Sequence("zero|constant|trigpoly|poly")); prm.declare_entry ("Boundary values", "zero", - "zero\\|sine\\|jump"); + Patterns::Sequence("zero|sine|jump")); prm.declare_entry ("Output file", "gnuplot.1"); }; @@ -227,7 +231,7 @@ void PoissonProblem::declare_parameters (ParameterHandler &prm) { template bool PoissonProblem::make_grid (ParameterHandler &prm) { - String test = prm.get ("Test run"); + string test = prm.get ("Test run"); unsigned int test_case; if (test=="zoom in") test_case = 1; else @@ -375,7 +379,7 @@ void PoissonProblem::make_random_grid () { template bool PoissonProblem::set_right_hand_side (ParameterHandler &prm) { - String rhs_name = prm.get ("Right hand side"); + string rhs_name = prm.get ("Right hand side"); if (rhs_name == "zero") rhs = new ZeroFunction(); @@ -401,8 +405,8 @@ bool PoissonProblem::set_right_hand_side (ParameterHandler &prm) { template bool PoissonProblem::set_boundary_values (ParameterHandler &prm) { - String bv_name = prm.get ("Boundary values"); - + string bv_name = prm.get ("Boundary values"); + if (bv_name == "zero") boundary_values = new ZeroFunction (); else @@ -411,8 +415,11 @@ bool PoissonProblem::set_boundary_values (ParameterHandler &prm) { else if (bv_name == "jump") boundary_values = new BoundaryValuesJump (); - else - return false; + else + { + cout << "Unknown boundary value function " << bv_name << endl; + return false; + }; if (boundary_values != 0) return true; @@ -462,8 +469,8 @@ void PoissonProblem::run (ParameterHandler &prm) { << endl; DataOut out; - String o_filename = prm.get ("Output file"); - ofstream gnuplot(o_filename); + string o_filename = prm.get ("Output file"); + ofstream gnuplot(o_filename.c_str()); fill_data (out); out.write_gnuplot (gnuplot); gnuplot.close (); diff --git a/tests/big-tests/dof/dof_test.cc b/tests/big-tests/dof/dof_test.cc index 254ba9a5ec..4d4ae3aba9 100644 --- a/tests/big-tests/dof/dof_test.cc +++ b/tests/big-tests/dof/dof_test.cc @@ -12,14 +12,9 @@ #include -#include +#include #include -extern "C" { -# include -} - -extern TriaActiveIterator<1,CellAccessor<1> > x; -extern TriaActiveIterator<2,CellAccessor<2> > y; +#include @@ -116,9 +111,11 @@ void TestCases::create_new (const unsigned int) { template void TestCases::declare_parameters (ParameterHandler &prm) { if (dim>=2) - prm.declare_entry ("Test run", "zoom in", "zoom in\\|ball\\|curved line\\|random"); + prm.declare_entry ("Test run", "zoom in", + Patterns::Sequence("zoom in|ball|curved line|random")); else - prm.declare_entry ("Test run", "zoom in", "zoom in\\|random"); + prm.declare_entry ("Test run", "zoom in", + Patterns::Sequence("zoom in|random")); prm.declare_entry ("Grid file", "grid.1"); prm.declare_entry ("Sparsity file", "sparsity.1"); prm.declare_entry ("Condensed sparsity file", "sparsity.c.1"); @@ -133,7 +130,7 @@ void TestCases::run (ParameterHandler &prm) { cout << " Making grid..." << endl; - String test = prm.get ("Test run"); + string test = prm.get ("Test run"); unsigned int test_case; if (test=="zoom in") test_case = 1; else @@ -238,7 +235,7 @@ void TestCases::run (ParameterHandler &prm) { // output the grid cout << " Writing grid..." << endl; - ofstream out(prm.get("Grid file")); + ofstream out(prm.get("Grid file").c_str()); tria->print_gnuplot (out); @@ -259,7 +256,7 @@ void TestCases::run (ParameterHandler &prm) { int unconstrained_bandwidth = sparsity.bandwidth(); cout << " Writing sparsity pattern... (This may take a while)" << endl; - ofstream sparsity_out (prm.get("Sparsity file")); + ofstream sparsity_out (prm.get("Sparsity file").c_str()); sparsity.print_gnuplot (sparsity_out); @@ -271,7 +268,7 @@ void TestCases::run (ParameterHandler &prm) { constraints.condense (sparsity); cout << " Writing condensed sparsity pattern... (This may take a while)" << endl; - ofstream c_sparsity_out (prm.get("Condensed sparsity file")); + ofstream c_sparsity_out (prm.get("Condensed sparsity file").c_str()); sparsity.print_gnuplot (c_sparsity_out); diff --git a/tests/big-tests/error-estimation/error-estimation.cc b/tests/big-tests/error-estimation/error-estimation.cc index d4b53f46c5..e0a91ecf09 100644 --- a/tests/big-tests/error-estimation/error-estimation.cc +++ b/tests/big-tests/error-estimation/error-estimation.cc @@ -336,18 +336,18 @@ void PoissonProblem::create_new (const unsigned int) { template void PoissonProblem::declare_parameters (ParameterHandler &prm) { prm.declare_entry ("Test case", "Gauss shape", - "Gauss shape\\|Singular\\|Kink"); + Patterns::Sequence("Gauss shape|Singular|Kink")); prm.declare_entry ("Initial refinement", "2", - ParameterHandler::RegularExpressions::Integer); + Patterns::Integer()); prm.declare_entry ("Refinement criterion", "estimated error", - "global\\|true error\\|estimated error"); + Patterns::Sequence("global|true error|estimated error")); prm.declare_entry ("Refinement fraction", "0.3", - ParameterHandler::RegularExpressions::Double); + Patterns::Double()); prm.declare_entry ("Maximum cells", "3000", - ParameterHandler::RegularExpressions::Integer); + Patterns::Integer()); prm.declare_entry ("Output base filename", ""); - prm.declare_entry ("Output format", "ucd" - "ucd\\|gnuplot"); + prm.declare_entry ("Output format", "ucd", + Patterns::Sequence("ucd|gnuplot")); }; @@ -495,7 +495,7 @@ void PoissonProblem::run (ParameterHandler &prm) { out.add_data_vector (h1_error_per_dof, "H1-Error"); out.add_data_vector (estimated_error_per_dof, "Estimated Error"); out.add_data_vector (error_ratio, "Ratio True:Estimated Error"); - String filename = prm.get ("Output base filename"); + string filename = prm.get ("Output base filename"); switch (refine_mode) { case global: @@ -518,7 +518,7 @@ void PoissonProblem::run (ParameterHandler &prm) { filename += ".gnuplot"; cout << " Writing error plots to <" << filename << ">..." << endl; - ofstream outfile(filename); + ofstream outfile(filename.c_str()); if (prm.get("Output format")=="ucd") out.write_ucd (outfile); else @@ -548,7 +548,7 @@ void PoissonProblem::run (ParameterHandler &prm) { ++refine_step; }; - String filename = prm.get ("Output base filename"); + string filename = prm.get ("Output base filename"); switch (refine_mode) { case global: @@ -566,7 +566,7 @@ void PoissonProblem::run (ParameterHandler &prm) { filename += "finest_mesh.gnuplot"; cout << " Wrinting finest grid to <" << filename << ">... " << endl; - ofstream finest_mesh (filename); + ofstream finest_mesh (filename.c_str()); tria->print_gnuplot (finest_mesh); finest_mesh.close(); @@ -580,7 +580,7 @@ void PoissonProblem::run (ParameterHandler &prm) { template void PoissonProblem::print_history (const ParameterHandler &prm, const RefineMode refine_mode) const { - String filename(prm.get("Output base filename")); + string filename(prm.get("Output base filename")); filename += "history."; switch (refine_mode) { @@ -598,7 +598,7 @@ void PoissonProblem::print_history (const ParameterHandler &prm, cout << endl << "Printing convergence history to <" << filename << ">..." << endl; - ofstream out(filename); + ofstream out(filename.c_str()); out << "# n_dofs l2_error linfty_error " << "h1_error estimated_error" << endl; diff --git a/tests/big-tests/poisson/equation.cc b/tests/big-tests/poisson/equation.cc index 20f1724589..ea43603d23 100644 --- a/tests/big-tests/poisson/equation.cc +++ b/tests/big-tests/poisson/equation.cc @@ -32,7 +32,7 @@ void PoissonEquation<2>::assemble (dFMatrix &cell_matrix, const Triangulation<2>::cell_iterator &) const { const vector > >&gradients = fe_values.get_shape_grads (); const dFMatrix &values = fe_values.get_shape_values (); - vector rhs_values; + vector rhs_values (fe_values.n_quadrature_points); const vector &weights = fe_values.get_JxW_values (); right_hand_side.value_list (fe_values.get_quadrature_points(), rhs_values); diff --git a/tests/big-tests/poisson/problem.cc b/tests/big-tests/poisson/problem.cc index 48dad443c8..cd95664c87 100644 --- a/tests/big-tests/poisson/problem.cc +++ b/tests/big-tests/poisson/problem.cc @@ -25,9 +25,11 @@ class BoundaryValuesSine : public Function { */ virtual void value_list (const vector > &points, vector &values) const { + Assert (values.size() == points.size(), + ExcVectorHasWrongSize(values.size(), points.size())); for (unsigned int i=0; i void PoissonProblem::declare_parameters (ParameterHandler &prm) { if (dim>=2) prm.declare_entry ("Test run", "zoom in", - "tensor\\|zoom in\\|ball\\|curved line\\|random\\|jump\\|L-region"); + Patterns::Sequence("tensor|zoom in|ball|curved line|" + "random|jump|L-region")); else - prm.declare_entry ("Test run", "zoom in", "tensor\\|zoom in\\|random"); + prm.declare_entry ("Test run", "zoom in", + Patterns::Sequence("tensor|zoom in|random")); prm.declare_entry ("Global refinement", "0", - ParameterHandler::RegularExpressions::Integer); + Patterns::Integer()); prm.declare_entry ("Right hand side", "zero", - "zero\\|constant\\|trigpoly\\|poly"); + Patterns::Sequence("zero|constant|trigpoly|poly")); prm.declare_entry ("Boundary values", "zero", - "zero\\|sine\\|jump"); + Patterns::Sequence("zero|sine|jump")); prm.declare_entry ("Output file", "gnuplot.1"); }; @@ -227,7 +231,7 @@ void PoissonProblem::declare_parameters (ParameterHandler &prm) { template bool PoissonProblem::make_grid (ParameterHandler &prm) { - String test = prm.get ("Test run"); + string test = prm.get ("Test run"); unsigned int test_case; if (test=="zoom in") test_case = 1; else @@ -375,7 +379,7 @@ void PoissonProblem::make_random_grid () { template bool PoissonProblem::set_right_hand_side (ParameterHandler &prm) { - String rhs_name = prm.get ("Right hand side"); + string rhs_name = prm.get ("Right hand side"); if (rhs_name == "zero") rhs = new ZeroFunction(); @@ -401,8 +405,8 @@ bool PoissonProblem::set_right_hand_side (ParameterHandler &prm) { template bool PoissonProblem::set_boundary_values (ParameterHandler &prm) { - String bv_name = prm.get ("Boundary values"); - + string bv_name = prm.get ("Boundary values"); + if (bv_name == "zero") boundary_values = new ZeroFunction (); else @@ -411,8 +415,11 @@ bool PoissonProblem::set_boundary_values (ParameterHandler &prm) { else if (bv_name == "jump") boundary_values = new BoundaryValuesJump (); - else - return false; + else + { + cout << "Unknown boundary value function " << bv_name << endl; + return false; + }; if (boundary_values != 0) return true; @@ -462,8 +469,8 @@ void PoissonProblem::run (ParameterHandler &prm) { << endl; DataOut out; - String o_filename = prm.get ("Output file"); - ofstream gnuplot(o_filename); + string o_filename = prm.get ("Output file"); + ofstream gnuplot(o_filename.c_str()); fill_data (out); out.write_gnuplot (gnuplot); gnuplot.close (); -- 2.39.5