亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mklanwat.f90

?? CCSM Research Tools: Community Atmosphere Model (CAM)
?? F90
字號:
#include <misc.h>#include <preproc.h>subroutine mklanwat (flanwat, ndiag, lake_o, swmp_o)!----------------------------------------------------------------------- ! ! Purpose: ! make %lake and %wetland from Cogley's one degree data! ! Method: ! ! Author: Gordon Bonan! !-----------------------------------------------------------------------! $Id: mklanwat.F90,v 1.3.10.2 2002/04/27 15:38:54 erik Exp $!-----------------------------------------------------------------------  use precision  use clm_varpar   !parameters  use clm_varsur   !surface variables  use clm_varctl   !run control variables  use fileutils, only : getfil  use areaMod      !area averaging routines   use shr_sys_mod, only : shr_sys_flush   implicit none! ------------------------ arguments ------------------------------  character(len=*), intent(in) :: flanwat           !input lanwat dataset file name  integer , intent(in) :: ndiag                     !unit number for diagnostic output  real(r8), intent(out):: lake_o(lsmlon,lsmlat)     !percent lake on output grid  real(r8), intent(out):: swmp_o(lsmlon,lsmlat)     !percent wetland on output grid! -----------------------------------------------------------------! ------------------------ local variables ------------------------  character(len=256) :: locfn              !local dataset file name  integer :: nlon_i                        !input grid : longitude points (read in)  integer :: nlat_i                        !input grid : latitude  points (read in)  integer :: ncid,dimid,varid              !input netCDF id's  integer :: ier                    !error status     real(r8) :: wt                           !overlap weight  real(r8) :: w_sum                        !sum of %lake and %wetland  real(r8) :: glake_o                      !output grid: global area lakes  real(r8) :: gswmp_o                      !output grid: global area wetlands  real(r8) :: garea_o                      !output grid: global area  real(r8) :: glake_i                      !input grid: global area lakes  real(r8) :: gswmp_i                      !input grid: global area wetlands  real(r8) :: garea_i                      !input grid: global area  integer :: ii                            !longitude index for COGLEY grid  integer :: ji                            !latitude  index for COGLEY grid  integer :: io                            !longitude index for land model grid  integer :: jo                            !latitude  index for land model grid  integer :: k,n                           !indices  real(r8) :: edge_i(4)                    !input grid: N,E,S,W edges (degrees)  real(r8), allocatable :: lake_i(:,:)     !input grid: percent lake  real(r8), allocatable :: swmp_i(:,:)     !input grid: percent wetland  real(r8), allocatable :: landmask_i(:,:) !input grid: fraction land (not ocn) per land gridcell  real(r8), allocatable :: latixy_i(:,:)   !input grid: latitude (degrees)  real(r8), allocatable :: longxy_i(:,:)   !input grid: longitude (degrees)  integer , allocatable :: numlon_i(:)     !input grid: number longitude points by lat  real(r8), allocatable :: lon_i(:,:)      !input grid: longitude, west edge (degrees)  real(r8), allocatable :: lon_i_offset(:,:)!input grid: offset longitude, west edge (degrees)  real(r8), allocatable :: lat_i(:)        !input grid: latitude, south edge (degrees)  real(r8), allocatable :: area_i(:,:)     !input grid: cell area  real(r8), allocatable :: mask_i(:,:)     !input grid: mask (0, 1)  real(r8) :: mask_o                       !output grid: mask (0, 1)  integer  :: novr_i2o                     !number of overlapping input cells  integer  :: iovr_i2o(maxovr)             !lon index of overlap input cell  integer  :: jovr_i2o(maxovr)             !lat index of overlap input cell  real(r8) :: wovr_i2o(maxovr)             !weight    of overlap input cell  real(r8) :: offset                       !used to shift x-grid 360 degrees  real(r8) :: fld_o(lsmlon,lsmlat)         !output grid: dummy field   real(r8) :: fld_i                        !input grid: dummy field   real(r8) :: sum_fldo                     !global sum of dummy output field  real(r8) :: sum_fldi                     !global sum of dummy input field  real(r8) :: relerr = 0.00001             !max error: sum overlap weights ne 1! -----------------------------------------------------------------  write (6,*) 'Attempting to make %lake and %wetland .....'  call shr_sys_flush(6)! -----------------------------------------------------------------! Read in Cogley's input data! -----------------------------------------------------------------! Obtain input grid info  call getfil (flanwat, locfn, 0)  call wrap_open(locfn, 0, ncid)  call wrap_inq_dimid  (ncid, 'lon', dimid)  call wrap_inq_dimlen (ncid, dimid, nlon_i)  call wrap_inq_dimid  (ncid, 'lat', dimid)  call wrap_inq_dimlen (ncid, dimid, nlat_i)  allocate (lake_i(nlon_i,nlat_i), stat=ier)       if (ier/=0) call endrun  allocate (swmp_i(nlon_i,nlat_i), stat=ier)       if (ier/=0) call endrun  allocate (landmask_i(nlon_i,nlat_i), stat=ier)  if (ier/=0) call endrun  allocate (latixy_i(nlon_i,nlat_i), stat=ier)     if (ier/=0) call endrun  allocate (longxy_i(nlon_i,nlat_i), stat=ier)     if (ier/=0) call endrun  allocate (numlon_i(nlat_i), stat=ier)  if (ier/=0) call endrun  allocate (lon_i(nlon_i+1,nlat_i), stat=ier)  if (ier/=0) call endrun  allocate (lon_i_offset(nlon_i+1,nlat_i), stat=ier)  if (ier/=0) call endrun  allocate (lat_i(nlat_i+1), stat=ier)          if (ier/=0) call endrun  allocate (area_i(nlon_i,nlat_i), stat=ier)    if (ier/=0) call endrun  allocate (mask_i(nlon_i,nlat_i), stat=ier)       if (ier/=0) call endrun  call wrap_inq_varid (ncid, 'LATIXY', varid)  call wrap_get_var_realx (ncid, varid, latixy_i)  call wrap_inq_varid (ncid, 'LONGXY', varid)  call wrap_get_var_realx (ncid, varid, longxy_i)  call wrap_inq_varid (ncid, 'EDGEN', varid)  call wrap_get_var_realx (ncid, varid, edge_i(1))  call wrap_inq_varid (ncid, 'EDGEE', varid)  call wrap_get_var_realx (ncid, varid, edge_i(2))  call wrap_inq_varid (ncid, 'EDGES', varid)  call wrap_get_var_realx (ncid, varid, edge_i(3))  call wrap_inq_varid (ncid, 'EDGEW', varid)  call wrap_get_var_realx (ncid, varid, edge_i(4))! Obtain input data  call wrap_inq_varid (ncid, 'LANDMASK', varid)  call wrap_get_var_realx (ncid, varid, landmask_i)  call wrap_inq_varid (ncid, 'PCT_LAKE', varid)  call wrap_get_var_realx (ncid, varid, lake_i)  call wrap_inq_varid (ncid, 'PCT_WETLAND', varid)  call wrap_get_var_realx (ncid, varid, swmp_i)! Close input file  call wrap_close(ncid)! -----------------------------------------------------------------! Map data from input grid to land model grid. Get:! -----------------------------------------------------------------! Determine input grid cell and cell areas  numlon_i(:) = nlon_i  call celledge (nlat_i    , nlon_i    , numlon_i  , longxy_i  ,  &                 latixy_i  , edge_i(1) , edge_i(2) , edge_i(3) ,  &                 edge_i(4) , lat_i     , lon_i     )  call cellarea (nlat_i    , nlon_i    , numlon_i  , lat_i     ,  &                 lon_i     , edge_i(1) , edge_i(2) , edge_i(3) ,  &                 edge_i(4) , area_i    )  do ji = 1, nlat_i     do ii = 1, numlon_i(ji)        mask_i(ii,ji) = 1.     end do  end do! Shift x-grid to locate periodic grid intersections. This! assumes that all lon_i(1,j) have the same value for all! latitudes j and that the same holds for lon_o(1,j)  if (lon_i(1,1) < lonw(1,1)) then     offset = 360.0  else     offset = -360.0  end if    do ji = 1, nlat_i     do ii = 1, numlon_i(ji) + 1        lon_i_offset(ii,ji) = lon_i(ii,ji) + offset     end do  end do  ! Process each cell on land model grid! novr_i2o - number of input grid cells that overlap each land grid cell! iovr_i2o - longitude index of overlapping input grid cell! jovr_i2o - latitude  index of overlapping input grid cell! wovr_i2o - fraction of land grid cell overlapped by input grid cell!$OMP PARALLEL DO PRIVATE (io,jo,ii,ji,n,mask_o,novr_i2o,iovr_i2o,jovr_i2o,wovr_i2o,fld_i)  do jo = 1, lsmlat     do io = 1, numlon(jo)! Determine areas of overlap and indices        mask_o = 1.        call areaini_point (io        , jo          , nlon_i  , nlat_i  , numlon_i, &                           lon_i      , lon_i_offset, lat_i   , area_i  , mask_i  , &                           lsmlon     , lsmlat      , numlon  , lonw    , lats    , &                           area(io,jo), mask_o      , novr_i2o, iovr_i2o, jovr_i2o, &                           wovr_i2o)                                     mask_o = 0.        do n = 1, novr_i2o        !overlap cell index           ii = iovr_i2o(n)       !lon index (input grid) of overlap cell           ji = jovr_i2o(n)       !lat index (input grid) of overlap cell           mask_o = mask_o + landmask_i(ii,ji) * wovr_i2o(n)        end do        call areaini_point (io        , jo          , nlon_i  , nlat_i  , numlon_i  , &                           lon_i      , lon_i_offset, lat_i   , area_i  , landmask_i, &                           lsmlon     , lsmlat      , numlon  , lonw    , lats      , &                           area(io,jo), mask_o      , novr_i2o, iovr_i2o, jovr_i2o  , &                           wovr_i2o   ) ! Make area average        lake_o(io,jo) = 0.        swmp_o(io,jo) = 0.        do n = 1, novr_i2o   !overlap cell index           ii = iovr_i2o(n)  !lon index (input grid) of overlap cell           ji = jovr_i2o(n)  !lat index (input grid) of overlap cell           lake_o(io,jo) = lake_o(io,jo) + lake_i(ii,ji) * wovr_i2o(n)           swmp_o(io,jo) = swmp_o(io,jo) + swmp_i(ii,ji) * wovr_i2o(n)        end do! Corrections: set oceans to zero and exclude areas less than 5% of cell        if (landmask(io,jo) == 0) then           lake_o(io,jo) = 0.           swmp_o(io,jo) = 0.        else           if (lake_o(io,jo) < 5.) lake_o(io,jo) = 0.           if (swmp_o(io,jo) < 5.) swmp_o(io,jo) = 0.        end if! Check for conservation         if ((lake_o(io,jo) + swmp_o(io,jo)) > 100.000001) then           write (6,*) 'MKLANWAT error: lake = ',lake_o(io,jo), &                ' and wetland = ',swmp_o(io,jo), &                ' sum are greater than 100 for lon,lat = ',io,jo           call endrun        end if! Global sum of output field -- must multiply by fraction of! output grid that is land as determined by input grid        fld_o(io,jo) = 0.        do n = 1, novr_i2o           ii = iovr_i2o(n)           ji = jovr_i2o(n)           fld_i = ((ji-1)*nlon_i + ii) * landmask_i(ii,ji)           fld_o(io,jo) = fld_o(io,jo) + wovr_i2o(n) * fld_i * mask_o        end do     end do  !end of output longitude loop  end do     !end of output latitude  loop!$OMP END PARALLEL DO! -----------------------------------------------------------------! Error check1! Compare global sum fld_o to global sum fld_i. ! -----------------------------------------------------------------! This check is true only if both grids span the same domain. ! To obtain global sum of input field must multiply by ! fraction of input grid that is land as determined by input grid  sum_fldo = 0.  do jo = 1,lsmlat     do io = 1,numlon(jo)        sum_fldo = sum_fldo + area(io,jo) * fld_o(io,jo)      end do  end do  sum_fldi = 0.  do ji = 1, nlat_i           do ii = 1, numlon_i(ji)        fld_i = ((ji-1)*nlon_i + ii) * landmask_i(ii,ji)        sum_fldi = sum_fldi + area_i(ii,ji) * fld_i     end do  end do  if ( abs(mksrf_offline_edgen - mksrf_offline_edges) == 180. .and. &       abs(mksrf_offline_edgee - mksrf_offline_edgew) == 360. ) then     if ( abs(sum_fldo/sum_fldi-1.) > relerr ) then        write (6,*) 'AREAINI error: input field not conserved'        write (6,'(a30,e20.10)') 'global sum output field = ',sum_fldo        write (6,'(a30,e20.10)') 'global sum input  field = ',sum_fldi        call endrun     end if  end if! -----------------------------------------------------------------! Error check2! Compare global areas on input and output grids! -----------------------------------------------------------------! Input grid  glake_i = 0.  gswmp_i = 0.  garea_i = 0.  do ji = 1, nlat_i     do ii = 1, nlon_i        garea_i = garea_i + area_i(ii,ji)        glake_i = glake_i + lake_i(ii,ji)*area_i(ii,ji)/100.        gswmp_i = gswmp_i + swmp_i(ii,ji)*area_i(ii,ji)/100.     end do  end do! Output grid  glake_o = 0.  gswmp_o = 0.  garea_o = 0.  do jo = 1, lsmlat     do io = 1, numlon(jo)        garea_o = garea_o + area(io,jo)        glake_o = glake_o + lake_o(io,jo)*area(io,jo)/100.        gswmp_o = gswmp_o + swmp_o(io,jo)*area(io,jo)/100.     end do  end do! Diagnostic output  write (ndiag,*)  write (ndiag,'(1x,70a1)') ('=',k=1,70)  write (ndiag,*) 'Inland Water Output'  write (ndiag,'(1x,70a1)') ('=',k=1,70)  write (ndiag,*)  write (ndiag,'(1x,70a1)') ('.',k=1,70)  write (ndiag,2001)2001 format (1x,'surface type   input grid area  output grid area'/ &             1x,'                 10**6 km**2      10**6 km**2   ')  write (ndiag,'(1x,70a1)') ('.',k=1,70)  write (ndiag,*)  write (ndiag,2002) glake_i*1.e-06,glake_o*1.e-06  write (ndiag,2003) gswmp_i*1.e-06,gswmp_o*1.e-06  write (ndiag,2004) garea_i*1.e-06,garea_o*1.e-062002 format (1x,'lakes       ',f14.3,f17.3)2003 format (1x,'wetlands    ',f14.3,f17.3)2004 format (1x,'all surface ',f14.3,f17.3)  if (lsmlat > 1) then     k = lsmlat/2     write (ndiag,*)     write (ndiag,*) 'For reference the area on the output grid of a cell near the equator is: '     write (ndiag,'(f10.3,a14)')area(1,k)*1.e-06,' x 10**6 km**2'     write (ndiag,*)  endif  write (6,*) 'Successfully made %lake and %wetland'  write (6,*)  call shr_sys_flush(6)! Deallocate dynamic memory  deallocate (latixy_i)  deallocate (longxy_i)  deallocate (numlon_i)  deallocate (lon_i)  deallocate (lon_i_offset)  deallocate (lat_i)  deallocate (area_i)  deallocate (mask_i)  deallocate (landmask_i)  deallocate (lake_i)  deallocate (swmp_i)  returnend subroutine mklanwat

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆国产福利在线观看| 精品国产百合女同互慰| 天堂va蜜桃一区二区三区漫画版| 欧美视频日韩视频在线观看| 日韩中文字幕麻豆| 精品第一国产综合精品aⅴ| 国产成人精品亚洲日本在线桃色| 国产精品对白交换视频| 色又黄又爽网站www久久| 婷婷国产v国产偷v亚洲高清| 欧美成人官网二区| www.在线欧美| 天天做天天摸天天爽国产一区| 精品人在线二区三区| 粉嫩一区二区三区性色av| 亚洲黄色在线视频| 日韩免费看的电影| 成人激情校园春色| 视频在线在亚洲| 国产亚洲人成网站| 欧美日韩综合一区| 国产一区二区91| 一区二区三区欧美| 精品国产99国产精品| 色综合久久久久久久久久久| 免费一区二区视频| 亚洲人成网站精品片在线观看| 69精品人人人人| 高清在线成人网| 石原莉奈在线亚洲二区| 中文字幕第一页久久| 欧美日韩国产电影| 丁香桃色午夜亚洲一区二区三区| 亚洲成人在线观看视频| 久久女同精品一区二区| 91国偷自产一区二区使用方法| 另类小说图片综合网| 亚洲欧美在线视频| 欧美大胆一级视频| 色综合久久99| 国产成人精品影视| 婷婷开心激情综合| 国产精品国产自产拍在线| 日韩午夜小视频| 91在线国产福利| 精一区二区三区| 亚洲自拍都市欧美小说| 欧美国产综合色视频| 欧美日本一区二区| eeuss鲁片一区二区三区| 麻豆91在线播放| 一区二区三区成人| 中文字幕乱码一区二区免费| 日韩欧美国产一区二区在线播放| 色婷婷精品久久二区二区蜜臀av| 精品一区二区久久| 亚洲一区二区欧美| 中文字幕日韩精品一区| 精品国产3级a| 777午夜精品免费视频| 91老师片黄在线观看| 国产精品白丝av| 秋霞电影一区二区| 亚洲国产精品久久不卡毛片| 国产精品免费av| 精品成人私密视频| 91精品国产一区二区三区蜜臀| av福利精品导航| 国产美女av一区二区三区| 亚洲成人免费视频| 一区二区免费看| 国产精品成人一区二区三区夜夜夜| 欧美成人午夜电影| 日韩一区二区三免费高清| 欧美日精品一区视频| 91社区在线播放| 成人激情文学综合网| 国产精品一区在线观看你懂的| 日韩精品亚洲专区| 亚洲国产精品久久久久婷婷884| 亚洲婷婷综合色高清在线| 久久久国际精品| 26uuu久久天堂性欧美| 欧美一卡在线观看| 欧美天堂一区二区三区| 色88888久久久久久影院按摩| 粉嫩av亚洲一区二区图片| 国产乱码字幕精品高清av| 精品无人码麻豆乱码1区2区| 蜜臀精品一区二区三区在线观看 | 欧亚洲嫩模精品一区三区| 不卡的看片网站| 成人国产一区二区三区精品| 国产精品一区二区果冻传媒| 国内国产精品久久| 久久99精品国产麻豆婷婷洗澡| 日韩成人一区二区三区在线观看| 99久久久久免费精品国产 | 欧美日韩免费一区二区三区| 91精品办公室少妇高潮对白| 色综合天天综合给合国产| 91免费观看视频| 日本高清不卡aⅴ免费网站| 在线精品视频一区二区三四 | 欧美日韩高清在线| 欧美电影一区二区| 91精品国产欧美一区二区成人| 欧美男男青年gay1069videost | 久久99九九99精品| 精品一区二区三区在线播放视频 | 国产91精品一区二区麻豆网站| 国产精品99久久久久久似苏梦涵| 国产成人综合精品三级| 成人福利视频网站| caoporn国产精品| 在线影院国内精品| 欧美日韩一区国产| 欧美一级高清片| 久久综合九色综合97婷婷| 欧美高清一级片在线观看| 亚洲欧洲三级电影| 亚洲午夜精品一区二区三区他趣| 香蕉成人伊视频在线观看| 日韩激情视频在线观看| 久久精品国产一区二区三| 国产成人精品亚洲777人妖 | 欧美综合在线视频| 5月丁香婷婷综合| 精品国产网站在线观看| 国产亚洲精品aa| 亚洲日本va在线观看| 亚洲在线中文字幕| 日本中文一区二区三区| 国产在线一区观看| jlzzjlzz国产精品久久| 欧洲国产伦久久久久久久| 日韩一区和二区| 国产人成亚洲第一网站在线播放 | 在线视频欧美精品| 欧美一区二区视频在线观看2022| 欧美mv和日韩mv国产网站| 久久久蜜桃精品| 亚洲欧美欧美一区二区三区| 亚洲成人1区2区| 国产一区二区网址| 91美女精品福利| 欧美一级夜夜爽| 欧美激情一区二区在线| 亚洲电影激情视频网站| 久久99国产精品免费网站| 99视频一区二区三区| 欧美电影一区二区| 欧美激情在线免费观看| 亚洲丶国产丶欧美一区二区三区| 国内精品免费**视频| 色婷婷久久一区二区三区麻豆| 日韩欧美激情一区| 亚洲色图色小说| 麻豆国产91在线播放| 91玉足脚交白嫩脚丫在线播放| 欧美一区2区视频在线观看| 国产精品一卡二卡在线观看| 欧美视频在线播放| 久久你懂得1024| 亚洲电影在线播放| 成人午夜激情在线| 91精品国产入口| 亚洲日本va午夜在线电影| 久久精品国产免费| 色成人在线视频| 国产丝袜美腿一区二区三区| 亚洲国产三级在线| 粉嫩欧美一区二区三区高清影视| 欧美日韩精品久久久| 国产精品视频看| 蜜臀av性久久久久蜜臀av麻豆| 色综合亚洲欧洲| www国产精品av| 香蕉成人伊视频在线观看| 成年人网站91| 精品国产91乱码一区二区三区 | 中文字幕佐山爱一区二区免费| 免费高清在线一区| 在线看不卡av| 国产精品三级电影| 久草热8精品视频在线观看| 欧美亚洲综合久久| 国产精品午夜在线观看| 美女国产一区二区三区| 在线精品国精品国产尤物884a| 中文字幕国产一区| 激情深爱一区二区| 欧美一区二区三区四区高清| 亚洲欧美中日韩| 从欧美一区二区三区| 久久综合国产精品| 美女一区二区视频| 欧美性大战久久久久久久蜜臀| 国产精品乱码一区二区三区软件| 久国产精品韩国三级视频|