Define the abstract type integrand for building FOODIE ODE integrators.
Abstract type bound procedures necessary for implementing a concrete extension of integrand_object.
Symmetric assignment integrand = integrand.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(inout) | :: | lhs | Left hand side. |
||
class(integrand_object), | intent(in) | :: | rhs | Right hand side. |
Abstract type bound procedures necessary for implementing a concrete extension of integrand_object.
Symmetric assignment integrand = integrand.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(inout) | :: | lhs | Left hand side. |
||
real(kind=R_P), | intent(in) | :: | rhs(1:) | Right hand side. |
Abstract type bound procedures necessary for implementing a concrete extension of integrand_object.
Return integrand dimension.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(in) | :: | self | Integrand. |
Integrand dimension.
Abstract type bound procedures necessary for implementing a concrete extension of integrand_object.
Asymmetric type operator integrand.op.real
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(in) | :: | lhs | Left hand side. |
||
real(kind=R_P), | intent(in) | :: | rhs(1:) | Right hand side. |
Operator result.
Abstract type bound procedures necessary for implementing a concrete extension of integrand_object.
Asymmetric type operator integrand.op.real
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(in) | :: | lhs | Left hand side. |
||
real(kind=R_P), | intent(in) | :: | rhs | Right hand side. |
Operator result.
Abstract type bound procedures necessary for implementing a concrete extension of integrand_object.
Estimate local truncation error between 2 solution approximations.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(in) | :: | lhs | Left hand side. |
||
class(integrand_object), | intent(in) | :: | rhs | Right hand side. |
Error estimation.
Abstract type bound procedures necessary for implementing a concrete extension of integrand_object.
Asymmetric type operator real.op.integrand
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=R_P), | intent(in) | :: | lhs(1:) | Left hand side. |
||
class(integrand_object), | intent(in) | :: | rhs | Right hand side. |
Operator result.
Abstract type bound procedures necessary for implementing a concrete extension of integrand_object.
Asymmetric type operator real.op.integrand
.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=R_P), | intent(in) | :: | lhs | Left hand side. |
||
class(integrand_object), | intent(in) | :: | rhs | Right hand side. |
Operator result.
Abstract type bound procedures necessary for implementing a concrete extension of integrand_object.
Symmetric type operator integrand.op.integrand.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(in) | :: | lhs | Left hand side. |
||
class(integrand_object), | intent(in) | :: | rhs | Right hand side. |
Operator result.
Abstract type bound procedures necessary for implementing a concrete extension of integrand_object.
Time derivative function of integrand class, i.e. the residuals function.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(in) | :: | self | Integrand field. |
||
real(kind=R_P), | intent(in), | optional | :: | t | Time. |
Result of the time derivative function of integrand field.
Abstract type for building FOODIE ODE integrators.
generic, public :: add_fast => integrand_add_integrand_fast | Overloading |
procedure(assignment_integrand), public, pass(lhs) :: assign_integrand |
|
procedure(assignment_real), public, pass(lhs) :: assign_real |
|
generic, public :: assignment(=) => assign_integrand, assign_real | Overloading |
procedure(symmetric_operator), public, pass(lhs) :: integrand_add_integrand |
|
procedure, public, pass(opr) :: integrand_add_integrand_fast |
|
procedure(integrand_op_real), public, pass(lhs) :: integrand_add_real |
|
procedure(integrand_dimension_interface), public, pass(self) :: integrand_dimension | Return integrand dimension. |
procedure(symmetric_operator), public, pass(lhs) :: integrand_multiply_integrand |
|
procedure, public, pass(opr) :: integrand_multiply_integrand_fast |
|
procedure(integrand_op_real), public, pass(lhs) :: integrand_multiply_real |
|
procedure(integrand_op_real_scalar), public, pass(lhs) :: integrand_multiply_real_scalar |
|
procedure, public, pass(opr) :: integrand_multiply_real_scalar_fast |
|
procedure(symmetric_operator), public, pass(lhs) :: integrand_sub_integrand |
|
procedure(integrand_op_real), public, pass(lhs) :: integrand_sub_real |
|
procedure, public, pass(opr) :: integrand_subtract_integrand_fast |
|
procedure(local_error_operator), public, pass(lhs) :: local_error |
|
generic, public :: multiply_fast => integrand_multiply_integrand_fast, integrand_multiply_real_scalar_fast | Overloading |
generic, public :: operator(*) => integrand_multiply_integrand, integrand_multiply_real, real_multiply_integrand, integrand_multiply_real_scalar, real_scalar_multiply_integrand | Overloading |
generic, public :: operator(+) => integrand_add_integrand, integrand_add_real, real_add_integrand | Overloading |
generic, public :: operator(-) => integrand_sub_integrand, integrand_sub_real, real_sub_integrand | Overloading |
generic, public :: operator(.lterror.) => local_error | Estimate local truncation error. |
procedure(real_op_integrand), public, pass(rhs) :: real_add_integrand |
|
procedure(real_op_integrand), public, pass(rhs) :: real_multiply_integrand |
|
procedure(real_scalar_op_integrand), public, pass(rhs) :: real_scalar_multiply_integrand |
|
procedure(real_op_integrand), public, pass(rhs) :: real_sub_integrand |
|
generic, public :: subtract_fast => integrand_subtract_integrand_fast | Overloading |
procedure(time_derivative), public, pass(self) :: t | Time derivative, residuals. |
procedure, public, pass(self) :: t_fast | Time derivative, residuals, fast mode. |
+
fast operator.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(inout) | :: | opr | Operator result. |
||
class(integrand_object), | intent(in) | :: | lhs | Left hand side. |
||
class(integrand_object), | intent(in) | :: | rhs | Right hand side. |
*
fast operator.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(inout) | :: | opr | Operator result. |
||
class(integrand_object), | intent(in) | :: | lhs | Left hand side. |
||
class(integrand_object), | intent(in) | :: | rhs | Right hand side. |
* real_scalar
fast operator.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(inout) | :: | opr | Operator result. |
||
class(integrand_object), | intent(in) | :: | lhs | Left hand side. |
||
real(kind=R_P), | intent(in) | :: | rhs | Right hand side. |
-
fast operator.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(inout) | :: | opr | Operator result. |
||
class(integrand_object), | intent(in) | :: | lhs | Left hand side. |
||
class(integrand_object), | intent(in) | :: | rhs | Right hand side. |
Time derivative function of integrand class, i.e. the residuals function. Fast mode acting directly on self.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(integrand_object), | intent(inout) | :: | self | Integrand field. |
||
real(kind=R_P), | intent(in), | optional | :: | t | Time. |