Provides a concrete implementation for the abstract_viscosity type using Glen's flow law.
Instantiates an instance of a viscosity object implementing Glen's flow law.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r8), | intent(in) | :: | b_val | The coefficient, , in Glen's flow law. |
||
real(kind=r8), | intent(in) | :: | index | The index, , in the exponent of Glen's flow law. |
The viscosity object being created.
An implementation of Glen's flow law to describe glacier viscosity. It takes the form where is the second invarient of the strain rate Here, is treated as a constant, although it may be parameterised as a function of temperature.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=r8), | private | :: | b_val | = | 1.0_r8 | ||
real(kind=r8), | private | :: | index | = | 3._r8 |
private pure function constructor(b_val, index) | Instantiates an instance of a viscosity object implementing Glen's flow law. |
procedure, public :: ice_viscosity => glens_ice_viscosity | Returns the viscosity for the ice. |
Instantiates an instance of a viscosity object implementing Glen's flow law.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r8), | intent(in) | :: | b_val | The coefficient, , in Glen's flow law. |
||
real(kind=r8), | intent(in) | :: | index | The index, , in the exponent of Glen's flow law. |
The viscosity object being created.
Calculates the viscosity of ice using Glen's flow law. See the documentation of the glens_law_viscosity object for a description of this parameterisation.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(glens_law_viscosity), | intent(in) | :: | this | |||
class(vector_field), | intent(in) | :: | velocity | The velocity field of the ice for which the velocity is being calculated |
||
real(kind=r8), | intent(in) | :: | temperature | The temperature of the ice for which viscosity is being calculated. |
||
real(kind=r8), | intent(in), | optional | :: | time | The time at which the viscosity is being calculated. If not present then assumed to be same as previous value passed. |
The value of the viscosity