From d7a1c7b1d8fc8f533d6895da103af69c60d024b5 Mon Sep 17 00:00:00 2001 From: kanschat Date: Tue, 6 Sep 2011 16:01:55 +0000 Subject: [PATCH] split template file git-svn-id: https://svn.dealii.org/trunk@24272 0785d39b-7218-0410-832d-ea1e28bc413d --- .../deal.II/meshworker/dof_info.templates.h | 209 ---------------- .../meshworker/integration_info.templates.h | 233 ++++++++++++++++++ deal.II/source/numerics/mesh_worker_info.cc | 1 + 3 files changed, 234 insertions(+), 209 deletions(-) create mode 100644 deal.II/include/deal.II/meshworker/integration_info.templates.h diff --git a/deal.II/include/deal.II/meshworker/dof_info.templates.h b/deal.II/include/deal.II/meshworker/dof_info.templates.h index 35c46d8029..faa56529ce 100644 --- a/deal.II/include/deal.II/meshworker/dof_info.templates.h +++ b/deal.II/include/deal.II/meshworker/dof_info.templates.h @@ -12,7 +12,6 @@ #include -#include #include DEAL_II_NAMESPACE_OPEN @@ -74,214 +73,6 @@ namespace MeshWorker level_cell = true; } -//----------------------------------------------------------------------// - - template - void - IntegrationInfo::initialize_data( - const std_cxx1x::shared_ptr > &data) - { - global_data = data; - const unsigned int nqp = fevalv[0]->n_quadrature_points; - - values.resize(global_data->n_values()); -// deallog << "values: " << values.size() << " ["; - // For all selected finite - // element functions - for (unsigned int i=0;in_gradients()); - // For all selected finite - // element functions - for (unsigned int i=0;in_hessians()); - // For all selected finite - // element functions - for (unsigned int i=0;i - void - IntegrationInfo::clear() - { - fevalv.resize(0); - } - - - - template - template - void - IntegrationInfo::fill_local_data(const DoFInfo& info, bool split_fevalues) - { - if (split_fevalues) - { - unsigned int comp = 0; - // Loop over all blocks - for (unsigned int b=0;blocal().size();++b) - { - const unsigned int fe_no = info.block_info->base_element(b); - const FEValuesBase& fe = this->fe_values(fe_no); - const unsigned int n_comp = fe.get_fe().n_components(); - const unsigned int block_start = info.block_info->local().block_start(b); - const unsigned int block_size = info.block_info->local().block_size(b); - - if(info.level_cell) - this->global_data->mg_fill(values, gradients, hessians, fe, info.cell->level(), info.indices, - comp, n_comp, block_start, block_size); - else - this->global_data->fill(values, gradients, hessians, fe, info.indices, - comp, n_comp, block_start, block_size); - comp += n_comp; - } - } - else - { - const FEValuesBase& fe = this->fe_values(0); - const unsigned int n_comp = fe.get_fe().n_components(); - if(info.level_cell) - this->global_data->mg_fill(values, gradients, hessians, fe, info.cell->level(), info.indices, - 0, n_comp, 0, info.indices.size()); - else - this->global_data->fill(values, gradients, hessians, fe, info.indices, - 0, n_comp, 0, info.indices.size()); - } - } - - - template - std::size_t - IntegrationInfo::memory_consumption () const - { - std::size_t mem = sizeof(*this) - + MemoryConsumption::memory_consumption(fevalv) - - sizeof (fevalv); - for (unsigned int i=0;imemory_consumption(); - return mem; - } - -//----------------------------------------------------------------------// - - template - IntegrationInfoBox::IntegrationInfoBox() - { - cell_flags = update_default; - boundary_flags = update_default; - face_flags = update_default; - neighbor_flags = update_default; - } - - - template - void - IntegrationInfoBox::initialize_update_flags () - { - cell_flags |= update_JxW_values; - boundary_flags |= UpdateFlags(update_JxW_values | update_normal_vectors); - face_flags |= boundary_flags; - neighbor_flags |= update_default; - - if (cell_selector.has_values() != 0) cell_flags |= update_values; - if (cell_selector.has_gradients() != 0) cell_flags |= update_gradients; - if (cell_selector.has_hessians() != 0) cell_flags |= update_hessians; - - if (boundary_selector.has_values() != 0) boundary_flags |= update_values; - if (boundary_selector.has_gradients() != 0) boundary_flags |= update_gradients; - if (boundary_selector.has_hessians() != 0) boundary_flags |= update_hessians; - - if (face_selector.has_values() != 0) face_flags |= update_values; - if (face_selector.has_gradients() != 0) face_flags |= update_gradients; - if (face_selector.has_hessians() != 0) face_flags |= update_hessians; - - if (face_selector.has_values() != 0) neighbor_flags |= update_values; - if (face_selector.has_gradients() != 0) neighbor_flags |= update_gradients; - if (face_selector.has_hessians() != 0) neighbor_flags |= update_hessians; - } - - - template - void - IntegrationInfoBox::add_update_flags( - const UpdateFlags flags, - bool cell, - bool boundary, - bool face, - bool neighbor) - { - if (cell) cell_flags |= flags; - if (boundary) boundary_flags |= flags; - if (face) face_flags |= flags; - if (neighbor) neighbor_flags |= flags; - } - - - template - std::size_t - IntegrationInfoBox::memory_consumption () const - { - std::size_t mem = sizeof(*this) - + MemoryConsumption::memory_consumption(cell_quadrature) - - sizeof (cell_quadrature) - + MemoryConsumption::memory_consumption(boundary_quadrature) - - sizeof (boundary_quadrature) - + MemoryConsumption::memory_consumption(face_quadrature) - - sizeof (face_quadrature) - + MemoryConsumption::memory_consumption(cell_selector) - -sizeof (cell_selector) - + MemoryConsumption::memory_consumption(boundary_selector) - -sizeof (boundary_selector) - + MemoryConsumption::memory_consumption(face_selector) - -sizeof (face_selector) - + MemoryConsumption::memory_consumption(cell) - - sizeof(cell) - + MemoryConsumption::memory_consumption(boundary) - - sizeof(boundary) - + MemoryConsumption::memory_consumption(face) - - sizeof(face) - + MemoryConsumption::memory_consumption(subface) - - sizeof(subface) - + MemoryConsumption::memory_consumption(neighbor) - - sizeof(neighbor); -// if (cell_data != 0) -// mem += MemoryConsumption::memory_consumption(*cell_data); -// if (boundary_data != 0) -// mem += MemoryConsumption::memory_consumption(*boundary_data); -// if (face_data != 0) -// mem += MemoryConsumption::memory_consumption(*face_data); - - return mem; - } } diff --git a/deal.II/include/deal.II/meshworker/integration_info.templates.h b/deal.II/include/deal.II/meshworker/integration_info.templates.h new file mode 100644 index 0000000000..61cebd8917 --- /dev/null +++ b/deal.II/include/deal.II/meshworker/integration_info.templates.h @@ -0,0 +1,233 @@ +//--------------------------------------------------------------------------- +// $Id$ +// +// Copyright (C) 2009, 2010, 2011 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//--------------------------------------------------------------------------- + + +#include +#include +#include + +DEAL_II_NAMESPACE_OPEN + + +namespace MeshWorker +{ + template + void + IntegrationInfo::initialize_data( + const std_cxx1x::shared_ptr > &data) + { + global_data = data; + const unsigned int nqp = fevalv[0]->n_quadrature_points; + + values.resize(global_data->n_values()); +// deallog << "values: " << values.size() << " ["; + // For all selected finite + // element functions + for (unsigned int i=0;in_gradients()); + // For all selected finite + // element functions + for (unsigned int i=0;in_hessians()); + // For all selected finite + // element functions + for (unsigned int i=0;i + void + IntegrationInfo::clear() + { + fevalv.resize(0); + } + + + + template + template + void + IntegrationInfo::fill_local_data(const DoFInfo& info, bool split_fevalues) + { + if (split_fevalues) + { + unsigned int comp = 0; + // Loop over all blocks + for (unsigned int b=0;blocal().size();++b) + { + const unsigned int fe_no = info.block_info->base_element(b); + const FEValuesBase& fe = this->fe_values(fe_no); + const unsigned int n_comp = fe.get_fe().n_components(); + const unsigned int block_start = info.block_info->local().block_start(b); + const unsigned int block_size = info.block_info->local().block_size(b); + + if(info.level_cell) + this->global_data->mg_fill(values, gradients, hessians, fe, info.cell->level(), info.indices, + comp, n_comp, block_start, block_size); + else + this->global_data->fill(values, gradients, hessians, fe, info.indices, + comp, n_comp, block_start, block_size); + comp += n_comp; + } + } + else + { + const FEValuesBase& fe = this->fe_values(0); + const unsigned int n_comp = fe.get_fe().n_components(); + if(info.level_cell) + this->global_data->mg_fill(values, gradients, hessians, fe, info.cell->level(), info.indices, + 0, n_comp, 0, info.indices.size()); + else + this->global_data->fill(values, gradients, hessians, fe, info.indices, + 0, n_comp, 0, info.indices.size()); + } + } + + + template + std::size_t + IntegrationInfo::memory_consumption () const + { + std::size_t mem = sizeof(*this) + + MemoryConsumption::memory_consumption(fevalv) + - sizeof (fevalv); + for (unsigned int i=0;imemory_consumption(); + return mem; + } + +//----------------------------------------------------------------------// + + template + IntegrationInfoBox::IntegrationInfoBox() + { + cell_flags = update_default; + boundary_flags = update_default; + face_flags = update_default; + neighbor_flags = update_default; + } + + + template + void + IntegrationInfoBox::initialize_update_flags () + { + cell_flags |= update_JxW_values; + boundary_flags |= UpdateFlags(update_JxW_values | update_normal_vectors); + face_flags |= boundary_flags; + neighbor_flags |= update_default; + + if (cell_selector.has_values() != 0) cell_flags |= update_values; + if (cell_selector.has_gradients() != 0) cell_flags |= update_gradients; + if (cell_selector.has_hessians() != 0) cell_flags |= update_hessians; + + if (boundary_selector.has_values() != 0) boundary_flags |= update_values; + if (boundary_selector.has_gradients() != 0) boundary_flags |= update_gradients; + if (boundary_selector.has_hessians() != 0) boundary_flags |= update_hessians; + + if (face_selector.has_values() != 0) face_flags |= update_values; + if (face_selector.has_gradients() != 0) face_flags |= update_gradients; + if (face_selector.has_hessians() != 0) face_flags |= update_hessians; + + if (face_selector.has_values() != 0) neighbor_flags |= update_values; + if (face_selector.has_gradients() != 0) neighbor_flags |= update_gradients; + if (face_selector.has_hessians() != 0) neighbor_flags |= update_hessians; + } + + + template + void + IntegrationInfoBox::add_update_flags( + const UpdateFlags flags, + bool cell, + bool boundary, + bool face, + bool neighbor) + { + if (cell) cell_flags |= flags; + if (boundary) boundary_flags |= flags; + if (face) face_flags |= flags; + if (neighbor) neighbor_flags |= flags; + } + + + template + std::size_t + IntegrationInfoBox::memory_consumption () const + { + std::size_t mem = sizeof(*this) + + MemoryConsumption::memory_consumption(cell_quadrature) + - sizeof (cell_quadrature) + + MemoryConsumption::memory_consumption(boundary_quadrature) + - sizeof (boundary_quadrature) + + MemoryConsumption::memory_consumption(face_quadrature) + - sizeof (face_quadrature) + + MemoryConsumption::memory_consumption(cell_selector) + -sizeof (cell_selector) + + MemoryConsumption::memory_consumption(boundary_selector) + -sizeof (boundary_selector) + + MemoryConsumption::memory_consumption(face_selector) + -sizeof (face_selector) + + MemoryConsumption::memory_consumption(cell) + - sizeof(cell) + + MemoryConsumption::memory_consumption(boundary) + - sizeof(boundary) + + MemoryConsumption::memory_consumption(face) + - sizeof(face) + + MemoryConsumption::memory_consumption(subface) + - sizeof(subface) + + MemoryConsumption::memory_consumption(neighbor) + - sizeof(neighbor); +// if (cell_data != 0) +// mem += MemoryConsumption::memory_consumption(*cell_data); +// if (boundary_data != 0) +// mem += MemoryConsumption::memory_consumption(*boundary_data); +// if (face_data != 0) +// mem += MemoryConsumption::memory_consumption(*face_data); + + return mem; + } +} + + +DEAL_II_NAMESPACE_CLOSE + diff --git a/deal.II/source/numerics/mesh_worker_info.cc b/deal.II/source/numerics/mesh_worker_info.cc index 462bd9875e..30eaf03b12 100644 --- a/deal.II/source/numerics/mesh_worker_info.cc +++ b/deal.II/source/numerics/mesh_worker_info.cc @@ -19,6 +19,7 @@ #include #include +#include DEAL_II_NAMESPACE_OPEN -- 2.39.5