Ignore:
Timestamp:
May 24, 2013, 11:52:12 AM (12 years ago)
Author:
Ehouarn Millour
Message:

IOIPSL routine getin is not threadsafe, so when running in OpenMP, it should be called by only one thread (and the result copied to other threads in the case of threadprivate variables).
EM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/phyaqua.F

    r1671 r1759  
    8989      integer, save::  read_climoz=0 ! read ozone climatology
    9090
    91 
     91! intermediate variables to use getin
     92      integer :: nbapp_rad_omp
     93      real :: co2_ppm_omp,solaire_omp
     94      logical :: alb_ocean_omp
     95      real :: rugos_omp
    9296!-------------------------------------------------------------------------
    9397!  declaration pour l'appel a phyredem
     
    160164         zcufi=1.
    161165         zcvfi=1.
    162       nbapp_rad=24
    163       CALL getin('nbapp_rad',nbapp_rad)
     166!$OMP MASTER
     167      nbapp_rad_omp=24
     168      CALL getin('nbapp_rad',nbapp_rad_omp)
     169!$OMP END MASTER
     170!$OMP BARRIER
     171      nbapp_rad=nbapp_rad_omp
    164172
    165173!---------------------------------------------------------------------
     
    168176! Initialisations des constantes
    169177! Ajouter les manquants dans planete.def... (albedo etc)
    170       co2_ppm=348.
    171       CALL getin('co2_ppm',co2_ppm)
    172       solaire=1365.
    173       CALL getin('solaire',solaire)
     178!$OMP MASTER
     179      co2_ppm_omp=348.
     180      CALL getin('co2_ppm',co2_ppm_omp)
     181      solaire_omp=1365.
     182      CALL getin('solaire',solaire_omp)
     183!      CALL getin('albedo',albedo) ! albedo is set below, depending on type_aqua
     184      alb_ocean_omp=.true.
     185      CALL getin('alb_ocean',alb_ocean_omp)
     186!$OMP END MASTER
     187!$OMP BARRIER
     188      co2_ppm=co2_ppm_omp
     189      solaire=solaire_omp
     190      alb_ocean=alb_ocean_omp
     191
    174192      radsol=0.
    175193      qsol_f=10.
    176 !      CALL getin('albedo',albedo) ! albedo is set below, depending on type_aqua
    177       alb_ocean=.true.
    178       CALL getin('alb_ocean',alb_ocean)
    179194
    180195c  Conditions aux limites:
     
    208223      endif
    209224
    210       CALL getin('rugos',rugos)
     225!$OMP MASTER
     226      rugos_omp=rugos
     227      CALL getin('rugos',rugos_omp)
     228!$OMP END MASTER
     229!$OMP BARRIER
     230      rugos=rugos_omp
    211231      zmasq(:)=pctsrf(:,is_oce)
    212232
Note: See TracChangeset for help on using the changeset viewer.