www.mooseframework.org
ComputeDiracThread.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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
18 class DiracKernelBase;
19 template <typename T>
21 template <typename T>
24 
25 typedef StoredRange<std::set<const Elem *>::const_iterator, const Elem *> DistElemRange;
26 
27 class ComputeDiracThread : public ThreadedElementLoop<DistElemRange>
28 {
29 public:
30  ComputeDiracThread(FEProblemBase & feproblem, const std::set<TagID> & tags, bool _is_jacobian);
31 
32  // Splitting Constructor
33  ComputeDiracThread(ComputeDiracThread & x, Threads::split);
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 
45 protected:
47  void printGeneralExecutionInformation() const override;
48 
50  void printBlockExecutionInformation() const override;
51 
54 
55  const std::set<TagID> & _tags;
56 
59 
61 };
Base class for assembly-like calculations.
void join(const ComputeDiracThread &)
virtual void pre() override
Called before the element range loop.
A storage container for MooseObjects that inherit from SetupInterface.
virtual void postElement(const Elem *) override
Called after the element assembly is done (including surface assembling)
ComputeDiracThread(FEProblemBase &feproblem, const std::set< TagID > &tags, bool _is_jacobian)
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
void printBlockExecutionInformation() const override
Output the order of execution of objects within the current subdomain.
MooseObjectTagWarehouse< DiracKernelBase > & _dirac_kernels
Storage for DiracKernel objects.
Nonlinear system to be solved.
const std::set< TagID > & _tags
NonlinearSystemBase & _nl
A storage container for MooseObjects that inherit from SetupInterface.
void printGeneralExecutionInformation() const override
Output a message indicating execution on this execution flag.
MooseObjectWarehouse< DiracKernelBase > * _dirac_warehouse
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 onElement(const Elem *elem) override
Assembly of the element (not including surface assembly)
virtual void post() override
Called after the element range loop.
DiracKernelBase is the base class for all DiracKernel type classes.