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

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

?? ccsm_msg.f90

?? CCSM Research Tools: Community Atmosphere Model (CAM)
?? F90
?? 第 1 頁 / 共 5 頁
字號:
       ibuff(7) = plon               ! number of model longitudes       ibuff(8) = plat               ! number of model latitudes       ibuff(9) = msgpday            ! number of send/recv msgs per day       if (nstep == 0) ibuff(34) = 1 ! do extra albedo calculation on startup       ibuff(35) = 1                 ! use own restart info, not coupler's!! Constants!       pie       = acos(-1.)       degtorad  = pie / 180.0!! Mask for which cells are active and inactive and 2D latitude grid!       mask(:,:)    = 0        ! Initialize mask so that cells are inactive       clatdeg(:,:) = spval       clondeg(:,:) = spval       do lat = 1, plat         mask(1:nlon(lat),lat)    = 1     ! Active cells         clatdeg(1:nlon(lat),lat) = latdeg(lat) ! Put latitude in 2D array         clondeg(1:nlon(lat),lat) = londeg(1:nlon(lat),lat)       end do!! Send vertices of each grid point! Verticies are ordered as follows: ! 1=lower left, 2 = upper left, 3 = upper right, 4 = lower right!       ns_vert(:,:,:) = spval       ew_vert(:,:,:) = spval!! Longitude vertices!       do lat = 1, plat         ew_vert(1,1,lat)             = (londeg(1,lat) - 360.0 + londeg(nlon(lat),lat))*0.5         ew_vert(1,2:nlon(lat),lat)   = (londeg(1:nlon(lat)-1,lat) + &                                         londeg(2:nlon(lat),lat))*0.5         ew_vert(2,:nlon(lat),lat)    = ew_vert(1,:nlon(lat),lat)  ! Copy lowleft corner to upleft         ew_vert(3,:nlon(lat)-1,lat)  = ew_vert(1,2:nlon(lat),lat)         ew_vert(3,nlon(lat),lat)     = (londeg(nlon(lat),lat) + (360.0 + londeg(1,lat)))*0.5         ew_vert(4,:nlon(lat),lat)    = ew_vert(3,:nlon(lat),lat)  ! Copy lowright corner to upright       end do!! Latitude!       if ( dycore_is('LR') )then         ns_vert(1,:nlon(1),1)         = -90.0 + (latdeg(1) - latdeg(2))*0.5         ns_vert(2,:nlon(plat),plat)   =  90.0 + (latdeg(plat) - latdeg(plat-1))*0.5       else         ns_vert(1,:nlon(1),1)         = -90.0         ns_vert(2,:nlon(plat),plat)   =  90.0       end if       ns_vert(4,:nlon(1),1)       = ns_vert(1,nlon(1),1)        ! Copy lower left to lower right       ns_vert(3,:nlon(plat),plat) = ns_vert(2,nlon(plat),plat)  ! Copy up left to up right       do lat = 2, plat         ns_vert(1,:nlon(lat),lat) = (latdeg(lat) + latdeg(lat-1) )*0.5         ns_vert(4,:nlon(lat),lat) = ns_vert(1,:nlon(lat),lat)       end do       do lat = 1, plat-1         ns_vert(2,:nlon(lat),lat) = (latdeg(lat) + latdeg(lat+1) )*0.5         ns_vert(3,:nlon(lat),lat) = ns_vert(2,:nlon(lat),lat)       end do!! Get area of grid cells (as radians squared)!       area(:,:) = 0.0       do lat = 1, plat         do lon = 1, nlon(lat)           del_phi = sin( ns_vert(2,lon,lat)*degtorad ) - sin( ns_vert(1,lon,lat)*degtorad )           del_theta = ( ew_vert(4,lon,lat) - ew_vert(1,lon,lat) )*degtorad           area(lon,lat) = del_theta*del_phi         end do       end do!! If grid has a pole point (as in Lin-Rood dynamics!      if ( dycore_is('LR') )then         lat = 1         mask(2:nlon(lat),lat) = 0   ! Only active one point on pole         do lon = 1, nlon(lat)           del_phi = -sin( latdeg(lat)*degtorad ) + sin( ns_vert(2,lon,lat)*degtorad )           del_theta = ( ew_vert(4,lon,lat) - ew_vert(1,lon,lat) )*degtorad           area(lon,lat)  = del_theta*del_phi         end do         lat = plat         mask(2:nlon(lat),lat) = 0   ! Only active one point on pole         do lon = 1, nlon(lat)           del_phi =  sin( latdeg(lat)*degtorad ) - sin( ns_vert(1,lon,lat)*degtorad )           del_theta = ( ew_vert(4,lon,lat) - ew_vert(1,lon,lat) )*degtorad           area(lon,lat)  = del_theta*del_phi         end do       end if       if ( abs(sum(area) - 4.0*pie) > 1.e-12 )then         write (6,*) 'CCSM_MSG_SENDGRID: sum of areas on globe does not = 4*pi'         write (6,*) ' sum of areas = ', sum(area)         call endrun       end if!! Send ibuff and grid information to flux coupler.!       call shr_msg_send_i (ibuff  , nibuff     , SHR_MSG_TID_CPL, SHR_MSG_TAG_A2CI)       call shr_msg_send_r (clondeg,  size(clondeg), SHR_MSG_TID_CPL, SHR_MSG_TAG_A2CI)       call shr_msg_send_r (clatdeg, size(clatdeg), SHR_MSG_TID_CPL, SHR_MSG_TAG_A2CI)       call shr_msg_send_r (ew_vert, size(ew_vert), SHR_MSG_TID_CPL, SHR_MSG_TAG_A2CI)       call shr_msg_send_r (ns_vert, size(ns_vert), SHR_MSG_TID_CPL, SHR_MSG_TAG_A2CI)       call shr_msg_send_r (area   , size(area), SHR_MSG_TID_CPL, SHR_MSG_TAG_A2CI)       call shr_msg_send_i (mask   , size(mask), SHR_MSG_TID_CPL, SHR_MSG_TAG_A2CI)       write(6,*)'(CCSM_MSG_SENDGRID): sent a->d startup msg_id = ',SHR_MSG_TAG_A2CI       call shr_sys_flush(6)    endif  ! end of if-masterproc    return  end subroutine ccsm_msg_sendgrid!===============================================================================  subroutine ccsm_msg_getalb!----------------------------------------------------------------------- ! ! Purpose: ! Send first time of albedo calculation (along with dummy data) to! coupler and get albedos along with snow and ocn/ice fractions back ! ! Method: ! ! Author: Mariana Vertenstein! !-----------------------------------------------------------------------    use comsrf, only: srfflx_state2d,surface_state2d, icefrac, ocnfrac,snowhice,snowhland    use time_manager, only: get_start_date#include <comctl.h>!--------------------------Local Variables------------------------------    integer i,m,n,lat                   ! indices    integer yr, mon, day                ! year, month, day components of cdatecsm    integer cdatecsm,cseccsm            ! current date,sec     integer msgpday                     ! number of send/recv msgs per day#ifdef SPMD    integer :: numperlat         ! number of values per latitude band    integer :: numsend(0:npes-1) ! number of items to be sent    integer :: numrecv           ! number of items to be received    integer :: displs(0:npes-1)  ! displacement array#endif!-----------------------------------------------------------------------!    if (masterproc) then!! Send first time of albedo calculation (along with dummy data) to the flux coupler. !       call get_start_date(yr, mon, day, cseccsm)       cdatecsm = yr*10000 + mon*100 + day       ibuff(:)  = 0       ibuff(4)  = cdatecsm   ! model date (yyyymmdd)       ibuff(5)  = cseccsm    ! elapsed seconds in current day       ibuff(6)  = 0          ! current time step       ibuff(7)  = plon       ! number of model longitudes       ibuff(8)  = plat       ! number of model latitudes       ibuff(9)  = msgpday    ! number of send/recv msgs per day       ibuff(32) = 0          ! albedo calculation time shift       arput(:,:,:) = 1.0e+36       call shr_msg_send_i (ibuff, size(ibuff), SHR_MSG_TID_CPL, SHR_MSG_TAG_A2C)       call shr_msg_send_r (arput, size(arput), SHR_MSG_TID_CPL, SHR_MSG_TAG_A2C)       if (csm_timing) irtc_s = shr_sys_irtc()!     ! Receive merged surface state from flux coupler.!          ibuff(:) = 0       if (csm_timing) irtc_w = shr_sys_irtc()       call shr_msg_recv_i (ibuff, size(ibuff), SHR_MSG_TID_CPL, SHR_MSG_TAG_C2A)       call shr_msg_recv_r (arget, size(arget), SHR_MSG_TID_CPL, SHR_MSG_TAG_C2A)       if (csm_timing) then          irtc_r = shr_sys_irtc()          write(6,9099) irtc_s,'a->d sending'          write(6,9099) irtc_w,'d->a waiting'          write(6,9099) irtc_r,'d->a received'       end if       write(6,*) '(CCSM_MSG_GETALB) recd d->a surface state, msg_id= ',SHR_MSG_TAG_C2A       call shr_sys_flush(6)    endif  ! end of if-masteproc!! Extract the surface state variables and surface type fractions.! NOTE: at the initial time the flux coupler only sends surface ! states, NOT surface fluxes.!#if (defined SPMD)    do n=1,nrcv       do lat=1,plat          arget_buf(:,n,lat) = arget(:,lat,n)       end do    end do    numperlat = plon*nrcv    call compute_gsfactors (numperlat, numrecv, numsend, displs)    if ( masterproc ) then      call mpiscatterv (arget_buf, numsend, displs, mpir8, arget_spmd(1,1,beglat), &                        numrecv, mpir8, 0, mpicom)    else      call mpiscatterv (0.0_r8, numsend, displs, mpir8, arget_spmd(1,1,beglat), &                        numrecv, mpir8, 0, mpicom)    end if    do lat=beglat,endlat       do i=1,plon          srfflx_state2d(lat)%asdir(i)  = arget_spmd(i,7 ,lat) ! Surface state variable          srfflx_state2d(lat)%aldir(i)  = arget_spmd(i,8 ,lat) ! Surface state variable          srfflx_state2d(lat)%asdif(i)  = arget_spmd(i,9 ,lat) ! Surface state variable          srfflx_state2d(lat)%aldif(i)  = arget_spmd(i,10,lat) ! Surface state variable          srfflx_state2d(lat)%ts(i)     = arget_spmd(i,11,lat) ! Surface state variable          snowhland(i,lat)  = arget_spmd(i,12,lat) ! Surface state variable          icefrac(i,lat)= arget_spmd(i,13,lat) ! Surface type fraction          ocnfrac(i,lat)= arget_spmd(i,14,lat) ! Surface type fraction       end do    end do#else     do lat=beglat,endlat       do i=1,plon          srfflx_state2d(lat)%asdir(i)  = arget(i,lat,7 ) ! Surface state variable          srfflx_state2d(lat)%aldir(i)  = arget(i,lat,8 ) ! Surface state variable          srfflx_state2d(lat)%asdif(i)  = arget(i,lat,9 ) ! Surface state variable          srfflx_state2d(lat)%aldif(i)  = arget(i,lat,10) ! Surface state variable          srfflx_state2d(lat)%ts(i)     = arget(i,lat,11) ! Surface state variable          snowhland(i,lat)  = arget(i,lat,12) ! Surface state variable          icefrac(i,lat)= arget(i,lat,13) ! Surface type fraction          ocnfrac(i,lat)= arget(i,lat,14) ! Surface type fraction       end do    end do#endif!! Set snowh over ice to zero since flux coupler only returns snowh over land!    snowhice(:,:) = 0.09099 format('[mp timing]  irtc = ',i20,' ',a)    return  end subroutine ccsm_msg_getalb!===============================================================================  subroutine ccsm_msg_compat( cpl_maj_vers, cpl_min_vers, expect_maj_vers, expect_min_vers )!----------------------------------------------------------------------- ! ! Purpose: ! Checks that the message recieved from the coupler is compatable! with the type of message that I expect to recieve.  ! ! Method: ! If the minor version numbers differ I print a warning message.  If the major! numbers differ I abort since that means that the change is drastic enough that ! I can't run with the differences.! ! Author: Erik Kluzek! !-----------------------arguments---------------------------------------    integer, intent(in) :: cpl_maj_vers    ! major version from coupler initial ibuff array    integer, intent(in) :: cpl_min_vers    ! minor version from coupler initial ibuff array    integer(SHR_KIND_IN), intent(in) :: expect_maj_vers ! major version of the coupler I'm expecting    integer(SHR_KIND_IN), intent(in) :: expect_min_vers ! minor version of the coupler I'm expecting!-----------------------------------------------------------------------    write(6,*)'(CCSM_MSG_COMPAT): This is revision: $Revision: 1.11.2.6 $'    write(6,*)'              Tag: $Name: cam2_0_brnchT_release3 $'    write(6,*)'              of the message compatability interface:'    if ( cpl_min_vers /= expect_min_vers ) then       write(6,*)'WARNING(cpl_compat):: Minor version of coupler messages different than expected: '       write(6,*)'The version of the coupler being used is: ', cpl_min_vers       write(6,*)'The version I expect is:                  ', expect_min_vers    end if    if ( cpl_maj_vers /= expect_maj_vers )then       write(6,*) 'ERROR(cpl_compat):: Major version of coupler messages different than expected: '       write(6,*) 'The version of the coupler being used is: ', cpl_maj_vers       write(6,*) 'The version I expect is:                  ', expect_maj_vers       call endrun    end if    return  end subroutine ccsm_msg_compat!===============================================================================  subroutine ccsm_compat_check_spval( spval, data, string )!----------------------------------------------------------------------- ! ! Purpose: ! Check that the given piece of real data sent from the coupler is valid data ! and not the couplers special data flag.  This ensures that the data! you expect is actually being sent by the coupler.! ! Method: ! ! Author: Erik Kluzek! !-----------------------------------------------------------------------!------------------ Arguments ------------------------------------------    real(r8) , intent(in) ::  spval, data    character, intent(in) ::  string*(*)!-----------------------------------------------------------------------    if ( spval == data )then       write(6,*)'ERROR::( lsm_compat_check_spval) msg incompatibility'       write(6,*)'ERROR:: I expect to recieve the data type: ', string       write(6,*)'from CPL, but all I got was the special data flag'       write(6,*)'coupler must not be sending this data, you are'       write(6,*)'running with an incompatable version of the coupler'       call endrun    end if    return  end subroutine ccsm_compat_check_spval!===============================================================================#endifend module ccsm_msg

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91首页免费视频| 亚洲一区精品在线| 亚洲视频狠狠干| 三级欧美在线一区| 91国模大尺度私拍在线视频| 中文字幕av不卡| 粉嫩高潮美女一区二区三区 | 亚洲欧美国产77777| 久久电影网站中文字幕| 94色蜜桃网一区二区三区| 亚洲精品一区二区三区福利 | 精品蜜桃在线看| 亚洲免费观看视频| 在线播放日韩导航| 欧美在线视频不卡| 亚洲国产欧美在线人成| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 久久精品国产一区二区三区免费看| 欧美精品一区二区三区久久久| 日本免费新一区视频| 久久免费视频一区| 色哟哟亚洲精品| 蜜臀av一区二区| 久久综合色鬼综合色| 欧美一区二区免费视频| 欧美性受xxxx黑人xyx性爽| 一本色道久久综合亚洲91 | 成人永久aaa| 国产成人av在线影院| 国产精品一区免费视频| 一级特黄大欧美久久久| 久久久久久久久99精品| 欧美二区三区91| 成人91在线观看| 国产成人精品一区二区三区四区| 视频在线观看一区| 国产精品日日摸夜夜摸av| 欧美一区二区三区电影| 欧美一级一区二区| av一区二区三区| 欧美色爱综合网| 欧美日韩色一区| 欧美疯狂做受xxxx富婆| 国产激情一区二区三区四区| 亚洲电影在线免费观看| 日韩毛片一二三区| 国产日韩欧美精品一区| 日韩精品一区二区三区在线观看| 不卡的av在线播放| 成人亚洲精品久久久久软件| 日本aⅴ精品一区二区三区| 国产女同互慰高潮91漫画| 精品免费国产一区二区三区四区| 欧美日精品一区视频| 91美女片黄在线观看| 成人一区二区三区视频| 从欧美一区二区三区| 国产福利视频一区二区三区| 国产精品一区二区果冻传媒| 奇米精品一区二区三区在线观看一| 亚洲伊人伊色伊影伊综合网| 亚洲毛片av在线| 亚洲国产另类av| 天天亚洲美女在线视频| 精品一区二区三区免费观看| 国产在线乱码一区二区三区| 一区二区三区中文字幕电影| 国产精品素人一区二区| 亚洲激情在线播放| 亚洲18女电影在线观看| 精品在线你懂的| 国产98色在线|日韩| 日本高清不卡aⅴ免费网站| 欧美手机在线视频| 久久久久高清精品| 亚洲精品成人悠悠色影视| 日韩电影免费在线看| 久久av老司机精品网站导航| 国产乱子伦视频一区二区三区| 国产乱码精品一区二区三区av| 99re热这里只有精品视频| 欧美日韩免费高清一区色橹橹| 26uuu国产日韩综合| 亚洲毛片av在线| 国产iv一区二区三区| 欧美日韩精品一二三区| 国产欧美日本一区二区三区| 午夜精品影院在线观看| 9i在线看片成人免费| 精品国产123| 麻豆精品在线播放| 另类中文字幕网| 91国模大尺度私拍在线视频| 久久久www成人免费毛片麻豆 | 中文字幕日韩av资源站| 精品一区二区精品| 欧美二区三区的天堂| 天天综合网 天天综合色| 91视频免费播放| 亚洲黄色免费电影| 91捆绑美女网站| 亚洲色图都市小说| 91免费国产在线| 一区二区三区中文在线| 99久久精品免费看国产| 国产精品久久久久一区| 国产99久久久精品| 国产精品成人免费| av一本久道久久综合久久鬼色| 中文字幕在线不卡一区| 91捆绑美女网站| 日韩精品欧美精品| 欧美一区二区日韩| 国产一区二区在线影院| 久久久久久综合| 日本va欧美va欧美va精品| 日韩午夜电影av| 高清不卡一二三区| 一区二区三区在线视频免费| 在线视频欧美区| 久久精品久久99精品久久| 日本一区二区三区视频视频| eeuss鲁片一区二区三区| 亚洲人快播电影网| 91精品国产欧美一区二区18| 经典三级在线一区| 亚洲免费资源在线播放| 精品国一区二区三区| 99精品视频一区二区| 欧美aaaaaa午夜精品| 中文字幕日韩一区二区| 日韩欧美在线123| 9久草视频在线视频精品| 国内精品国产成人国产三级粉色| 中文字幕亚洲区| 久久午夜羞羞影院免费观看| 在线观看欧美黄色| 国产一区999| 极品少妇xxxx偷拍精品少妇| 夜夜揉揉日日人人青青一国产精品| 日韩欧美自拍偷拍| 欧美高清性hdvideosex| 成人一区二区三区视频| 亚洲乱码国产乱码精品精小说 | 亚洲bt欧美bt精品| 一区二区三区四区在线| 中文字幕一区二区三区av| 久久九九全国免费| 国产欧美日韩在线看| 精品国产精品网麻豆系列| 欧美一级日韩免费不卡| 欧美日韩午夜在线| 在线成人av网站| 制服丝袜av成人在线看| 欧美电影一区二区三区| 欧美一区二区视频免费观看| 在线综合视频播放| 日韩免费一区二区三区在线播放| 欧美日韩亚洲综合一区二区三区| 日本二三区不卡| 欧美日韩国产中文| 欧美一级视频精品观看| 久久久不卡网国产精品一区| 国产精品美女久久久久久久久 | 99精品热视频| 91蜜桃传媒精品久久久一区二区| 波多野结衣中文字幕一区二区三区| 国产高清在线精品| 色婷婷国产精品综合在线观看| 色婷婷精品大在线视频| 欧美日本一道本| 欧美大片日本大片免费观看| 国产欧美精品一区aⅴ影院 | 欧美一区二区三区四区五区| 欧美成人激情免费网| 国产精品久久久久精k8| 日韩高清在线一区| 成人久久18免费网站麻豆| 欧美日韩国产一级| 中文av一区特黄| 韩国av一区二区三区四区| 色婷婷精品久久二区二区蜜臂av | 国产精品免费av| 韩国一区二区视频| 欧美视频在线一区| 国产欧美一区二区三区沐欲| 性做久久久久久免费观看| 不卡的av中国片| 欧美熟乱第一页| 中文字幕av一区二区三区| 久久99精品久久久久久国产越南 | 免费观看91视频大全| av一区二区三区| 1024亚洲合集| 成人高清免费观看| 2019国产精品| 国产成人在线视频网站| 欧美成人伊人久久综合网| 午夜精品一区二区三区免费视频| 在线一区二区三区|