Index: LMDZ6/trunk/libf/misc/readTracFiles_mod.f90
===================================================================
--- LMDZ6/trunk/libf/misc/readTracFiles_mod.f90	(revision 5352)
+++ LMDZ6/trunk/libf/misc/readTracFiles_mod.f90	(revision 5353)
@@ -990,7 +990,10 @@
   CHARACTER(LEN=maxlen), ALLOCATABLE :: n0(:)
   CHARACTER(LEN=maxlen) :: nm
+  CHARACTER(LEN=maxlen) :: tmp2(nq)
+
   lerr = .FALSE.
   IF(nam(1) == 'iq') THEN
-    tmp = int2str([(iq, iq=1, nq)])
+    tmp2 = int2str([(iq, iq=1, nq)])
+    tmp = tmp2
   ELSE
     lerr = getKey(nam, tmp, dBase(idb)%trac(:)%keys, lDisp=lMandatory)
Index: LMDZ6/trunk/libf/misc/strings_mod.f90
===================================================================
--- LMDZ6/trunk/libf/misc/strings_mod.f90	(revision 5352)
+++ LMDZ6/trunk/libf/misc/strings_mod.f90	(revision 5353)
@@ -813,5 +813,10 @@
   tmp = horzcat_s00(s0(nc), s1, s2, s3, s4, s5, s6, s7, s8, s9)
   IF(nc == 1) out = tmp
-  IF(nc /= 1) out = [s0(1:nc-1), tmp]
+  IF(nc /= 1) THEN
+!ym fix for nvidia compiler
+!ym out = [s0(1:nc-1), tmp]
+    out = s0(1:nc-1)
+    out = [out , tmp]
+  ENDIF
 END FUNCTION horzcat_s10
 !==============================================================================================================================
@@ -845,10 +850,16 @@
   CHARACTER(LEN=*),           INTENT(IN) :: s0(:,:), s1(:)
   CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: s2(:), s3(:), s4(:), s5(:), s6(:), s7(:), s8(:), s9(:)
-  CHARACTER(LEN=maxlen), ALLOCATABLE :: out(:,:), tmp(:,:)
+  CHARACTER(LEN=maxlen), ALLOCATABLE :: out(:,:), tmp(:,:), pk(:)
   INTEGER :: nc
   nc  = SIZE(s0, 2)
   tmp = horzcat_s11(s0(:,nc), s1, s2, s3, s4, s5, s6, s7, s8, s9)
   IF(nc == 1) out = tmp
-  IF(nc /= 1) out = RESHAPE([PACK(s0(:,1:nc-1), .TRUE.), PACK(tmp, .TRUE.)], SHAPE=[SIZE(s0, 1), nc + SIZE(tmp, 2)-1])
+!ym fix for nvidia compiler
+!ym  IF(nc /= 1) out = RESHAPE([PACK(s0(:,1:nc-1), .TRUE.), PACK(tmp, .TRUE.)], SHAPE=[SIZE(s0, 1), nc + SIZE(tmp, 2)-1])
+  IF(nc /= 1) THEN
+    pk = PACK(s0(:,1:nc-1), .TRUE.)
+    pk = [ pk, PACK(tmp, .TRUE.)]
+    out = RESHAPE(pk, SHAPE=[SIZE(s0, 1), nc + SIZE(tmp, 2)-1])
+  ENDIF
 END FUNCTION horzcat_s21
 !==============================================================================================================================
Index: LMDZ6/trunk/libf/phylmd/regr_horiz_time_climoz_m.f90
===================================================================
--- LMDZ6/trunk/libf/phylmd/regr_horiz_time_climoz_m.f90	(revision 5352)
+++ LMDZ6/trunk/libf/phylmd/regr_horiz_time_climoz_m.f90	(revision 5353)
@@ -139,4 +139,5 @@
   REAL, ALLOCATABLE :: test_o3_in(:,:)
   REAL, ALLOCATABLE :: test_o3_out(:)
+  REAL,ALLOCATABLE :: tmp(:)
 
 
@@ -427,7 +428,8 @@
        !--- Regrid in longitude
         ALLOCATE(o3_regr_lon(nlon_ou, nlat_in, nlev_in, ie-ib+1, read_climoz))
+        tmp = [boundslon_reg(1,west),boundslon_reg(:,east)]
         CALL regr_conserv(1, o3_in3, xs = lon_in_edge,                             &
-                            xt = [boundslon_reg(1,west),boundslon_reg(:,east)],    &
-                            vt = o3_regr_lon, slope = slopes(1,o3_in3, lon_in_edge))
+                          xt = tmp ,                                               &
+                          vt = o3_regr_lon, slope = slopes(1,o3_in3, lon_in_edge))
         DEALLOCATE(o3_in3)
 
@@ -436,8 +438,9 @@
         !--- (inverted indices in "o3_regr_lonlat" because "rlatu" is decreasing)
         ALLOCATE(o3_regr_lonlat(nlon_ou, nlat_ou, nlev_in, 0:13, read_climoz))
-        CALL regr_conserv(2, o3_regr_lon, xs = sinlat_in_edge,                     &
-                        xt = [- 1., SIN(boundslat_reg(nlat_ou-1:1:-1,south)), 1.], &
-                        vt = o3_regr_lonlat(:,nlat_ou:1:- 1,:,ib:ie,:),            &
-                   slope = slopes(2,o3_regr_lon, sinlat_in_edge))
+        tmp = [- 1., SIN(boundslat_reg(nlat_ou-1:1:-1,south)), 1.]   
+        CALL regr_conserv(2, o3_regr_lon, xs = sinlat_in_edge,                       &
+                          xt = tmp,                                                  &
+                          vt = o3_regr_lonlat(:,nlat_ou:1:- 1,:,ib:ie,:),            &
+                          slope = slopes(2,o3_regr_lon, sinlat_in_edge))
         DEALLOCATE(o3_regr_lon)
 
@@ -519,6 +522,7 @@
         !--- (inverted indices in "o3_regr_lat" because "rlatu" is decreasing)
         ALLOCATE(o3_regr_lat(nlat_ou, nlev_in, 0:13, read_climoz))
+        tmp = [- 1., SIN(boundslat_reg(nlat_ou-1:1:-1,south)), 1.]
         CALL regr_conserv(1, o3_in2, xs = sinlat_in_edge,                          &
-                        xt = [- 1., SIN(boundslat_reg(nlat_ou-1:1:-1,south)), 1.], &
+                        xt = tmp,                                                  &
                         vt = o3_regr_lat(nlat_ou:1:- 1,:,ib:ie,:),                 &
                      slope = slopes(1,o3_in2, sinlat_in_edge))
