FEAT 3
Finite Element Analysis Toolbox
Loading...
Searching...
No Matches
mean_filter_asm.hpp
1// FEAT3: Finite Element Analysis Toolbox, Version 3
2// Copyright (C) 2010 by Stefan Turek & the FEAT group
3// FEAT3 is released under the GNU General Public License version 3,
4// see the file 'copyright.txt' in the top level directory for details.
5
6#pragma once
7
9#include <kernel/assembly/mean_filter_assembler.hpp>
10#include <kernel/global/mean_filter.hpp>
11#include <kernel/global/gate.hpp>
12
13namespace FEAT
14{
15 namespace Control
16 {
17 namespace Asm
18 {
31 template<typename Gate_, typename Space_>
32 Global::MeanFilter<typename Gate_::DataType, typename Gate_::IndexType> asm_mean_filter(Gate_& gate, const Space_& space, const String& cubature_name)
33 {
34 // get a clone of the frequencies vector
35 auto vec_f = gate.get_freqs().clone(LAFEM::CloneMode::Deep);
36 auto vec_v = gate.get_freqs().clone(LAFEM::CloneMode::Deep);
37 auto vec_w = gate.get_freqs().clone(LAFEM::CloneMode::Deep);
38
39 // assemble the mean filter
40 Assembly::MeanFilterAssembler::assemble(vec_v, vec_w, space, cubature_name);
41
42 // synchronize the vectors
43 gate.sync_1(vec_v);
44 gate.sync_0(vec_w);
45
46 // build the mean filter
47 return Global::MeanFilter<typename Gate_::DataType, typename Gate_::IndexType>(
48 std::move(vec_v), std::move(vec_w), std::move(vec_f), gate.get_comm());
49 }
50 } // namespace Asm
51 } // namespace Control
52} // namespace FEAT
FEAT Kernel base header.
static void assemble(LAFEM::DenseVector< DataType_, IndexType_ > &vec_prim, LAFEM::DenseVector< DataType_, IndexType_ > &vec_dual, const Space_ &space, const String &cubature_name)
Assembles an integral mean filter.
FEAT namespace.
Definition: adjactor.hpp:12