NCEPLIBS-sp  2.5.0
spdz2uv.f File Reference

Compute winds from divergence and vorticity. More...

Go to the source code of this file.

Functions/Subroutines

subroutine spdz2uv (I, M, ENN1, ELONN1, EON, EONTOP, D, Z, U, V, UTOP, VTOP)
 Computes the wind components from divergence and vorticity in spectral space. More...
 

Detailed Description

Compute winds from divergence and vorticity.

Author
Iredell
Date
92-10-31

Definition in file spdz2uv.f.

Function/Subroutine Documentation

◆ spdz2uv()

subroutine spdz2uv (   I,
  M,
real, dimension((m+1)*((i+1)*m+2)/2)  ENN1,
real, dimension((m+1)*((i+1)*m+2)/2)  ELONN1,
real, dimension((m+1)*((i+1)*m+2)/2)  EON,
real, dimension(m+1)  EONTOP,
real, dimension((m+1)*((i+1)*m+2))  D,
real, dimension((m+1)*((i+1)*m+2))  Z,
real, dimension((m+1)*((i+1)*m+2))  U,
real, dimension((m+1)*((i+1)*m+2))  V,
real, dimension(2*(m+1))  UTOP,
real, dimension(2*(m+1))  VTOP 
)

Computes the wind components from divergence and vorticity in spectral space.

Subprogram speps() should be called already.

If L is the zonal wavenumber, N is the total wavenumber,

      
 EPS(L,N) = SQRT((N**2-L**2)/(4*N**2-1))
 

a
nd A is earth radius, then the zonal wind component U is computed as

 U(L,N)=-I*L/(N*(N+1))*A*D(L,N)
 +EPS(L,N+1)/(N+1)*A*Z(L,N+1)-EPS(L,N)/N*A*Z(L,N-1)
 

and the meridional wind component V is computed as

 V(L,N)=-I*L/(N*(N+1))*A*Z(L,N)
 -EPS(L,N+1)/(N+1)*A*D(L,N+1)+EPS(L,N)/N*A*D(L,N-1)
 

where D is divergence and Z is vorticity.

U and V are weighted by the cosine of latitude.

Cxtra terms are computed over top of the spectral domain.

Advantage is taken of the fact that EPS(L,L)=0 in order to vectorize over the entire spectral domain.

Parameters
Ispectral domain shape (0 for triangular, 1 for rhomboidal)
Mspectral truncation
ENN1((M+1)*((I+1)*M+2)/2) N*(N+1)/A**2
ELONN1((M+1)*((I+1)*M+2)/2) L/(N*(N+1))*A
EON((M+1)*((I+1)*M+2)/2) EPSILON/N*A
EONTOP(M+1) EPSILON/N*A OVER TOP
D((M+1)*((I+1)*M+2)) divergence
Z((M+1)*((I+1)*M+2)) vorticity
U((M+1)*((I+1)*M+2)) zonal wind (times coslat)
V((M+1)*((I+1)*M+2)) merid wind (times coslat)
UTOP(2*(M+1)) zonal wind (times coslat) over top
VTOP(2*(M+1)) merid wind (times coslat) over top
Author
Iredell
Date
92-10-31

Definition at line 48 of file spdz2uv.f.

Referenced by sptgpmv(), sptgpsv(), sptgptv(), sptgptvd(), and sptranfv().