https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
ADCubicTransition Class Reference

Cubic polynomial transition between two functions of one variable. More...

#include <ADCubicTransition.h>

Inheritance diagram for ADCubicTransition:
[legend]

Public Member Functions

 ADCubicTransition (const ADReal &x_center, const ADReal &transition_width)
 Constructor.
 
virtual ADReal value (const ADReal &x, const ADReal &f1, const ADReal &f2) const override
 Computes the transition value.
 
void initialize (const ADReal &f1_end_value, const ADReal &f2_end_value, const ADReal &df1dx_end_value, const ADReal &df2dx_end_value)
 Computes the derivative of the transition value.
 
const ADReal & leftEnd () const
 Returns the coordinate of the left end of the transition.
 
const ADReal & rightEnd () const
 Returns the coordinate of the right end of the transition.
 

Protected Attributes

ADReal _A
 
ADReal _B
 
ADReal _C
 
ADReal _D
 
bool _initialized
 Flag that transition has been initialized.
 
const ADReal _x_center
 Center point of transition.
 
const ADReal _transition_width
 Width of transition.
 
const ADReal _x1
 Left end point of transition.
 
const ADReal _x2
 Right end point of transition.
 

Detailed Description

Cubic polynomial transition between two functions of one variable.

Definition at line 17 of file ADCubicTransition.h.

Constructor & Destructor Documentation

◆ ADCubicTransition()

ADCubicTransition::ADCubicTransition ( const ADReal &  x_center,
const ADReal &  transition_width 
)

Constructor.

Parameters
[in]x_centerCenter point of transition
[in]transition_widthWidth of transition

Definition at line 17 of file ADCubicTransition.C.

18 : ADSmoothTransition(x_center, transition_width),
19
20 _A(0.0),
21 _B(0.0),
22 _C(0.0),
23 _D(0.0),
24
25 _initialized(false)
26{
27}
bool _initialized
Flag that transition has been initialized.
Base class for smooth transitions between two functions of one variable.

Member Function Documentation

◆ initialize()

void ADCubicTransition::initialize ( const ADReal &  f1_end_value,
const ADReal &  f2_end_value,
const ADReal &  df1dx_end_value,
const ADReal &  df2dx_end_value 
)

Computes the derivative of the transition value.

Parameters
[in]xPoint at which to evaluate transition
[in]df1dxFirst function derivative
[in]df2dxSecond function derivative

Definition at line 30 of file ADCubicTransition.C.

34{
35 // compute cubic polynomial coefficients
36 using std::pow;
37
38 DenseMatrix<ADReal> mat(4, 4);
39
40 mat(0, 0) = pow(_x1, 3);
41 mat(0, 1) = pow(_x1, 2);
42 mat(0, 2) = _x1;
43 mat(0, 3) = 1.0;
44
45 mat(1, 0) = pow(_x2, 3);
46 mat(1, 1) = pow(_x2, 2);
47 mat(1, 2) = _x2;
48 mat(1, 3) = 1.0;
49
50 mat(2, 0) = 3.0 * pow(_x1, 2);
51 mat(2, 1) = 2.0 * _x1;
52 mat(2, 2) = 1.0;
53 mat(2, 3) = 0.0;
54
55 mat(3, 0) = 3.0 * pow(_x2, 2);
56 mat(3, 1) = 2.0 * _x2;
57 mat(3, 2) = 1.0;
58 mat(3, 3) = 0.0;
59
60 DenseVector<ADReal> rhs(4);
61 rhs(0) = f1_end_value;
62 rhs(1) = f2_end_value;
63 rhs(2) = df1dx_end_value;
64 rhs(3) = df2dx_end_value;
65
66 DenseVector<ADReal> coefs(4);
67 mat.lu_solve(rhs, coefs);
68
69 _A = coefs(0);
70 _B = coefs(1);
71 _C = coefs(2);
72 _D = coefs(3);
73
74 _initialized = true;
75}
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
const ADReal _x2
Right end point of transition.
const ADReal _x1
Left end point of transition.

Referenced by ADSmoothTransitionTestMaterial::ADSmoothTransitionTestMaterial().

◆ leftEnd()

const ADReal & ADSmoothTransition::leftEnd ( ) const
inlineinherited

Returns the coordinate of the left end of the transition.

Definition at line 40 of file ADSmoothTransition.h.

40{ return _x1; }

Referenced by ADSmoothTransitionTestMaterial::ADSmoothTransitionTestMaterial(), and ADShaftConnectedPump1PhaseUserObject::computeFluxesAndResiduals().

◆ rightEnd()

const ADReal & ADSmoothTransition::rightEnd ( ) const
inlineinherited

Returns the coordinate of the right end of the transition.

Definition at line 45 of file ADSmoothTransition.h.

45{ return _x2; }

Referenced by ADSmoothTransitionTestMaterial::ADSmoothTransitionTestMaterial(), and ADShaftConnectedPump1PhaseUserObject::computeFluxesAndResiduals().

◆ value()

ADReal ADCubicTransition::value ( const ADReal &  x,
const ADReal &  f1,
const ADReal &  f2 
) const
overridevirtual

Computes the transition value.

Parameters
[in]xPoint at which to evaluate function
[in]f1Left function
[in]f2Right function

Implements ADSmoothTransition.

Definition at line 78 of file ADCubicTransition.C.

79{
80 mooseAssert(_initialized, "initialize() must be called.");
81 using std::pow;
82
83 if (x <= _x1)
84 return f1;
85 else if (x >= _x2)
86 return f2;
87 else
88 return _A * pow(x, 3) + _B * pow(x, 2) + _C * x + _D;
89}
const std::vector< double > x

Referenced by ADSmoothTransitionTestMaterial::computeQpProperties().

Member Data Documentation

◆ _A

ADReal ADCubicTransition::_A
protected

Definition at line 44 of file ADCubicTransition.h.

Referenced by initialize(), and value().

◆ _B

ADReal ADCubicTransition::_B
protected

Definition at line 45 of file ADCubicTransition.h.

Referenced by initialize(), and value().

◆ _C

ADReal ADCubicTransition::_C
protected

Definition at line 46 of file ADCubicTransition.h.

Referenced by initialize(), and value().

◆ _D

ADReal ADCubicTransition::_D
protected

Definition at line 47 of file ADCubicTransition.h.

Referenced by initialize(), and value().

◆ _initialized

bool ADCubicTransition::_initialized
protected

Flag that transition has been initialized.

Definition at line 50 of file ADCubicTransition.h.

Referenced by initialize(), and value().

◆ _transition_width

const ADReal ADSmoothTransition::_transition_width
protectedinherited

Width of transition.

Definition at line 51 of file ADSmoothTransition.h.

◆ _x1

const ADReal ADSmoothTransition::_x1
protectedinherited

Left end point of transition.

Definition at line 54 of file ADSmoothTransition.h.

Referenced by initialize(), ADSmoothTransition::leftEnd(), value(), ADWeightedTransition::value(), and ADWeightedTransition::weight().

◆ _x2

const ADReal ADSmoothTransition::_x2
protectedinherited

Right end point of transition.

Definition at line 56 of file ADSmoothTransition.h.

Referenced by initialize(), ADSmoothTransition::rightEnd(), value(), ADWeightedTransition::value(), and ADWeightedTransition::weight().

◆ _x_center

const ADReal ADSmoothTransition::_x_center
protectedinherited

Center point of transition.

Definition at line 49 of file ADSmoothTransition.h.


The documentation for this class was generated from the following files: