85 real(RP),
public,
allocatable ::
land_t2 (:,:)
86 real(RP),
public,
allocatable ::
land_q2 (:,:)
91 real(RP),
public,
allocatable ::
atmos_w (:,:)
92 real(RP),
public,
allocatable ::
atmos_u (:,:)
93 real(RP),
public,
allocatable ::
atmos_v (:,:)
95 real(RP),
public,
allocatable ::
atmos_qv (:,:)
113 integer,
public,
parameter ::
i_z0m = 6
114 integer,
public,
parameter ::
i_z0h = 7
115 integer,
public,
parameter ::
i_z0e = 8
121 private :: land_param_read
127 logical,
private :: land_vars_checkrange = .false.
129 integer,
private,
parameter :: vmax = 13
130 integer,
private,
parameter :: i_temp = 1
131 integer,
private,
parameter :: i_water = 2
132 integer,
private,
parameter :: i_waterds = 3
133 integer,
private,
parameter :: i_sfc_temp = 4
134 integer,
private,
parameter :: i_alb_lw = 5
135 integer,
private,
parameter :: i_alb_sw = 6
136 integer,
private,
parameter :: i_sflx_mw = 7
137 integer,
private,
parameter :: i_sflx_mu = 8
138 integer,
private,
parameter :: i_sflx_mv = 9
139 integer,
private,
parameter :: i_sflx_sh = 10
140 integer,
private,
parameter :: i_sflx_lh = 11
141 integer,
private,
parameter :: i_sflx_gh = 12
142 integer,
private,
parameter :: i_sflx_evap = 13
144 character(len=H_SHORT),
private :: var_name(vmax)
145 character(len=H_MID),
private :: var_desc(vmax)
146 character(len=H_SHORT),
private :: var_unit(vmax)
147 integer,
private :: var_id(vmax)
148 integer,
private :: restart_fid = -1
150 data var_name /
'LAND_TEMP', &
163 data var_desc /
'temperature at each soil layer', &
164 'moisture at each soil layer', &
165 'degree of saturation at each soil layer', &
166 'land surface skin temperature', &
167 'land surface albedo (longwave)', &
168 'land surface albedo (shortwave)', &
169 'land surface w-momentum flux', &
170 'land surface u-momentum flux', &
171 'land surface v-momentum flux', &
172 'land surface sensible heat flux', &
173 'land surface latent heat flux', &
174 'land surface ground heat flux', &
175 'land surface water vapor flux' /
176 data var_unit /
'K', &
190 real(RP),
private,
allocatable :: land_property_table(:,:)
192 integer,
private :: land_qa_comm
193 real(RP),
private,
allocatable :: work_comm(:,:,:)
195 logical,
private :: land_restart_in_check_coordinates = .true.
214 namelist / param_land_vars / &
217 land_restart_in_check_coordinates, &
226 integer :: i, j, iv, p
230 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[VARS] / Categ[LAND] / Origin[SCALE-RM]' 301 land_qa_comm =
lkmax &
306 allocate( work_comm(
ia,
ja,land_qa_comm) )
312 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 313 elseif( ierr > 0 )
then 314 write(*,*)
'xxx Not appropriate names in namelist PARAM_LAND_VARS. Check!' 320 if(
io_l )
write(
io_fid_log,*)
'*** List of prognostic variables (LAND) ***' 322 '*** |',
'VARNAME ',
'|', &
323 'DESCRIPTION ',
'[',
'UNIT ',
']' 325 if(
io_l )
write(
io_fid_log,
'(1x,A,I3,A,A24,A,A48,A,A12,A)') &
326 '*** NO.',iv,
'|',var_name(iv),
'|',var_desc(iv),
'[',var_unit(iv),
']' 347 land_property_table(:,:) = undef
380 fileio_check_coordinates
385 character(len=19) :: timelabel
386 character(len=H_LONG) :: basename
406 if ( land_restart_in_check_coordinates )
then 407 call fileio_check_coordinates( restart_fid, land=.true. )
411 if(
io_l )
write(
io_fid_log,*)
'*** restart file for land is not specified.' 426 if ( restart_fid /= -1 )
then 428 if(
io_l )
write(
io_fid_log,*)
'*** Read from restart file (LAND) ***' 431 restart_fid, var_name(i_temp),
'Land', step=1 )
433 restart_fid, var_name(i_water),
'Land', step=1 )
435 restart_fid, var_name(i_sfc_temp),
'XY', step=1 )
437 restart_fid, var_name(i_alb_lw),
'XY', step=1 )
439 restart_fid, var_name(i_alb_sw),
'XY', step=1 )
441 restart_fid, var_name(i_sflx_mw),
'XY', step=1 )
443 restart_fid, var_name(i_sflx_mu),
'XY', step=1 )
445 restart_fid, var_name(i_sflx_mv),
'XY', step=1 )
447 restart_fid, var_name(i_sflx_sh),
'XY', step=1 )
449 restart_fid, var_name(i_sflx_lh),
'XY', step=1 )
451 restart_fid, var_name(i_sflx_gh),
'XY', step=1 )
453 restart_fid, var_name(i_sflx_evap),
'XY', step=1 )
459 if(
io_l )
write(
io_fid_log,*)
'*** invalid restart file ID for land.' 476 if ( land_vars_checkrange )
then 489 call hist_in(
land_temp(:,:,:), var_name(i_temp), var_desc(i_temp), var_unit(i_temp), zdim=
'land' )
490 call hist_in(
land_water(:,:,:), var_name(i_water), var_desc(i_water), var_unit(i_water), zdim=
'land' )
498 call hist_in( land_waterds(:,:,:), var_name(i_waterds), var_desc(i_waterds), var_unit(i_waterds), zdim=
'land', nohalo=.true. )
501 call hist_in(
land_sfc_temp(:,:), var_name(i_sfc_temp), var_desc(i_sfc_temp), var_unit(i_sfc_temp) )
502 call hist_in(
land_sfc_albedo(:,:,i_lw), var_name(i_alb_lw), var_desc(i_alb_lw), var_unit(i_alb_lw) )
503 call hist_in(
land_sfc_albedo(:,:,i_sw), var_name(i_alb_sw), var_desc(i_alb_sw), var_unit(i_alb_sw) )
505 call hist_in(
land_sflx_mw(:,:), var_name(i_sflx_mw), var_desc(i_sflx_mw), var_unit(i_sflx_mw) )
506 call hist_in(
land_sflx_mu(:,:), var_name(i_sflx_mu), var_desc(i_sflx_mu), var_unit(i_sflx_mu) )
507 call hist_in(
land_sflx_mv(:,:), var_name(i_sflx_mv), var_desc(i_sflx_mv), var_unit(i_sflx_mv) )
508 call hist_in(
land_sflx_sh(:,:), var_name(i_sflx_sh), var_desc(i_sflx_sh), var_unit(i_sflx_sh) )
509 call hist_in(
land_sflx_lh(:,:), var_name(i_sflx_lh), var_desc(i_sflx_lh), var_unit(i_sflx_lh) )
510 call hist_in(
land_sflx_gh(:,:), var_name(i_sflx_gh), var_desc(i_sflx_gh), var_unit(i_sflx_gh) )
511 call hist_in(
land_sflx_evap(:,:), var_name(i_sflx_evap), var_desc(i_sflx_evap), var_unit(i_sflx_evap) )
526 character(len=2) :: sk
535 call stat_total( total,
land_temp(k,:,:), trim(var_name(i_temp) )//sk )
536 call stat_total( total,
land_water(k,:,:), trim(var_name(i_water))//sk )
539 call stat_total( total,
land_sfc_temp(:,:), var_name(i_sfc_temp) )
540 call stat_total( total,
land_sfc_albedo(:,:,i_lw), var_name(i_alb_lw) )
541 call stat_total( total,
land_sfc_albedo(:,:,i_sw), var_name(i_alb_sw) )
557 real(RP),
intent(in) :: land_temp_in (:,:,:)
558 real(RP),
intent(in) :: land_water_in(:,:,:)
559 real(RP),
intent(in) :: land_sfc_temp_in (
ia,
ja)
560 real(RP),
intent(in) :: land_sfc_albedo_in(
ia,
ja,2)
586 subroutine land_param_read
594 character(len=H_MID) :: description
604 namelist / param_land_property / &
607 namelist / param_land_data / &
622 integer :: io_fid_land_property
627 read(
io_fid_conf,nml=param_land_property,iostat=ierr)
629 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 630 elseif( ierr > 0 )
then 631 write(*,*)
'xxx Not appropriate names in namelist PARAM_LAND_PROPERTY. Check!' 639 open( io_fid_land_property, &
641 form =
'formatted', &
645 if ( ierr /= 0 )
then 646 write(*,*)
'xxx [LAND_param_read] Failed to open land parameter file! :', &
651 if(
io_l )
write(
io_fid_log,*)
'*** Properties for each plant functional type (PFT)' 664 rewind(io_fid_land_property)
671 read(io_fid_land_property,nml=param_land_data,iostat=ierr)
674 elseif( ierr > 0 )
then 675 write(*,*)
'xxx Not appropriate names in namelist PARAM_LAND_DATA. Check!' 679 if( z0h < 0.0_rp )
then 682 if( z0e < 0.0_rp )
then 691 land_property_table(index,
i_z0m ) = z0m
692 land_property_table(index,
i_z0h ) = z0h
693 land_property_table(index,
i_z0e ) = z0e
695 if(
io_l )
write(
io_fid_log,
'(1x,A10,I3.3,1x,A32,3(1x,F8.2),(1x,ES8.1),4(1x,F8.2))') &
696 '*** IDX = ', index, &
710 close( io_fid_land_property )
715 end subroutine land_param_read
722 real(RP),
intent(in) :: ws(
ia,
ja)
723 logical,
intent(in) :: critical
725 real(RP) :: vwc(
ia,
ja)
757 character(len=19) :: timelabel
758 character(len=H_LONG) :: basename
764 if(
io_l )
write(
io_fid_log,*)
'*** Create restart file (LAND) ***' 790 if ( restart_fid /= -1 )
then 805 if ( restart_fid /= -1 )
then 807 if(
io_l )
write(
io_fid_log,*)
'*** Close restart file (LAND) ***' 825 if ( restart_fid /= -1 )
then 827 call fileio_def_var( restart_fid, var_id(i_temp), var_name(i_temp), var_desc(i_temp), &
829 call fileio_def_var( restart_fid, var_id(i_water), var_name(i_water), var_desc(i_water), &
831 call fileio_def_var( restart_fid, var_id(i_sfc_temp), var_name(i_sfc_temp), var_desc(i_sfc_temp), &
833 call fileio_def_var( restart_fid, var_id(i_alb_lw), var_name(i_alb_lw), var_desc(i_alb_lw), &
835 call fileio_def_var( restart_fid, var_id(i_alb_sw), var_name(i_alb_sw), var_desc(i_alb_sw), &
837 call fileio_def_var( restart_fid, var_id(i_sflx_mw), var_name(i_sflx_mw), var_desc(i_sflx_mw), &
839 call fileio_def_var( restart_fid, var_id(i_sflx_mu), var_name(i_sflx_mu), var_desc(i_sflx_mu), &
841 call fileio_def_var( restart_fid, var_id(i_sflx_mv), var_name(i_sflx_mv), var_desc(i_sflx_mv), &
843 call fileio_def_var( restart_fid, var_id(i_sflx_sh), var_name(i_sflx_sh), var_desc(i_sflx_sh), &
845 call fileio_def_var( restart_fid, var_id(i_sflx_lh), var_name(i_sflx_lh), var_desc(i_sflx_lh), &
847 call fileio_def_var( restart_fid, var_id(i_sflx_gh), var_name(i_sflx_gh), var_desc(i_sflx_gh), &
849 call fileio_def_var( restart_fid, var_id(i_sflx_evap), var_name(i_sflx_evap), var_desc(i_sflx_evap), &
865 if ( restart_fid /= -1 )
then 869 call fileio_write_var( restart_fid, var_id(i_temp),
land_temp(:,:,:), &
870 var_name(i_temp),
'Land', nohalo=.true. )
871 call fileio_write_var( restart_fid, var_id(i_water),
land_water(:,:,:), &
872 var_name(i_water),
'Land', nohalo=.true. )
873 call fileio_write_var( restart_fid, var_id(i_sfc_temp),
land_sfc_temp(:,:), &
874 var_name(i_sfc_temp),
'XY', nohalo=.true. )
875 call fileio_write_var( restart_fid, var_id(i_alb_lw),
land_sfc_albedo(:,:,i_lw), &
876 var_name(i_alb_lw),
'XY', nohalo=.true. )
877 call fileio_write_var( restart_fid, var_id(i_alb_sw),
land_sfc_albedo(:,:,i_sw), &
878 var_name(i_alb_sw),
'XY', nohalo=.true. )
879 call fileio_write_var( restart_fid, var_id(i_sflx_mw),
land_sflx_mw(:,:), &
880 var_name(i_sflx_mw),
'XY', nohalo=.true. )
881 call fileio_write_var( restart_fid, var_id(i_sflx_mu),
land_sflx_mu(:,:), &
882 var_name(i_sflx_mu),
'XY', nohalo=.true. )
883 call fileio_write_var( restart_fid, var_id(i_sflx_mv),
land_sflx_mv(:,:), &
884 var_name(i_sflx_mv),
'XY', nohalo=.true. )
885 call fileio_write_var( restart_fid, var_id(i_sflx_sh),
land_sflx_sh(:,:), &
886 var_name(i_sflx_sh),
'XY', nohalo=.true. )
887 call fileio_write_var( restart_fid, var_id(i_sflx_lh),
land_sflx_lh(:,:), &
888 var_name(i_sflx_lh),
'XY', nohalo=.true. )
889 call fileio_write_var( restart_fid, var_id(i_sflx_gh),
land_sflx_gh(:,:), &
890 var_name(i_sflx_gh),
'XY', nohalo=.true. )
891 call fileio_write_var( restart_fid, var_id(i_sflx_evap),
land_sflx_evap(:,:), &
892 var_name(i_sflx_evap),
'XY', nohalo=.true. )
integer, public is
start point of inner domain: x, local
logical, public statistics_checktotal
calc&report variable totals to logfile?
real(rp), dimension(:,:), allocatable, public land_v10
land surface velocity v at 10m [m/s]
integer, public je
end point of inner domain: y, local
real(rp), dimension(:,:), allocatable, public land_sflx_mw
land surface w-momentum flux [kg/m2/s]
subroutine, public land_vars_restart_close
Close restart file.
integer, public const_i_lw
long-wave radiation index
subroutine, public prc_mpistop
Abort MPI.
logical, public land_restart_output
Output restart file?
integer, parameter, public i_heatcapacity
integer, parameter, public i_waterlimit
real(rp), dimension(:,:), allocatable, public atmos_qv
real(rp), dimension(:,:), allocatable, public land_sflx_sh
land surface sensible heat flux [J/m2/s]
logical, public io_l
output log or not? (this process)
subroutine, public fileio_flush(fid)
Flush all pending requests to a netCDF file (PnetCDF only)
real(rp), dimension(:,:), allocatable, public atmos_pbl
subroutine, public land_vars_setup
Setup.
real(rp), dimension(:,:), allocatable, public atmos_sflx_prec
real(rp), dimension(:,:), allocatable, public atmos_u
integer, parameter, public i_watercritical
subroutine, public land_vars_restart_enddef
Exit netCDF define mode.
real(rp), dimension(:,:,:), allocatable, public land_sfc_albedo_t
tendency of LAND_SFC_albedo
real(rp), dimension(:,:), allocatable, public land_sflx_lh
land surface latent heat flux [J/m2/s]
character(len=h_long), public land_restart_in_basename
Basename of the input file.
character(len=h_short), public land_restart_out_dtype
REAL4 or REAL8.
real(rp), dimension(:,:), allocatable, public atmos_w
integer, parameter, public i_z0h
real(rp), dimension(:,:), allocatable, public land_sflx_evap
land surface water vapor flux [kg/m2/s]
integer, parameter, public i_z0e
real(rp), public const_undef
real(rp), dimension(:,:), allocatable, public atmos_sfc_pres
subroutine, public land_vars_restart_create
Create land restart file.
subroutine, public land_vars_restart_read
Read land restart.
real(rp), dimension(:,:), allocatable, public atmos_pres
real(rp), dimension(:,:), allocatable, public land_sfc_temp
land surface skin temperature [K]
real(rp), dimension(:,:), allocatable, public atmos_temp
logical, public io_nml
output log or not? (for namelist, this process)
real(rp), dimension(:,:), allocatable, public land_sflx_mu
land surface u-momentum flux [kg/m2/s]
real(rp), dimension(:,:), allocatable, public land_q2
land surface water vapor at 2m [kg/kg]
integer, public ia
of whole cells: x, local, with HALO
real(rp), dimension(:,:), allocatable, public land_t2
land surface temperature at 2m [K]
integer function, public io_get_available_fid()
search & get available file ID
subroutine, public time_gettimelabel(timelabel)
generate time label
real(rp) function, dimension(ia, ja), public convert_ws2vwc(WS, critical)
conversion from water saturation [fraction] to volumetric water content [m3/m3]
logical, public land_restart_in_postfix_timelabel
Add timelabel to the basename of input file?
character(len=h_long), public land_restart_out_basename
Basename of the output file.
subroutine, public fileio_create(fid, basename, title, datatype, date, subsec, append, nozcoord)
Create/open a netCDF file.
subroutine, public land_vars_restart_def_var
Define land variables in restart file.
real(rp), dimension(:,:,:), allocatable, public land_temp
temperature of each soil layer [K]
integer, public js
start point of inner domain: y, local
real(rp), dimension(:,:), allocatable, public land_u10
land surface velocity u at 10m [m/s]
integer, dimension(:,:,:), allocatable, public landuse_index_pft
index of PFT for each mosaic
real(rp), dimension(:,:,:), allocatable, public land_water_t
tendency of LAND_WATER
real(rp), dimension(:,:,:), allocatable, public land_sfc_albedo
land surface albedo (0-1)
real(rp), dimension(:,:), allocatable, public land_sfc_temp_t
tendency of LAND_SFC_TEMP
real(rp), dimension(:,:), allocatable, public atmos_dens
real(rp), dimension(:,:), allocatable, public land_sflx_gh
land surface heat flux [J/m2/s]
real(rp), dimension(:,:), allocatable, public atmos_v
subroutine, public fileio_enddef(fid)
Exit netCDF file define mode.
real(rp), dimension(:,:,:), allocatable, public land_water
moisture of each soil layer [m3/m3]
subroutine, public land_vars_external_in(LAND_TEMP_in, LAND_WATER_in, LAND_SFC_TEMP_in, LAND_SFC_albedo_in)
Input from External I/O.
logical, public land_restart_out_postfix_timelabel
Add timelabel to the basename of output file?
subroutine, public land_vars_total
Budget monitor for land.
real(rp), dimension(:,:), allocatable, public land_sflx_mv
land surface v-momentum flux [kg/m2/s]
character(len=h_mid), public land_restart_out_title
Title of the output file.
integer, public ie
end point of inner domain: x, local
real(rp), dimension(:,:,:), allocatable, public land_temp_t
tendency of LAND_TEMP
integer, parameter, public i_z0m
character(len=h_long), public land_property_in_filename
the file of land parameter table
logical, public io_aggregate
do parallel I/O through PnetCDF
subroutine, public fileio_open(fid, basename)
open a netCDF file for read
integer, public const_i_sw
short-wave radiation index
subroutine, public fileio_def_var(fid, vid, varname, desc, unit, axistype, datatype, timeintv, nsteps)
Define a variable to file.
subroutine, public land_vars_history
History output set for land variables.
integer, public landuse_pft_nmax
number of plant functional type(PFT)
subroutine, public land_vars_restart_open
Open land restart file for read.
subroutine, public fileio_close(fid)
Close a netCDF file.
integer, parameter, public land_property_nmax
integer, public io_fid_conf
Config file ID.
integer, public io_fid_log
Log file ID.
subroutine, public land_vars_restart_write
Write land variables to restart file.
real(rp), dimension(:,:), allocatable, public atmos_sflx_sw
integer, parameter, public i_thermalcond
real(rp), dimension(:,:), allocatable, public atmos_cossza
integer, parameter, public i_waterdiff
real(rp), dimension(:,:,:), allocatable, public land_property
land surface property
integer, public io_fid_nml
Log file ID (only for output namelist)
real(rp), dimension(:,:), allocatable, public atmos_sflx_lw
integer, public ja
of whole cells: y, local, with HALO