Changeset 418 for branches/GRISLIv3/SOURCES
- Timestamp:
- 04/24/23 11:21:51 (15 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GRISLIv3/SOURCES/neffect-0.4.f90
r246 r418 12 12 !! @note - use printtable 13 13 !< 14 subroutine Neffect() 14 subroutine Neffect 15 15 16 ! ===============================================================17 ! * Pression effective Cat 18 janvier 200518 ! ===============================================================16 ! =============================================================== 17 ! * Pression effective Cat 18 janvier 2005 18 ! =============================================================== 19 19 20 USE module3D_phy 21 use module_choix 22 use printtable 20 use param_phy_mod, only: ro,row,g 21 use runparam, only: itracebug 22 use module3D_phy, only: nx,ny,flotmx,flotmy,coefmxbmelt,coefmybmelt,hwater,neffmx,neffmy,hmx,hmy,hwatermax 23 use module_choix, only: eaubasale 23 24 24 25 implicit none 25 26 26 ! real,dimension(nx,ny) :: table_interm 27 !cdc real :: Nefmin=1.e5 ! Pression effective minimum (~ 10 m de glace)28 27 integer :: i,j 28 !cdc real :: Nefmin=1.e5 ! Pression effective minimum (~ 10 m de glace) 29 real :: Nefmin=0. !cdc 22/01/2019 on autorise une pression effective nulle 29 30 30 if (itracebug.eq.1) call tracebug(' Entree dans routine neffect')31 if (itracebug.eq.1) call tracebug(' Entree dans routine neffect') 31 32 32 33 33 34 34 35 35 ! le calcul de pente est fait dans diffusiv 36 37 38 ! calcul de la hauteur d'eau dans eaubasale 36 ! le calcul de pente est fait dans diffusiv 39 37 40 38 41 call EAUBASALE39 ! calcul de la hauteur d'eau dans eaubasale 42 40 43 if (itracebug.eq.1) call tracebug(' Apres eau basale')44 ! calcul de la presion effective Neffmy45 41 46 do J=2,NY 47 do I=2,NX-1 48 pose_y : if (.not.flotmy(i,j)) then 42 call eaubasale 49 43 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 44 if (itracebug.eq.1) call tracebug(' Apres eau basale') 45 ! calcul de la presion effective Neffmy 53 46 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. 47 do j=2,ny 48 do i=2,nx-1 49 pose_y : if (.not.flotmy(i,j)) then 58 50 59 ! nouvelle version, moyenne sur les deux plus proches voisins pour mieux 60 ! localiser les fleuves de glace 51 ! coefmybmelt est la hauteur d'eau au point considere 52 ! moyenne pondérée des points voisins. 53 ! coefmybmelt est utilise dans la vitesse de glissement 61 54 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) 55 ! ancienne version : moyenne large 56 ! COEFMYBMELT(I,J)=(HWATER(I,J)+HWATER(I,J-1))/4.+ 57 ! & ((HWATER(I+1,J)+HWATER(I+1,J-1))+ 58 ! & (HWATER(I-1,J)+HWATER(I-1,J-1)))/8. 59 60 ! nouvelle version, moyenne sur les deux plus proches voisins pour mieux 61 ! localiser les fleuves de glace 62 63 coefmybmelt(i,j)=(hwater(i,j)+HWATER(i,j-1))*0.5 64 Neffmy(i,j)=ro*g*hmy(i,j)-row*g*coefmybmelt(i,j) 64 65 !!!!! Neffmy(i,j)=RO*G*HMY(I,J)-pwater(i,j) 65 66 66 ! la pression effective mini est Nefmin (en Pa) pour la glace posée67 67 ! la pression effective mini est Nefmin (en Pa) pour la glace posée 68 Neffmy(i,j)=max(Neffmy(i,j),Nefmin) 68 69 69 ! coefmybmelt est utilise dans la vitesse de glissement70 ! et pour cela est limité par hwatermax71 COEFMYBMELT(i,j)=min(hwatermax,COEFMYBMELT(i,j))70 ! coefmybmelt est utilise dans la vitesse de glissement 71 ! et pour cela est limité par hwatermax 72 coefmybmelt(i,j)=min(hwatermax,coefmybmelt(i,j)) 72 73 73 74 74 75 75 ! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat76 ! pour utiliser les nouvelles vitesses.76 ! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat 77 ! pour utiliser les nouvelles vitesses. 77 78 78 79 ! points completement flottants80 79 else 80 ! points completement flottants 81 Neffmy(i,j)=0. 81 82 82 83 84 83 endif pose_y 84 end do 85 end do 85 86 86 ! calcul de la presion effective Neffmx87 ! calcul de la presion effective Neffmx 87 88 88 do J=2,NY-189 do I=2,NX90 pose_x : if (.not.flotmx(i,j)) then89 do j=2,Ny-1 90 do i=2,nx 91 pose_x : if (.not.flotmx(i,j)) then 91 92 92 ! coefmybmelt est la hauteur d'eau au point considere93 ! moyenne pondérée des points voisins.94 ! coefmybmelt est utilise dans la vitesse de glissement93 ! coefmybmelt est la hauteur d'eau au point considere 94 ! moyenne pondérée des points voisins. 95 ! coefmybmelt est utilise dans la vitesse de glissement 95 96 96 ! ancienne version : moyenne large97 ! 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.97 ! ancienne version : moyenne large 98 ! COEFMYBMELT(I,J)=(HWATER(I,J)+HWATER(I-1,J))/4.+ 99 ! & ((HWATER(I,J+1)+HWATER(I-1,J+1))+ 100 ! & (HWATER(I,J-1)+HWATER(I-1,J-1)))/8. 100 101 101 ! nouvelle version, moyenne sur les deux plus proches voisins pour mieux102 ! localiser les fleuves de glace102 ! nouvelle version, moyenne sur les deux plus proches voisins pour mieux 103 ! localiser les fleuves de glace 103 104 104 COEFMXBMELT(I,J)=(HWATER(I,J)+HWATER(I-1,J))*0.5105 Neffmx(i,j)=RO*G*HMX(I,J)-ROW*G*COEFMXBMELT(I,J)105 coefmxbmelt(i,j)=(hwater(i,j)+hwater(i-1,j))*0.5 106 Neffmx(i,j)=ro*g*hmx(I,J)-row*g*coefmxbmelt(i,j) 106 107 !!!!! Neffmx(i,j)=RO*G*HMX(I,J)-pwater(i,j) 107 108 108 ! la pression effective mini est 1 Pascal pour la glace posée109 109 ! la pression effective mini est 1 Pascal pour la glace posée 110 Neffmx(i,j)=max(Neffmx(i,j),Nefmin) 110 111 111 ! coefmybmelt est utilise dans la vitesse de glissement112 ! et pour cela est limité par hwatermax113 COEFMXBMELT(i,j)=min(hwatermax,COEFMXBMELT(i,j))112 ! coefmybmelt est utilise dans la vitesse de glissement 113 ! et pour cela est limité par hwatermax 114 coefmxbmelt(i,j)=min(hwatermax,coefmxbmelt(i,j)) 114 115 115 116 116 117 117 118 118 ! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat119 ! pour utiliser les nouvelles vitesses.119 ! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat 120 ! pour utiliser les nouvelles vitesses. 120 121 121 else 122 ! points completement flottants 123 Neffmx(i,j)=0. 124 125 endif pose_x 126 end do 127 end do 122 else 123 ! points completement flottants 124 Neffmx(i,j)=0. 128 125 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 126 endif pose_x 127 end do 128 end do 129 130 ! nom_table='pwater' 131 ! table_interm=ROW*G*COEFMXBMELT/10e5 132 ! call printtable_r(table_interm,nom_table) 133 134 if (itracebug.eq.1) call tracebug(' Sortie routine neffect') 135 return 136 end subroutine Neffect
Note: See TracChangeset
for help on using the changeset viewer.