GCC Code Coverage Report


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

Line Branch Exec Source
1 MODULE cfmip_point_locations
2 IMPLICIT NONE
3
4 CONTAINS
5
6 SUBROUTINE read_CFMIP_point_locations(npCFMIP, tab, lonCFMIP, latCFMIP)
7 IMPLICIT none
8 INTEGER :: npCFMIP
9 REAL, DIMENSION(npCFMIP) :: lonCFMIP, latCFMIP
10 INTEGER :: tab(npCFMIP), np
11
12 WRITE(*,*) 'npCFMIP=',npCFMIP
13 ! OPEN(20, file="pointlocations.txt",status='old')
14 OPEN(20, file="pointlocations.txt",status='old',err=999)
15 OPEN(21, file="pointlocations_lon180.txt")
16 np=1
17 10 READ(20,*) tab(np), lonCFMIP(np), latCFMIP(np)
18 !!! passage de 0-360 a -180/180
19 IF (lonCFMIP(np).GT.180.) THEN
20 lonCFMIP(np)=lonCFMIP(np)-360.
21 ENDIF
22 WRITE(21,*) np, lonCFMIP(np), latCFMIP(np)
23 np=np+1
24 IF(np.LE.npCFMIP) THEN
25 GOTO 10
26 ENDIF
27 CLOSE(20)
28 CLOSE(21)
29 999 RETURN
30 END SUBROUTINE read_CFMIP_point_locations
31
32 SUBROUTINE LMDZ_CFMIP_point_locations(npCFMIP, lonCFMIP, latCFMIP, &
33 tabijGCM, lonGCM, latGCM, ipt, jpt)
34 USE dimphy
35 USE iophy
36 USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat, klon_glo
37
38 IMPLICIT none
39 INTEGER :: npCFMIP
40 REAL, DIMENSION(npCFMIP) :: lonCFMIP, latCFMIP
41 INTEGER :: i, j, np, ip
42 INTEGER, DIMENSION(npCFMIP) :: ipt, jpt
43 REAL :: dlon1, dlon2
44 REAL :: dlat1, dlat2
45 REAL, DIMENSION(nbp_lon+1) :: lon
46 INTEGER, DIMENSION(npCFMIP) :: tabijGCM
47 REAL, DIMENSION(npCFMIP) :: lonGCM, latGCM
48
49 lon(1:nbp_lon)=io_lon(:)
50 lon(nbp_lon+1)=-1*lon(1)
51 OPEN(22, file="LMDZ_pointsCFMIP.txt")
52 DO np=1, npCFMIP
53 DO i=1, nbp_lon
54 !
55 ! PRINT*,'IM np i lonCF lonGCM lonGCM+1',np,i,lonCFMIP(np),lon(i), &
56 ! lon(i+1)
57 !
58 IF(lonCFMIP(np).GE.lon(i).AND.lonCFMIP(np).LT.lon(i+1)) THEN
59 dlon1 = abs (lonCFMIP(np) - lon(i))
60 dlon2 = abs (lonCFMIP(np) - lon(i+1))
61 IF (dlon1.LE.dlon2) THEN
62 ipt(np)=i
63 ELSE
64 ipt(np)=i+1
65 ENDIF
66 ENDIF
67 END DO
68 END DO
69 !
70 np=1
71 30 j=1
72 40 IF(latCFMIP(np).LE.io_lat(j).AND.latCFMIP(np).GE.io_lat(j+1)) THEN
73 dlat1 = abs (latCFMIP(np) - io_lat(j))
74 dlat2 = abs (latCFMIP(np) - io_lat(j+1))
75 IF (dlat1.LE.dlat2) THEN
76 jpt(np)=j
77 ELSE
78 jpt(np)=j+1
79 ENDIF
80 np=np+1
81 IF(np.LE.npCFMIP) THEN
82 GOTO 30
83 ENDIF
84 ELSE
85 j=j+1
86 IF(j.LE.nbp_lat-1) THEN
87 GOTO 40
88 ENDIF
89 ENDIF
90
91 DO np=1, npCFMIP
92 WRITE(22,*) lon(ipt(np)), io_lat(jpt(np))
93 ENDDO
94 CLOSE(22)
95
96 OPEN(23, file="pointsCFMIPvsLMDZ.txt")
97 DO ip=1, npCFMIP
98 lonGCM(ip)=lon(ipt(ip))
99 latGCM(ip)=io_lat(jpt(ip))
100 if(jpt(ip).GE.2.AND.jpt(ip).LE.nbp_lat-1) THEN
101 tabijGCM(ip)=1+(jpt(ip)-2)*nbp_lon+ipt(ip)
102 else if(jpt(ip).EQ.1) THEN
103 tabijGCM(ip)=1
104 else if(jpt(ip).EQ.nbp_lat) THEN
105 tabijGCM(ip)=klon_glo
106 else
107 print*,'ip jpt tabijGCM',ip,jpt(ip),tabijGCM(ip)
108 endif
109 ! PRINT*,'CFMIP ip lon lat tabijGCM',ip,lonGCM(ip),latGCM(ip),tabijGCM(ip)
110 ENDDO
111 DO ip=1, npCFMIP
112 if(lonGCM(ip).EQ.io_lon(1)) lonGCM(ip)=360.+lonGCM(ip)
113 ENDDO
114 DO i=1, npCFMIP
115 WRITE(23,*) i, lonCFMIP(i), latCFMIP(i), lonGCM(i), latGCM(i), tabijGCM(i)
116 ENDDO
117 CLOSE(23)
118 END SUBROUTINE LMDZ_CFMIP_point_locations
119
120 END MODULE CFMIP_point_locations
121