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

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

?? dp_coupling.f90

?? CCSM Research Tools: Community Atmosphere Model (CAM)
?? F90
?? 第 1 頁 / 共 3 頁
字號:
#include <misc.h>module dp_coupling!BOP!! !MODULE: dp_coupling --- dynamics-physics coupling module!   use precision,     only: r8   use rgrid,         only: nlon   use pmgrid,        only: plon, plat, plev, twod_decomp, iam,    &                            beglat, endlat, beglev, endlev,        &                            beglatxy, endlatxy, beglonxy, endlonxy   use ppgrid,        only: pcols, pver   use phys_grid   use physics_types, only: physics_state, physics_tend   use constituents,  only: ppcnst!! !PUBLIC MEMBER FUNCTIONS:      PUBLIC d_p_coupling, p_d_coupling!! !DESCRIPTION:!!      This module provides !!      \begin{tabular}{|l|l|} \hline \hline!        d\_p\_coupling    &  dynamics output to physics input \\ \hline!        p\_d\_coupling    &  physics output to dynamics input \\ \hline !                                \hline!      \end{tabular}!! !REVISION HISTORY:!   00.06.01   Boville    Creation!   01.10.01   Lin        Various revisions!   01.03.26   Sawyer     Added ProTeX documentation!   01.06.27   Mirin      Separate noncoupling coding into new routines!   01.07.13   Mirin      Some support for multi-2D decompositions!   02.03.01   Worley     Support for nontrivial physics remapping!!EOP!-----------------------------------------------------------------------CONTAINS!-----------------------------------------------------------------------!BOP! !IROUTINE: d_p_coupling --- convert dynamics output to physics input!! !INTERFACE:   subroutine d_p_coupling(ps,   u3s,   v3s,  pt,    coslon,  sinlon,     &                          t3,   q3, omga, phis,  pe,      peln,    pk,&                          pkz,  phys_state,  phys_tend, full_phys,       &                          qtmp, psxy,  u3sxy,v3sxy, ptxy,    t3xy,       &                          q3xy, omgaxy,phisxy,      pexy,  pelnxy,       &                          pkxy, pkzxy, qtmpxy,      pe11k,   pe11kln  )! !USES:    use physconst, only: zvir    use dynamics_vars, only: ng_d, ng_s#if defined (SPMD)    use spmd_dyn, only : inter_ikj    use mpishorthand, only : mpicom    use parutilitiesmodule, only : sumop, parcollective    use redistributemodule, only : redistributestart, redistributefinish#endif!-----------------------------------------------------------------------    implicit none!-----------------------------------------------------------------------! !INPUT PARAMETERS:!    real(r8), intent(in) :: ps (plon, beglat:endlat)                      ! surface pressure    real(r8), intent(inout) :: u3s(plon, beglat-ng_d:endlat+ng_s, beglev:endlev)       ! u-wind on d-grid    real(r8), intent(in) :: v3s(plon, beglat-ng_s:endlat+ng_d, beglev:endlev)       ! v-wind on d-grid    real(r8), intent(in) :: pt (plon, beglat-ng_d:endlat+ng_d, beglev:endlev)       ! Virtual pot temp    real(r8), intent(in) :: t3 (plon, beglev:endlev, beglat:endlat)       ! virtual temperature    real(r8), intent(in) :: q3 (plon, beglat-ng_d:endlat+ng_d, beglev:endlev, ppcnst) ! constituents    real(r8), intent(in) :: omga(plon, beglev:endlev, beglat:endlat)      ! vertical velocity    real(r8), intent(in) :: phis(plon, beglat:endlat)                     ! surface geopotential    real(r8), intent(in) :: pe  (plon, beglev:endlev+1, beglat:endlat)    ! this fv's pint    real(r8), intent(in) :: peln(plon, beglev:endlev+1, beglat:endlat)    ! log(pe)    real(r8), intent(in) :: pk  (plon, beglat:endlat, beglev:endlev+1)    ! pe**cappa    real(r8), intent(in) :: pkz (plon, beglat:endlat, beglev:endlev)      ! f-v mean of pk    real(r8), intent(in) :: coslon(plon)                                  ! cosine of longitude    real(r8), intent(in) :: sinlon(plon)                                  ! sin of longitudes    logical,  intent(in) :: full_phys! xy-decomposed instanciations below:    real(r8), intent(in) :: psxy (beglonxy:endlonxy, beglatxy:endlatxy)                      ! surface pressure    real(r8), intent(in) :: u3sxy(beglonxy:endlonxy, beglatxy:endlatxy+1, plev)       ! u-wind on d-grid    real(r8), intent(in) :: v3sxy(beglonxy:endlonxy, beglatxy:endlatxy, plev)       ! v-wind on d-grid    real(r8), intent(in) :: ptxy (beglonxy:endlonxy, beglatxy:endlatxy, plev)       ! Virtual pot temp    real(r8), intent(in) :: t3xy (beglonxy:endlonxy, plev, beglatxy:endlatxy)       ! virtual temperature    real(r8), intent(in) :: q3xy (beglonxy:endlonxy, beglatxy:endlatxy, plev, ppcnst) ! constituents    real(r8), intent(in) :: omgaxy(beglonxy:endlonxy, plev, beglatxy:endlatxy)      ! vertical velocity    real(r8), intent(in) :: phisxy(beglonxy:endlonxy, beglatxy:endlatxy)            ! surface geopotential    real(r8), intent(in) :: pexy  (beglonxy:endlonxy, plev+1, beglatxy:endlatxy)    ! this fv's pint    real(r8), intent(in) :: pelnxy(beglonxy:endlonxy, plev+1, beglatxy:endlatxy)    ! log(pe)    real(r8), intent(in) :: pkxy  (beglonxy:endlonxy, beglatxy:endlatxy, plev+1)    ! pe**cappa    real(r8), intent(in) :: pkzxy (beglonxy:endlonxy, beglatxy:endlatxy, plev)      ! f-v mean of pk! !OUTPUT PARAMETERS:    type(physics_state), intent(out), dimension(begchunk:endchunk) :: phys_state    type(physics_tend ), intent(out), dimension(begchunk:endchunk) :: phys_tend    real(r8), intent(out) :: qtmp(plon, beglev:endlev, beglat:endlat)      ! temporary moisture storage    real(r8), intent(out) :: qtmpxy(beglonxy:endlonxy, plev, beglatxy:endlatxy)      ! temporary moisture storage    real(r8), intent(out) :: pe11k(plev+1), pe11kln(plev+1)  ! Pres. & log for Rayl. fric! !DESCRIPTION:!!   Coupler for converting dynamics output variables into physics !   input variables!! !REVISION HISTORY:!   00.06.01   Boville    Creation!   01.07.13   AAM        Some support for multi-2D decompositions!   02.03.01   Worley     Support for nontrivial physics remapping!!EOP!-----------------------------------------------------------------------!BOC! !LOCAL VARIABLES:    integer :: i,ib,j,k,m,lchnk      ! indices    integer :: ncol                  ! number of columns in current chunk    integer :: lats(pcols)           ! array of latitude indices    integer :: lons(pcols)           ! array of longitude indices    integer :: blksiz                ! number of columns in 2D block    integer :: tsize                 ! amount of data per grid point passed to physics    integer, allocatable, dimension(:,:) :: bpter                                     ! offsets into block buffer for packing data    integer :: cpter(pcols,0:pver)   ! offsets into chunk buffer for unpacking data    real(r8) :: pic(pcols)           ! ps**cappa    real(r8), allocatable :: u3(:, :, :)       ! u-wind on a-grid    real(r8), allocatable :: v3(:, :, :)       ! v-wind on a-grid    real(r8), allocatable, dimension(:) :: bbuffer, cbuffer                                     ! transpose buffers!---------------------------End Local workspace-------------------------    if (twod_decomp .eq. 1) then!-----------------------------------------------------------------------! Store moisture in temporary array, to be used after physics update!-----------------------------------------------------------------------       if (full_phys) then!$omp parallel do private(i, j, k)          do j=beglatxy,endlatxy             do k=1,plev                do i=beglonxy,endlonxy                   qtmpxy(i,k,j) = q3xy(i,j,k,1)                enddo             enddo          enddo!! Transpose temporary moisture array back to yz decomposition!#if defined (SPMD)          call redistributestart (inter_ikj, .false., qtmpxy)          call redistributefinish(inter_ikj, .false., qtmp)#endif       endif!-----------------------------------------------------------------------! Transform dynamics staggered winds to physics grid (D=>A)!-----------------------------------------------------------------------       allocate (u3(beglonxy:endlonxy, plev, beglatxy:endlatxy))       allocate (v3(beglonxy:endlonxy, plev, beglatxy:endlatxy))       call d2a3dikj(u3sxy,  v3sxy,   u3,    v3,   plon,  plat, plev,    &                     beglatxy, endlatxy,  0, 0, 1, 0, 0,                 &                     beglonxy, endlonxy,    coslon,      sinlon)!-----------------------------------------------------------------------! Copy data from dynamics data structure to physics data structure!-----------------------------------------------------------------------       if (local_dp_map) then!$OMP PARALLEL DO PRIVATE (LCHNK, NCOL, I, K, M, LONS, LATS, PIC)          do lchnk = begchunk,endchunk             ncol = get_ncols_p(lchnk)             call get_lon_all_p(lchnk, ncol, lons)             call get_lat_all_p(lchnk, ncol, lats)             phys_state(lchnk)%ncol  = ncol             phys_state(lchnk)%lchnk = lchnk             do i=1,ncol                phys_state(lchnk)%ps(i)   = psxy(lons(i),lats(i))                phys_state(lchnk)%phis(i) = phisxy(lons(i),lats(i))                pic(i) = pkxy(lons(i),lats(i),pver+1)             enddo             do k=1,plev                do i=1,ncol                   phys_state(lchnk)%u    (i,k) = u3(lons(i),k,lats(i))                   phys_state(lchnk)%v    (i,k) = v3(lons(i),k,lats(i))                   phys_state(lchnk)%omega(i,k) = omgaxy(lons(i),k,lats(i))                   if (full_phys) then                      phys_state(lchnk)%t    (i,k) = t3xy(lons(i),k,lats(i)) / (1. + zvir*q3xy(lons(i),lats(i),k,1))                      phys_state(lchnk)%exner(i,k) = pic(i) / pkzxy(lons(i),lats(i),k)                    else                      phys_state(lchnk)%t    (i,k) = ptxy(lons(i),lats(i),k) * pkzxy(lons(i),lats(i),k)                   end if                end do             end do             do k=1,plev+1                do i=1,ncol!! edge-level pressure arrays: copy from the arrays computed by dynpkg!                   phys_state(lchnk)%pint  (i,k) = pexy  (lons(i),k,lats(i))                   phys_state(lchnk)%lnpint(i,k) = pelnxy(lons(i),k,lats(i))                end do             end do!! Copy constituents!             do m=1,ppcnst                do k=1,plev                   do i=1,ncol                      phys_state(lchnk)%q(i,k,m) = q3xy(lons(i),lats(i),k,m)                   end do                end do             end do           end do   ! begchunk:endchunk loop       else          tsize = 7 + ppcnst          blksiz = (endlatxy-beglatxy+1)*(endlonxy-beglonxy+1)          allocate(bpter(blksiz,0:plev))          allocate(bbuffer(tsize*block_buf_nrecs))          allocate(cbuffer(tsize*chunk_buf_nrecs))          call block_to_chunk_send_pters(iam+1,blksiz,plev+1,tsize,bpter)          ib = 0          do j=beglatxy,endlatxy             do i=beglonxy,endlonxy                ib = ib + 1                bbuffer(bpter(ib,0))   = pexy(i,plev+1,j)                bbuffer(bpter(ib,0)+1) = pelnxy(i,plev+1,j)                bbuffer(bpter(ib,0)+2) = psxy(i,j)                bbuffer(bpter(ib,0)+3) = phisxy(i,j)                do k=1,plev                   bbuffer(bpter(ib,k))   = pexy(i,k,j)                   bbuffer(bpter(ib,k)+1) = pelnxy(i,k,j)                   bbuffer(bpter(ib,k)+2) = u3    (i,k,j)                   bbuffer(bpter(ib,k)+3) = v3    (i,k,j)                   bbuffer(bpter(ib,k)+4) = omgaxy(i,k,j)                   if (full_phys) then                      bbuffer(bpter(ib,k)+5) = t3xy(i,k,j) / (1. + zvir*q3xy(i,j,k,1))                      bbuffer(bpter(ib,k)+6) = pkxy(i,j,pver+1) / pkzxy(i,j,k)                    else                      bbuffer(bpter(ib,k)+6) = ptxy(i,j,k) * pkzxy(i,j,k)                   end if                   do m=1,ppcnst                      bbuffer(bpter(ib,k)+6+m) = q3xy(i,j,k,m)                   end do                end do             end do          end do          call transpose_block_to_chunk(tsize, bbuffer, cbuffer)          do lchnk = begchunk,endchunk             ncol = get_ncols_p(lchnk)             phys_state(lchnk)%ncol  = ncol             phys_state(lchnk)%lchnk = lchnk             call block_to_chunk_recv_pters(lchnk,pcols,pver+1,tsize,cpter)             do i=1,ncol                phys_state(lchnk)%pint  (i,pver+1) = cbuffer(cpter(i,0))                phys_state(lchnk)%lnpint(i,pver+1) = cbuffer(cpter(i,0)+1)                phys_state(lchnk)%ps(i)            = cbuffer(cpter(i,0)+2)                phys_state(lchnk)%phis(i)          = cbuffer(cpter(i,0)+3)                do k=1,plev                   phys_state(lchnk)%pint  (i,k) = cbuffer(cpter(i,k))                   phys_state(lchnk)%lnpint(i,k) = cbuffer(cpter(i,k)+1)                   phys_state(lchnk)%u     (i,k) = cbuffer(cpter(i,k)+2)                   phys_state(lchnk)%v     (i,k) = cbuffer(cpter(i,k)+3)                   phys_state(lchnk)%omega (i,k) = cbuffer(cpter(i,k)+4)                   if (full_phys) then                      phys_state(lchnk)%t    (i,k) = cbuffer(cpter(i,k)+5)                      phys_state(lchnk)%exner(i,k) = cbuffer(cpter(i,k)+6)                   else                      phys_state(lchnk)%t    (i,k) = cbuffer(cpter(i,k)+6)                   end if                   do m=1,ppcnst                      phys_state(lchnk)%q(i,k,m) = cbuffer(cpter(i,k)+6+m)                   end do                end do             end do          end do   ! begchunk:endchunk loop          deallocate(bpter)          deallocate(bbuffer)          deallocate(cbuffer)       endif    else!-----------------------------------------------------------------------! Store moisture in temporary array, to be used after physics update!-----------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人在线免费| 1024成人网| 日韩亚洲欧美中文三级| 91黄视频在线| 欧美色电影在线| 欧美精品少妇一区二区三区| 欧美日韩亚州综合| 91精品国产一区二区三区香蕉| 欧美精品第一页| 日韩一级黄色大片| 精品久久久久99| 国产嫩草影院久久久久| 国产精品白丝在线| 亚洲自拍偷拍图区| 三级欧美韩日大片在线看| 日韩精品三区四区| 国内精品不卡在线| 高清国产午夜精品久久久久久| 国产91精品欧美| 色综合一个色综合| 欧美高清视频不卡网| 精品对白一区国产伦| 欧美国产综合色视频| 一区二区三区精密机械公司| 亚洲成人一区二区在线观看| 麻豆精品国产91久久久久久| 粉嫩av亚洲一区二区图片| 色狠狠综合天天综合综合| 欧美日韩国产美女| 亚洲精品在线观看视频| 中文一区二区完整视频在线观看| 一区二区在线观看免费| a级精品国产片在线观看| 日韩精品国产欧美| 成人黄色a**站在线观看| 91免费版pro下载短视频| 在线免费一区三区| 国产精品美女久久久久aⅴ| 日日摸夜夜添夜夜添精品视频| 成人一级黄色片| 337p亚洲精品色噜噜噜| 2020国产精品久久精品美国| 91免费国产在线| 欧美精品视频www在线观看 | 色哟哟欧美精品| 欧美丰满少妇xxxxx高潮对白| 亚洲精品一区二区三区蜜桃下载| 国产精品美日韩| 丝瓜av网站精品一区二区 | 色乱码一区二区三区88| 91麻豆精品国产无毒不卡在线观看| 久久久午夜精品理论片中文字幕| 自拍偷自拍亚洲精品播放| 日本三级亚洲精品| voyeur盗摄精品| 欧美变态凌虐bdsm| 亚洲激情图片qvod| 国产精品一区久久久久| 7777精品伊人久久久大香线蕉| 国产精品网友自拍| 蜜臀久久99精品久久久久宅男| 91视频国产资源| 国产视频一区不卡| 视频一区国产视频| 91在线视频在线| 亚洲综合视频在线观看| 99精品久久只有精品| 91精品国产一区二区三区蜜臀| 最近日韩中文字幕| 久久精品国产在热久久| 91亚洲男人天堂| 国产亚洲一区二区三区在线观看| 亚洲午夜在线观看视频在线| 成人app网站| 精品美女一区二区| 日韩电影免费一区| 欧美视频第二页| 亚洲视频一二三| 成人午夜视频福利| 26uuu欧美| 精品一区二区免费在线观看| 欧美日韩亚洲国产综合| 一区二区不卡在线播放| 99久久精品国产导航| 久久精品夜夜夜夜久久| 激情都市一区二区| 日韩女优制服丝袜电影| 视频一区二区中文字幕| 欧美日韩一区二区在线观看视频| 国产精品久久久久aaaa樱花| 国产精品综合视频| 2014亚洲片线观看视频免费| 日本成人中文字幕| 欧美一区二区久久久| 午夜精品一区二区三区免费视频 | 欧美一级黄色录像| 亚洲国产精品综合小说图片区| 91同城在线观看| 自拍偷拍欧美精品| av电影在线观看一区| 中文字幕一区二区三中文字幕| 国产91综合网| 中文字幕在线播放不卡一区| 不卡的av电影| 亚洲欧美日韩在线| 色噜噜偷拍精品综合在线| 综合激情成人伊人| 色哦色哦哦色天天综合| 亚洲二区在线视频| 欧美丰满高潮xxxx喷水动漫| 青青草97国产精品免费观看无弹窗版| 欧美日韩高清一区二区| 日本在线观看不卡视频| 精品成a人在线观看| 国产精品香蕉一区二区三区| 国产欧美一区二区三区沐欲| 不卡av电影在线播放| 亚洲欧美日韩综合aⅴ视频| 日本精品视频一区二区三区| 亚洲大片免费看| 日韩欧美一级片| 国产一区二区三区四区五区美女 | 亚洲乱码国产乱码精品精98午夜 | 精品国产sm最大网站| 国产成人免费高清| 亚洲人成小说网站色在线| 欧美一区二区国产| 国产精品一区二区久久不卡| 欧美不卡一区二区| 国产河南妇女毛片精品久久久| 国产精品免费看片| 欧美视频一区在线观看| 久久99国产精品麻豆| 中文幕一区二区三区久久蜜桃| 色八戒一区二区三区| 日韩黄色免费网站| 欧美国产欧美亚州国产日韩mv天天看完整| 99视频精品全部免费在线| 性做久久久久久久免费看| 国产色产综合产在线视频| 91蜜桃网址入口| 免费成人在线影院| 中文字幕日韩av资源站| 欧美精品xxxxbbbb| 成人涩涩免费视频| 日韩精品午夜视频| 国产精品国产三级国产| 欧美卡1卡2卡| 国产69精品久久久久毛片| 亚洲成人av福利| 中文子幕无线码一区tr| 91精品麻豆日日躁夜夜躁| 成+人+亚洲+综合天堂| 美女一区二区三区在线观看| 国产精品成人午夜| 日韩精品一区二区三区蜜臀| 91首页免费视频| 精品亚洲porn| 午夜电影一区二区| 国产精品久久精品日日| 日韩精品在线看片z| 欧洲精品在线观看| 国产成人av资源| 日韩国产欧美视频| 一区二区三区国产| 国产精品免费视频一区| 精品国产不卡一区二区三区| 欧美午夜宅男影院| 99re免费视频精品全部| 国产一区二区在线看| 亚洲成a人v欧美综合天堂下载| 国产精品久久久久一区| 欧美mv和日韩mv的网站| 色猫猫国产区一区二在线视频| 国产精品一二一区| 麻豆国产91在线播放| 同产精品九九九| 伊人色综合久久天天| 中文字幕不卡在线观看| 久久久一区二区| 日韩精品一区二区三区中文不卡| 欧美性色欧美a在线播放| www.日韩av| 成av人片一区二区| 粉嫩aⅴ一区二区三区四区五区 | 国产69精品久久99不卡| 精品系列免费在线观看| 免费观看91视频大全| 日本中文在线一区| 五月婷婷欧美视频| 亚洲一区二区三区小说| 亚洲精品美国一| 欧美aaaaa成人免费观看视频| 麻豆成人免费电影| 欧美激情资源网| 成人午夜精品一区二区三区| 欧美一级久久久久久久大片| 欧美在线看片a免费观看| 99久久er热在这里只有精品15| 国产91对白在线观看九色|