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

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

?? fill_module.f90

?? CCSM Research Tools: Community Atmosphere Model (CAM)
?? F90
字號:
module fill_module!-----------------------------------------------------------------------!BOP!! !MODULE: fill_module --- utilities for filling in "bad" data!! !PUBLIC MEMBER FUNCTIONS:      public filew, fillxy, fillz, filns, pfix!! !DESCRIPTION:!!    This module provides the basic utilities to fill in regions!    with bad "data", for example slightly negative values in fields!    which must be positive, like mixing ratios.  Generally this !    means borrowing positive values from neighboring cells.!! !REVISION HISTORY:!   99.03.01   Lin        Creation!   01.02.14   Lin        Routines coalesced into this module!   01.03.26   Sawyer     Added ProTeX documentation!!EOP!-----------------------------------------------------------------------contains!-----------------------------------------------------------------------!BOP! !IROUTINE: filew --- Fill from east and west neighbors; essentially!                      performing local flux adjustment!! !INTERFACE:  subroutine filew(q, im, jm, jfirst, jlast, acap, ipx, tiny, cosp2)! !USES: use precision implicit none! !INPUT PARAMETERS: integer im                  ! Longitudes integer jm                  ! Total latitudes integer jfirst              ! Starting latitude integer jlast               ! Finishing latitude real(r8) tiny               ! A small number to pump up value real(r8) acap               ! 1/(polar cap area) real(r8) cosp2              ! cosine(lat) at j=2! !INPUT/OUTPUT PARAMETERS: real(r8) q(im,jfirst:jlast) ! Field to adjust! !OUTPUT PARAMETERS: integer ipx                 ! Flag:  0 if Q not change, 1 if changed! !DESCRIPTION:!   Check for "bad" data and fill from east and west neighbors!! !REVISION HISTORY:!   99.10.01   Lin        Creation!   07.30.01   Lin        Improvement!!EOP!-----------------------------------------------------------------------!BOC! !LOCAL VARIABLES: real(r8) d0, d1, d2 real(r8) qtmp(jfirst:jlast,im) integer i, j, jm1, ip2 integer j1, j2 j1 = max( jfirst,   2 ) j2 = min( jlast, jm-1 ) jm1 = jm-1 ipx = 0! Copy & swap direction for vectorization.  do i=1,im     do j=j1,j2        qtmp(j,i) = q(i,j)     enddo  enddo   do i=2,im-1     do j=j1,j2        if(qtmp(j,i) < 0.) then           ipx =  1! west           d0 = max(0.,qtmp(j,i-1))           d1 = min(-qtmp(j,i),d0)           qtmp(j,i-1) = qtmp(j,i-1) - d1           qtmp(j,i) = qtmp(j,i) + d1! east           d0 = max(0.,qtmp(j,i+1))           d2 = min(-qtmp(j,i),d0)           qtmp(j,i+1) = qtmp(j,i+1) - d2           qtmp(j,i) = qtmp(j,i) + d2 + tiny        endif    enddo  enddo      i=1  do j=j1,j2     if(qtmp(j,i) < 0.) then        ipx =  1! west        d0 = max(0.,qtmp(j,im))        d1 = min(-qtmp(j,i),d0)        qtmp(j,im) = qtmp(j,im) - d1        qtmp(j,i) = qtmp(j,i) + d1! east        d0 = max(0.,qtmp(j,i+1))        d2 = min(-qtmp(j,i),d0)        qtmp(j,i+1) = qtmp(j,i+1) - d2        qtmp(j,i) = qtmp(j,i) + d2 + tiny      endif  enddo     i=im  do j=j1,j2     if(qtmp(j,i) < 0.) then        ipx =  1! west        d0 = max(0.,qtmp(j,i-1))        d1 = min(-qtmp(j,i),d0)        qtmp(j,i-1) = qtmp(j,i-1) - d1        qtmp(j,i) = qtmp(j,i) + d1! east        d0 = max(0.,qtmp(j,1))        d2 = min(-qtmp(j,i),d0)        qtmp(j,1) = qtmp(j,1) - d2        qtmp(j,i) = qtmp(j,i) + d2 + tiny     endif  enddo if(ipx .ne. 0) then!-----------! Final pass!-----------    do i=1,im-1       do j=j1,j2          if (qtmp(j,i) < 0. ) then! Take mass from east (essentially adjusting fx(i+1,j))              qtmp(j,i+1) = qtmp(j,i+1) + qtmp(j,i)              qtmp(j,i) = 0.          endif       enddo    enddo    do i=im,2,-1       do j=j1,j2          if (qtmp(j,i) < 0. ) then! Take mass from west (essentially adjusting fx(i,j))              qtmp(j,i-1) = qtmp(j,i-1) + qtmp(j,i)              qtmp(j,i) = 0.          endif       enddo    enddo    do j=j1,j2       do i=1,im          q(i,j) = qtmp(j,i)       enddo    enddo endif ! Check Poles. if ( jfirst == 1 ) then      if(q(1,1) < 0.) then         call pfix(q(1,2),q(1,1),im,ipx,acap,cosp2)      else!            Check j=2             ip2 = 0         do i=1,im            if(q(i,2).lt.0.) then               ip2 = 1               go to 322            endif         enddo322      continue         if(ip2.ne.0) call pfix(q(1,2),q(1,1),im,ipx,acap,cosp2)      endif endif  if ( jlast == jm ) then      if(q(1,jm) < 0.) then         call pfix(q(1,jm1),q(1,jm),im,ipx,acap,cosp2)      else!             Check j=jm1              ip2 = 0         do i=1,im            if(q(i,jm1) < 0.) then               ip2 = 1               go to 323            endif         enddo323      continue         if(ip2.ne.0) call pfix(q(1,jm1),q(1,jm),im,ipx,acap,cosp2)      endif endif!EOC end subroutine filew!-----------------------------------------------------------------------!-----------------------------------------------------------------------!BOP! !IROUTINE: fillxy --- Fill from east, west, north and south neighbors!! !INTERFACE:  subroutine fillxy(q, im, jm, jfirst, jlast, acap, cosp, acosp)! !USES: use precision implicit none integer im                  ! Longitudes integer jm                  ! Total latitudes integer jfirst              ! Starting latitude integer jlast               ! Finishing latitude real(r8) acap               ! ??? real(r8) cosp(jm)           ! ??? real(r8) acosp(jm)          ! ???!! !INPUT/OUTPUT PARAMETERS: real(r8) q(im,jfirst:jlast) ! Field to adjust! !DESCRIPTION:!   Check for "bad" data and fill from east and west neighbors!! !BUGS:!   Currently this routine only performs the east-west fill algorithm.!   This is because the N-S fill is very hard to do in a reproducible!   fashion when the problem is decomposed by latitudes.!! !REVISION HISTORY:!   99.03.01   Lin        Creation!!EOP!-----------------------------------------------------------------------!BOC!! !LOCAL VARIABLES:  integer ipx, ipy, j1, j2  real(r8) tiny  parameter( tiny = 1.e-20 )    call filew(q,im,jm,jfirst,jlast,acap,ipx,tiny,cosp(2))! WS 99.08.03 : S.-J. can you clean up the j1, j2 stuff here?   if(ipx.ne.0) then      j1 = max( 2,    jfirst )      j2 = min( jm-1, jlast )!! WS 99.08.03 : see comments in "BUGS" above!!!      call filns(q,im,jm,j1,j2,cosp,acosp,ipy,tiny)!     if(ipy .ne. 0) then! do fill zonally! xfx is problematic!     call xfix(q,IM,JM,tiny,qt)!     endif   endif!EOC end subroutine fillxy!-----------------------------------------------------------------------!-----------------------------------------------------------------------!BOP! !IROUTINE: fillz --- Fill from neighbors below and above!! !INTERFACE:  subroutine fillz(im, i1, i2, km, nq, q, dp)! !USES: use precision implicit none! !INPUT PARAMETERS:   integer, intent(in) :: im                ! No. of longitudes   integer, intent(in) :: km                ! No. of levels   integer, intent(in) :: i1                ! Starting longitude   integer, intent(in) :: i2                ! Finishing longitude   integer, intent(in) :: nq                ! Total number of tracers   real(r8), intent(in) ::  dp(im,km)       ! pressure thickness! !INPUT/OUTPUT PARAMETERS:   real(r8), intent(inout) :: q(im,km,nq)   ! tracer mixing ratio! !DESCRIPTION:!   Check for "bad" data and fill from east and west neighbors!! !BUGS:!   Currently this routine only performs the east-west fill algorithm.!   This is because the N-S fill is very hard to do in a reproducible!   fashion when the problem is decomposed by latitudes.!! !REVISION HISTORY:!   00.04.01   Lin        Creation!!EOP!-----------------------------------------------------------------------!BOC!! !LOCAL VARIABLES:   integer i, k, ic   real(r8) qup, qly, dup   do ic=1,nq! Top layer      do i=i1,i2         if( q(i,1,ic) < 0.) then             q(i,2,ic) = q(i,2,ic) + q(i,1,ic)*dp(i,1)/dp(i,2)             q(i,1,ic) = 0.          endif      enddo! Interior      do k=2,km-1         do i=i1,i2         if( q(i,k,ic) < 0. ) then! Borrow from above             qup =  q(i,k-1,ic)*dp(i,k-1)             qly = -q(i,k  ,ic)*dp(i,k  )             dup =  min( 0.5*qly, qup )        !borrow no more than 50%             q(i,k-1,ic) = q(i,k-1,ic) - dup/dp(i,k-1) ! Borrow from below: q(i,k,ic) is still negative at this stage             q(i,k+1,ic) = q(i,k+1,ic) + (dup-qly)/dp(i,k+1)              q(i,k  ,ic) = 0.          endif          enddo      enddo ! Bottom layer      k = km      do i=i1,i2         if( q(i,k,ic) < 0.) then! Borrow from above             qup =  q(i,k-1,ic)*dp(i,k-1)             qly = -q(i,k  ,ic)*dp(i,k  )             dup =  min( qly, qup )             q(i,k-1,ic) = q(i,k-1,ic) - dup/dp(i,k-1)              q(i,k,ic) = 0.          endif      enddo   enddo!EOCend subroutine fillz!-----------------------------------------------------------------------!-----------------------------------------------------------------------!BOP! !IROUTINE: filns --- Fill from north and south neighbors!! !INTERFACE:  subroutine filns(q,im,jm,j1,j2,cosp,acosp,ipy,tiny)! !USES: use precision implicit none! !INPUT PARAMETERS: integer im                  ! Longitudes integer jm                  ! Total latitudes integer j1                  ! Starting latitude integer j2                  ! Finishing latitude real(r8) tiny               ! A small number to pump up value real(r8) cosp(*)            ! ??? real(r8) acosp(*)           ! ???! !INPUT/OUTPUT PARAMETERS: real(r8) q(im,*)            ! Field to adjust! !OUTPUT PARAMETERS: integer  ipy                ! Flag: 0 if no fill-in, 1 if fill-in! !DESCRIPTION:!   Check for "bad" data and fill from north and south neighbors!! !BUGS:!   Currently this routine can only be used performs when the!   problem is *not* distributed in latitude (i.e. j1=1, j2=jm).!   This is because the N-S fill is very hard to do in a reproducible!   fashion when the problem is decomposed by latitudes.!! !REVISION HISTORY:!   99.03.01   Lin        Creation!!EOP!-----------------------------------------------------------------------!BOC!! !LOCAL VARIABLES: integer  i, j real(r8) dp, cap1, dq, dn, ds, d0, d1, d2 logical first data first /.true./ save cap1    if(first) then      dp = 4.d0*datan(1.d0)/dble(jm-1)      cap1 = im*(1.-cos((j1-1.5)*dp))/dp      first = .false.    endif       ipy = 0    do j=j1+1,j2-1      do i=1,im      if(q(i,j).lt.0.) then         ipy =  1         dq  = - q(i,j)*cosp(j)! North         dn = q(i,j+1)*cosp(j+1)         d0 = max(0.,dn)         d1 = min(dq,d0)         q(i,j+1) = (dn - d1)*acosp(j+1)         dq = dq - d1! South         ds = q(i,j-1)*cosp(j-1)         d0 = max(0.,ds)         d2 = min(dq,d0)         q(i,j-1) = (ds - d2)*acosp(j-1)         q(i,j) = (d2 - dq)*acosp(j) + tiny      endif      enddo    enddo       do i=1,im      if(q(i,j1).lt.0.) then      ipy =  1      dq  = - q(i,j1)*cosp(j1)! North      dn = q(i,j1+1)*cosp(j1+1)      d0 = max(0.,dn)      d1 = min(dq,d0)      q(i,j1+1) = (dn - d1)*acosp(j1+1)      q(i,j1) = (d1 - dq)*acosp(j1) + tiny      endif      enddo       j = j2      do i=1,im      if(q(i,j).lt.0.) then      ipy =  1      dq  = - q(i,j)*cosp(j)! South      ds = q(i,j-1)*cosp(j-1)      d0 = max(0.,ds)      d2 = min(dq,d0)      q(i,j-1) = (ds - d2)*acosp(j-1)      q(i,j) = (d2 - dq)*acosp(j) + tiny      endif      enddo ! Check Poles.      if(q(1,1).lt.0.) then      dq = q(1,1)*cap1/float(im)*acosp(j1)      do i=1,im      q(i,1) = tiny      q(i,j1) = q(i,j1) + dq      q(i,j1) = max(tiny, q(i,j1) + dq )      enddo      endif       if(q(1,jm).lt.0.) then      dq = q(1,jm)*cap1/float(im)*acosp(j2)      do i=1,im      q(i,jm) = tiny      q(i,j2) = max(tiny,  q(i,j2) + dq )      enddo      endif!EOC  end subroutine filns!-----------------------------------------------------------------------!-----------------------------------------------------------------------!BOP! !IROUTINE: pfix --- fix an individual latitude-level!! !INTERFACE:  subroutine pfix(q, qp, im, ipx, acap, cosp2)! !USES: use precision implicit none! !INPUT PARAMETERS: integer im                  ! Longitudes real(r8) acap               ! ??? real(r8) cosp2              ! ???! !INPUT/OUTPUT PARAMETERS: real(r8) q(im)              ! Latitude-level field to adjust real(r8) qp(im)             ! Second latitude-level field to adjust (usually pole)! !OUTPUT PARAMETERS: integer ipx                 ! Flag:  0 if Q not change, 1 if changed! !DESCRIPTION:!   Fill one latitude-level from east and west neighbors!! !REVISION HISTORY:!   99.03.01   Lin        Creation!!EOP!-----------------------------------------------------------------------!BOC!! !LOCAL VARIABLES: integer i real(r8) summ, sump, pmean    summ = 0.   sump = 0.   do i=1,im     summ = summ + q(i)     sump = sump + qp(i)   enddo    sump = sump/im   pmean = (sump*acap + summ*cosp2) / (acap + cosp2*im)    do i=1,im      q(i) = pmean      qp(i) = pmean   enddo    if( qp(1) < 0. ) then      ipx = 1   endif!EOC end subroutine pfix!-----------------------------------------------------------------------end module fill_module

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费亚洲电影在线| 91精品一区二区三区在线观看| 91成人国产精品| 久久久久久久久久电影| 午夜一区二区三区在线观看| 不卡在线观看av| 亚洲精品一区二区三区精华液| 亚洲综合色网站| 91影院在线观看| 国产女主播视频一区二区| 久久91精品久久久久久秒播| 欧美吞精做爰啪啪高潮| 最近中文字幕一区二区三区| 国产成人免费视频网站| 欧美大片一区二区| 麻豆精品国产传媒mv男同| 欧美午夜精品理论片a级按摩| 国产欧美精品一区二区色综合朱莉| 免费一级片91| 欧美一区二区视频免费观看| 香蕉成人伊视频在线观看| 在线观看视频一区二区| 亚洲欧洲日产国产综合网| 成人精品gif动图一区| 亚洲国产精品ⅴa在线观看| 国产美女视频一区| 久久精品男人的天堂| 国产一区二区毛片| 国产日韩精品一区二区浪潮av | youjizz久久| 欧美极品aⅴ影院| 国产成人午夜视频| 国产精品欧美极品| 波多野结衣中文字幕一区二区三区| 久久久亚洲精华液精华液精华液| 国产精品综合久久| 国产女人aaa级久久久级| 国产精品伊人色| 国产欧美日韩不卡| av高清不卡在线| 一区二区激情视频| 欧美视频一区二区在线观看| 午夜精品久久久久久久久久久| 在线观看国产一区二区| 亚洲午夜在线观看视频在线| 4438x亚洲最大成人网| 蜜桃精品在线观看| 久久蜜桃av一区二区天堂| 懂色av中文一区二区三区| 亚洲天堂免费看| 欧美精品在线一区二区三区| 久久99九九99精品| 欧美极品少妇xxxxⅹ高跟鞋| 91在线一区二区| 五月天激情小说综合| 精品欧美久久久| 粉嫩在线一区二区三区视频| 国产精品不卡在线观看| 欧美在线free| 激情深爱一区二区| 亚洲欧美日韩综合aⅴ视频| 欧美日韩成人一区| 国产成人自拍网| 亚洲欧美日韩国产成人精品影院| 欧美另类一区二区三区| 成人性生交大片免费看中文| 亚洲aaa精品| 欧美国产国产综合| 欧美人妇做爰xxxⅹ性高电影| 精品一二三四区| 亚洲无人区一区| 久久综合色鬼综合色| 在线免费精品视频| 国产毛片精品视频| 视频一区中文字幕国产| 国产精品毛片无遮挡高清| 日韩一区二区视频在线观看| 91丨porny丨首页| 精品一区二区三区免费视频| 亚洲婷婷综合久久一本伊一区| 日韩三级中文字幕| 欧洲日韩一区二区三区| 国产成人精品一区二区三区网站观看| 一区二区三区精品| 国产精品嫩草99a| 日韩美女天天操| 欧美精三区欧美精三区| 色老头久久综合| 国产99一区视频免费| 蜜臀精品一区二区三区在线观看| 亚洲欧美区自拍先锋| 久久精品亚洲精品国产欧美kt∨ | 色婷婷精品久久二区二区蜜臂av| 精东粉嫩av免费一区二区三区| 亚洲精品久久7777| 亚洲欧洲日韩一区二区三区| 精品成a人在线观看| 91精品国产欧美日韩| 欧美精品在线一区二区| 欧亚一区二区三区| 色综合久久中文综合久久牛| 成人av一区二区三区| 国产在线精品不卡| 国内成人自拍视频| 久久99精品国产麻豆不卡| 美美哒免费高清在线观看视频一区二区| 亚洲一区二区精品3399| 亚洲一区二区三区爽爽爽爽爽 | 亚洲视频每日更新| 1区2区3区欧美| 亚洲乱码中文字幕综合| 亚洲精品国产精华液| 一区二区三区在线观看欧美| 一区二区三区中文字幕精品精品| 亚洲日本电影在线| 亚洲女子a中天字幕| 亚洲综合清纯丝袜自拍| 亚洲成人精品一区| 欧美aaaaa成人免费观看视频| 青青草伊人久久| 狠狠色丁香久久婷婷综| 国产91丝袜在线观看| 97超碰欧美中文字幕| 色婷婷亚洲一区二区三区| 在线免费观看日本欧美| 制服丝袜亚洲色图| 久久久天堂av| 中文字幕一区二区三区在线不卡 | 2欧美一区二区三区在线观看视频| 欧美mv和日韩mv的网站| 国产欧美一区视频| 亚洲欧美国产三级| 三级影片在线观看欧美日韩一区二区| 日本三级亚洲精品| 成人自拍视频在线观看| 欧美在线视频全部完| 欧美va亚洲va国产综合| 国产精品久久久久永久免费观看| 亚洲美腿欧美偷拍| 美女在线观看视频一区二区| 国产精品白丝av| 色狠狠桃花综合| 日韩精品一区二区在线| 椎名由奈av一区二区三区| 午夜欧美电影在线观看| 国产精品一区专区| 在线观看免费视频综合| 久久影视一区二区| 一区二区三区鲁丝不卡| 国产在线播放一区二区三区| 91色九色蝌蚪| 欧美一级高清片| 中文字幕视频一区| 美女网站一区二区| 91丝袜美女网| 精品sm在线观看| 一区二区三区四区高清精品免费观看| 另类中文字幕网| 欧美三级日韩在线| 国产欧美日韩一区二区三区在线观看| 一区二区在线观看视频| 国产在线视频不卡二| 欧美三级日韩三级国产三级| 国产欧美日韩另类一区| 男男gaygay亚洲| 日本精品一级二级| 国产亚洲一区二区在线观看| 亚洲综合色成人| av欧美精品.com| 国产日韩欧美麻豆| 奇米影视一区二区三区| 精品视频免费看| 亚洲图片另类小说| 高清免费成人av| 久久蜜桃一区二区| 理论片日本一区| 91精品国模一区二区三区| 一区二区三区精品在线观看| 99精品视频一区| 欧美国产欧美亚州国产日韩mv天天看完整| 毛片av一区二区三区| 制服丝袜中文字幕亚洲| 丝袜亚洲另类欧美| 欧美日韩日日夜夜| 香蕉av福利精品导航| 欧美午夜一区二区三区免费大片| 亚洲欧美日韩人成在线播放| 国产91对白在线观看九色| 国产亚洲精品bt天堂精选| 国产一区二区三区国产| 久久综合色天天久久综合图片| 麻豆91免费观看| 精品成人佐山爱一区二区| 免费人成在线不卡| 欧美变态口味重另类| 国内精品国产三级国产a久久| 精品999久久久| 国产91清纯白嫩初高中在线观看| 久久久99免费| kk眼镜猥琐国模调教系列一区二区|