Changeset 2661 for LMDZ5/trunk
- Timestamp:
- Oct 11, 2016, 5:28:09 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/physiq_mod.F90
r2657 r2661 1016 1016 ! ascending order 1017 1017 1018 integer, save:: co3i = 01019 ! time index in NetCDF file of current ozone fields1020 !$OMP THREADPRIVATE(co3i)1021 1022 1018 integer ro3i 1023 1019 ! required time index in NetCDF file for the ozone fields, between 1 … … 1913 1909 ! Prescrire l'ozone et calculer l'albedo sur l'ocean. 1914 1910 ! 1915 if (read_climoz >= 1) then 1916 ! Ozone from a file 1917 ! Update required ozone index: 1918 ro3i = int((days_elapsed + jh_cur - jh_1jan) / year_len * 360.) + 1 1919 if (ro3i == 361) ro3i = 360 1920 ! (This should never occur, except perhaps because of roundup 1921 ! error. See documentation.) 1922 if (ro3i /= co3i) then 1923 ! Update ozone field: 1924 if (read_climoz == 1) then 1925 call regr_pr_av(ncid_climoz, (/"tro3"/), julien=ro3i, & 1926 press_in_edg=press_climoz, paprs=paprs, v3=wo) 1927 else 1928 ! read_climoz == 2 1929 call regr_pr_av(ncid_climoz, (/"tro3 ", & 1930 "tro3_daylight"/), julien=ro3i, press_in_edg=press_climoz, & 1931 paprs=paprs, v3=wo) 1932 end if 1933 ! Convert from mole fraction of ozone to column density of ozone in a 1934 ! cell, in kDU: 1935 forall (l = 1: read_climoz) wo(:, :, l) = wo(:, :, l) * rmo3 / rmd & 1936 * zmasse / dobson_u / 1e3 1937 ! (By regridding ozone values for LMDZ only once every 360th of 1938 ! year, we have already neglected the variation of pressure in one 1939 ! 360th of year. So do not recompute "wo" at each time step even if 1940 ! "zmasse" changes a little.) 1941 co3i = ro3i 1942 end if 1943 ELSEIF (MOD(itap-1,lmt_pas) == 0) THEN 1911 ! Update ozone if day change 1912 IF (MOD(itap-1,lmt_pas) == 0) THEN 1913 IF (read_climoz == 0) THEN 1944 1914 ! Once per day, update ozone from Royer: 1945 1946 IF (solarlong0<-999.) then 1947 ! Generic case with evolvoing season 1948 zzz=real(days_elapsed+1) 1949 ELSE IF (abs(solarlong0-1000.)<1.e-4) then 1950 ! Particular case with annual mean insolation 1951 zzz=real(90) ! could be revisited 1952 ! IF (read_climoz/=-1) THEN 1953 ! abort_message ='read_climoz=-1 is recommended when ' & 1954 ! // 'solarlong0=1000.' 1955 ! CALL abort_physic (modname,abort_message,1) 1956 ! ENDIF 1957 ELSE 1915 IF (solarlong0<-999.) then 1916 ! Generic case with evolvoing season 1917 zzz=real(days_elapsed+1) 1918 ELSE IF (abs(solarlong0-1000.)<1.e-4) then 1919 ! Particular case with annual mean insolation 1920 zzz=real(90) ! could be revisited 1921 IF (read_climoz/=-1) THEN 1922 abort_message ='read_climoz=-1 is recommended when ' & 1923 // 'solarlong0=1000.' 1924 CALL abort_physic (modname,abort_message,1) 1925 ENDIF 1926 ELSE 1958 1927 ! Case where the season is imposed with solarlong0 1959 1928 zzz=real(90) ! could be revisited 1960 ENDIF 1961 wo(:,:,1)=ozonecm(latitude_deg, paprs,read_climoz,rjour=zzz) 1929 ENDIF 1930 1931 wo(:,:,1)=ozonecm(latitude_deg, paprs,read_climoz,rjour=zzz) 1932 ELSE 1933 ro3i = int((days_elapsed + jh_cur - jh_1jan) / year_len * 360.) + 1 1934 if (ro3i == 361) ro3i = 360 1935 if (read_climoz == 1) then 1936 call regr_pr_av(ncid_climoz, (/"tro3"/), julien=ro3i, & 1937 press_in_edg=press_climoz, paprs=paprs, v3=wo) 1938 else 1939 ! read_climoz == 2 1940 call regr_pr_av(ncid_climoz, (/"tro3 ", & 1941 "tro3_daylight"/), julien=ro3i, press_in_edg=press_climoz, & 1942 paprs=paprs, v3=wo) 1943 end if 1944 ! Convert from mole fraction of ozone to column density of ozone in a 1945 ! cell, in kDU: 1946 forall (l = 1: read_climoz) wo(:, :, l) = wo(:, :, l) * rmo3 / rmd & 1947 * zmasse / dobson_u / 1e3 1948 ! (By regridding ozone values for LMDZ only once every 360th of 1949 ! year, we have already neglected the variation of pressure in one 1950 ! 360th of year. So do not recompute "wo" at each time step even if 1951 ! "zmasse" changes a little.) 1952 1953 ENDIF 1962 1954 ENDIF 1963 1955 !
Note: See TracChangeset
for help on using the changeset viewer.