zonal_mpsi_Wrap

zonal mean meridonal stream 함수를 계산합니다. 메타데이터는 유지됩니다.

 

프로토타입

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"

	function zonal_mpsi_Wrap (
		v       : numeric,  
		lat [*] : numeric,  
		p   [*] : numeric,  
		ps      : numeric   
	)

	return_val [(time),lev,lat] :  numeric

 

인수

v

meridional 바람값의 다차원자료에서 가장 오른쪽에 3개의 차원은 반드시 고도,위도,경도여야 합니다.

예제 [v(고도,위도,경도),v(시간,고도,위도,경도)]

단위는 m/s여야하며, 고도에 대한 차원의 경우 위에서 아래로 이루어져야 합니다.

lat

 

위도에 대한 일차원 배열입니다. 규모는 v에 있는 위도차원 규모와 같아야합니다.

p

위에서 아래로 되어진 기압값의 일차원배열입니다. 규모는 v에 있는 고도 차원규모와 같아야합니다. 단위는 Pa(파스칼) 단위여야 하며, 첫번째 값은 500 pa(5mb) 보다 커야합니다. 그리고 마지막 값은 100500 Pa(1005mb).보다 작아야 합니다

(예제 500 < p(0) < p(1) < ... < 100500.)

ps

표면기압의 다차원 수치배열입니다. 규모는 v의 차원 규모와 동일해야 합니다. 보통 ps는 고도차원을 제외한 모든 것이 v에 대응합니다. 단위는 Pa이여 합니다.

 

반환 값

 

가장 오른쪽 두개의 차원은 고도와 위도가 되는 다차원 수치배열입니다. 고도차원은 위에서 아래로 입니다. 누락값(return_val@_FillValue)은 v 아래에 발생하는 위치에 할당됩니다. 단위는 kg/s 입니다.

 

설명

CESM 프로세서 zonal mean meridional stream 함수의 수정된 정의를 사용하여 zonal mean meridional stream 함수를 계산합니다. 변경된 정의는 다음과 같습니다.

                                            / PS
                                            |
                            2 pi a cos(lat) |   
   ZONAL_MPSI(lev,lat)  =   --------------- |  V(lev,lat) dp
                                  g         |
                                            |
                                            / p

 

V 는  zonal mean meridional wind (입력된 v 값을 이용하여 내부적으로 계산), p 압력e, PS 지표압력, 지구반경, 그리고 g 중력가속도로 이루어집니다.

Buja, L. E. (1994) 
CCM Processor User's Guide(Unicos Version). 
NCAR Technical Note NCAR/TN-384+IA, 
pages B-17 to B-18.
메타데이터를 유지하는 방법을 제외한 나머지 기능은 내장함수 zonal_mpsi와 동일합니다.

 

예제

 

예제 1

v는 고도,위도,경도 차원의 배열이고 lat과 p는 각각 위도와 고도에 대응하는 하나의 차원인 배열입니다. p와 v의 고도차원은 위에서 아래로 되어있습니다. (i.e. p(0) < p(1) < p(2) ...) 단위는 p와 ps 모두 Pa입니다.(만약 mb라면 100을 곱하도록 합니다.)

    zmpsi = zonal_mpsi_Wrap(v,lat,p,ps) 
;   returns zmpsi(klev,nlat)

 

v에 대한 좌표 변수가 올바른 순서에 있다면 v와 연관된 일차원 배열 좌표를 다음과 같은 방법으로 직접 연결 할 수 있다.

    zmpsi = zonal_mpsi_Wrap(v,v&lat,v&lev,ps)   

v에 대한 좌표 변수가 잘못된 순서로 있다면(예를 들어 아래에서 위로), 다음과 같음 방법을 이용하여 호출시 정렬 할 수 있습니다.

    zmpsi = zonal_mpsi_Wrap(v(::-1,:,:),v&lat,v&lev(::-1),ps)

 

예제 2

만약 v에 시간 차원이 있다면 앞에 시간이 추가되며 다른차원은 1과 동일하게 나옵니다.

    zmpsi = zonal_mpsi_Wrap(v,lat,p,ps)   
;   returns zmpsi(ntim,klev,nlat)

 

예제 3

다음은 v 와 p가 아래에서 위로 되어있는 경우 정렬이 필요합니다. 또한 p와 ps가 mb인 경우 반드시 Pa로 변환해줘야 합니다.

vt2b = v(:,::-1,:,:) ; reverse the "lev" order to top-to-bottom pPa = p(::-1)*100. ; reverse and make Pa psPa = ps*100. ; make Pa zmpsi = zonal_mpsi_Wrap(vt2b,lat,pPa,psPa) ; zmpsi(ntim,klev,nlat)

도는, 필요한 변환은 함수 호출시 가능합니다. 

    zmpsi = zonal_mpsi_Wrap(v(:,::-1,:,:),lat,p(::-1)*100.,ps*100.)   
예제 4 
v의 고도차원은 zonal_mpsi_Wrap함수가 사용되기 이전에 반드시 압력좌표로 변환되어야 합니다.
; vinth2p requires the lev_p to be expressed in mb [hPa]
  lev_p           = (/  10, 20, 30, 50, 70,100,150,200,250
                     , 300,400,500,600,700,850,925,1000 /)                
  lev_p!0         = "lev_p"                  ; variable/dim name 
  lev_p&lev_p     =  lev_p                   ; create coordinate variable
  lev_p@long_name = "pressure"               ; attach some attributes
  lev_p@units     = "hPa"
  lev_p@positive  = "down"

  hyam            = f->hyam         ; read from file
  hybm            = f->hybm
  P0mb            = f->P0*0.01
  ps              = f->ps           ; these are in Pa
  v               = f->V
; convert to pressure levels
  vp   = vinth2p(v,hyam,hybm,lev_p,ps,intyp,P0mb,1,False)
; calculate zonal meridional streamfunction
  zmpsi = zonal_mpsi_Wrap(vp,lat,lev_p*100.,ps)   

원문주소 : http://www.ncl.ucar.edu/Document/Functions/Contributed/zonal_mpsi_Wrap.shtml

'NCL > 함수' 카테고리의 다른 글

zonalAve  (0) 2013.12.08

+ Recent posts