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

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

?? atmdrvmod.f90

?? CCSM Research Tools: Community Atmosphere Model (CAM)
?? F90
?? 第 1 頁 / 共 4 頁
字號:
       end if! Get variable names        status = nf_inq_nvars(ncid, nvar)       if (status /= nf_noerr) then          write (6,*) ' ATM_OPENFILE netcdf error = ',nf_strerror(status)          call endrun       end if       do i = 1, nvar          call wrap_inq_varname (ncid, i, varnam(i))       end do    endif     !end of if-masterproc block! Calculate temporal resolution of the dataset in minutes and! reset time index#if (defined SPMD)     call mpi_bcast (ntim, 1, mpiint, 0, mpicom, ier)#endif    atmmin = ndaypm(kmo) * minpday / ntim    itim = 0                     return  end subroutine atm_openfile!=======================================================================  subroutine atm_readdata (fname, kmo, itim)!----------------------------------------------------------------------- ! ! Purpose: ! read atmospheric forcing from netCDF file!! Method: ! Read a netCDF data file.!! Every file that references a netCDF function must have the! include statement: include 'netcdf.inc'!! netCDF datasets -!    o referenced by a dataset id that is obtained when the!      dataset is first created or opened!    o nf_create (fname, nf_clobber, ncid): creates a new netCDF data file!      with name [fname], overwritting if already exists, and returning!      a dataset id [ncid] that is used to refer to dataset in other!      netCDF function calls!    o nf_open (fname, nf_nowrite, ncid): opens existing netCDF file!      [fname] in read mode only, returning id [ncid]!    o nf_enddef (ncid): takes open netCDF dataset, referenced by [ncid],!      out of define mode!    o nf_close (ncid): closes an open netCDF dataset, referenced by [ncid]!! netCDF dimensions -!    o have both a name and a length!    o one dimension in the dataset can have length unlimited (e.g., time!      dimension can be unlimited to have multiple time slices in dataset)!! netCDF variables -!    o A netCDF variable has a name, type [nf_char, nf_int, nf_float,!      nf_double], shape (dimension), and attributes (e.g., long name, units).!      These are specified when the variable is defined. A variable also!      has values, which are specified in data mode.!    o A netCDF variable is referenced by an integer variable (1,2,3,...),!      which is in the order in which the variables are defined!    o Character string is treated as an array of characters!    o A coordinate variable is a special netCDF variable that has the!      same name as a dimension (e.g., lat(lat), lon(lon)). It is used!      by some appication packages to define the physical coordinate!      corresponding to that dimension!    o Variables are dimensioned in Fortran opposite of how listed!      in netCDF file, e.g.:!               Fortran             netCDF!              --------------    --------------!              x(lon,lat)     -> x(lat,lon)!              x(lon,lat,lev) -> x(lev,lat,lon)!              x(lon,lat,tim) -> x(tim,lat,lon)! ! Author: Sam Levis! !-----------------------------------------------------------------------    use precision    use clm_varcon  , only : tfrz, sb    use fileutils   , only : getfil#if (defined SPMD)    use mpishorthand, only : mpiint, mpir8, mpicom#endif    implicit none    include 'netcdf.inc'! ------------------------ arguments ---------------------------------    character(len=*), intent(in) :: fname           !history file to open and read    integer, intent(in)  :: kmo, itim               !current month and time index! --------------------------------------------------------------------! ------------------------ local variables ---------------------------    integer :: i,j,k,n                  !do loop indices    integer :: ier                      !error status    integer :: varid                    !netCDF variable id    integer :: status                   !netCDF error status    integer :: beg3d(3)                 !netCDF 3-d start index (where to read first value)    integer :: len3d(3)                 !netCDF 3-d count index (number of values to read)! atm input field names     character(len=8) :: fldlst(14)      !name of possible atm fields in input file    data fldlst( 1) /'TBOT    '/    data fldlst( 2) /'WIND    '/    data fldlst( 3) /'QBOT    '/     data fldlst( 4) /'Tdew    '/     data fldlst( 5) /'RH      '/     data fldlst( 6) /'ZBOT    '/    data fldlst( 7) /'PSRF    '/    data fldlst( 8) /'FSDS    '/    data fldlst( 9) /'FSDSdir '/    data fldlst(10) /'FSDSdif '/    data fldlst(11) /'FLDS    '/    data fldlst(12) /'PRECTmms'/    data fldlst(13) /'PRECCmms'/    data fldlst(14) /'PRECLmms'/    real(r8) ea                    !atmospheric emissivity    logical atmread_err! use polynomials to calculate saturation vapor pressure and derivative with! respect to temperature: over water when t > 0 c and over ice when t <= 0 c! required to convert relative humidity to specific humidity    real(r8) esatw                 !saturation vapor pressure over water (Pa)    real(r8) esati                 !saturation vapor pressure over ice (Pa)    real(r8) e                     !vapor pressure (Pa)    real(r8) qsat                  !saturation specific humidity (kg/kg)    real(r8) a0,a1,a2,a3,a4,a5,a6  !coefficients for esat over water    real(r8) b0,b1,b2,b3,b4,b5,b6  !coefficients for esat over ice    real(r8) tdc, t                !Kelvins to Celcius function and its input    parameter (a0=6.107799961    , a1=4.436518521e-01, &               a2=1.428945805e-02, a3=2.650648471e-04, &               a4=3.031240396e-06, a5=2.034080948e-08, &               a6=6.136820929e-11)    parameter (b0=6.109177956    , b1=5.034698970e-01, &               b2=1.886013408e-02, b3=4.176223716e-04, &               b4=5.824720280e-06, b5=4.838803174e-08, &               b6=1.838826904e-10)! function declarations    tdc(t) = min( 50._r8, max(-50._r8,(t-SHR_CONST_TKFRZ)) )    esatw(t) = 100.*(a0+t*(a1+t*(a2+t*(a3+t*(a4+t*(a5+t*a6))))))    esati(t) = 100.*(b0+t*(b1+t*(b2+t*(b3+t*(b4+t*(b5+t*b6))))))! --------------------------------------------------------------------! --------------------------------------------------------------------! Read single-level fields!! this is done at every subsequent call to atm_readdata! this includes a second call at the 1st tstep of the run or of the month!!    Use wrap_get_vara_realx (a wrapper to nf_get_vara_real)!    to read data for variable referenced by!!    variable id = [i]!!    nf_get_vara_real (ncid, i, beg, len, varval)!    integer beg - a vector of integers specifying the index in the!                  variable where the first data value is read.!                  must be dimensioned same as the variable's dimension!                  and a starting value must be given for each dimension!    integer len - a vector of integers specifying the number of data!                  values, for each of the variable's dimensions, to read.!                  must be dimensioned same as the variable's dimension!                  and a length must be given for each dimension! --------------------------------------------------------------------    if (masterproc) then! initialize fields to the flag value       x(:,:,:) = -1.         ! read input data single-level fields       beg3d(1) = 1     ;  len3d(1) = atmlon       beg3d(2) = 1     ;  len3d(2) = atmlat       beg3d(3) = itim  ;  len3d(3) = 1       do k = 1, 14          do n = 1, nvar             if (varnam(n) == fldlst(k)) then                call wrap_get_vara_realx (ncid,n,beg3d,len3d,x(1,1,k))             end if          end do              !end loop of fields in input file       end do                 !end loop of fields expected in input file! Close file at the end of the month! NOTE: as written will not close file if run ends mid-month       if (itim == ntim) then          call wrap_close (ncid)          write (6,*) '---------------------------------------'          write (6,*) 'ATM_READDATA: closing data for ',trim(fname)          write (6,*) '---------------------------------------'          write (6,*)       end if    endif	!end of if-masterproc block#if (defined SPMD)     call mpi_bcast (x, size(x), mpir8, 0, mpicom, ier)#endif! ----------------------------------------------------------------------! Determine 2d atmospheric fields! Follow order in fldlst(14) to determine what was read and what was not ! ----------------------------------------------------------------------! Loop over atmospheric longitudes and latitudes    atmread_err = .false.!$OMP PARALLEL DO PRIVATE (i,j,e,ea,qsat)    do j = 1, atmlat       do i = 1, atmlon! FORC_TXY          if (nint(x(i,j,1)) == -1) then             write(6,*)'ATM error: TBOT has not been read by atm_readdata'             atmread_err = .true.          else if (x(i,j,1) < 50.) then             write(6,*)'ATM error: TBOT appears to be in deg C'             write(6,*)'Converting to Kelvins now'             forc_txy_a(i,j) = x(i,j,1) + tfrz          else             forc_txy_a(i,j) = x(i,j,1)          end if! FORC_UXY, FORC_VXY          if (nint(x(i,j,2)) == -1) then             write(6,*)'ATM error: WIND has not been read by atm_readdata'             atmread_err = .true.          else             forc_uxy_a(i,j) = x(i,j,2) / sqrt(2.)             forc_vxy_a(i,j) = x(i,j,2) / sqrt(2.)          end if! FORC_PSRFXY, FORC_PBOTXY          if (nint(x(i,j,7)) == -1) then             forc_psrfxy_a(i,j) = SHR_CONST_PSTD          else             forc_psrfxy_a(i,j) = x(i,j,7)          end if          forc_pbotxy_a(i,j)  = forc_psrfxy_a(i,j)!FORC_QXY          if (nint(x(i,j,3)) == -1) then             if (nint(x(i,j,4)) == -1) then                if (nint(x(i,j,5)) == -1) then                   write(6,*)'ATM error: Humidity has not been'                   write(6,*)'read by atm_readdata'                   atmread_err = .true.                else          !using RH as %                   if (forc_txy_a(i,j) > tfrz) then                      e = x(i,j,5)/100. * esatw(tdc(forc_txy_a(i,j)))                   else                      e = x(i,j,5)/100. * esati(tdc(forc_txy_a(i,j)))                   end if                end if                forc_qxy_a(i,j) = 0.622*e / (forc_pbotxy_a(i,j) - 0.378*e)             else             !using Tdew                if (x(i,j,4) < 50.) then                   write(6,*)'ATM warning: Tdew appears to be in'                   write(6,*)'deg C, so converting to Kelvin'                   x(i,j,4) = x(i,j,4) + tfrz                end if                if (x(i,j,4) > forc_txy_a(i,j)) then                   write(6,*)'ATM warning: Dewpt temp > temp!'                end if                if (x(i,j,4) > tfrz) then                   e = esatw(tdc(x(i,j,4)))                else                   e = esati(tdc(x(i,j,4)))                end if                forc_qxy_a(i,j) = 0.622*e / (forc_pbotxy_a(i,j) - 0.378*e)             end if          else                !using QBOT in kg/kg             if (forc_txy_a(i,j) > tfrz) then                e = esatw(tdc(forc_txy_a(i,j)))             else                e = esati(tdc(forc_txy_a(i,j)))             end if             qsat = 0.622*e / (forc_pbotxy_a(i,j) - 0.378*e)             if (qsat < x(i,j,3)) then                forc_qxy_a(i,j) = qsat!                 write(6,*)'ATM warning: qsat < q!'             else                forc_qxy_a(i,j) = x(i,j,3)             end if          end if! ZGCMXY          if (nint(x(i,j,6)) == -1) then             zgcmxy_a(i,j) = 30.          else             zgcmxy_a(i,j) = x(i,j,6)          end if! FORC_SOLSXY, FORC_SOLLXY, FORC_SOLSDXY, FORC_SOLLDXY

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av一区二区在线观看| 日韩av二区在线播放| 日韩视频一区二区三区在线播放| 国产精品亚洲午夜一区二区三区 | 成人黄页毛片网站| 免费看日韩a级影片| 亚洲一线二线三线视频| 国产人成亚洲第一网站在线播放| 国产精品二三区| 日韩精品一区二区三区三区免费 | 精品不卡在线视频| 欧美日韩精品一区二区在线播放 | 精品国产免费一区二区三区香蕉| 欧美曰成人黄网| 成人精品视频网站| 国产一区二区三区不卡在线观看 | 欧美日韩在线免费视频| 成人av影院在线| 国产乱淫av一区二区三区 | 精品一区二区三区影院在线午夜| 亚洲福中文字幕伊人影院| 国产精品欧美综合在线| 久久精品男人的天堂| 欧美不卡视频一区| 91精品国产入口| 欧美日韩在线三级| 欧洲精品中文字幕| 色综合久久88色综合天天6| 成人h动漫精品| 不卡电影一区二区三区| 国产成人av一区二区三区在线| 久久国产精品色| 久久国产精品区| 精品一区二区三区久久| 黑人巨大精品欧美黑白配亚洲| 久久精品国产亚洲一区二区三区 | 日韩精品视频网| 同产精品九九九| 日本一区中文字幕| 麻豆精品在线视频| 麻豆国产精品777777在线| 麻豆国产精品777777在线| 麻豆国产91在线播放| 极品瑜伽女神91| 国模冰冰炮一区二区| 国产精品66部| av爱爱亚洲一区| 一本色道久久综合狠狠躁的推荐| 日本精品免费观看高清观看| 日本久久一区二区三区| 欧美人伦禁忌dvd放荡欲情| 91精品国产全国免费观看| 欧美一级片在线观看| 欧美v日韩v国产v| 国产亲近乱来精品视频| 国产精品二三区| 亚洲一区二区三区国产| 日日夜夜免费精品| 精品一区二区三区欧美| 成人精品电影在线观看| 色成年激情久久综合| 91精品国产欧美一区二区18| 久久久国产综合精品女国产盗摄| 国产精品拍天天在线| 亚洲最大成人综合| 精品一区二区三区免费视频| 成人黄页在线观看| 欧美久久高跟鞋激| 国产亚洲精久久久久久| 樱桃视频在线观看一区| 日本午夜一本久久久综合| 国产精品羞羞答答xxdd| 色婷婷一区二区三区四区| 日韩欧美www| 中文字幕欧美一| 青青青爽久久午夜综合久久午夜| 国产精品夜夜爽| 欧美色老头old∨ideo| 久久丝袜美腿综合| 伊人色综合久久天天人手人婷| 奇米影视一区二区三区| 97久久精品人人做人人爽50路| 欧美一区二区三区日韩| 中文字幕中文乱码欧美一区二区| 午夜在线成人av| 成人avav在线| 欧美大白屁股肥臀xxxxxx| 亚洲一级二级三级| 国产伦精品一区二区三区视频青涩 | 亚洲私人黄色宅男| 蜜乳av一区二区三区| 91免费视频观看| 久久这里只有精品视频网| 亚洲一级二级在线| 成人精品鲁一区一区二区| 日韩午夜在线影院| 亚洲免费大片在线观看| 国产成人亚洲精品狼色在线| 91麻豆精品国产91久久久久| 亚洲欧洲日韩在线| 久久成人av少妇免费| 欧美性生活影院| 欧美国产成人精品| 精品一区二区三区视频在线观看| 欧美色老头old∨ideo| 国产精品不卡在线| 国产一区二区三区四区五区美女| 欧美日韩国产一级| 亚洲自拍另类综合| 91免费国产在线| 日本一区二区三区国色天香 | 欧美日韩国产电影| 亚洲精品乱码久久久久久久久| 国产91清纯白嫩初高中在线观看| 91精品国产福利在线观看| 亚洲一区二区三区小说| 色综合久久天天| 日韩码欧中文字| 不卡的av网站| 久久精品人人做人人爽人人| 精品一区二区三区的国产在线播放 | 日本不卡在线视频| 欧美人xxxx| 亚洲午夜精品在线| 在线影视一区二区三区| 亚洲乱码国产乱码精品精98午夜| 99re这里只有精品视频首页| 国产精品久久久99| a4yy欧美一区二区三区| 国产精品美女久久福利网站| 风间由美性色一区二区三区| 国产女人aaa级久久久级| 东方aⅴ免费观看久久av| 久久精品人人做人人爽人人| 国产精品影音先锋| 国产欧美日韩卡一| 成av人片一区二区| 亚洲欧美日韩在线| 欧美色手机在线观看| 视频一区国产视频| 日韩一区二区三| 国产精一区二区三区| 国产精品久线在线观看| 91免费国产在线观看| 亚洲午夜激情av| 日韩欧美一级在线播放| 国产在线看一区| 欧美极品美女视频| 色综合色狠狠综合色| 亚洲成人激情社区| 日韩欧美激情一区| 国产精品一二三| 亚洲视频免费看| 欧美精品一级二级| 激情深爱一区二区| 中文字幕一区二区在线播放| 91国偷自产一区二区三区观看| 亚洲国产精品久久人人爱蜜臀| 欧美一区二区三区视频在线| 国产精品一二三四| 一区二区三区四区在线播放| 欧美一区国产二区| 风间由美一区二区av101| 亚洲精品videosex极品| 制服.丝袜.亚洲.中文.综合| 国产乱码一区二区三区| 亚洲精选视频在线| 日韩精品资源二区在线| 99久久综合狠狠综合久久| 亚洲一区二区在线免费看| 日韩欧美一级在线播放| 国产成人综合网| 亚洲成av人综合在线观看| 精品捆绑美女sm三区| 色婷婷综合五月| 韩国理伦片一区二区三区在线播放| 国产精品全国免费观看高清| 欧美日韩视频一区二区| 国精品**一区二区三区在线蜜桃| 亚洲天堂免费在线观看视频| 欧美美女黄视频| www.在线成人| 久久99精品久久久久| 亚洲欧美激情小说另类| 亚洲精品一区二区三区影院| 97久久超碰国产精品电影| 看电视剧不卡顿的网站| 亚洲欧美在线观看| 欧美精品一区二区三区蜜桃| 一本大道av伊人久久综合| 国产一区二区中文字幕| 香港成人在线视频| 亚洲婷婷综合色高清在线| 精品国产成人在线影院 | 成人av在线网| 经典三级在线一区| 午夜精品成人在线视频| 亚洲欧美日韩一区二区三区在线观看| 日韩精品专区在线影院重磅| 精品视频在线免费看|