87 real(RP),
public,
allocatable ::
atmos_w (:,:)
88 real(RP),
public,
allocatable ::
atmos_u (:,:)
89 real(RP),
public,
allocatable ::
atmos_v (:,:)
91 real(RP),
public,
allocatable ::
atmos_qv (:,:)
128 logical,
private :: ocean_vars_checkrange = .false.
129 logical,
private :: ocean_restart_in_check_coordinates = .true.
131 integer,
private,
parameter :: vmax = 27
132 integer,
private,
parameter :: i_temp = 1
133 integer,
private,
parameter :: i_salt = 2
134 integer,
private,
parameter :: i_uvel = 3
135 integer,
private,
parameter :: i_vvel = 4
136 integer,
private,
parameter :: i_ocn_z0m = 5
137 integer,
private,
parameter :: i_ice_temp = 6
138 integer,
private,
parameter :: i_ice_mass = 7
139 integer,
private,
parameter :: i_sfc_temp = 8
140 integer,
private,
parameter :: i_sfc_alb_ir_dir = 9
141 integer,
private,
parameter :: i_sfc_alb_ir_dif = 10
142 integer,
private,
parameter :: i_sfc_alb_nir_dir = 11
143 integer,
private,
parameter :: i_sfc_alb_nir_dif = 12
144 integer,
private,
parameter :: i_sfc_alb_vis_dir = 13
145 integer,
private,
parameter :: i_sfc_alb_vis_dif = 14
146 integer,
private,
parameter :: i_sfc_z0m = 15
147 integer,
private,
parameter :: i_sfc_z0h = 16
148 integer,
private,
parameter :: i_sfc_z0e = 17
149 integer,
private,
parameter :: i_sflx_mw = 18
150 integer,
private,
parameter :: i_sflx_mu = 19
151 integer,
private,
parameter :: i_sflx_mv = 20
152 integer,
private,
parameter :: i_sflx_sh = 21
153 integer,
private,
parameter :: i_sflx_lh = 22
154 integer,
private,
parameter :: i_sflx_evap = 23
155 integer,
private,
parameter :: i_sflx_g = 24
156 integer,
private,
parameter :: i_sflx_water = 25
157 integer,
private,
parameter :: i_sflx_ice = 26
158 integer,
private,
parameter :: i_ice_frac = 27
160 character(len=H_SHORT),
private :: var_name(vmax)
161 character(len=H_MID),
private :: var_desc(vmax)
162 character(len=H_MID),
private :: var_stdn(vmax)
163 character(len=H_SHORT),
private :: var_unit(vmax)
164 integer,
private :: var_id(vmax)
165 integer,
private :: restart_fid = -1
167 data var_name /
'OCEAN_TEMP', &
175 'OCEAN_SFC_ALB_IR_dir', &
176 'OCEAN_SFC_ALB_IR_dif', &
177 'OCEAN_SFC_ALB_NIR_dir', &
178 'OCEAN_SFC_ALB_NIR_dif', &
179 'OCEAN_SFC_ALB_VIS_dir', &
180 'OCEAN_SFC_ALB_VIS_dif', &
191 'OCEAN_SFLX_water', &
195 data var_desc /
'ocean temperature', &
197 'ocean u-velocity', &
198 'ocean v-velocity', &
199 'open ocean roughness length (momentum)', &
200 'seaice temperature', &
202 'ocean surface skin temperature', &
203 'ocean surface albedo for IR (direct)', &
204 'ocean surface albedo for IR (diffuse)', &
205 'ocean surface albedo for NIR (direct)', &
206 'ocean surface albedo for NIR (diffuse)', &
207 'ocean surface albedo for VIS (direct)', &
208 'ocean surface albedo for VIS (diffuse)', &
209 'ocean surface roughness length (momentum)', &
210 'ocean surface roughness length (heat)', &
211 'ocean surface roughness length (vapor)', &
212 'ocean surface w-momentum flux (upward)', &
213 'ocean surface u-momentum flux (upward)', &
214 'ocean surface v-momentum flux (upward)', &
215 'ocean surface sensible heat flux (upward)', &
216 'ocean surface latent heat flux (upward)', &
217 'ocean surface water vapor flux (upward)', &
218 'ocean subsurface heat flux (downward)', &
219 'ocean surface liquid water flux (downward)', &
220 'ocean surface ice water flux (downward)', &
223 data var_stdn /
'sea_water_temperature', &
224 'sea_water_salinity', &
225 'eastward_sea_water_velocity', &
226 'northward_sea_water_velocity', &
230 'sea_surface_skin_temperature', &
251 data var_unit /
'K', &
290 namelist / param_ocean_vars / &
294 ocean_restart_in_check_coordinates, &
301 ocean_vars_checkrange
308 log_info(
"OCEAN_vars_setup",*)
'Setup' 416 log_info(
"OCEAN_vars_setup",*)
'Not found namelist. Default used.' 417 elseif( ierr > 0 )
then 418 log_error(
"OCEAN_vars_setup",*)
'Not appropriate names in namelist PARAM_OCEAN_VARS. Check!' 421 log_nml(param_ocean_vars)
424 log_info(
"OCEAN_vars_setup",*)
'List of prognostic variables (OCEAN) ' 425 log_info_cont(
'(1x,A,A24,A,A48,A,A12,A)') &
426 ' |',
'VARNAME ',
'|',
'DESCRIPTION ',
'[',
'UNIT ',
']' 428 log_info_cont(
'(1x,A,I3,A,A24,A,A48,A,A12,A)') &
429 'NO.',iv,
'|',var_name(iv),
'|',var_desc(iv),
'[',var_unit(iv),
']' 437 log_info(
"OCEAN_vars_setup",*)
'Restart input? : NO' 444 log_info(
"OCEAN_vars_setup",*)
'Restart output? : NO' 458 file_cartesc_check_coordinates
463 character(len=19) :: timelabel
464 character(len=H_LONG) :: basename
468 log_info(
"OCEAN_vars_restart_open",*)
'Open restart file (OCEAN) ' 478 log_info_cont(*)
'basename: ', trim(basename)
482 if( ocean_restart_in_check_coordinates )
call file_cartesc_check_coordinates( restart_fid )
485 log_info_cont(*)
'restart file for ocean is not specified.' 509 if ( restart_fid /= -1 )
then 511 log_info(
"OCEAN_vars_restart_read",*)
'Read from restart file (OCEAN) ' 513 call file_cartesc_read( restart_fid, var_name(i_temp),
'OXY', &
521 call file_cartesc_read( restart_fid, var_name(i_ocn_z0m),
'XY', &
523 call file_cartesc_read( restart_fid, var_name(i_ice_temp),
'XY', &
525 call file_cartesc_read( restart_fid, var_name(i_ice_mass),
'XY', &
527 call file_cartesc_read( restart_fid, var_name(i_sfc_temp),
'XY', &
529 call file_cartesc_read( restart_fid, var_name(i_sfc_alb_ir_dir),
'XY', &
531 call file_cartesc_read( restart_fid, var_name(i_sfc_alb_ir_dif),
'XY', &
533 call file_cartesc_read( restart_fid, var_name(i_sfc_alb_nir_dir),
'XY', &
535 call file_cartesc_read( restart_fid, var_name(i_sfc_alb_nir_dif),
'XY', &
537 call file_cartesc_read( restart_fid, var_name(i_sfc_alb_vis_dir),
'XY', &
539 call file_cartesc_read( restart_fid, var_name(i_sfc_alb_vis_dif),
'XY', &
541 call file_cartesc_read( restart_fid, var_name(i_sfc_z0m),
'XY', &
543 call file_cartesc_read( restart_fid, var_name(i_sfc_z0h),
'XY', &
545 call file_cartesc_read( restart_fid, var_name(i_sfc_z0e),
'XY', &
564 log_error(
"OCEAN_vars_restart_read",*)
'invalid restart file ID for ocean.' 583 if ( ocean_vars_checkrange )
then 585 var_name(i_temp), __file__, __line__ )
594 var_name(i_ocn_z0m), __file__, __line__ )
596 var_name(i_ice_temp), __file__, __line__ )
598 var_name(i_ice_mass), __file__, __line__ )
600 var_name(i_sfc_temp), __file__, __line__ )
603 var_name(i_sfc_alb_ir_dir ), __file__, __line__ )
605 var_name(i_sfc_alb_ir_dif ), __file__, __line__ )
607 var_name(i_sfc_alb_nir_dir), __file__, __line__ )
609 var_name(i_sfc_alb_nir_dif), __file__, __line__ )
611 var_name(i_sfc_alb_vis_dir), __file__, __line__ )
613 var_name(i_sfc_alb_vis_dif), __file__, __line__ )
615 var_name(i_sfc_z0m), __file__, __line__ )
617 var_name(i_sfc_z0h), __file__, __line__ )
619 var_name(i_sfc_z0e), __file__, __line__ )
623 var_name(i_temp), var_desc(i_temp), &
624 var_unit(i_temp), standard_name=var_stdn(i_temp), &
640 var_name(i_ocn_z0m), var_desc(i_ocn_z0m), &
641 var_unit(i_ocn_z0m), standard_name=var_stdn(i_ocn_z0m) )
643 var_name(i_ice_temp), var_desc(i_ice_temp), &
644 var_unit(i_ice_temp), standard_name=var_stdn(i_ice_temp) )
646 var_name(i_ice_mass), var_desc(i_ice_mass), &
647 var_unit(i_ice_mass), standard_name=var_stdn(i_ice_mass) )
650 var_name(i_sfc_temp), var_desc(i_sfc_temp), &
651 var_unit(i_sfc_temp), standard_name=var_stdn(i_sfc_temp) )
653 var_name(i_sfc_alb_ir_dir), var_desc(i_sfc_alb_ir_dir), &
654 var_unit(i_sfc_alb_ir_dir), standard_name=var_stdn(i_sfc_alb_ir_dir) )
656 var_name(i_sfc_alb_ir_dif), var_desc(i_sfc_alb_ir_dif), &
657 var_unit(i_sfc_alb_ir_dif), standard_name=var_stdn(i_sfc_alb_ir_dif) )
659 var_name(i_sfc_alb_nir_dir), var_desc(i_sfc_alb_nir_dir), &
660 var_unit(i_sfc_alb_nir_dir), standard_name=var_stdn(i_sfc_alb_nir_dir) )
662 var_name(i_sfc_alb_nir_dif), var_desc(i_sfc_alb_nir_dif), &
663 var_unit(i_sfc_alb_nir_dif), standard_name=var_stdn(i_sfc_alb_nir_dif) )
665 var_name(i_sfc_alb_vis_dir), var_desc(i_sfc_alb_vis_dir), &
666 var_unit(i_sfc_alb_vis_dir), standard_name=var_stdn(i_sfc_alb_vis_dir) )
668 var_name(i_sfc_alb_vis_dif), var_desc(i_sfc_alb_vis_dif), &
669 var_unit(i_sfc_alb_vis_dif), standard_name=var_stdn(i_sfc_alb_vis_dif) )
671 var_name(i_sfc_z0m), var_desc(i_sfc_z0m), &
672 var_unit(i_sfc_z0m), standard_name=var_stdn(i_sfc_z0m) )
674 var_name(i_sfc_z0h), var_desc(i_sfc_z0h), &
675 var_unit(i_sfc_z0h), standard_name=var_stdn(i_sfc_z0h) )
677 var_name(i_sfc_z0e), var_desc(i_sfc_z0e), &
678 var_unit(i_sfc_z0e), standard_name=var_stdn(i_sfc_z0h) )
681 var_name(i_sflx_mw), var_desc(i_sflx_mw), &
682 var_unit(i_sflx_mw), standard_name=var_stdn(i_sflx_mw) )
684 var_name(i_sflx_mu), var_desc(i_sflx_mu), &
685 var_unit(i_sflx_mu), standard_name=var_stdn(i_sflx_mu) )
687 var_name(i_sflx_mv), var_desc(i_sflx_mv), &
688 var_unit(i_sflx_mv), standard_name=var_stdn(i_sflx_mv) )
690 var_name(i_sflx_sh), var_desc(i_sflx_sh), &
691 var_unit(i_sflx_sh), standard_name=var_stdn(i_sflx_sh) )
693 var_name(i_sflx_lh), var_desc(i_sflx_lh), &
694 var_unit(i_sflx_lh), standard_name=var_stdn(i_sflx_lh) )
697 var_name(i_sflx_evap), var_desc(i_sflx_evap), &
698 var_unit(i_sflx_evap), standard_name=var_stdn(i_sflx_evap) )
701 var_name(i_sflx_g), var_desc(i_sflx_g), &
702 var_unit(i_sflx_g), standard_name=var_stdn(i_sflx_g) )
704 var_name(i_sflx_water), var_desc(i_sflx_water), &
705 var_unit(i_sflx_water), standard_name=var_stdn(i_sflx_water) )
707 var_name(i_sflx_ice), var_desc(i_sflx_ice), &
708 var_unit(i_sflx_ice), standard_name=var_stdn(i_sflx_ice) )
710 var_name(i_ice_frac), var_desc(i_ice_frac), &
711 var_unit(i_ice_frac), standard_name=var_stdn(i_ice_frac) )
866 character(len=19) :: timelabel
867 character(len=H_LONG) :: basename
872 log_info(
"OCEAN_vars_restart_create",*)
'Create restart file (OCEAN) ' 880 log_info_cont(*)
'basename: ', trim(basename)
900 if ( restart_fid /= -1 )
then 915 if ( restart_fid /= -1 )
then 917 log_info(
"OCEAN_vars_restart_close",*)
'Close restart file (OCEAN) ' 937 if ( restart_fid /= -1 )
then 938 do i = i_temp, i_temp
940 var_name(i), var_desc(i), var_unit(i), &
943 standard_name=var_stdn(i) )
946 do i = i_ocn_z0m, i_sfc_z0e
948 var_name(i), var_desc(i), var_unit(i), &
951 standard_name=var_stdn(i) )
962 file_cartesc_write_var
966 if ( restart_fid /= -1 )
then 969 call file_cartesc_write_var( restart_fid, var_id(i_temp), &
971 var_name(i_temp),
'OXY', fill_halo=.true. )
982 call file_cartesc_write_var( restart_fid, var_id(i_ocn_z0m), &
984 var_name(i_ocn_z0m),
'XY', fill_halo=.true. )
985 call file_cartesc_write_var( restart_fid, var_id(i_ice_temp), &
987 var_name(i_ice_temp),
'XY', fill_halo=.true. )
988 call file_cartesc_write_var( restart_fid, var_id(i_ice_mass), &
990 var_name(i_ice_mass),
'XY', fill_halo=.true. )
991 call file_cartesc_write_var( restart_fid, var_id(i_sfc_temp), &
993 var_name(i_sfc_temp),
'XY', fill_halo=.true. )
994 call file_cartesc_write_var( restart_fid, var_id(i_sfc_alb_ir_dir), &
996 var_name(i_sfc_alb_ir_dir),
'XY', fill_halo=.true. )
997 call file_cartesc_write_var( restart_fid, var_id(i_sfc_alb_ir_dif), &
999 var_name(i_sfc_alb_ir_dif),
'XY', fill_halo=.true. )
1000 call file_cartesc_write_var( restart_fid, var_id(i_sfc_alb_nir_dir), &
1002 var_name(i_sfc_alb_nir_dir),
'XY', fill_halo=.true. )
1003 call file_cartesc_write_var( restart_fid, var_id(i_sfc_alb_nir_dif), &
1005 var_name(i_sfc_alb_nir_dif),
'XY', fill_halo=.true. )
1006 call file_cartesc_write_var( restart_fid, var_id(i_sfc_alb_vis_dir), &
1008 var_name(i_sfc_alb_vis_dir),
'XY', fill_halo=.true. )
1009 call file_cartesc_write_var( restart_fid, var_id(i_sfc_alb_vis_dif), &
1011 var_name(i_sfc_alb_vis_dif),
'XY', fill_halo=.true. )
1012 call file_cartesc_write_var( restart_fid, var_id(i_sfc_z0m), &
1014 var_name(i_sfc_z0m),
'XY', fill_halo=.true. )
1015 call file_cartesc_write_var( restart_fid, var_id(i_sfc_z0h), &
1017 var_name(i_sfc_z0h),
'XY', fill_halo=.true. )
1018 call file_cartesc_write_var( restart_fid, var_id(i_sfc_z0e), &
1020 var_name(i_sfc_z0e),
'XY', fill_halo=.true. )
real(rp), dimension(:,:), allocatable, public ocean_sflx_mu
ocean surface u-momentum flux [kg/m/s2]
real(rp), dimension(:,:), allocatable, public atmos_cossza
module coupler / surface-atmospehre
subroutine, public ocean_vars_restart_open
Open ocean restart file for read.
real(rp), dimension(:,:,:), allocatable, public ocean_grid_cartesc_real_vol
volume of grid cell
integer, parameter, public i_r_vis
subroutine, public ocean_vars_restart_write
Write ocean variables to restart file.
real(rp), dimension(:,:,:), allocatable, public ocean_uvel_t
tendency of OCEAN_OCN_UVEL
subroutine, public ocean_vars_history
History output set for ocean variables.
real(rp), dimension(:,:), allocatable, public ocean_sflx_mw
ocean surface w-momentum flux [kg/m/s2]
real(rp), dimension(:,:), allocatable, public ocean_ice_temp_t
tendency of OCEAN_ICE_TEMP
real(rp), dimension(:,:), allocatable, public ocean_sfc_temp
ocean surface skin temperature [K]
character(len=h_short), public ocean_restart_out_dtype
REAL4 or REAL8.
real(rp), dimension(:,:), allocatable, public ocean_ice_mass
sea ice mass [kg]
real(rp), dimension(:,:), allocatable, public ocean_grid_cartesc_real_area
area of grid cell
subroutine, public ocean_vars_restart_def_var
Define ocean variables in restart file.
integer, public io_fid_conf
Config file ID.
integer, parameter, public n_rad_dir
integer, parameter, public n_rad_rgn
real(rp), public ocean_grid_cartesc_real_totarea
total area
real(rp), dimension(:,:), allocatable, public ocean_u10
ocean surface velocity u at 10m [m/s]
logical, public statistics_checktotal
calc&report variable totals to logfile?
real(rp), dimension(:,:,:), allocatable, public ocean_temp_t
tendency of OCEAN_OCN_TEMP
subroutine, public ocean_vars_restart_enddef
Exit netCDF define mode.
real(rp), dimension(:,:), allocatable, public atmos_w
real(rp), dimension(:,:), allocatable, public ocean_sflx_g
ocean surface water heat flux [J/m2/s]
real(rp), public const_undef
real(rp), dimension(:,:), allocatable, public atmos_v
subroutine, public ocean_vars_restart_create
Create ocean restart file.
real(rp), dimension(:,:,:), allocatable, public ocean_sflx_qtrc
ocean surface tracer flux [kg/m2/s]
subroutine, public file_cartesc_create(basename, title, datatype, fid, date, subsec, haszcoord, append, aggregate, single)
Create/open a netCDF file.
real(rp), dimension(:,:), allocatable, public ocean_sflx_lh
ocean surface latent heat flux [J/m2/s]
real(rp), dimension(:,:), allocatable, public ocean_t2
ocean surface temperature at 2m [K]
module atmosphere / hydrometeor
real(rp), dimension(:,:), allocatable, public ocean_ice_frac
area fraction of sea ice [1]
real(rp), dimension(:,:,:), allocatable, public ocean_salt
ocean salinity [PSU]
real(rp), dimension(:,:), allocatable, public atmos_sflx_snow
subroutine, public time_gettimelabel(timelabel)
generate time label
real(rp), dimension(:,:), allocatable, public atmos_sfc_dens
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0h
ocean surface roughness length for heat [m]
module ocean / grid / cartesianC / real
real(rp), dimension(:,:), allocatable, public atmos_sfc_pres
real(rp), dimension(:,:), allocatable, public ocean_ice_mass_t
tendency of OCEAN_ICE_MASS
real(rp), dimension(:,:,:), allocatable, public ocean_temp
ocean temperature [K]
logical, public ocean_restart_out_postfix_timelabel
Add timelabel to the basename of output file?
subroutine, public ocean_vars_total
Budget monitor for ocean.
character(len=h_short), public ocean_ice_type
real(rp), dimension(:,:), allocatable, public ocean_q2
ocean surface water vapor at 2m [kg/kg]
logical, public ocean_restart_in_postfix_timelabel
Add timelabel to the basename of input file?
subroutine, public file_cartesc_enddef(fid)
Exit netCDF file define mode.
real(rp), dimension(:,:), allocatable, public atmos_pbl
real(rp), public ocean_grid_cartesc_real_totvol
total volume
real(rp), dimension(:,:), allocatable, public atmos_temp
subroutine, public ocean_vars_restart_read
Read ocean restart.
subroutine, public prc_abort
Abort Process.
integer, parameter, public i_r_direct
subroutine, public file_cartesc_def_var(fid, varname, desc, unit, dim_type, datatype, vid, standard_name, timeintv, nsteps, cell_measures)
Define a variable to file.
real(rp), dimension(:,:), allocatable, public ocean_v10
ocean surface velocity v at 10m [m/s]
logical function, public file_get_aggregate(fid)
real(rp), public ocean_phy_ice_freezetemp
subroutine, public prof_rapstart(rapname_base, level)
Start raptime.
module ocean / grid / cartesianC / index
real(rp), dimension(:,:), allocatable, public atmos_sflx_rain
subroutine, public ocean_phy_ice_fraction(OIA, OIS, OIE, OJA, OJS, OJE, ICE_MASS, ICE_FRAC)
real(rp), dimension(:,:), allocatable, public ocean_sflx_ice
ocean surface ice water flux [kg/m2/s]
real(rp), dimension(:,:), allocatable, public atmos_u
integer, parameter, public i_r_nir
real(rp), dimension(:,:,:), allocatable, public ocean_vvel
ocean meridional velocity [m/s]
real(rp), dimension(:,:,:), allocatable, public ocean_salt_t
tendency of OCEAN_OCN_SALT
module ocean / physics / ice / simple
real(rp), dimension(:,:), allocatable, public ocean_sflx_mv
ocean surface v-momentum flux [kg/m/s2]
real(rp), dimension(:,:), allocatable, public atmos_pres
subroutine, public ocean_vars_setup
Setup.
real(rp), dimension(:,:), allocatable, public ocean_sflx_water
ocean surface liquid water flux [kg/m2/s]
character(len=h_long), public ocean_restart_in_basename
Basename of the input file.
real(rp), dimension(:,:), allocatable, public atmos_dens
character(len=h_long), public ocean_restart_out_basename
Basename of the output file.
integer, parameter, public i_r_ir
real(rp), dimension(:,:), allocatable, public ocean_ice_temp
sea ice temperature [K]
logical, public ocean_restart_in_aggregate
Switch to use aggregate file.
real(rp), dimension(:,:), allocatable, public ocean_ocn_z0m
surface roughness length for momentum, open ocean [m]
integer, parameter, public i_r_diffuse
subroutine, public file_cartesc_flush(fid)
Flush all pending requests to a netCDF file (PnetCDF only)
real(rp), dimension(:,:,:), allocatable, public ocean_vvel_t
tendency of OCEAN_OCN_VVEL
logical, public ocean_restart_output
Output restart file?
subroutine, public ocean_vars_restart_close
Close restart file.
real(rp), dimension(:,:,:,:), allocatable, public ocean_sfc_albedo
ocean surface albedo (direct/diffuse,IR/near-IR/VIS) (0-1)
subroutine, public prof_rapend(rapname_base, level)
Save raptime.
subroutine, public file_cartesc_open(basename, fid, aggregate)
open a netCDF file for read
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0m
ocean surface roughness length for momentum [m]
real(rp), dimension(:,:,:), allocatable, public ocean_uvel
ocean zonal velocity [m/s]
subroutine, public file_cartesc_close(fid)
Close a netCDF file.
real(rp), dimension(:,:), allocatable, public ocean_sfc_z0e
ocean surface roughness length for vapor [m]
real(rp), dimension(:,:), allocatable, public atmos_qv
character(len=h_mid), public ocean_restart_out_title
Title of the output file.
real(rp), dimension(:,:,:,:), allocatable, public atmos_sflx_rad_dn
logical, public ocean_restart_out_aggregate
Switch to use aggregate file.
real(rp), dimension(:,:), allocatable, public ocean_sflx_sh
ocean surface sensible heat flux [J/m2/s]