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

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

?? restart_dynamics.f90

?? CCSM Research Tools: Community Atmosphere Model (CAM)
?? F90
字號(hào):
#include <misc.h>#include <params.h>module restart_dynamics   use precision   use pmgrid   use prognostics   use ppgrid, only: pcols, pver   use constituents, only: ppcnst   implicit noneCONTAINS   subroutine write_restart_dynamics (nrg)#include <comqfl.h>!! Input arguments!      integer :: nrg     ! Unit number!! Local workspace!      integer :: ioerr   ! error status      integer :: num     ! number of values      integer :: i,j,k,m ! temporary indices      real(r8), allocatable :: yz_tmp(:,:,:), q3_local(:,:,:,:)      num = plond*plat      call wrtout(nrg, strip2d, phis, num, 2)!! Write finite-volume dynamical core specific fields:! [ (u3s,v3s), delp, pt, q3, ps ]!      num = plndlv*plat      allocate( yz_tmp(plon,beglat:endlat,beglev:endlev) )!! TEMPORARY:  copy U3S to YZ_TMP!!$omp parallel do private(i,j,k)   do k=beglev,endlev      do j = beglat,endlat         do i=1,plon            yz_tmp(i,j,k) = u3s(i,j,k)         enddo      enddo   enddo      call wrtout(nrg, strip3dxyz, yz_tmp, num, 3)!! TEMPORARY:  copy V3S to YZ_TMP!!$omp parallel do private(i,j,k)   do k=beglev,endlev      do j = beglat,endlat         do i=1,plon            yz_tmp(i,j,k) = v3s(i,j,k)         enddo      enddo   enddo      call wrtout(nrg, strip3dxyz, yz_tmp, num, 3)      call wrtout(nrg, strip3dxyz, delp, num, 3)!! TEMPORARY:  copy PT to YZ_TMP!!$omp parallel do private(i,j,k)   do k=beglev,endlev      do j = beglat,endlat         do i=1,plon            yz_tmp(i,j,k) = pt(i,j,k)         enddo      enddo   enddo      call wrtout(nrg, strip3dxyz, yz_tmp, num, 3)      deallocate( yz_tmp )      num = plndlv*ppcnst*plat      allocate( q3_local(plon,beglev:endlev,ppcnst,beglat:endlat) )!$omp parallel do private(i,j,k,m)      do m=1,ppcnst         do k=beglev,endlev            do j = beglat,endlat               do i=1,plon                  q3_local(i,k,m,j) = q3(i,j,k,m)               enddo             enddo         enddo      enddo      call wrtout(nrg, strip3dq3old, q3_local, num, 3)      deallocate( q3_local )      num = plond*plat      call wrtout(nrg, strip2d, ps, num, 2)!! Write global integrals!      if (masterproc) then         write(nrg, iostat=ioerr) tmass0         if (ioerr /= 0 ) then            write (6,*) 'WRITE ioerror ',ioerr,' on i/o unit = ',nrg            call endrun         end if      end if      return   end subroutine write_restart_dynamics   subroutine wrtout(iu, decomp, arr, lenarr, ndim)!-----------------------------------------------------------------------! Wrapper routine to write restart binary file !-----------------------------------------------------------------------      use precision      use pmgrid      use decompmodule, only: decomptype#if ( defined SPMD )      use spmd_dyn, only: comm_y      use parutilitiesmodule, only: commglobal, pargather #endif!------------------------------Arguments--------------------------------      integer iu                 ! Logical unit      type (decomptype):: decomp ! Decomposition descriptor      integer lenarr             ! Global length of array#if defined( SPMD )      real(r8) arr(*)            ! Array to be gathered#else      real(r8) arr(lenarr)       ! Array (SMP-only)#endif      integer ndim               ! dimensionality (2 or 3) of array!---------------------------Local variables-----------------------------      integer ioerr              ! errorcode#if ( defined SPMD )      real(r8), allocatable :: bufres(:) #endif!-----------------------------------------------------------------------#if ( defined SPMD )      if ( masterproc ) allocate( bufres(lenarr) )       if (ndim .eq. 2 .and. twod_decomp .eq. 1) then         if (myid_z .eq. 0) call pargather( comm_y, 0, arr, decomp, bufres )      else         call pargather( commglobal, 0, arr, decomp, bufres )      endif! WS 01.01.03: This code is OK      if (masterproc) then         write (iu,iostat=ioerr) bufres         if (ioerr /= 0 ) then            write (6,*) 'WRTOUT ioerror ',ioerr,' on i/o unit = ',iu            call endrun         end if      endif      if ( masterproc ) deallocate( bufres )#else      write (iu,iostat=ioerr) arr      if (ioerr /= 0 ) then         write (6,*) 'wrt ioerror ',ioerr,' on i/o unit = ',iu         call endrun      end if#endif      return   end subroutine wrtout   subroutine wrtouti(iu, decomp, arr, lenarr, ndim)!-----------------------------------------------------------------------! Wrapper routine to write restart binary file !-----------------------------------------------------------------------      use precision      use pmgrid      use decompmodule, only: decomptype#if ( defined SPMD )      use spmd_dyn, only: comm_y      use parutilitiesmodule, only: commglobal, pargather #endif!------------------------------Arguments--------------------------------      integer iu                 ! Logical unit      type (decomptype):: decomp ! Decomposition descriptor      integer lenarr             ! Global length of array#if defined( SPMD )      integer arr(*)            ! Array to be gathered#else      integer arr(lenarr)       ! Array (SMP-only)#endif      integer ndim               ! dimensionality (2 or 3) of array!---------------------------Local variables-----------------------------      integer ioerr              ! errorcode#if ( defined SPMD )      integer, allocatable :: bufres(:) #endif!-----------------------------------------------------------------------#if ( defined SPMD )      if ( masterproc ) allocate( bufres(lenarr) )       if (ndim .eq. 2 .and. twod_decomp .eq. 1) then         if (myid_z .eq. 0) call pargather( comm_y, 0, arr, decomp, bufres )      else         call pargather( commglobal, 0, arr, decomp, bufres )      endif! WS 01.01.03: This code is OK      if (masterproc) then         write (iu,iostat=ioerr) bufres         if (ioerr /= 0 ) then            write (6,*) 'WRTOUT ioerror ',ioerr,' on i/o unit = ',iu            call endrun         end if      endif      if ( masterproc ) deallocate( bufres )#else      write (iu,iostat=ioerr) arr      if (ioerr /= 0 ) then         write (6,*) 'wrt ioerror ',ioerr,' on i/o unit = ',iu         call endrun      end if#endif      return   end subroutine wrtouti   subroutine read_restart_dynamics (nrg)      use dynamics_vars, only: dynamics_init      use time_manager, only: get_step_size#if ( defined SPMD )      use mpishorthand#endif#include <comqfl.h>#include <comctl.h>!! Input arguments!      integer :: nrg     ! Unit number!! Local workspace!      integer :: ioerr   ! error status      integer :: num     ! number of values      real(r8) :: dtime  ! timestep size      integer :: i,j,k,m ! temporary indices      real(r8), allocatable :: yz_tmp(:,:,:), q3_local(:,:,:,:)      dtime = get_step_size()      call dynamics_init( dtime, iord, jord, nsplit )!! Initialize memory!      call initialize_prognostics      num = plond*plat      call lrreadin(nrg, strip2d, phis, num, 2)!! Read finite-volume dynamical core specific fields:! [ (u3s,v3s), delp, pt, q3, ps ]!      num = plndlv*plat      allocate( yz_tmp(plon,beglat:endlat,beglev:endlev) )      call lrreadin(nrg, strip3dxyz, yz_tmp, num, 3) ! read in U3S!! TEMPORARY:  copy YZ_TMP to U3S!!$omp parallel do private(i,j,k)   do k=beglev,endlev      do j = beglat,endlat         do i=1,plon            u3s(i,j,k) = yz_tmp(i,j,k)         enddo      enddo   enddo      call lrreadin(nrg, strip3dxyz, yz_tmp, num, 3) ! read in V3S!! TEMPORARY:  copy YZ_TMP to V3S!!$omp parallel do private(i,j,k)   do k=beglev,endlev      do j = beglat,endlat         do i=1,plon            v3s(i,j,k) = yz_tmp(i,j,k)         enddo      enddo   enddo      call lrreadin(nrg, strip3dxyz, delp,num, 3)      call lrreadin(nrg, strip3dxyz, yz_tmp,  num, 3)  ! read in PT!! TEMPORARY:  copy YZ_TMP to PT!!$omp parallel do private(i,j,k)   do k=beglev,endlev      do j = beglat,endlat         do i=1,plon            pt(i,j,k) = yz_tmp(i,j,k)         enddo      enddo   enddo      deallocate( yz_tmp )      num = plndlv*ppcnst*plat      allocate( q3_local(plon,beglev:endlev,ppcnst,beglat:endlat) )      call lrreadin(nrg, strip3dq3old, q3_local, num, 3)!$omp parallel do private(i,j,k,m)      do m=1,ppcnst         do k=beglev,endlev            do j = beglat,endlat               do i=1,plon                  q3(i,j,k,m) = q3_local(i,k,m,j)               enddo            enddo         enddo      enddo      deallocate( q3_local )      num = plond*plat      call lrreadin(nrg, strip2d, ps, num, 2)!! Read global integrals!      if (masterproc) then         read(nrg, iostat=ioerr) tmass0         if (ioerr /= 0 ) then            write (6,*) 'WRITE ioerror ',ioerr,' on i/o unit = ',nrg            call endrun         end if      end if#if ( defined SPMD )      call mpibcast (tmass0,1         ,mpir8  ,0,mpicom)      #endif      return   end subroutine read_restart_dynamics   subroutine lrreadin(iu, decomp, arr, lenarr, ndim)!-----------------------------------------------------------------------! Wrapper routine to read real variable from restart binary file !-----------------------------------------------------------------------      use precision      use pmgrid      use decompmodule, only : decomptype#if ( defined SPMD )      use spmd_dyn, only: comm_y, comm_z      use parutilitiesmodule, only : commglobal, parscatter, parcollective, BCSTOP#endif!------------------------------Arguments--------------------------------      integer iu                 ! Logical unit      type (decomptype):: decomp ! Decomposition descriptor      integer lenarr             ! Global size of array#if defined( SPMD )      real(r8) arr(*)            ! Array to be gathered#else      real(r8) arr(lenarr)       ! Array (SMP-only)#endif      integer ndim               ! dimensionality (2 or 3) of array!---------------------------Local variables-----------------------------      integer ioerr              ! errorcode#ifdef SPMD      real(r8), allocatable :: bufres(:) #endif!-----------------------------------------------------------------------#ifdef SPMD      if (masterproc) then         allocate (bufres(lenarr))         read (iu,iostat=ioerr) bufres         if (ioerr /= 0 ) then            write (6,*) 'READIN ioerror ',ioerr,' on i/o unit = ',iu            call endrun         end if      endif      if (ndim .eq. 2 .and. twod_decomp .eq. 1) then         if (myid_z .eq. 0) call parscatter( comm_y, 0, bufres, decomp, arr )         call parcollective( comm_z, BCSTOP, plon*(endlat-beglat+1), arr )      else         call parscatter( commglobal, 0, bufres, decomp, arr )      endif      if (masterproc) deallocate (bufres)#else       read (iu,iostat=ioerr) arr      if (ioerr /= 0 ) then         write (6,*) 'READIN ioerror ',ioerr,' on i/o unit = ',iu         call endrun      end if#endif      return   end subroutine lrreadin   subroutine lrreadin4(iu, decomp, arr, lenarr, ndim)!-----------------------------------------------------------------------! Wrapper routine to read real*4 variable from restart binary file !-----------------------------------------------------------------------      use precision      use pmgrid      use decompmodule, only : decomptype#if ( defined SPMD )      use spmd_dyn, only: comm_y, comm_z      use parutilitiesmodule, only : commglobal, parscatterreal4, parcollective1dreal4, BCSTOP#endif!------------------------------Arguments--------------------------------      integer iu                 ! Logical unit      type (decomptype):: decomp ! Decomposition descriptor      integer lenarr             ! Global size of array#if defined( SPMD )      real(r4) arr(*)            ! Array to be gathered#else      real(r4) arr(lenarr)       ! Array (SMP-only)#endif      integer ndim               ! dimensionality (2 or 3) of array!---------------------------Local variables-----------------------------      integer ioerr              ! errorcode#ifdef SPMD      real(r4), allocatable :: bufres(:) #endif!-----------------------------------------------------------------------#ifdef SPMD      if (masterproc) then         allocate (bufres(lenarr))         read (iu,iostat=ioerr) bufres         if (ioerr /= 0 ) then            write (6,*) 'READIN ioerror ',ioerr,' on i/o unit = ',iu            call endrun         end if      endif      if (ndim .eq. 2 .and. twod_decomp .eq. 1) then         if (myid_z .eq. 0) call parscatterreal4( comm_y, 0, bufres, decomp, arr )         call parcollective1dreal4( comm_z, BCSTOP, plon*(endlat-beglat+1), arr )      else         call parscatterreal4( commglobal, 0, bufres, decomp, arr )      endif      if (masterproc) deallocate (bufres)#else       read (iu,iostat=ioerr) arr      if (ioerr /= 0 ) then         write (6,*) 'READIN ioerror ',ioerr,' on i/o unit = ',iu         call endrun      end if#endif      return   end subroutine lrreadin4   subroutine lrreadini(iu, decomp, arr, lenarr, ndim)!-----------------------------------------------------------------------! Wrapper routine to read integer variable from restart binary file !-----------------------------------------------------------------------      use precision      use pmgrid      use decompmodule, only : decomptype#if ( defined SPMD )      use spmd_dyn, only: comm_y, comm_z      use parutilitiesmodule, only : commglobal, parscatter, parcollective, BCSTOP#endif!------------------------------Arguments--------------------------------      integer iu                 ! Logical unit      type (decomptype):: decomp ! Decomposition descriptor      integer lenarr             ! Global size of array#if defined( SPMD )      integer arr(*)             ! Array to be gathered#else      integer arr(lenarr)        ! Array (SMP-only)#endif      integer ndim               ! dimensionality (2 or 3) of array!---------------------------Local variables-----------------------------      integer ioerr              ! errorcode#ifdef SPMD      integer, allocatable :: bufres(:) #endif!-----------------------------------------------------------------------#ifdef SPMD      if (masterproc) then         allocate (bufres(lenarr))         read (iu,iostat=ioerr) bufres         if (ioerr /= 0 ) then            write (6,*) 'READIN ioerror ',ioerr,' on i/o unit = ',iu            call endrun         end if      endif      if (ndim .eq. 2 .and. twod_decomp .eq. 1) then         if (myid_z .eq. 0) call parscatter( comm_y, 0, bufres, decomp, arr )         call parcollective( comm_z, BCSTOP, plon*(endlat-beglat+1), arr )      else         call parscatter( commglobal, 0, bufres, decomp, arr )      endif      if (masterproc) deallocate (bufres)#else       read (iu,iostat=ioerr) arr      if (ioerr /= 0 ) then         write (6,*) 'READIN ioerror ',ioerr,' on i/o unit = ',iu         call endrun      end if#endif      return   end subroutine lrreadiniend module restart_dynamics

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av一区二| 国产精品久久久久9999吃药| 成人久久视频在线观看| 另类中文字幕网| 欧美aⅴ一区二区三区视频| 午夜精品福利在线| 日韩国产欧美一区二区三区| 香蕉乱码成人久久天堂爱免费| 亚洲国产综合色| 亚洲电影在线免费观看| 免费一级欧美片在线观看| 日韩av高清在线观看| 麻豆久久一区二区| 国产成人av一区| 97se亚洲国产综合自在线| 欧美在线|欧美| 欧美精品精品一区| 26uuu色噜噜精品一区二区| 国产精品女上位| 亚洲精品一卡二卡| 美女尤物国产一区| 成人在线视频首页| 欧美视频在线观看一区| 日韩亚洲欧美在线| 国产精品二三区| 亚洲国产精品人人做人人爽| 日韩高清在线不卡| 成人国产精品免费观看动漫| 欧美无人高清视频在线观看| 精品美女在线播放| 亚洲精品日产精品乱码不卡| 欧美aaaaaa午夜精品| av不卡在线观看| 91精品国产免费| 亚洲视频一区在线| 麻豆精品视频在线观看| 91网站黄www| 欧美tickling挠脚心丨vk| 国产精品夫妻自拍| 国内国产精品久久| 欧美日韩国产另类不卡| 中文天堂在线一区| 美女被吸乳得到大胸91| 色噜噜夜夜夜综合网| 精品久久五月天| 亚洲高清一区二区三区| 成人小视频免费观看| 日韩欧美一区二区不卡| 亚洲午夜电影在线| 成人aaaa免费全部观看| 欧美精品一区二区三区蜜臀| 天天影视网天天综合色在线播放| 成人精品视频一区| 久久伊人中文字幕| 美女在线视频一区| 欧美一区二区网站| 香蕉久久一区二区不卡无毒影院| 91香蕉视频mp4| 日本一区二区三区久久久久久久久不 | 亚洲精品国产精品乱码不99| 国产综合色在线| 69p69国产精品| 亚洲成人动漫av| 91久久精品一区二区三区| 国产精品久久99| 成人精品视频网站| 国产精品久久久久久久久搜平片 | 午夜欧美一区二区三区在线播放| 99精品欧美一区二区三区小说 | 亚洲美女少妇撒尿| 91麻豆国产福利在线观看| 国产精品美女久久久久aⅴ | 日本黄色一区二区| 亚洲欧美一区二区久久| 色婷婷综合久久久中文一区二区 | 91精品国产91久久久久久一区二区| 一区二区三区日韩精品视频| 色丁香久综合在线久综合在线观看| 欧美激情综合在线| 97久久精品人人做人人爽 | 91精品国产乱码久久蜜臀| 亚洲成人午夜影院| 日韩欧美在线一区二区三区| 久久国产精品露脸对白| 久久青草国产手机看片福利盒子| 极品销魂美女一区二区三区| 久久久亚洲国产美女国产盗摄| 国产尤物一区二区在线| 日本一二三不卡| 99久久99久久免费精品蜜臀| 亚洲另类在线一区| 欧美成人精品福利| 成人夜色视频网站在线观看| 亚洲乱码日产精品bd| 欧美一级二级三级乱码| 国产麻豆成人精品| 亚洲精品中文字幕在线观看| 日韩一区二区三区精品视频| 国产一区二区伦理片| 自拍偷拍欧美精品| 国产91精品精华液一区二区三区| 国产精品国产自产拍在线| 欧美日韩亚洲另类| 国内久久婷婷综合| 亚洲欧美日韩在线| 精品乱人伦一区二区三区| www.激情成人| 日本强好片久久久久久aaa| 国产欧美一区二区精品婷婷| 欧美美女视频在线观看| 精品一区二区三区蜜桃| 亚洲视频狠狠干| 日韩三级在线观看| 91一区二区在线| 韩国一区二区三区| 一级做a爱片久久| 久久久不卡网国产精品二区| 欧美中文字幕一二三区视频| 国产精品综合在线视频| 亚洲福利视频一区二区| 国产精品久久久久久亚洲毛片 | 国产在线精品一区二区夜色| 亚洲精选一二三| 国产精品毛片无遮挡高清| 日韩午夜小视频| 97精品国产露脸对白| 国产精品一区二区三区乱码| 天天综合天天做天天综合| 最新日韩av在线| 久久精品欧美一区二区三区不卡| 91精品国产欧美一区二区| 欧美中文字幕一区二区三区亚洲| 不卡高清视频专区| 国产成人午夜精品5599 | 成人精品免费看| 麻豆久久久久久久| 日本成人中文字幕| 污片在线观看一区二区| 亚洲综合一二三区| 一区二区三区成人在线视频| 国产精品福利一区二区三区| 国产精品麻豆网站| 国产精品天美传媒| 中文字幕乱码久久午夜不卡 | 亚洲欧洲日韩女同| 日本一区二区免费在线| 久久精品亚洲乱码伦伦中文| 久久久久久久久一| 久久久国产精华| 中文字幕欧美日韩一区| 欧美激情在线一区二区三区| 亚洲国产精品黑人久久久| 国产欧美一区二区精品仙草咪| 国产亚洲婷婷免费| 亚洲国产精品ⅴa在线观看| 国产精品理论片| 亚洲三级理论片| 亚洲一区二区3| 日韩国产欧美在线播放| 久久99国产精品久久99| 国产成人在线网站| 99视频一区二区| 在线免费不卡视频| 6080亚洲精品一区二区| 欧美精品一区在线观看| 欧美高清在线一区二区| 亚洲欧美另类久久久精品| 亚洲国产一区二区三区| 美女性感视频久久| 国产不卡一区视频| 在线观看精品一区| 日韩免费在线观看| 欧美国产欧美综合| 亚洲主播在线播放| 美女视频网站久久| 91在线视频在线| 3atv一区二区三区| 国产女人18水真多18精品一级做| 一区二区三区日韩精品视频| 欧美a一区二区| 91视视频在线观看入口直接观看www| 欧美色图在线观看| 国产亚洲综合在线| 亚洲一级二级三级| 国产成人综合在线观看| 欧美色综合网站| 国产女主播一区| 丝袜亚洲精品中文字幕一区| 国产在线视频一区二区三区| 色婷婷久久久久swag精品| 欧美大胆一级视频| 亚洲乱码日产精品bd| 国产成人在线视频网址| 欧美绝品在线观看成人午夜影视| 国产三区在线成人av| 石原莉奈在线亚洲三区| 成年人网站91| 欧美成人bangbros| 午夜精品免费在线| 91美女福利视频|