SCALE-RM
scale_ocean_phy_tc.F90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
10 !-------------------------------------------------------------------------------
11 #include "scalelib.h"
13  !-----------------------------------------------------------------------------
14  !
15  !++ used modules
16  !
17  use scale_precision
18  use scale_io
19  use scale_prof
20  !-----------------------------------------------------------------------------
21  implicit none
22  private
23  !-----------------------------------------------------------------------------
24  !
25  !++ Public procedure
26  !
28  public :: ocean_phy_tc_seaice
29 
30  !-----------------------------------------------------------------------------
31  !
32  !++ Public parameters & variables
33  !
34  !-----------------------------------------------------------------------------
35  !
36  !++ Private procedure
37  !
38  !-----------------------------------------------------------------------------
39  !
40  !++ Private parameters & variables
41  !
42  real(RP), public :: ocean_phy_thermalcond_max = 10.0_rp ! maximum thermal conductivity / depth [J/m2/s/K]
43  real(RP), public :: ocean_phy_thermalcond_seaice = 2.0_rp ! thermal conductivity of sea ice [J/m/s/K]
44 
45  !-----------------------------------------------------------------------------
46 contains
47  !-----------------------------------------------------------------------------
48  subroutine ocean_phy_tc_seaice_setup
49  use scale_prc, only: &
50  prc_abort
51  implicit none
52 
53  namelist / param_ocean_phy_tc_seaice / &
56 
57  integer :: ierr
58  !---------------------------------------------------------------------------
59 
60  log_newline
61  log_info("OCEAN_PHY_TC_seaice_setup",*) 'Setup'
62 
63  !--- read namelist
64  rewind(io_fid_conf)
65  read(io_fid_conf,nml=param_ocean_phy_tc_seaice,iostat=ierr)
66  if( ierr < 0 ) then !--- missing
67  log_info("OCEAN_PHY_TC_seaice_setup",*) 'Not found namelist. Default used.'
68  elseif( ierr > 0 ) then !--- fatal error
69  log_error("OCEAN_PHY_TC_seaice_setup",*) 'Not appropriate names in namelist PARAM_OCEAN_PHY_TC_seaice. Check!'
70  call prc_abort
71  endif
72  log_nml(param_ocean_phy_tc_seaice)
73 
74  return
75  end subroutine ocean_phy_tc_seaice_setup
76 
77  !-----------------------------------------------------------------------------
78  subroutine ocean_phy_tc_seaice( &
79  OIA, OIS, OIE, &
80  OJA, OJS, OJE, &
81  ICE_MASS, &
82  ICE_FRAC, &
83  TC_dz )
84  use scale_const, only: &
85  eps => const_eps
86  use scale_ocean_phy_ice_simple, only: &
88  implicit none
89 
90  integer, intent(in) :: OIA, OIS, OIE
91  integer, intent(in) :: OJA, OJS, OJE
92  real(RP), intent(in) :: ICE_MASS(oia,oja) ! sea ice amount [kg/m2]
93  real(RP), intent(in) :: ICE_FRAC(oia,oja) ! sea ice area fraction [1]
94  real(RP), intent(out) :: TC_dz (oia,oja) ! thermal conductivity / depth [J/m2/s/K]
95 
96  real(RP) :: ice_depth
97  integer :: i, j
98  !---------------------------------------------------------------------------
99 
100  do j = ojs, oje
101  do i = ois, oie
102  ice_depth = ice_mass(i,j) / ocean_phy_ice_density / max(ice_frac(i,j),eps)
103 
104  tc_dz(i,j) = ocean_phy_thermalcond_seaice / max(ice_depth*0.5_rp,eps) ! at the middle point of the layer
105 
106  tc_dz(i,j) = min( tc_dz(i,j), ocean_phy_thermalcond_max )
107  enddo
108  enddo
109 
110  return
111  end subroutine ocean_phy_tc_seaice
112 
113 end module scale_ocean_phy_tc
module ocean / physics / surface thermal conductivity
integer, public io_fid_conf
Config file ID.
Definition: scale_io.F90:55
module PROCESS
Definition: scale_prc.F90:11
subroutine, public prc_abort
Abort Process.
Definition: scale_prc.F90:338
module CONSTANT
Definition: scale_const.F90:11
real(rp), public ocean_phy_thermalcond_seaice
subroutine, public ocean_phy_tc_seaice_setup
module profiler
Definition: scale_prof.F90:11
real(rp), public const_eps
small number
Definition: scale_const.F90:33
module ocean / physics / ice / simple
module PRECISION
module STDIO
Definition: scale_io.F90:10
subroutine, public ocean_phy_tc_seaice(OIA, OIS, OIE, OJA, OJS, OJE, ICE_MASS, ICE_FRAC, TC_dz)
real(rp), public ocean_phy_thermalcond_max