9#include <kernel/lafem/slip_filter.hpp> 
   10#include <kernel/assembly/slip_filter_assembler.hpp> 
   11#include <kernel/global/gate.hpp> 
   38      template<
typename DataType_, 
typename IndexType_, 
int block_size_, 
typename DomainLevel_, 
typename Space_>
 
   39      void asm_slip_filter(LAFEM::SlipFilter<DataType_, IndexType_, block_size_>& filter,
 
   40        const DomainLevel_& dom_level, 
const Space_& space, 
const String& mesh_part_names)
 
   43        Assembly::SlipFilterAssembler<typename DomainLevel_::TrafoType> slip_filter_asm(dom_level.trafo);
 
   45        std::deque<String> mp_names;
 
   46        if(mesh_part_names == 
"*")
 
   47          mp_names = dom_level.get_mesh_node()->get_mesh_part_names(
true);
 
   49          mp_names = mesh_part_names.split_by_whitespaces();
 
   52        for(
const auto& mp_name : mp_names)
 
   54          auto* mesh_part_node = dom_level.get_mesh_node()->find_mesh_part_node(mp_name);
 
   55          XASSERT(mesh_part_node != 
nullptr);
 
   59          auto* mesh_part = mesh_part_node->get_mesh();
 
   60          if (mesh_part != 
nullptr)
 
   63            slip_filter_asm.add_mesh_part(*mesh_part);
 
   68        slip_filter_asm.assemble(filter, space);
 
   80      template<
typename Gate_, 
typename SlipFilter_>
 
   81      void sync_slip_filter(Gate_& gate, SlipFilter_& slip_filter)
 
   83        auto& slip_filter_vector = slip_filter.get_filter_vector();
 
   87        if(slip_filter_vector.used_elements() > 0)
 
   89          auto* tmp_elements = tmp.template elements<LAFEM::Perspective::native>();
 
   90          auto* sfv_elements = slip_filter_vector.template elements<LAFEM::Perspective::native>();
 
   93          for(
Index isparse(0); isparse < slip_filter_vector.used_elements(); ++isparse)
 
   95            Index idense(slip_filter_vector.indices()[isparse]);
 
   96            tmp_elements[idense] = sfv_elements[isparse];
 
  102          for(
Index isparse(0); isparse < slip_filter_vector.used_elements(); ++isparse)
 
  104            Index idense(slip_filter_vector.indices()[isparse]);
 
  105            tmp_elements[idense].normalize();
 
  106            sfv_elements[isparse] = tmp_elements[idense];
 
#define XASSERT(expr)
Assertion macro definition.
std::uint64_t Index
Index data type.