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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? atmdrvmod.f90

?? CCSM Research Tools: Community Atmosphere Model (CAM)
?? F90
?? 第 1 頁 / 共 4 頁
字號(hào):
#include <misc.h>#include <preproc.h>module atmdrvMod#if (defined OFFLINE)!----------------------------------------------------------------------- ! ! Purpose: ! Read atmospheric grid data and generate atmospheric forcing!! Method: ! ! Author: Gordon Bonan, Sam Levis and Mariana Vertenstein! !-----------------------------------------------------------------------! $Id: atmdrvMod.F90,v 1.6.6.7 2002/05/13 18:00:01 erik Exp $!-----------------------------------------------------------------------  use precision  use shr_const_mod, only : SHR_CONST_TKFRZ,SHR_CONST_PSTD  use clm_varpar   , only : lsmlon, lsmlat  use spmdMod      , only : masterproc  implicit none! logical variables for file manipuation  logical :: open_data=.true.             !true => open data file (first tstep of the run or month)  logical :: allocated_data=.false.       !true => allocate dynamic data! atmospheric grid data  integer  :: atmlon                      !number of atm longitudes  integer  :: atmlat                      !number of atm latitudes  real(r8) :: edge_a(4)                   !N,E,S,W edges of atm grid  integer , allocatable :: numlon_a(:)    !number of lon points at each lat  real(r8), allocatable :: latixy_a(:,:)  !latitude of grid cell (degrees)  real(r8), allocatable :: longxy_a(:,:)  !longitude of grid cell (degrees)! atmospheric forcing variables on atmospheric grid  real(r8), allocatable :: x(:,:,:)            !temp. array in which atm data is stored  real(r8), allocatable :: forc_txy_a (:,:)    !atm bottom level temperature (Kelvin)  real(r8), allocatable :: forc_uxy_a (:,:)    !atm bottom level zonal wind (m/s)  real(r8), allocatable :: forc_vxy_a (:,:)    !atm bottom level meridional wind (m/s)  real(r8), allocatable :: forc_qxy_a (:,:)    !atm bottom level specific humidity (kg/kg)  real(r8), allocatable :: zgcmxy_a (:,:)      !atm bottom level height above surface (m)  real(r8), allocatable :: prcxy_a  (:,:)      !convective precipitation rate (mm H2O/s)  real(r8), allocatable :: prlxy_a  (:,:)      !large-scale precipitation rate (mm H2O/s)  real(r8), allocatable :: flwdsxy_a(:,:)      !downward longwave rad onto surface (W/m**2)  real(r8), allocatable :: forc_solsxy_a (:,:) !vis direct beam solar rad onto srf (W/m**2)  real(r8), allocatable :: forc_sollxy_a (:,:) !nir direct beam solar rad onto srf (W/m**2)  real(r8), allocatable :: forc_solsdxy_a(:,:) !vis diffuse solar rad onto srf (W/m**2)  real(r8), allocatable :: forc_solldxy_a(:,:) !nir diffuse solar rad onto srf(W/m**2)  real(r8), allocatable :: forc_pbotxy_a (:,:) !atm bottom level pressure (Pa)  real(r8), allocatable :: forc_psrfxy_a (:,:) !atm surface pressure (Pa)! atmospheric forcing variables on land model grid  real(r8) :: forc_txy (lsmlon,lsmlat)         !atm bottom level temperature (Kelvin)  real(r8) :: forc_uxy (lsmlon,lsmlat)         !atm bottom level zonal wind (m/s)  real(r8) :: forc_vxy (lsmlon,lsmlat)         !atm bottom level meridional wind (m/s)  real(r8) :: forc_qxy (lsmlon,lsmlat)         !atm bottom level specific humidity (kg/kg)  real(r8) :: zgcmxy (lsmlon,lsmlat)           !atm bottom level height above surface (m)  real(r8) :: prcxy  (lsmlon,lsmlat)           !convective precipitation rate (mm H2O/s)  real(r8) :: prlxy  (lsmlon,lsmlat)           !large-scale precipitation rate (mm H2O/s)  real(r8) :: flwdsxy(lsmlon,lsmlat)           !downward longwave rad onto surface (W/m**2)  real(r8) :: forc_solsxy (lsmlon,lsmlat)      !vis direct beam solar rad onto srf (W/m**2)  real(r8) :: forc_sollxy (lsmlon,lsmlat)      !nir direct beam solar rad onto srf (W/m**2)  real(r8) :: forc_solsdxy(lsmlon,lsmlat)      !vis diffuse solar rad onto srf (W/m**2)  real(r8) :: forc_solldxy(lsmlon,lsmlat)      !nir diffuse solar rad onto srf(W/m**2)  real(r8) :: forc_pbotxy (lsmlon,lsmlat)      !atm bottom level pressure (Pa)  real(r8) :: forc_psrfxy (lsmlon,lsmlat)      !atm surface pressure (Pa)! atmosphere grid to land model surface grid mapping for each land grid cell:  integer, parameter :: mxovr =10          !maximum number of overlapping cells  integer :: novr_a2s(lsmlon,lsmlat)       !number    of overlapping atm cells  integer :: iovr_a2s(lsmlon,lsmlat,mxovr) !lon index of overlapping atm cells  integer :: jovr_a2s(lsmlon,lsmlat,mxovr) !lat index of overlapping atm cells  real(r8):: wovr_a2s(lsmlon,lsmlat,mxovr) !weight    of overlapping atm cells! 1d temporarys  real(r8), allocatable, private :: forc_sols(:)   !vis direct beam solar rad onto srf (W/m**2)  real(r8), allocatable, private :: forc_soll(:)   !nir direct beam solar rad onto srf (W/m**2)  real(r8), allocatable, private :: forc_solsd(:)  !vis diffuse solar rad onto srf (W/m**2)  real(r8), allocatable, private :: forc_solld(:)  !nir diffuse solar rad onto srf(W/m**2)! file netCDF id's  integer :: ncid                !netCDF dataset id  integer :: nvar                !number of variables in the data file  integer :: nlon                !number of atm longitude points  integer :: nlat                !number of atm latitude points  integer :: ntim                !number of atm time slices per data file  character(len=8) :: varnam(99) !variable names of atm. fields  SAVE!=======================================================================CONTAINS!=======================================================================  subroutine atmdrv(nstep)!----------------------------------------------------------------------- ! ! Purpose: ! read atmospheric data and generate required atmospheric forcing !! Method: ! This code reads in atmospheric fields from an input file and generates ! the required atmospheric forcing. These data files have [atmmin] minute ! average data for each month. Input data files are named in month-year ! format (e.g., 09-0001 contains 240 3-hour time slices of data, 30*8, for ! September of year one). The model will cycle through however many full ! years of data are available [pyr]. At least one full year of data is! necessary for cycling. The model may start on any base date, as long as! this date corresponds to an existing data file. A run need not be an! exact multiple of a year.!! ============================! Possible atmospheric fields:! ============================! Name     Description                              Required/Optional! -----------------------------------------------------------------------------! TBOT     temperature (K)                          Required! WIND     wind:sqrt(u**2+v**2) (m/s)               Required! QBOT     specific humidity (kg/kg)                Required! Tdew     dewpoint temperature (K)                 Alternative to Q! RH       relative humidity (percent)              Alternative to Q! ZBOT     reference height (m)                     optional ! PSRF     surface pressure (Pa)                    optional! FSDS     total incident solar radiation (W/m**2)  Required! FSDSdir  direct incident solar radiation (W/m**2) optional (replaces FSDS)! FSDSdif  diffuse incident solar rad (W/m**2)      optional (replaces FSDS)! FLDS     incident longwave radiation (W/m**2)     optional! PRECTmms total precipitation (mm H2O / sec)       Required! PRECCmms convective precipitation (mm H2O / sec)  optional (replaces PRECT)! PRECLmms large-scale precipitation (mm H2O / sec) optional (replaces PRECT)! ! ============! Data format:! ============! Data format is netCDF with dimensions longitude x latitude! for each time slice and field. Variable names can be as in above list! or can be reset to desired names using [fldlst] in code below.!! ===============! Namelist input:! ===============! character*256 offline_atmdir = directory for input atm data files !                                (can be Mass Store)! ! Author: Sam Levis! !-----------------------------------------------------------------------    use precision    use infnan    use clm_varder    use clm_varpar  , only : lsmlon, lsmlat    use clm_varctl  , only : offline_atmdir    use clm_varcon  , only : rair, cpair, po2, pco2, tcrit, tfrz    use clm_varmap  , only : begpatch, endpatch    use time_manager, only : get_step_size, get_curr_calday, get_curr_date    use fileutils   , only : getfil    implicit none    include 'netcdf.inc'! ------------------------ arguments ------------------------------    integer, intent(in) :: nstep    !current time step! -----------------------------------------------------------------! ------------------------ local variables ------------------------    integer :: i,j,k                  !loop indices    integer :: itimlast               !last time index used in atm_readdata    real(r8):: calday                 !calendar day at Greenwich (1.00 -> 365.99)    integer :: kda                    !day (1 -> 31)    integer :: kmo                    !month (1 -> 12)    integer :: kyr                    !year (0 -> ...)    integer :: ksec                   !current seconds of current date (0 -> 86400)    integer :: mcdate                 !current date in integer format [yyyymmdd]    integer :: mcsec                  !current time of day [seconds]    integer :: dtime                  !time step size      integer :: minpday = 1440         !minutes per day    integer :: secpmin = 60           !seconds per minute    integer :: ki,kf                  !temporaries	    integer, SAVE :: itim             !time index used in atm_readdata    integer, SAVE :: atmmin           !temporal resolution of atm data (in minutes)    character(len=256), SAVE :: locfn !full file name in case atmdir is in MSS    real(r8) :: temp(begpatch:endpatch)     real(r8) :: forc_precc(begpatch:endpatch)    real(r8) :: forc_precl(begpatch:endpatch)! -----------------------------------------------------------------! -----------------------------------------------------------------! allocate space for temporaries! -----------------------------------------------------------------    if (.not. allocated(forc_sols )) then       allocate (forc_sols(begpatch:endpatch )) ; forc_sols(:) = inf       endif    if (.not. allocated(forc_soll )) then       allocate (forc_soll(begpatch:endpatch )) ; forc_soll(:) = inf       endif    if (.not. allocated(forc_solsd)) then       allocate (forc_solsd(begpatch:endpatch)) ; forc_solsd(:) = inf       endif    if (.not. allocated(forc_solld)) then       allocate (forc_solld(begpatch:endpatch)) ; forc_solld(:) = inf       endif! -----------------------------------------------------------------! Open netcdf file and read data every [atmmin] minutes! -----------------------------------------------------------------! Calendar information for current [nstep]    dtime = get_step_size()    calday = get_curr_calday()    call get_curr_date(kyr, kmo, kda, mcsec)    mcdate = kyr*10000 + kmo*100 + kda! If 1st tstep of the run or of the month, then enter next if-block! Rest flag to open file and set flag to read data    if (open_data) then       call atm_openfile (kda, kmo, kyr, locfn, itim, atmmin)    endif! Calculate time index    itimlast = itim    itim = 1 + ((kda - 1)*minpday + (mcsec - dtime)/secpmin)/atmmin    if (dtime == int(atmmin*secpmin)) then          if (kda == 1 .and. mcsec == 0) itim = itimlast+1    else       if (kda == 1 .and. mcsec == 0) itim = itimlast    endif! Determine if new data is to be read    if (open_data .or. mod(nstep-1,atmmin*secpmin/dtime) ==0 ) then! Read data for current time slice       if (masterproc) then          write (6,*)          write (6,'(72a1)') ("-",i=1,60)          write (6,*)'nstep= ',nstep,' date= ',mcdate,' sec= ',mcsec          if ( len_trim(locfn) > 0 )then             write (6,*)'ATM: attempting to read data from ',trim(locfn)          end if          write (6,'(72a1)') ("-",i=1,60)          write (6,*)       endif                 call atm_readdata (locfn, kmo, itim)! Map 2d atmospheric fields from atmospheric grid to land model surface grid. ! Area-average absolute value of winds (i.e., regardless of! direction) since land model cares about magnitude not direction.! Then need to adjust resultant stresses for direction of wind.       call interpa2s (forc_txy_a    , forc_txy    , zgcmxy_a      , zgcmxy      , &                       forc_uxy_a    , forc_uxy    , forc_vxy_a    , forc_vxy    , &                       forc_qxy_a    , forc_qxy    , prcxy_a       , prcxy       , &                       prlxy_a       , prlxy       , flwdsxy_a     , flwdsxy     , &                       forc_solsxy_a , forc_solsxy , forc_sollxy_a , forc_sollxy , &                       forc_solsdxy_a, forc_solsdxy, forc_solldxy_a, forc_solldxy, &                       forc_pbotxy_a , forc_pbotxy , forc_psrfxy_a , forc_psrfxy )! Map atmospheric fields to force land model: ! [lsmlon] x [lsmlat] grid -> [numpatch] vector of subgrid patches       ki = begpatch; kf = endpatch       call xy2v (lsmlon,lsmlat,forc_txy    ,ki,kf,temp ) ; clm(ki:kf)%forc_t   = temp(ki:kf)       call xy2v (lsmlon,lsmlat,forc_uxy    ,ki,kf,temp ) ; clm(ki:kf)%forc_u   = temp(ki:kf)       call xy2v (lsmlon,lsmlat,forc_vxy    ,ki,kf,temp ) ; clm(ki:kf)%forc_v   = temp(ki:kf)       call xy2v (lsmlon,lsmlat,forc_qxy    ,ki,kf,temp ) ; clm(ki:kf)%forc_q   = temp(ki:kf)       call xy2v (lsmlon,lsmlat,zgcmxy      ,ki,kf,temp ) ; clm(ki:kf)%forc_hgt = temp(ki:kf)       call xy2v (lsmlon,lsmlat,prcxy       ,ki,kf,temp ) ; forc_precc(ki:kf)   = temp(ki:kf)       call xy2v (lsmlon,lsmlat,prlxy       ,ki,kf,temp ) ; forc_precl(ki:kf)   = temp(ki:kf)       call xy2v (lsmlon,lsmlat,flwdsxy     ,ki,kf,temp ) ; clm(ki:kf)%forc_lwrad = temp(ki:kf)       call xy2v (lsmlon,lsmlat,forc_pbotxy ,ki,kf,temp ) ; clm(ki:kf)%forc_pbot   = temp(ki:kf)       call xy2v (lsmlon,lsmlat,forc_psrfxy ,ki,kf,temp ) ; clm(ki:kf)%forc_psrf   = temp(ki:kf)       call xy2v (lsmlon,lsmlat,forc_solsxy ,ki,kf,forc_sols )        call xy2v (lsmlon,lsmlat,forc_sollxy ,ki,kf,forc_soll )        call xy2v (lsmlon,lsmlat,forc_solsdxy,ki,kf,forc_solsd)        call xy2v (lsmlon,lsmlat,forc_solldxy,ki,kf,forc_solld) !$OMP PARALLEL DO PRIVATE (k)       do k = begpatch, endpatch          clm(k)%forc_hgt_u = clm(k)%forc_hgt   !observational height of wind [m]           clm(k)%forc_hgt_t = clm(k)%forc_hgt   !observational height of temperature [m]           clm(k)%forc_hgt_q = clm(k)%forc_hgt   !observational height of humidity [m] ! Set upper limit of air temperature for snowfall at 275.65K.! This cut-off was selected based on Fig. 1, Plate 3-1, of Snow! Hydrology (1956).          if (forc_precc(k)+forc_precl(k) > 0.) then             if (clm(k)%forc_t > (tfrz + tcrit)) then                clm(k)%itypprc   = 1                clm(k)%forc_rain = forc_precc(k)+forc_precl(k)                clm(k)%forc_snow = 0.             else                clm(k)%itypprc   = 2

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av中文字幕一区二区| 亚洲午夜免费视频| 国产精品嫩草影院com| 国产精品欧美一区喷水| 亚洲国产岛国毛片在线| 久久久久久一级片| 久久久久久99久久久精品网站| 日韩欧美亚洲一区二区| www久久精品| 国产精品污www在线观看| 亚洲三级小视频| 日本vs亚洲vs韩国一区三区 | 青草国产精品久久久久久| 久久激情综合网| www.亚洲色图| 欧美一区二区三区视频在线观看 | 国产精品亲子乱子伦xxxx裸| 亚洲裸体xxx| 韩国欧美一区二区| 欧美中文字幕不卡| 国产欧美日韩精品a在线观看| 国产精品国产三级国产专播品爱网| 亚洲一区二区三区在线| 国产精品一区在线观看乱码 | 亚洲综合无码一区二区| 久久精品免费观看| 欧美日韩亚洲综合在线 | 国产一区二区在线观看视频| 午夜激情久久久| 一本到三区不卡视频| 久久久久9999亚洲精品| 亚洲国产成人高清精品| 91亚洲男人天堂| 26uuu亚洲综合色欧美| 亚洲高清视频中文字幕| aa级大片欧美| 亚洲精品视频一区二区| 99久久国产免费看| 中文字幕一区二区三区蜜月| 国产在线一区二区| 欧美一区二区三区婷婷月色| 中文字幕人成不卡一区| 国产传媒欧美日韩成人| 久久精品在这里| 日本二三区不卡| 久久久精品人体av艺术| 日韩av一区二区三区四区| 国产麻豆精品久久一二三| 欧美最猛黑人xxxxx猛交| 色婷婷亚洲综合| 日韩理论在线观看| 麻豆免费看一区二区三区| 欧美三级蜜桃2在线观看| 亚洲综合网站在线观看| 欧美天堂亚洲电影院在线播放| 国产精品嫩草影院com| 成人av网站大全| 亚洲国产综合91精品麻豆| 欧美日韩在线播放三区四区| 日韩一区精品视频| 欧美v亚洲v综合ⅴ国产v| 国内欧美视频一区二区 | 欧美色爱综合网| 亚洲第一在线综合网站| 91久久精品一区二区| 亚洲色图在线视频| 色综合久久中文综合久久97| 综合在线观看色| 色综合久久久久| 日本成人在线网站| 国产亚洲成年网址在线观看| 色婷婷久久久久swag精品| 亚洲综合精品久久| 国产精品污污网站在线观看| 91福利在线看| 精品综合久久久久久8888| 中文字幕一区二区三区乱码在线| 91精品在线免费观看| 国产高清无密码一区二区三区| 亚洲欧美国产三级| 久久综合九色综合欧美就去吻| 久久嫩草精品久久久精品| 色偷偷成人一区二区三区91| 九九热在线视频观看这里只有精品| 亚洲色图.com| 中文字幕在线视频一区| 日韩美女一区二区三区| 色综合欧美在线| 国产+成+人+亚洲欧洲自线| 亚洲 欧美综合在线网络| 国产日韩欧美高清在线| 日韩精品一区二区三区在线| 国产成人夜色高潮福利影视| 亚洲国产一区二区视频| 久久久噜噜噜久久中文字幕色伊伊| 91女人视频在线观看| 国产传媒一区在线| 日韩av二区在线播放| 一区二区成人在线视频| 国产精品美女一区二区在线观看| 欧美综合天天夜夜久久| 韩国成人在线视频| 极品尤物av久久免费看| 九色综合国产一区二区三区| 理论片日本一区| 成人综合婷婷国产精品久久| 成人黄色777网| 色爱区综合激月婷婷| 欧美日韩一区三区四区| 在线播放欧美女士性生活| 88在线观看91蜜桃国自产| 欧美三级电影在线看| 欧美日韩国产综合久久| 欧美日韩一区二区电影| 欧美男同性恋视频网站| 日韩欧美视频在线| 久久午夜羞羞影院免费观看| 久久久美女毛片| 亚洲欧美日韩国产综合| 亚洲精品福利视频网站| 日韩电影网1区2区| 国产裸体歌舞团一区二区| av欧美精品.com| 欧美一区中文字幕| 国产精品嫩草久久久久| 午夜精品福利一区二区蜜股av| 久久er精品视频| 精品日韩99亚洲| 国产欧美精品一区aⅴ影院| 国产精品亲子乱子伦xxxx裸| 亚洲你懂的在线视频| 亚洲午夜免费电影| 毛片av一区二区| 99热国产精品| 欧美一区二区三区婷婷月色| 精品成人私密视频| 亚洲精品免费在线| 国产成人在线电影| 6080国产精品一区二区| 亚洲一区二区av在线| 色综合久久综合网欧美综合网 | www.av精品| 日韩一区二区免费视频| 亚洲精品写真福利| 成人在线视频一区| 精品久久久久久最新网址| 中文字幕色av一区二区三区| 韩国av一区二区| 日韩三级免费观看| 亚洲欧洲av一区二区三区久久| 午夜视频在线观看一区二区三区| 成人性色生活片| 欧美r级在线观看| 国产.精品.日韩.另类.中文.在线.播放 | 久久久www成人免费无遮挡大片| 日本va欧美va瓶| 欧美男女性生活在线直播观看| 亚洲欧美日韩综合aⅴ视频| 国产电影一区二区三区| 2021国产精品久久精品| 免费xxxx性欧美18vr| 欧美精品少妇一区二区三区| 亚洲国产精品一区二区久久| 欧美日韩一区二区三区高清| 亚洲午夜电影在线观看| 在线观看视频一区二区欧美日韩| 亚洲色图.com| 欧美日韩在线三级| 日韩精品国产欧美| 国产精品女主播在线观看| 色国产综合视频| 六月丁香综合在线视频| 2014亚洲片线观看视频免费| 国产精品自在欧美一区| 国产日产欧美一区| 欧洲亚洲国产日韩| 精品一区二区三区欧美| 136国产福利精品导航| 欧美乱熟臀69xxxxxx| 99久久精品国产导航| 亚洲欧美激情插 | 一区二区三区91| 欧美性视频一区二区三区| 亚洲成人午夜影院| 久久久三级国产网站| 国产成人免费xxxxxxxx| 亚洲欧美电影一区二区| 欧美猛男gaygay网站| 国产在线视频一区二区三区| 国产精品三级久久久久三级| 5858s免费视频成人| 精品亚洲欧美一区| 国产精品三级久久久久三级| 日韩亚洲欧美一区二区三区| 色噜噜狠狠成人中文综合| 不卡影院免费观看| 日本欧美加勒比视频| 亚洲成人一区在线| 国产欧美精品一区二区三区四区 | 亚洲高清三级视频|