Ignore:
Timestamp:
10/13/17 16:00:58 (7 years ago)
Author:
dubos
Message:

trunk : upgrading to devel

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/initial/etat0.f90

    r548 r581  
    11MODULE etat0_mod 
    22  USE icosa 
     3  USE omp_para 
    34  IMPLICIT NONE          
    45  PRIVATE 
     
    1011 
    1112    PUBLIC :: etat0, init_etat0, etat0_type 
     13 
     14! Important notes for OpenMP 
     15! When etat0 is called, vertical OpenMP parallelism is deactivated.  
     16! Therefore only the omp_level_master thread must work, i.e. : 
     17!   !$OMP BARRIER 
     18!    DO ind=1,ndomain 
     19!      IF (.NOT. assigned_domain(ind) .OR. .NOT. is_omp_level_master) CYCLE 
     20!      ... 
     21!    END DO 
     22!   !$OMP BARRIER 
     23! There MUST be NO OMP BARRIER inside the DO-LOOP or any routine it calls. 
    1224 
    1325CONTAINS 
    1426   
    1527  SUBROUTINE init_etat0 
    16   USE etat0_database_mod, ONLY: init_etat0_database => init_etat0  
    17   USE etat0_start_file_mod, ONLY: init_etat0_start_file => init_etat0  
    18   USE etat0_heldsz_mod, ONLY: init_etat0_held_suarez => init_etat0  
    19   IMPLICIT NONE 
    20  
     28    USE etat0_database_mod, ONLY: init_etat0_database => init_etat0  
     29    USE etat0_start_file_mod, ONLY: init_etat0_start_file => init_etat0  
     30    USE etat0_heldsz_mod, ONLY: init_etat0_held_suarez => init_etat0  
     31     
    2132    CALL getin("etat0",etat0_type) 
    2233 
     
    7586    USE etat0_start_file_mod, ONLY : etat0_start_file=>etat0   
    7687 
    77     IMPLICIT NONE 
    7888    TYPE(t_field),POINTER :: f_ps(:) 
    7989    TYPE(t_field),POINTER :: f_mass(:) 
     
    160170    END SELECT 
    161171 
    162 !       !$OMP BARRIER 
    163172    IF(autoinit_mass) THEN 
    164173       DO ind=1,ndomain 
    165           IF (.NOT. assigned_domain(ind)) CYCLE 
     174          IF (.NOT. assigned_domain(ind) .OR. .NOT. is_omp_level_master) CYCLE 
    166175          CALL swap_dimensions(ind) 
    167176          CALL swap_geometry(ind) 
     
    175184  SUBROUTINE etat0_collocated(f_phis,f_ps,f_mass,f_theta_rhodz,f_u, f_geopot,f_W, f_q) 
    176185    USE theta2theta_rhodz_mod 
    177     IMPLICIT NONE 
    178186    TYPE(t_field),POINTER :: f_ps(:) 
    179187    TYPE(t_field),POINTER :: f_mass(:) 
     
    200208 
    201209    DO ind=1,ndomain 
    202       IF (.NOT. assigned_domain(ind)) CYCLE 
     210      IF (.NOT. assigned_domain(ind) .OR. .NOT. is_omp_level_master) CYCLE 
     211!      IF (.NOT. assigned_domain(ind)) CYCLE 
    203212      CALL swap_dimensions(ind) 
    204213      CALL swap_geometry(ind) 
     
    232241    USE exner_mod 
    233242    USE omp_para 
    234     IMPLICIT NONE 
    235243    REAL(rstd),INTENT(IN)  :: ps(iim*jjm) 
    236244    REAL(rstd),INTENT(IN)  :: temp(iim*jjm,llm) 
     
    248256    CALL compute_pression(ps,p,offset) 
    249257    ! flush p 
    250     !$OMP BARRIER 
    251258    DO    l    = ll_begin, ll_end 
    252259       DO j=jj_begin-offset,jj_end+offset 
     
    278285       ENDDO 
    279286    ENDDO 
    280     !$OMP BARRIER   
    281287  END SUBROUTINE compute_temperature2entropy 
    282288 
     
    296302    USE etat0_dcmip2016_cyclone_mod, ONLY : compute_dcmip2016_cyclone => compute_etat0 
    297303    USE etat0_dcmip2016_supercell_mod, ONLY : compute_dcmip2016_supercell => compute_etat0 
    298     IMPLICIT NONE 
    299304    REAL(rstd),INTENT(INOUT) :: ps(iim*jjm) 
    300305    REAL(rstd),INTENT(INOUT) :: mass(iim*jjm,llm) 
     
    328333    autoinit_NH = .NOT. hydrostatic 
    329334    w(:,:) = 0 
    330  
    331     !$OMP BARRIER 
    332335 
    333336    SELECT CASE (TRIM(etat0_type)) 
     
    391394    END IF 
    392395 
    393     !$OMP BARRIER 
    394  
    395396    CALL compute_wind_perp_from_lonlat_compound(ulon_e, ulat_e, u) 
    396397 
     
    405406 
    406407  SUBROUTINE compute_etat0_isothermal(ngrid, phis, ps, temp, ulon, ulat, q) 
    407     IMPLICIT NONE   
    408408    INTEGER, INTENT(IN)    :: ngrid 
    409409    REAL(rstd),INTENT(OUT) :: phis(ngrid) 
Note: See TracChangeset for help on using the changeset viewer.