Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/aaam_bud.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/aaam_bud.F	(revision 1224)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/aaam_bud.F	(revision 1225)
@@ -39,9 +39,9 @@
 c nlon----input-I-Total number of horizontal points that get into physics
 c nlev----input-I-Number of vertical levels
-c rjour---input-R-Jour compte depuis le debut de la simu (run.def)
-c rsec----input-R-Seconde de la journee
-c rea-----input-R-Earth radius
-c rg------input-R-gravity constant
-c ome-----input-R-Earth rotation rate
+c rjour        -R-Jour compte depuis le debut de la simu (run.def)
+c rsec         -R-Seconde de la journee
+c rea          -R-Earth radius
+c rg           -R-gravity constant
+c ome          -R-Earth rotation rate
 c plat ---input-R-Latitude en degres
 c plon ---input-R-Longitude en degres
@@ -94,5 +94,5 @@
 c
       INTEGER iam,nlon,nlev
-      REAL rjour,rsec,rea,rg,ome
+      REAL, intent(in):: rjour,rsec,rea,rg,ome
       REAL plat(nlon),plon(nlon),phis(nlon)
       REAL dragu(nlon),liftu(nlon),phyu(nlon)             
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/conf_phys.F90
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/conf_phys.F90	(revision 1224)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/conf_phys.F90	(revision 1225)
@@ -145,5 +145,5 @@
   LOGICAL,SAVE :: ok_hines_omp
 
-  logical, intent(out):: read_climoz ! read ozone climatology
+  logical, intent(out):: read_climoz ! read ozone climatology, OpenMP shared
 !
 
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/open_climoz_m.F90
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/open_climoz_m.F90	(revision 1224)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/open_climoz_m.F90	(revision 1225)
@@ -22,9 +22,9 @@
     use mod_phys_lmdz_mpi_transfert, only: bcast_mpi ! broadcast
 
-    integer, intent(out):: ncid ! of "climoz_LMDZ.nc"
+    integer, intent(out):: ncid ! of "climoz_LMDZ.nc", OpenMP shared
 
     real, pointer:: press_in_edg(:)
-    ! (edges of pressure intervals for ozone climatology, in Pa, in strictly
-    ! ascending order)
+    ! edges of pressure intervals for ozone climatology, in Pa, in strictly
+    ! ascending order, OpenMP shared
 
     ! Variables local to the procedure:
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/orbite.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/orbite.F	(revision 1224)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/orbite.F	(revision 1225)
@@ -124,8 +124,8 @@
 c          revu pour  GCM  le 30 septembre 1996
 c===============================================================
-c longi----INPUT : la longitude vraie de la terre dans son plan
+c longi : la longitude vraie de la terre dans son plan
 c                  solaire a partir de l'equinoxe de printemps (degre)
-c gmtime---INPUT : temps universel en fraction de jour
-c pdtrad---INPUT : pas de temps du rayonnement (secondes)
+c gmtime : temps universel en fraction de jour
+c pdtrad : pas de temps du rayonnement (secondes)
 c lat------INPUT : latitude en degres
 c long-----INPUT : longitude en degres
@@ -137,5 +137,5 @@
 #include "YOMCST.h"
 c================================================================
-      real longi, gmtime, pdtrad
+      real, intent(in):: longi, gmtime, pdtrad
       real lat(klon), long(klon), pmu0(klon), frac(klon)
 c================================================================
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/phyredem.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/phyredem.F	(revision 1224)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/phyredem.F	(revision 1225)
@@ -74,5 +74,5 @@
          tab_cntrl(ierr) = 0.0
       ENDDO
-      tab_cntrl(1) = dtime
+CC      tab_cntrl(1) = dtime
       tab_cntrl(2) = radpas
       tab_cntrl(3) = co2_ppm
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/physiq.F
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/physiq.F	(revision 1224)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/physiq.F	(revision 1225)
@@ -12,5 +12,6 @@
      .            , PVteta)
 
-      USE ioipsl
+      USE ioipsl, only: histbeg, histvert, histdef, histend, histsync,
+     $     histwrite, ju2ymds, ymds2ju, ioget_year_len
       USE comgeomphy
       USE write_field_phy
@@ -60,6 +61,6 @@
 c debut---input-L-variable logique indiquant le premier passage
 c lafin---input-L-variable logique indiquant le dernier passage
-c jD_cur--input-R-jour courant a l'appel de la physique (jour julien)
-c jH_cur--input-R-heure courante a l'appel de la physique (jour julien)
+c jD_cur       -R-jour courant a l'appel de la physique (jour julien)
+c jH_cur       -R-heure courante a l'appel de la physique (jour julien)
 c pdtphys-input-R-pas d'integration pour la physique (seconde)
 c paprs---input-R-pression pour chaque inter-couche (en Pa)
@@ -186,5 +187,5 @@
       INTEGER nlon
       INTEGER nlev
-      REAL :: jD_cur, jH_cur
+      REAL, intent(in):: jD_cur, jH_cur
 
       REAL pdtphys
@@ -1106,4 +1107,10 @@
 !     ascending order
 
+      integer:: co3i = 0 ! time index in NetCDF file of current ozone field
+c$OMP THREADPRIVATE(co3i) 
+
+      integer ro3i
+!     required time index in NetCDF file for the ozone field, between 1 and 360
+
 #include "YOMCST.h"
 #include "YOETHF.h"
@@ -1130,8 +1137,8 @@
      s  nlon,klev,nqtot,debut,lafin, jD_cur, jH_cur,pdtphys 
 
-         write(lunout,*) 'papers, play, phi, u, v, t, omega'
+         write(lunout,*) 'paprs, play, phi, u, v, t'
          do k=1,klev
             write(lunout,*) paprs(igout,k),pplay(igout,k),pphi(igout,k),
-     s   u(igout,k),v(igout,k),t(igout,k),omega(igout,k)
+     s   u(igout,k),v(igout,k),t(igout,k)
          enddo
          write(lunout,*) 'ovap (g/kg),  oliq (g/kg)'
@@ -1712,20 +1719,28 @@
 c Prescrire l'ozone et calculer l'albedo sur l'ocean.
 c
-      IF (MOD(itap-1,lmt_pas) == 0) THEN
-C        Once per day, update ozone:
-         if (read_climoz) then
-C           Ozone climatology from a NetCDF file
-            call regr_pr_av(ncid_climoz, "tro3", julien=days_elapsed+1, 
+      if (read_climoz) then
+C        Ozone from a file
+!        Update required ozone index:
+         ro3i = int((days_elapsed + jh_cur - jh_1jan)
+     $        / ioget_year_len(year_cur) * 360.) + 1
+         if (ro3i == 361) ro3i = 360
+C        (This should never occur, except perhaps because of roundup
+C        error. See documentation.)
+         if (ro3i /= co3i) then
+C           Update ozone field:
+            call regr_pr_av(ncid_climoz, "tro3", julien=ro3i, 
      &           press_in_edg=press_climoz, paprs=paprs, v3=wo)
 !           Convert from mole fraction of ozone to column density of ozone in a
 !           cell, in kDU:
             wo = wo * rmo3 / rmd * zmasse / dobson_u / 1e3
-C           (By regridding ozone values for LMDZ only once per day, we
-C           have already neglected the variation of pressure in one
-C           day. So do not recompute "wo" at each time step even if
+C           (By regridding ozone values for LMDZ only once every 360th of
+C           year, we have already neglected the variation of pressure in one
+C           360th of year. So do not recompute "wo" at each time step even if
 C           "zmasse" changes a little.)
-         else
-            wo = ozonecm(rlat, paprs, rjour=real(days_elapsed+1))
+            co3i = ro3i
          end if
+      elseif (MOD(itap-1,lmt_pas) == 0) THEN
+C        Once per day, update ozone from Royer:
+         wo = ozonecm(rlat, paprs, rjour=real(days_elapsed+1))
       ENDIF
 c
@@ -1935,4 +1950,6 @@
          END DO
       END DO
+      if (prt_level.ge.1) write(lunout,*) 'omega(igout, :) = ',
+     $     omega(igout, :)
 
       IF (iflag_con.EQ.1) THEN
Index: LMDZ4/branches/LMDZ4-dev/libf/phylmd/regr_pr.F90
===================================================================
--- LMDZ4/branches/LMDZ4-dev/libf/phylmd/regr_pr.F90	(revision 1224)
+++ LMDZ4/branches/LMDZ4-dev/libf/phylmd/regr_pr.F90	(revision 1225)
@@ -41,6 +41,6 @@
 
     real, intent(in):: press_in_edg(:)
-    ! (edges of pressure intervals for input data, in Pa, in strictly
-    ! ascending order)
+    ! edges of pressure intervals for input data, in Pa, in strictly
+    ! ascending order
 
     real, intent(in):: paprs(:, :) ! (klon, llm + 1)
