!> \file neffect-0.4.f90 !! Calcule la pression effective !< !> SUBROUTINE: Neffect() !! \author Catherine !! \date 18 janvier 2005 !! @note Cette routine permet de calculer la pression effective !! @note Used modules: !! @note - use module3D_phy !! @note - use module_choix !! @note - use printtable !< subroutine Neffect() ! =============================================================== ! * Pression effective Cat 18 janvier 2005 ! =============================================================== USE module3D_phy use module_choix use printtable implicit none !!!! real pwater,N1,N2,XFRAC,SLOPEM,uxmy,uymx real XFRAC,SLOPEM,uxmy,uymx ! real,dimension(nx,ny) :: pwater !!! global var real pentem,toslid,topente,neffoto,fonction_N real,dimension(nx,ny) :: table_interm real :: Nefmin=1.e5 ! Pression effective minimum (~ 10 m de glace) if (itracebug.eq.1) call tracebug(' Entree dans routine neffect') ! le calcul de pente est fait dans diffusiv ! calcul de la hauteur d'eau dans eaubasale call EAUBASALE if (itracebug.eq.1) call tracebug(' Apres eau basale') ! calcul de la presion effective Neffmy do J=2,NY do I=2,NX-1 pose_y : if (.not.flotmy(i,j)) then ! coefmybmelt est la hauteur d'eau au point considere ! moyenne pondérée des points voisins. ! coefmybmelt est utilise dans la vitesse de glissement ! ancienne version : moyenne large ! COEFMYBMELT(I,J)=(HWATER(I,J)+HWATER(I,J-1))/4.+ ! & ((HWATER(I+1,J)+HWATER(I+1,J-1))+ ! & (HWATER(I-1,J)+HWATER(I-1,J-1)))/8. ! nouvelle version, moyenne sur les deux plus proches voisins pour mieux ! localiser les fleuves de glace COEFMYBMELT(I,J)=(HWATER(I,J)+HWATER(I,J-1))*0.5 Neffmy(i,j)=RO*G*HMY(I,J)-ROW*G*COEFMYBMELT(I,J) !!!!! Neffmy(i,j)=RO*G*HMY(I,J)-pwater(i,j) ! la pression effective mini est Nefmin (en Pa) pour la glace posée Neffmy(i,j)=max(Neffmy(i,j),Nefmin) ! coefmybmelt est utilise dans la vitesse de glissement ! et pour cela est limité par hwatermax COEFMYBMELT(i,j)=min(hwatermax,COEFMYBMELT(i,j)) ! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat ! pour utiliser les nouvelles vitesses. else ! points completement flottants Neffmy(i,j)=0. endif pose_y end do end do ! calcul de la presion effective Neffmx do J=2,NY-1 do I=2,NX pose_x : if (.not.flotmx(i,j)) then ! coefmybmelt est la hauteur d'eau au point considere ! moyenne pondérée des points voisins. ! coefmybmelt est utilise dans la vitesse de glissement ! ancienne version : moyenne large ! COEFMYBMELT(I,J)=(HWATER(I,J)+HWATER(I-1,J))/4.+ ! & ((HWATER(I,J+1)+HWATER(I-1,J+1))+ ! & (HWATER(I,J-1)+HWATER(I-1,J-1)))/8. ! nouvelle version, moyenne sur les deux plus proches voisins pour mieux ! localiser les fleuves de glace COEFMXBMELT(I,J)=(HWATER(I,J)+HWATER(I-1,J))*0.5 Neffmx(i,j)=RO*G*HMX(I,J)-ROW*G*COEFMXBMELT(I,J) !!!!! Neffmx(i,j)=RO*G*HMX(I,J)-pwater(i,j) ! la pression effective mini est 1 Pascal pour la glace posée Neffmx(i,j)=max(Neffmx(i,j),Nefmin) ! coefmybmelt est utilise dans la vitesse de glissement ! et pour cela est limité par hwatermax COEFMXBMELT(i,j)=min(hwatermax,COEFMXBMELT(i,j)) ! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat ! pour utiliser les nouvelles vitesses. else ! points completement flottants Neffmx(i,j)=0. endif pose_x end do end do ! nom_table='pwater' ! table_interm=ROW*G*COEFMXBMELT/10e5 ! call printtable_r(table_interm,nom_table) if (itracebug.eq.1) call tracebug(' Sortie routine neffect') return end subroutine Neffect