Index: trunk/LMDZ.MARS/README
===================================================================
--- trunk/LMDZ.MARS/README	(revision 163)
+++ trunk/LMDZ.MARS/README	(revision 164)
@@ -664,2 +664,78 @@
    Modified phymars/dimradmars.h , added directory phymars/scatterers
    with script make_scatterers , and adapted makegcm* scripts.
+
+== 17/06/2011 == AC
+================================================
+======== IMPLEMENTATION OF THERMALS ============
+================================================
+The main goal of this revision is to start including the thermals into the model
+for development purposes. Users should not use the thermals yet, as
+several major configuration changes still need to be done.
+
+This version includes :
+- updraft and downdraft parametrizations
+- velocity in the thermal, including drag
+- plume height analysis
+- closure equation
+- updraft transport of heat, tracers and momentum
+- downdraft transport of heat
+
+This model should not be used without upcoming developments, namely :
+- downdraft transport of tracers and momentum
+- updraft & downdraft transport of q2 (tke)
+- revision of vdif_kc to compute q2 for non-stratified cases
+
+Thermals could also include in a later revision :
+- momentum loss during transport (horizontal drag)
+
+Compilation of the thermals has been successfully tested on ifort, gfortran and pgf90
+
+================================================
+================================================
+
+M      libf/phymars/callkeys.h
+M      libf/phymars/inifis.F
+
+Added new control flags to call the thermals :
+- calltherm (false by default) <- to call thermals
+- outptherm (false by default) <- to output thermal-related diagnostics (for dev purposes)
+================================================
+M      libf/phymars/vdifc.F
+^------> added a temporary output for thermal-related diagnostics
+M      libf/phymars/testphys1d.F
+^------> added treatment for a initialization from a profile of neutral gas (ar)
+      -> will be transformed in a decaying tracer for thermal diagnostics
+M      libf/phymars/physiq.F
+^------> added a section to call the thermals
+      -> changed the call to convadj
+      -> added thermal-related outputs for diagnostics
+M      libf/phymars/convadj.F
+^------> takes now into account the height of thermals to execute convective adjustment
+      => note : convective adjustment needs to be activated when using thermals, in case of a 
+         second instable layer above the thermals
+================================================
+A      libf/phymars/calltherm_interface.F90
+^------> Interface between physiq.F and the thermals
+A      libf/phymars/calltherm_mars.F90
+^------> Routine running the sub-timestep of the thermals
+A      libf/phymars/thermcell_main_mars.F90
+^------> Main thermals routine specific to Martian physics
+A      libf/phymars/thermcell_dqupdown.F90
+^------> Thermals subroutine computing transport of quantities by updrafts and downdrafts
+A      libf/phymars/thermcell.F90
+^------> Module including parameters from the Earth to Mars importation. Will disappear in future dev
+================================================
+================================================
+
+== 17/06/2011 == EM
+>>> Updates and corrections (to enable compiling/running in debug mode with
+    ifort)
+- removed option "-free-form" from makegcm_ifort and set mod_loc_dir="."
+  so that module files (produced in local directory by ifort)
+  are moved to LIBO
+- updated initracer.F, physdem1.F, physiq.F, inichim_newstart.F
+  to avoid referencing out-of-bound array indexes (even if unused)
+- cosmetic updates on inwrite.F, datareadnc.F
+- updated newstart.F to initialize and use 'datadir' when looking for files
+- corrected bug on interpolation of sub-surface temperatures in
+  lect_start_archive.F
Index: trunk/LMDZ.MARS/libf/aeronomars/inichim_newstart.F
===================================================================
--- trunk/LMDZ.MARS/libf/aeronomars/inichim_newstart.F	(revision 163)
+++ trunk/LMDZ.MARS/libf/aeronomars/inichim_newstart.F	(revision 164)
@@ -120,6 +120,11 @@
               write(*,*) 'initracer: error expected dustbin=2'
             else
-              noms(1)='dust_mass'   ! dust mass mixing ratio
-              noms(2)='dust_number' ! dust number mixing ratio
+!              noms(1)='dust_mass'   ! dust mass mixing ratio
+!              noms(2)='dust_number' ! dust number mixing ratio
+! same as above, but avoid explict possible out-of-bounds on array
+               noms(1)='dust_mass'   ! dust mass mixing ratio
+               do iq=2,2
+               noms(iq)='dust_number' ! dust number mixing ratio
+               enddo
             endif
           endif
@@ -129,6 +134,11 @@
           noms(nqmx)='h2o_vap'
           mmol(nqmx)=18.
-          noms(nqmx-1)='h2o_ice'
-          mmol(nqmx-1)=18.
+!            noms(nqmx-1)='h2o_ice'
+!            mmol(nqmx-1)=18.
+          !"loop" to avoid potential out-of-bounds in array
+          do iq=nqmx-1,nqmx-1
+            noms(iq)='h2o_ice'
+            mmol(iq)=18.
+          enddo
         endif
         ! 3. Chemistry
@@ -164,5 +174,8 @@
         write(*,*)'inichim_newstart: moving surface water ice to index '
      &            ,nqmx-1
-        qsurf(1:ngridmx,nqmx-1)=qsurf(1:ngridmx,nqmx)
+        ! "loop" to avoid potential out-of-bounds on arrays
+        do iq=nqmx-1,nqmx-1
+        qsurf(1:ngridmx,iq)=qsurf(1:ngridmx,iq+1)
+        enddo
         qsurf(1:ngridmx,nqmx)=0
       endif 
@@ -395,19 +408,21 @@
       ! as in the old days, water vapour is last and water ice,
       ! if present, is just before water vapour
-      nqchem(1)=igcm_co2
-      nqchem(2)=igcm_co
-      nqchem(3)=igcm_o
-      nqchem(4)=igcm_o1d
-      nqchem(5)=igcm_o2
-      nqchem(6)=igcm_o3
-      nqchem(7)=igcm_h
-      nqchem(8)=igcm_h2
-      nqchem(9)=igcm_oh
-      nqchem(10)=igcm_ho2
-      nqchem(11)=igcm_h2o2
-      nqchem(12)=igcm_n2
-      nqchem(13)=igcm_ar
-      nqchem(14)=igcm_h2o_ice
-      nqchem(15)=igcm_h2o_vap
+      do iq=1,15 ! loop so as to avoid out-of-bounds on array
+      if (iq==1) nqchem(i)=igcm_co2
+      if (iq==2) nqchem(i)=igcm_co
+      if (iq==3) nqchem(i)=igcm_o
+      if (iq==4) nqchem(i)=igcm_o1d
+      if (iq==5) nqchem(i)=igcm_o2
+      if (iq==6) nqchem(i)=igcm_o3
+      if (iq==7) nqchem(i)=igcm_h
+      if (iq==8) nqchem(i)=igcm_h2
+      if (iq==9) nqchem(i)=igcm_oh
+      if (iq==10) nqchem(i)=igcm_ho2
+      if (iq==11) nqchem(i)=igcm_h2o2
+      if (iq==12) nqchem(i)=igcm_n2
+      if (iq==13) nqchem(i)=igcm_ar
+      if (iq==14) nqchem(i)=igcm_h2o_ice
+      if (iq==15) nqchem(i)=igcm_h2o_vap
+      enddo
 
 ! Load in chemistry data for initialization:
Index: trunk/LMDZ.MARS/libf/dyn3d/lect_start_archive.F
===================================================================
--- trunk/LMDZ.MARS/libf/dyn3d/lect_start_archive.F	(revision 163)
+++ trunk/LMDZ.MARS/libf/dyn3d/lect_start_archive.F	(revision 164)
@@ -1136,6 +1136,6 @@
         allocate(oldval(nsoilold+1))
 	allocate(newval(nsoilmx))
-        do i=1,imold+1
-	 do j=1,jmold+1
+        do i=1,iip1 
+	 do j=1,jjp1 
 	   ! copy values
 	   oldval(1)=tsurfold(i,j)
@@ -1168,6 +1168,6 @@
 	oldgrid(1)=0. ! ground
 	oldgrid(2:nsoilold+1)=mlayerold(1:nsoilold)
-        do i=1,imold+1
-	 do j=1,jmold+1
+        do i=1,iip1 
+	 do j=1,jjp1 
 	   ! copy values
 	   oldval(1)=tsurfold(i,j)
Index: trunk/LMDZ.MARS/libf/dyn3d/newstart.F
===================================================================
--- trunk/LMDZ.MARS/libf/dyn3d/newstart.F	(revision 163)
+++ trunk/LMDZ.MARS/libf/dyn3d/newstart.F	(revision 164)
@@ -14,4 +14,7 @@
 c
 c=======================================================================
+
+! to use  'getin'
+      USE ioipsl_getincom 
 
       implicit none
@@ -40,4 +43,5 @@
 #include"advtrac.h"
 #include"tracer.h"
+#include "datafile.h"
 c=======================================================================
 c   Declarations
@@ -50,6 +54,4 @@
 c et autres:
 c----------
-      INTEGER lnblnk
-      EXTERNAL lnblnk
 
 c Variables pour les lectures NetCDF des fichiers "start_archive" 
@@ -358,4 +360,8 @@
         relief="mola"
 c     enddo
+
+! before using datareadnc, "datafile" must be set (normaly done in inifis)
+      datafile="/u/forget/WWW/datagcm/datafile" ! default value
+      call getin("datadir",datafile) ! in case user specified another path
 
       CALL datareadnc(relief,phis,alb,surfith,zmeaS,zstdS,zsigS,zgamS,
@@ -499,9 +505,9 @@
 
         write(*,*)
-        write(*,*) modif(1:lnblnk(modif)) , ' : '
+        write(*,*) trim(modif) , ' : '
 
 c       'flat : no topography ("aquaplanet")'
 c       -------------------------------------
-        if (modif(1:lnblnk(modif)) .eq. 'flat') then
+        if (trim(modif) .eq. 'flat') then
 c         set topo to zero 
           CALL initial0(ip1jmp1,z_reel)
@@ -537,5 +543,5 @@
 c       bilball : albedo, inertie thermique uniforme
 c       --------------------------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'bilball') then
+        else if (trim(modif) .eq. 'bilball') then
           write(*,*) 'constante albedo and iner.therm:'
           write(*,*) 'New value for albedo (ex: 0.25) ?'
@@ -564,5 +570,5 @@
 c       coldspole : sous-sol de la calotte sud toujours froid
 c       -----------------------------------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'coldspole') then
+        else if (trim(modif) .eq. 'coldspole') then
           write(*,*)'new value for the subsurface temperature',
      &   ' beneath the permanent southern polar cap ? (eg: 141 K)'
@@ -615,5 +621,5 @@
 c       ptot : Modification of the total pressure: ice + current atmosphere 
 c       -------------------------------------------------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'ptot') then
+        else if (trim(modif) .eq. 'ptot') then
 
 c         calcul de la pression totale glace + atm actuelle
@@ -699,5 +705,5 @@
 c       q=0 : set tracers to zero
 c       -------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'q=0') then
+        else if (trim(modif) .eq. 'q=0') then
 c          mise a 0 des q (traceurs)
           write(*,*) 'Tracers set to 0 (1.E-30 in fact)'
@@ -721,5 +727,5 @@
 c       q=x : initialise tracer manually 
 c       --------------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'q=x') then
+        else if (trim(modif) .eq. 'q=x') then
              write(*,*) 'Which tracer do you want to modify ?'
              do iq=1,nqmx
@@ -747,5 +753,5 @@
 c       ini_q : Initialize tracers for chemistry
 c       -----------------------------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'ini_q') then
+        else if (trim(modif) .eq. 'ini_q') then
 c         For more than 32 layers, possible to initiate thermosphere only     
           thermo=0
@@ -779,5 +785,5 @@
 c       ini_q-H2O : as above exept for the water vapour tracer 
 c       ------------------------------------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'ini_q-H2O') then
+        else if (trim(modif) .eq. 'ini_q-H2O') then
           ! for more than 32 layers, possible to initiate thermosphere only     
           thermo=0
@@ -812,5 +818,5 @@
 c       ini_q-iceH2O : as above exept for ice et H2O
 c       -----------------------------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'ini_q-iceH2O') then
+        else if (trim(modif) .eq. 'ini_q-iceH2O') then
 c         For more than 32 layers, possible to initiate thermosphere only     
           thermo=0
@@ -846,5 +852,5 @@
 c      wetstart : wet atmosphere with a north to south gradient
 c      --------------------------------------------------------
-       else if (modif(1:lnblnk(modif)) .eq. 'wetstart') then
+       else if (trim(modif) .eq. 'wetstart') then
         ! check that there is indeed a water vapor tracer
         if (igcm_h2o_vap.eq.0) then
@@ -867,5 +873,5 @@
 c      noglacier : remove tropical water ice (to initialize high res sim)
 c      --------------------------------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'noglacier') then
+        else if (trim(modif) .eq. 'noglacier') then
            do ig=1,ngridmx
              j=(ig-2)/iim +2
@@ -880,5 +886,5 @@
 c      watercapn : H20 ice on permanent northern cap
 c      --------------------------------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'watercapn') then
+        else if (trim(modif) .eq. 'watercapn') then
            do ig=1,ngridmx
              j=(ig-2)/iim +2
@@ -895,5 +901,5 @@
 c      watercaps : H20 ice on permanent southern cap
 c      -------------------------------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'watercaps') then
+        else if (trim(modif) .eq. 'watercaps') then
            do ig=1,ngridmx
                j=(ig-2)/iim +2
@@ -910,5 +916,5 @@
 c       isotherm : Isothermal temperatures and no winds
 c       ------------------------------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'isotherm') then
+        else if (trim(modif) .eq. 'isotherm') then
 
           write(*,*)'Isothermal temperature of the atmosphere, 
@@ -933,5 +939,5 @@
 c       co2ice=0 : remove CO2 polar ice caps'
 c       ------------------------------------------------
-        else if (modif(1:lnblnk(modif)) .eq. 'co2ice=0') then
+        else if (trim(modif) .eq. 'co2ice=0') then
            do ig=1,ngridmx
               co2ice(ig)=0
@@ -942,5 +948,5 @@
 !       ----------------------------------------------------------------------
 
-	else if (modif(1:lnblnk(modif)).eq.'therm_ini_s') then
+	else if (trim(modif).eq.'therm_ini_s') then
 !          write(*,*)"surfithfi(1):",surfithfi(1)
 	  do isoil=1,nsoilmx
@@ -965,5 +971,5 @@
 !       ------------------------------------------------------------
 
-	else if (modif(1:lnblnk(modif)).eq.'subsoilice_n') then
+	else if (trim(modif).eq.'subsoilice_n') then
 
          write(*,*)'From which latitude (in deg.), up to the north pole,
@@ -1078,5 +1084,5 @@
 !       ------------------------------------------------------------
 
-	else if (modif(1:lnblnk(modif)).eq.'subsoilice_s') then
+	else if (trim(modif).eq.'subsoilice_s') then
 
          write(*,*)'From which latitude (in deg.), down to the south pol
@@ -1179,5 +1185,5 @@
 c       'mons_ice' : use MONS data to build subsurface ice table
 c       --------------------------------------------------------
-        else if (modif(1:lnblnk(modif)).eq.'mons_ice') then
+        else if (trim(modif).eq.'mons_ice') then
         
        ! 1. Load MONS data
@@ -1285,5 +1291,5 @@
 	else
           write(*,*) '       Unknown (misspelled?) option!!!'
-        end if ! of if (modif(1:lnblnk(modif)) .eq. '...') elseif ...
+        end if ! of if (trim(modif) .eq. '...') elseif ...
 	
        enddo ! of do ! infinite loop on liste of changes
Index: trunk/LMDZ.MARS/libf/phymars/datareadnc.F
===================================================================
--- trunk/LMDZ.MARS/libf/phymars/datareadnc.F	(revision 163)
+++ trunk/LMDZ.MARS/libf/phymars/datareadnc.F	(revision 164)
@@ -123,5 +123,7 @@
         write(*,*)'1) You can set this path in the callphys.def file:'
         write(*,*)'   datadir=/path/to/the/datafiles'
-        write(*,*)'2) If necessary surface.nc (and other datafiles)'
+        write(*,*)'   OR specify the path to use in callphys.def, as:'
+        write(*,*)'   datadir=/path/to/the/directory'
+        write(*,*)'2) If necessary, surface.nc (and other datafiles)'
         write(*,*)'   can be obtained online on:'
         write(*,*)' http://www.lmd.jussieu.fr/~forget/datagcm/datafile'
Index: trunk/LMDZ.MARS/libf/phymars/initracer.F
===================================================================
--- trunk/LMDZ.MARS/libf/phymars/initracer.F	(revision 163)
+++ trunk/LMDZ.MARS/libf/phymars/initracer.F	(revision 164)
@@ -111,6 +111,11 @@
               write(*,*) 'initracer: error expected dustbin=2'
             else
-              noms(1)='dust_mass'   ! dust mass mixing ratio
-              noms(2)='dust_number' ! dust number mixing ratio
+!              noms(1)='dust_mass'   ! dust mass mixing ratio
+!              noms(2)='dust_number' ! dust number mixing ratio
+! same as above, but avoid explict possible out-of-bounds on array
+               noms(1)='dust_mass'   ! dust mass mixing ratio
+               do iq=2,2
+               noms(iq)='dust_number' ! dust number mixing ratio
+               enddo
             endif
           endif
@@ -120,6 +125,11 @@
           noms(nqmx)='h2o_vap'
           mmol(nqmx)=18.
-          noms(nqmx-1)='h2o_ice'
-          mmol(nqmx-1)=18.
+!            noms(nqmx-1)='h2o_ice'
+!            mmol(nqmx-1)=18.
+          !"loop" to avoid potential out-of-bounds in array
+          do iq=nqmx-1,nqmx-1
+            noms(iq)='h2o_ice'
+            mmol(iq)=18.
+          enddo
         endif
         ! 3. Chemistry
@@ -157,5 +167,8 @@
       if (oldnames.and.water) then
         write(*,*)'initracer: moving surface water ice to index ',nqmx-1
-        qsurf(1:ngridmx,nqmx-1)=qsurf(1:ngridmx,nqmx)
+        ! "loop" to avoid potential out-of-bounds on arrays
+        do iq=nqmx-1,nqmx-1
+          qsurf(1:ngridmx,iq)=qsurf(1:ngridmx,iq+1)
+        enddo
         qsurf(1:ngridmx,nqmx)=0
       endif 
Index: trunk/LMDZ.MARS/libf/phymars/iniwrite.F
===================================================================
--- trunk/LMDZ.MARS/libf/phymars/iniwrite.F	(revision 163)
+++ trunk/LMDZ.MARS/libf/phymars/iniwrite.F	(revision 164)
@@ -36,7 +36,7 @@
 c   ----------
 
-      integer nid        ! NetCDF file ID
-      INTEGER*4 idayref  ! date (initial date for this run)
-      REAL phis(ip1jmp1) ! surface geopotential
+      integer,intent(in) :: nid        ! NetCDF file ID
+      INTEGER*4,intent(in) :: idayref  ! date (initial date for this run)
+      real,intent(in) :: phis(ip1jmp1) ! surface geopotential
 
 c   Local:
Index: trunk/LMDZ.MARS/libf/phymars/physdem1.F
===================================================================
--- trunk/LMDZ.MARS/libf/phymars/physdem1.F	(revision 163)
+++ trunk/LMDZ.MARS/libf/phymars/physdem1.F	(revision 164)
@@ -565,7 +565,10 @@
         ! back to qsurf(nqmx)
         IF (water) THEN
+          !"loop" to avoid potential out-of-bounds on arrays
           write(*,*)'physdem1: moving surface water ice to index ',nqmx
-          qsurf(1:ngridmx,nqmx)=qsurf(1:ngridmx,nqmx-1)
-          qsurf(1:ngridmx,nqmx-1)=0
+          do iq=nqmx,nqmx
+          qsurf(1:ngridmx,iq)=qsurf(1:ngridmx,iq-1)
+          qsurf(1:ngridmx,iq-1)=0
+          enddo
         ENDIF
       endif ! of if (count.eq.nqmx)
Index: trunk/LMDZ.MARS/libf/phymars/physiq.F
===================================================================
--- trunk/LMDZ.MARS/libf/phymars/physiq.F	(revision 163)
+++ trunk/LMDZ.MARS/libf/phymars/physiq.F	(revision 164)
@@ -1308,11 +1308,11 @@
 c        call WRITEDIAGFI(ngrid,"emis","Surface emissivity","w.m-1",2,
 c    &                  emis)
-         call WRITEDIAGFI(ngrid,"pplay","Pressure","Pa",3,zplay)
-         call WRITEDIAGFI(ngrid,"pplev","Pressure","Pa",3,zplev)
+!         call WRITEDIAGFI(ngrid,"pplay","Pressure","Pa",3,zplay)
+!         call WRITEDIAGFI(ngrid,"pplev","Pressure","Pa",3,zplev)
          call WRITEDIAGFI(ngrid,"tsurf","Surface temperature","K",2,
      &                  tsurf)
          call WRITEDIAGFI(ngrid,"ps","surface pressure","Pa",2,ps)
-c        call WRITEDIAGFI(ngrid,"co2ice","co2 ice thickness","kg.m-2",2,
-c    &                  co2ice)
+        call WRITEDIAGFI(ngrid,"co2ice","co2 ice thickness","kg.m-2",2,
+     &                  co2ice)
 c         call WRITEDIAGFI(ngrid,"temp7","temperature in layer 7",
 c     &                  "K",2,zt(1,7))
@@ -1331,5 +1331,5 @@
          call WRITEDIAGFI(ngrid,"rho","density","none",3,rho)
 c        call WRITEDIAGFI(ngrid,"q2","q2","kg.m-3",3,q2)
-        call WRITEDIAGFI(ngrid,'Teta','T potentielle','K',3,zh)
+!        call WRITEDIAGFI(ngrid,'Teta','T potentielle','K',3,zh)
 c        call WRITEDIAGFI(ngrid,"pressure","Pressure","Pa",3,pplay)
 c        call WRITEDIAGFI(ngrid,"ssurf","Surface stress","N.m-2",2,
@@ -1536,6 +1536,8 @@
      &                  zq(ig,l,1)*(pplev(ig,l)-pplev(ig,l+1))/g
          if (nqmx .gt. 1) then
+             iq=2 ! to avoid out-of-bounds spotting by picky compilers
+                  ! when gcm is compiled with only one tracer
              dummycol(ig)=dummycol(ig)+
-     &                  zq(ig,l,2)*(pplev(ig,l)-pplev(ig,l+1))/g
+     &                  zq(ig,l,iq)*(pplev(ig,l)-pplev(ig,l+1))/g
          endif
          enddo
Index: trunk/LMDZ.MARS/makegcm_ifort
===================================================================
--- trunk/LMDZ.MARS/makegcm_ifort	(revision 163)
+++ trunk/LMDZ.MARS/makegcm_ifort	(revision 164)
@@ -22,9 +22,10 @@
 # default LMDGCM to where makegcm script is located:
 #setenv LMDGCM "`dirname $0`"
+setenv LMDGCM /san/home/millour/Planeto/test_mars_141/LMDZ.MARS
 # You may set LIBOGCM to something else; otherwise we default to:
-#setenv LIBOGCM $LMDGCM/libo
+setenv LIBOGCM $LMDGCM/libo
 ## NetCDF Libraries: what follows is OK on GNOME
-#  setenv NCDFLIB /usr/local/lib
-#  setenv NCDFINC /usr/local/include
+  setenv NCDFLIB /usr/local/lib
+  setenv NCDFINC /usr/local/include
 ####
 
@@ -180,5 +181,7 @@
    set optimtru90=" -O2 -ip -mkl=sequential -align common "
 #   set opt_link=" -Mfree -lpgf90 -lpgftnrtl -lpghpf -lpghpf2 -L$NCDFLIB -lnetcdf -Bstatic "
-   set mod_loc_dir=$LIBOGCM
+#   set mod_loc_dir=$LIBOGCM
+# ifort puts mod files in local directory
+   set mod_loc_dir="."
    set mod_suffix=mod
 else if $NEC then
@@ -709,5 +712,5 @@
  set optim="$optim -I${libo}"
  set optim90="$optim90 -I${libo}"
- set optimtru90="$optimtru90 -ffree-form -I${libo}"
+ set optimtru90="$optimtru90 -I${libo}"
 # Ehouarn: remove set mod_loc_dir def below; mod_loc_dir=$localdir (set above)
 # set mod_loc_dir=$libo
