From: kanschat Date: Wed, 30 Nov 2011 20:26:28 +0000 (+0000) Subject: use automatic instantiation X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=243aede88bfc94e9a81b213af903669929ef72fe;p=dealii-svn.git use automatic instantiation git-svn-id: https://svn.dealii.org/trunk@24781 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/include/deal.II/multigrid/mg_transfer.templates.h b/deal.II/include/deal.II/multigrid/mg_transfer.templates.h index 97bab2de51..094d00ae42 100644 --- a/deal.II/include/deal.II/multigrid/mg_transfer.templates.h +++ b/deal.II/include/deal.II/multigrid/mg_transfer.templates.h @@ -30,6 +30,42 @@ DEAL_II_NAMESPACE_OPEN +template +template +void +MGTransferPrebuilt::copy_to_mg ( + const MGDoFHandler& mg_dof_handler, + MGLevelObject& dst, + const InVector& src) const +{ + reinit_vector(mg_dof_handler, component_to_block_map, dst); + bool first = true; + for (unsigned int level=mg_dof_handler.get_tria().n_levels();level != 0;) + { + --level; + VECTOR& dst_level = dst[level]; + + typedef std::vector >::const_iterator IT; + for (IT i= copy_indices[level].begin(); + i != copy_indices[level].end();++i) + dst_level(i->second) = src(i->first); + + // For non-DG: degrees of + // freedom in the refinement + // face may need special + // attention, since they belong + // to the coarse level, but + // have fine level basis + // functions + if (!first) + restrict_and_add (level+1, dst[level], dst[level+1]); + + first = false; + } +} + + + template template void diff --git a/deal.II/source/multigrid/mg_transfer_prebuilt.cc b/deal.II/source/multigrid/mg_transfer_prebuilt.cc index 2e658172cb..1c7bebce24 100644 --- a/deal.II/source/multigrid/mg_transfer_prebuilt.cc +++ b/deal.II/source/multigrid/mg_transfer_prebuilt.cc @@ -1,6 +1,5 @@ //--------------------------------------------------------------------------- // $Id$ -// Version: $Name$ // // Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by the deal.II authors // @@ -109,42 +108,6 @@ namespace -template -template -void -MGTransferPrebuilt::copy_to_mg ( - const MGDoFHandler& mg_dof_handler, - MGLevelObject& dst, - const InVector& src) const -{ - reinit_vector(mg_dof_handler, component_to_block_map, dst); - bool first = true; - for (unsigned int level=mg_dof_handler.get_tria().n_levels();level != 0;) - { - --level; - VECTOR& dst_level = dst[level]; - - typedef std::vector >::const_iterator IT; - for (IT i= copy_indices[level].begin(); - i != copy_indices[level].end();++i) - dst_level(i->second) = src(i->first); - - // For non-DG: degrees of - // freedom in the refinement - // face may need special - // attention, since they belong - // to the coarse level, but - // have fine level basis - // functions - if (!first) - restrict_and_add (level+1, dst[level], dst[level+1]); - - first = false; - } -} - - - template template void MGTransferPrebuilt::build_matrices ( diff --git a/deal.II/source/multigrid/mg_transfer_prebuilt.inst.in b/deal.II/source/multigrid/mg_transfer_prebuilt.inst.in index 49660ae0bf..3fb5cdb843 100644 --- a/deal.II/source/multigrid/mg_transfer_prebuilt.inst.in +++ b/deal.II/source/multigrid/mg_transfer_prebuilt.inst.in @@ -1,8 +1,7 @@ //--------------------------------------------------------------------------- // $Id$ -// Version: $Name$ // -// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by the deal.II authors +// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 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 @@ -12,148 +11,23 @@ //--------------------------------------------------------------------------- -for (deal_II_dimension : DIMENSIONS) +for (deal_II_dimension : DIMENSIONS; V1 : SERIAL_VECTORS) { -//TODO: Use template expander script - -template -void MGTransferPrebuilt >::build_matrices -(const MGDoFHandler &mg_dof); - -template -void MGTransferPrebuilt >::build_matrices -(const MGDoFHandler &mg_dof); - -template -void MGTransferPrebuilt >::build_matrices -(const MGDoFHandler &mg_dof); - -template -void MGTransferPrebuilt >::build_matrices -(const MGDoFHandler &mg_dof); - -template void -MGTransferPrebuilt >::copy_to_mg ( - const MGDoFHandler&, - MGLevelObject >&, - const Vector&) const; -template void -MGTransferPrebuilt >::copy_to_mg ( - const MGDoFHandler&, - MGLevelObject >&, - const BlockVector&) const; -template void -MGTransferPrebuilt >::copy_from_mg ( - const MGDoFHandler&, - Vector&, - const MGLevelObject >&) const; -template void -MGTransferPrebuilt >::copy_from_mg ( - const MGDoFHandler&, - BlockVector&, - const MGLevelObject >&) const; -template void -MGTransferPrebuilt >::copy_from_mg_add ( - const MGDoFHandler&, - Vector&, - const MGLevelObject >&) const; -template void -MGTransferPrebuilt >::copy_from_mg_add ( - const MGDoFHandler&, - BlockVector&, - const MGLevelObject >&) const; - -template void -MGTransferPrebuilt >::copy_to_mg ( - const MGDoFHandler&, - MGLevelObject >&, - const Vector&) const; -template void -MGTransferPrebuilt >::copy_to_mg ( - const MGDoFHandler&, - MGLevelObject >&, - const BlockVector&) const; -template void -MGTransferPrebuilt >::copy_from_mg ( - const MGDoFHandler&, - Vector&, - const MGLevelObject >&) const; -template void -MGTransferPrebuilt >::copy_from_mg ( - const MGDoFHandler&, - BlockVector&, - const MGLevelObject >&) const; -template void -MGTransferPrebuilt >::copy_from_mg_add ( - const MGDoFHandler&, - Vector&, - const MGLevelObject >&) const; -template void -MGTransferPrebuilt >::copy_from_mg_add ( - const MGDoFHandler&, - BlockVector&, - const MGLevelObject >&) const; - -template void -MGTransferPrebuilt >::copy_to_mg ( - const MGDoFHandler&, - MGLevelObject >&, - const Vector&) const; -template void -MGTransferPrebuilt >::copy_to_mg ( - const MGDoFHandler&, - MGLevelObject >&, - const BlockVector&) const; -template void -MGTransferPrebuilt >::copy_from_mg ( - const MGDoFHandler&, - Vector&, - const MGLevelObject >&) const; -template void -MGTransferPrebuilt >::copy_from_mg ( - const MGDoFHandler&, - BlockVector&, - const MGLevelObject >&) const; -template void -MGTransferPrebuilt >::copy_from_mg_add ( - const MGDoFHandler&, - Vector&, - const MGLevelObject >&) const; -template void -MGTransferPrebuilt >::copy_from_mg_add ( - const MGDoFHandler&, - BlockVector&, - const MGLevelObject >&) const; + template + void MGTransferPrebuilt::build_matrices( + const MGDoFHandler &mg_dof); + } -template void -MGTransferPrebuilt >::copy_to_mg ( - const MGDoFHandler&, - MGLevelObject >&, - const Vector&) const; -template void -MGTransferPrebuilt >::copy_to_mg ( - const MGDoFHandler&, - MGLevelObject >&, - const BlockVector&) const; -template void -MGTransferPrebuilt >::copy_from_mg ( - const MGDoFHandler&, - Vector&, - const MGLevelObject >&) const; -template void -MGTransferPrebuilt >::copy_from_mg ( - const MGDoFHandler&, - BlockVector&, - const MGLevelObject >&) const; -template void -MGTransferPrebuilt >::copy_from_mg_add ( - const MGDoFHandler&, - Vector&, - const MGLevelObject >&) const; -template void -MGTransferPrebuilt >::copy_from_mg_add ( - const MGDoFHandler&, - BlockVector&, - const MGLevelObject >&) const; +for (deal_II_dimension : DIMENSIONS; V1,V2 : SERIAL_VECTORS) + { + template void + MGTransferPrebuilt::copy_to_mg ( + const MGDoFHandler&, MGLevelObject&, const V2&) const; + template void + MGTransferPrebuilt::copy_from_mg (const MGDoFHandler&, V2&, + const MGLevelObject&) const; + template void + MGTransferPrebuilt::copy_from_mg_add (const MGDoFHandler&, V2&, + const MGLevelObject&) const; }