From: Wolfgang Bangerth Date: Mon, 6 Jul 2009 16:27:52 +0000 (+0000) Subject: Make refinement level a parameter. Remove factor 1/2, make domain [-1,1]^d. X-Git-Tag: v8.0.0~7540 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25726876d5bf476577b9660a1071f2d2f1680397;p=dealii.git Make refinement level a parameter. Remove factor 1/2, make domain [-1,1]^d. git-svn-id: https://svn.dealii.org/trunk@19019 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/examples/step-36/step-36.cc b/deal.II/examples/step-36/step-36.cc index 55d1fdb9c0..980060b5f1 100644 --- a/deal.II/examples/step-36/step-36.cc +++ b/deal.II/examples/step-36/step-36.cc @@ -100,6 +100,10 @@ EigenvalueProblem::EigenvalueProblem (const std::string &prm_file) // Declare some of the needed data // from a file; you can always change // this! + parameters.declare_entry ("Global mesh refinement steps", "5", + Patterns::Integer (0, 20), + "The number number of times the 1-cell coarse mesh should " + "be refined globally for our computations."); parameters.declare_entry ("Number of eigenvalues/eigenfunctions", "10", Patterns::Integer (0, 100), "The number of eigenvalues/eigenfunctions " @@ -118,8 +122,8 @@ EigenvalueProblem::EigenvalueProblem (const std::string &prm_file) template void EigenvalueProblem::make_grid_and_dofs () { - GridGenerator::hyper_cube (triangulation, -0.5, 0.5); - triangulation.refine_global (5); + GridGenerator::hyper_cube (triangulation, -1, 1); + triangulation.refine_global (parameters.get_integer ("Global mesh refinement steps")); dof_handler.distribute_dofs (fe); CompressedSimpleSparsityPattern csp (dof_handler.n_dofs(), @@ -223,7 +227,6 @@ void EigenvalueProblem::assemble_system () { cell_stiffness_matrix (i, j) += (fe_values.shape_grad (i, q_point) * - 0.5 * fe_values.shape_grad (j, q_point) + fe_values.shape_value (i, q_point) * @@ -306,6 +309,13 @@ void EigenvalueProblem::solve () eigensolver.solve (stiffness_matrix, mass_matrix, eigenvalues, eigenfunctions, eigenfunctions.size()); + + // Now rescale eigenfunctions so that they + // have $\|\phi_i(\vec + // x)\|_{L^\infty(\Omega)}=1$ instead of + // $\|\Phi\|_{l_2}=1$: + for (unsigned int i=0; i::output_results () const for (unsigned int i=0; i::output_results () const data_out.build_patches (); std::ofstream output ("eigenvectors.vtk"); - data_out.write_vtk (output); - - for (unsigned int i=0; i::run () assemble_system (); solve (); output_results (); + + for (unsigned int i=0; i