source: branches/GRISLIv3/SOURCES/neffect-0.4.f90 @ 465

Last change on this file since 465 was 465, checked in by aquiquet, 4 months ago

Cleaning branch: start cleaning module3D

File size: 4.7 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!<
13subroutine Neffect
14
15  !     ===============================================================
16  !     *    Pression effective                 Cat   18 janvier 2005
17  !     ===============================================================
18
19  use param_phy_mod, only: ro,row,g
20  use runparam, only: itracebug
21  use module3D_phy, only: flotmx,flotmy,coefmxbmelt,coefmybmelt,hwater,neffmx,neffmy,hmx,hmy
22  use geography, only: nx,ny
23!  use module_choix, only: eaubasale <- afq, not clean, I prefer to use  explicitly eau_basale
24  use eau_basale, only: hwatermax,eaubasale
25
26  implicit none
27
28  integer :: i,j
29  !cdc      real :: Nefmin=1.e5                  ! Pression effective minimum (~ 10 m de glace)
30  !afq  - no longer used - real :: Nefmin=0.  !cdc 22/01/2019 on autorise une pression effective nulle
31  real :: nefminfrac = 0. ! put 0.04 to have something similar to PISM
32
33  if (itracebug.eq.1)  call tracebug(' Entree dans routine neffect')
34
35
36
37
38  ! le calcul de pente est fait dans diffusiv
39
40
41  ! calcul de la hauteur d'eau dans eaubasale
42
43
44  call eaubasale
45
46  if (itracebug.eq.1)  call tracebug(' Apres eau basale')
47  ! calcul de la presion effective Neffmy
48
49  do j=2,ny
50     do i=2,nx-1
51        pose_y :    if (.not.flotmy(i,j)) then
52
53           !     coefmybmelt est la hauteur d'eau au point considere
54           !     moyenne pondérée des points voisins.
55           !     coefmybmelt est utilise dans la vitesse de glissement
56
57           !    ancienne version : moyenne large
58           !             COEFMYBMELT(I,J)=(HWATER(I,J)+HWATER(I,J-1))/4.+
59           !     &               ((HWATER(I+1,J)+HWATER(I+1,J-1))+
60           !     &                (HWATER(I-1,J)+HWATER(I-1,J-1)))/8.
61
62           !    nouvelle version, moyenne sur les deux plus proches voisins pour mieux
63           !    localiser les fleuves de glace
64
65           coefmybmelt(i,j)=(hwater(i,j)+HWATER(i,j-1))*0.5
66           Neffmy(i,j)=ro*g*hmy(i,j)-row*g*coefmybmelt(i,j)
67!!!!!        Neffmy(i,j)=RO*G*HMY(I,J)-pwater(i,j)
68
69           !             la pression effective mini est Nefmin (en Pa) pour la glace posée
70! afq --           Neffmy(i,j)=max(Neffmy(i,j),Nefmin)
71           Neffmy(i,j)=max(Neffmy(i,j),nefminfrac*RO*G*HMY(I,J)) !PISM: nefminfrac=4%
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
94        pose_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! afq --           Neffmx(i,j)=max(Neffmx(i,j),Nefmin)
114           Neffmx(i,j)=max(Neffmx(i,j),nefminfrac*RO*G*HMX(I,J)) !PISM: nefminfrac=4%
115
116           !     coefmybmelt est utilise dans la vitesse de glissement
117           !     et pour cela est limité par hwatermax
118           coefmxbmelt(i,j)=min(hwatermax,coefmxbmelt(i,j))
119
120
121
122
123           ! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat
124           ! pour utiliser les nouvelles vitesses.
125
126        else
127           !           points completement flottants
128           Neffmx(i,j)=0.
129
130        endif  pose_x
131     end do
132  end do
133
134  ! nom_table='pwater'
135  ! table_interm=ROW*G*COEFMXBMELT/10e5     
136  ! call printtable_r(table_interm,nom_table)         
137
138  if (itracebug.eq.1)  call tracebug(' Sortie routine neffect')
139  return
140end subroutine Neffect
Note: See TracBrowser for help on using the repository browser.