NCEPLIBS-sp 2.4.0
|
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... | |
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.
I | spectral domain shape (0 for triangular, 1 for rhomboidal) |
M | spectral 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 |
Definition at line 48 of file spdz2uv.f.
Referenced by sptgpmv(), sptgpsv(), sptgptv(), sptgptvd(), and sptranfv().