Constructs a boundary condition object for an ice shelf based on the conditions used in Dallaston et al. (2015), but with the ice flux at the grounding line varying in time.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r8), | intent(in), | optional | :: | thickness | The ice thickness at the inflowing ice shelf boundary, defaults to 1.0 |
|
real(kind=r8), | intent(in), | optional | :: | frequency | The angular frequency of the oscillations in ice flux, defaults to 0.5 |
|
real(kind=r8), | intent(in), | optional | :: | amplitude | The amplitude of the oscillations in ice flux, defaults to 1.0 |
|
real(kind=r8), | intent(in), | optional | :: | mean | The time-average of the discharge, about which it oscillates, defaulting to 1.0 |
|
real(kind=r8), | intent(in), | optional | :: | chi | The dimensionless ratio , defaults to 1.0 |
|
logical, | intent(in), | optional | :: | square | If present and true, produce a square wave. Otherwise produce a sinusoid. |
pure function constructor(thickness, frequency, amplitude, mean, chi, &
square) result(this)
!* Author: Chris MacMackin
! Date: October 2017
!
! Constructs a boundary condition object for an ice shelf based on
! the conditions used in Dallaston et al. (2015), but with the ice
! flux at the grounding line varying in time.
!
real(r8), intent(in), optional :: thickness
!! The ice thickness at the inflowing ice shelf boundary,
!! defaults to 1.0
real(r8), intent(in), optional :: frequency
!! The angular frequency of the oscillations in ice flux,
!! defaults to 0.5
real(r8), intent(in), optional :: amplitude
!! The amplitude of the oscillations in ice flux, defaults to
!! 1.0
real(r8), intent(in), optional :: mean
!! The time-average of the discharge, about which it oscillates,
!! defaulting to 1.0
real(r8), intent(in), optional :: chi
!! The dimensionless ratio \(\chi \equiv
!! \frac{\rho_igh_0x_x}{2\eta_0u_0}\), defaults to 1.0
logical, intent(in), optional :: square
!! If present and true, produce a square wave. Otherwise produce
!! a sinusoid.
type(seasonal_glacier_boundary) :: this
if (present(thickness)) this%thickness = thickness
if (present(frequency)) this%frequency = frequency
if (present(amplitude)) this%amplitude = amplitude
if (present(mean)) this%mean = mean
if (present(chi)) this%chi = chi
if (present(square)) this%square = square
end function constructor