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.

49 
50  log_newline
51  log_info("OCEAN_PHY_ALBEDO_nakajima00_setup",*) 'Setup'
52 
53  return

Referenced by mod_ocean_driver::ocean_driver_setup().

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.

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  !$acc data copyin(cosSZA) copyout(SFC_albedo)
85 
86  !$acc kernels
87  !$omp parallel do private(am1,s)
88  do j = ojs, oje
89  do i = ois, oie
90  am1 = max( min( cossza(i,j), 0.961_rp ), 0.0349_rp )
91 ! tr1 = max( min( cosSZA(i,j) / ( 4.0_RP * tau(i,j) ), 1.0_RP ), 0.05_RP )
92 
93  s = 0.0_rp
94 !OCL UNROLL
95  !$acc loop seq
96  do n = 1, 5
97  ! power of am1 is different form the paper, in which the number is wrong.
98 ! s = s + c_ocean_albedo(n,1) * tr1**(n-1) &
99 ! + c_ocean_albedo(n,2) * tr1**(n-1) * am1 &
100 ! + c_ocean_albedo(n,3) * tr1**(n-1) * am1**2
101  s = s + c_ocean_albedo(n,1) &
102  + c_ocean_albedo(n,2) * am1 &
103  + c_ocean_albedo(n,3) * am1**2
104  enddo
105 
106  sfc_albedo(i,j,i_r_direct ) = exp(s)
107  sfc_albedo(i,j,i_r_diffuse) = sfc_albedo(i,j,i_r_direct)
108  enddo
109  enddo
110  !$acc end kernels
111 
112  !$acc end data
113  return

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().

Here is the caller graph for this function:
scale_cpl_sfc_index::i_r_direct
integer, parameter, public i_r_direct
Definition: scale_cpl_sfc_index.F90:37
scale_cpl_sfc_index::i_r_diffuse
integer, parameter, public i_r_diffuse
Definition: scale_cpl_sfc_index.F90:38
scale_cpl_sfc_index
module coupler / surface-atmospehre
Definition: scale_cpl_sfc_index.F90:11