GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: phy_common/geometry_mod.F90 Lines: 24 24 100.0 %
Date: 2023-06-30 12:51:15 Branches: 60 96 62.5 %

Line Branch Exec Source
1
MODULE geometry_mod
2
3
! Store informations concerning the local (to MPI/OpenMP core) geometry
4
5
  REAL,SAVE,ALLOCATABLE :: longitude(:) ! longitude of the cell (rad)
6
!$OMP THREADPRIVATE(longitude)
7
8
  REAL,SAVE,ALLOCATABLE :: latitude(:)! latitude of the cell (rad)
9
!$OMP THREADPRIVATE(latitude)
10
11
  REAL,SAVE,ALLOCATABLE :: longitude_deg(:) ! longitude of the cell (degree)
12
!$OMP THREADPRIVATE(longitude_deg)
13
14
  REAL,SAVE,ALLOCATABLE :: latitude_deg(:)! latitude of the cell (degree)
15
!$OMP THREADPRIVATE(latitude_deg)
16
17
  REAL,SAVE,ALLOCATABLE :: boundslon(:,:)  ! boundaries of the cell (rad)
18
!$OMP THREADPRIVATE(boundslon)
19
20
  REAL,SAVE,ALLOCATABLE :: boundslat(:,:) ! boundaries of the cell (rad)
21
!$OMP THREADPRIVATE(boundslat)
22
23
  REAL,SAVE,ALLOCATABLE :: dx(:)      ! resolution of longitude cell (valid only for 2D grid)
24
!$OMP THREADPRIVATE(dx)
25
26
  REAL,SAVE,ALLOCATABLE :: dy(:)      ! resolution of latitude cell (valid only for 2D grid)
27
!$OMP THREADPRIVATE(dy)
28
29
  REAL,SAVE,ALLOCATABLE :: cell_area(:)      ! area of the cell
30
!$OMP THREADPRIVATE(cell_area)
31
32
  INTEGER,SAVE,ALLOCATABLE :: ind_cell_glo(:)      ! global indice of a local cell
33
!$OMP THREADPRIVATE(ind_cell_glo)
34
35
CONTAINS
36
37
2
  SUBROUTINE init_geometry(klon,longitude_,latitude_, &
38
1
                           boundslon_,boundslat_, &
39
3
                           cell_area_,ind_cell_glo_,dx_,dy_)
40
  USE mod_grid_phy_lmdz, ONLY: nvertex
41
  USE nrtype, ONLY : PI
42
  IMPLICIT NONE
43
    INTEGER,INTENT(IN) :: klon ! number of columns for this MPI/OpenMP domain
44
    REAL,INTENT(IN) :: longitude_(klon)
45
    REAL,INTENT(IN) :: latitude_(klon)
46
    REAL,INTENT(IN) :: boundslon_(klon,nvertex)
47
    REAL,INTENT(IN) :: boundslat_(klon,nvertex)
48
    REAL,INTENT(IN) :: cell_area_(klon)
49
    INTEGER,OPTIONAL,INTENT(IN) :: ind_cell_glo_(klon)
50
    REAL,OPTIONAL,INTENT(IN) :: dx_(klon)
51
    REAL,OPTIONAL,INTENT(IN) :: dy_(klon)
52
53

1
    ALLOCATE(longitude(klon))
54

1
    ALLOCATE(latitude(klon))
55

1
    ALLOCATE(longitude_deg(klon))
56

1
    ALLOCATE(latitude_deg(klon))
57


2
    ALLOCATE(boundslon(klon,nvertex))
58


2
    ALLOCATE(boundslat(klon,nvertex))
59

1
    ALLOCATE(cell_area(klon))
60


1
    IF (PRESENT(ind_cell_glo_)) ALLOCATE(ind_cell_glo(klon))
61

1
    IF (PRESENT(dx_)) ALLOCATE(dx(klon))
62

1
    IF (PRESENT(dy_))ALLOCATE(dy(klon))
63
64
995
    longitude(:) = longitude_(:)
65
995
    latitude(:) = latitude_(:)
66
995
    longitude_deg(:) = longitude(:)*180./PI
67
995
    latitude_deg(:) = latitude(:)*180./PI
68

3981
    boundslon(:,:) = boundslon_(:,:)
69

3981
    boundslat(:,:) = boundslat_(:,:)
70
995
    cell_area(:) = cell_area_(:)
71

995
    IF (PRESENT(ind_cell_glo_)) ind_cell_glo(:) = ind_cell_glo_(:)
72

995
    IF (PRESENT(dx_)) dx(:) = dx_(:)
73

995
    IF (PRESENT(dy_)) dy(:) = dy_(:)
74
75

3
  END SUBROUTINE init_geometry
76
77
78
END MODULE geometry_mod
79