https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ComputeDiracThread.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#pragma once
11
12// Moose Includes
13#include "ThreadedElementLoop.h"
14
15#include "libmesh/stored_range.h"
16
17// Forward declarations
18class DiracKernelBase;
19template <typename T>
21template <typename T>
24
25typedef StoredRange<std::set<const Elem *>::const_iterator, const Elem *> DistElemRange;
26
27class ComputeDiracThread : public ThreadedElementLoop<DistElemRange>
28{
29public:
30 ComputeDiracThread(FEProblemBase & feproblem, const std::set<TagID> & tags, bool _is_jacobian);
31
32 // Splitting Constructor
34
35 virtual ~ComputeDiracThread();
36
37 virtual void subdomainChanged() override;
38 virtual void pre() override;
39 virtual void onElement(const Elem * elem) override;
40 virtual void postElement(const Elem * /*elem*/) override;
41 virtual void post() override;
42
43 void join(const ComputeDiracThread & /*y*/);
44
45protected:
47 void printGeneralExecutionInformation() const override;
48
50 void printBlockExecutionInformation() const override;
51
54
55 const std::set<TagID> & _tags;
56
59
61};
StoredRange< std::set< const Elem * >::const_iterator, const Elem * > DistElemRange
virtual void subdomainChanged() override
Called every time the current subdomain changes (i.e.
virtual void postElement(const Elem *) override
Called after the element assembly is done (including surface assembling)
virtual void pre() override
Called before the element range loop.
MooseObjectTagWarehouse< DiracKernelBase > & _dirac_kernels
Storage for DiracKernel objects.
void join(const ComputeDiracThread &)
virtual void post() override
Called after the element range loop.
MooseObjectWarehouse< DiracKernelBase > * _dirac_warehouse
NonlinearSystemBase & _nl
virtual void onElement(const Elem *elem) override
Assembly of the element (not including surface assembly)
const std::set< TagID > & _tags
void printBlockExecutionInformation() const override
Output the order of execution of objects within the current subdomain.
void printGeneralExecutionInformation() const override
Output a message indicating execution on this execution flag.
DiracKernelBase is the base class for all DiracKernel type classes.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
A storage container for MooseObjects that inherit from SetupInterface.
A storage container for MooseObjects that inherit from SetupInterface.
Nonlinear system to be solved.
Base class for assembly-like calculations.