forked from idaholab/moose
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added NearestPointLayeredSideAverageFunctor
Closes idaholab#25106
- Loading branch information
1 parent
e0888a6
commit b75901e
Showing
21 changed files
with
2,931 additions
and
0 deletions.
There are no files selected for viewing
14 changes: 14 additions & 0 deletions
14
framework/doc/content/source/userobjects/LayeredSideAverageFunctor.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# LayeredSideAverageFunctor | ||
|
||
This object is the same as [LayeredSideAverage.md], but the average may be taken | ||
of any [functor](Functors/index.md), not just a variable. | ||
|
||
!alert note title=Functor requirements | ||
This object requires the `ElemSideQpArg` [functor spatial argument](Functors/index.md) to be | ||
implemented for the [!param](/UserObjects/LayeredSideAverageFunctor/functor) parameter. | ||
|
||
!syntax parameters /UserObjects/LayeredSideAverageFunctor | ||
|
||
!syntax inputs /UserObjects/LayeredSideAverageFunctor | ||
|
||
!syntax children /UserObjects/LayeredSideAverageFunctor |
14 changes: 14 additions & 0 deletions
14
framework/doc/content/source/userobjects/LayeredSideIntegralFunctor.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# LayeredSideIntegralFunctor | ||
|
||
This object is the same as [LayeredSideIntegral.md], but the side integral may be taken | ||
of any [functor](Functors/index.md), not just a variable. | ||
|
||
!alert note title=Functor requirements | ||
This object requires the `ElemSideQpArg` [functor spatial argument](Functors/index.md) to be | ||
implemented for the [!param](/UserObjects/LayeredSideIntegralFunctor/functor) parameter. | ||
|
||
!syntax parameters /UserObjects/LayeredSideIntegralFunctor | ||
|
||
!syntax inputs /UserObjects/LayeredSideIntegralFunctor | ||
|
||
!syntax children /UserObjects/LayeredSideIntegralFunctor |
14 changes: 14 additions & 0 deletions
14
framework/doc/content/source/userobjects/NearestPointLayeredSideAverageFunctor.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# NearestPointLayeredSideAverageFunctor | ||
|
||
This object is the same as [NearestPointLayeredSideAverage.md], but the layered average may be taken | ||
of any [functor](Functors/index.md), not just a variable. | ||
|
||
!alert note title=Functor requirements | ||
This object requires the `ElemSideQpArg` [functor spatial argument](Functors/index.md) to be | ||
implemented for the [!param](/UserObjects/NearestPointLayeredSideAverageFunctor/functor) parameter. | ||
|
||
!syntax parameters /UserObjects/NearestPointLayeredSideAverageFunctor | ||
|
||
!syntax inputs /UserObjects/NearestPointLayeredSideAverageFunctor | ||
|
||
!syntax children /UserObjects/NearestPointLayeredSideAverageFunctor |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
//* This file is part of the MOOSE framework | ||
//* https://www.mooseframework.org | ||
//* | ||
//* All rights reserved, see COPYRIGHT for full restrictions | ||
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT | ||
//* | ||
//* Licensed under LGPL 2.1, please see LICENSE for details | ||
//* https://www.gnu.org/licenses/lgpl-2.1.html | ||
|
||
#pragma once | ||
|
||
#include "LayeredSideAverageBase.h" | ||
#include "LayeredSideIntegralFunctor.h" | ||
|
||
/** | ||
* Computes layered side averages of a functor. | ||
*/ | ||
class LayeredSideAverageFunctor : public LayeredSideAverageBase<LayeredSideIntegralFunctor> | ||
{ | ||
public: | ||
static InputParameters validParams(); | ||
|
||
LayeredSideAverageFunctor(const InputParameters & parameters); | ||
}; |
24 changes: 24 additions & 0 deletions
24
framework/include/userobjects/LayeredSideIntegralFunctor.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
//* This file is part of the MOOSE framework | ||
//* https://www.mooseframework.org | ||
//* | ||
//* All rights reserved, see COPYRIGHT for full restrictions | ||
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT | ||
//* | ||
//* Licensed under LGPL 2.1, please see LICENSE for details | ||
//* https://www.gnu.org/licenses/lgpl-2.1.html | ||
|
||
#pragma once | ||
|
||
#include "LayeredSideIntegralBase.h" | ||
#include "SideIntegralFunctorUserObject.h" | ||
|
||
/** | ||
* Computes layered side integrals of a functor. | ||
*/ | ||
class LayeredSideIntegralFunctor : public LayeredSideIntegralBase<SideIntegralFunctorUserObject> | ||
{ | ||
public: | ||
static InputParameters validParams(); | ||
|
||
LayeredSideIntegralFunctor(const InputParameters & parameters); | ||
}; |
26 changes: 26 additions & 0 deletions
26
framework/include/userobjects/NearestPointLayeredSideAverageFunctor.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
//* This file is part of the MOOSE framework | ||
//* https://www.mooseframework.org | ||
//* | ||
//* All rights reserved, see COPYRIGHT for full restrictions | ||
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT | ||
//* | ||
//* Licensed under LGPL 2.1, please see LICENSE for details | ||
//* https://www.gnu.org/licenses/lgpl-2.1.html | ||
|
||
#pragma once | ||
|
||
#include "SideIntegralFunctorUserObject.h" | ||
#include "NearestPointBase.h" | ||
#include "LayeredSideAverageFunctor.h" | ||
|
||
/** | ||
* Computes layered side averages of a functor nearest to a set of points. | ||
*/ | ||
class NearestPointLayeredSideAverageFunctor | ||
: public NearestPointBase<LayeredSideAverageFunctor, SideIntegralFunctorUserObject> | ||
{ | ||
public: | ||
static InputParameters validParams(); | ||
|
||
NearestPointLayeredSideAverageFunctor(const InputParameters & parameters); | ||
}; |
33 changes: 33 additions & 0 deletions
33
framework/include/userobjects/SideIntegralFunctorUserObject.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
//* This file is part of the MOOSE framework | ||
//* https://www.mooseframework.org | ||
//* | ||
//* All rights reserved, see COPYRIGHT for full restrictions | ||
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT | ||
//* | ||
//* Licensed under LGPL 2.1, please see LICENSE for details | ||
//* https://www.gnu.org/licenses/lgpl-2.1.html | ||
|
||
#pragma once | ||
|
||
#include "SideIntegralUserObject.h" | ||
#include "NonADFunctorInterface.h" | ||
|
||
/** | ||
* Computes a side integral of the specified functor. | ||
* | ||
* Note that specializations of this integral are possible by deriving from this | ||
* class and overriding computeQpIntegral(). | ||
*/ | ||
class SideIntegralFunctorUserObject : public SideIntegralUserObject, public NonADFunctorInterface | ||
{ | ||
public: | ||
static InputParameters validParams(); | ||
|
||
SideIntegralFunctorUserObject(const InputParameters & parameters); | ||
|
||
protected: | ||
virtual Real computeQpIntegral() override; | ||
|
||
/// Functor to integrate | ||
const Moose::Functor<Real> & _functor; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
//* This file is part of the MOOSE framework | ||
//* https://www.mooseframework.org | ||
//* | ||
//* All rights reserved, see COPYRIGHT for full restrictions | ||
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT | ||
//* | ||
//* Licensed under LGPL 2.1, please see LICENSE for details | ||
//* https://www.gnu.org/licenses/lgpl-2.1.html | ||
|
||
#include "LayeredSideAverageFunctor.h" | ||
|
||
registerMooseObject("MooseApp", LayeredSideAverageFunctor); | ||
|
||
InputParameters | ||
LayeredSideAverageFunctor::validParams() | ||
{ | ||
InputParameters params = LayeredSideAverageBase<LayeredSideIntegralFunctor>::validParams(); | ||
params.addClassDescription("Computes layered side averages of a functor."); | ||
return params; | ||
} | ||
|
||
LayeredSideAverageFunctor::LayeredSideAverageFunctor(const InputParameters & parameters) | ||
: LayeredSideAverageBase<LayeredSideIntegralFunctor>(parameters) | ||
{ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
//* This file is part of the MOOSE framework | ||
//* https://www.mooseframework.org | ||
//* | ||
//* All rights reserved, see COPYRIGHT for full restrictions | ||
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT | ||
//* | ||
//* Licensed under LGPL 2.1, please see LICENSE for details | ||
//* https://www.gnu.org/licenses/lgpl-2.1.html | ||
|
||
#include "LayeredSideIntegralFunctor.h" | ||
|
||
registerMooseObject("MooseApp", LayeredSideIntegralFunctor); | ||
|
||
InputParameters | ||
LayeredSideIntegralFunctor::validParams() | ||
{ | ||
InputParameters params = LayeredSideIntegralBase<SideIntegralFunctorUserObject>::validParams(); | ||
params.addClassDescription("Computes layered side integrals of a functor."); | ||
return params; | ||
} | ||
|
||
LayeredSideIntegralFunctor::LayeredSideIntegralFunctor(const InputParameters & parameters) | ||
: LayeredSideIntegralBase<SideIntegralFunctorUserObject>(parameters) | ||
{ | ||
} |
30 changes: 30 additions & 0 deletions
30
framework/src/userobjects/NearestPointLayeredSideAverageFunctor.C
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
//* This file is part of the MOOSE framework | ||
//* https://www.mooseframework.org | ||
//* | ||
//* All rights reserved, see COPYRIGHT for full restrictions | ||
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT | ||
//* | ||
//* Licensed under LGPL 2.1, please see LICENSE for details | ||
//* https://www.gnu.org/licenses/lgpl-2.1.html | ||
|
||
#include "NearestPointLayeredSideAverageFunctor.h" | ||
|
||
registerMooseObject("MooseApp", NearestPointLayeredSideAverageFunctor); | ||
|
||
InputParameters | ||
NearestPointLayeredSideAverageFunctor::validParams() | ||
{ | ||
InputParameters params = | ||
NearestPointBase<LayeredSideAverageFunctor, SideIntegralFunctorUserObject>::validParams(); | ||
|
||
params.addClassDescription( | ||
"Computes layered side averages of a functor nearest to a set of points."); | ||
|
||
return params; | ||
} | ||
|
||
NearestPointLayeredSideAverageFunctor::NearestPointLayeredSideAverageFunctor( | ||
const InputParameters & parameters) | ||
: NearestPointBase<LayeredSideAverageFunctor, SideIntegralFunctorUserObject>(parameters) | ||
{ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
//* This file is part of the MOOSE framework | ||
//* https://www.mooseframework.org | ||
//* | ||
//* All rights reserved, see COPYRIGHT for full restrictions | ||
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT | ||
//* | ||
//* Licensed under LGPL 2.1, please see LICENSE for details | ||
//* https://www.gnu.org/licenses/lgpl-2.1.html | ||
|
||
#include "SideIntegralFunctorUserObject.h" | ||
|
||
InputParameters | ||
SideIntegralFunctorUserObject::validParams() | ||
{ | ||
InputParameters params = SideIntegralUserObject::validParams(); | ||
params += NonADFunctorInterface::validParams(); | ||
params.addRequiredParam<MooseFunctorName>("functor", "The functor to be integrated"); | ||
return params; | ||
} | ||
|
||
SideIntegralFunctorUserObject::SideIntegralFunctorUserObject(const InputParameters & parameters) | ||
: SideIntegralUserObject(parameters), | ||
NonADFunctorInterface(this), | ||
|
||
_functor(getFunctor<Real>("functor")) | ||
{ | ||
} | ||
|
||
Real | ||
SideIntegralFunctorUserObject::computeQpIntegral() | ||
{ | ||
Moose::ElemSideQpArg elem_side_qp = {_current_elem, _current_side, _qp, _qrule}; | ||
return _functor(elem_side_qp, determineState()); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.