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

Last change on this file since 334 was 246, checked in by dumas, 5 years ago

Effective Pressure can be reduced to 0 : nefmin=0.

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