Changeset 477 for codes


Ignore:
Timestamp:
09/16/16 15:30:46 (8 years ago)
Author:
ymipsl
Message:

Checksum : manage field of type : field_U

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/checksum.f90

    r327 r477  
    1212  USE icosa 
    1313  IMPLICIT NONE 
    14     TYPE(t_field), POINTER :: field(:) 
     14    TYPE(t_field) :: field(:) 
     15 
    1516    INTEGER :: intval(2) 
    1617    INTEGER :: ind,i,j,ij,l,k 
     
    2526      CALL swap_geometry(ind) 
    2627        
    27       IF (field(ind)%ndim==2) THEN 
    28         DO j=jj_begin,jj_end 
    29            DO i=ii_begin,ii_end 
    30               ij=(j-1)*iim+i 
    31               IF (domain(ind)%own(i,j)) THEN 
    32                 intval=transfer(field(ind)%rval2d(ij),intval,2)   
    33                 tot_sum=tot_sum+intval(1)+intval(2) 
    34               ENDIF 
    35            ENDDO 
    36         ENDDO 
    37     
    38       ELSE IF (field(ind)%ndim==3) THEN 
    39          
    40         DO l=1,size(field(ind)%rval3d,2) 
     28      IF (field(ind)%field_type==field_T) THEN 
     29 
     30        IF (field(ind)%ndim==2) THEN 
    4131          DO j=jj_begin,jj_end 
    4232             DO i=ii_begin,ii_end 
    4333                ij=(j-1)*iim+i 
    4434                IF (domain(ind)%own(i,j)) THEN 
    45                   intval=transfer(field(ind)%rval3d(ij,l),intval,2)   
     35                  intval=transfer(field(ind)%rval2d(ij),intval,2)   
    4636                  tot_sum=tot_sum+intval(1)+intval(2) 
    4737                ENDIF 
    4838             ENDDO 
    4939          ENDDO 
    50         ENDDO 
    51  
    52       ELSE IF (field(ind)%ndim==4) THEN 
    53          
    54         DO k=1,size(field(ind)%rval4d,3) 
    55           DO l=1,size(field(ind)%rval4d,2) 
     40      
     41        ELSE IF (field(ind)%ndim==3) THEN 
     42           
     43          DO l=1,size(field(ind)%rval3d,2) 
    5644            DO j=jj_begin,jj_end 
    5745               DO i=ii_begin,ii_end 
    5846                  ij=(j-1)*iim+i 
    5947                  IF (domain(ind)%own(i,j)) THEN 
    60                     intval=transfer(field(ind)%rval4d(ij,l,k),intval,2)   
     48                    intval=transfer(field(ind)%rval3d(ij,l),intval,2)   
    6149                    tot_sum=tot_sum+intval(1)+intval(2) 
    6250                  ENDIF 
     
    6452            ENDDO 
    6553          ENDDO 
    66         ENDDO 
    67       
    68       ENDIF 
     54 
     55        ELSE IF (field(ind)%ndim==4) THEN 
     56           
     57          DO k=1,size(field(ind)%rval4d,3) 
     58            DO l=1,size(field(ind)%rval4d,2) 
     59              DO j=jj_begin,jj_end 
     60                 DO i=ii_begin,ii_end 
     61                    ij=(j-1)*iim+i 
     62                    IF (domain(ind)%own(i,j)) THEN 
     63                      intval=transfer(field(ind)%rval4d(ij,l,k),intval,2)   
     64                      tot_sum=tot_sum+intval(1)+intval(2) 
     65                    ENDIF 
     66                 ENDDO 
     67              ENDDO 
     68            ENDDO 
     69          ENDDO 
     70        
     71        ENDIF 
     72 
     73      ELSE IF (field(ind)%field_type==field_U) THEN 
     74 
     75        IF (field(ind)%ndim==2) THEN 
     76          DO j=jj_begin,jj_end 
     77             DO i=ii_begin,ii_end-1 
     78                ij=(j-1)*iim+i 
     79                intval=transfer(field(ind)%rval2d(ij+u_right),intval,2)   
     80                tot_sum=tot_sum+intval(1)+intval(2) 
     81             ENDDO 
     82          ENDDO 
     83 
     84          DO j=jj_begin,jj_end-1 
     85             DO i=ii_begin+1,ii_end 
     86                ij=(j-1)*iim+i 
     87                intval=transfer(field(ind)%rval2d(ij+u_lup),intval,2)   
     88                tot_sum=tot_sum+intval(1)+intval(2) 
     89             ENDDO 
     90          ENDDO 
     91     
     92          DO j=jj_begin+1,jj_end 
     93             DO i=ii_begin,ii_end 
     94                ij=(j-1)*iim+i 
     95                intval=transfer(field(ind)%rval2d(ij+u_ldown),intval,2)   
     96                tot_sum=tot_sum+intval(1)+intval(2) 
     97             ENDDO 
     98          ENDDO 
     99 
     100        ELSE IF (field(ind)%ndim==3) THEN 
     101           
     102          DO l=1,size(field(ind)%rval3d,2) 
     103          DO j=jj_begin,jj_end 
     104             DO i=ii_begin,ii_end-1 
     105                ij=(j-1)*iim+i 
     106                intval=transfer(field(ind)%rval3d(ij+u_right,l),intval,2)   
     107                tot_sum=tot_sum+intval(1)+intval(2) 
     108             ENDDO 
     109          ENDDO 
     110 
     111          DO j=jj_begin,jj_end-1 
     112             DO i=ii_begin+1,ii_end 
     113                ij=(j-1)*iim+i 
     114                intval=transfer(field(ind)%rval3d(ij+u_lup,l),intval,2)   
     115                tot_sum=tot_sum+intval(1)+intval(2) 
     116             ENDDO 
     117          ENDDO 
     118     
     119          DO j=jj_begin+1,jj_end 
     120             DO i=ii_begin,ii_end 
     121                ij=(j-1)*iim+i 
     122                intval=transfer(field(ind)%rval3d(ij+u_ldown,l),intval,2)   
     123                tot_sum=tot_sum+intval(1)+intval(2) 
     124             ENDDO 
     125          ENDDO 
     126          ENDDO 
     127 
     128         
     129        ENDIF 
     130     ENDIF 
     131 
    69132    ENDDO 
    70133!$OMP END MASTER 
Note: See TracChangeset for help on using the changeset viewer.