LMDZ
geo2atm.F90
Go to the documentation of this file.
1 !
2 ! $Id: /home/cvsroot/LMDZ4/libf/phylmd/geo2atm.F90,v 1.1 2008-12-05 17:56:40 lsce Exp $
3 !
4 SUBROUTINE geo2atm(im, jm, px, py, pz, plon, plat, pu, pv, pr)
5  USE dimphy
7 
8  IMPLICIT NONE
9  include 'YOMCST.h'
10 
11 ! Change wind coordinates from cartesian geocentric to local spherical
12 ! NB! Fonctionne probablement uniquement en MPI seul (sans OpenMP)
13 !
14  INTEGER, INTENT (IN) :: im, jm
15  REAL, DIMENSION (im,jm), INTENT(IN) :: px, py, pz
16  REAL, DIMENSION (im,jm), INTENT(IN) :: plon, plat
17  REAL, DIMENSION (im,jm), INTENT(OUT) :: pu, pv, pr
18 
19  REAL :: rad
20 
21 
22  rad = rpi / 180.0e0
23 
24  pu(:,:) = &
25  - px(:,:) * sin(rad * plon(:,:)) &
26  + py(:,:) * cos(rad * plon(:,:))
27 
28  pv(:,:) = &
29  - px(:,:) * sin(rad * plat(:,:)) * cos(rad * plon(:,:)) &
30  - py(:,:) * sin(rad * plat(:,:)) * sin(rad * plon(:,:)) &
31  + pz(:,:) * cos(rad * plat(:,:))
32 
33  pr(:,:) = &
34  + px(:,:) * cos(rad * plat(:,:)) * cos(rad * plon(:,:)) &
35  + py(:,:) * cos(rad * plat(:,:)) * sin(rad * plon(:,:)) &
36  + pz(:,:) * sin(rad * plat(:,:))
37 
38  ! Value at North Pole
39  IF (is_north_pole) THEN
40  pu(:, 1) = -px(1,1)
41  pv(:, 1) = -py(1,1)
42  pr(:, 1) = 0.0
43  ENDIF
44 
45  ! Value at South Pole
46  IF (is_south_pole) THEN
47  pu(:,jm) = -px(1,jm)
48  pv(:,jm) = -py(1,jm)
49  pr(:,jm) = 0.0
50  ENDIF
51 
52 END SUBROUTINE geo2atm
Definition: dimphy.F90:1
subroutine geo2atm(im, jm, px, py, pz, plon, plat, pu, pv, pr)
Definition: geo2atm.F90:5