<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div class="" style="word-wrap:break-word">Hi NCL users, 
<div class=""><br class="">
</div>
<div class="">I came up into something really weird unless I’m ignoring something really big, which is not likely. </div>
<div class=""><br class="">
</div>
<div class="">I’m trying to calculate the mass streamfunction (psistar) from the meridional velocity and when I’m integrating downwards (reversing the v wind array) from Top of the Atmosphere (TOA - 0.1hPa) to Bottom (1000hPa) the calculation yields some very
 realistic values and the proper structure. (Magnitude 10^9 Kg s-1). </div>
<div class=""><br class="">
</div>
<div class="">If I try to do that the other way round (from bottom-TOA) I’m getting a difference of 10^3 in the magnitude and not a very smooth structure and this is really counter intuitive. Any ideas If I’m doing something wrong?</div>
<div class=""><br class="">
</div>
<div class="">Attached is a snip of my script with the relevant part. Also two plots of both version to compare the differences.</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">; Constants </div>
<div class="">pi    = 4.*atan(1.)</div>
<div class="">r     = 6371*10^3   ; Earth Radius</div>
<div class="">g     = 9.81         ; m/s2 Gravity</div>
<div class="">d2rad = 0.017453  ; degrees to radians</div>
<div class=""><br class="">
</div>
<div class="">varname = "vstar"</div>
<div class=""><br class="">
</div>
<div class="">vstar = ff1->$varname$(0:599,:,:,0) ; normal array pressure levels (1000->01.hPa)</div>
<div class="">;vstar = vstar(:,::-1,:) ; uncomment if integrating from top -> bottom</div>
<div class=""><br class="">
</div>
<div class="">VSTAR = dim_avg_n_Wrap(vstar, 0) ; just a timemean</div>
<div class="">printVarSummary(VSTAR)</div>
<div class="">printMinMax(VSTAR,1)</div>
<div class=""><br class="">
</div>
<div class="">lat = VSTAR&lat</div>
<div class="">lev = VSTAR&lev</div>
<div class=""><br class="">
</div>
<div class="">nlev = dimsizes(lev)</div>
<div class="">nlat = dimsizes(lat)</div>
<div class=""><br class="">
</div>
<div class="">dp = new(nlev,typeof(lev))</div>
<div class="">do k = 0,nlev-1</div>
<div class="">  if (k .eq. 0) then</div>
<div class="">    dp(k) = lev(k)*100</div>
<div class="">  else</div>
<div class="">    dp(k) = abs((lev(k)-lev(k-1))*100)</div>
<div class="">  end if</div>
<div class="">end do</div>
<div class=""><br class="">
</div>
<div class="">COSLAT = new(nlat,typeof(lat))</div>
<div class="">do j = 0, nlat-1</div>
<div class="">  COSLAT(j) = cos(lat(j)*d2rad)</div>
<div class="">end do</div>
<div class="">print(COSLAT)</div>
<div class=""><br class="">
</div>
<div class="">psistar   = new((/nlev,nlat/),"double")      ; allocate space</div>
<div class="">psistar!0 = "lev"</div>
<div class="">psistar!1 = "lat"</div>
<div class="">psistar&lev = lev</div>
<div class="">psistar&lat = lat</div>
<div class=""><br class="">
</div>
<div class="">;********************************************************************************************************</div>
<div class="">; NOTE these two methods yield identical results, correct if lev axis is reversed. When not, integrating</div>
<div class="">; bottom to the top yields unrealistic results with both formulations</div>
<div class=""><br class="">
</div>
<div class="">; #1 Method</div>
<div class="">do j = 0, nlat-1</div>
<div class="">  do k = 1, nlev-1 </div>
<div class="">    psistar(0,:) = 0</div>
<div class="">    if (k .eq. 0) then</div>
<div class="">      psistar(k,j) = 2*pi*r*COSLAT(j)*(VSTAR(k,j)*dp(k))/g</div>
<div class="">    else if (k .gt. 0)</div>
<div class="">      psistar(k,j) = psistar(k-1,j) + (2*pi*r*COSLAT(j)*(VSTAR(k,j)*dp(k)))/g</div>
<div class="">    end if</div>
<div class="">  end if</div>
<div class="">end do</div>
<div class="">end do</div>
<div class=""><br class="">
</div>
<div class="">; #2 Method</div>
<div class="">;do j = 0, nlat-1</div>
<div class="">;  do k = 0 , nlev-1</div>
<div class="">;    ;psistar(0,j) = 0</div>
<div class="">;    psistar(k,j) = 2*pi*r*COSLAT(j)*dim_sum(VSTAR(0:k,j)*dp(0:k))/g</div>
<div class="">;    psistar(0,j) = 0</div>
<div class="">;    ;psistar(nlev-1,j) = 0 </div>
<div class="">;  end do</div>
<div class="">;end do</div>
<div class=""><br class="">
</div>
<div class="">;***********************************************************************************************************</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class=""></div>
</div>
</div>
<div style="word-wrap:break-word">
<div>
<div></div>
</div>
</div>
<div class="" style="word-wrap:break-word">
<div class="">
<div class=""></div>
<div class=""><br class="">
</div>
<div class="">Cheers,</div>
<div class="">Andreas</div>
<div class="">
<div class="" style="color:rgb(0,0,0); letter-spacing:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px; word-wrap:break-word">
<div class="" style="color:rgb(0,0,0); letter-spacing:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px; word-wrap:break-word">
<div class="" style="color:rgb(0,0,0); letter-spacing:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px; word-wrap:break-word">
<div class="" style="color:rgb(0,0,0); letter-spacing:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px; word-wrap:break-word">
<div class="" style="color:rgb(0,0,0); letter-spacing:normal; orphans:auto; text-align:start; text-indent:0px; text-transform:none; white-space:normal; widows:auto; word-spacing:0px; word-wrap:break-word">
<div class=""><br class="">
</div>
<div class=""></div>
</div>
</div>
</div>
</div>
</div>
</div>
<br class="">
</div>
</div>
</body>
</html>