source: trunk/SOURCES/neffect-0.4.f90 @ 23

Last change on this file since 23 was 4, checked in by dumas, 10 years ago

initial import GRISLI trunk

File size: 4.0 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 pwater,N1,N2,XFRAC,SLOPEM,uxmy,uymx
27
28      real XFRAC,SLOPEM,uxmy,uymx
29!     real,dimension(nx,ny) :: pwater !!! global var
30      real pentem,toslid,topente,neffoto,fonction_N
31      real,dimension(nx,ny) :: table_interm
32      real :: Nefmin=1.e5                  ! Pression effective minimum (~ 10 m de glace)
33
34if (itracebug.eq.1)  call tracebug(' Entree dans routine neffect')
35
36
37
38
39! le calcul de pente est fait dans diffusiv
40
41   
42! calcul de la hauteur d'eau dans eaubasale
43
44
45      call  EAUBASALE
46
47if (itracebug.eq.1)  call tracebug(' Apres eau basale')
48! calcul de la presion effective Neffmy
49
50        do J=2,NY
51          do I=2,NX-1
52pose_y :    if (.not.flotmy(i,j)) then
53
54!     coefmybmelt est la hauteur d'eau au point considere
55!     moyenne pondérée des points voisins.
56!     coefmybmelt est utilise dans la vitesse de glissement
57
58!    ancienne version : moyenne large
59!             COEFMYBMELT(I,J)=(HWATER(I,J)+HWATER(I,J-1))/4.+
60!     &               ((HWATER(I+1,J)+HWATER(I+1,J-1))+
61!     &                (HWATER(I-1,J)+HWATER(I-1,J-1)))/8.
62
63!    nouvelle version, moyenne sur les deux plus proches voisins pour mieux
64!    localiser les fleuves de glace
65
66             COEFMYBMELT(I,J)=(HWATER(I,J)+HWATER(I,J-1))*0.5
67             Neffmy(i,j)=RO*G*HMY(I,J)-ROW*G*COEFMYBMELT(I,J)
68!!!!!        Neffmy(i,j)=RO*G*HMY(I,J)-pwater(i,j)
69
70!             la pression effective mini est Nefmin (en Pa) pour la glace posée
71             Neffmy(i,j)=max(Neffmy(i,j),Nefmin)
72
73!     coefmybmelt est utilise dans la vitesse de glissement
74!     et pour cela est limité par hwatermax
75             COEFMYBMELT(i,j)=min(hwatermax,COEFMYBMELT(i,j))
76
77
78
79! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat
80! pour utiliser les nouvelles vitesses.
81
82          else
83!           points completement flottants
84              Neffmy(i,j)=0.
85
86           endif  pose_y
87        end do
88      end do
89
90! calcul de la presion effective Neffmx
91
92        do J=2,NY-1
93          do I=2,NX
94pose_x :       if (.not.flotmx(i,j)) then
95
96!     coefmybmelt est la hauteur d'eau au point considere
97!     moyenne pondérée des points voisins.
98!     coefmybmelt est utilise dans la vitesse de glissement
99
100!    ancienne version : moyenne large
101!             COEFMYBMELT(I,J)=(HWATER(I,J)+HWATER(I-1,J))/4.+
102!     &               ((HWATER(I,J+1)+HWATER(I-1,J+1))+
103!     &                (HWATER(I,J-1)+HWATER(I-1,J-1)))/8.
104
105!    nouvelle version, moyenne sur les deux plus proches voisins pour mieux
106!    localiser les fleuves de glace
107
108             COEFMXBMELT(I,J)=(HWATER(I,J)+HWATER(I-1,J))*0.5
109             Neffmx(i,j)=RO*G*HMX(I,J)-ROW*G*COEFMXBMELT(I,J)
110!!!!!        Neffmx(i,j)=RO*G*HMX(I,J)-pwater(i,j)
111
112!             la pression effective mini est 1 Pascal pour la glace posée
113             Neffmx(i,j)=max(Neffmx(i,j),Nefmin)
114
115!     coefmybmelt est utilise dans la vitesse de glissement
116!     et pour cela est limité par hwatermax
117             COEFMXBMELT(i,j)=min(hwatermax,COEFMXBMELT(i,j))
118
119
120
121
122! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat
123! pour utiliser les nouvelles vitesses.
124
125           else
126!           points completement flottants
127              Neffmx(i,j)=0.
128 
129           endif  pose_x 
130        end do
131      end do
132
133! nom_table='pwater'
134! table_interm=ROW*G*COEFMXBMELT/10e5     
135! call printtable_r(table_interm,nom_table)         
136   
137 if (itracebug.eq.1)  call tracebug(' Sortie routine neffect')
138      return
139    end subroutine Neffect
Note: See TracBrowser for help on using the repository browser.