Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | parameter | :: | SELF_EQUATION_LENGTH | = | 500 | |
integer, | public, | parameter | :: | SELF_EULER | = | 100 | |
integer, | public, | parameter | :: | SELF_FORMULATION_LENGTH | = | 30 | |
integer, | public, | parameter | :: | SELF_INTEGRATOR_LENGTH | = | 10 | |
integer, | public, | parameter | :: | SELF_RK2 | = | 200 | |
integer, | public, | parameter | :: | SELF_RK3 | = | 300 | |
integer, | public, | parameter | :: | SELF_RK4 | = | 400 | |
real(kind=prec), | public, | parameter | :: | rk2_a(1:2) | = | (/0.0_prec, -0.5_prec/) | |
real(kind=prec), | public, | parameter | :: | rk2_b(1:2) | = | (/0.5_prec, 0.5_prec/) | |
real(kind=prec), | public, | parameter | :: | rk2_g(1:2) | = | (/0.5_prec, 1.0_prec/) | |
real(kind=prec), | public, | parameter | :: | rk3_a(1:3) | = | (/0.0_prec, -5.0_prec/9.0_prec, -153.0_prec/128.0_prec/) | |
real(kind=prec), | public, | parameter | :: | rk3_b(1:3) | = | (/0.0_prec, 1.0_prec/3.0_prec, 3.0_prec/4.0_prec/) | |
real(kind=prec), | public, | parameter | :: | rk3_g(1:3) | = | (/1.0_prec/3.0_prec, 15.0_prec/16.0_prec, 8.0_prec/15.0_prec/) | |
real(kind=prec), | public, | parameter | :: | rk4_a(1:5) | = | (/0.0_prec, -1.0_prec, -1.0_prec/3.0_prec+2.0_prec**(2.0_prec/3.0_prec)/6.0_prec, -2.0_prec**(1.0_prec/3.0_prec)-2.0_prec**(2.0_prec/3.0_prec)-2.0_prec, -1.0_prec+2.0_prec**(1.0_prec/3.0_prec)/) | |
real(kind=prec), | public, | parameter | :: | rk4_b(1:5) | = | (/0.0_prec, 2.0_prec/3.0_prec+2.0_prec**(1.0_prec/3.0_prec)/3.0_prec+2.0_prec**(2.0_prec/3.0_prec)/6.0_prec, 2.0_prec/3.0_prec+2.0_prec**(1.0_prec/3.0_prec)/3.0_prec+2.0_prec**(2.0_prec/3.0_prec)/6.0_prec, 1.0_prec/3.0_prec-2.0_prec**(1.0_prec/3.0_prec)/3.0_prec-2.0_prec**(2.0_prec/3.0_prec)/6.0_prec, 1.0_prec/) | |
real(kind=prec), | public, | parameter | :: | rk4_g(1:5) | = | (/2.0_prec/3.0_prec+2.0_prec**(1.0_prec/3.0_prec)/3.0_prec+2.0_prec**(2.0_prec/3.0_prec)/6.0_prec, -2.0_prec**(2.0_prec/3.0_prec)/6.0_prec+1.0_prec/6.0_prec, -1.0_prec/3.0_prec-2.0_prec*2.0_prec**(1.0_prec/3.0_prec)/3.0_prec-2.0_prec**(2.0_prec/3.0_prec)/3.0_prec, 1.0_prec/3.0_prec-2.0_prec**(1.0_prec/3.0_prec)/3.0_prec-2.0_prec**(2.0_prec/3.0_prec)/6.0_prec, 1.0_prec/3.0_prec+2.0_prec**(1.0_prec/3.0_prec)/6.0_prec+2.0_prec**(2.0_prec/3.0_prec)/12.0_prec/) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
character, | intent(in) | :: | filename |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
real(kind=prec), | intent(in) | :: | tn |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
integer, | intent(in) | :: | m |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
real(kind=prec), | intent(in), | optional | :: | dt |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
character, | intent(in), | optional | :: | filename |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
character, | intent(in), | optional | :: | filename |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=prec), | public | :: | dt | ||||
real(kind=prec), | public | :: | entropy | ||||
logical, | public | :: | gradient_enabled | = | .false. | ||
integer, | public | :: | ioIterate | = | 0 | ||
integer, | public | :: | nvar | ||||
logical, | public | :: | prescribed_bcs_enabled | = | .true. | ||
real(kind=prec), | public | :: | t | ||||
logical, | public | :: | tecplot_enabled | = | .true. | ||
procedure(SELF_timeIntegrator), | public, | pointer | :: | timeIntegrator | => | Euler_timeIntegrator |
procedure, public :: AdditionalFree => AdditionalFree_Model | |
procedure, public :: AdditionalInit => AdditionalInit_Model | |
procedure, public :: AdditionalOutput => AdditionalOutput_Model | |
procedure, public :: CalculateEntropy => CalculateEntropy_Model | |
procedure(CalculateTendency), public :: CalculateTendency | |
procedure, public :: Euler_timeIntegrator | |
procedure, public :: ForwardStep => ForwardStep_Model | |
procedure, public :: GetSimulationTime | |
procedure, public :: IncrementIOCounter | |
procedure, public :: LowStorageRK2_timeIntegrator | |
procedure, public :: LowStorageRK3_timeIntegrator | |
procedure, public :: LowStorageRK4_timeIntegrator | |
procedure, public :: PreTendency => PreTendency_Model | |
procedure, public :: PrintType => PrintType_Model | |
procedure(ReadModel), public :: ReadModel | |
procedure, public :: ReportEntropy => ReportEntropy_Model | |
procedure, public :: ReportMetrics => ReportMetrics_Model | |
procedure, public :: ReportUserMetrics => ReportUserMetrics_Model | |
procedure, public :: SetNumberOfVariables => SetNumberOfVariables_Model | |
procedure, public :: SetSimulationTime | |
generic, public :: SetTimeIntegrator => SetTimeIntegrator_withChar | |
procedure, private :: SetTimeIntegrator_withChar | |
procedure(UpdateGRK), public :: UpdateGRK2 | |
procedure(UpdateGRK), public :: UpdateGRK3 | |
procedure(UpdateGRK), public :: UpdateGRK4 | |
procedure(UpdateSolution), public :: UpdateSolution | |
procedure(WriteModel), public :: WriteModel | |
procedure(WriteTecplot), public :: WriteTecplot | |
procedure, public :: entropy_func => entropy_func_Model | |
procedure, public :: flux1D => flux1d_Model | |
procedure, public :: flux2D => flux2d_Model | |
procedure, public :: flux3D => flux3d_Model | |
procedure, public :: hbc1d_NoNormalFlow => hbc1d_Generic_Model | |
procedure, public :: hbc1d_Prescribed => hbc1d_Prescribed_Model | |
procedure, public :: hbc1d_Radiation => hbc1d_Generic_Model | |
procedure, public :: hbc2d_NoNormalFlow => hbc2d_Generic_Model | |
procedure, public :: hbc2d_Prescribed => hbc2d_Prescribed_Model | |
procedure, public :: hbc2d_Radiation => hbc2d_Generic_Model | |
procedure, public :: hbc3d_NoNormalFlow => hbc3d_Generic_Model | |
procedure, public :: hbc3d_Prescribed => hbc3d_Prescribed_Model | |
procedure, public :: hbc3d_Radiation => hbc3d_Generic_Model | |
procedure, public :: pbc1d_NoNormalFlow => pbc1d_Generic_Model | |
procedure, public :: pbc1d_Prescribed => pbc1d_Prescribed_Model | |
procedure, public :: pbc1d_Radiation => pbc1d_Generic_Model | |
procedure, public :: pbc2d_NoNormalFlow => pbc2d_Generic_Model | |
procedure, public :: pbc2d_Prescribed => pbc2d_Prescribed_Model | |
procedure, public :: pbc2d_Radiation => pbc2d_Generic_Model | |
procedure, public :: pbc3d_NoNormalFlow => pbc3d_Generic_Model | |
procedure, public :: pbc3d_Prescribed => pbc3d_Prescribed_Model | |
procedure, public :: pbc3d_Radiation => pbc3d_Generic_Model | |
procedure, public :: riemannflux1d => riemannflux1d_Model | |
procedure, public :: riemannflux2d => riemannflux2d_Model | |
procedure, public :: riemannflux3d => riemannflux3d_Model | |
procedure, public :: source1d => source1d_Model | |
procedure, public :: source2d => source2d_Model | |
procedure, public :: source3d => source3d_Model |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar,1:2) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar,1:3) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | nhat |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | x | |||
real(kind=prec), | intent(in) | :: | t |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | nhat(1:2) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | x(1:2) | |||
real(kind=prec), | intent(in) | :: | t |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | nhat(1:3) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | x(1:3) | |||
real(kind=prec), | intent(in) | :: | t |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | nhat |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | x | |||
real(kind=prec), | intent(in) | :: | t |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar,1:2) | |||
real(kind=prec), | intent(in) | :: | nhat(1:2) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | x(1:2) | |||
real(kind=prec), | intent(in) | :: | t |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar,1:3) | |||
real(kind=prec), | intent(in) | :: | nhat(1:3) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | x(1:3) | |||
real(kind=prec), | intent(in) | :: | t |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | sL(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | sR(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | nhat |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | sL(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | sR(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar,1:2) | |||
real(kind=prec), | intent(in) | :: | nhat(1:2) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | sL(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | sR(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar,1:3) | |||
real(kind=prec), | intent(in) | :: | nhat(1:3) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar,1:2) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(in) | :: | s(1:this%nvar) | |||
real(kind=prec), | intent(in) | :: | dsdx(1:this%nvar,1:3) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
integer(kind=HID_T), | intent(in) | :: | fileid |
Base method for calculating entropy of a model When this method is not overridden, the entropy is simply set to 0.0. When you develop a model built on top of this abstract class or one of its children, it is recommended that you define a convex mathematical entropy function that is used as a measure of the model stability.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
real(kind=prec), | intent(in) | :: | tn |
Forward steps the model using the associated tendency procedure and time integrator
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
real(kind=prec), | intent(in) | :: | tn | |||
real(kind=prec), | intent(in) | :: | dt | |||
real(kind=prec), | intent(in) | :: | ioInterval |
Returns the current simulation time stored in the model % t attribute
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this | |||
real(kind=prec), | intent(out) | :: | t |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
real(kind=prec), | intent(in) | :: | tn |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
real(kind=prec), | intent(in) | :: | tn |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
real(kind=prec), | intent(in) | :: | tn |
PreTendency is a template routine that is used to house any additional calculations that you want to execute at the beginning of the tendency calculation routine. This default PreTendency simply returns back to the caller without executing any instructions
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this |
Base method for reporting the entropy of a model to stdout. Only override this procedure if additional reporting is needed. Alternatively, if you think additional reporting would be valuable for all models, open a pull request with modifications to this base method.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(in) | :: | this |
Method that can be overridden by users to report their own custom metrics after file io
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this |
Method that can be overridden by users to report their own custom metrics after file io
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this |
Sets the model % t attribute with the provided simulation time
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
real(kind=prec), | intent(in) | :: | t |
Sets the time integrator method, using a character input
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(Model), | intent(inout) | :: | this | |||
character, | intent(in) | :: | integrator |