Ignore:
Timestamp:
Jan 18, 2022, 4:00:44 PM (3 years ago)
Author:
romain.vande
Message:

LMDZ_MARS RV : Open_MP; Correction for r2613 correct file is photolysis_mod
Reading files in parallel for PHOTOCHEMISTRY parametrisation (photochem = .true.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/aeronomars/photolysis_mod.F90

    r2489 r2614  
    77  integer, save :: nphot = 13             ! number of photolysis
    88                                          ! is incremented by +2 in calchim if deuterium chemisty)
     9
     10!$OMP THREADPRIVATE(nphot)
     11
    912  integer, parameter :: nabs  = 10        ! number of absorbing gases
    1013
     
    1417  integer, save :: mopt                   ! high-res/low-res switch
    1518
     19!$OMP THREADPRIVATE(mopt)
     20
    1621  real, dimension(nw), save :: wl, wc, wu ! lower, center, upper wavelength for each interval
     22
     23!$OMP THREADPRIVATE(wl, wc, wu)
    1724
    1825! solar flux
     
    4047  real, dimension(nw), save :: xshdo                                  ! hdo absorption cross-section (cm2)
    4148  real, dimension(nw), save :: albedo                                 ! surface albedo
     49
     50!$OMP THREADPRIVATE(f,xsco2_195, xsco2_295, xsco2_370,yieldco2,xso2_150, xso2_200, xso2_250, xso2_300,yieldo2,xso3_218, xso3_298,xsh2o,xsh2o2,xsho2,xsh2,yieldh2,xsno2, xsno2_220, xsno2_294,yldno2_248,yldno2_298)
     51!$OMP THREADPRIVATE(xsno,yieldno,xsn2,yieldn2,xshdo,albedo)
    4252
    4353contains
     
    362372
    363373      use datafile_mod, only: datadir
     374      USE mod_phys_lmdz_para, ONLY: is_master
     375      USE mod_phys_lmdz_transfert_para, ONLY: bcast
    364376
    365377      implicit none
     
    399411         fil = trim(datadir)//'/solar_fluxes/atlas3_thuillier_tuv.txt'
    400412         print*, 'solar flux : ', fil
     413
     414      if(is_master) then
     415
    401416         open(kin, file=fil, status='old', iostat=ierr)
    402417
     
    440455!           write(25,*) iw, wc(iw), f(iw)
    441456         ENDDO
     457
     458      endif !is_master
     459     call bcast(f)
    442460
    443461      end if
     
    717735
    718736      use datafile_mod, only: datadir
     737      USE mod_phys_lmdz_para, ONLY: is_master
     738      USE mod_phys_lmdz_transfert_para, ONLY: bcast
    719739
    720740      implicit none
     
    771791      print*, 'section efficace CO2 195K: ', fil
    772792
     793      if(is_master) then
     794
    773795      OPEN(UNIT=kin,FILE=fil,STATUS='old')
    774796      DO i = 1,11
     
    795817      END DO
    796818
     819      endif !is_master
     820
     821      call bcast(xsco2_195)
     822
    797823!     295K:
    798824
    799825      fil = trim(datadir)//'/cross_sections/co2_euv_uv_2018_295k.txt'
    800826      print*, 'section efficace CO2 295K: ', fil
     827
     828      if(is_master) then
    801829
    802830      OPEN(UNIT=kin,FILE=fil,STATUS='old')
     
    824852      END DO
    825853
     854      endif !is_master
     855
     856      call bcast(xsco2_295)
     857
    826858!     370K:
    827859
    828860      fil = trim(datadir)//'/cross_sections/co2_euv_uv_2018_370k.txt'
    829861      print*, 'section efficace CO2 370K: ', fil
     862
     863      if(is_master) then
    830864
    831865      OPEN(UNIT=kin,FILE=fil,STATUS='old')
     
    853887      END DO
    854888
     889      endif !is_master
     890
     891      call bcast(xsco2_370)
     892
    855893!     photodissociation yield:
    856894
    857895      fil = trim(datadir)//'/cross_sections/efdis_co2-o2_schunkandnagy2000.txt'
    858896      print*, 'photodissociation yield CO2: ', fil
     897
     898      if(is_master) then
    859899
    860900      OPEN(UNIT=kin,FILE=fil,STATUS='old')
     
    882922      ENDIF
    883923
     924      endif !is_master
     925
     926      call bcast(yieldco2)
     927
    884928!     DO l = 1, nw-1
    885929!        write(kout,*) wl(l), xsco2_195(l),
     
    908952
    909953      use datafile_mod, only: datadir
     954      USE mod_phys_lmdz_para, ONLY: is_master
     955      USE mod_phys_lmdz_transfert_para, ONLY: bcast
    910956
    911957      implicit none
     
    942988      fil = trim(datadir)//'/cross_sections/o2_composite_2018_150K.txt'
    943989      print*, 'section efficace O2 150K: ', fil
     990
     991      if(is_master) then
     992
    944993      open(kin, file=fil, status='old', iostat=ierr)
    945994
     
    9751024      ENDIF
    9761025
     1026      endif !is_master
     1027
     1028      call bcast(xso2_150)
     1029
    9771030      fil = trim(datadir)//'/cross_sections/o2_composite_2018_200K.txt'
    9781031      print*, 'section efficace O2 200K: ', fil
     1032
     1033      if(is_master) then
     1034
    9791035      OPEN(UNIT=kin,FILE=fil,STATUS='old')
    9801036
     
    9991055      ENDIF
    10001056
     1057      endif !is_master
     1058
     1059      call bcast(xso2_200)
     1060
    10011061      fil = trim(datadir)//'/cross_sections/o2_composite_2018_250K.txt'
    10021062      print*, 'section efficace O2 250K: ', fil
     1063
     1064      if(is_master) then
     1065
    10031066      OPEN(UNIT=kin,FILE=fil,STATUS='old')
    10041067
     
    10231086      ENDIF
    10241087
     1088      endif !is_master
     1089
     1090      call bcast(xso2_250)
     1091
    10251092      fil = trim(datadir)//'/cross_sections/o2_composite_2018_300K.txt'
    10261093      print*, 'section efficace O2 300K: ', fil
     1094
     1095      if(is_master) then
     1096
    10271097      OPEN(UNIT=kin,FILE=fil,STATUS='old')
    10281098
     
    10471117      ENDIF
    10481118
     1119      endif !is_master
     1120
     1121      call bcast(xso2_300)
     1122
    10491123!     photodissociation yield
    10501124
    10511125      fil = trim(datadir)//'/cross_sections/efdis_co2-o2_schunkandnagy2000.txt'
     1126
     1127      if(is_master) then
     1128
    10521129      OPEN(UNIT=kin,FILE=fil,STATUS='old')
    10531130
     
    10731150         STOP
    10741151      ENDIF
     1152
     1153      endif !is_master
     1154
     1155      call bcast(yieldo2)
    10751156
    10761157      end subroutine rdxso2
     
    10971178
    10981179      use datafile_mod, only: datadir
     1180      USE mod_phys_lmdz_para, ONLY: is_master
     1181      USE mod_phys_lmdz_transfert_para, ONLY: bcast
    10991182
    11001183      implicit none
     
    11291212      print*, 'section efficace O3 218K: ', fil
    11301213
     1214      if(is_master) then
     1215
    11311216      OPEN(UNIT=kin,FILE=fil,STATUS='old')
    11321217      n1 = 167
     
    11511236      END DO
    11521237
     1238      endif !is_master
     1239
     1240      call bcast(xso3_218)
     1241
    11531242!     JPL 2006 298 K
    11541243
    11551244      fil = trim(datadir)//'/cross_sections/o3_cross-sections_jpl_2006_298K.txt'
    11561245      print*, 'section efficace O3 298K: ', fil
     1246
     1247      if(is_master) then
    11571248
    11581249      OPEN(UNIT=kin,FILE=fil,STATUS='old')
     
    11771268         xso3_298(iw) = yg(iw)
    11781269      END DO
     1270
     1271      endif !is_master
     1272
     1273      call bcast(xso3_298)
    11791274
    11801275      end subroutine rdxso3
     
    11991294
    12001295      use datafile_mod, only: datadir
     1296      USE mod_phys_lmdz_para, ONLY: is_master
     1297      USE mod_phys_lmdz_transfert_para, ONLY: bcast
    12011298
    12021299      IMPLICIT NONE
     
    12271324      print*, 'section efficace H2O: ', fil
    12281325
     1326      if(is_master) then
     1327
    12291328      OPEN(UNIT=kin,FILE=fil,STATUS='old')
    12301329
     
    12481347         STOP
    12491348      ENDIF
     1349
     1350      endif !is_master
     1351
     1352      call bcast(yg)
    12501353     
    12511354      end subroutine rdxsh2o
     
    12701373
    12711374      use datafile_mod, only: datadir
     1375      USE mod_phys_lmdz_para, ONLY: is_master
     1376      USE mod_phys_lmdz_transfert_para, ONLY: bcast
    12721377
    12731378      IMPLICIT NONE
     
    12981403      print*, 'section efficace HDO: ', fil
    12991404
     1405      if(is_master) then
     1406
    13001407      OPEN(UNIT=kin,FILE=fil,STATUS='old')
    13011408
     
    13191426         STOP
    13201427      ENDIF
     1428
     1429      endif !is_master
     1430
     1431      call bcast(yg)
    13211432     
    13221433      end subroutine rdxshdo
     
    13411452
    13421453      use datafile_mod, only: datadir
     1454      USE mod_phys_lmdz_para, ONLY: is_master
     1455      USE mod_phys_lmdz_transfert_para, ONLY: bcast
    13431456
    13441457      implicit none
     
    13691482      fil = trim(datadir)//'/cross_sections/h2o2_composite.txt'
    13701483      print*, 'section efficace H2O2: ', fil
     1484
     1485      if(is_master) then
    13711486
    13721487      OPEN(kin,FILE=fil,STATUS='OLD')
     
    13941509      END DO
    13951510
     1511      endif !is_master
     1512
     1513      call bcast(xsh2o2)
     1514
    13961515      end subroutine rdxsh2o2
    13971516
     
    14111530
    14121531      use datafile_mod, only: datadir
     1532      USE mod_phys_lmdz_para, ONLY: is_master
     1533      USE mod_phys_lmdz_transfert_para, ONLY: bcast
    14131534
    14141535      IMPLICIT NONE
     
    14391560      print*, 'section efficace HO2: ', fil
    14401561
     1562      if(is_master) then
     1563
    14411564      OPEN(kin,FILE=fil,STATUS='OLD')
    14421565      READ(kin,*) n
     
    14571580        STOP
    14581581      ENDIF
     1582
     1583      endif !is_master
     1584
     1585      call bcast(yg)
    14591586 
    14601587      end subroutine rdxsho2
     
    14741601
    14751602      use datafile_mod, only: datadir
     1603      USE mod_phys_lmdz_para, ONLY: is_master
     1604      USE mod_phys_lmdz_transfert_para, ONLY: bcast
    14761605
    14771606      implicit none
     
    15041633      print*, 'section efficace H2: ', fil
    15051634
     1635      if(is_master) then
     1636
    15061637      OPEN(kin,FILE=fil,STATUS='OLD')
    15071638
     
    15231654        STOP
    15241655      ENDIF
     1656
     1657      endif !is_master
     1658
     1659      call bcast(yg)
    15251660 
    15261661!     photodissociation yield
    15271662
    15281663      fil = trim(datadir)//'/cross_sections/h2_ionef_schunknagy2000.txt'
     1664
     1665      if(is_master) then
     1666
    15291667      OPEN(UNIT=kin,FILE=fil,STATUS='old')
    15301668
     
    15471685        STOP
    15481686      ENDIF
     1687
     1688      endif !is_master
     1689
     1690      call bcast(yieldh2)
    15491691
    15501692      end subroutine rdxsh2
     
    15731715
    15741716      use datafile_mod, only: datadir
     1717      USE mod_phys_lmdz_para, ONLY: is_master
     1718      USE mod_phys_lmdz_transfert_para, ONLY: bcast
    15751719
    15761720      implicit none
     
    16061750      print*, 'section efficace NO2: ', fil
    16071751
     1752      if(is_master) then
     1753
    16081754      OPEN(UNIT=kin,FILE=fil,status='old')
    16091755      DO i = 1, 3
     
    16211767      CALL inter2(nw,wl,yg1,n1,x1,y1,ierr)
    16221768
     1769      endif !is_master
     1770
     1771      call bcast(yg1)
     1772
    16231773      fil = trim(datadir)//'/cross_sections/no2_xs_vandaele_294K.txt'
    16241774      print*, 'section efficace NO2: ', fil
     1775
     1776      if(is_master) then
    16251777
    16261778      OPEN(UNIT=kin,FILE=fil,status='old')
     
    16391791      CALL inter2(nw,wl,yg2,n2,x2,y2,ierr)
    16401792
     1793      endif !is_master
     1794
     1795      call bcast(yg2)
     1796
    16411797      fil = trim(datadir)//'/cross_sections/no2_xs_vandaele_220K.txt'
    16421798      print*, 'section efficace NO2: ', fil
     1799
     1800      if(is_master) then
    16431801
    16441802      OPEN(UNIT=kin,FILE=fil,status='old')
     
    16631821      end do
    16641822
     1823      endif !is_master
     1824
     1825      call bcast(yg3)
     1826      call bcast(xsno2)
     1827      call bcast(xsno2_294)
     1828      call bcast(xsno2_220)
     1829
    16651830!     photodissociation efficiency from jpl 2006
    16661831
    16671832      fil = trim(datadir)//'/cross_sections/no2_yield_jpl2006.txt'
    16681833      print*, 'quantum yield NO2: ', fil
     1834
     1835      if(is_master) then
    16691836
    16701837      OPEN(UNIT=kin,FILE=fil,STATUS='old')
     
    16911858      ENDIF
    16921859
     1860      endif !is_master
     1861
     1862      call bcast(yg4)
     1863
     1864      if(is_master) then
     1865
    16931866      CALL addpnt(x5,y5,kdata,n5,x5(1)*(1.-deltax),y5(1))
    16941867      CALL addpnt(x5,y5,kdata,n5,               0.,y5(1))
     
    17051878         yldno2_248(iw) = yg5(iw)
    17061879      end do
     1880
     1881      endif !is_master
     1882
     1883      call bcast(yg5)
     1884      call bcast(yldno2_298)
     1885      call bcast(yldno2_248)
    17071886     
    17081887      end subroutine rdxsno2
     
    17231902
    17241903      use datafile_mod, only: datadir
     1904      USE mod_phys_lmdz_para, ONLY: is_master
     1905      USE mod_phys_lmdz_transfert_para, ONLY: bcast
    17251906
    17261907      implicit none
     
    17511932      fil = trim(datadir)//'/cross_sections/no_xs_francisco.txt'
    17521933      print*, 'section efficace NO: ', fil
     1934
     1935      if(is_master) then
     1936
    17531937      OPEN(kin,FILE=fil,STATUS='OLD')
    17541938
     
    17691953         STOP
    17701954      ENDIF
     1955
     1956      endif !is_master
     1957
     1958      call bcast(yg)
    17711959 
    17721960!     photodissociation yield
    17731961
    17741962      fil = trim(datadir)//'/cross_sections/noefdis.txt'
     1963
     1964      if(is_master) then
     1965
    17751966      OPEN(UNIT=kin,FILE=fil,STATUS='old')
    17761967
     
    17911982      ENDIF
    17921983
     1984      endif !is_master
     1985
     1986      call bcast(yieldno)
     1987
    17931988      end subroutine rdxsno
    17941989
     
    18072002
    18082003      use datafile_mod, only: datadir
     2004      USE mod_phys_lmdz_para, ONLY: is_master
     2005      USE mod_phys_lmdz_transfert_para, ONLY: bcast
    18092006
    18102007      implicit none
     
    18362033      fil = trim(datadir)//'/cross_sections/n2secef_01nm.txt'
    18372034      print*, 'section efficace N2: ', fil
     2035
     2036      if(is_master) then
     2037
    18382038      OPEN(kin,FILE=fil,STATUS='OLD')
    18392039
     
    18552055        STOP
    18562056      ENDIF
     2057
     2058      endif !is_master
     2059
     2060      call bcast(yg)
    18572061 
    18582062!     photodissociation yield
    18592063
    18602064      fil = trim(datadir)//'/cross_sections/n2_ionef_schunknagy2000.txt'
     2065
     2066      if(is_master) then
     2067
    18612068      OPEN(UNIT=kin,FILE=fil,STATUS='old')
    18622069
     
    18802087      ENDIF
    18812088
     2089      endif !is_master
     2090
     2091      call bcast(yieldn2)
     2092
    18822093      end subroutine rdxsn2
    18832094
Note: See TracChangeset for help on using the changeset viewer.