Changeset 1126 for LMDZ4/branches/LMDZ4_V3_patches
- Timestamp:
- Mar 17, 2009, 12:24:48 PM (16 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4_V3_patches/libf/phylmd/atm2geo.F90
r1125 r1126 2 2 ! $Header$ 3 3 ! 4 C 5 SUBROUTINE atm2geo ( im, jm, pte, ptn, plon, plat, pxx, pyy, pzz ) 6 USE dimphy 7 USE mod_phys_lmdz_para 8 IMPLICIT NONE 9 include 'dimensions.h' 10 cc 11 cc Change wind local atmospheric coordinates to 12 cc geocentric 13 cc 14 cxxx INCLUDE 'param.h' 15 c 16 INTEGER, INTENT (in) :: im, jm 17 REAL, DIMENSION (im,jm), INTENT (in) :: pte, ptn 18 REAL, DIMENSION (im,jm), INTENT (in) :: plon, plat 19 REAL, DIMENSION (im,jm), INTENT(out) :: pxx, pyy, pzz 20 c 21 REAL, PARAMETER :: rpi = 3.141592653E0 22 REAL, PARAMETER :: rad = rpi / 180.0E0 23 c 24 REAL, DIMENSION (im,jm) :: zsinlon, zcoslon 25 REAL, DIMENSION (im,jm) :: zsinlat, zcoslat 26 c 27 LOGICAL, SAVE :: linit = .FALSE. 28 c$OMP THREADPRIVATE(linit) 4 SUBROUTINE atm2geo ( im, jm, pte, ptn, plon, plat, pxx, pyy, pzz ) 5 USE dimphy 6 USE mod_phys_lmdz_para 7 IMPLICIT NONE 8 INCLUDE 'dimensions.h' 9 INCLUDE 'YOMCST.h' 10 ! 11 ! Change wind local atmospheric coordinates to geocentric 12 ! 13 INTEGER, INTENT (in) :: im, jm 14 REAL, DIMENSION (im,jm), INTENT (in) :: pte, ptn 15 REAL, DIMENSION (im,jm), INTENT (in) :: plon, plat 16 REAL, DIMENSION (im,jm), INTENT(out) :: pxx, pyy, pzz 17 18 REAL :: rad 29 19 30 cym utilise pour le couple, ne fonctionne que en MPI seul31 c32 cxxx IF ( .NOT. linit ) THEN33 zsinlon = SIN (rad * plon)34 zcoslon = COS (rad * plon)35 zsinlat = SIN (rad * plat)36 zcoslat = COS (rad * plat)37 linit = .TRUE.38 cxxx ENDIF39 c40 pxx = - zsinlon * pte - zsinlat * zcoslon * ptn41 pyy = zcoslon * pte - zsinlat * zsinlon * ptn42 pzz = zcoslat * ptn43 20 44 c 45 c Value at North Pole 46 IF (is_north_pole) THEN 47 pxx ( :, 1) = - ptn ( 1, 1) 48 pyy ( :, 1) = - pte ( 1, 1) 49 pzz ( :, 1) = 0.0 50 ENDIF 51 c Value at South Pole 52 53 IF (is_south_pole) THEN 54 pxx ( :, jm) = + ptn ( 1, jm) 55 pyy ( :, jm) = + pte ( 1, jm) 56 pzz ( :, jm) = 0.0 57 ENDIF 58 59 RETURN 60 END SUBROUTINE atm2geo 21 rad = rpi / 180.0E0 22 23 pxx(:,:) = & 24 - pte(:,:) * SIN(rad * plon(:,:)) & 25 - ptn(:,:) * SIN(rad * plat(:,:)) * COS(rad * plon(:,:)) 26 27 pyy(:,:) = & 28 + pte(:,:) * COS(rad * plon(:,:)) & 29 - ptn(:,:) * SIN(rad * plat(:,:)) * SIN(rad * plon(:,:)) 30 31 pzz(:,:) = & 32 + ptn(:,:) * COS(rad * plat (:,:)) 33 34 ! Value at North Pole 35 IF (is_north_pole) THEN 36 pxx(:, 1) = pxx(1,1) 37 pyy(:, 1) = pyy(1,1) 38 pzz(:, 1) = pzz(1,1) 39 ENDIF 40 41 ! Value at South Pole 42 IF (is_south_pole) THEN 43 pxx(:,jm) = pxx(1,jm) 44 pyy(:,jm) = pyy(1,jm) 45 pzz(:,jm) = pzz(1,jm) 46 ENDIF 47 48 END SUBROUTINE atm2geo
Note: See TracChangeset
for help on using the changeset viewer.