From 1c89bef66a5f29fd07428e2a982a701b01288b43 Mon Sep 17 00:00:00 2001 From: wolf Date: Mon, 27 Nov 2000 13:04:40 +0000 Subject: [PATCH] Use a Fullmatrix instead one of doubles, to avoid *large* amounts of memory being eaten up! The memory consumption is still roughly quadratic in the number of degrees of freedom, but at least reduced to half of the previous value. git-svn-id: https://svn.dealii.org/trunk@3505 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/include/dofs/dof_tools.h | 4 ++-- deal.II/deal.II/source/dofs/dof_tools.cc | 14 ++++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/deal.II/deal.II/include/dofs/dof_tools.h b/deal.II/deal.II/include/dofs/dof_tools.h index 5b227216b9..4b4e169ed5 100644 --- a/deal.II/deal.II/include/dofs/dof_tools.h +++ b/deal.II/deal.II/include/dofs/dof_tools.h @@ -886,7 +886,7 @@ class DoFTools const InterGridMap &coarse_to_fine_grid_map, const vector > ¶meter_dofs, const vector &weight_mapping, - FullMatrix &weights); + FullMatrix &weights); /** * This is a function that is @@ -905,7 +905,7 @@ class DoFTools const InterGridMap &coarse_to_fine_grid_map, const vector > ¶meter_dofs, const vector &weight_mapping, - FullMatrix &weights, + FullMatrix &weights, const typename DoFHandler::active_cell_iterator &begin, const typename DoFHandler::active_cell_iterator &end); }; diff --git a/deal.II/deal.II/source/dofs/dof_tools.cc b/deal.II/deal.II/source/dofs/dof_tools.cc index 46ab22e16c..1feec931a0 100644 --- a/deal.II/deal.II/source/dofs/dof_tools.cc +++ b/deal.II/deal.II/source/dofs/dof_tools.cc @@ -1171,8 +1171,14 @@ DoFTools::compute_intergrid_constraints (const DoFHandler &coa // weight_mapping is used to map the // global (fine grid) parameter dof // indices to the columns - FullMatrix weights (n_coarse_dofs, - n_parameters_on_fine_grid); + // + // note that the `weights' array + // can take up huge amounts of + // memory, and in particular is + // roughly quadratic in the memory + // consumption! + FullMatrix weights (n_coarse_dofs, + n_parameters_on_fine_grid); // this is this mapping. there is one // entry for each dof on the fine grid; // if it is a parameter dof, then its @@ -1370,7 +1376,7 @@ DoFTools::compute_intergrid_weights (const DoFHandler &coarse_ const InterGridMap &coarse_to_fine_grid_map, const vector > ¶meter_dofs, const vector &weight_mapping, - FullMatrix &weights) + FullMatrix &weights) { // simply distribute the range of // cells to different threads @@ -1403,7 +1409,7 @@ DoFTools::compute_intergrid_weights_1 (const DoFHandler &coars const InterGridMap &coarse_to_fine_grid_map, const vector > ¶meter_dofs, const vector &weight_mapping, - FullMatrix &weights, + FullMatrix &weights, const typename DoFHandler::active_cell_iterator &begin, const typename DoFHandler::active_cell_iterator &end) { -- 2.39.5