Index: branches/iLoveclim/SOURCES/bmelt-seuil-profondeur_mod.f90
===================================================================
--- branches/iLoveclim/SOURCES/bmelt-seuil-profondeur_mod.f90	(revision 77)
+++ branches/iLoveclim/SOURCES/bmelt-seuil-profondeur_mod.f90	(revision 146)
@@ -16,160 +16,164 @@
 module  bmelt_seuil_prof         
 
-! prametrise la fusion basale (ice shelves)
-! Pour l'actuel : 2 valeurs  pour 2 domaines de profondeur
-! + une valeur pour bmgrz
-! A choisir dans le module_choix
+  ! prametrise la fusion basale (ice shelves)
+  ! Pour l'actuel : 2 valeurs  pour 2 domaines de profondeur
+  ! + une valeur pour bmgrz
+  ! A choisir dans le module_choix
 
-use module3d_phy
+  use module3d_phy
 
 
-implicit none
+  implicit none
 
-real :: bm_grz                        !< valeur prescrite a la grounding zone
-real,dimension(nx,ny) ::  bmgrz       !< tabelau fusion basale a la grounding zone
+  real :: bm_grz                        !< valeur prescrite a la grounding zone
+  real,dimension(nx,ny) ::  bmgrz       !< tabelau fusion basale a la grounding zone
 
-real :: bmshelf_plateau               !< valeur prescrite sur le plateau cont.
-real :: bmshelf_abysses               !< valeur prescrite au dessus de l'ocean profond
-real :: depth_talus                   !< profondeur de transition 
-real,dimension(nx,ny) ::  bmshelf     !< tableau fusion basale sous shelf
+  real :: bmshelf_plateau               !< valeur prescrite sur le plateau cont.
+  real :: bmshelf_abysses               !< valeur prescrite au dessus de l'ocean profond
+  real :: depth_talus                   !< profondeur de transition 
+  real,dimension(nx,ny) ::  bmshelf     !< tableau fusion basale sous shelf
 
 
 contains
-!-------------------------------------------------------------------------------
-!> SUBROUTINE: init_bmelt
-!! Cette routine fait l'initialisation pour la fusion basale.
-!! @note Elle est appelée par inputfile-vec-0.5.f90
-!!
-!>
-subroutine init_bmelt
+  !-------------------------------------------------------------------------------
+  !> SUBROUTINE: init_bmelt
+  !! Cette routine fait l'initialisation pour la fusion basale.
+  !! @note Elle est appelée par inputfile-vec-0.5.f90
+  !!
+  !>
+  subroutine init_bmelt
 
 
 
-! Cette routine fait l'initialisation pour la fusion basale.
-! Elle est appelée par inputfile-vec-0.5.f90
+    ! Cette routine fait l'initialisation pour la fusion basale.
+    ! Elle est appelée par inputfile-vec-0.5.f90
 
 
-namelist/bmelt_seuil/bm_grz,bmshelf_plateau,bmshelf_abysses,depth_talus
+    namelist/bmelt_seuil/bm_grz,bmshelf_plateau,bmshelf_abysses,depth_talus
 
-if (itracebug.eq.1)  call tracebug('entree dans init_bmelt de bmelt_seuil_prof')
+    if (itracebug.eq.1)  call tracebug('entree dans init_bmelt de bmelt_seuil_prof')
 
-rewind(num_param)        ! pour revenir au debut du fichier param_list.dat
-read(num_param,bmelt_seuil)
-write(num_rep_42,bmelt_seuil)
+    rewind(num_param)        ! pour revenir au debut du fichier param_list.dat
+    read(num_param,bmelt_seuil)
+    write(num_rep_42,bmelt_seuil)
 
-!    ecriture dans le fichier parametres
+    !    ecriture dans le fichier parametres
 
 428 format(A)
 
-write(num_rep_42,428)'!___________________________________________________________' 
-write(num_rep_42,428) '&bmelt_seuil                     ! module  bmelt_seuil_prof'
-write(num_rep_42,*)   'bm_grz           =',bm_grz
-write(num_rep_42,*)   'bmshelf_plateau  =',bmshelf_plateau
-write(num_rep_42,*)   'bmshelf_abysses  =',bmshelf_abysses
-write(num_rep_42,*)   'depth_talus      =',depth_talus
-write(num_rep_42,*)'/'                      
-write(num_rep_42,428) '! Pour l actuel : bm_grz a la grounding line'
-write(num_rep_42,428) '!                 bmshelf_plateau sur le plateau continental'
-write(num_rep_42,428) '!                 bmshelf_abysses pour les grandes profondeurs'
-write(num_rep_42,428) '!       depth_talus, negative, separation entre les 2 domaines'
-write(num_rep_42,*)
-write(num_rep_42,428)'!___________________________________________________________' 
+    write(num_rep_42,428)'!___________________________________________________________' 
+    write(num_rep_42,428) '&bmelt_seuil                     ! module  bmelt_seuil_prof'
+    write(num_rep_42,*)   'bm_grz           =',bm_grz
+    write(num_rep_42,*)   'bmshelf_plateau  =',bmshelf_plateau
+    write(num_rep_42,*)   'bmshelf_abysses  =',bmshelf_abysses
+    write(num_rep_42,*)   'depth_talus      =',depth_talus
+    write(num_rep_42,*)'/'                      
+    write(num_rep_42,428) '! Pour l actuel : bm_grz a la grounding line'
+    write(num_rep_42,428) '!                 bmshelf_plateau sur le plateau continental'
+    write(num_rep_42,428) '!                 bmshelf_abysses pour les grandes profondeurs'
+    write(num_rep_42,428) '!       depth_talus, negative, separation entre les 2 domaines'
+    write(num_rep_42,*)
+    write(num_rep_42,428)'!___________________________________________________________' 
 
 
 
-bmgrz(:,:) = bm_grz
+    bmgrz(:,:) = bm_grz
 
-where (Bsoc0(:,:).lt.depth_talus)
-   bmshelf(:,:)=bmshelf_abysses
-elsewhere
-   bmshelf(:,:)=bmshelf_plateau
-end where
+    where (Bsoc0(:,:).lt.depth_talus)
+        bmshelf(:,:)=bmshelf_abysses
+    elsewhere
+        bmshelf(:,:)=bmshelf_plateau
+    end where
 
-debug_3D(:,:,34)=bmshelf(:,:)
-return
-end subroutine init_bmelt
+    debug_3D(:,:,34)=bmshelf(:,:)
+    return
+  end subroutine init_bmelt
 
-!________________________________________________________________________________
+  !________________________________________________________________________________
 
-!> SUBROUTINE: bmeltshelf
-!! Cette routine calcule la fusion basale proprement dite pour les points flottants
-!! @note coefbmshelf a ete calcule par forclim et permet de faire varier en fonction du climat
-!>
+  !> SUBROUTINE: bmeltshelf
+  !! Cette routine calcule la fusion basale proprement dite pour les points flottants
+  !! @note coefbmshelf a ete calcule par forclim et permet de faire varier en fonction du climat
+  !>
 
-subroutine bmeltshelf
+  subroutine bmeltshelf
 
 
-! cette routine calcule la fusion basale proprement dite pour les points flottants
-! coefbmshelf a ete calcule par forclim et permet de faire varier en fonction du climat
+    ! cette routine calcule la fusion basale proprement dite pour les points flottants
+    ! coefbmshelf a ete calcule par forclim et permet de faire varier en fonction du climat
 
-integer :: ngr           ! nombre de voisins flottants
-real    :: coef_talus    ! pour ne pas changer la fusion au dessus de l'ocean profond
+    integer :: ngr           ! nombre de voisins flottants
+    real    :: coef_talus    ! pour ne pas changer la fusion au dessus de l'ocean profond
 
-if (itracebug.eq.1)  call tracebug('entree dans bmeltshelf de bmelt_seuil_prof')
+    if (itracebug.eq.1)  call tracebug('entree dans bmeltshelf de bmelt_seuil_prof')
 
-where (Bsoc0(:,:).lt.depth_talus)
-   bmshelf(:,:)=bmshelf_abysses
-elsewhere
-   bmshelf(:,:)=bmshelf_plateau
-end where
+    where (Bsoc0(:,:).lt.depth_talus)
+        bmshelf(:,:)=bmshelf_abysses
+    elsewhere
+        bmshelf(:,:)=bmshelf_plateau
+    end where
 
-do j=1,ny
-   do i=1,nx
+    do j=1,ny
+      do i=1,nx
 
-talus_nochange : if (Bsoc0(i,j).lt.depth_talus) then 
-           coef_talus = 1         ! pas de changement au dessus de l'ocecan profond
+        talus_nochange: if (Bsoc0(i,j).lt.depth_talus) then 
+            coef_talus = 1         ! pas de changement au dessus de l'ocecan profond
         else
-           coef_talus = coefbmshelf
+            coef_talus = coefbmshelf
         endif talus_nochange
 
 
-shelf:    if (flot(i,j)) then    ! partie flottante
+        shelf: if (flot(i,j)) then    ! partie flottante
 
             bmelt(i,j)=coef_talus*bmshelf(i,j)
 
-! fbm est vrai si le point est flottant mais un des voisins est pose
-! calcule dans flottab
+            ! fbm est vrai si le point est flottant mais un des voisins est pose
+            ! calcule dans flottab
 
             if (fbm(i,j)) then 
-               bmelt(i,j)=coef_talus*bmgrz(i,j)
-            endif   
+                bmelt(i,j)=coef_talus*bmgrz(i,j)
+            endif
 
 
 
-! ATTENTION le bloc suivant sert a determiner la fusion basale d'equilibre
-! pour les shelves stationnaires
+            ! ATTENTION le bloc suivant sert a determiner la fusion basale d'equilibre
+            ! pour les shelves stationnaires
 
-  if (igrdline.eq.1) then
-     corrbmelt(i,j)=hdot(i,j)+bmelt(i,j)   ! le bmelt d'equilibre
-     debug_3D(i,j,28)=corrbmelt(i,j)
-  endif
+            if ((igrdline.eq.1).and.(ibmelt_inv.eq.1)) then
+                !     corrbmelt(i,j)=hdot(i,j)+bmelt(i,j)   ! le bmelt d'equilibre
+                !     bmelt(i,j)=corrbmelt(i,j)
+                corrbmelt(i,j)=corrbmelt(i,j)+hdot(i,j)*0.85
+                bmelt(i,j)=bmelt(i,j)+corrbmelt(i,j)     
+            endif
 
 
         else                   ! point posé, on compte le nombre de voisins flottants
-           ngr=0
-           if ((i.ne.1).and.(i.ne.nx).and.(j.ne.1).and.(j.ne.ny)) then 
-              if (flot(i+1,j)) ngr=ngr+1
-              if (flot(i-1,j)) ngr=ngr+1
-              if (flot(i,j+1)) ngr=ngr+1
-              if (flot(i,j-1)) ngr=ngr+1
-           end if
-              
+            ngr=0
+            if ((i.ne.1).and.(i.ne.nx).and.(j.ne.1).and.(j.ne.ny)) then 
+                if (flot(i+1,j)) ngr=ngr+1
+                if (flot(i-1,j)) ngr=ngr+1
+                if (flot(i,j+1)) ngr=ngr+1
+                if (flot(i,j-1)) ngr=ngr+1
+            end if
 
-!   la fusion des points limites est une combinaison entre valeur posée et valeur flottante
-!   en fonction du nombre de points flottants
 
-           bmelt(i,j)= ngr/4.*bmgrz(i,j)*coef_talus+(1.-ngr/4.)*bmelt(i,j)
-         
+            !   la fusion des points limites est une combinaison entre valeur posée et valeur flottante
+            !   en fonction du nombre de points flottants
 
+            bmelt(i,j)= ngr/4.*bmgrz(i,j)*coef_talus+(1.-ngr/4.)*bmelt(i,j)
+
+            if ((igrdline.eq.1).and.(ibmelt_inv.eq.1)) then
+                corrbmelt(i,j)=corrbmelt(i,j)+hdot(i,j)  !*0.85
+                bmelt(i,j)=bmelt(i,j)+corrbmelt(i,j)
+            endif
         endif shelf
-
-      end do 
+      end do
     end do
 
-
-if (igrdline.eq.1) then
-    bmelt(:,:)=0.      ! hdot donne alors le -bmelt
+if ((igrdline.eq.1).and.(ibmelt_inv.eq.0)) then
+    where (i_Hp(:,:).eq.1)
+        bmelt(:,:)=0.    ! hdot donne alors le -bmelt
+    endwhere
 endif
-
 
 return
