GCC Code Coverage Report


Directory: ./
File: phys/atm2geo.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 19 0.0%
Branches: 0 54 0.0%

Line Branch Exec Source
1 !
2 ! $Id: atm2geo.F90 3465 2019-03-14 09:34:31Z fairhead $
3 !
4 SUBROUTINE atm2geo ( im, jm, pte, ptn, plon, plat, pxx, pyy, pzz )
5 USE dimphy
6 USE mod_phys_lmdz_para
7 USE mod_grid_phy_lmdz, only: grid_type, unstructured, regular_lonlat
8 IMPLICIT NONE
9 INCLUDE 'YOMCST.h'
10
11 CHARACTER (len = 6) :: clmodnam
12 CHARACTER (len = 20) :: modname = 'atm2geo'
13 CHARACTER (len = 80) :: abort_message
14
15 !
16 ! Change wind local atmospheric coordinates to geocentric
17 !
18 ! Geocentric :
19 ! axe x is eastward : crosses (0 N, 0 E) point.
20 ! axe y crosses (0 N, 90 E) point.
21 ! axe z is 'up' : crosses north pole
22 INTEGER, INTENT (in) :: im, jm
23 REAL, DIMENSION (im,jm), INTENT (in) :: pte ! Eastward vector component
24 REAL, DIMENSION (im,jm), INTENT (in) :: ptn ! Northward vector component
25 REAL, DIMENSION (im,jm), INTENT (in) :: plon, plat
26 REAL, DIMENSION (im,jm), INTENT(out) :: pxx, pyy, pzz ! Component in the geocentric referential
27 REAL :: rad, reps
28
29 rad = rpi / 180.0E0
30 reps = 1.0e-5
31
32 pxx(:,:) = &
33 - pte(:,:) * SIN(rad * plon(:,:)) &
34 - ptn(:,:) * SIN(rad * plat(:,:)) * COS(rad * plon(:,:))
35
36 pyy(:,:) = &
37 + pte(:,:) * COS(rad * plon(:,:)) &
38 - ptn(:,:) * SIN(rad * plat(:,:)) * SIN(rad * plon(:,:))
39
40 pzz(:,:) = &
41 + ptn(:,:) * COS(rad * plat (:,:))
42
43 IF (grid_type==regular_lonlat) THEN
44 ! Value at North Pole
45 IF (is_north_pole_dyn) THEN
46 pxx(:, 1) = - pte (1, 1)
47 pyy(:, 1) = - ptn (1, 1)
48 pzz(:, 1) = pzz(1,1) ! => 0
49 ENDIF
50
51 ! Value at South Pole
52 IF (is_south_pole_dyn) THEN
53 pxx(:,jm) = pxx(1,jm)
54 pyy(:,jm) = pyy(1,jm)
55 pzz(:,jm) = pzz(1,jm) ! => 0
56 ENDIF
57
58 ELSE IF (grid_type==unstructured) THEN
59 ! Pole nord pour Dynamico
60 WHERE ( plat(:,:) >= 90.0d+0-reps )
61 pxx (:,:) = -ptn (:,:)
62 pyy (:,:) = pte (:,:)
63 pzz (:,:) = 0.0e0
64 END WHERE
65
66 ELSE
67 abort_message='Problem: unknown grid type'
68 CALL abort_physic(modname,abort_message,1)
69 END IF
70
71
72 END SUBROUTINE atm2geo
73