My Project
 All Classes Files Functions Variables Macros
geo2atm.F90
Go to the documentation of this file.
1 !
2 ! $Header: /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 'dimensions.h'
10  include 'YOMCST.h'
11 
12 ! Change wind coordinates from cartesian geocentric to local spherical
13 ! NB! Fonctionne probablement uniquement en MPI seul (sans OpenMP)
14 !
15  INTEGER, INTENT (IN) :: im, jm
16  REAL, DIMENSION (im,jm), INTENT(IN) :: px, py, pz
17  REAL, DIMENSION (im,jm), INTENT(IN) :: plon, plat
18  REAL, DIMENSION (im,jm), INTENT(OUT) :: pu, pv, pr
19 
20  REAL :: rad
21 
22 
23  rad = rpi / 180.0e0
24 
25  pu(:,:) = &
26  - px(:,:) * sin(rad * plon(:,:)) &
27  + py(:,:) * cos(rad * plon(:,:))
28 
29  pv(:,:) = &
30  - px(:,:) * sin(rad * plat(:,:)) * cos(rad * plon(:,:)) &
31  - py(:,:) * sin(rad * plat(:,:)) * sin(rad * plon(:,:)) &
32  + pz(:,:) * cos(rad * plat(:,:))
33 
34  pr(:,:) = &
35  + px(:,:) * cos(rad * plat(:,:)) * cos(rad * plon(:,:)) &
36  + py(:,:) * cos(rad * plat(:,:)) * sin(rad * plon(:,:)) &
37  + pz(:,:) * sin(rad * plat(:,:))
38 
39  ! Value at North Pole
40  IF (is_north_pole) THEN
41  pu(:, 1) = -px(1,1)
42  pv(:, 1) = -py(1,1)
43  pr(:, 1) = 0.0
44  ENDIF
45 
46  ! Value at South Pole
47  IF (is_south_pole) THEN
48  pu(:,jm) = -px(1,jm)
49  pv(:,jm) = -py(1,jm)
50  pr(:,jm) = 0.0
51  ENDIF
52 
53 END SUBROUTINE geo2atm