From 81a3773598e1e225c5d80c622b2a63aeacbc1c55 Mon Sep 17 00:00:00 2001 From: Baerbel Jannsen Date: Thu, 26 Aug 2010 15:52:46 +0000 Subject: [PATCH] use the MGConstrainedDoFs object in the transfer git-svn-id: https://svn.dealii.org/trunk@21732 0785d39b-7218-0410-832d-ea1e28bc413d --- .../source/multigrid/mg_transfer_prebuilt.cc | 31 ++++++++++--------- .../multigrid/multigrid.all_dimensions.cc | 6 ++-- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/deal.II/deal.II/source/multigrid/mg_transfer_prebuilt.cc b/deal.II/deal.II/source/multigrid/mg_transfer_prebuilt.cc index b170691295..6a02a3d6db 100644 --- a/deal.II/deal.II/source/multigrid/mg_transfer_prebuilt.cc +++ b/deal.II/deal.II/source/multigrid/mg_transfer_prebuilt.cc @@ -155,8 +155,7 @@ MGTransferPrebuilt::copy_to_mg ( template template void MGTransferPrebuilt::build_matrices ( - const MGDoFHandler &mg_dof, - const MGConstraints &mg_constraints) + const MGDoFHandler &mg_dof) { const unsigned int n_levels = mg_dof.get_tria().n_levels(); const unsigned int dofs_per_cell = mg_dof.get_fe().dofs_per_cell; @@ -286,12 +285,13 @@ void MGTransferPrebuilt::build_matrices ( // impose boundary conditions // but only in the column of // the prolongation matrix - if (mg_constraints.get_boundary_indices().size() != 0) + if(mg_constrained_dofs != 0) + if (mg_constrained_dofs->get_boundary_indices().size() != 0) { std::vector constrain_indices; for (int level=n_levels-2; level>=0; --level) { - if (mg_constraints.get_boundary_indices()[level].size() == 0) + if (mg_constrained_dofs->get_boundary_indices()[level].size() == 0) continue; // need to delete all the columns in the @@ -302,8 +302,8 @@ void MGTransferPrebuilt::build_matrices ( constrain_indices.resize (0); constrain_indices.resize (prolongation_matrices[level]->n(), 0); std::set::const_iterator dof - = mg_constraints.get_boundary_indices()[level].begin(), - endd = mg_constraints.get_boundary_indices()[level].end(); + = mg_constrained_dofs->get_boundary_indices()[level].begin(), + endd = mg_constrained_dofs->get_boundary_indices()[level].end(); for (; dof != endd; ++dof) constrain_indices[*dof] = 1; @@ -362,7 +362,12 @@ void MGTransferPrebuilt::build_matrices ( for (unsigned int i=0; iat_refinement_edge(level,level_dof_indices[i])) + temp_copy_indices[level_dof_indices[i]] = global_dof_indices[i]; + } + else temp_copy_indices[level_dof_indices[i]] = global_dof_indices[i]; } } @@ -392,23 +397,19 @@ void MGTransferPrebuilt::build_matrices ( template void MGTransferPrebuilt >::build_matrices -(const MGDoFHandler &mg_dof, - const MGConstraints& mg_constraints); +(const MGDoFHandler &mg_dof); template void MGTransferPrebuilt >::build_matrices -(const MGDoFHandler &mg_dof, - const MGConstraints& mg_constraints); +(const MGDoFHandler &mg_dof); template void MGTransferPrebuilt >::build_matrices -(const MGDoFHandler &mg_dof, - const MGConstraints& mg_constraints); +(const MGDoFHandler &mg_dof); template void MGTransferPrebuilt >::build_matrices -(const MGDoFHandler &mg_dof, - const MGConstraints& mg_constraints); +(const MGDoFHandler &mg_dof); template void MGTransferPrebuilt >::copy_to_mg ( diff --git a/deal.II/deal.II/source/multigrid/multigrid.all_dimensions.cc b/deal.II/deal.II/source/multigrid/multigrid.all_dimensions.cc index 134df115ab..73c90dba11 100644 --- a/deal.II/deal.II/source/multigrid/multigrid.all_dimensions.cc +++ b/deal.II/deal.II/source/multigrid/multigrid.all_dimensions.cc @@ -107,12 +107,12 @@ MGTransferPrebuilt::MGTransferPrebuilt () template -MGTransferPrebuilt::MGTransferPrebuilt (const ConstraintMatrix &c) +MGTransferPrebuilt::MGTransferPrebuilt (const ConstraintMatrix &c, const MGConstrainedDoFs& mg_c) : - constraints(&c) + constraints(&c), + mg_constrained_dofs(&mg_c) {} - template MGTransferPrebuilt::~MGTransferPrebuilt () {} -- 2.39.5