43 private :: cnvlanduse_glccv2
44 private :: cnvlanduse_lu100m
45 private :: cnvlanduse_jibis
51 real(RP),
private :: cnvlanduse_unittile_ddeg
52 real(RP),
private :: cnvlanduse_oversampling_factor = 2.0_rp
70 character(len=H_SHORT) :: CNVLANDUSE_name =
'NONE' 72 namelist / param_cnvlanduse / &
77 cnvlanduse_unittile_ddeg, &
78 cnvlanduse_oversampling_factor
80 real(RP) :: drad(
ia,
ja)
87 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[convert landuseindex] / Categ[preprocess] / Origin[SCALE-RM]' 92 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 93 elseif( ierr > 0 )
then 94 write(*,*)
'xxx Not appropriate names in namelist PARAM_CNVLANDUSE. Check!' 99 select case(cnvlanduse_name)
115 write(*,*)
' xxx Unsupported TYPE:', trim(cnvlanduse_name)
123 if(
io_l )
write(
io_fid_log,*)
'*** Use GLCC ver.2, global 30 arcsec. data' 125 if(
io_l )
write(
io_fid_log,*)
'*** Use KSJ landuse 100m data for Japan region' 128 if(
io_l )
write(
io_fid_log,*)
'*** Use J-IBIS map 100m data for Japan region' 129 if(
io_l )
write(
io_fid_log,*)
'*** Overwrite Japan region (PFT only)' 134 if(
io_l )
write(
io_fid_log,*)
'*** Use KSJ landuse 100m data, Japan region only' 136 if(
io_l )
write(
io_fid_log,*)
'*** Use J-IBIS map 100m data for Japan region' 137 if(
io_l )
write(
io_fid_log,*)
'*** Overwrite Japan region (PFT only)' 145 call comm_horizontal_min( drad_min, drad(:,:) )
147 if ( cnvlanduse_unittile_ddeg > 0.0_rp )
then 148 cnvlanduse_oversampling_factor = ( drad_min / d2r ) / cnvlanduse_unittile_ddeg
150 cnvlanduse_oversampling_factor = max( 1.0_rp, cnvlanduse_oversampling_factor )
151 cnvlanduse_unittile_ddeg = ( drad_min / d2r ) / cnvlanduse_oversampling_factor
153 if(
io_l )
write(
io_fid_log,*)
'*** The size of tile [deg] = ', cnvlanduse_unittile_ddeg
154 if(
io_l )
write(
io_fid_log,*)
'*** oversampling factor = ', cnvlanduse_oversampling_factor
173 if(
io_l )
write(
io_fid_log,*)
'++++++ SKIP CONVERT LANDUSE DATA ++++++' 176 if(
io_l )
write(
io_fid_log,*)
'++++++ START CONVERT LANDUSE DATA ++++++' 179 call cnvlanduse_glccv2
183 call cnvlanduse_lu100m
187 call cnvlanduse_jibis
193 if(
io_l )
write(
io_fid_log,*)
'++++++ END CONVERT LANDUSE DATA ++++++' 204 subroutine cnvlanduse_glccv2
224 character(len=H_LONG) :: GLCCv2_IN_CATALOGUE =
'' 225 character(len=H_LONG) :: GLCCv2_IN_DIR =
'' 226 real(RP) :: limit_urban_fraction = 1.0_rp
228 namelist / param_cnvlanduse_glccv2 / &
229 glccv2_in_catalogue, &
234 integer,
parameter :: TILE_nlim = 100
236 real(RP) :: TILE_LATS (tile_nlim)
237 real(RP) :: TILE_LATE (tile_nlim)
238 real(RP) :: TILE_LONS (tile_nlim)
239 real(RP) :: TILE_LONE (tile_nlim)
240 character(len=H_LONG) :: TILE_fname(tile_nlim)
243 integer,
parameter :: isize_orig = 3600
244 integer(1) :: TILE_LANDUSE_orig(isize_orig,isize_orig)
245 real(RP) :: TILE_DLAT_orig, TILE_DLON_orig
250 integer(1),
allocatable :: TILE_LANDUSE(:,:)
251 real(RP),
allocatable :: TILE_LATH (:)
252 real(RP),
allocatable :: TILE_LONH (:)
253 real(RP) :: TILE_DLAT, TILE_DLON
254 real(RP) :: area, area_fraction
261 real(RP) :: DOMAIN_LATS, DOMAIN_LATE
262 real(RP) :: DOMAIN_LONS, DOMAIN_LONE
267 integer :: lookuptable(1:25)
268 data lookuptable / 0, &
294 real(RP) :: categ_pftsum, allsum
300 character(len=H_LONG) :: fname
303 logical :: hit_lat, hit_lon
306 integer :: i, j, ii, jj, iii, jjj, t, p, pp
310 if(
io_l )
write(
io_fid_log,*)
'+++ Module[GLCCv2]/Categ[CNVLANDUSE]' 314 read(
io_fid_conf,nml=param_cnvlanduse_glccv2,iostat=ierr)
316 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 317 elseif( ierr > 0 )
then 318 write(*,*)
'xxx Not appropriate names in namelist PARAM_CNVLANDUSE_GLCCv2. Check!' 326 categ_sum(i,j,p) = 0.0_rp
336 ios = nint( 30.0_rp / 60.0_rp / 60.0_rp / cnvlanduse_unittile_ddeg - 0.5_rp ) + 1
337 isize = isize_orig * ios
339 allocate( tile_landuse(isize,isize) )
340 allocate( tile_lath(0:isize) )
341 allocate( tile_lonh(0:isize) )
343 if(
io_l )
write(
io_fid_log,*)
'*** Oversampling orig = ', isize_orig,
', use = ', isize
345 tile_dlat_orig = 30.0_rp / 60.0_rp / 60.0_rp * d2r
346 tile_dlon_orig = 30.0_rp / 60.0_rp / 60.0_rp * d2r
347 if(
io_l )
write(
io_fid_log,*)
'*** TILE_DLAT :', tile_dlat_orig/d2r
348 if(
io_l )
write(
io_fid_log,*)
'*** TILE_DLON :', tile_dlon_orig/d2r
350 tile_dlat = tile_dlat_orig / ios
351 tile_dlon = tile_dlon_orig / ios
352 if(
io_l )
write(
io_fid_log,*)
'*** TILE_DLAT (OS) :', tile_dlat/d2r
353 if(
io_l )
write(
io_fid_log,*)
'*** TILE_DLON (OS) :', tile_dlon/d2r
358 fname = trim(glccv2_in_dir)//
'/'//trim(glccv2_in_catalogue)
361 if(
io_l )
write(
io_fid_log,*)
'+++ Input catalogue file:', trim(fname)
365 file = trim(fname), &
366 form =
'formatted', &
370 if ( ierr /= 0 )
then 371 write(*,*)
'xxx catalogue file not found!', trim(fname)
376 read(fid,*,iostat=ierr) index, tile_lats(t), tile_late(t), &
377 tile_lons(t), tile_lone(t), &
379 if ( ierr /= 0 )
exit 390 if ( ( tile_lats(t)*d2r >= domain_lats .AND. tile_lats(t)*d2r < domain_late ) &
391 .OR. ( tile_late(t)*d2r >= domain_lats .AND. tile_late(t)*d2r < domain_late ) )
then 395 if ( ( domain_lats >= tile_lats(t)*d2r .AND. domain_lats < tile_late(t)*d2r ) &
396 .OR. ( domain_late >= tile_lats(t)*d2r .AND. domain_late < tile_late(t)*d2r ) )
then 400 if ( ( tile_lons(t)*d2r >= domain_lons .AND. tile_lons(t)*d2r < domain_lone ) &
401 .OR. ( tile_lone(t)*d2r >= domain_lons .AND. tile_lone(t)*d2r < domain_lone ) )
then 405 if ( ( domain_lons >= tile_lons(t)*d2r .AND. domain_lons < tile_lone(t)*d2r ) &
406 .OR. ( domain_lone >= tile_lons(t)*d2r .AND. domain_lone < tile_lone(t)*d2r ) )
then 410 if ( hit_lat .AND. hit_lon )
then 411 fname = trim(glccv2_in_dir)//
'/'//trim(tile_fname(t))
414 if(
io_l )
write(
io_fid_log,*)
'+++ Input data file :', trim(fname)
415 if(
io_l )
write(
io_fid_log,*)
'*** Domain (LAT) :', domain_lats/d2r, domain_late/d2r
416 if(
io_l )
write(
io_fid_log,*)
'*** (LON) :', domain_lons/d2r, domain_lone/d2r
417 if(
io_l )
write(
io_fid_log,*)
'*** Tile (LAT) :', tile_lats(t), tile_late(t)
418 if(
io_l )
write(
io_fid_log,*)
'*** (LON) :', tile_lons(t), tile_lone(t)
422 file = trim(fname), &
423 form =
'unformatted', &
426 recl = isize_orig*isize_orig*1, &
429 if ( ierr /= 0 )
then 430 write(*,*)
'xxx data file not found!' 434 read(fid,rec=1) tile_landuse_orig(:,:)
438 do jj = 1, isize_orig
439 do ii = 1, isize_orig
442 jjj = (jj-1) * ios + j
443 iii = (ii-1) * ios + i
445 tile_landuse(iii,jjj) = tile_landuse_orig(ii,jj)
451 tile_lath(0) = tile_lats(t) * d2r
453 tile_lath(jj) = tile_lath(jj-1) + tile_dlat
457 tile_lonh(0) = tile_lons(t) * d2r
459 tile_lonh(ii) = tile_lonh(ii-1) + tile_dlon
473 if ( tile_lonh(ii-1) < domain_lons &
474 .OR. tile_lonh(ii-1) >= domain_lone &
475 .OR. tile_lath(jj-1) < domain_lats &
476 .OR. tile_lath(jj-1) >= domain_late )
then 480 jloop:
do j =
js-1,
je+1
481 iloop:
do i =
is-1,
ie+1
482 if ( tile_lonh(ii-1) >=
real_lonx(i-1,j ) &
483 .AND. tile_lonh(ii-1) <
real_lonx(i ,j ) &
484 .AND. tile_lath(jj-1) >=
real_laty(i ,j-1) &
485 .AND. tile_lath(jj-1) <
real_laty(i ,j ) )
then 488 ifrac_l = min(
real_lonx(i,j)-tile_lonh(ii-1), tile_dlon ) / tile_dlon
491 jfrac_b = min(
real_laty(i,j)-tile_lath(jj-1), tile_dlat ) / tile_dlat
498 if( iloc == 1 .AND. jloc == 1 ) cycle
500 area = radius * radius * tile_dlon * ( sin(tile_lath(jj))-sin(tile_lath(jj-1)) )
502 pp = min( max( int(tile_landuse(ii,jj),kind=4), 0 ), 25 )
507 area_fraction = ( ifrac_l) * ( jfrac_b) * area
508 categ_sum(iloc ,jloc ,p) = categ_sum(iloc ,jloc ,p) + area_fraction
510 area_fraction = (1.0_rp-ifrac_l) * ( jfrac_b) * area
511 categ_sum(iloc+1,jloc ,p) = categ_sum(iloc+1,jloc ,p) + area_fraction
513 area_fraction = ( ifrac_l) * (1.0_rp-jfrac_b) * area
514 categ_sum(iloc ,jloc+1,p) = categ_sum(iloc ,jloc+1,p) + area_fraction
516 area_fraction = (1.0_rp-ifrac_l) * (1.0_rp-jfrac_b) * area
517 categ_sum(iloc+1,jloc+1,p) = categ_sum(iloc+1,jloc+1,p) + area_fraction
533 pft(p) = categ_sum(i,j,p)
540 if ( pft(pp) > pft(p) )
then 545 temp_idx = pft_idx(p)
546 pft_idx(p) = pft_idx(pp)
547 pft_idx(pp) = temp_idx
552 categ_pftsum = sum( pft(:) )
555 allsum = categ_sum(i,j,-2) + categ_sum(i,j,-1) + categ_sum(i,j,0) + categ_pftsum
556 zerosw = 0.5_rp - sign( 0.5_rp, allsum-eps )
557 landuse_frac_land(i,j) = 1.0_rp-zerosw - categ_sum(i,j,-1) * ( 1.0_rp-zerosw ) / ( allsum-zerosw )
560 allsum = categ_sum(i,j,-2) + categ_sum(i,j,0) + categ_pftsum
561 zerosw = 0.5_rp - sign( 0.5_rp, allsum-eps )
562 landuse_frac_lake(i,j) = categ_sum(i,j,-2) * ( 1.0_rp-zerosw ) / ( allsum-zerosw )
565 allsum = categ_sum(i,j,0) + categ_pftsum
566 zerosw = 0.5_rp - sign( 0.5_rp, allsum-eps )
571 if ( abs(allsum) > eps )
then 591 if ( limit_urban_fraction < 1.0_rp )
then 605 end subroutine cnvlanduse_glccv2
609 subroutine cnvlanduse_lu100m
629 character(len=H_LONG) :: LU100M_IN_CATALOGUE =
'' 630 character(len=H_LONG) :: LU100M_IN_DIR =
'' 631 real(RP) :: limit_urban_fraction = 1.0_rp
633 namelist / param_cnvlanduse_lu100m / &
634 lu100m_in_catalogue, &
639 integer,
parameter :: TILE_nlim = 1000
641 real(RP) :: TILE_LATS (tile_nlim)
642 real(RP) :: TILE_LATE (tile_nlim)
643 real(RP) :: TILE_LONS (tile_nlim)
644 real(RP) :: TILE_LONE (tile_nlim)
645 character(len=H_LONG) :: TILE_fname(tile_nlim)
648 integer,
parameter :: isize_orig = 800
649 real(SP) :: TILE_LANDUSE_orig(isize_orig,isize_orig)
650 real(RP) :: TILE_DLAT_orig, TILE_DLON_orig
655 real(RP),
allocatable :: TILE_LANDUSE(:,:)
656 real(RP),
allocatable :: TILE_LATH (:)
657 real(RP),
allocatable :: TILE_LONH (:)
658 real(RP) :: TILE_DLAT, TILE_DLON
659 real(RP) :: area, area_fraction
666 real(RP) :: DOMAIN_LATS, DOMAIN_LATE
667 real(RP) :: DOMAIN_LONS, DOMAIN_LONE
672 integer :: lookuptable(0:16)
673 data lookuptable / -1, &
691 real(RP) :: categ_pftsum, allsum
696 real(RP) :: frac, mask
698 character(len=H_LONG) :: fname
701 logical :: hit_lat, hit_lon
704 integer :: i, j, ii, jj, iii, jjj, t, p, pp
708 if(
io_l )
write(
io_fid_log,*)
'+++ Module[LU100M]/Categ[CNVLANDUSE]' 712 read(
io_fid_conf,nml=param_cnvlanduse_lu100m,iostat=ierr)
714 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 715 elseif( ierr > 0 )
then 716 write(*,*)
'xxx Not appropriate names in namelist PARAM_CNVLANDUSE_LU100M. Check!' 724 categ_sum(i,j,p) = 0.0_rp
734 ios = nint( 5.0_rp / 60.0_rp / 100.0_rp / cnvlanduse_unittile_ddeg - 0.5_rp ) + 1
735 isize = isize_orig * ios
737 allocate( tile_landuse(isize,isize) )
738 allocate( tile_lath(0:isize) )
739 allocate( tile_lonh(0:isize) )
741 if(
io_l )
write(
io_fid_log,*)
'*** Oversampling orig = ', isize_orig,
', use = ', isize
743 tile_dlat_orig = 5.0_rp / 60.0_rp / 100.0_rp * d2r
744 tile_dlon_orig = 7.5_rp / 60.0_rp / 100.0_rp * d2r
745 if(
io_l )
write(
io_fid_log,*)
'*** TILE_DLAT :', tile_dlat_orig/d2r
746 if(
io_l )
write(
io_fid_log,*)
'*** TILE_DLON :', tile_dlon_orig/d2r
748 tile_dlat = tile_dlat_orig / ios
749 tile_dlon = tile_dlon_orig / ios
750 if(
io_l )
write(
io_fid_log,*)
'*** TILE_DLAT (OS) :', tile_dlat/d2r
751 if(
io_l )
write(
io_fid_log,*)
'*** TILE_DLON (OS) :', tile_dlon/d2r
756 fname = trim(lu100m_in_dir)//
'/'//trim(lu100m_in_catalogue)
759 if(
io_l )
write(
io_fid_log,*)
'+++ Input catalogue file:', trim(fname)
763 file = trim(fname), &
764 form =
'formatted', &
768 if ( ierr /= 0 )
then 769 write(*,*)
'xxx catalogue file not found!', trim(fname)
774 read(fid,*,iostat=ierr) index, tile_lats(t), tile_late(t), &
775 tile_lons(t), tile_lone(t), &
777 if ( ierr /= 0 )
exit 788 if ( ( tile_lats(t)*d2r >= domain_lats .AND. tile_lats(t)*d2r < domain_late ) &
789 .OR. ( tile_late(t)*d2r >= domain_lats .AND. tile_late(t)*d2r < domain_late ) )
then 793 if ( ( domain_lats >= tile_lats(t)*d2r .AND. domain_lats < tile_late(t)*d2r ) &
794 .OR. ( domain_late >= tile_lats(t)*d2r .AND. domain_late < tile_late(t)*d2r ) )
then 798 if ( ( tile_lons(t)*d2r >= domain_lons .AND. tile_lons(t)*d2r < domain_lone ) &
799 .OR. ( tile_lone(t)*d2r >= domain_lons .AND. tile_lone(t)*d2r < domain_lone ) )
then 803 if ( ( domain_lons >= tile_lons(t)*d2r .AND. domain_lons < tile_lone(t)*d2r ) &
804 .OR. ( domain_lone >= tile_lons(t)*d2r .AND. domain_lone < tile_lone(t)*d2r ) )
then 808 if ( hit_lat .AND. hit_lon )
then 809 fname = trim(lu100m_in_dir)//
'/'//trim(tile_fname(t))
812 if(
io_l )
write(
io_fid_log,*)
'+++ Input data file :', trim(fname)
813 if(
io_l )
write(
io_fid_log,*)
'*** Domain (LAT) :', domain_lats/d2r, domain_late/d2r
814 if(
io_l )
write(
io_fid_log,*)
'*** (LON) :', domain_lons/d2r, domain_lone/d2r
815 if(
io_l )
write(
io_fid_log,*)
'*** Tile (LAT) :', tile_lats(t), tile_late(t)
816 if(
io_l )
write(
io_fid_log,*)
'*** (LON) :', tile_lons(t), tile_lone(t)
820 file = trim(fname), &
821 form =
'unformatted', &
824 recl = isize_orig*isize_orig*4, &
827 if ( ierr /= 0 )
then 828 write(*,*)
'xxx data file not found!' 832 read(fid,rec=1) tile_landuse_orig(:,:)
836 do jj = 1, isize_orig
837 do ii = 1, isize_orig
840 jjj = (jj-1) * ios + j
841 iii = (ii-1) * ios + i
843 tile_landuse(iii,jjj) =
real( TILE_LANDUSE_orig(ii,jj), kind=
rp )
849 tile_lath(0) = tile_lats(t) * d2r
851 tile_lath(jj) = tile_lath(jj-1) + tile_dlat
855 tile_lonh(0) = tile_lons(t) * d2r
857 tile_lonh(ii) = tile_lonh(ii-1) + tile_dlon
871 if ( tile_lonh(ii-1) < domain_lons &
872 .OR. tile_lonh(ii-1) >= domain_lone &
873 .OR. tile_lath(jj-1) < domain_lats &
874 .OR. tile_lath(jj-1) >= domain_late )
then 878 jloop:
do j =
js-1,
je+1
879 iloop:
do i =
is-1,
ie+1
880 if ( tile_lonh(ii-1) >=
real_lonx(i-1,j ) &
881 .AND. tile_lonh(ii-1) <
real_lonx(i ,j ) &
882 .AND. tile_lath(jj-1) >=
real_laty(i ,j-1) &
883 .AND. tile_lath(jj-1) <
real_laty(i ,j ) )
then 886 ifrac_l = min(
real_lonx(i,j)-tile_lonh(ii-1), tile_dlon ) / tile_dlon
889 jfrac_b = min(
real_laty(i,j)-tile_lath(jj-1), tile_dlat ) / tile_dlat
896 if( iloc == 1 .AND. jloc == 1 ) cycle
898 area = radius * radius * tile_dlon * ( sin(tile_lath(jj))-sin(tile_lath(jj-1)) )
900 pp = int( max( tile_landuse(ii,jj), 0.0_rp ) )
905 area_fraction = ( ifrac_l) * ( jfrac_b) * area
906 categ_sum(iloc ,jloc ,p) = categ_sum(iloc ,jloc ,p) + area_fraction
908 area_fraction = (1.0_rp-ifrac_l) * ( jfrac_b) * area
909 categ_sum(iloc+1,jloc ,p) = categ_sum(iloc+1,jloc ,p) + area_fraction
911 area_fraction = ( ifrac_l) * (1.0_rp-jfrac_b) * area
912 categ_sum(iloc ,jloc+1,p) = categ_sum(iloc ,jloc+1,p) + area_fraction
914 area_fraction = (1.0_rp-ifrac_l) * (1.0_rp-jfrac_b) * area
915 categ_sum(iloc+1,jloc+1,p) = categ_sum(iloc+1,jloc+1,p) + area_fraction
931 pft(p) = categ_sum(i,j,p)
938 if ( pft(pp) > pft(p) )
then 943 temp_idx = pft_idx(p)
944 pft_idx(p) = pft_idx(pp)
945 pft_idx(pp) = temp_idx
950 categ_pftsum = sum( pft(:) )
953 allsum = categ_sum(i,j,-2) + categ_sum(i,j,0) + categ_pftsum
954 mask = 0.5_rp + sign( 0.5_rp, allsum-eps )
957 allsum = categ_sum(i,j,-2) + categ_sum(i,j,-1) + categ_sum(i,j,0) + categ_pftsum
958 zerosw = 0.5_rp - sign( 0.5_rp, allsum-eps )
959 frac = ( 1.0_rp-zerosw ) - categ_sum(i,j,-1) * ( 1.0_rp-zerosw ) / ( allsum-zerosw )
964 allsum = categ_sum(i,j,-2) + categ_sum(i,j,0) + categ_pftsum
965 zerosw = 0.5_rp - sign( 0.5_rp, allsum-eps )
966 frac = categ_sum(i,j,-2) * ( 1.0_rp-zerosw ) / ( allsum-zerosw )
971 allsum = categ_sum(i,j,0) + categ_pftsum
972 zerosw = 0.5_rp - sign( 0.5_rp, allsum-eps )
973 frac = categ_sum(i,j,0) * ( 1.0_rp-zerosw ) / ( allsum-zerosw )
979 if ( abs(allsum) > eps )
then 1006 if ( limit_urban_fraction < 1.0_rp )
then 1020 end subroutine cnvlanduse_lu100m
1024 subroutine cnvlanduse_jibis
1029 end subroutine cnvlanduse_jibis
integer, public is
start point of inner domain: x, local
integer, public je
end point of inner domain: y, local
real(rp), dimension(:,:,:), allocatable, public landuse_frac_pft
fraction of PFT for each mosaic
subroutine, public prc_mpistop
Abort MPI.
logical, public io_l
output log or not? (this process)
real(rp), public const_radius
radius of the planet [m]
subroutine, public landuse_calc_fact
subroutine, public cnvlanduse
Driver.
real(rp), public const_d2r
degree to radian
real(rp), dimension(:,:), allocatable, public landuse_frac_urban
urban fraction
logical, public cnvlanduse_useglccv2
integer, public ia
of x whole cells (local, with HALO)
integer function, public io_get_available_fid()
search & get available file ID
real(rp), dimension(:,:), allocatable, public real_dlon
delta longitude
subroutine, public landuse_write
Write landuse data.
integer, public js
start point of inner domain: y, local
integer, public landuse_pft_mosaic
number of PFT mosaic
real(rp), dimension(:,:), allocatable, public real_dlat
delta latitude
integer, dimension(:,:,:), allocatable, public landuse_index_pft
index of PFT for each mosaic
module Convert LandUseIndex
integer, public ie
end point of inner domain: x, local
subroutine, public cnvlanduse_setup
Setup.
real(rp), public const_eps
small number
real(rp), dimension(:,:), allocatable, public landuse_frac_lake
lake fraction
logical, public io_lnml
output log or not? (for namelist, this process)
logical, public cnvlanduse_uselu100m
logical, public cnvlanduse_usejibis
integer, public landuse_pft_nmax
number of plant functional type(PFT)
integer, public io_fid_conf
Config file ID.
integer, public io_fid_log
Log file ID.
integer, parameter, public rp
logical, public cnvlanduse_donothing
real(rp), dimension(:,:), allocatable, public real_lonx
longitude at staggered point (uy) [rad,0-2pi]
real(rp), dimension(:,:), allocatable, public landuse_frac_land
land fraction
real(rp), dimension(:,:), allocatable, public real_laty
latitude at staggered point (xv) [rad,-pi,pi]
integer, public ja
of y whole cells (local, with HALO)