source: branches/iLoveclim/SOURCES/neffect-0.4.f90 @ 89

Last change on this file since 89 was 77, checked in by dumas, 8 years ago

Merge branche iLOVECLIM sur rev 76

File size: 3.8 KB
Line 
1!> \file neffect-0.4.f90
2!! Calcule la pression effective
3!<
4
5!> SUBROUTINE: Neffect()
6!! \author Catherine
7!! \date 18 janvier 2005
8!! @note Cette routine permet de calculer la pression effective
9!! @note Used modules:
10!! @note    - use module3D_phy
11!! @note    - use module_choix
12!! @note    - use printtable
13!<
14      subroutine Neffect()
15
16!     ===============================================================
17!     *    Pression effective                 Cat   18 janvier 2005
18!     ===============================================================
19
20       USE module3D_phy
21       use module_choix
22       use printtable
23
24      implicit none
25
26!      real,dimension(nx,ny) :: table_interm
27      real :: Nefmin=1.e5                  ! Pression effective minimum (~ 10 m de glace)
28
29if (itracebug.eq.1)  call tracebug(' Entree dans routine neffect')
30
31
32
33
34! le calcul de pente est fait dans diffusiv
35
36   
37! calcul de la hauteur d'eau dans eaubasale
38
39
40      call  EAUBASALE
41
42if (itracebug.eq.1)  call tracebug(' Apres eau basale')
43! calcul de la presion effective Neffmy
44
45        do J=2,NY
46          do I=2,NX-1
47pose_y :    if (.not.flotmy(i,j)) then
48
49!     coefmybmelt est la hauteur d'eau au point considere
50!     moyenne pondérée des points voisins.
51!     coefmybmelt est utilise dans la vitesse de glissement
52
53!    ancienne version : moyenne large
54!             COEFMYBMELT(I,J)=(HWATER(I,J)+HWATER(I,J-1))/4.+
55!     &               ((HWATER(I+1,J)+HWATER(I+1,J-1))+
56!     &                (HWATER(I-1,J)+HWATER(I-1,J-1)))/8.
57
58!    nouvelle version, moyenne sur les deux plus proches voisins pour mieux
59!    localiser les fleuves de glace
60
61             COEFMYBMELT(I,J)=(HWATER(I,J)+HWATER(I,J-1))*0.5
62             Neffmy(i,j)=RO*G*HMY(I,J)-ROW*G*COEFMYBMELT(I,J)
63!!!!!        Neffmy(i,j)=RO*G*HMY(I,J)-pwater(i,j)
64
65!             la pression effective mini est Nefmin (en Pa) pour la glace posée
66             Neffmy(i,j)=max(Neffmy(i,j),Nefmin)
67
68!     coefmybmelt est utilise dans la vitesse de glissement
69!     et pour cela est limité par hwatermax
70             COEFMYBMELT(i,j)=min(hwatermax,COEFMYBMELT(i,j))
71
72
73
74! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat
75! pour utiliser les nouvelles vitesses.
76
77          else
78!           points completement flottants
79              Neffmy(i,j)=0.
80
81           endif  pose_y
82        end do
83      end do
84
85! calcul de la presion effective Neffmx
86
87        do J=2,NY-1
88          do I=2,NX
89pose_x :       if (.not.flotmx(i,j)) then
90
91!     coefmybmelt est la hauteur d'eau au point considere
92!     moyenne pondérée des points voisins.
93!     coefmybmelt est utilise dans la vitesse de glissement
94
95!    ancienne version : moyenne large
96!             COEFMYBMELT(I,J)=(HWATER(I,J)+HWATER(I-1,J))/4.+
97!     &               ((HWATER(I,J+1)+HWATER(I-1,J+1))+
98!     &                (HWATER(I,J-1)+HWATER(I-1,J-1)))/8.
99
100!    nouvelle version, moyenne sur les deux plus proches voisins pour mieux
101!    localiser les fleuves de glace
102
103             COEFMXBMELT(I,J)=(HWATER(I,J)+HWATER(I-1,J))*0.5
104             Neffmx(i,j)=RO*G*HMX(I,J)-ROW*G*COEFMXBMELT(I,J)
105!!!!!        Neffmx(i,j)=RO*G*HMX(I,J)-pwater(i,j)
106
107!             la pression effective mini est 1 Pascal pour la glace posée
108             Neffmx(i,j)=max(Neffmx(i,j),Nefmin)
109
110!     coefmybmelt est utilise dans la vitesse de glissement
111!     et pour cela est limité par hwatermax
112             COEFMXBMELT(i,j)=min(hwatermax,COEFMXBMELT(i,j))
113
114
115
116
117! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat
118! pour utiliser les nouvelles vitesses.
119
120           else
121!           points completement flottants
122              Neffmx(i,j)=0.
123 
124           endif  pose_x 
125        end do
126      end do
127
128! nom_table='pwater'
129! table_interm=ROW*G*COEFMXBMELT/10e5     
130! call printtable_r(table_interm,nom_table)         
131   
132 if (itracebug.eq.1)  call tracebug(' Sortie routine neffect')
133      return
134    end subroutine Neffect
Note: See TracBrowser for help on using the repository browser.