Changeset 202 for codes/icosagcm/trunk


Ignore:
Timestamp:
07/09/14 00:25:57 (10 years ago)
Author:
dubos
Message:

OpenMP fixes (not tested)

Location:
codes/icosagcm/trunk/src
Files:
3 edited

Legend:

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

    r195 r202  
    5555 
    5656    DO ind=1,ndomain 
     57       IF (.NOT. assigned_domain(ind)) CYCLE 
    5758       CALL swap_dimensions(ind) 
    5859       CALL swap_geometry(ind) 
  • codes/icosagcm/trunk/src/icosa_gcm.f90

    r186 r202  
    1212  USE xios_mod 
    1313  USE write_field 
    14   USE getin_mod 
     14!  USE getin_mod 
    1515  IMPLICIT NONE 
    1616   
    17   TYPE(t_field),POINTER,SAVE :: sum_ne(:) 
    18   TYPE(t_field),POINTER,SAVE :: sum_ne_glo(:) 
    19   REAL(rstd),POINTER :: pt_sum_ne(:) 
    20    
    21   INTEGER :: ind,i,j,k,n 
    22   REAL(rstd) :: tot_sum=0 
    23   REAL(rstd) :: vect(3,6) 
    24   REAL(rstd) :: centr(3),dist 
    25   
    2617  CALL init_mpipara 
    2718  CALL trace_off 
     
    3829!$OMP PARALLEL   
    3930  CALL compute_geometry 
     31  CALL check_total_area 
    4032   
    4133  CALL init_disvert  
    4234  CALL init_vertical_interp 
    4335 
    44   CALL allocate_field(sum_ne,field_T,type_real) 
    45    
    46 !$OMP BARRIER 
    47 !$OMP MASTER 
    48   DO ind=1,ndomain 
    49       
    50     pt_sum_ne=sum_ne(ind) 
    51       
    52     CALL swap_dimensions(ind) 
    53     CALL swap_geometry(ind) 
    54      
    55     DO j=jj_begin,jj_end 
    56       DO i=ii_begin,ii_end 
    57         n=(j-1)*iim+i 
    58         pt_sum_ne(n)=0 
    59         DO k=1,6 
    60           pt_sum_ne(n)=pt_sum_ne(n)+ne(n,k) 
    61         ENDDO 
    62         IF (domain(ind)%own(i,j)) tot_sum=tot_sum+Ai(n) 
    63       ENDDO 
    64     ENDDO 
    65   ENDDO 
    66    
    67   IF (is_mpi_root) PRINT *," Diff surf",1-tot_sum/(4*Pi*radius*radius) 
    68 !$OMP END MASTER 
    69  
    70   
    7136  CALL WriteField("Ai",geom%Ai) 
    7237   
     
    7641  CALL output_field_init 
    7742  CALL init_timeloop 
    78  
    79  
     43   
    8044  CALL timeloop 
    8145 
     
    8650  CALL close_time_counter 
    8751  CALL finalize_mpipara 
     52 
     53CONTAINS 
    8854   
    89 END PROGRAM ICOSA_gcm  
     55  SUBROUTINE check_total_area 
     56    IMPLICIT NONE 
     57    TYPE(t_field),POINTER,SAVE :: sum_ne(:) 
     58    TYPE(t_field),POINTER,SAVE :: sum_ne_glo(:) 
     59    REAL(rstd),POINTER :: pt_sum_ne(:) 
     60     
     61    INTEGER :: ind,i,j,k,n 
     62    REAL(rstd) :: vect(3,6) 
     63    REAL(rstd) :: centr(3),dist     
     64    REAL(rstd) :: tot_sum=0 
     65    CALL allocate_field(sum_ne,field_T,type_real) 
     66     
     67    !$OMP BARRIER 
     68    !$OMP MASTER 
     69    DO ind=1,ndomain 
     70        
     71       pt_sum_ne=sum_ne(ind) 
     72        
     73       CALL swap_dimensions(ind) 
     74       CALL swap_geometry(ind) 
     75        
     76       DO j=jj_begin,jj_end 
     77          DO i=ii_begin,ii_end 
     78             n=(j-1)*iim+i 
     79             pt_sum_ne(n)=0 
     80             DO k=1,6 
     81                pt_sum_ne(n)=pt_sum_ne(n)+ne(n,k) 
     82             ENDDO 
     83             IF (domain(ind)%own(i,j)) tot_sum=tot_sum+Ai(n) 
     84          ENDDO 
     85       ENDDO 
     86    ENDDO 
     87     
     88    IF (is_mpi_root) PRINT *," Diff surf",1-tot_sum/(4*Pi*radius*radius) 
     89    !$OMP END MASTER 
     90     
     91  END SUBROUTINE check_total_area 
     92END PROGRAM ICOSA_gcm 
  • codes/icosagcm/trunk/src/timeloop_gcm.f90

    r200 r202  
    232232!!$OMP BARRIER 
    233233  DO ind=1,ndomain 
     234     IF (.NOT. assigned_domain(ind)) CYCLE 
    234235     CALL swap_dimensions(ind) 
    235236     CALL swap_geometry(ind) 
Note: See TracChangeset for help on using the changeset viewer.