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#include "MooseTypes.h"
15
16#include "libmesh/stored_range.h"
17
18// Forward declarations
19class DiracKernelBase;
20template <typename T>
22template <typename T>
25
26typedef StoredRange<std::set<const Elem *>::const_iterator, const Elem *> DistElemRange;
27
28class ComputeDiracThread : public ThreadedElementLoop<DistElemRange>
29{
30public:
32 const std::set<TagID> & vector_tags,
33 const std::set<TagID> & matrix_tags,
34 Moose::ComputeType compute_type);
35
36 // Splitting Constructor
38
39 virtual ~ComputeDiracThread();
40
41 virtual void subdomainChanged() override;
42 virtual void pre() override;
43 virtual void onElement(const Elem * elem) override;
44 virtual void postElement(const Elem * /*elem*/) override;
45 virtual void post() override;
46
47 void join(const ComputeDiracThread & /*y*/);
48
49protected:
51 void printGeneralExecutionInformation() const override;
52
54 void printBlockExecutionInformation() const override;
55
58
59 const std::set<TagID> & _vector_tags;
60 const std::set<TagID> & _matrix_tags;
61
64
66};
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.
Moose::ComputeType _compute_type
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
const std::set< TagID > & _matrix_tags
NonlinearSystemBase & _nl
virtual void onElement(const Elem *elem) override
Assembly of the element (not including surface assembly)
void printBlockExecutionInformation() const override
Output the order of execution of objects within the current subdomain.
const std::set< TagID > & _vector_tags
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.
ComputeType
The type of nonlinear computation being performed.
Definition MooseTypes.h:835