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

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

?? areamod.f90

?? CCSM Research Tools: Community Atmosphere Model (CAM)
?? F90
?? 第 1 頁 / 共 5 頁
字號:
#include <misc.h>#include <preproc.h>module areaMod!----------------------------------------------------------------------- ! ! Purpose: ! area averaging routines!! Method: ! This subroutine is used in conjunction with areaave.F for area-average!!-----------------------------------------------------------------------! $Id: areaMod.F90,v 1.9.2.6 2002/05/13 18:00:01 erik Exp $!-----------------------------------------------------------------------  use precision  use clm_varcon, only : re  use shr_const_mod, only : SHR_CONST_PI  implicit none  integer, parameter :: maxovr = 100000  INTERFACE celledge     MODULE procedure celledge_regional     MODULE procedure celledge_global  END INTERFACE  INTERFACE cellarea     MODULE procedure cellarea_regional     MODULE procedure cellarea_global  END INTERFACE!=======================================================================contains!=======================================================================  subroutine areaini (nlon_i , nlat_i, numlon_i, lon_i, lat_i, area_i, mask_i , &                      nlon_o , nlat_o, numlon_o, lon_o, lat_o, area_o, fland_o, &                      mx_ovr , novr_i2o, iovr_i2o, jovr_i2o, wovr_i2o )!----------------------------------------------------------------------- ! ! Purpose: ! area averaging initialization !! Method: ! This subroutine is used in conjunction with areaave.F for area-average! mapping of a field from one grid to another. !!    areaini  - initializes indices and weights for area-averaging from !               input grid to output grid!    areamap  - called by areaini: finds indices and weights!    areaovr  - called by areamap: finds if cells overlap and area of overlap!    areaave  - does area-averaging from input grid to output grid! ! To map from one grid to another, must first call areaini to build! the indices and weights (iovr_i2o, jovr_i2o, wovr_i2o). Then must! call areaave to get new field on output grid.!! Not all grid cells on the input grid will be used in the area-averaging! of a field to the output grid. Only input grid cells with [mask_i] = 1! contribute to output grid cell average. If [mask_i] = 0, input grid cell ! does not contribute to output grid cell. This distinction is not usually! required for atm -> land mapping, because all cells on the atm grid have! data. But when going from land -> atm, only land grid cells have data.! Non-land grid cells on surface grid do not have data. So if output grid cell! overlaps with land and non-land cells (input grid), can only use land! grid cells when computing area-average. !! o Input and output grids can be ANY resolution BUT:!!   a. Grid orientation -- Grids can be oriented south to north!      (i.e. cell(lat+1) is north of cell(lat)) or from north to !      south (i.e. cell(lat+1) is south of cell(lat)). Both grids must be !      oriented from west to east, i.e., cell(lon+1) must be east of cell(lon)!!   b. Grid domain -- Grids do not have to be global. Both grids are defined!      by their north, east, south, and west edges (edge_i and edge_o in!      this order, i.e., edge_i(1) is north and edge_i(4) is west).!      !      For partial grids, northern and southern edges are any latitude!      between 90 (North Pole) and -90 (South Pole). Western and eastern!      edges are any longitude between -180 and 180, with longitudes !      west of Greenwich negative.!!      For global grids, northern and southern edges are 90 (North Pole) !      and -90 (South Pole). The grids do not have to start at the!      same longitude, i.e., one grid can start at Dateline and go east;!      the other grid can start at Greenwich and go east. Longitudes for!      the western edge of the cells must increase continuously and span!      360 degrees. Examples!!                              West edge    East edge!                            ---------------------------------------------------!      Dateline            :        -180 to 180        (negative W of Greenwich)!      Greenwich (centered):    0 - dx/2 to 360 - dx/2 !!   c. Both grids can have variable number of longitude points for each!      latitude strip. However, the western edge of the first point in each!      latitude must be the same for all latitudes. Likewise, for the!      eastern edge of the last point. That is, each latitude strip must span !      the same longitudes, but the number of points to do this can be different!!   d. One grid can be a sub-set (i.e., smaller domain) than the other grid.!      In this way, an atmospheric dataset for the entire globe can be!      used in a simulation for a region 30N to 50N and 130W to 70W -- the !      code will extract the appropriate data. The two grids do not have to!      be the same resolution. Area-averaging will work for full => partial!      grid but obviously will not work for partial => full grid.!! o Field values fld_i on an  input grid with dimensions nlon_i and nlat_i =>!   field values fld_o on an output grid with dimensions nlon_o and nlat_o as!!   fld_o(io,jo) =!   fld_i(i_ovr(io,jo,    1),j_ovr(io,jo,    1)) * w_ovr(io,jo,   1) !                             ... + ... +!   fld_i(i_ovr(io,jo,mx_ovr),j_ovr(io,jo,mx_ovr)) * w_ovr(io,jo,mx_ovr)!! o Error checks:!!   Overlap weights of input cells sum to 1 for each output cell.!   Global sum of dummy field is conserved for input => output area-average.! ! Author: Gordon Bonan! !-----------------------------------------------------------------------! ------------------------ arguments --------------------------------    integer , intent(in) :: nlon_i                       !input  grid: max number of longitude points    integer , intent(in) :: nlat_i                       !input  grid: number of latitude  points    integer , intent(in) :: numlon_i(nlat_i)             !input  grid: number lon points at each lat    real(r8), intent(inout) :: lon_i(nlon_i+1,nlat_i)    !input grid: longitude, west edge (degrees)    real(r8), intent(in) :: lat_i(nlat_i+1)              !input grid: latitude, south edge (degrees)    real(r8), intent(in) :: area_i(nlon_i,nlat_i)        !input grid: cell area    real(r8), intent(in) :: mask_i(nlon_i,nlat_i)        !input  grid: mask (0, 1)    integer , intent(in) :: nlon_o                       !output grid: max number of longitude points    integer , intent(in) :: nlat_o                       !output grid: number of latitude  points    integer , intent(in) :: numlon_o(nlat_o)             !output grid: number lon points at each lat    real(r8), intent(in) :: lon_o(nlon_o+1,nlat_o)       !output grid: longitude, west edge  (degrees)    real(r8), intent(in) :: lat_o(nlat_o+1)              !output grid: latitude, south edge (degrees)    real(r8), intent(in) :: area_o(nlon_o,nlat_o)        !output grid: cell area    real(r8), intent(in) :: fland_o(nlon_o,nlat_o)       !output grid: fraction that is land    integer , intent(in) :: mx_ovr                       !maximum number of overlapping cells     integer , intent(out):: novr_i2o(nlon_o,nlat_o)      !number of overlapping input cells    integer , intent(out):: iovr_i2o(nlon_o,nlat_o,mx_ovr)!lon index of overlap input cell    integer , intent(out):: jovr_i2o(nlon_o,nlat_o,mx_ovr)!lat index of overlap input cell    real(r8), intent(out):: wovr_i2o(nlon_o,nlat_o,mx_ovr)!weight    of overlap input cell! --------------------------------------------------------------------! ------------------------ local variables ---------------------------    real(r8),allocatable :: fld_o(:,:) !output grid: dummy field    real(r8),allocatable :: fld_i(:,:) !input grid: dummy field    real(r8) :: sum_fldo               !global sum of dummy output field    real(r8) :: sum_fldi               !global sum of dummy input field    real(r8) :: relerr = 0.00001       !relative error for error checks    integer  :: ii                     !input  grid longitude loop index    integer  :: ji                     !input  grid latitude  loop index    integer  :: io                     !output grid longitude loop index    integer  :: jo                     !output grid latitude  loop index    real(r8) :: dx_i                   !input grid  longitudinal range    real(r8) :: dy_i                   !input grid  latitudinal  range    real(r8) :: dx_o                   !output grid longitudinal range    real(r8) :: dy_o                   !output grid latitudinal  range! --------------------------------------------------------------------! Dynamically allocate memory    allocate (fld_o(nlon_o,nlat_o))    allocate (fld_i(nlon_i,nlat_i))! -----------------------------------------------------------------! Get indices and weights for mapping from input grid to output grid! -----------------------------------------------------------------    call areamap (nlon_i   , nlat_i   , nlon_o   , nlat_o   , &                  lon_i    , lat_i    , lon_o    , lat_o    , &                  numlon_i , numlon_o , mask_i   , mx_ovr   , &                  novr_i2o , iovr_i2o , jovr_i2o , wovr_i2o , &                  fland_o  , area_o   ) ! -----------------------------------------------------------------! Error check: global sum fld_o = global sum fld_i. ! This true only if both grids span the same domain. ! -----------------------------------------------------------------    dx_i = lon_i(nlon_i+1,1) - lon_i(1,1)    dx_o = lon_o(nlon_o+1,1) - lon_o(1,1)    if (lat_i(nlat_i+1) > lat_i(1)) then      !South to North grid       dy_i = lat_i(nlat_i+1) - lat_i(1)    else                                      !North to South grid       dy_i = lat_i(1) - lat_i(nlat_i+1)    end if    if (lat_o(nlat_o+1) > lat_o(1)) then      !South to North grid       dy_o = lat_o(nlat_o+1) - lat_o(1)    else                                      !North to South grid       dy_o = lat_o(1) - lat_o(nlat_o+1)    end if    if (abs(dx_i-dx_o)>relerr .or. abs(dy_i-dy_o)>relerr) then       write (6,*) 'AREAINI warning: conservation check not valid for'       write (6,*) '   input  grid of ',nlon_i,' x ',nlat_i       write (6,*) '   output grid of ',nlon_o,' x ',nlat_o       return    end if! make dummy input field and sum globally    sum_fldi = 0.    do ji = 1, nlat_i             do ii = 1, numlon_i(ji)          fld_i(ii,ji) = ((ji-1)*nlon_i + ii) * mask_i(ii,ji)          sum_fldi = sum_fldi + area_i(ii,ji)*fld_i(ii,ji)       end do    end do! area-average output field from input field    call areaave (nlat_i   , nlon_i   , numlon_i , fld_i , &                  nlat_o   , nlon_o   , numlon_o , fld_o , &                  iovr_i2o , jovr_i2o , wovr_i2o , mx_ovr )! global sum of output field -- must multiply by fraction of output! grid that is land as determined by input grid    sum_fldo = 0.    do jo = 1, nlat_o       do io = 1, numlon_o(jo)          sum_fldo = sum_fldo + area_o(io,jo)*fld_o(io,jo) * fland_o(io,jo)       end do    end do! check for conservation    if ( abs(sum_fldo/sum_fldi-1.) > relerr ) then       write (6,*) 'AREAINI error: input field not conserved'       write (6,'(a30,e20.10)') 'global sum output field = ',sum_fldo       write (6,'(a30,e20.10)') 'global sum input  field = ',sum_fldi       call endrun    end if    deallocate (fld_o)    deallocate (fld_i)    return  end subroutine areaini!=======================================================================  subroutine areaave (nlat_i , nlon_i , numlon_i, fld_i , &                      nlat_o , nlon_o , numlon_o, fld_o , &                      i_ovr  , j_ovr  , w_ovr   , nmax  )!----------------------------------------------------------------------- ! ! Purpose: ! area averaging of field from input to output grids!! Method: ! ! Author: Gordon Bonan! !-----------------------------------------------------------------------! ------------------------ arguments ---------------------------------    integer ,intent(in) :: nlat_i                    !input grid : number of latitude points          integer ,intent(in) :: nlon_i                    !input grid : max number longitude points        integer ,intent(in) :: numlon_i(nlat_i)          !input grid : number of lon points at each lat    real(r8),intent(in) :: fld_i(nlon_i,nlat_i)      !input grid : field    integer ,intent(in) :: nlat_o                    !output grid: number of latitude points          integer ,intent(in) :: nlon_o                    !output grid: max number of longitude points     integer ,intent(in) :: numlon_o(nlat_o)          !output grid: number of lon points at each lat    real(r8),intent(out):: fld_o(nlon_o,nlat_o)      !field for output grid    integer ,intent(in) :: nmax                      !input grid : max number of overlapping cells    integer ,intent(in) :: i_ovr(nlon_o,nlat_o,nmax) !lon index, overlapping input cell    integer ,intent(in) :: j_ovr(nlon_o,nlat_o,nmax) !lat index, overlapping input cell    real(r8),intent(in) :: w_ovr(nlon_o,nlat_o,nmax) !overlap weights for input cells! --------------------------------------------------------------------! ------------------- local variables -----------------------------    integer jo                !latitude index for output grid    integer io                !longitude index for output grid    integer ji                !latitude index for input grid    integer ii                !longitude index for input grid    integer n                 !overlapping cell index! -----------------------------------------------------------------! initialize field on output grid to zero everywhere!$OMP PARALLEL DO PRIVATE (jo,io)    do jo = 1, nlat_o       do io = 1, numlon_o(jo)          fld_o(io,jo) = 0.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品999在线播放| 韩国在线一区二区| 亚洲免费观看视频| 欧美韩日一区二区三区| 亚洲精品在线一区二区| 久久久99精品免费观看不卡| 久久嫩草精品久久久久| 久久久国产精品不卡| 中文文精品字幕一区二区| 欧美国产一区二区在线观看| 国产精品乱码久久久久久| 18涩涩午夜精品.www| 亚洲女爱视频在线| 亚洲一区影音先锋| 日韩电影在线一区| 国模套图日韩精品一区二区| 丰满亚洲少妇av| www.99精品| 在线亚洲一区观看| 欧美一区二区私人影院日本| 日韩美女视频在线| 国产欧美日本一区二区三区| 亚洲人成网站色在线观看| 亚洲综合色在线| 日韩1区2区日韩1区2区| 精品一区二区三区视频| av在线不卡免费看| 欧美日韩三级视频| 久久中文字幕电影| 亚洲精品福利视频网站| 亚洲免费伊人电影| 美女国产一区二区| 国产91对白在线观看九色| 成人97人人超碰人人99| 欧美性猛交一区二区三区精品| 91精品黄色片免费大全| 久久精品视频在线看| 亚洲黄色录像片| 久久99精品国产| 色婷婷综合久久久| 精品国产免费久久| 亚洲精品国产a| 国产在线视频不卡二| 一本大道av伊人久久综合| 欧美一区二区久久久| 国产精品国产成人国产三级 | 中文字幕一区二区三区色视频| 亚洲综合色视频| 精品亚洲成a人在线观看| 91小宝寻花一区二区三区| 制服丝袜日韩国产| 国产精品久久久一本精品| 天天综合色天天综合色h| 国产99一区视频免费| 欧美日韩免费电影| 国产精品系列在线| 免费久久99精品国产| 色哦色哦哦色天天综合| 日韩精品一区二区三区在线 | 成人免费毛片片v| 欧美伦理视频网站| 亚洲欧洲另类国产综合| 精品一区二区成人精品| 欧美日韩精品综合在线| ...av二区三区久久精品| 国产一区二区三区在线观看免费| 欧美日韩精品免费| ㊣最新国产の精品bt伙计久久| 麻豆一区二区三| 欧美在线色视频| 国产精品灌醉下药二区| 国产一区二区在线观看视频| 欧美剧在线免费观看网站| 自拍偷拍国产精品| 国产精品一区二区三区四区| 欧美精品tushy高清| 亚洲精品综合在线| 懂色av一区二区三区蜜臀| 精品国产一区二区三区四区四| 亚洲mv在线观看| 在线观看国产91| 国产精品成人在线观看| 国产精品18久久久久久久久| 日韩欧美中文字幕公布| 秋霞电影一区二区| 欧美乱妇15p| 午夜精品久久久久久久蜜桃app| 色婷婷激情一区二区三区| 国产精品二三区| 成人av综合在线| 亚洲国产成人在线| 国产乱码字幕精品高清av | 日日夜夜精品视频天天综合网| 91色乱码一区二区三区| 国产精品白丝在线| 成人一区二区在线观看| 国产欧美日本一区二区三区| 国产麻豆成人传媒免费观看| 精品蜜桃在线看| 精品一区二区三区在线视频| 精品国产三级电影在线观看| 看片网站欧美日韩| 亚洲精品一区二区三区四区高清| 蜜臀av一区二区在线免费观看 | 一区二区三区在线视频免费观看| 99免费精品在线| 亚洲免费在线看| 欧美吞精做爰啪啪高潮| 亚洲成av人在线观看| 欧美日韩国产片| 秋霞成人午夜伦在线观看| 精品少妇一区二区三区日产乱码| 久久精品国产一区二区三区免费看| 日韩一卡二卡三卡国产欧美| 美女在线视频一区| 精品国产99国产精品| 高清shemale亚洲人妖| 中文字幕av资源一区| 91免费看`日韩一区二区| 亚洲一卡二卡三卡四卡 | 国产精品九色蝌蚪自拍| 91网站最新网址| 亚洲资源中文字幕| 欧美日韩一卡二卡三卡| 奇米在线7777在线精品| 久久影视一区二区| av中文字幕亚洲| 亚洲精品欧美综合四区| 欧美久久久久久蜜桃| 精品亚洲成av人在线观看| 国产精品视频免费看| 一本色道综合亚洲| 日韩影院免费视频| 国产亚洲欧洲一区高清在线观看| av成人免费在线| 亚洲线精品一区二区三区八戒| 91麻豆精品91久久久久久清纯| 久久电影国产免费久久电影 | 国产成人精品免费看| 成人免费视频在线观看| 欧美久久久久久蜜桃| 国产另类ts人妖一区二区| 亚洲男帅同性gay1069| 91精品国产一区二区三区蜜臀| 国产成人高清在线| 亚洲国产中文字幕在线视频综合| 7777精品伊人久久久大香线蕉的| 黄网站免费久久| 亚洲免费视频中文字幕| 日韩美女视频一区二区在线观看| www.66久久| 精品一区二区三区在线视频| 亚洲精品视频免费看| 久久欧美中文字幕| 欧美亚洲禁片免费| 国产乱淫av一区二区三区| 亚洲一区在线观看视频| 国产欧美精品一区二区色综合| 色一区在线观看| 久久99国产精品久久99| 亚洲啪啪综合av一区二区三区| 精品国产乱码久久久久久老虎| 成人av网站在线| 美女视频免费一区| 一区二区激情视频| 国产精品三级电影| 欧美va亚洲va| 欧美色图激情小说| 成人国产精品免费观看| 麻豆freexxxx性91精品| 亚洲综合色婷婷| 亚洲视频在线一区观看| 久久蜜桃一区二区| 欧美日韩国产大片| 93久久精品日日躁夜夜躁欧美| 麻豆一区二区三| 午夜天堂影视香蕉久久| 国产精品传媒视频| 国产亚洲欧美日韩在线一区| 欧美一区日本一区韩国一区| 欧洲av一区二区嗯嗯嗯啊| 懂色av噜噜一区二区三区av| 精品亚洲成av人在线观看| 视频一区二区国产| 亚洲黄色av一区| 日韩伦理免费电影| 亚洲国产精品av| 国产三级精品视频| 精品国免费一区二区三区| 日韩一区二区精品在线观看| 欧美色男人天堂| 欧美三级视频在线| 91麻豆国产福利在线观看| 成人一二三区视频| 国产成人一区在线| 国产精品99久久久久久有的能看| 老司机精品视频在线| 麻豆一区二区在线| 九九在线精品视频| 老司机精品视频一区二区三区|