Ignore:
Timestamp:
Jan 25, 2017, 1:24:12 PM (7 years ago)
Author:
lguez
Message:

Added option -ftz for Ada because of a bug of version 17.0 of ifort,
which stops on underflow with -fpe-all=0. Intel announces that the bug
should be corrected in version 17.3.

Fixing a bug from revision 2661: when read_climoz = -1, we want to use ozonecm.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/physiq_mod.F90

    r2769 r2774  
    11271127
    11281128    ! Quick check on pressure levels:
    1129     do i = 1, klon
    1130        call assert(paprs(i, nbp_lev + 1) < paprs(i, nbp_lev), &
     1129    call assert(paprs(:, nbp_lev + 1) < paprs(:, nbp_lev), &
    11311130            "physiq_mod paprs bad order")
    1132     end do
    11331131
    11341132    IF (first) THEN
     
    19531951    ! Update ozone if day change
    19541952    IF (MOD(itap-1,lmt_pas) == 0) THEN
    1955       IF (read_climoz == 0) THEN
    1956        ! Once per day, update ozone from Royer:
    1957         IF (solarlong0<-999.) then
    1958            ! Generic case with evolvoing season
    1959            zzz=real(days_elapsed+1)
    1960         ELSE IF (abs(solarlong0-1000.)<1.e-4) then
    1961            ! Particular case with annual mean insolation
    1962            zzz=real(90) ! could be revisited
    1963            IF (read_climoz/=-1) THEN
    1964               abort_message ='read_climoz=-1 is recommended when ' &
    1965                    // 'solarlong0=1000.'
    1966               CALL abort_physic (modname,abort_message,1)
    1967            ENDIF
    1968         ELSE
    1969           ! Case where the season is imposed with solarlong0
    1970           zzz=real(90) ! could be revisited
    1971         ENDIF
    1972 
    1973         wo(:,:,1)=ozonecm(latitude_deg, paprs,read_climoz,rjour=zzz)
    1974       ELSE
    1975         ro3i = int((days_elapsed + jh_cur - jh_1jan) / year_len * 360.) + 1   
    1976         IF (ro3i == 361) ro3i = 360
    1977         IF (read_climoz == 1) THEN
    1978            CALL regr_pr_av(ncid_climoz, (/"tro3"/), julien=ro3i, &
    1979                 press_in_edg=press_climoz, paprs=paprs, v3=wo)
    1980         ELSE
    1981            ! read_climoz == 2
    1982            CALL regr_pr_av(ncid_climoz, (/"tro3         ", &
    1983                 "tro3_daylight"/), julien=ro3i, press_in_edg=press_climoz, &
    1984                 paprs=paprs, v3=wo)
    1985         ENDIF
    1986         ! Convert from mole fraction of ozone to column density of ozone in a
    1987         ! cell, in kDU:
    1988         FORALL (l = 1: read_climoz) wo(:, :, l) = wo(:, :, l) * rmo3 / rmd &
    1989              * zmasse / dobson_u / 1e3
    1990         ! (By regridding ozone values for LMDZ only once every 360th of
    1991         ! year, we have already neglected the variation of pressure in one
    1992         ! 360th of year. So do not recompute "wo" at each time step even if
    1993         ! "zmasse" changes a little.)
    1994      
    1995       ENDIF
     1953       IF (read_climoz <= 0) THEN
     1954          ! Once per day, update ozone from Royer:
     1955          IF (solarlong0<-999.) then
     1956             ! Generic case with evolvoing season
     1957             zzz=real(days_elapsed+1)
     1958          ELSE IF (abs(solarlong0-1000.)<1.e-4) then
     1959             ! Particular case with annual mean insolation
     1960             zzz=real(90) ! could be revisited
     1961             IF (read_climoz/=-1) THEN
     1962                abort_message ='read_climoz=-1 is recommended when ' &
     1963                     // 'solarlong0=1000.'
     1964                CALL abort_physic (modname,abort_message,1)
     1965             ENDIF
     1966          ELSE
     1967             ! Case where the season is imposed with solarlong0
     1968             zzz=real(90) ! could be revisited
     1969          ENDIF
     1970
     1971          wo(:,:,1)=ozonecm(latitude_deg, paprs,read_climoz,rjour=zzz)
     1972       ELSE
     1973          ro3i = int((days_elapsed + jh_cur - jh_1jan) / year_len * 360.) + 1
     1974
     1975          IF (ro3i == 361) ro3i = 360
     1976          ! (This should never occur, except perhaps because of roundup
     1977          ! error. See documentation.)
     1978
     1979          IF (read_climoz == 1) THEN
     1980             CALL regr_pr_av(ncid_climoz, (/"tro3"/), julien=ro3i, &
     1981                  press_in_edg=press_climoz, paprs=paprs, v3=wo)
     1982          ELSE
     1983             ! read_climoz == 2
     1984             CALL regr_pr_av(ncid_climoz, (/"tro3         ", &
     1985                  "tro3_daylight"/), julien=ro3i, press_in_edg=press_climoz, &
     1986                  paprs=paprs, v3=wo)
     1987          ENDIF
     1988          ! Convert from mole fraction of ozone to column density of ozone in a
     1989          ! cell, in kDU:
     1990          FORALL (l = 1: read_climoz) wo(:, :, l) = wo(:, :, l) * rmo3 / rmd &
     1991               * zmasse / dobson_u / 1e3
     1992          ! (By regridding ozone values for LMDZ only once per day, we
     1993          ! have already neglected the variation of pressure in one
     1994          ! day. So do not recompute "wo" at each time step even if
     1995          ! "zmasse" changes a little.)
     1996       ENDIF
    19961997    ENDIF
    19971998    !
Note: See TracChangeset for help on using the changeset viewer.