static_plume_solve Subroutine

private subroutine static_plume_solve(this, ice_thickness, ice_density, ice_temperature, time, success)

Would normally solve, but for this static implementation of the plume it does nothing.

Arguments

Type IntentOptional AttributesName
class(static_plume), intent(inout) :: this
class(scalar_field), intent(in) :: ice_thickness

Thickness of the ice above the basal surface

real(kind=r8), intent(in) :: ice_density

The density of the ice above the basal surface, assumed uniform

real(kind=r8), intent(in) :: ice_temperature

The temperature of the ice above the basal surface, assumed uniform

real(kind=r8), intent(in) :: time

The time to which the basal surface should be solved

logical, intent(out) :: success

True if the solver is successful, false otherwise


Contents

Source Code


Source Code

  subroutine static_plume_solve(this, ice_thickness, ice_density, ice_temperature, &
                         time, success)
    !* Author: Chris MacMackin
    !  Date: March 2017
    !
    ! Would normally solve, but for this static implementation of the
    ! plume it does nothing.
    !
    class(static_plume), intent(inout)     :: this
    class(scalar_field), intent(in) :: ice_thickness
      !! Thickness of the ice above the basal surface
    real(r8), intent(in)            :: ice_density
      !! The density of the ice above the basal surface, assumed uniform
    real(r8), intent(in)            :: ice_temperature
      !! The temperature of the ice above the basal surface, assumed uniform
    real(r8), intent(in)            :: time
      !! The time to which the basal surface should be solved
    logical, intent(out)            :: success
      !! True if the solver is successful, false otherwise
    call ice_thickness%guard_temp()
    this%time = time
    call this%melt_formulation%solve_for_melt(this%velocity, &
                                             -ice_thickness/this%r_val, &
                                             this%temperature, &
                                             this%salinity, &
                                             this%thickness, &
                                             time)      
    success = .true.
    call ice_thickness%clean_temp()
  end subroutine static_plume_solve