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 |
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.
Returns the viscosity for the ice.
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
type, extends(abstract_viscosity), public :: glens_law_viscosity
!* Author: Christopher MacMackin
! Date: April 2017
!
! An implementation of Glen's flow law to describe glacier
! viscosity. It takes the form $$\eta = \frac{1}{2}BD^{1/n-1},$$
! where \(D = \sqrt{D_{ij}D_{ij}/2\) is the second invarient of
! the strain rate $$D_{ij} = \frac{1}{2}\left(\frac{\partial
! u_i}{\partial x_j} + \frac{\partial u_j}{\partial x_i}
! \right).$$ Here, \(B\) is treated as a constant, although it may
! be parameterised as a function of temperature.
!
private
real(r8) :: b_val = 1.0_r8
real(r8) :: index = 3._r8
contains
procedure :: ice_viscosity => glens_ice_viscosity
!! Returns the viscosity for the ice.
end type glens_law_viscosity