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

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

?? sst_data.f90

?? CCSM Research Tools: Community Atmosphere Model (CAM)
?? F90
?? 第 1 頁 / 共 2 頁
字號:
#include <misc.h>#include <params.h>!----------------------------------------------------------------------- !! BOP!! !MODULE: sst_data!! !DESCRIPTION:	Module to handle dealing with the Sea-Surface Temperature !			datasets.  This module also figures out the location of!			sea-ice from these datasets where it is assumed that ! 	seawater at freezing or below is a flag for the existence of sea-ice.!	SST datasets that are created for use with the stand-alone CCM should!	take this into account and set grid-points where sea-ice fraction is!	greater than 50% to -1.8C and ensure that other grid points where sea-ice!	is less than 50% have SST's greater than -1.8C.!! Public interfaces:!!	sstini -- Initialization and reading of dataset.!	sstint -- Interpolate dataset SST to current time.!	sstan --- Apply the interpolated SST to the model state.!! $Id: sst_data.F90,v 1.9.2.3 2002/05/02 21:11:29 rosinski Exp $!!----------------------------------------------------------------------- module sst_data!! USES:!  use precision, only: r8  use pmgrid,    only: plon, plat, masterproc  use ppgrid,    only: pcols, begchunk, endchunk  use phys_grid, only: scatter_field_to_chunk, get_ncols_p  use comsrf,    only: plevmx, icefrac  use physconst, only: tmelt  use commap,    only: clat, clon  implicit none  public :: sst ! needed in ice_data!----------------------------------------------------------------------- ! PUBLIC: Make default data and interfaces private!----------------------------------------------------------------------- !! ! PUBLIC MEMBER FUNCTIONS:!  public sstan    ! Set the surface temperature, oro, and sea-ice fraction  public sstini   ! Initialization  public sstint   ! Time interpolation of SST data!===============================================================================!EOP!===============================================================================!----------------------------------------------------------------------- ! PRIVATE: Everthing else is private to this module!-----------------------------------------------------------------------   private   ! By default all data is private to this module  integer, parameter :: totsstsz=2000  real(r8), parameter :: daysperyear = 365.0  ! Number of days in a year  real(r8), allocatable, dimension(:,:,:) :: &      sstbdy         ! SST values on boundary dataset (pcols,begchunk:endchunk,2)  real(r8), allocatable, dimension(:,:) :: &      sst            ! Interpolated model sst values (pcols,begchunk:endchunk)  real(r8) :: cdaysstm   ! Calendar day for prv. month SST values read in  real(r8) :: cdaysstp   ! Calendar day for nxt. month SST values read in        integer :: nm,np   ! Array indices for prv., nxt month sst data  integer :: sstid   ! netcdf id for sst variable  integer :: lonsiz  ! size of longitude dimension on sst dataset  integer :: levsiz  ! size of level dimension on sst dataset  integer :: latsiz  ! size of latitude dimension on sst dataset  integer :: timesiz ! size of time dimension on sst dataset  integer :: np1     ! current forward time index of sst dataset  integer :: date_sst(totsstsz)! Date on sst dataset (YYYYMMDD)  integer :: sec_sst(totsstsz) ! seconds of date on sst dataset (0-86399)  real(r8), parameter :: tsice = -1.7999 ! Freezing point of sea ice degrees C                                         ! Use this with global sst data !===============================================================================CONTAINS!===============================================================================!======================================================================! PUBLIC ROUTINES: Following routines are publically accessable!======================================================================!----------------------------------------------------------------------- ! ! BOP!! !IROUTINE: sstan!! !DESCRIPTION: ! Update sea surface temperatures (sst's) and sea ice distribution!! Method: ! Assume that the sst data exists in a two dimensional field! encoded as follows:!     Land               values where oro field says so ("valid sst's!                        are provided globally, the model's land mask!                        determines whether the sst is used or not)!     Ocean without      values degrees celcius (greater than tsice)!      sea ice!     Ocean with         values less than tsice!      sea ice! New sea ice has a constant 0.5 cm value for snow cover prescribed! ! Author: CCM1!!-----------------------------------------------------------------------!! !INTERFACE:!subroutine sstan(lchnk   ,ncol    ,ocnfrac ,ts      )!! !INPUT PARAMETERS:!  integer , intent(in)    :: lchnk                ! chunk identifier  integer , intent(in)    :: ncol                 ! number of atmospheric columns!! !INPUT/OUTPUT PARAMETERS:!  real(r8), intent(in) :: ocnfrac(pcols)           ! Surface type flag array  real(r8), intent(inout) :: ts(pcols)            ! Surface temperature!-----------------------------------------------------------------------! EOP!---------------------------Local variables-----------------------------  integer i                 ! Column index!-----------------------------------------------------------------------! Open ocean!  do i=1,ncol     if (ocnfrac(i) > 0.) then        ts(i) = sst(i,lchnk) + tmelt     end if  end do  returnend subroutine sstan!----------------------------------------------------------------------- ! ! BOP!! !IROUTINE: sstini!! !DESCRIPTION:!! Initialize the procedure for specifying sea surface temperatures! Do initial read of time-varying sst boundary dataset, reading two! consecutive months on either side of the current model date.!! Method: ! ! Author: L.Bath! !-----------------------------------------------------------------------!! !INTERFACE!subroutine sstini!! !USES:!  use rgrid, only: nlon  use error_messages, only: alloc_err, handle_ncerr  use time_manager, only: get_curr_date, get_curr_calday, &                          is_perpetual, get_perp_date#if ( defined SPMD )  use mpishorthand, only: mpicom, mpiint, mpir8#endif!! EOP!!---------------------------Common blocks-------------------------------#include <comctl.h>#include <comlun.h>!---------------------------Local variables-----------------------------  integer dateid                ! netcdf id for date variable  integer secid                 ! netcdf id for seconds variable  integer londimid              ! netcdf id for longitude variable  integer latdimid              ! netcdf id for latitude variable  integer lonid                 ! netcdf id for longitude variable  integer latid                 ! netcdf id for latitude variable  integer timeid                ! netcdf id for time variable  integer nlonid                ! netcdf id for nlon variable (rgrid)  integer cnt3(3)               ! array of counts for each dimension  integer strt3(3)              ! array of starting indices  integer n                     ! indices  integer nlon_sst(plat)        ! number of lons per lat on bdy dataset  integer j                     ! latitude index  integer istat                 ! error return  integer  :: yr, mon, day      ! components of a date  integer  :: ncdate            ! current date in integer format [yyyymmdd]  integer  :: ncsec             ! current time of day [seconds]  real(r8) calday               ! calendar day (includes yr if no cycling)  real(r8) caldayloc            ! calendar day (includes yr if no cycling)  real(r8) xvar(plon,plat,2)    ! work space !-----------------------------------------------------------------------!! Initialize time indices!  nm = 1  np = 2!! Allocate space for data.!  allocate( sst(pcols,begchunk:endchunk), stat=istat )  call alloc_err( istat, 'sstini', 'sst', &       pcols*(endchunk-begchunk+1) )  if(aqua_planet) return  allocate( sstbdy(pcols,begchunk:endchunk,2), stat=istat )  call alloc_err( istat, 'sstini', 'sstbdy', &       pcols*(endchunk-begchunk+1)*2 )!! SPMD: Master does all the work.!  if (masterproc) then!! Use year information only if not cycling sst dataset!     calday = get_curr_calday()     if ( is_perpetual() ) then        call get_perp_date(yr, mon, day, ncsec)     else        call get_curr_date(yr, mon, day, ncsec)     end if     ncdate = yr*10000 + mon*100 + day     if (sstcyc) then        caldayloc = calday     else        caldayloc = calday + yr*daysperyear     end if!! Get and check dimension info!     call wrap_inq_dimid( ncid_sst, 'lon', londimid   )     call wrap_inq_dimid( ncid_sst, 'time', timeid  )     call wrap_inq_dimid( ncid_sst, 'lat', latdimid   )     call wrap_inq_dimlen( ncid_sst, londimid, lonsiz   )     if (lonsiz /= plon) then        write(6,*)'SSTINI: lonsiz=',lonsiz,' must = plon=',plon        call endrun     end if     call wrap_inq_dimlen( ncid_sst, latdimid, latsiz   )     if (latsiz /= plat) then        write(6,*)'SSTINI: latsiz=',latsiz,' must = plat=',plat        call endrun     end if     call wrap_inq_dimlen( ncid_sst, timeid, timesiz   )!! Check to make sure space allocated for time variables is sufficient!     if (timesiz>totsstsz) then        write(6,*)'SSTINI:  Allocated space for sst data is insufficient.'        write(6,*)'Please increase parameter totsstsz to',timesiz,' and recompile.'        call endrun     end if!! Check to ensure reduced or not grid of dataset matches that of model!     if (fullgrid) then        call wrap_inq_varid( ncid_sst, 'lon', lonid   )     else        call wrap_inq_varid (ncid_sst, 'nlon', nlonid)        call wrap_get_var_int (ncid_sst, nlonid, nlon_sst)        do j=1,plat           if (nlon_sst(j) /= nlon(j)) then              write(6,*)'SSTINI: model grid does not match dataset grid'              call endrun           end if        end do     end if     call wrap_inq_varid( ncid_sst, 'date', dateid   )     call wrap_inq_varid( ncid_sst, 'datesec', secid   )     call wrap_inq_varid( ncid_sst, 'SST_cpl', sstid   )     call wrap_inq_varid( ncid_sst, 'lat', latid   )!! Retrieve entire date and sec variables.!     call wrap_get_var_int (ncid_sst,dateid,date_sst)     call wrap_get_var_int (ncid_sst,secid,sec_sst)     if (sstcyc) then        if (timesiz<12) then            write(6,*)'SSTINI: ERROR'            write(6,*)'When cycling sst, sst data set must have 12'            write(6,*)'consecutive months of data starting with Jan'           write(6,*)'Current dataset has only ',timesiz,' months'           call endrun        end if        do n = 1,12           if (mod(date_sst(n),10000)/100/=n) then              write(6,*)'SSTINI: ERROR'               write(6,*)'When cycling sst, sst data set must have 12'               write(6,*)'consecutive months of data starting with Jan'              write(6,*)'Month ',n,' of sst data set is out of order'              call endrun           end if        end do     end if     strt3(1) = 1     strt3(2) = 1     strt3(3) = 1     cnt3(1)  = lonsiz     cnt3(2)  = latsiz     cnt3(3)  = 1!! Special code for interpolation between December and January!     if (sstcyc) then        n = 12        np1 = 1        call bnddyi(date_sst(n  ), sec_sst(n  ), cdaysstm)        call bnddyi(date_sst(np1), sec_sst(np1), cdaysstp)        if (caldayloc<=cdaysstp .or. caldayloc>cdaysstm) then           strt3(3) = n           call wrap_get_vara_realx (ncid_sst,sstid,strt3,cnt3,xvar(1,1,nm))           strt3(3) = np1                                                 call wrap_get_vara_realx (ncid_sst,sstid,strt3,cnt3,xvar(1,1,np))           goto 10        end if     end if!! Normal interpolation between consecutive time slices.!     do n=1,timesiz-1        np1 = n + 1        call bnddyi(date_sst(n  ), sec_sst(n  ), cdaysstm)        call bnddyi(date_sst(np1), sec_sst(np1), cdaysstp)        if (.not.sstcyc) then           yr = date_sst(n)/10000           cdaysstm = cdaysstm + yr*daysperyear           yr = date_sst(np1)/10000           cdaysstp = cdaysstp + yr*daysperyear        end if        if (caldayloc>cdaysstm .and. caldayloc<=cdaysstp) then           strt3(3) = n           call wrap_get_vara_realx (ncid_sst,sstid,strt3,cnt3,xvar(1,1,nm))           strt3(3) = np1                                                 call wrap_get_vara_realx (ncid_sst,sstid,strt3,cnt3,xvar(1,1,np))           goto 10        end if     end do     write(6,*)'SSTINI: Failed to find dates bracketing ncdate, ncsec=', ncdate, ncsec     call endrun10   continue     write(6,*)'SSTINI: Read sst data for dates ',date_sst(n),sec_sst(n), &          ' and ',date_sst(np1),sec_sst(np1)#if (defined SPMD )     call mpibcast( timesiz, 1, mpiint, 0, mpicom )     call mpibcast( date_sst, totsstsz, mpiint, 0, mpicom )     call mpibcast( sec_sst, totsstsz, mpiint, 0, mpicom )     call mpibcast( cdaysstm, 1, mpir8, 0, mpicom )     call mpibcast( cdaysstp, 1, mpir8, 0, mpicom )     call mpibcast( np1, 1, mpiint, 0, mpicom )  else     call mpibcast( timesiz, 1, mpiint, 0, mpicom )     call mpibcast( date_sst, totsstsz, mpiint, 0, mpicom )     call mpibcast( sec_sst, totsstsz, mpiint, 0, mpicom )     call mpibcast( cdaysstm, 1, mpir8, 0, mpicom )     call mpibcast( cdaysstp, 1, mpir8, 0, mpicom )     call mpibcast( np1, 1, mpiint, 0, mpicom )#endif  end if  call scatter_field_to_chunk(1,1,2,plon,xvar,sstbdy)  returnend subroutine sstini!----------------------------------------------------------------------- ! ! BOP!! !IROUTINE: sstint!! !DESCRIPTION:!! if "aqua_planet", specify SST's analytically (Jerry Olson).! Otherwise, time interpolate SST's to current time, reading in new monthly data if! necessary.!! Method: ! ! Author: L.Bath! !-----------------------------------------------------------------------!! !INTERFACE:!subroutine sstint!! !USES:!  use rgrid, only: nlon  use comsrf, only: ocnfrac  use time_manager, only: get_curr_date, get_curr_calday, &

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久图片 | 蜜臀av国产精品久久久久| 日韩av网站在线观看| www.亚洲精品| 精品国产一区二区三区不卡| 亚洲一区电影777| 成人一区二区三区在线观看| 日韩写真欧美这视频| 亚洲一区二区三区自拍| aaa国产一区| 国产精品久久久一本精品 | 精品精品国产高清a毛片牛牛| 亚洲特黄一级片| 国产毛片一区二区| 精品国产乱码久久久久久牛牛| 亚洲国产综合视频在线观看| 色激情天天射综合网| 国产精品免费观看视频| 国产成人免费在线观看| 国产日韩欧美在线一区| 精品亚洲欧美一区| 日韩一级片在线观看| 日韩av午夜在线观看| 这里只有精品免费| 日韩精品高清不卡| 欧美麻豆精品久久久久久| 亚洲一区二区三区视频在线播放| 色天天综合久久久久综合片| 亚洲精品伦理在线| 91在线观看成人| 亚洲精品中文字幕乱码三区| 91亚洲精品乱码久久久久久蜜桃| 18欧美乱大交hd1984| 成人av在线影院| 亚洲乱码精品一二三四区日韩在线| 99久久精品免费观看| 亚洲日本成人在线观看| 欧美视频一区二区三区四区| 午夜激情综合网| 91精品国产手机| 美美哒免费高清在线观看视频一区二区| 欧美日韩国产成人在线免费| 美女国产一区二区| 久久久久久久久久看片| 99精品久久只有精品| 夜夜精品浪潮av一区二区三区| 欧美美女视频在线观看| 久久精品99国产精品日本| 久久九九全国免费| 91香蕉视频污在线| 日韩中文欧美在线| 久久精品视频在线看| 99精品视频在线播放观看| 亚洲国产精品一区二区尤物区| 日韩欧美三级在线| 国产成人在线视频免费播放| 亚洲激情在线激情| 日韩一级片网站| 99久久精品免费看国产免费软件| 亚洲高清在线视频| 精品国产凹凸成av人导航| 不卡一区二区在线| 五月天丁香久久| 中文一区在线播放| 91麻豆精品国产91久久久使用方法 | 一区二区三区在线观看欧美| 欧美丰满嫩嫩电影| 国产成人精品三级| 午夜久久久影院| 国产欧美一区二区精品性色| 欧美性一级生活| 国产成人av电影在线播放| 亚洲国产美女搞黄色| 中文字幕欧美日韩一区| 91精品国产综合久久香蕉的特点| 成人福利在线看| 美美哒免费高清在线观看视频一区二区 | av高清不卡在线| 日韩vs国产vs欧美| 亚洲免费av网站| 久久婷婷国产综合精品青草| 欧美日韩视频专区在线播放| 成人性生交大片免费看视频在线 | 亚洲一区在线播放| 久久久久国产精品免费免费搜索| 欧美性猛交一区二区三区精品| 国产精品资源站在线| 偷拍与自拍一区| 国产精品电影院| 久久久欧美精品sm网站| 69久久99精品久久久久婷婷| 在线欧美日韩精品| 国产69精品久久777的优势| 蜜桃一区二区三区在线观看| 香蕉av福利精品导航| 日韩理论电影院| 中文字幕欧美区| 国产亚洲综合色| 精品国产乱码久久| 日韩色视频在线观看| 欧美老肥妇做.爰bbww视频| 91欧美一区二区| 91网站最新地址| 99久久精品免费| proumb性欧美在线观看| 国产91丝袜在线播放0| 激情综合五月天| 精品一区二区三区免费| 麻豆精品国产91久久久久久| 蜜桃视频一区二区三区 | 亚洲国产精品自拍| 亚洲韩国精品一区| 五月婷婷久久综合| 三级精品在线观看| 秋霞午夜av一区二区三区| 日本aⅴ精品一区二区三区 | 亚洲第一狼人社区| 亚洲资源在线观看| 亚洲综合无码一区二区| 亚洲第一成人在线| 蜜桃传媒麻豆第一区在线观看| 免费成人在线影院| 国产呦精品一区二区三区网站| 麻豆精品一区二区| 国产不卡在线一区| 色呦呦网站一区| 欧美日韩国产综合视频在线观看| 欧美日本一区二区三区四区| 日韩欧美国产电影| 国产婷婷精品av在线| 亚洲色图在线看| 视频一区二区三区中文字幕| 久久99久久99精品免视看婷婷 | 中文字幕日韩一区二区| 亚洲色图欧美在线| 亚洲电影一区二区| 精品一二线国产| 91亚洲精品久久久蜜桃网站 | 紧缚捆绑精品一区二区| 成人视屏免费看| 欧美自拍偷拍午夜视频| 日韩精品一区二区三区中文不卡| 久久久精品人体av艺术| 亚洲精品高清在线| 麻豆中文一区二区| 色综合网站在线| 日韩精品中午字幕| 亚洲精品高清视频在线观看| 麻豆一区二区三区| 91啪在线观看| 2欧美一区二区三区在线观看视频| 国产精品免费人成网站| 偷拍与自拍一区| 波多野结衣在线一区| 欧美一级片在线看| 亚洲婷婷综合久久一本伊一区 | 99精品偷自拍| 91精品国产色综合久久久蜜香臀| 国产精品久久二区二区| 日本一区中文字幕| 91黄色小视频| 国产欧美日韩一区二区三区在线观看| 一区二区三区日韩精品视频| 国产成人aaa| 欧美一级在线观看| 亚洲尤物在线视频观看| 成人国产精品免费观看动漫| 欧美tickling网站挠脚心| 亚洲精品乱码久久久久久久久 | 风间由美性色一区二区三区| 91精品国产综合久久精品| 樱桃国产成人精品视频| 国产91丝袜在线播放九色| 日韩女优视频免费观看| 婷婷亚洲久悠悠色悠在线播放| 99国产精品久| 国产精品色一区二区三区| 美女在线观看视频一区二区| 欧美在线观看禁18| 亚洲色图制服丝袜| 不卡的电影网站| 国产精品女人毛片| 国产精品一区二区久激情瑜伽 | 成人午夜激情影院| 欧美成人性战久久| 男女男精品视频网| 91精品国产综合久久久久久久| 亚洲一级片在线观看| 在线欧美日韩国产| 亚洲影视在线观看| 欧美人妖巨大在线| 日韩成人一区二区三区在线观看| 成人黄色小视频| 蜜臀av在线播放一区二区三区| 亚洲欧美激情视频在线观看一区二区三区| 日本免费新一区视频| 欧美激情一区三区| 欧美日韩一区二区在线观看视频| 免费美女久久99| 中文字幕一区二区三区不卡在线|