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

72  use scale_process, only: &
74  implicit none
75 
76  namelist / param_landuse / &
77  landuse_in_basename, &
78  landuse_out_basename, &
79  landuse_out_dtype, &
80  landuse_pft_mosaic, &
81  landuse_pft_nmax, &
82  landuse_allland, &
83  landuse_allurban, &
84  landuse_mosaicworld
85 
86  integer :: ierr
87  !---------------------------------------------------------------------------
88 
89  if( io_l ) write(io_fid_log,*)
90  if( io_l ) write(io_fid_log,*) '++++++ Module[LANDUSE] / Categ[COUPLER] / Origin[SCALElib]'
91 
92  !--- read namelist
93  rewind(io_fid_conf)
94  read(io_fid_conf,nml=param_landuse,iostat=ierr)
95  if( ierr < 0 ) then !--- missing
96  if( io_l ) write(io_fid_log,*) '*** Not found namelist. Default used.'
97  elseif( ierr > 0 ) then !--- fatal error
98  write(*,*) 'xxx Not appropriate names in namelist PARAM_LANDUSE. Check!'
99  call prc_mpistop
100  endif
101  if( io_lnml ) write(io_fid_log,nml=param_landuse)
102 
103  allocate( landuse_frac_land(ia,ja) )
104  allocate( landuse_frac_lake(ia,ja) )
105  allocate( landuse_frac_urban(ia,ja) )
106  landuse_frac_land(:,:) = 0.0_rp
107  landuse_frac_lake(:,:) = 0.0_rp
108  landuse_frac_urban(:,:) = 0.0_rp
109 
110  allocate( landuse_index_pft(ia,ja,landuse_pft_mosaic) )
111  allocate( landuse_frac_pft(ia,ja,landuse_pft_mosaic) )
112  landuse_frac_pft(:,:,:) = 0.0_rp
113  landuse_frac_pft(:,:,1) = 1.0_rp ! tentative, mosaic is off
114  landuse_index_pft(:,:,:) = 1 ! default
115 
116  allocate( landuse_fact_ocean(ia,ja) )
117  allocate( landuse_fact_land(ia,ja) )
118  allocate( landuse_fact_urban(ia,ja) )
119  landuse_fact_ocean(:,:) = 1.0_rp
120  landuse_fact_land(:,:) = 0.0_rp
121  landuse_fact_urban(:,:) = 0.0_rp
122 
123 
124  if ( landuse_allland ) then
125  if( io_l ) write(io_fid_log,*) '*** Assume all grids are land'
126  landuse_frac_land(:,:) = 1.0_rp
127  call landuse_calc_fact
128  elseif( landuse_allurban ) then
129  if( io_l ) write(io_fid_log,*) '*** Assume all grids are land'
130  landuse_frac_land(:,:) = 1.0_rp
131  if( io_l ) write(io_fid_log,*) '*** Assume all lands are urban'
132  landuse_frac_urban(:,:) = 1.0_rp
133  call landuse_calc_fact
134  elseif( landuse_mosaicworld ) then
135  if( io_l ) write(io_fid_log,*) '*** Assume all grids have ocean, land, and urban'
136  landuse_frac_land(:,:) = 0.5_rp
137  landuse_frac_urban(:,:) = 0.5_rp
138  call landuse_calc_fact
139  else
140  ! read from file
141  call landuse_read
142  endif
143 
144  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 149 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().

149  implicit none
150  !---------------------------------------------------------------------------
151 
152  if( io_l ) write(io_fid_log,*)
153  if( io_l ) write(io_fid_log,*) '+++ calculate landuse factor'
154 
155  ! tentative treatment for lake fraction
156  landuse_frac_land(:,:) = landuse_frac_land(:,:) * ( 1.0_rp - landuse_frac_lake(:,:) )
157 
158  ! make factors
159  landuse_fact_ocean(:,:) = ( 1.0_rp - landuse_frac_land(:,:) )
160  landuse_fact_land(:,:) = ( landuse_frac_land(:,:) ) * ( 1.0_rp - landuse_frac_urban(:,:) )
161  landuse_fact_urban(:,:) = ( landuse_frac_land(:,:) ) * ( landuse_frac_urban(:,:) )
162 
163  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 248 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().

248  use scale_fileio, only: &
249  fileio_write
250  implicit none
251 
252  real(RP) :: temp(ia,ja)
253 
254  character(len=H_SHORT) :: varname
255  integer :: p
256  !---------------------------------------------------------------------------
257 
258  if ( landuse_out_basename /= '' ) then
259 
260  if( io_l ) write(io_fid_log,*)
261  if( io_l ) write(io_fid_log,*) '*** Output landuse file ***'
262 
263  call fileio_write( landuse_frac_land(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
264  'FRAC_LAND', 'LAND fraction', '1', 'XY', landuse_out_dtype, & ! [IN]
265  nozcoord=.true. )
266 
267  call fileio_write( landuse_frac_lake(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
268  'FRAC_LAKE', 'LAKE fraction', '1', 'XY', landuse_out_dtype, & ! [IN]
269  nozcoord=.true. )
270  call fileio_write( landuse_frac_urban(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
271  'FRAC_URBAN', 'URBAN fraction', '1', 'XY', landuse_out_dtype, & ! [IN]
272  nozcoord=.true. )
273 
274  do p = 1, landuse_pft_mosaic
275  write(varname,'(A8,I1.1)') 'FRAC_PFT', p
276 
277  call fileio_write( landuse_frac_pft(:,:,p), landuse_out_basename, landuse_out_title, & ! [IN]
278  varname, 'PFT fraction', '1', 'XY', landuse_out_dtype, & ! [IN]
279  nozcoord=.true. )
280 
281  write(varname,'(A9,I1.1)') 'INDEX_PFT', p
282  temp(:,:) = real(LANDUSE_index_PFT(:,:,p),kind=rp)
283 
284  call fileio_write( temp(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
285  varname, 'PFT index', '1', 'XY', landuse_out_dtype, & ! [IN]
286  nozcoord=.true. )
287  enddo
288 
289  call fileio_write( landuse_fact_ocean(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
290  'FRAC_OCEAN_abs', 'absolute OCEAN fraction', '0-1', 'XY', landuse_out_dtype, & ! [IN]
291  nozcoord=.true. )
292 
293  call fileio_write( landuse_fact_land(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
294  'FRAC_LAND_abs ', 'absolute LAND fraction', '0-1', 'XY', landuse_out_dtype, & ! [IN]
295  nozcoord=.true. )
296 
297  call fileio_write( landuse_fact_urban(:,:), landuse_out_basename, landuse_out_title, & ! [IN]
298  'FRAC_URBAN_abs', 'absolute URBAN fraction', '0-1', 'XY', landuse_out_dtype, & ! [IN]
299  nozcoord=.true. )
300  endif
301 
302  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(:,:,:)