Houses composite derivation class where two derivation results get multiplied together, optionally applying an elementary function (exp, log, sin, cos) to one of them and raising them to corresponding powers
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(MultiplicativeDerivation), | intent(inout) | :: | this | |||
type(RealArray), | intent(in), | dimension(:) | :: | inputArray | ||
integer(kind=ik), | intent(in), | dimension(:) | :: | indices |
Initialize multiplicative derivation object
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(MultiplicativeDerivation), | intent(inout) | :: | this | |||
class(Derivation), | intent(in) | :: | innerDeriv | |||
integer(kind=ik), | intent(in), | dimension(:) | :: | innerIndices | ||
class(Derivation), | intent(in), | optional | :: | outerDeriv | ||
integer(kind=ik), | intent(in), | optional, | dimension(:) | :: | outerIndices | |
real(kind=rk), | intent(in), | optional | :: | innerPower | ||
real(kind=rk), | intent(in), | optional | :: | outerPower | ||
character(len=*), | intent(in), | optional | :: | innerFuncName |
Composite derivation class containing two calculation rules applied additively. Both derivations must return same length array. Optionally applies one of several intrinsic functions to "inner" derivation result before multiplication.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | public | :: | userDefined | = | .false. |
True only if user explicitly sets it to true |
|
class(Derivation), | private, | allocatable | :: | outerDeriv |
Outer multiplicative derivation - optional |
||
class(Derivation), | private, | allocatable | :: | innerDeriv |
Inner multiplicative derivation - this one has function applied to it |
||
integer(kind=ik), | private, | allocatable, dimension(:) | :: | outerIndices |
Subset of index vector passed to outer derivation |
||
integer(kind=ik), | private, | allocatable, dimension(:) | :: | innerIndices |
Subset of index vector passed to inner derivation |
||
character(len=:), | private, | allocatable | :: | innerFuncName |
Intrinsic function name optionally applied to result of inner derivation before raising to power and multiplying with outer result |
||
real(kind=rk), | private | :: | innerPower |
Power to raise result of inner derivation (after applying optional function). Defaults to 1. |
|||
real(kind=rk), | private | :: | outerPower |
Power to raise result of outer derivation . Defaults to 1. |
procedure, public :: isDefined => isDefinedObject | |
procedure, public :: makeDefined => makeDefinedObject | |
procedure, public :: makeUndefined => makeUndefinedObject | |
procedure, public :: init => initMultDeriv | |
procedure, public :: calculate => calculateMultiplicative |