SCALE-RM
Functions/Subroutines | Variables
scale_landuse Module Reference

module LANDUSE More...

Functions/Subroutines

subroutine, public landuse_setup
 Setup. More...
 
subroutine, public landuse_calc_fact
 
subroutine, public landuse_write
 Write landuse data. More...
 

Variables

real(rp), dimension(:,:), allocatable, public landuse_fact_ocean
 ocean factor More...
 
real(rp), dimension(:,:), allocatable, public landuse_fact_land
 land factor More...
 
real(rp), dimension(:,:), allocatable, public landuse_fact_urban
 urban factor More...
 
real(rp), dimension(:,:), allocatable, public landuse_frac_land
 land fraction More...
 
real(rp), dimension(:,:), allocatable, public landuse_frac_lake
 lake fraction More...
 
real(rp), dimension(:,:), allocatable, public landuse_frac_urban
 urban fraction More...
 
integer, public landuse_pft_mosaic = 2
 number of PFT mosaic More...
 
integer, public landuse_pft_nmax = 15
 number of plant functional type(PFT) More...
 
real(rp), dimension(:,:,:), allocatable, public landuse_frac_pft
 fraction of PFT for each mosaic More...
 
integer, dimension(:,:,:), allocatable, public landuse_index_pft
 index of PFT for each mosaic More...
 

Detailed Description

module LANDUSE

Description
Land use category module Manage land/lake/urban/PFT fraction and PFT index
Author
Team SCALE

Function/Subroutine Documentation

◆ landuse_setup()

subroutine, public scale_landuse::landuse_setup ( )

Setup.

Definition at line 73 of file scale_landuse.F90.

References scale_grid_index::ia, scale_stdio::io_fid_conf, scale_stdio::io_fid_log, scale_stdio::io_l, scale_stdio::io_lnml, scale_grid_index::ja, landuse_calc_fact(), landuse_fact_land, landuse_fact_ocean, landuse_fact_urban, landuse_frac_lake, landuse_frac_land, landuse_frac_pft, landuse_frac_urban, landuse_index_pft, landuse_pft_mosaic, landuse_pft_nmax, and scale_process::prc_mpistop().

Referenced by mod_rm_driver::scalerm(), and mod_rm_prep::scalerm_prep().

73  use scale_process, only: &
75  implicit none
76 
77  namelist / param_landuse / &
78  landuse_in_basename, &
79  landuse_out_basename, &
80  landuse_out_dtype, &
81  landuse_pft_mosaic, &
82  landuse_pft_nmax, &
83  landuse_allocean, &
84  landuse_allland, &
85  landuse_allurban, &
86  landuse_mosaicworld
87 
88  integer :: ierr
89  !---------------------------------------------------------------------------
90 
91  if( io_l ) write(io_fid_log,*)
92  if( io_l ) write(io_fid_log,*) '++++++ Module[LANDUSE] / Categ[COUPLER] / Origin[SCALElib]'
93 
94  !--- read namelist
95  rewind(io_fid_conf)
96  read(io_fid_conf,nml=param_landuse,iostat=ierr)
97  if( ierr < 0 ) then !--- missing
98  if( io_l ) write(io_fid_log,*) '*** Not found namelist. Default used.'
99  elseif( ierr > 0 ) then !--- fatal error
100  write(*,*) 'xxx Not appropriate names in namelist PARAM_LANDUSE. Check!'
101  call prc_mpistop
102  endif
103  if( io_lnml ) write(io_fid_log,nml=param_landuse)
104 
105  allocate( landuse_frac_land(ia,ja) )
106  allocate( landuse_frac_lake(ia,ja) )
107  allocate( landuse_frac_urban(ia,ja) )
108  landuse_frac_land(:,:) = 0.0_rp
109  landuse_frac_lake(:,:) = 0.0_rp
110  landuse_frac_urban(:,:) = 0.0_rp
111 
112  allocate( landuse_index_pft(ia,ja,landuse_pft_mosaic) )
113  allocate( landuse_frac_pft(ia,ja,landuse_pft_mosaic) )
114  landuse_frac_pft(:,:,:) = 0.0_rp
115  landuse_frac_pft(:,:,1) = 1.0_rp ! tentative, mosaic is off
116  landuse_index_pft(:,:,:) = 1 ! default
117 
118  allocate( landuse_fact_ocean(ia,ja) )
119  allocate( landuse_fact_land(ia,ja) )
120  allocate( landuse_fact_urban(ia,ja) )
121  landuse_fact_ocean(:,:) = 0.0_rp
122  landuse_fact_land(:,:) = 0.0_rp
123  landuse_fact_urban(:,:) = 0.0_rp
124 
125 
126  if ( landuse_allocean ) then
127  if( io_l ) write(io_fid_log,*) '*** Assume all grids are ocean'
128  call landuse_calc_fact
129  elseif( landuse_allland ) then
130  if( io_l ) write(io_fid_log,*) '*** Assume all grids are land'
131  landuse_frac_land(:,:) = 1.0_rp
132  call landuse_calc_fact
133  elseif( landuse_allurban ) then
134  if( io_l ) write(io_fid_log,*) '*** Assume all grids are land'
135  landuse_frac_land(:,:) = 1.0_rp
136  if( io_l ) write(io_fid_log,*) '*** Assume all lands are urban'
137  landuse_frac_urban(:,:) = 1.0_rp
138  call landuse_calc_fact
139  elseif( landuse_mosaicworld ) then
140  if( io_l ) write(io_fid_log,*) '*** Assume all grids have ocean, land, and urban'
141  landuse_frac_land(:,:) = 0.5_rp
142  landuse_frac_urban(:,:) = 0.5_rp
143  call landuse_calc_fact
144  else
145  ! read from file
146  call landuse_read
147  endif
148 
149  return
subroutine, public prc_mpistop
Abort MPI.
integer, public ia
of x whole cells (local, with HALO)
module PROCESS
integer, public io_fid_conf
Config file ID.
Definition: scale_stdio.F90:55
real(rp), dimension(:,:), allocatable, public landuse_fact_land
land factor
integer, public ja
of y whole cells (local, with HALO)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ landuse_calc_fact()

subroutine, public scale_landuse::landuse_calc_fact ( )

Definition at line 154 of file scale_landuse.F90.

References scale_stdio::io_fid_log, scale_stdio::io_l, landuse_fact_land, landuse_fact_ocean, landuse_fact_urban, landuse_frac_lake, landuse_frac_land, landuse_frac_pft, landuse_frac_urban, landuse_index_pft, and landuse_pft_mosaic.

Referenced by mod_cnvlanduse::cnvlanduse(), mod_mkinit::interporation_fact(), and landuse_setup().

154  implicit none
155  !---------------------------------------------------------------------------
156 
157  if( io_l ) write(io_fid_log,*)
158  if( io_l ) write(io_fid_log,*) '+++ calculate landuse factor'
159 
160  ! tentative treatment for lake fraction
161  landuse_frac_land(:,:) = landuse_frac_land(:,:) * ( 1.0_rp - landuse_frac_lake(:,:) )
162 
163  ! make factors
164  landuse_fact_ocean(:,:) = ( 1.0_rp - landuse_frac_land(:,:) )
165  landuse_fact_land(:,:) = ( landuse_frac_land(:,:) ) * ( 1.0_rp - landuse_frac_urban(:,:) )
166  landuse_fact_urban(:,:) = ( landuse_frac_land(:,:) ) * ( landuse_frac_urban(:,:) )
167 
168  return
real(rp), dimension(:,:), allocatable, public landuse_fact_land
land factor
Here is the caller graph for this function:

◆ landuse_write()

subroutine, public scale_landuse::landuse_write ( )

Write landuse data.

Definition at line 253 of file scale_landuse.F90.

References scale_stdio::io_fid_log, scale_stdio::io_l, landuse_fact_land, landuse_fact_ocean, landuse_fact_urban, landuse_frac_lake, landuse_frac_land, landuse_frac_pft, landuse_frac_urban, and landuse_pft_mosaic.

Referenced by mod_cnvlanduse::cnvlanduse(), and mod_mkinit::mkinit().

253  use scale_fileio, only: &
254  fileio_write
255  implicit none
256 
257  real(RP) :: temp(ia,ja)
258 
259  character(len=H_SHORT) :: varname
260  integer :: p
261  !---------------------------------------------------------------------------
262 
263  if ( landuse_out_basename /= '' ) then
264 
265  if( io_l ) write(io_fid_log,*)
266  if( io_l ) write(io_fid_log,*) '*** Output landuse file ***'
267 
268  call fileio_write( landuse_frac_land(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
269  'FRAC_LAND', 'LAND fraction', '1', 'XY', landuse_out_dtype, & ! [IN]
270  nozcoord=.true. )
271 
272  call fileio_write( landuse_frac_lake(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
273  'FRAC_LAKE', 'LAKE fraction', '1', 'XY', landuse_out_dtype, & ! [IN]
274  nozcoord=.true. )
275  call fileio_write( landuse_frac_urban(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
276  'FRAC_URBAN', 'URBAN fraction', '1', 'XY', landuse_out_dtype, & ! [IN]
277  nozcoord=.true. )
278 
279  do p = 1, landuse_pft_mosaic
280  write(varname,'(A8,I1.1)') 'FRAC_PFT', p
281 
282  call fileio_write( landuse_frac_pft(:,:,p), landuse_out_basename, landuse_out_title, & ! [IN]
283  varname, 'PFT fraction', '1', 'XY', landuse_out_dtype, & ! [IN]
284  nozcoord=.true. )
285 
286  write(varname,'(A9,I1.1)') 'INDEX_PFT', p
287  temp(:,:) = real(LANDUSE_index_PFT(:,:,p),kind=rp)
288 
289  call fileio_write( temp(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
290  varname, 'PFT index', '1', 'XY', landuse_out_dtype, & ! [IN]
291  nozcoord=.true. )
292  enddo
293 
294  call fileio_write( landuse_fact_ocean(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
295  'FRAC_OCEAN_abs', 'absolute OCEAN fraction', '0-1', 'XY', landuse_out_dtype, & ! [IN]
296  nozcoord=.true. )
297 
298  call fileio_write( landuse_fact_land(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
299  'FRAC_LAND_abs ', 'absolute LAND fraction', '0-1', 'XY', landuse_out_dtype, & ! [IN]
300  nozcoord=.true. )
301 
302  call fileio_write( landuse_fact_urban(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
303  'FRAC_URBAN_abs', 'absolute URBAN fraction', '0-1', 'XY', landuse_out_dtype, & ! [IN]
304  nozcoord=.true. )
305  endif
306 
307  return
module FILE I/O (netcdf)
integer, public ia
of x whole cells (local, with HALO)
real(rp), dimension(:,:), allocatable, public landuse_fact_land
land factor
integer, parameter, public rp
integer, public ja
of y whole cells (local, with HALO)
Here is the caller graph for this function:

Variable Documentation

◆ landuse_fact_ocean

real(rp), dimension(:,:), allocatable, public scale_landuse::landuse_fact_ocean

◆ landuse_fact_land

real(rp), dimension (:,:), allocatable, public scale_landuse::landuse_fact_land

◆ landuse_fact_urban

real(rp), dimension(:,:), allocatable, public scale_landuse::landuse_fact_urban

◆ landuse_frac_land

real(rp), dimension (:,:), allocatable, public scale_landuse::landuse_frac_land

land fraction

Definition at line 39 of file scale_landuse.F90.

Referenced by mod_cnvlanduse::cnvlanduse(), scale_history::hist_switch(), mod_mkinit::interporation_fact(), landuse_calc_fact(), landuse_setup(), landuse_write(), and mod_realinput::parentatomsetup().

39  real(RP), public, allocatable :: landuse_frac_land (:,:)

◆ landuse_frac_lake

real(rp), dimension (:,:), allocatable, public scale_landuse::landuse_frac_lake

lake fraction

Definition at line 40 of file scale_landuse.F90.

Referenced by mod_cnvlanduse::cnvlanduse(), landuse_calc_fact(), landuse_setup(), and landuse_write().

40  real(RP), public, allocatable :: landuse_frac_lake (:,:)

◆ landuse_frac_urban

real(rp), dimension(:,:), allocatable, public scale_landuse::landuse_frac_urban

urban fraction

Definition at line 41 of file scale_landuse.F90.

Referenced by mod_cnvlanduse::cnvlanduse(), mod_mkinit::interporation_fact(), landuse_calc_fact(), landuse_setup(), and landuse_write().

41  real(RP), public, allocatable :: landuse_frac_urban(:,:)

◆ landuse_pft_mosaic

integer, public scale_landuse::landuse_pft_mosaic = 2

number of PFT mosaic

Definition at line 43 of file scale_landuse.F90.

Referenced by mod_cnvlanduse::cnvlanduse(), landuse_calc_fact(), landuse_setup(), and landuse_write().

43  integer, public :: landuse_pft_mosaic = 2

◆ landuse_pft_nmax

integer, public scale_landuse::landuse_pft_nmax = 15

number of plant functional type(PFT)

Definition at line 44 of file scale_landuse.F90.

Referenced by mod_cnvlanduse::cnvlanduse(), mod_land_vars::land_vars_external_in(), mod_land_vars::land_vars_setup(), and landuse_setup().

44  integer, public :: landuse_pft_nmax = 15

◆ landuse_frac_pft

real(rp), dimension (:,:,:), allocatable, public scale_landuse::landuse_frac_pft

fraction of PFT for each mosaic

Definition at line 46 of file scale_landuse.F90.

Referenced by mod_cnvlanduse::cnvlanduse(), landuse_calc_fact(), landuse_setup(), and landuse_write().

46  real(RP), public, allocatable :: landuse_frac_pft (:,:,:)

◆ landuse_index_pft

integer, dimension(:,:,:), allocatable, public scale_landuse::landuse_index_pft

index of PFT for each mosaic

Definition at line 47 of file scale_landuse.F90.

Referenced by mod_cnvlanduse::cnvlanduse(), mod_land_vars::land_vars_setup(), landuse_calc_fact(), and landuse_setup().

47  integer, public, allocatable :: landuse_index_pft(:,:,:)