Index: trunk/LMDZ.COMMON/libf/evolution/xios_data.F90
===================================================================
--- trunk/LMDZ.COMMON/libf/evolution/xios_data.F90	(revision 4138)
+++ trunk/LMDZ.COMMON/libf/evolution/xios_data.F90	(revision 4147)
@@ -103,9 +103,9 @@
         num = '_slope'//num
     end if
-    call get_var_nc('co2ice'//num,var_read_2d)          ; call lonlat2vect(nlon,nlat,ngrid,var_read_2d,minPCM_co2frost(:,islope,1))
-    call get_var_nc('h2o_ice_s'//num,var_read_2d)       ; call lonlat2vect(nlon,nlat,ngrid,var_read_2d,minPCM_h2ofrost(:,islope,1))
-    call get_var_nc('watercap'//num,var_read_2d)        ; call lonlat2vect(nlon,nlat,ngrid,var_read_2d,minPCM_h2operice(:,islope,1))
-    call get_var_nc('perennial_co2ice'//num,var_read_2d); call lonlat2vect(nlon,nlat,ngrid,var_read_2d,minPCM_co2perice(:,islope,1))
-    call get_var_nc('tsurf'//num,var_read_2d)           ; call lonlat2vect(nlon,nlat,ngrid,var_read_2d,tsurf_avg_yr1(:,islope))
+    call get_var_nc('co2ice'//num,var_read_2d)          ; call lonlat2vect(var_read_2d,minPCM_co2frost(:,islope,1))
+    call get_var_nc('h2o_ice_s'//num,var_read_2d)       ; call lonlat2vect(var_read_2d,minPCM_h2ofrost(:,islope,1))
+    call get_var_nc('watercap'//num,var_read_2d)        ; call lonlat2vect(var_read_2d,minPCM_h2operice(:,islope,1))
+    call get_var_nc('perennial_co2ice'//num,var_read_2d); call lonlat2vect(var_read_2d,minPCM_co2perice(:,islope,1))
+    call get_var_nc('tsurf'//num,var_read_2d)           ; call lonlat2vect(var_read_2d,tsurf_avg_yr1(:,islope))
 end do
 
@@ -121,5 +121,5 @@
 
 ! Allocate and read the variables
-call get_var_nc('ps',var_read_2d); call lonlat2vect(nlon,nlat,ngrid,var_read_2d,ps_avg)
+call get_var_nc('ps',var_read_2d); call lonlat2vect(var_read_2d,ps_avg)
 do islope = 1,nslope
     if (nslope /= 1) then
@@ -128,18 +128,18 @@
         num = '_slope'//num
     end if
-    call get_var_nc('tsurf'//num,var_read_2d)           ; call lonlat2vect(nlon,nlat,ngrid,var_read_2d,tsurf_avg(:,islope))
-    call get_var_nc('co2ice'//num,var_read_2d)          ; call lonlat2vect(nlon,nlat,ngrid,var_read_2d,minPCM_co2frost(:,islope,2))
-    call get_var_nc('h2o_ice_s'//num,var_read_2d)       ; call lonlat2vect(nlon,nlat,ngrid,var_read_2d,minPCM_h2ofrost(:,islope,2))
-    call get_var_nc('watercap'//num,var_read_2d)        ; call lonlat2vect(nlon,nlat,ngrid,var_read_2d,minPCM_h2operice(:,islope,2))
-    call get_var_nc('perennial_co2ice'//num,var_read_2d); call lonlat2vect(nlon,nlat,ngrid,var_read_2d,minPCM_co2perice(:,islope,2))
+    call get_var_nc('tsurf'//num,var_read_2d)           ; call lonlat2vect(var_read_2d,tsurf_avg(:,islope))
+    call get_var_nc('co2ice'//num,var_read_2d)          ; call lonlat2vect(var_read_2d,minPCM_co2frost(:,islope,2))
+    call get_var_nc('h2o_ice_s'//num,var_read_2d)       ; call lonlat2vect(var_read_2d,minPCM_h2ofrost(:,islope,2))
+    call get_var_nc('watercap'//num,var_read_2d)        ; call lonlat2vect(var_read_2d,minPCM_h2operice(:,islope,2))
+    call get_var_nc('perennial_co2ice'//num,var_read_2d); call lonlat2vect(var_read_2d,minPCM_co2perice(:,islope,2))
     if (do_soil) then
         call get_var_nc('soiltemp'//num,var_read_3d)
         do isoil = 1,nsoil_PCM
-            call lonlat2vect(nlon,nlat,ngrid,var_read_3d(:,:,isoil),tsoil_avg(:,isoil,islope))
+            call lonlat2vect(var_read_3d(:,:,isoil),tsoil_avg(:,isoil,islope))
         end do
         do isoil = nsoil_PCM + 1,nsoil
             tsoil_avg(:,isoil,islope) = tsoil_avg(:,nsoil_PCM,islope) ! Explicit initialization because dimension with size nsoil > nsoil_PCM
         end do
-        call get_var_nc('waterdensity_surface'//num,var_read_2d); call lonlat2vect(nlon,nlat,ngrid,var_read_2d,h2o_surfdensity_avg(:,islope))
+        call get_var_nc('waterdensity_surface'//num,var_read_2d); call lonlat2vect(var_read_2d,h2o_surfdensity_avg(:,islope))
     end if
 end do
@@ -160,13 +160,13 @@
 call get_var_nc('ps',var_read_3d)
 do iday = 1,nday
-    call lonlat2vect(nlon,nlat,ngrid,var_read_3d(:,:,iday),ps_ts(:,iday))
+    call lonlat2vect(var_read_3d(:,:,iday),ps_ts(:,iday))
 end do
 call get_var_nc('h2o_layer1',var_read_3d)
 do iday = 1,nday
-    call lonlat2vect(nlon,nlat,ngrid,var_read_3d(:,:,iday),q_h2o_ts(:,iday))
+    call lonlat2vect(var_read_3d(:,:,iday),q_h2o_ts(:,iday))
 end do
 call get_var_nc('co2_layer1',var_read_3d)
 do iday = 1,nday
-    call lonlat2vect(nlon,nlat,ngrid,var_read_3d(:,:,iday),q_co2_ts(:,iday))
+    call lonlat2vect(var_read_3d(:,:,iday),q_co2_ts(:,iday))
 end do
 if (do_soil) then
@@ -181,5 +181,5 @@
         do iday = 1,nday
             do isoil = 1,nsoil_PCM
-                call lonlat2vect(nlon,nlat,ngrid,var_read_4d(:,:,isoil,iday),tsoil_ts(:,isoil,islope,iday))
+                call lonlat2vect(var_read_4d(:,:,isoil,iday),tsoil_ts(:,isoil,islope,iday))
             end do
             do isoil = nsoil_PCM + 1,nsoil
@@ -190,5 +190,5 @@
         do iday = 1,nday
             do isoil = 1,nsoil_PCM
-                call lonlat2vect(nlon,nlat,ngrid,var_read_4d(:,:,isoil,iday),var_read_1d)
+                call lonlat2vect(var_read_4d(:,:,isoil,iday),var_read_1d)
                 h2o_soildensity_avg(:,isoil,islope) = h2o_soildensity_avg(:,isoil,islope) + var_read_1d
             end do
@@ -207,4 +207,6 @@
 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ! Compute frost from yearly minima
+where (minPCM_h2ofrost(:,:,:) < 0._dp) minPCM_h2ofrost(:,:,:) = 0._dp ! Enforcing positivity
+where (minPCM_co2frost(:,:,:) < 0._dp) minPCM_co2frost(:,:,:) = 0._dp ! Enforcing positivity
 call compute_frost4PCM(minPCM_h2ofrost(:,:,2),minPCM_co2frost(:,:,2))
 
