Changeset 186 for codes/icosagcm/trunk/src/geometry.f90
- Timestamp:
- 01/09/14 09:56:11 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/geometry.f90
r155 r186 25 25 END TYPE t_geometry 26 26 27 TYPE(t_geometry),TARGET :: geom 27 TYPE(t_geometry),SAVE,TARGET :: geom 28 28 29 29 30 REAL(rstd),POINTER :: Ai(:) ! area of a cell 31 !$OMP THREADPRIVATE(Ai) 30 32 REAL(rstd),POINTER :: xyz_i(:,:) ! coordinate of the center of the cell (voronoi) 33 !$OMP THREADPRIVATE(xyz_i) 31 34 REAL(rstd),POINTER :: centroid(:,:) ! coordinate of the centroid of the cell 35 !$OMP THREADPRIVATE(centroid) 32 36 REAL(rstd),POINTER :: xyz_e(:,:) ! coordinate of a wind point on the cell on a edge 37 !$OMP THREADPRIVATE(xyz_e) 33 38 REAL(rstd),POINTER :: ep_e(:,:) ! perpendicular unit vector of a edge (outsider) 39 !$OMP THREADPRIVATE(ep_e) 34 40 REAL(rstd),POINTER :: et_e(:,:) ! tangeantial unit vector of a edge 41 !$OMP THREADPRIVATE(et_e) 35 42 REAL(rstd),POINTER :: elon_i(:,:) ! unit longitude vector on the center 43 !$OMP THREADPRIVATE(elon_i) 36 44 REAL(rstd),POINTER :: elat_i(:,:) ! unit latitude vector on the center 45 !$OMP THREADPRIVATE(elat_i) 37 46 REAL(rstd),POINTER :: elon_e(:,:) ! unit longitude vector on a wind point 47 !$OMP THREADPRIVATE(elon_e) 38 48 REAL(rstd),POINTER :: elat_e(:,:) ! unit latitude vector on a wind point 49 !$OMP THREADPRIVATE(elat_e) 39 50 REAL(rstd),POINTER :: xyz_v(:,:) ! coordinate of a vertex (center of the dual mesh) 51 !$OMP THREADPRIVATE(xyz_v) 40 52 REAL(rstd),POINTER :: Av(:) ! area of dual mesk cell 53 !$OMP THREADPRIVATE(Av) 41 54 REAL(rstd),POINTER :: de(:) ! distance from a neighbour == lenght of an edge of the dual mesh 55 !$OMP THREADPRIVATE(de) 42 56 REAL(rstd),POINTER :: le(:) ! lenght of a edge 57 !$OMP THREADPRIVATE(le) 43 58 REAL(rstd),POINTER :: Riv(:,:) ! weight 59 !$OMP THREADPRIVATE(Riv) 44 60 REAL(rstd),POINTER :: Riv2(:,:) ! weight 61 !$OMP THREADPRIVATE(Riv2) 45 62 INTEGER,POINTER :: ne(:,:) ! convention for the way on the normal wind on an edge 63 !$OMP THREADPRIVATE(ne) 46 64 REAL(rstd),POINTER :: Wee(:,:,:) ! weight 65 !$OMP THREADPRIVATE(Wee) 47 66 REAL(rstd),POINTER :: bi(:) ! orographie 67 !$OMP THREADPRIVATE(bi) 48 68 REAL(rstd),POINTER :: fv(:) ! coriolis (evaluted on a vertex) 69 !$OMP THREADPRIVATE(fv) 49 70 50 71 … … 91 112 IMPLICIT NONE 92 113 INTEGER,INTENT(IN) :: ind 93 ! $OMP MASTER114 !!$OMP MASTER 94 115 Ai=geom%Ai(ind) 95 116 xyz_i=geom%xyz_i(ind) … … 112 133 bi=geom%bi(ind) 113 134 fv=geom%fv(ind) 114 ! $OMP END MASTER115 ! $OMP BARRIER135 !!$OMP END MASTER 136 !!$OMP BARRIER 116 137 END SUBROUTINE swap_geometry 117 138 … … 127 148 REAL(rstd) :: vect(3,6) 128 149 REAL(rstd) :: centr(3) 129 130 150 INTEGER :: ind,i,j,n,k 131 132 CALL transfert_request(geom%xyz_i,req_i1) 151 TYPE(t_message),SAVE :: message 152 LOGICAL, SAVE :: first=.TRUE. 153 !$OMP THREADPRIVATE(first) 154 155 IF (first) THEN 156 CALL init_message(geom%xyz_i, req_i1 ,message) 157 first=.FALSE. 158 ENDIF 159 160 CALL transfert_message(geom%xyz_i,message) 161 162 163 ! CALL transfert_request(geom%xyz_i,req_i1) 133 164 134 165 DO ind=1,ndomain 166 IF (.NOT. assigned_domain(ind)) CYCLE 135 167 CALL swap_dimensions(ind) 136 168 CALL swap_geometry(ind) … … 157 189 USE transfert_mod 158 190 USE vector 159 USE ioipsl191 USE getin_mod 160 192 IMPLICIT NONE 161 193 INTEGER :: nb_it=0 … … 172 204 173 205 DO ind=1,ndomain 206 IF (.NOT. assigned_domain(ind)) CYCLE 174 207 d=>domain(ind) 175 208 CALL swap_dimensions(ind) … … 186 219 187 220 DO ind=1,ndomain 221 IF (.NOT. assigned_domain(ind)) CYCLE 188 222 d=>domain(ind) 189 223 CALL swap_dimensions(ind) … … 215 249 sum=0 216 250 DO ind=1,ndomain 251 IF (.NOT. assigned_domain(ind)) CYCLE 217 252 CALL swap_dimensions(ind) 218 253 CALL swap_geometry(ind) … … 253 288 USE dimensions 254 289 USE transfert_mod 255 USE ioipsl290 USE getin_mod 256 291 IMPLICIT NONE 257 292 … … 273 308 274 309 DO ind=1,ndomain 310 IF (.NOT. assigned_domain(ind)) CYCLE 275 311 d=>domain(ind) 276 312 CALL swap_dimensions(ind) … … 489 525 490 526 ENDDO 527 491 528 CALL transfert_request(geom%Ai,req_i1) 492 529 CALL transfert_request(geom%centroid,req_i1) 530 493 531 CALL surf_triangle(d%xyz(:,ii_begin,jj_begin),d%xyz(:,ii_begin,jj_end),d%xyz(:,ii_end,jj_begin),S) 494 532
Note: See TracChangeset
for help on using the changeset viewer.