Reconstructs the field at from coefficients up to
LMAX. Identical to vsh_decomposition.f90's RECONSTRUCT.
the coefficient arrays' size).
(LMAX+1)**2.
Returns: Reconstructed field , complex
3-vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=i4), | intent(in) | :: | LMAX |
Maximum degree retained, (must match |
||
| complex(kind=dp), | intent(in) | :: | A_RAD((LMAX+1)**2) | |||
| complex(kind=dp), | intent(in) | :: | A_POL((LMAX+1)**2) | |||
| complex(kind=dp), | intent(in) | :: | A_TOR((LMAX+1)**2) | |||
| real(kind=dp), | intent(in) | :: | THETA |
Colatitude in radians, . |
||
| real(kind=dp), | intent(in) | :: | PHI |
Longitude in radians, . |
FUNCTION RECONSTRUCT(LMAX, A_RAD, A_POL, A_TOR, THETA, PHI) RESULT(F) IMPLICIT NONE INTEGER(KIND=i4), INTENT(IN) :: LMAX COMPLEX(KIND=dp), INTENT(IN) :: A_RAD((LMAX+1)**2) COMPLEX(KIND=dp), INTENT(IN) :: A_POL((LMAX+1)**2) COMPLEX(KIND=dp), INTENT(IN) :: A_TOR((LMAX+1)**2) REAL(KIND=dp), INTENT(IN) :: THETA REAL(KIND=dp), INTENT(IN) :: PHI COMPLEX(KIND=dp), DIMENSION(3) :: F COMPLEX(KIND=dp), ALLOCATABLE :: RADALL(:,:), POLALL(:,:), TORALL(:,:) INTEGER(KIND=i4) :: NYLM, IDX NYLM = (LMAX+1)**2 ALLOCATE(RADALL(3,NYLM), POLALL(3,NYLM), TORALL(3,NYLM)) CALL PVSH_RAD_ALL(RADALL, LMAX, THETA, PHI) CALL PVSH_POL_ALL(POLALL, LMAX, THETA, PHI) CALL PVSH_TOR_ALL(TORALL, LMAX, THETA, PHI) F = DCMPLX(0.d0, 0.d0) DO IDX = 1, NYLM F = F + A_RAD(IDX)*RADALL(:,IDX) + A_POL(IDX)*POLALL(:,IDX) & + A_TOR(IDX)*TORALL(:,IDX) ENDDO DEALLOCATE(RADALL, POLALL, TORALL) END FUNCTION RECONSTRUCT