Ignore:
Timestamp:
08/22/18 17:28:01 (6 years ago)
Author:
dubos
Message:

devel : backported from trunk commits r707-r711,r713

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/parallel/domain.f90

    r533 r726  
    2525    INTEGER,POINTER  :: edge_assign_pos(:,:,:) 
    2626    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(:,:,:) 
    2731    REAL,POINTER     :: xyz(:,:,:) 
    2832    REAL,POINTER     :: neighbour(:,:,:,:) 
     
    151155          ALLOCATE(d%edge_assign_pos(0:5,d%iim,d%jjm)) 
    152156          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)) 
    153161          ALLOCATE(d%delta(d%iim,d%jjm)) 
    154162          ALLOCATE(d%xyz(3,d%iim,d%jjm)) 
     
    193201    d2%edge_assign_pos => d1%edge_assign_pos 
    194202    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 
    195207    d2%xyz => d1%xyz 
    196208    d2%neighbour => d1%neighbour 
     
    231243  USE metric 
    232244  IMPLICIT NONE 
    233     INTEGER :: ind_d,ind,ind2,e 
     245    INTEGER :: ind_d,ind,ind2,e,v 
    234246    INTEGER :: nf,nf2 
    235247    INTEGER :: i,j,k,ii,jj 
     
    258270          IF ( j-1 >= d%jj_begin ) CALL assign_edge(ind_d,ind,i,j,delta,4) 
    259271          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) 
    260279        ENDDO 
    261280      ENDDO 
     
    294313              d%edge_assign_sign(k,i,j)=-d%edge_assign_sign(k,i,j) 
    295314            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 
    296321              
    297322          ENDDO 
     
    318343      edge_glo(e)%assign_delta=delta 
    319344 
    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 
    321361          
    322   END SUBROUTINE assign_cell 
    323  
    324362  SUBROUTINE compute_boundary 
    325363  USE spherical_geom_mod 
Note: See TracChangeset for help on using the changeset viewer.