https://mooseframework.inl.gov
Loading...
Searching...
No Matches
KokkosNodalSum.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
13
15{
16public:
18
20
21 virtual void initialize() override;
22 virtual void finalize() override;
23 virtual Real getValue() const override;
24
25 template <typename Derived>
26 KOKKOS_FUNCTION void reduce(Datum & datum, Real * result) const;
27
28 KOKKOS_FUNCTION Real computeValue(const unsigned int qp, Datum & datum) const
29 {
30 return _u(datum, qp);
31 }
32
33 template <typename Derived>
34 KOKKOS_FUNCTION void join(Real * result, const Real * source) const;
35 template <typename Derived>
36 KOKKOS_FUNCTION void init(Real * result) const;
37};
38
39template <typename Derived>
40KOKKOS_FUNCTION void
41KokkosNodalSum::reduce(Datum & datum, Real * result) const
42{
43 if (datum.isNodalDefined(_u.variable()))
44 result[0] += static_cast<const Derived *>(this)->computeValue(0, datum);
45}
46
47template <typename Derived>
48KOKKOS_FUNCTION void
49KokkosNodalSum::join(Real * result, const Real * source) const
50{
51 result[0] += source[0];
52}
53
54template <typename Derived>
55KOKKOS_FUNCTION void
56KokkosNodalSum::init(Real * result) const
57{
58 result[0] = 0;
59}
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
KOKKOS_FUNCTION void join(Real *result, const Real *source) const
KokkosNodalSum(const InputParameters &parameters)
KOKKOS_FUNCTION void reduce(Datum &datum, Real *result) const
static InputParameters validParams()
virtual Real getValue() const override
This will get called to actually grab the final value the postprocessor has calculated.
KOKKOS_FUNCTION Real computeValue(const unsigned int qp, Datum &datum) const
KOKKOS_FUNCTION void init(Real *result) const
virtual void finalize() override
We provide default finalize() as getValue() has been abused to perform the final aggregation for a lo...
virtual void initialize() override
Called before execute() is ever called so that data can be cleared.
const InputParameters & parameters() const
Get the parameters of the object.
Definition MooseBase.h:131
The Kokkos object that holds thread-private data in the parallel operations of any Kokkos object.
KOKKOS_FUNCTION bool isNodalDefined(const Variable &var) const
Get whether the a variable is defined on the current node.
KOKKOS_FUNCTION const Variable & variable() const
Get the Kokkos variable.