Calculates the freezing point of sea water from T, S and P.
Definition at line 98 of file MOM_EOS.F90.
|
| subroutine | calculate_tfreeze_scalar (S, pressure, T_fr, EOS, pres_scale) |
| | Calls the appropriate subroutine to calculate the freezing point for scalar inputs. More...
|
| |
| subroutine | calculate_tfreeze_array (S, pressure, T_fr, start, npts, EOS, pres_scale) |
| | Calls the appropriate subroutine to calculate the freezing point for a 1-D array. More...
|
| |
Calculates the freezing point of sea water from T, S and P.
Definition at line 98 of file MOM_EOS.F90.
◆ calculate_tfreeze_array()
| subroutine mom_eos::calculate_tfreeze::calculate_tfreeze_array |
( |
real, dimension(:), intent(in) |
S, |
|
|
real, dimension(:), intent(in) |
pressure, |
|
|
real, dimension(:), intent(inout) |
T_fr, |
|
|
integer, intent(in) |
start, |
|
|
integer, intent(in) |
npts, |
|
|
type(eos_type), pointer |
EOS, |
|
|
real, intent(in), optional |
pres_scale |
|
) |
| |
|
private |
Calls the appropriate subroutine to calculate the freezing point for a 1-D array.
- Parameters
-
| [in] | s | Salinity [ppt] |
| [in] | pressure | Pressure [Pa] or [other] |
| [in,out] | t_fr | Freezing point potential temperature referenced to the surface [degC] |
| [in] | start | Starting index within the array |
| [in] | npts | The number of values to calculate |
| eos | Equation of state structure |
| [in] | pres_scale | A multiplicative factor to convert pressure into Pa. |
Definition at line 656 of file MOM_EOS.F90.
656 real,
dimension(:),
intent(in) :: S
657 real,
dimension(:),
intent(in) :: pressure
658 real,
dimension(:),
intent(inout) :: T_fr
660 integer,
intent(in) :: start
661 integer,
intent(in) :: npts
662 type(EOS_type),
pointer :: EOS
663 real,
optional,
intent(in) :: pres_scale
666 real,
dimension(size(pressure)) :: pres
670 if (.not.
associated(eos))
call mom_error(fatal, &
671 "calculate_TFreeze_scalar called with an unassociated EOS_type EOS.")
673 p_scale = 1.0 ;
if (
present(pres_scale)) p_scale = pres_scale
675 if (p_scale == 1.0)
then
676 select case (eos%form_of_TFreeze)
677 case (tfreeze_linear)
678 call calculate_tfreeze_linear(s, pressure, t_fr, start, npts, &
679 eos%TFr_S0_P0, eos%dTFr_dS, eos%dTFr_dp)
680 case (tfreeze_millero)
681 call calculate_tfreeze_millero(s, pressure, t_fr, start, npts)
682 case (tfreeze_teos10)
683 call calculate_tfreeze_teos10(s, pressure, t_fr, start, npts)
685 call mom_error(fatal,
"calculate_TFreeze_scalar: form_of_TFreeze is not valid.")
688 do j=start,start+npts-1 ; pres(j) = p_scale * pressure(j) ;
enddo
689 select case (eos%form_of_TFreeze)
690 case (tfreeze_linear)
691 call calculate_tfreeze_linear(s, pres, t_fr, start, npts, &
692 eos%TFr_S0_P0, eos%dTFr_dS, eos%dTFr_dp)
693 case (tfreeze_millero)
694 call calculate_tfreeze_millero(s, pres, t_fr, start, npts)
695 case (tfreeze_teos10)
696 call calculate_tfreeze_teos10(s, pres, t_fr, start, npts)
698 call mom_error(fatal,
"calculate_TFreeze_scalar: form_of_TFreeze is not valid.")
◆ calculate_tfreeze_scalar()
| subroutine mom_eos::calculate_tfreeze::calculate_tfreeze_scalar |
( |
real, intent(in) |
S, |
|
|
real, intent(in) |
pressure, |
|
|
real, intent(out) |
T_fr, |
|
|
type(eos_type), pointer |
EOS, |
|
|
real, intent(in), optional |
pres_scale |
|
) |
| |
|
private |
Calls the appropriate subroutine to calculate the freezing point for scalar inputs.
- Parameters
-
| [in] | s | Salinity [ppt] |
| [in] | pressure | Pressure [Pa] or [other] |
| [out] | t_fr | Freezing point potential temperature referenced to the surface [degC] |
| eos | Equation of state structure |
| [in] | pres_scale | A multiplicative factor to convert pressure into Pa |
Definition at line 625 of file MOM_EOS.F90.
625 real,
intent(in) :: S
626 real,
intent(in) :: pressure
627 real,
intent(out) :: T_fr
629 type(EOS_type),
pointer :: EOS
630 real,
optional,
intent(in) :: pres_scale
635 if (.not.
associated(eos))
call mom_error(fatal, &
636 "calculate_TFreeze_scalar called with an unassociated EOS_type EOS.")
638 p_scale = 1.0 ;
if (
present(pres_scale)) p_scale = pres_scale
640 select case (eos%form_of_TFreeze)
641 case (tfreeze_linear)
642 call calculate_tfreeze_linear(s, p_scale*pressure, t_fr, eos%TFr_S0_P0, &
643 eos%dTFr_dS, eos%dTFr_dp)
644 case (tfreeze_millero)
645 call calculate_tfreeze_millero(s, p_scale*pressure, t_fr)
646 case (tfreeze_teos10)
647 call calculate_tfreeze_teos10(s, p_scale*pressure, t_fr)
649 call mom_error(fatal,
"calculate_TFreeze_scalar: form_of_TFreeze is not valid.")
The documentation for this interface was generated from the following file:
- /home/cermak/src/MOM6.devrob/src/equation_of_state/MOM_EOS.F90