SCALE-RM
Functions/Subroutines
scale_ocean_phy_albedo_nakajima00 Module Reference

module ocean / physics / surface albedo / nakajima00 More...

Functions/Subroutines

subroutine, public ocean_phy_albedo_nakajima00_setup
 
subroutine, public ocean_phy_albedo_nakajima00 (OIA, OIS, OIE, OJA, OJS, OJE, cosSZA, SFC_albedo)
 

Detailed Description

module ocean / physics / surface albedo / nakajima00

Description
Ocean surface albedo nakajima00 model
Reference
Nakajima, T., M. Tsukamoto, Y. Tsushima, A. Numaguti, and T. Kimura, 2000: Modeling of the radiative process in an atmospheric general circulation model, Applied Optics, 39, 4869-4878, doi:10.1364/AO.39.004869
Author
Team SCALE

Function/Subroutine Documentation

◆ ocean_phy_albedo_nakajima00_setup()

subroutine, public scale_ocean_phy_albedo_nakajima00::ocean_phy_albedo_nakajima00_setup ( )

Definition at line 49 of file scale_ocean_phy_albedo_nakajima00.F90.

Referenced by mod_ocean_driver::ocean_driver_setup().

49 
50  log_newline
51  log_info("OCEAN_PHY_ALBEDO_nakajima00_setup",*) 'Setup'
52 
53  return
Here is the caller graph for this function:

◆ ocean_phy_albedo_nakajima00()

subroutine, public scale_ocean_phy_albedo_nakajima00::ocean_phy_albedo_nakajima00 ( integer, intent(in)  OIA,
integer, intent(in)  OIS,
integer, intent(in)  OIE,
integer, intent(in)  OJA,
integer, intent(in)  OJS,
integer, intent(in)  OJE,
real(rp), dimension (oia,oja), intent(in)  cosSZA,
real(rp), dimension(oia,oja,n_rad_dir), intent(out)  SFC_albedo 
)

Definition at line 63 of file scale_ocean_phy_albedo_nakajima00.F90.

References scale_cpl_sfc_index::i_r_diffuse, and scale_cpl_sfc_index::i_r_direct.

Referenced by mod_ocean_driver::ocean_driver_calc_tendency().

64  implicit none
65 
66  integer, intent(in) :: oia, ois, oie
67  integer, intent(in) :: oja, ojs, oje
68  real(RP), intent(in) :: cossza (oia,oja) ! cos(solar zenith angle) (0-1)
69 ! real(RP), intent(in) :: tau (OIA,OJA) ! cloud optical thickness
70  real(RP), intent(out) :: sfc_albedo(oia,oja,n_rad_dir) ! sea surface albedo (short wave) (0-1)
71 
72  real(RP), parameter :: c_ocean_albedo(5,3) = reshape( &
73  (/ -2.8108_rp , -1.3651_rp, 2.9210e1_rp, -4.3907e1_rp, 1.8125e1_rp, &
74  6.5626e-1_rp, -8.7253_rp, -2.7749e1_rp, 4.9486e1_rp, -1.8345e1_rp, &
75  -6.5423e-1_rp, 9.9967_rp, 2.7769_rp , -1.7620e1_rp, 7.0838_rp /), &
76  (/ 5,3 /) )
77 
78  real(RP) :: am1
79 ! real(RP) :: tr1
80  real(RP) :: s
81 
82  integer :: i, j, n
83  !---------------------------------------------------------------------------
84 
85  !$omp parallel do private(am1,s)
86  do j = ojs, oje
87  do i = ois, oie
88  am1 = max( min( cossza(i,j), 0.961_rp ), 0.0349_rp )
89 ! tr1 = max( min( cosSZA(i,j) / ( 4.0_RP * tau(i,j) ), 1.0_RP ), 0.05_RP )
90 
91  s = 0.0_rp
92 !OCL UNROLL
93  do n = 1, 5
94  ! power of am1 is different form the paper, in which the number is wrong.
95 ! s = s + c_ocean_albedo(n,1) * tr1**(n-1) &
96 ! + c_ocean_albedo(n,2) * tr1**(n-1) * am1 &
97 ! + c_ocean_albedo(n,3) * tr1**(n-1) * am1**2
98  s = s + c_ocean_albedo(n,1) &
99  + c_ocean_albedo(n,2) * am1 &
100  + c_ocean_albedo(n,3) * am1**2
101  enddo
102 
103  sfc_albedo(i,j,i_r_direct ) = exp(s)
104  sfc_albedo(i,j,i_r_diffuse) = sfc_albedo(i,j,i_r_direct)
105  enddo
106  enddo
107 
108  return
module coupler / surface-atmospehre
integer, parameter, public n_rad_dir
integer, parameter, public i_r_direct
integer, parameter, public i_r_diffuse
Here is the caller graph for this function: