SCALE-RM
Functions/Subroutines
mod_ocean_driver Module Reference

module OCEAN driver More...

Functions/Subroutines

subroutine, public ocean_driver_setup
 Setup. More...
 
subroutine, public ocean_driver_calc_tendency (force)
 Calculate tendency. More...
 
subroutine, public ocean_driver_update
 Ocean step. More...
 
subroutine, public ocean_surface_get
 Get surface boundary from other model. More...
 
subroutine, public ocean_surface_set (countup)
 Put surface boundary to other model. More...
 

Detailed Description

module OCEAN driver

Description
Ocean model driver
Author
Team SCALE
NAMELIST
  • No namelist group
History Output
namedescriptionunitvariable
OCEAN_ICE_Q2 Specific humidity at 2m on sea ice surface kg/kg Q2
OCEAN_ICE_T2 Air temperature at 2m on sea ice surface K T2
OCEAN_ICE_U10 Wind velocity u at 10 m on sea ice surface m/s U10
OCEAN_ICE_V10 Wind velocity v at 10 m on sea ice surface m/s V10
OCEAN_OCN_Q2 Specific humidity at 2m on open ocean surface kg/kg OCEAN_Q2
OCEAN_OCN_T2 Air temperature at 2m on open ocean surface K OCEAN_T2
OCEAN_OCN_U10 Wind velocity u at 10 m on open ocean surface m/s OCEAN_U10
OCEAN_OCN_V10 Wind velocity v at 10 m on open ocean surface m/s OCEAN_V10

Function/Subroutine Documentation

◆ ocean_driver_setup()

subroutine, public mod_ocean_driver::ocean_driver_setup

Setup.

Definition at line 57 of file mod_ocean_driver.F90.

57  use scale_prc, only: &
58  prc_abort
59  use scale_const, only: &
60  huge => const_huge
61  use mod_ocean_admin, only: &
62  ocean_do, &
68  use scale_cpl_phy_sfc_fixed_temp, only: &
70  use scale_atmos_hydrometeor, only: &
72  use scale_ocean_dyn_slab, only: &
74  use scale_ocean_dyn_offline, only: &
76  use scale_ocean_phy_ice_simple, only: &
78  use scale_ocean_phy_albedo, only: &
83  use scale_ocean_phy_roughness, only: &
90  use scale_ocean_phy_tc, only: &
92  use scale_ocean_grid_cartesc, only: &
94  implicit none
95  !---------------------------------------------------------------------------
96 
97  log_newline
98  log_info("OCEAN_driver_setup",*) 'Setup'
99 
100  if ( ocean_do ) then
101 
102  select case ( ocean_dyn_type )
103  case ( 'SLAB' )
104  call ocean_dyn_slab_setup( cdz(oks) )
105  case ( 'OFFLINE' )
107  case ( 'INIT' )
108  ! do nothing
109  case default
110  log_error("OCEAN_driver_setup",*) 'OCEAN_DYN_TYPE is invalid: ', trim(ocean_dyn_type)
111  call prc_abort
112  end select
113 
114  select case ( ocean_sfc_type )
115  case ( 'FIXED-TEMP' )
117  case default
118  log_error("OCEAN_driver_setup",*) 'OCEAN_SFC_TYPE is invalid: ', trim(ocean_sfc_type)
119  call prc_abort
120  end select
121 
122  select case ( ocean_ice_type )
123  case ( 'NONE' )
124  case ( 'SIMPLE' )
126  case ( 'INIT' )
127  case default
128  log_error("OCEAN_driver_setup",*) 'OCEAN_ICE_TYPE is invalid: ', trim(ocean_ice_type)
129  call prc_abort
130  end select
131 
132  ! surface albedo
133  select case ( ocean_alb_type )
134  case ( 'NAKAJIMA00' )
138  case ( 'CONST' )
140  case ( 'INIT' )
141  ! do nothing
142  case default
143  log_error("OCEAN_driver_setup",*) 'OCEAN_ALB_TYPE is invalid: ', trim(ocean_alb_type)
144  call prc_abort
145  end select
146 
147  ! surface roughness length
148  select case ( ocean_rgn_type )
149  case ( 'MILLER92' )
152  case ( 'MOON07' )
155  case ( 'CONST' )
157  case ( 'INIT' )
158  ! do nothing
159  case default
160  log_error("OCEAN_driver_setup",*) 'OCEAN_RGN_TYPE is invalid: ', trim(ocean_rgn_type)
161  call prc_abort
162  end select
163 
164  ! thermal conductivity
166 
167  allocate( wstr(oia,oja) )
168  allocate( qvef(oia,oja) )
169  allocate( sr(oia,oja) )
170  allocate( atmos_w(oia,oja) )
171  wstr(:,:) = huge
172  if ( atmos_hydrometeor_dry ) then
173  qvef(:,:) = 0.0_rp
174  else
175  qvef(:,:) = 1.0_rp
176  end if
177  sr(:,:) = 0.0_rp
178  atmos_w(:,:) = 0.0_rp ! slope of the sea surface is zero
179 
180  endif
181 
182  return

References scale_atmos_hydrometeor::atmos_hydrometeor_dry, scale_const::const_huge, scale_cpl_phy_sfc_fixed_temp::cpl_phy_sfc_fixed_temp_setup(), mod_ocean_admin::ocean_alb_type, mod_ocean_admin::ocean_do, scale_ocean_dyn_offline::ocean_dyn_offline_setup(), scale_ocean_dyn_slab::ocean_dyn_slab_setup(), mod_ocean_admin::ocean_dyn_type, scale_ocean_grid_cartesc::ocean_grid_cartesc_cdz, mod_ocean_admin::ocean_ice_type, scale_ocean_phy_albedo::ocean_phy_albedo_const_setup(), scale_ocean_phy_albedo_nakajima00::ocean_phy_albedo_nakajima00_setup(), scale_ocean_phy_albedo::ocean_phy_albedo_seaice_setup(), scale_ocean_phy_ice_simple::ocean_phy_ice_setup(), scale_ocean_phy_roughness::ocean_phy_roughness_const_setup(), scale_ocean_phy_roughness_miller92::ocean_phy_roughness_miller92_setup(), scale_ocean_phy_roughness_moon07::ocean_phy_roughness_moon07_setup(), scale_ocean_phy_roughness::ocean_phy_roughness_seaice_setup(), scale_ocean_phy_tc::ocean_phy_tc_seaice_setup(), mod_ocean_admin::ocean_rgn_type, mod_ocean_admin::ocean_sfc_type, scale_ocean_grid_cartesc_index::oia, scale_ocean_grid_cartesc_index::oja, scale_ocean_grid_cartesc_index::oks, and scale_prc::prc_abort().

Referenced by mod_rm_driver::rm_driver().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ocean_driver_calc_tendency()

subroutine, public mod_ocean_driver::ocean_driver_calc_tendency ( logical, intent(in)  force)

Calculate tendency.

Definition at line 188 of file mod_ocean_driver.F90.

188  use scale_const, only: &
189  eps => const_eps
190  use scale_time, only: &
191  dt => time_dtsec_ocean
192  use scale_statistics, only: &
194  statistics_total
195  use scale_landuse, only: &
196  exists_ocean => landuse_exists_ocean
197  use scale_atmos_grid_cartesc_real, only: &
198  real_z1 => atmos_grid_cartesc_real_z1
199  use scale_atmos_hydrometeor, only: &
200  hydrometeor_lhv => atmos_hydrometeor_lhv, &
201  hydrometeor_lhs => atmos_hydrometeor_lhs, &
203  cv_water, &
204  cv_ice, &
205  lhf, &
206  i_qv
207  use scale_ocean_grid_cartesc_real, only: &
212  use scale_ocean_grid_cartesc_real, only: &
215  use scale_cpl_phy_sfc_fixed_temp, only: &
217  use scale_ocean_phy_albedo, only: &
222  use scale_ocean_phy_roughness, only: &
229  use scale_ocean_phy_tc, only: &
231  use scale_ocean_phy_ice_simple, only: &
233  use scale_bulkflux, only: &
234  bulkflux_diagnose_scales
235  use mod_atmos_admin, only: &
237  use mod_atmos_phy_ch_driver, only: &
239  use mod_ocean_admin, only: &
240  ocean_sfc_type, &
241  ocean_ice_type, &
242  ocean_alb_type, &
244  use mod_ocean_vars, only: &
245  ice_flag, &
246  ocean_temp, &
247  ocean_ocn_z0m, &
248  ocean_ice_temp, &
249  ocean_ice_mass, &
250  ocean_sfc_temp, &
252  ocean_sfc_z0m, &
253  ocean_sfc_z0h, &
254  ocean_sfc_z0e, &
255  ocean_temp_t, &
256  ocean_salt_t, &
257  ocean_uvel_t, &
258  ocean_vvel_t, &
261  atmos_temp, &
262  atmos_pres, &
263  atmos_u, &
264  atmos_v, &
265  atmos_dens, &
266  atmos_qv, &
267  atmos_pbl, &
268  atmos_cossza, &
269  atmos_sfc_dens, &
270  atmos_sfc_pres, &
273  atmos_sflx_engi, &
274  ocean_sflx_mw, &
275  ocean_sflx_mu, &
276  ocean_sflx_mv, &
277  ocean_sflx_sh, &
278  ocean_sflx_lh, &
279  ocean_sflx_qtrc, &
280  ocean_u10, &
281  ocean_v10, &
282  ocean_t2, &
283  ocean_q2, &
284  ocean_ustar, &
285  ocean_tstar, &
286  ocean_qstar, &
287  ocean_wstar, &
288  ocean_rlmo, &
289  ocean_ocn_ustar, &
290  ocean_ocn_tstar, &
291  ocean_ocn_qstar, &
292  ocean_ocn_wstar, &
293  ocean_ocn_rlmo, &
294  ocean_ice_ustar, &
295  ocean_ice_tstar, &
296  ocean_ice_qstar, &
297  ocean_ice_wstar, &
298  ocean_ice_rlmo, &
299  ocean_sflx_gh, &
301  ocean_sflx_engi, &
302  ocean_oflx_gh, &
304  ocean_oflx_engi, &
306  use scale_file_history, only: &
307  file_history_in
308  implicit none
309 
310  logical, intent(in) :: force
311 
312  real(RP) :: LHV (OIA,OJA)
313  real(RP) :: LHS (OIA,OJA)
314  real(RP) :: ATMOS_Uabs (OIA,OJA)
315  real(RP) :: sfc_temp (OIA,OJA)
316  real(RP) :: sfc_albedo (OIA,OJA,N_RAD_DIR,N_RAD_RGN)
317  real(RP) :: sfc_Z0M (OIA,OJA)
318  real(RP) :: sfc_Z0H (OIA,OJA)
319  real(RP) :: sfc_Z0E (OIA,OJA)
320  real(RP) :: subsfc_temp (OIA,OJA)
321  real(RP) :: TC_dz (OIA,OJA)
322  real(RP) :: sflx_MW (OIA,OJA)
323  real(RP) :: sflx_MU (OIA,OJA)
324  real(RP) :: sflx_MV (OIA,OJA)
325  real(RP) :: sflx_SH (OIA,OJA)
326  real(RP) :: sflx_LH (OIA,OJA)
327  real(RP) :: sflx_QV (OIA,OJA)
328  real(RP) :: OCEAN_SFLX_QV(OIA,OJA)
329  real(RP) :: U10 (OIA,OJA)
330  real(RP) :: V10 (OIA,OJA)
331  real(RP) :: T2 (OIA,OJA)
332  real(RP) :: Q2 (OIA,OJA)
333  real(RP) :: sflx_hbalance(OIA,OJA)
334  real(RP) :: sflx_GH (OIA,OJA)
335  real(RP) :: sflx_water (OIA,OJA)
336  real(RP) :: sflx_engi (OIA,OJA)
337  real(RP) :: ice_mass (OIA,OJA)
338  logical :: exists_ice (OIA,OJA)
339  real(RP) :: sw
340 
341  real(RP) :: sfc_frac
342 
343  integer :: k, i, j, iq, idir, irgn
344  !---------------------------------------------------------------------------
345 
346  call prof_rapstart('OCN_CalcTend', 1)
347 
348  !########## Get Surface Boundary from coupler ##########
349  call ocean_surface_get
350 
351  !$omp parallel do
352  do j = ojs, oje
353  do i = ois, oie
354  atmos_uabs(i,j) = sqrt( atmos_u(i,j)**2 + atmos_v(i,j)**2 )
355  enddo
356  enddo
357 
358  !$omp parallel do
359  do j = ojs, oje
360  do i = ois, oie
361  exists_ice(i,j) = .false.
362  if( exists_ocean(i,j) .AND. ocean_ice_frac(i,j) > 0.0_rp ) exists_ice(i,j) = .true.
363  enddo
364  enddo
365 
366  !########## reset tendencies ##########
367 
368  !$omp parallel do
369  do j = ojs, oje
370  do i = ois, oie
371  do k = oks, oke
372  ocean_temp_t(k,i,j) = 0.0_rp
373  ocean_salt_t(k,i,j) = 0.0_rp
374  ocean_uvel_t(k,i,j) = 0.0_rp
375  ocean_vvel_t(k,i,j) = 0.0_rp
376  enddo
377  enddo
378  enddo
379 
380  do iq = 1, qa
381  !$omp parallel do
382  do j = ojs, oje
383  do i = ois, oie
384  ocean_sflx_qtrc(i,j,iq) = 0.0_rp
385  enddo
386  enddo
387  enddo
388 
389  if ( ice_flag ) then
390  !$omp parallel do
391  do j = ojs, oje
392  do i = ois, oie
393  ocean_ice_temp_t(i,j) = 0.0_rp
394  ocean_ice_mass_t(i,j) = 0.0_rp
395  enddo
396  enddo
397  end if
398 
399 
400 
401  !########## surface process (ice-free ocean) ##########
402 
403  !$omp parallel do
404  do j = ojs, oje
405  do i = ois, oie
406  ocean_sfc_temp(i,j) = ocean_temp(oks,i,j)
407  enddo
408  enddo
409 
410  ! albedo
411  select case ( ocean_alb_type )
412  case ( 'NAKAJIMA00' )
413  ! for Near-IR, IR
414  call ocean_phy_albedo_const ( oia, ois, oie, & ! [IN]
415  oja, ojs, oje, & ! [IN]
416  sfc_albedo(:,:,:,:) ) ! [OUT]
417  ! for VIS (overwrite)
418  call ocean_phy_albedo_nakajima00( oia, ois, oie, & ! [IN]
419  oja, ojs, oje, & ! [IN]
420  atmos_cossza(:,:), & ! [IN]
421  sfc_albedo(:,:,:,i_r_vis) ) ! [OUT]
422  case ( 'CONST' )
423  call ocean_phy_albedo_const ( oia, ois, oie, & ! [IN]
424  oja, ojs, oje, & ! [IN]
425  sfc_albedo(:,:,:,:) ) ! [OUT]
426  case ( 'INIT' )
427  ! Never update OCEAN_SFC_albedo from initial condition
428  do irgn = i_r_ir, i_r_vis
429  do idir = i_r_direct, i_r_diffuse
430  do j = ojs, oje
431  do i = ois, oie
432  if ( exists_ocean(i,j) ) then
433  sfc_albedo(i,j,idir,irgn) = ocean_sfc_albedo(i,j,idir,irgn)
434  end if
435  enddo
436  enddo
437  enddo
438  enddo
439  end select
440 
441  ! roughness length
442  select case ( ocean_rgn_type )
443  case ( 'MILLER92' )
444  call ocean_phy_roughness_miller92( oia, ois, oie, & ! [IN]
445  oja, ojs, oje, & ! [IN]
446  atmos_uabs(:,:), & ! [IN]
447  ocean_ocn_z0m(:,:), & ! [OUT]
448  ocean_sfc_z0h(:,:), & ! [OUT]
449  ocean_sfc_z0e(:,:) ) ! [OUT]
450  case ( 'MOON07' )
451  call ocean_phy_roughness_moon07 ( oia, ois, oie, & ! [IN]
452  oja, ojs, oje, & ! [IN]
453  atmos_uabs(:,:), & ! [IN]
454  real_z1(:,:), & ! [IN]
455  exists_ocean(:,:), & ! [IN]
456  ocean_ocn_z0m(:,:), & ! [INOUT]
457  ocean_sfc_z0h(:,:), & ! [OUT]
458  ocean_sfc_z0e(:,:) ) ! [OUT]
459  case ( 'CONST' )
460  call ocean_phy_roughness_const ( oia, ois, oie, & ! [IN]
461  oja, ojs, oje, & ! [IN]
462  ocean_ocn_z0m(:,:), & ! [OUT]
463  ocean_sfc_z0h(:,:), & ! [OUT]
464  ocean_sfc_z0e(:,:) ) ! [OUT]
465  case ( 'INIT' )
466  ! Never update from initial condition
467  end select
468 
469  ! tendency
470  select case ( ocean_sfc_type )
471  case ( 'FIXED-TEMP' )
472 
473  call hydrometeor_lhv( oia, ois, oie, oja, ojs, oje, & ! [IN]
474  ocean_sfc_temp(:,:), & ! [IN]
475  lhv(:,:) ) ! [OUT]
476 
477  call cpl_phy_sfc_fixed_temp( oia, ois, oie, & ! [IN]
478  oja, ojs, oje, & ! [IN]
479  atmos_temp(:,:), & ! [IN]
480  atmos_pres(:,:), & ! [IN]
481  atmos_w(:,:), & ! [IN]
482  atmos_u(:,:), & ! [IN]
483  atmos_v(:,:), & ! [IN]
484  atmos_dens(:,:), & ! [IN]
485  atmos_qv(:,:), & ! [IN]
486  lhv(:,:), & ! [IN]
487  real_z1(:,:), & ! [IN]
488  atmos_pbl(:,:), & ! [IN]
489  atmos_sfc_dens(:,:), & ! [IN]
490  atmos_sfc_pres(:,:), & ! [IN]
491  atmos_sflx_rad_dn(:,:,:,:), & ! [IN]
492  ocean_sfc_temp(:,:), & ! [IN]
493  wstr(:,:), & ! [IN]
494  qvef(:,:), & ! [IN]
495  sfc_albedo(:,:,:,:), & ! [IN]
496  sr(:,:), & ! [IN]
497  ocean_ocn_z0m(:,:), & ! [IN]
498  ocean_sfc_z0h(:,:), & ! [IN]
499  ocean_sfc_z0e(:,:), & ! [IN]
500  exists_ocean(:,:), & ! [IN]
501  dt, & ! [IN]
502  ocean_sflx_mw(:,:), & ! [OUT]
503  ocean_sflx_mu(:,:), & ! [OUT]
504  ocean_sflx_mv(:,:), & ! [OUT]
505  ocean_sflx_sh(:,:), & ! [OUT]
506  ocean_sflx_lh(:,:), & ! [OUT]
507  ocean_sflx_qv(:,:), & ! [OUT]
508  ocean_sflx_gh(:,:), & ! [OUT]
509  ocean_ocn_ustar(:,:), & ! [OUT]
510  ocean_ocn_tstar(:,:), & ! [OUT]
511  ocean_ocn_qstar(:,:), & ! [OUT]
512  ocean_ocn_wstar(:,:), & ! [OUT]
513  ocean_ocn_rlmo(:,:), & ! [OUT]
514  ocean_u10(:,:), & ! [OUT]
515  ocean_v10(:,:), & ! [OUT]
516  ocean_t2(:,:), & ! [OUT]
517  ocean_q2(:,:) ) ! [OUT]
518  end select
519 
520  !$omp parallel do
521  do j = ojs, oje
522  do i = ois, oie
523  if ( exists_ocean(i,j) ) then
524  ocean_sflx_water(i,j) = atmos_sflx_water(i,j) - ocean_sflx_qv(i,j)
525  ocean_sflx_engi(i,j) = atmos_sflx_engi(i,j) & ! internal energy of precipitation
526  - ocean_sflx_qv(i,j) * cv_water * ocean_sfc_temp(i,j) ! internal energy of evaporation water
527  end if
528  enddo
529  enddo
530 
531  ! weighted average
532 
533  if ( ice_flag ) then
534 
535  ! history (open ocean)
536  call file_history_in( ocean_u10(:,:), 'OCEAN_OCN_U10', 'Wind velocity u at 10 m on open ocean surface', 'm/s' )
537  call file_history_in( ocean_v10(:,:), 'OCEAN_OCN_V10', 'Wind velocity v at 10 m on open ocean surface', 'm/s' )
538  call file_history_in( ocean_t2(:,:), 'OCEAN_OCN_T2', 'Air temperature at 2m on open ocean surface', 'K' )
539  call file_history_in( ocean_q2(:,:), 'OCEAN_OCN_Q2', 'Specific humidity at 2m on open ocean surface', 'kg/kg' )
540 
541  !$omp parallel do &
542  !$omp private(sfc_frac)
543  do j = ojs, oje
544  do i = ois, oie
545  if ( exists_ocean(i,j) ) then
546  sfc_frac = 1.0_rp - ocean_ice_frac(i,j)
547 
548  ocean_sfc_temp(i,j) = ocean_sfc_temp(i,j) * sfc_frac
549  ocean_sfc_z0m(i,j) = ocean_ocn_z0m(i,j) * sfc_frac
550  ocean_sfc_z0h(i,j) = ocean_sfc_z0h(i,j) * sfc_frac
551  ocean_sfc_z0e(i,j) = ocean_sfc_z0e(i,j) * sfc_frac
552  ocean_sflx_mw(i,j) = ocean_sflx_mw(i,j) * sfc_frac
553  ocean_sflx_mu(i,j) = ocean_sflx_mu(i,j) * sfc_frac
554  ocean_sflx_mv(i,j) = ocean_sflx_mv(i,j) * sfc_frac
555  ocean_sflx_sh(i,j) = ocean_sflx_sh(i,j) * sfc_frac
556  ocean_sflx_lh(i,j) = ocean_sflx_lh(i,j) * sfc_frac
557  ocean_sflx_qv(i,j) = ocean_sflx_qv(i,j) * sfc_frac
558  ocean_u10(i,j) = ocean_u10(i,j) * sfc_frac
559  ocean_v10(i,j) = ocean_v10(i,j) * sfc_frac
560  ocean_t2(i,j) = ocean_t2(i,j) * sfc_frac
561  ocean_q2(i,j) = ocean_q2(i,j) * sfc_frac
562 
563  ocean_sflx_gh(i,j) = ocean_sflx_gh(i,j) * sfc_frac
564  ocean_sflx_water(i,j) = ocean_sflx_water(i,j) * sfc_frac
565  ocean_sflx_engi(i,j) = ocean_sflx_engi(i,j) * sfc_frac
566 
567  do irgn = i_r_ir, i_r_vis
568  do idir = i_r_direct, i_r_diffuse
569  ocean_sfc_albedo(i,j,idir,irgn) = sfc_albedo(i,j,idir,irgn) * sfc_frac
570  enddo
571  enddo
572  end if
573  enddo
574  enddo
575 
576  end if
577 
578 
579  !########## surface process (ice) ##########
580 
581  if ( ice_flag ) then
582 
583  !$omp parallel do
584  do j = ojs, oje
585  do i = ois, oie
586  subsfc_temp(i,j) = ocean_temp(oks,i,j)
587  enddo
588  enddo
589 
590  ! albedo
591  select case ( ocean_alb_type )
592  case ( 'NAKAJIMA00' )
593  call ocean_phy_albedo_seaice( oia, ois, oie, & ! [IN]
594  oja, ojs, oje, & ! [IN]
595  sfc_albedo(:,:,:,:) ) ! [OUT]
596  case ( 'CONST' )
597  call ocean_phy_albedo_const ( oia, ois, oie, & ! [IN]
598  oja, ojs, oje, & ! [IN]
599  sfc_albedo(:,:,:,:) ) ! [OUT]
600  case ( 'INIT' )
601  ! Never update OCEAN_SFC_albedo from initial condition
602  do irgn = i_r_ir, i_r_vis
603  do idir = i_r_direct, i_r_diffuse
604  do j = ojs, oje
605  do i = ois, oie
606  sfc_albedo(i,j,idir,irgn) = ocean_sfc_albedo(i,j,idir,irgn)
607  enddo
608  enddo
609  enddo
610  enddo
611  end select
612 
613  ! roughness length
614  select case ( ocean_rgn_type )
615  case ( 'MILLER92', 'MOON07' )
616  call ocean_phy_roughness_seaice( oia, ois, oie, & ! [IN]
617  oja, ojs, oje, & ! [IN]
618  sfc_z0m(:,:), & ! [OUT]
619  sfc_z0h(:,:), & ! [OUT]
620  sfc_z0e(:,:) ) ! [OUT]
621  case ( 'CONST' )
622  call ocean_phy_roughness_const ( oia, ois, oie, & ! [IN]
623  oja, ojs, oje, & ! [IN]
624  sfc_z0m(:,:), & ! [OUT]
625  sfc_z0h(:,:), & ! [OUT]
626  sfc_z0e(:,:) ) ! [OUT]
627  case ( 'INIT' )
628  ! Never update OCEAN_SFC_Z0M/H/E from initial condition
629  !$omp parallel do
630  do j = ojs, oje
631  do i = ois, oie
632  sfc_z0m(i,j) = ocean_sfc_z0m(i,j)
633  sfc_z0h(i,j) = ocean_sfc_z0h(i,j)
634  sfc_z0e(i,j) = ocean_sfc_z0e(i,j)
635  enddo
636  enddo
637  end select
638 
639  ! thermal conductivity / depth
640  call ocean_phy_tc_seaice( oia, ois, oie, & ! [IN]
641  oja, ojs, oje, & ! [IN]
642  ocean_ice_mass(:,:), & ! [IN]
643  ocean_ice_frac(:,:), & ! [IN]
644  exists_ice(:,:), & ! [IN]
645  tc_dz(:,:) ) ! [OUT]
646 
647  ! tendency
648  select case ( ocean_sfc_type )
649  case ( 'FIXED-TEMP' )
650  !$omp parallel do private(sw)
651  do j = ojs, oje
652  do i = ois, oie
653  if ( exists_ocean(i,j) ) then
654  sw = 0.5_rp + sign(0.5_rp, ocean_ice_frac(i,j)-eps)
655  ice_mass(i,j) = ocean_ice_mass(i,j) * sw / ( ocean_ice_frac(i,j) + 1.0_rp - sw )
656  end if
657  end do
658  end do
659 
660  call hydrometeor_lhs( oia, ois, oie, oja, ojs, oje, & ! [IN]
661  ocean_ice_temp(:,:), & ! [IN]
662  lhs(:,:) ) ! [OUT]
663 
664  call cpl_phy_sfc_fixed_temp( oia, ois, oie, & ! [IN]
665  oja, ojs, oje, & ! [IN]
666  atmos_temp(:,:), & ! [IN]
667  atmos_pres(:,:), & ! [IN]
668  atmos_w(:,:), & ! [IN]
669  atmos_u(:,:), & ! [IN]
670  atmos_v(:,:), & ! [IN]
671  atmos_dens(:,:), & ! [IN]
672  atmos_qv(:,:), & ! [IN]
673  lhs(:,:), & ! [IN]
674  real_z1(:,:), & ! [IN]
675  atmos_pbl(:,:), & ! [IN]
676  atmos_sfc_dens(:,:), & ! [IN]
677  atmos_sfc_pres(:,:), & ! [IN]
678  atmos_sflx_rad_dn(:,:,:,:), & ! [IN]
679  ocean_ice_temp(:,:), & ! [IN]
680  ice_mass(:,:), & ! [IN]
681  qvef(:,:), & ! [IN]
682  sfc_albedo(:,:,:,:), & ! [IN]
683  sr(:,:), & ! [IN]
684  sfc_z0m(:,:), & ! [IN]
685  sfc_z0h(:,:), & ! [IN]
686  sfc_z0e(:,:), & ! [IN]
687  exists_ice(:,:), & ! [IN]
688  dt, & ! [IN]
689  sflx_mw(:,:), & ! [OUT]
690  sflx_mu(:,:), & ! [OUT]
691  sflx_mv(:,:), & ! [OUT]
692  sflx_sh(:,:), & ! [OUT]
693  sflx_lh(:,:), & ! [OUT]
694  sflx_qv(:,:), & ! [OUT]
695  sflx_gh(:,:), & ! [OUT]
696  ocean_ice_ustar(:,:), & ! [OUT]
697  ocean_ice_tstar(:,:), & ! [OUT]
698  ocean_ice_qstar(:,:), & ! [OUT]
699  ocean_ice_wstar(:,:), & ! [OUT]
700  ocean_ice_rlmo(:,:), & ! [OUT]
701  u10(:,:), & ! [OUT]
702  v10(:,:), & ! [OUT]
703  t2(:,:), & ! [OUT]
704  q2(:,:) ) ! [OUT]
705  end select
706 
707  !$omp parallel do
708  do j = ojs, oje
709  do i = ois, oie
710  if ( exists_ocean(i,j) ) then
711  sflx_water(i,j) = atmos_sflx_water(i,j) - sflx_qv(i,j)
712  sflx_engi(i,j) = atmos_sflx_engi(i,j) & ! internal energy of precipitation
713  - sflx_qv(i,j) * ( cv_ice * ocean_ice_temp(i,j) - lhf ) ! internal energy of evaporation water
714  end if
715  enddo
716  enddo
717 
718  ! weighted average
719  !$omp parallel do
720  do j = ojs, oje
721  do i = ois, oie
722  if ( exists_ocean(i,j) ) then
724  ocean_sfc_z0m(i,j) = ocean_sfc_z0m(i,j) + sfc_z0m(i,j) * ocean_ice_frac(i,j)
725  ocean_sfc_z0h(i,j) = ocean_sfc_z0h(i,j) + sfc_z0h(i,j) * ocean_ice_frac(i,j)
726  ocean_sfc_z0e(i,j) = ocean_sfc_z0e(i,j) + sfc_z0e(i,j) * ocean_ice_frac(i,j)
727  ocean_sflx_mw(i,j) = ocean_sflx_mw(i,j) + sflx_mw(i,j) * ocean_ice_frac(i,j)
728  ocean_sflx_mu(i,j) = ocean_sflx_mu(i,j) + sflx_mu(i,j) * ocean_ice_frac(i,j)
729  ocean_sflx_mv(i,j) = ocean_sflx_mv(i,j) + sflx_mv(i,j) * ocean_ice_frac(i,j)
730  ocean_sflx_sh(i,j) = ocean_sflx_sh(i,j) + sflx_sh(i,j) * ocean_ice_frac(i,j)
731  ocean_sflx_qv(i,j) = ocean_sflx_qv(i,j) + sflx_qv(i,j) * ocean_ice_frac(i,j)
732  ocean_sflx_lh(i,j) = ocean_sflx_lh(i,j) + sflx_lh(i,j) * ocean_ice_frac(i,j)
733  ocean_u10(i,j) = ocean_u10(i,j) + u10(i,j) * ocean_ice_frac(i,j)
734  ocean_v10(i,j) = ocean_v10(i,j) + v10(i,j) * ocean_ice_frac(i,j)
735  ocean_t2(i,j) = ocean_t2(i,j) + t2(i,j) * ocean_ice_frac(i,j)
736  ocean_q2(i,j) = ocean_q2(i,j) + q2(i,j) * ocean_ice_frac(i,j)
737 
738  ocean_oflx_gh(i,j) = ocean_sflx_gh(i,j)
740  ocean_oflx_engi(i,j) = ocean_sflx_engi(i,j)
741 
742  ocean_sflx_gh(i,j) = ocean_sflx_gh(i,j) + sflx_gh(i,j) * ocean_ice_frac(i,j)
743  ocean_sflx_water(i,j) = ocean_sflx_water(i,j) + sflx_water(i,j) * ocean_ice_frac(i,j)
744  ocean_sflx_engi(i,j) = ocean_sflx_engi(i,j) + sflx_engi(i,j) * ocean_ice_frac(i,j)
745  end if
746  end do
747  end do
748 
749  !$omp parallel do
750  do irgn = i_r_ir, i_r_vis
751  do idir = i_r_direct, i_r_diffuse
752  do j = ojs, oje
753  do i = ois, oie
754  if ( exists_ocean(i,j) ) then
755  ocean_sfc_albedo(i,j,idir,irgn) = ocean_sfc_albedo(i,j,idir,irgn) + sfc_albedo(i,j,idir,irgn) * ocean_ice_frac(i,j)
756  end if
757  enddo
758  enddo
759  enddo
760  enddo
761 
762 
763  ! seaice
764  select case ( ocean_ice_type )
765  case ( 'SIMPLE' )
766 
767  !$omp parallel do
768  do j = ojs, oje
769  do i = ois, oie
770  if ( exists_ocean(i,j) ) then
771  sflx_hbalance(i,j) = sflx_gh(i,j) + sflx_engi(i,j)
772  end if
773  enddo
774  enddo
775 
776  call ocean_phy_ice_simple( oia, ois, oie, & ! [IN]
777  oja, ojs, oje, & ! [IN]
778  sflx_water(:,:), & ! [IN]
779  sflx_hbalance(:,:), & ! [IN]
780  subsfc_temp(:,:), & ! [IN]
781  tc_dz(:,:), & ! [IN]
782  ocean_ice_temp(:,:), & ! [IN]
783  ocean_ice_mass(:,:), & ! [IN]
784  ocean_ice_frac(:,:), & ! [IN]
785  exists_ice(:,:), & ! [IN]
786  dt, & ! [IN]
787  ocean_ice_temp_t(:,:), & ! [OUT]
788  ocean_ice_mass_t(:,:), & ! [OUT]
789  sflx_gh(:,:), & ! [OUT]
790  sflx_water(:,:), & ! [OUT]
791  sflx_engi(:,:) ) ! [OUT]
792  case ( 'INIT' )
793  !$omp parallel do
794  do j = ojs, oje
795  do i = ois, oie
796  if ( exists_ocean(i,j) ) then
797  sflx_gh(i,j) = sflx_gh(i,j) * ocean_ice_frac(i,j)
798  sflx_water(i,j) = 0.0_rp ! no flux from seaice to ocean
799  sflx_engi(i,j) = 0.0_rp ! no flux from seaice to ocean
800  end if
801  enddo
802  enddo
803  end select
804 
805  ! history (sea ice)
806  call file_history_in( u10(:,:), 'OCEAN_ICE_U10', 'Wind velocity u at 10 m on sea ice surface', 'm/s' )
807  call file_history_in( v10(:,:), 'OCEAN_ICE_V10', 'Wind velocity v at 10 m on sea ice surface', 'm/s' )
808  call file_history_in( t2(:,:), 'OCEAN_ICE_T2', 'Air temperature at 2m on sea ice surface', 'K' )
809  call file_history_in( q2(:,:), 'OCEAN_ICE_Q2', 'Specific humidity at 2m on sea ice surface', 'kg/kg' )
810 
811  ! weighted average
812  !$omp parallel do
813  do j = ojs, oje
814  do i = ois, oie
815  if ( exists_ocean(i,j) ) then
816  ocean_oflx_gh(i,j) = ocean_oflx_gh(i,j) + sflx_gh(i,j)
817  ocean_oflx_water(i,j) = ocean_oflx_water(i,j) + sflx_water(i,j)
818  ocean_oflx_engi(i,j) = ocean_oflx_engi(i,j) + sflx_engi(i,j)
819  end if
820  enddo
821  enddo
822 
823  call bulkflux_diagnose_scales( oia, ois, oie, oja, ojs, oje, &
824  ocean_sflx_mw(:,:), ocean_sflx_mu(:,:), ocean_sflx_mv(:,:), & ! [IN]
825  ocean_sflx_sh(:,:), ocean_sflx_qv(:,:), & ! [IN]
826  atmos_sfc_dens(:,:), ocean_sfc_temp(:,:), atmos_pbl(:,:), & ! [IN]
827  ocean_ustar(:,:), ocean_tstar(:,:), ocean_qstar(:,:), & ! [OUT]
828  ocean_wstar(:,:), ocean_rlmo(:,:), & ! [OUT]
829  mask = exists_ocean(:,:) ) ! [IN]
830 
831 
832 
833 
834  endif ! ICE process?
835 
836  if ( .NOT. atmos_hydrometeor_dry ) then
837  !$omp parallel do
838  do j = ojs, oje
839  do i = ois, oie
840  if ( exists_ocean(i,j) ) then
841  ocean_sflx_qtrc(i,j,i_qv) = ocean_sflx_qv(i,j)
842  end if
843  enddo
844  enddo
845  endif
846 
847 
848  ! Surface flux for chemical tracers
849  if ( atmos_sw_phy_ch ) then
850  call atmos_phy_ch_driver_ocean_flux( ocean_sflx_qtrc(:,:,:) ) ! [INOUT]
851  endif
852 
853  if ( statistics_checktotal ) then
854  call statistics_total( oka, oks, oke, oia, ois, oie, oja, ojs, oje, &
855  ocean_temp_t(:,:,:), 'OCEAN_TEMP_t', &
856  ocean_grid_cartesc_real_vol(:,:,:), &
857  ocean_grid_cartesc_real_totvol )
858  if ( ice_flag ) then
859  call statistics_total( oia, ois, oie, oja, ojs, oje, &
860  ocean_ice_temp_t(:,:), 'OCEAN_ICE_TEMP_t', &
863  call statistics_total( oia, ois, oie, oja, ojs, oje, &
864  ocean_ice_mass_t(:,:), 'OCEAN_ICE_MASS_t', &
867  end if
868  endif
869 
870  call prof_rapend ('OCN_CalcTend', 1)
871 
872  !########## Set Surface Boundary to coupler ##########
873  call ocean_surface_set( countup=.true. )
874 
875  return

References mod_ocean_vars::atmos_cossza, mod_ocean_vars::atmos_dens, scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_z1, scale_atmos_hydrometeor::atmos_hydrometeor_dry, mod_ocean_vars::atmos_pbl, mod_atmos_phy_ch_driver::atmos_phy_ch_driver_ocean_flux(), mod_ocean_vars::atmos_pres, mod_ocean_vars::atmos_qv, mod_ocean_vars::atmos_sfc_dens, mod_ocean_vars::atmos_sfc_pres, mod_ocean_vars::atmos_sflx_engi, mod_ocean_vars::atmos_sflx_rad_dn, mod_ocean_vars::atmos_sflx_water, mod_atmos_admin::atmos_sw_phy_ch, mod_ocean_vars::atmos_temp, mod_ocean_vars::atmos_u, mod_ocean_vars::atmos_v, scale_const::const_eps, scale_cpl_phy_sfc_fixed_temp::cpl_phy_sfc_fixed_temp(), scale_atmos_hydrometeor::cv_ice, scale_atmos_hydrometeor::cv_water, scale_atmos_hydrometeor::i_qv, scale_cpl_sfc_index::i_r_diffuse, scale_cpl_sfc_index::i_r_direct, scale_cpl_sfc_index::i_r_ir, scale_cpl_sfc_index::i_r_vis, mod_ocean_vars::ice_flag, scale_tracer::k, scale_landuse::landuse_exists_ocean, scale_atmos_hydrometeor::lhf, mod_ocean_admin::ocean_alb_type, scale_ocean_grid_cartesc_real::ocean_grid_cartesc_real_area, scale_ocean_grid_cartesc_real::ocean_grid_cartesc_real_totarea, scale_ocean_grid_cartesc_real::ocean_grid_cartesc_real_totvol, scale_ocean_grid_cartesc_real::ocean_grid_cartesc_real_vol, mod_ocean_vars::ocean_ice_frac, mod_ocean_vars::ocean_ice_mass, mod_ocean_vars::ocean_ice_mass_t, mod_ocean_vars::ocean_ice_qstar, mod_ocean_vars::ocean_ice_rlmo, mod_ocean_vars::ocean_ice_temp, mod_ocean_vars::ocean_ice_temp_t, mod_ocean_vars::ocean_ice_tstar, mod_ocean_admin::ocean_ice_type, mod_ocean_vars::ocean_ice_ustar, mod_ocean_vars::ocean_ice_wstar, mod_ocean_vars::ocean_ocn_qstar, mod_ocean_vars::ocean_ocn_rlmo, mod_ocean_vars::ocean_ocn_tstar, mod_ocean_vars::ocean_ocn_ustar, mod_ocean_vars::ocean_ocn_wstar, mod_ocean_vars::ocean_ocn_z0m, mod_ocean_vars::ocean_oflx_engi, mod_ocean_vars::ocean_oflx_gh, mod_ocean_vars::ocean_oflx_water, scale_ocean_phy_albedo::ocean_phy_albedo_const(), scale_ocean_phy_albedo_nakajima00::ocean_phy_albedo_nakajima00(), scale_ocean_phy_albedo::ocean_phy_albedo_seaice(), scale_ocean_phy_ice_simple::ocean_phy_ice_simple(), scale_ocean_phy_roughness::ocean_phy_roughness_const(), scale_ocean_phy_roughness_miller92::ocean_phy_roughness_miller92(), scale_ocean_phy_roughness_moon07::ocean_phy_roughness_moon07(), scale_ocean_phy_roughness::ocean_phy_roughness_seaice(), scale_ocean_phy_tc::ocean_phy_tc_seaice(), mod_ocean_vars::ocean_q2, mod_ocean_vars::ocean_qstar, mod_ocean_admin::ocean_rgn_type, mod_ocean_vars::ocean_rlmo, mod_ocean_vars::ocean_salt_t, mod_ocean_vars::ocean_sfc_albedo, mod_ocean_vars::ocean_sfc_temp, mod_ocean_admin::ocean_sfc_type, mod_ocean_vars::ocean_sfc_z0e, mod_ocean_vars::ocean_sfc_z0h, mod_ocean_vars::ocean_sfc_z0m, mod_ocean_vars::ocean_sflx_engi, mod_ocean_vars::ocean_sflx_gh, mod_ocean_vars::ocean_sflx_lh, mod_ocean_vars::ocean_sflx_mu, mod_ocean_vars::ocean_sflx_mv, mod_ocean_vars::ocean_sflx_mw, mod_ocean_vars::ocean_sflx_qtrc, mod_ocean_vars::ocean_sflx_sh, mod_ocean_vars::ocean_sflx_water, ocean_surface_get(), ocean_surface_set(), mod_ocean_vars::ocean_t2, mod_ocean_vars::ocean_temp, mod_ocean_vars::ocean_temp_t, mod_ocean_vars::ocean_tstar, mod_ocean_vars::ocean_u10, mod_ocean_vars::ocean_ustar, mod_ocean_vars::ocean_uvel_t, mod_ocean_vars::ocean_v10, mod_ocean_vars::ocean_vvel_t, mod_ocean_vars::ocean_wstar, scale_ocean_grid_cartesc_index::oia, scale_ocean_grid_cartesc_index::oie, scale_ocean_grid_cartesc_index::ois, scale_ocean_grid_cartesc_index::oja, scale_ocean_grid_cartesc_index::oje, scale_ocean_grid_cartesc_index::ojs, scale_ocean_grid_cartesc_index::oka, scale_ocean_grid_cartesc_index::oke, scale_ocean_grid_cartesc_index::oks, scale_prof::prof_rapend(), scale_prof::prof_rapstart(), scale_tracer::qa, scale_statistics::statistics_checktotal, and scale_time::time_dtsec_ocean.

Referenced by mod_rm_driver::restart_read(), and mod_rm_driver::rm_driver().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ocean_driver_update()

subroutine, public mod_ocean_driver::ocean_driver_update

Ocean step.

Definition at line 881 of file mod_ocean_driver.F90.

881  use scale_time, only: &
882  nowdaysec => time_nowdaysec, &
883  dt => time_dtsec_ocean
884  use scale_landuse, only: &
885  exists_ocean => landuse_exists_ocean
886  use mod_ocean_admin, only: &
887  ocean_dyn_type, &
889  use mod_ocean_vars, only: &
890  ocean_temp, &
891  ocean_salt, &
892  ocean_uvel, &
893  ocean_vvel, &
894  ocean_ice_temp, &
895  ocean_ice_mass, &
896  ocean_ice_frac, &
897  ocean_temp_t, &
898  ocean_salt_t, &
899  ocean_uvel_t, &
900  ocean_vvel_t, &
903  ocean_oflx_gh, &
905  ocean_oflx_engi, &
906  ocean_mass_supl, &
907  ocean_engi_supl, &
909  use scale_ocean_dyn_slab, only: &
911  use scale_ocean_dyn_offline, only: &
913  use scale_ocean_phy_ice_simple, only: &
916  use scale_ocean_grid_cartesc, only: &
918  implicit none
919 
920  real(RP) :: MASS_FLUX(OIA,OJA)
921  real(RP) :: ENGI_FLUX(OIA,OJA)
922  real(RP) :: MASS_SUPL(OIA,OJA)
923  real(RP) :: ENGI_SUPL(OIA,OJA)
924 
925  real(RP) :: sflx_GH(OIA,OJA)
926 
927  integer :: i, j
928  !---------------------------------------------------------------------------
929 
930  call prof_rapstart('OCN_Update', 2)
931 
932  !########## Get Surface Boundary from coupler ##########
933  call ocean_surface_get
934 
935  !########## Dynamics / Update ##########
936  !$omp parallel do
937  do j = ojs, oje
938  do i = ois, oie
939  ocean_mass_supl(i,j) = 0.0_rp
940  ocean_engi_supl(i,j) = 0.0_rp
941  end do
942  end do
943 
944  select case ( ocean_dyn_type )
945  case ( 'SLAB' )
946 
947  !$omp parallel do
948  do j = ojs, oje
949  do i = ois, oie
950  if ( exists_ocean(i,j) ) then
951  sflx_gh(i,j) = ocean_oflx_gh(i,j) + ocean_oflx_engi(i,j)
952  end if
953  end do
954  end do
955 
956  call ocean_dyn_slab( okmax, oks, oke, & ! [IN]
957  oia, ois, oie, & ! [IN]
958  oja, ojs, oje, & ! [IN]
959  ocean_temp_t(:,:,:), & ! [IN]
960  sflx_gh(:,:), & ! [IN]
961  ocean_oflx_water(:,:), & ! [IN]
962  exists_ocean(:,:), & ! [IN]
963  dt, nowdaysec, & ! [IN]
964  ocean_temp(:,:,:), & ! [INOUT]
965  mass_supl(:,:), & ! [OUT]
966  engi_supl(:,:) ) ! [OUT]
967 
968  !$omp parallel do
969  do j = ojs, oje
970  do i = ois, oie
971  if ( exists_ocean(i,j) ) then
972  ocean_mass_supl(i,j) = ocean_mass_supl(i,j) + mass_supl(i,j)
973  ocean_engi_supl(i,j) = ocean_engi_supl(i,j) + engi_supl(i,j)
974  end if
975  end do
976  end do
977 
978  case ( 'OFFLINE' )
979 
980  call ocean_dyn_offline( okmax, oks, oke, & ! [IN]
981  oia, ois, oie, & ! [IN]
982  oja, ojs, oje, & ! [IN]
983  exists_ocean(:,:), & ! [IN]
984  dt, nowdaysec, & ! [IN]
985  ocean_temp(:,:,:) ) ! [INOUT]
986 
987  case ( 'INIT' )
988  ! Never update OCEAN_TEMP from initial condition
989  end select
990 
991  !########## Ice / Update ##########
992  select case ( ocean_ice_type )
993  case ( 'SIMPLE' )
994 
995  !$omp parallel do
996  do j = ojs, oje
997  do i = ois, oie
998  if ( exists_ocean(i,j) ) then
999  ocean_ice_temp(i,j) = ocean_ice_temp(i,j) + ocean_ice_temp_t(i,j) * dt
1000  ocean_ice_mass(i,j) = ocean_ice_mass(i,j) + ocean_ice_mass_t(i,j) * dt
1001  end if
1002  enddo
1003  enddo
1004 
1005  ! ice adjustment
1006  call ocean_phy_ice_adjustment( oia, ois, oie, & ! [IN]
1007  oja, ojs, oje, & ! [IN]
1008  exists_ocean(:,:), & ! [IN]
1009  cdz(oks), & ! [IN]
1010  ocean_temp(oks,:,:), & ! [INOUT]
1011  ocean_ice_temp(:,:), & ! [INOUT]
1012  ocean_ice_mass(:,:), & ! [INOUT]
1013  mass_flux(:,:), & ! [OUT]
1014  engi_flux(:,:), & ! [OUT]
1015  mass_supl(:,:), & ! [OUT]
1016  engi_supl(:,:) ) ! [OUT]
1017 
1018  !$omp parallel do
1019  do j = ojs, oje
1020  do i = ois, oie
1021  if ( exists_ocean(i,j) ) then
1022  ocean_oflx_water(i,j) = ocean_oflx_water(i,j) - mass_flux(i,j) / dt
1023  ocean_oflx_engi(i,j) = ocean_oflx_engi(i,j) - engi_flux(i,j) / dt
1024  ocean_mass_supl(i,j) = ocean_mass_supl(i,j) + mass_supl(i,j) / dt
1025  ocean_engi_supl(i,j) = ocean_engi_supl(i,j) + engi_supl(i,j) / dt
1026  end if
1027  end do
1028  end do
1029 
1030 
1031  ! update ice fraction
1032  call ocean_phy_ice_fraction( oia, ois, oie, & ! [IN]
1033  oja, ojs, oje, & ! [IN]
1034  ocean_ice_mass(:,:), & ! [IN]
1035  ocean_ice_frac(:,:) ) ! [OUT]
1036 
1037  case ( 'INIT' )
1038  ! Never update OCEAN_ICE_TEMP, OCEAN_ICE_MASS, OCEAN_ICE_FRAC from initial condition
1039  end select
1040 
1041  call ocean_vars_check
1042 
1043  call prof_rapend ('OCN_Update', 2)
1044 
1045  return

References scale_landuse::landuse_exists_ocean, scale_ocean_dyn_offline::ocean_dyn_offline(), scale_ocean_dyn_slab::ocean_dyn_slab(), mod_ocean_admin::ocean_dyn_type, mod_ocean_vars::ocean_engi_supl, scale_ocean_grid_cartesc::ocean_grid_cartesc_cdz, mod_ocean_vars::ocean_ice_frac, mod_ocean_vars::ocean_ice_mass, mod_ocean_vars::ocean_ice_mass_t, mod_ocean_vars::ocean_ice_temp, mod_ocean_vars::ocean_ice_temp_t, mod_ocean_admin::ocean_ice_type, mod_ocean_vars::ocean_mass_supl, mod_ocean_vars::ocean_oflx_engi, mod_ocean_vars::ocean_oflx_gh, mod_ocean_vars::ocean_oflx_water, scale_ocean_phy_ice_simple::ocean_phy_ice_adjustment(), scale_ocean_phy_ice_simple::ocean_phy_ice_fraction(), mod_ocean_vars::ocean_salt, mod_ocean_vars::ocean_salt_t, ocean_surface_get(), mod_ocean_vars::ocean_temp, mod_ocean_vars::ocean_temp_t, mod_ocean_vars::ocean_uvel, mod_ocean_vars::ocean_uvel_t, mod_ocean_vars::ocean_vars_check(), mod_ocean_vars::ocean_vvel, mod_ocean_vars::ocean_vvel_t, scale_ocean_grid_cartesc_index::oia, scale_ocean_grid_cartesc_index::oie, scale_ocean_grid_cartesc_index::ois, scale_ocean_grid_cartesc_index::oja, scale_ocean_grid_cartesc_index::oje, scale_ocean_grid_cartesc_index::ojs, scale_ocean_grid_cartesc_index::oke, scale_ocean_grid_cartesc_index::okmax, scale_ocean_grid_cartesc_index::oks, scale_prof::prof_rapend(), scale_prof::prof_rapstart(), scale_time::time_dtsec_ocean, and scale_time::time_nowdaysec.

Referenced by mod_rm_driver::rm_driver().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ocean_surface_get()

subroutine, public mod_ocean_driver::ocean_surface_get

Get surface boundary from other model.

Definition at line 1051 of file mod_ocean_driver.F90.

1051  use mod_ocean_admin, only: &
1052  ocean_do
1053  use mod_ocean_vars, only: &
1054  atmos_temp, &
1055  atmos_pres, &
1056  atmos_w, &
1057  atmos_u, &
1058  atmos_v, &
1059  atmos_dens, &
1060  atmos_qv, &
1061  atmos_pbl, &
1062  atmos_sfc_dens, &
1063  atmos_sfc_pres, &
1065  atmos_cossza, &
1066  atmos_sflx_water, &
1068  use mod_cpl_vars, only: &
1070  implicit none
1071  !---------------------------------------------------------------------------
1072 
1073  call prof_rapstart('OCN_SfcExch', 2)
1074 
1075  if ( ocean_do ) then
1076  call cpl_getatm_ocn( atmos_temp(:,:), & ! [OUT]
1077  atmos_pres(:,:), & ! [OUT]
1078  atmos_w(:,:), & ! [OUT]
1079  atmos_u(:,:), & ! [OUT]
1080  atmos_v(:,:), & ! [OUT]
1081  atmos_dens(:,:), & ! [OUT]
1082  atmos_qv(:,:), & ! [OUT]
1083  atmos_pbl(:,:), & ! [OUT]
1084  atmos_sfc_dens(:,:), & ! [OUT]
1085  atmos_sfc_pres(:,:), & ! [OUT]
1086  atmos_sflx_rad_dn(:,:,:,:), & ! [OUT]
1087  atmos_cossza(:,:), & ! [OUT]
1088  atmos_sflx_water(:,:), & ! [OUT]
1089  atmos_sflx_engi(:,:) ) ! [OUT]
1090  endif
1091 
1092  call prof_rapend ('OCN_SfcExch', 2)
1093 
1094  return

References mod_ocean_vars::atmos_cossza, mod_ocean_vars::atmos_dens, mod_ocean_vars::atmos_pbl, mod_ocean_vars::atmos_pres, mod_ocean_vars::atmos_qv, mod_ocean_vars::atmos_sfc_dens, mod_ocean_vars::atmos_sfc_pres, mod_ocean_vars::atmos_sflx_engi, mod_ocean_vars::atmos_sflx_rad_dn, mod_ocean_vars::atmos_sflx_water, mod_ocean_vars::atmos_temp, mod_ocean_vars::atmos_u, mod_ocean_vars::atmos_v, mod_cpl_vars::cpl_getatm_ocn(), mod_ocean_admin::ocean_do, scale_prof::prof_rapend(), and scale_prof::prof_rapstart().

Referenced by ocean_driver_calc_tendency(), and ocean_driver_update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ocean_surface_set()

subroutine, public mod_ocean_driver::ocean_surface_set ( logical, intent(in)  countup)

Put surface boundary to other model.

Definition at line 1100 of file mod_ocean_driver.F90.

1100  use mod_ocean_admin, only: &
1101  ocean_do
1102  use mod_ocean_vars, only: &
1103  ocean_sfc_temp, &
1104  ocean_sfc_albedo, &
1105  ocean_sfc_z0m, &
1106  ocean_sfc_z0h, &
1107  ocean_sfc_z0e, &
1108  ocean_sflx_mw, &
1109  ocean_sflx_mu, &
1110  ocean_sflx_mv, &
1111  ocean_sflx_sh, &
1112  ocean_sflx_lh, &
1113  ocean_sflx_qtrc, &
1114  ocean_u10, &
1115  ocean_v10, &
1116  ocean_t2, &
1117  ocean_q2, &
1119  use mod_cpl_vars, only: &
1120  cpl_putocn
1121  use scale_landuse, only: &
1122  exists_ocean => landuse_exists_ocean
1123  implicit none
1124 
1125  logical, intent(in) :: countup
1126  !---------------------------------------------------------------------------
1127 
1128  call prof_rapstart('OCN_SfcExch', 2)
1129 
1130  if ( ocean_do ) then
1131  call cpl_putocn( ocean_sfc_temp(:,:), & ! [IN]
1132  ocean_sfc_albedo(:,:,:,:), & ! [IN]
1133  ocean_sfc_z0m(:,:), & ! [IN]
1134  ocean_sfc_z0h(:,:), & ! [IN]
1135  ocean_sfc_z0e(:,:), & ! [IN]
1136  ocean_sflx_mw(:,:), & ! [IN]
1137  ocean_sflx_mu(:,:), & ! [IN]
1138  ocean_sflx_mv(:,:), & ! [IN]
1139  ocean_sflx_sh(:,:), & ! [IN]
1140  ocean_sflx_lh(:,:), & ! [IN]
1141  ocean_sflx_gh(:,:), & ! [IN]
1142  ocean_sflx_qtrc(:,:,:), & ! [IN]
1143  ocean_u10(:,:), & ! [IN]
1144  ocean_v10(:,:), & ! [IN]
1145  ocean_t2(:,:), & ! [IN]
1146  ocean_q2(:,:), & ! [IN]
1147  exists_ocean(:,:), & ! [IN]
1148  countup ) ! [IN]
1149  endif
1150 
1151  call prof_rapend ('OCN_SfcExch', 2)
1152 
1153  return

References mod_cpl_vars::cpl_putocn(), scale_landuse::landuse_exists_ocean, mod_ocean_admin::ocean_do, mod_ocean_vars::ocean_q2, mod_ocean_vars::ocean_sfc_albedo, mod_ocean_vars::ocean_sfc_temp, mod_ocean_vars::ocean_sfc_z0e, mod_ocean_vars::ocean_sfc_z0h, mod_ocean_vars::ocean_sfc_z0m, mod_ocean_vars::ocean_sflx_gh, mod_ocean_vars::ocean_sflx_lh, mod_ocean_vars::ocean_sflx_mu, mod_ocean_vars::ocean_sflx_mv, mod_ocean_vars::ocean_sflx_mw, mod_ocean_vars::ocean_sflx_qtrc, mod_ocean_vars::ocean_sflx_sh, mod_ocean_vars::ocean_t2, mod_ocean_vars::ocean_u10, mod_ocean_vars::ocean_v10, scale_prof::prof_rapend(), and scale_prof::prof_rapstart().

Referenced by ocean_driver_calc_tendency(), mod_rm_driver::restart_read(), and mod_rm_prep::rm_prep().

Here is the call graph for this function:
Here is the caller graph for this function:
scale_ocean_dyn_offline::ocean_dyn_offline_setup
subroutine, public ocean_dyn_offline_setup
Setup.
Definition: scale_ocean_dyn_offline.F90:48
scale_ocean_dyn_slab::ocean_dyn_slab
subroutine, public ocean_dyn_slab(OKMAX, OKS, OKE, OIA, OIS, OIE, OJA, OJS, OJE, OCEAN_TEMP_t, OCEAN_SFLX_G, OCEAN_SFLX_water, calc_flag, dt, NOWDAYSEC, OCEAN_TEMP, MASS_SUPL, ENGI_SUPL)
Slab ocean model.
Definition: scale_ocean_dyn_slab.F90:185
scale_statistics
module Statistics
Definition: scale_statistics.F90:11
mod_ocean_vars::ocean_ocn_z0m
real(rp), dimension(:,:), allocatable, public ocean_ocn_z0m
surface roughness length for momentum, open ocean [m]
Definition: mod_ocean_vars.F90:65
scale_ocean_phy_roughness::ocean_phy_roughness_seaice
subroutine, public ocean_phy_roughness_seaice(OIA, OIS, OIE, OJA, OJS, OJE, Z0M, Z0H, Z0E)
Definition: scale_ocean_phy_roughness.F90:188
mod_ocean_vars::ocean_sflx_mv
real(rp), dimension(:,:), allocatable, public ocean_sflx_mv
ocean surface v-momentum flux [kg/m/s2]
Definition: mod_ocean_vars.F90:113
scale_ocean_dyn_offline
module ocean / dynamics / offline
Definition: scale_ocean_dyn_offline.F90:12
scale_ocean_phy_albedo::ocean_phy_albedo_const
subroutine, public ocean_phy_albedo_const(OIA, OIS, OIE, OJA, OJS, OJE, SFC_albedo)
Definition: scale_ocean_phy_albedo.F90:134
mod_ocean_admin::ocean_ice_type
character(len=h_short), public ocean_ice_type
Definition: mod_ocean_admin.F90:40
scale_time::time_nowdaysec
real(dp), public time_nowdaysec
second of current time [sec]
Definition: scale_time.F90:70
mod_ocean_vars::ocean_sflx_mu
real(rp), dimension(:,:), allocatable, public ocean_sflx_mu
ocean surface u-momentum flux [kg/m/s2]
Definition: mod_ocean_vars.F90:112
scale_prc::prc_abort
subroutine, public prc_abort
Abort Process.
Definition: scale_prc.F90:342
mod_ocean_vars::atmos_pbl
real(rp), dimension(:,:), allocatable, public atmos_pbl
Definition: mod_ocean_vars.F90:94
mod_ocean_vars::ocean_ice_temp
real(rp), dimension(:,:), allocatable, public ocean_ice_temp
sea ice temperature [K]
Definition: mod_ocean_vars.F90:73
mod_ocean_vars::ocean_oflx_water
real(rp), dimension(:,:), pointer, public ocean_oflx_water
ocean-ice surface water mass flux [kg/m2/s]
Definition: mod_ocean_vars.F90:107
scale_ocean_grid_cartesc_real::ocean_grid_cartesc_real_totarea
real(rp), public ocean_grid_cartesc_real_totarea
total area
Definition: scale_ocean_grid_cartesC_real.F90:37
mod_ocean_vars::atmos_sflx_engi
real(rp), dimension(:,:), allocatable, public atmos_sflx_engi
Definition: mod_ocean_vars.F90:100
scale_ocean_phy_ice_simple::ocean_phy_ice_adjustment
subroutine, public ocean_phy_ice_adjustment(OIA, OIS, OIE, OJA, OJS, OJE, calc_flag, OCEAN_DEPTH, OCEAN_TEMP, ICE_TEMP, ICE_MASS, MASS_FLUX, ENGI_FLUX, MASS_SUPL, ENGI_SUPL)
Definition: scale_ocean_phy_ice_simple.F90:204
scale_ocean_grid_cartesc_index::oke
integer, public oke
Definition: scale_ocean_grid_cartesC_index.F90:38
mod_ocean_vars::ocean_sfc_z0e
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0e
ocean surface roughness length for vapor [m]
Definition: mod_ocean_vars.F90:71
mod_ocean_admin::ocean_alb_type
character(len=h_short), public ocean_alb_type
Definition: mod_ocean_admin.F90:43
scale_ocean_phy_ice_simple
module ocean / physics / ice / simple
Definition: scale_ocean_phy_ice_simple.F90:12
mod_ocean_vars::ocean_sflx_mw
real(rp), dimension(:,:), allocatable, public ocean_sflx_mw
ocean surface w-momentum flux [kg/m/s2]
Definition: mod_ocean_vars.F90:111
mod_ocean_vars::ocean_salt_t
real(rp), dimension(:,:,:), allocatable, public ocean_salt_t
tendency of OCEAN_OCN_SALT
Definition: mod_ocean_vars.F90:79
scale_atmos_grid_cartesc_real::atmos_grid_cartesc_real_z1
real(rp), dimension(:,:), allocatable, public atmos_grid_cartesc_real_z1
Height of the lowermost grid from surface (cell center) [m].
Definition: scale_atmos_grid_cartesC_real.F90:59
mod_ocean_vars::ocean_ice_rlmo
real(rp), dimension(:,:), allocatable, public ocean_ice_rlmo
Definition: mod_ocean_vars.F90:136
mod_cpl_vars
module COUPLER Variables
Definition: mod_cpl_vars.F90:12
mod_ocean_vars::ocean_q2
real(rp), dimension(:,:), allocatable, public ocean_q2
ocean surface water vapor at 2m [kg/kg]
Definition: mod_ocean_vars.F90:120
scale_ocean_grid_cartesc_index::oie
integer, public oie
Definition: scale_ocean_grid_cartesC_index.F90:42
mod_ocean_vars::ice_flag
logical, public ice_flag
Definition: mod_ocean_vars.F90:141
mod_atmos_admin
module ATMOS admin
Definition: mod_atmos_admin.F90:11
scale_ocean_phy_albedo_nakajima00::ocean_phy_albedo_nakajima00_setup
subroutine, public ocean_phy_albedo_nakajima00_setup
Definition: scale_ocean_phy_albedo_nakajima00.F90:49
mod_ocean_vars::ocean_ustar
real(rp), dimension(:,:), allocatable, target, public ocean_ustar
ocean surface friction velocity [m/s]
Definition: mod_ocean_vars.F90:122
scale_const::const_eps
real(rp), public const_eps
small number
Definition: scale_const.F90:33
scale_ocean_phy_albedo::ocean_phy_albedo_const_setup
subroutine, public ocean_phy_albedo_const_setup
Definition: scale_ocean_phy_albedo.F90:63
scale_ocean_phy_roughness::ocean_phy_roughness_const
subroutine, public ocean_phy_roughness_const(OIA, OIS, OIE, OJA, OJS, OJE, Z0M, Z0H, Z0E)
Definition: scale_ocean_phy_roughness.F90:161
mod_ocean_vars::ocean_temp_t
real(rp), dimension(:,:,:), allocatable, public ocean_temp_t
tendency of OCEAN_OCN_TEMP
Definition: mod_ocean_vars.F90:78
scale_bulkflux
module Surface bulk flux
Definition: scale_bulkflux.F90:12
mod_ocean_vars::atmos_cossza
real(rp), dimension(:,:), allocatable, public atmos_cossza
Definition: mod_ocean_vars.F90:98
scale_atmos_hydrometeor
module atmosphere / hydrometeor
Definition: scale_atmos_hydrometeor.F90:12
mod_ocean_vars::ocean_ice_wstar
real(rp), dimension(:,:), allocatable, public ocean_ice_wstar
Definition: mod_ocean_vars.F90:135
scale_ocean_grid_cartesc_index::oka
integer, public oka
Definition: scale_ocean_grid_cartesC_index.F90:36
scale_ocean_phy_roughness_moon07
module ocean / physics / surface roughness length / moon07
Definition: scale_ocean_phy_roughness_moon07.F90:15
mod_ocean_vars::ocean_ice_qstar
real(rp), dimension(:,:), allocatable, public ocean_ice_qstar
Definition: mod_ocean_vars.F90:134
scale_ocean_grid_cartesc_index::okmax
integer, public okmax
Definition: scale_ocean_grid_cartesC_index.F90:32
mod_atmos_phy_ch_driver::atmos_phy_ch_driver_ocean_flux
subroutine, public atmos_phy_ch_driver_ocean_flux(SFLX_QTRC)
Driver.
Definition: mod_atmos_phy_ch_driver.F90:225
mod_ocean_vars::ocean_v10
real(rp), dimension(:,:), allocatable, public ocean_v10
ocean surface velocity v at 10m [m/s]
Definition: mod_ocean_vars.F90:118
mod_ocean_vars::ocean_sfc_z0m
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0m
ocean surface roughness length for momentum [m]
Definition: mod_ocean_vars.F90:69
scale_atmos_hydrometeor::atmos_hydrometeor_dry
logical, public atmos_hydrometeor_dry
Definition: scale_atmos_hydrometeor.F90:97
scale_cpl_phy_sfc_fixed_temp::cpl_phy_sfc_fixed_temp_setup
subroutine, public cpl_phy_sfc_fixed_temp_setup
Setup.
Definition: scale_cpl_phy_sfc_fixed_temp.F90:50
scale_ocean_phy_albedo_nakajima00
module ocean / physics / surface albedo / nakajima00
Definition: scale_ocean_phy_albedo_nakajima00.F90:15
scale_ocean_phy_tc::ocean_phy_tc_seaice_setup
subroutine, public ocean_phy_tc_seaice_setup
Definition: scale_ocean_phy_tc.F90:49
mod_ocean_vars::ocean_sflx_qtrc
real(rp), dimension(:,:,:), allocatable, public ocean_sflx_qtrc
ocean surface tracer flux [kg/m2/s]
Definition: mod_ocean_vars.F90:116
scale_ocean_grid_cartesc
module ocean / grid / cartesianC
Definition: scale_ocean_grid_cartesC.F90:12
scale_ocean_grid_cartesc_real::ocean_grid_cartesc_real_area
real(rp), dimension(:,:), allocatable, public ocean_grid_cartesc_real_area
area of grid cell
Definition: scale_ocean_grid_cartesC_real.F90:36
scale_atmos_grid_cartesc_real
module Atmosphere GRID CartesC Real(real space)
Definition: scale_atmos_grid_cartesC_real.F90:11
scale_file_history
module file_history
Definition: scale_file_history.F90:15
scale_ocean_grid_cartesc_index::ois
integer, public ois
Definition: scale_ocean_grid_cartesC_index.F90:41
mod_ocean_vars::ocean_sflx_sh
real(rp), dimension(:,:), allocatable, public ocean_sflx_sh
ocean surface sensible heat flux [J/m2/s]
Definition: mod_ocean_vars.F90:114
mod_ocean_vars::ocean_ocn_tstar
real(rp), dimension(:,:), pointer, public ocean_ocn_tstar
Definition: mod_ocean_vars.F90:128
mod_ocean_vars::ocean_ocn_ustar
real(rp), dimension(:,:), pointer, public ocean_ocn_ustar
Definition: mod_ocean_vars.F90:127
scale_ocean_dyn_slab::ocean_dyn_slab_setup
subroutine, public ocean_dyn_slab_setup(DEPTH)
Setup.
Definition: scale_ocean_dyn_slab.F90:54
scale_ocean_phy_roughness_moon07::ocean_phy_roughness_moon07_setup
subroutine, public ocean_phy_roughness_moon07_setup
Definition: scale_ocean_phy_roughness_moon07.F90:51
mod_ocean_vars::ocean_oflx_gh
real(rp), dimension(:,:), pointer, public ocean_oflx_gh
ocean-ice surface water heat flux [J/m2/s]
Definition: mod_ocean_vars.F90:106
scale_prc
module PROCESS
Definition: scale_prc.F90:11
mod_ocean_vars::ocean_sflx_gh
real(rp), dimension(:,:), allocatable, target, public ocean_sflx_gh
ocean surface water heat flux [J/m2/s]
Definition: mod_ocean_vars.F90:103
mod_ocean_admin::ocean_sfc_type
character(len=h_short), public ocean_sfc_type
Definition: mod_ocean_admin.F90:39
scale_ocean_grid_cartesc_index::oje
integer, public oje
Definition: scale_ocean_grid_cartesC_index.F90:46
mod_ocean_vars::ocean_vvel_t
real(rp), dimension(:,:,:), allocatable, public ocean_vvel_t
tendency of OCEAN_OCN_VVEL
Definition: mod_ocean_vars.F90:81
mod_ocean_vars::ocean_ocn_qstar
real(rp), dimension(:,:), pointer, public ocean_ocn_qstar
Definition: mod_ocean_vars.F90:129
scale_ocean_phy_roughness_miller92::ocean_phy_roughness_miller92_setup
subroutine, public ocean_phy_roughness_miller92_setup
Definition: scale_ocean_phy_roughness_miller92.F90:57
scale_ocean_phy_roughness_miller92::ocean_phy_roughness_miller92
subroutine, public ocean_phy_roughness_miller92(OIA, OIS, OIE, OJA, OJS, OJE, Uabs, Z0M, Z0H, Z0E)
Definition: scale_ocean_phy_roughness_miller92.F90:101
mod_ocean_vars::ocean_engi_supl
real(rp), dimension(:,:), allocatable, public ocean_engi_supl
Definition: mod_ocean_vars.F90:145
mod_ocean_vars::atmos_sflx_water
real(rp), dimension(:,:), allocatable, public atmos_sflx_water
Definition: mod_ocean_vars.F90:99
mod_ocean_vars::ocean_sfc_z0h
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0h
ocean surface roughness length for heat [m]
Definition: mod_ocean_vars.F90:70
mod_ocean_admin
module Ocean admin
Definition: mod_ocean_admin.F90:11
scale_ocean_grid_cartesc_index::oja
integer, public oja
Definition: scale_ocean_grid_cartesC_index.F90:44
mod_ocean_vars::ocean_uvel_t
real(rp), dimension(:,:,:), allocatable, public ocean_uvel_t
tendency of OCEAN_OCN_UVEL
Definition: mod_ocean_vars.F90:80
scale_const
module CONSTANT
Definition: scale_const.F90:11
scale_ocean_phy_albedo_nakajima00::ocean_phy_albedo_nakajima00
subroutine, public ocean_phy_albedo_nakajima00(OIA, OIS, OIE, OJA, OJS, OJE, cosSZA, SFC_albedo)
Definition: scale_ocean_phy_albedo_nakajima00.F90:63
mod_ocean_vars::ocean_uvel
real(rp), dimension(:,:,:), allocatable, public ocean_uvel
ocean zonal velocity [m/s]
Definition: mod_ocean_vars.F90:62
mod_ocean_admin::ocean_dyn_type
character(len=h_short), public ocean_dyn_type
Definition: mod_ocean_admin.F90:34
scale_ocean_phy_albedo::ocean_phy_albedo_seaice_setup
subroutine, public ocean_phy_albedo_seaice_setup
Definition: scale_ocean_phy_albedo.F90:97
mod_ocean_vars::atmos_sflx_rad_dn
real(rp), dimension(:,:,:,:), allocatable, public atmos_sflx_rad_dn
Definition: mod_ocean_vars.F90:97
scale_ocean_phy_tc
module ocean / physics / surface thermal conductivity
Definition: scale_ocean_phy_tc.F90:12
mod_cpl_vars::cpl_putocn
subroutine, public cpl_putocn(SFC_TEMP, SFC_albedo, SFC_Z0M, SFC_Z0H, SFC_Z0E, SFLX_MW, SFLX_MU, SFLX_MV, SFLX_SH, SFLX_LH, SFLX_GH, SFLX_QTRC, U10, V10, T2, Q2, mask, countup)
Definition: mod_cpl_vars.F90:657
mod_ocean_vars::atmos_sfc_dens
real(rp), dimension(:,:), allocatable, public atmos_sfc_dens
Definition: mod_ocean_vars.F90:95
mod_ocean_vars::ocean_ice_temp_t
real(rp), dimension(:,:), allocatable, public ocean_ice_temp_t
tendency of OCEAN_ICE_TEMP
Definition: mod_ocean_vars.F90:83
scale_const::const_huge
real(rp), public const_huge
huge number
Definition: scale_const.F90:35
mod_ocean_admin::ocean_rgn_type
character(len=h_short), public ocean_rgn_type
Definition: mod_ocean_admin.F90:45
scale_ocean_phy_albedo
module ocean / physics / surface albedo
Definition: scale_ocean_phy_albedo.F90:12
scale_ocean_grid_cartesc::ocean_grid_cartesc_cdz
real(rp), dimension(:), allocatable, public ocean_grid_cartesc_cdz
z-length of control volume [m]
Definition: scale_ocean_grid_cartesC.F90:37
mod_ocean_vars::ocean_tstar
real(rp), dimension(:,:), allocatable, target, public ocean_tstar
ocean surface tempreture scale [K]
Definition: mod_ocean_vars.F90:123
scale_time::time_dtsec_ocean
real(dp), public time_dtsec_ocean
time interval of ocean step [sec]
Definition: scale_time.F90:46
mod_ocean_vars::atmos_temp
real(rp), dimension(:,:), allocatable, public atmos_temp
Definition: mod_ocean_vars.F90:87
mod_ocean_vars
module OCEAN Variables
Definition: mod_ocean_vars.F90:12
mod_atmos_admin::atmos_sw_phy_ch
logical, public atmos_sw_phy_ch
Definition: mod_atmos_admin.F90:54
scale_ocean_phy_tc::ocean_phy_tc_seaice
subroutine, public ocean_phy_tc_seaice(OIA, OIS, OIE, OJA, OJS, OJE, ICE_MASS, ICE_FRAC, mask, TC_dz)
Definition: scale_ocean_phy_tc.F90:85
scale_time
module TIME
Definition: scale_time.F90:11
mod_ocean_vars::ocean_ocn_rlmo
real(rp), dimension(:,:), pointer, public ocean_ocn_rlmo
Definition: mod_ocean_vars.F90:131
scale_ocean_phy_albedo::ocean_phy_albedo_seaice
subroutine, public ocean_phy_albedo_seaice(OIA, OIS, OIE, OJA, OJS, OJE, SFC_albedo)
Definition: scale_ocean_phy_albedo.F90:162
mod_ocean_vars::ocean_wstar
real(rp), dimension(:,:), allocatable, target, public ocean_wstar
ocean surface convective velocity scale [m/s]
Definition: mod_ocean_vars.F90:125
scale_ocean_phy_roughness
module ocean / physics / surface roughness length
Definition: scale_ocean_phy_roughness.F90:12
scale_atmos_hydrometeor::i_qv
integer, public i_qv
Definition: scale_atmos_hydrometeor.F90:77
mod_ocean_vars::ocean_mass_supl
real(rp), dimension(:,:), allocatable, public ocean_mass_supl
Definition: mod_ocean_vars.F90:144
mod_ocean_vars::ocean_oflx_engi
real(rp), dimension(:,:), pointer, public ocean_oflx_engi
ocean-ice surface internal energy flux [J/m2/s]
Definition: mod_ocean_vars.F90:108
mod_ocean_vars::ocean_sflx_water
real(rp), dimension(:,:), allocatable, target, public ocean_sflx_water
ocean surface water mass flux [kg/m2/s]
Definition: mod_ocean_vars.F90:104
scale_ocean_phy_ice_simple::ocean_phy_ice_simple
subroutine, public ocean_phy_ice_simple(OIA, OIS, OIE, OJA, OJS, OJE, iflx_water, iflx_hbalance, subsfc_temp, TC_dz, ICE_TEMP, ICE_MASS, ICE_FRAC, calc_flag, dt, ICE_TEMP_t, ICE_MASS_t, sflx_G, sflx_water, sflx_RHOE)
Slab ocean model.
Definition: scale_ocean_phy_ice_simple.F90:293
scale_ocean_dyn_offline::ocean_dyn_offline
subroutine, public ocean_dyn_offline(OKMAX, OKS, OKE, OIA, OIS, OIE, OJA, OJS, OJE, calc_flag, dt, NOWDAYSEC, OCEAN_TEMP)
Slab ocean model.
Definition: scale_ocean_dyn_offline.F90:133
mod_ocean_vars::ocean_ice_tstar
real(rp), dimension(:,:), allocatable, public ocean_ice_tstar
Definition: mod_ocean_vars.F90:133
scale_landuse::landuse_exists_ocean
logical, dimension(:,:), allocatable, public landuse_exists_ocean
ocean calculation flag
Definition: scale_landuse.F90:49
mod_atmos_phy_ch_driver
module ATMOSPHERE / Physics Chemistry
Definition: mod_atmos_phy_ch_driver.F90:12
mod_ocean_admin::ocean_do
logical, public ocean_do
Definition: mod_ocean_admin.F90:32
mod_ocean_vars::ocean_ice_mass
real(rp), dimension(:,:), allocatable, public ocean_ice_mass
sea ice mass [kg]
Definition: mod_ocean_vars.F90:74
scale_ocean_grid_cartesc_real::ocean_grid_cartesc_real_vol
real(rp), dimension(:,:,:), allocatable, public ocean_grid_cartesc_real_vol
volume of grid cell
Definition: scale_ocean_grid_cartesC_real.F90:38
mod_ocean_vars::ocean_vvel
real(rp), dimension(:,:,:), allocatable, public ocean_vvel
ocean meridional velocity [m/s]
Definition: mod_ocean_vars.F90:63
scale_statistics::statistics_checktotal
logical, public statistics_checktotal
calc&report variable totals to logfile?
Definition: scale_statistics.F90:64
mod_ocean_vars::ocean_sflx_engi
real(rp), dimension(:,:), allocatable, target, public ocean_sflx_engi
ocean surface internal energy flux [J/m2/s]
Definition: mod_ocean_vars.F90:105
scale_ocean_grid_cartesc_index::ojs
integer, public ojs
Definition: scale_ocean_grid_cartesC_index.F90:45
scale_ocean_phy_ice_simple::ocean_phy_ice_setup
subroutine, public ocean_phy_ice_setup
Definition: scale_ocean_phy_ice_simple.F90:60
mod_ocean_vars::atmos_v
real(rp), dimension(:,:), allocatable, public atmos_v
Definition: mod_ocean_vars.F90:91
mod_cpl_vars::cpl_getatm_ocn
subroutine, public cpl_getatm_ocn(TEMP, PRES, W, U, V, DENS, QV, PBL, SFC_DENS, SFC_PRES, SFLX_rad_dn, cosSZA, SFLX_water, SFLX_ENGI)
Definition: mod_cpl_vars.F90:1148
mod_ocean_vars::ocean_sfc_albedo
real(rp), dimension(:,:,:,:), allocatable, public ocean_sfc_albedo
ocean surface albedo (direct/diffuse,IR/near-IR/VIS) (0-1)
Definition: mod_ocean_vars.F90:68
mod_ocean_vars::atmos_dens
real(rp), dimension(:,:), allocatable, public atmos_dens
Definition: mod_ocean_vars.F90:92
scale_ocean_phy_roughness::ocean_phy_roughness_seaice_setup
subroutine, public ocean_phy_roughness_seaice_setup
Definition: scale_ocean_phy_roughness.F90:127
scale_cpl_phy_sfc_fixed_temp::cpl_phy_sfc_fixed_temp
subroutine, public cpl_phy_sfc_fixed_temp(IA, IS, IE, JA, JS, JE, TMPA, PRSA, WA, UA, VA, RHOA, QVA, LH, Z1, PBL, RHOS, PRSS, RFLXD, TMPS, WSTR, QVEF, ALBEDO, Rb, Z0M, Z0H, Z0E, calc_flag, dt, ZMFLX, XMFLX, YMFLX, SHFLX, LHFLX, QVFLX, GFLX, Ustar, Tstar, Qstar, Wstar, RLmo, U10, V10, T2, Q2)
Definition: scale_cpl_phy_sfc_fixed_temp.F90:84
mod_ocean_vars::ocean_sfc_temp
real(rp), dimension(:,:), allocatable, public ocean_sfc_temp
ocean surface skin temperature [K]
Definition: mod_ocean_vars.F90:67
scale_atmos_hydrometeor::lhf
real(rp), public lhf
latent heat of fusion for use [J/kg]
Definition: scale_atmos_hydrometeor.F90:128
scale_ocean_phy_roughness::ocean_phy_roughness_const_setup
subroutine, public ocean_phy_roughness_const_setup
Definition: scale_ocean_phy_roughness.F90:96
scale_ocean_phy_ice_simple::ocean_phy_ice_fraction
subroutine, public ocean_phy_ice_fraction(OIA, OIS, OIE, OJA, OJS, OJE, ICE_MASS, ICE_FRAC)
Definition: scale_ocean_phy_ice_simple.F90:170
scale_ocean_grid_cartesc_real
module ocean / grid / cartesianC / real
Definition: scale_ocean_grid_cartesC_real.F90:12
mod_ocean_vars::ocean_rlmo
real(rp), dimension(:,:), allocatable, target, public ocean_rlmo
ocean surface inversed Obukhov length [1/m]
Definition: mod_ocean_vars.F90:126
scale_ocean_grid_cartesc_index::oia
integer, public oia
Definition: scale_ocean_grid_cartesC_index.F90:40
mod_ocean_vars::ocean_ice_frac
real(rp), dimension(:,:), allocatable, public ocean_ice_frac
area fraction of sea ice [1]
Definition: mod_ocean_vars.F90:139
mod_ocean_vars::ocean_sflx_lh
real(rp), dimension(:,:), allocatable, public ocean_sflx_lh
ocean surface latent heat flux [J/m2/s]
Definition: mod_ocean_vars.F90:115
mod_ocean_vars::ocean_salt
real(rp), dimension(:,:,:), allocatable, public ocean_salt
ocean salinity [PSU]
Definition: mod_ocean_vars.F90:61
scale_landuse
module LANDUSE
Definition: scale_landuse.F90:19
mod_ocean_vars::ocean_ice_mass_t
real(rp), dimension(:,:), allocatable, public ocean_ice_mass_t
tendency of OCEAN_ICE_MASS
Definition: mod_ocean_vars.F90:84
mod_ocean_vars::atmos_pres
real(rp), dimension(:,:), allocatable, public atmos_pres
Definition: mod_ocean_vars.F90:88
mod_ocean_vars::ocean_u10
real(rp), dimension(:,:), allocatable, public ocean_u10
ocean surface velocity u at 10m [m/s]
Definition: mod_ocean_vars.F90:117
mod_ocean_vars::atmos_u
real(rp), dimension(:,:), allocatable, public atmos_u
Definition: mod_ocean_vars.F90:90
mod_ocean_vars::atmos_w
real(rp), dimension(:,:), allocatable, public atmos_w
Definition: mod_ocean_vars.F90:89
mod_ocean_vars::ocean_ocn_wstar
real(rp), dimension(:,:), pointer, public ocean_ocn_wstar
Definition: mod_ocean_vars.F90:130
scale_ocean_phy_roughness_miller92
module ocean / physics / surface roughness length / miller92
Definition: scale_ocean_phy_roughness_miller92.F90:12
mod_ocean_vars::ocean_qstar
real(rp), dimension(:,:), allocatable, target, public ocean_qstar
ocean surface moisture scale [kg/kg]
Definition: mod_ocean_vars.F90:124
scale_atmos_hydrometeor::cv_water
real(rp), public cv_water
CV for water [J/kg/K].
Definition: scale_atmos_hydrometeor.F90:132
mod_ocean_vars::ocean_t2
real(rp), dimension(:,:), allocatable, public ocean_t2
ocean surface temperature at 2m [K]
Definition: mod_ocean_vars.F90:119
scale_ocean_grid_cartesc_real::ocean_grid_cartesc_real_totvol
real(rp), public ocean_grid_cartesc_real_totvol
total volume
Definition: scale_ocean_grid_cartesC_real.F90:39
scale_atmos_hydrometeor::cv_ice
real(rp), public cv_ice
CV for ice [J/kg/K].
Definition: scale_atmos_hydrometeor.F90:134
scale_ocean_phy_roughness_moon07::ocean_phy_roughness_moon07
subroutine, public ocean_phy_roughness_moon07(OIA, OIS, OIE, OJA, OJS, OJE, Uabs, Z1, mask, Z0M, Z0H, Z0E)
Definition: scale_ocean_phy_roughness_moon07.F90:86
mod_ocean_vars::atmos_sfc_pres
real(rp), dimension(:,:), allocatable, public atmos_sfc_pres
Definition: mod_ocean_vars.F90:96
scale_ocean_dyn_slab
module ocean / dynamics / slab
Definition: scale_ocean_dyn_slab.F90:12
mod_ocean_vars::ocean_vars_check
subroutine, public ocean_vars_check(force)
Budget monitor for ocean.
Definition: mod_ocean_vars.F90:837
scale_cpl_phy_sfc_fixed_temp
module coupler / surface fixed temp model
Definition: scale_cpl_phy_sfc_fixed_temp.F90:12
mod_ocean_vars::ocean_temp
real(rp), dimension(:,:,:), allocatable, public ocean_temp
ocean temperature [K]
Definition: mod_ocean_vars.F90:60
mod_ocean_vars::ocean_ice_ustar
real(rp), dimension(:,:), allocatable, public ocean_ice_ustar
Definition: mod_ocean_vars.F90:132
mod_ocean_vars::atmos_qv
real(rp), dimension(:,:), allocatable, public atmos_qv
Definition: mod_ocean_vars.F90:93
scale_ocean_grid_cartesc_index::oks
integer, public oks
Definition: scale_ocean_grid_cartesC_index.F90:37