Changeset 726 for codes/icosagcm/devel/src/parallel/domain.f90
- Timestamp:
- 08/22/18 17:28:01 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/parallel/domain.f90
r533 r726 25 25 INTEGER,POINTER :: edge_assign_pos(:,:,:) 26 26 INTEGER,POINTER :: edge_assign_sign(:,:,:) 27 INTEGER,POINTER :: vertex_assign_domain(:,:,:) 28 INTEGER,POINTER :: vertex_assign_i(:,:,:) 29 INTEGER,POINTER :: vertex_assign_j(:,:,:) 30 INTEGER,POINTER :: vertex_assign_pos(:,:,:) 27 31 REAL,POINTER :: xyz(:,:,:) 28 32 REAL,POINTER :: neighbour(:,:,:,:) … … 151 155 ALLOCATE(d%edge_assign_pos(0:5,d%iim,d%jjm)) 152 156 ALLOCATE(d%edge_assign_sign(0:5,d%iim,d%jjm)) 157 ALLOCATE(d%vertex_assign_domain(0:5,d%iim,d%jjm)) 158 ALLOCATE(d%vertex_assign_i(0:5,d%iim,d%jjm)) 159 ALLOCATE(d%vertex_assign_j(0:5,d%iim,d%jjm)) 160 ALLOCATE(d%vertex_assign_pos(0:5,d%iim,d%jjm)) 153 161 ALLOCATE(d%delta(d%iim,d%jjm)) 154 162 ALLOCATE(d%xyz(3,d%iim,d%jjm)) … … 193 201 d2%edge_assign_pos => d1%edge_assign_pos 194 202 d2%edge_assign_sign => d1%edge_assign_sign 203 d2%vertex_assign_domain => d1%vertex_assign_domain 204 d2%vertex_assign_i => d1%vertex_assign_i 205 d2%vertex_assign_j => d1%vertex_assign_j 206 d2%vertex_assign_pos => d1%vertex_assign_pos 195 207 d2%xyz => d1%xyz 196 208 d2%neighbour => d1%neighbour … … 231 243 USE metric 232 244 IMPLICIT NONE 233 INTEGER :: ind_d,ind,ind2,e 245 INTEGER :: ind_d,ind,ind2,e,v 234 246 INTEGER :: nf,nf2 235 247 INTEGER :: i,j,k,ii,jj … … 258 270 IF ( j-1 >= d%jj_begin ) CALL assign_edge(ind_d,ind,i,j,delta,4) 259 271 IF ( i+1 <= d%ii_end .AND. j-1 >=d%jj_begin ) CALL assign_edge(ind_d,ind,i,j,delta,5) 272 273 IF ( i+1 <= d%ii_end .AND. j+1 <= d%jj_end) CALL assign_vertex(ind_d,ind,i,j,delta,0) 274 IF ( i-1 >= d%ii_begin .AND. j+1 <= d%jj_end) CALL assign_vertex(ind_d,ind,i,j,delta,1) 275 IF ( i-1 >= d%ii_begin .AND. j+1 <= d%jj_end) CALL assign_vertex(ind_d,ind,i,j,delta,2) 276 IF ( i-1 >= d%ii_begin .AND. j-1 >= d%jj_begin) CALL assign_vertex(ind_d,ind,i,j,delta,3) 277 IF ( i+1 <= d%ii_end .AND. j-1 >= d%jj_begin) CALL assign_vertex(ind_d,ind,i,j,delta,4) 278 IF ( i+1 <= d%ii_end .AND. j-1 >= d%jj_begin) CALL assign_vertex(ind_d,ind,i,j,delta,5) 260 279 ENDDO 261 280 ENDDO … … 294 313 d%edge_assign_sign(k,i,j)=-d%edge_assign_sign(k,i,j) 295 314 ENDIF 315 316 v=cell_glo(ind)%vertex(MOD(k+delta+6,6)) 317 d%vertex_assign_domain(k,i,j)=vertices_glo(v)%assign_domain 318 d%vertex_assign_i(k,i,j)=vertices_glo(v)%assign_i 319 d%vertex_assign_j(k,i,j)=vertices_glo(v)%assign_j 320 d%vertex_assign_pos(k,i,j)=vertices_glo(v)%assign_pos 296 321 297 322 ENDDO … … 318 343 edge_glo(e)%assign_delta=delta 319 344 320 END SUBROUTINE assign_edge 345 END SUBROUTINE assign_edge 346 347 SUBROUTINE assign_vertex(ind_d,ind,i,j,delta,k) 348 INTEGER :: ind_d,ind,i,j,delta,k 349 INTEGER :: e 350 351 e=cell_glo(ind)%vertex(MOD(k+delta+6,6)) 352 vertices_glo(e)%assign_domain=ind_d 353 vertices_glo(e)%assign_i=i 354 vertices_glo(e)%assign_j=j 355 vertices_glo(e)%assign_pos=k 356 vertices_glo(e)%assign_delta=delta 357 358 END SUBROUTINE assign_vertex 359 360 END SUBROUTINE assign_cell 321 361 322 END SUBROUTINE assign_cell323 324 362 SUBROUTINE compute_boundary 325 363 USE spherical_geom_mod
Note: See TracChangeset
for help on using the changeset viewer.