SCALE-RM
Data Types | Functions/Subroutines | Variables
scale_ocean_sfc Module Reference

module OCEAN / Surface fluxes More...

Functions/Subroutines

subroutine, public ocean_sfc_setup (OCEAN_TYPE)
 
subroutine, public ocean_sfc_simplealbedo (SFC_albedo_t, SFC_albedo, cosSZA, dt)
 

Variables

procedure(ocnsfc), pointer, public ocean_sfc => NULL()
 

Detailed Description

module OCEAN / Surface fluxes

Description
Ocean surface flux
Author
Team SCALE

Function/Subroutine Documentation

◆ ocean_sfc_setup()

subroutine, public scale_ocean_sfc::ocean_sfc_setup ( character(len=*), intent(in)  OCEAN_TYPE)

Definition at line 122 of file scale_ocean_sfc.F90.

References ocean_sfc, scale_ocean_sfc_const::ocean_sfc_const(), scale_ocean_sfc_const::ocean_sfc_const_setup(), scale_ocean_sfc_slab::ocean_sfc_slab(), scale_ocean_sfc_slab::ocean_sfc_slab_setup(), and scale_process::prc_mpistop().

Referenced by mod_ocean_phy_driver::ocean_phy_driver_setup().

122  use scale_process, only: &
124  use scale_ocean_sfc_const, only: &
127  use scale_ocean_sfc_slab, only: &
130  implicit none
131 
132  character(len=*), intent(in) :: OCEAN_TYPE
133  !---------------------------------------------------------------------------
134 
135  select case( ocean_type )
136  case( 'CONST' )
137  call ocean_sfc_const_setup( ocean_type )
139  case( 'SLAB', 'FILE' )
140  call ocean_sfc_slab_setup( ocean_type )
142  end select
143 
144  return
subroutine, public ocean_sfc_slab(SST_t, ZMFLX, XMFLX, YMFLX, SHFLX, LHFLX, WHFLX, U10, V10, T2, Q2, TMPA, PRSA, WA, UA, VA, RHOA, QVA, Z1, PBL, PRSS, LWD, SWD, TW, SST, ALB_LW, ALB_SW, Z0M, Z0H, Z0E, dt)
subroutine, public prc_mpistop
Abort MPI.
procedure(ocnsfc), pointer, public ocean_sfc
module OCEAN / Surface flux with slab ocean model
module OCEAN / Surface flux with constant ocean model
subroutine, public ocean_sfc_const_setup(OCEAN_TYPE)
Setup.
module PROCESS
subroutine, public ocean_sfc_slab_setup(OCEAN_TYPE)
Setup.
subroutine, public ocean_sfc_const(SST_t, ZMFLX, XMFLX, YMFLX, SHFLX, LHFLX, WHFLX, U10, V10, T2, Q2, TMPA, PRSA, WA, UA, VA, RHOA, QVA, Z1, PBL, PRSS, LWD, SWD, TW, SST, ALB_LW, ALB_SW, Z0M, Z0H, Z0E, dt)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ocean_sfc_simplealbedo()

subroutine, public scale_ocean_sfc::ocean_sfc_simplealbedo ( real(rp), dimension(ia,ja,2), intent(out)  SFC_albedo_t,
real(rp), dimension (ia,ja,2), intent(in)  SFC_albedo,
real(rp), dimension (ia,ja), intent(in)  cosSZA,
real(dp), intent(in)  dt 
)

Definition at line 153 of file scale_ocean_sfc.F90.

References scale_const::const_i_lw, scale_const::const_i_sw, scale_grid_index::ie, scale_grid_index::is, scale_grid_index::je, and scale_grid_index::js.

Referenced by mod_ocean_phy_driver::ocean_phy_driver().

153  use scale_grid_index
154  use scale_const, only: &
155  i_sw => const_i_sw, &
156  i_lw => const_i_lw
157  implicit none
158 
159  ! arguments
160  real(RP), intent(out) :: SFC_albedo_t(IA,JA,2) ! tendency of sea surface albedo (0-1)
161  real(RP), intent(in) :: SFC_albedo (IA,JA,2) ! sea surface (0-1)
162  real(RP), intent(in) :: cosSZA (IA,JA) ! cos(solar zenith angle) (0-1)
163  real(DP), intent(in) :: dt ! delta time
164 
165  ! works
166  real(RP) :: SFC_albedo1(IA,JA,2)
167  real(RP) :: am1
168 
169  real(RP), parameter :: c_ocean_albedo(3) = (/ -0.747900_rp, &
170  -4.677039_rp, &
171  1.583171_rp /)
172 
173  integer :: i, j
174  !---------------------------------------------------------------------------
175 
176  do j = js, je
177  do i = is, ie
178  am1 = max( min( cossza(i,j), 0.961_rp ), 0.0349_rp )
179 
180  ! SFC_albedo1(i,j,I_LW) = 0.5_RP do nothing
181  sfc_albedo1(i,j,i_sw) = exp( ( c_ocean_albedo(3)*am1 + c_ocean_albedo(2) )*am1 + c_ocean_albedo(1) )
182  enddo
183  enddo
184 
185  ! calculate tendency
186  do j = js, je
187  do i = is, ie
188  sfc_albedo_t(i,j,i_lw) = 0.0_rp
189  sfc_albedo_t(i,j,i_sw) = ( sfc_albedo1(i,j,i_sw) - sfc_albedo(i,j,i_sw) ) / dt
190  enddo
191  enddo
192 
193  return
module grid index
module CONSTANT
Definition: scale_const.F90:14
Here is the caller graph for this function:

Variable Documentation

◆ ocean_sfc

procedure(ocnsfc), pointer, public scale_ocean_sfc::ocean_sfc => NULL()

Definition at line 101 of file scale_ocean_sfc.F90.

Referenced by mod_ocean_phy_driver::ocean_phy_driver(), and ocean_sfc_setup().

101  procedure(ocnsfc), pointer :: OCEAN_SFC => null()