Ignore:
Timestamp:
04/24/23 11:21:51 (15 months ago)
Author:
dumas
Message:

use only in neffect

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GRISLIv3/SOURCES/neffect-0.4.f90

    r246 r418  
    1212!! @note    - use printtable 
    1313!< 
    14       subroutine Neffect() 
     14subroutine Neffect 
    1515 
    16 !     =============================================================== 
    17 !     *    Pression effective                 Cat   18 janvier 2005 
    18 !     =============================================================== 
     16  !     =============================================================== 
     17  !     *    Pression effective                 Cat   18 janvier 2005 
     18  !     =============================================================== 
    1919 
    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 
    2324 
    24       implicit none 
     25  implicit none 
    2526 
    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 
     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 
    2930 
    30 if (itracebug.eq.1)  call tracebug(' Entree dans routine neffect') 
     31  if (itracebug.eq.1)  call tracebug(' Entree dans routine neffect') 
    3132 
    3233 
    3334 
    3435 
    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 
    3937 
    4038 
    41       call  EAUBASALE 
     39  ! calcul de la hauteur d'eau dans eaubasale 
    4240 
    43 if (itracebug.eq.1)  call tracebug(' Apres eau basale') 
    44 ! calcul de la presion effective Neffmy 
    4541 
    46         do J=2,NY 
    47           do I=2,NX-1 
    48 pose_y :    if (.not.flotmy(i,j)) then 
     42  call eaubasale 
    4943 
    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 
    5346 
    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 
    5850 
    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  
    6154 
    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) 
    6465!!!!!        Neffmy(i,j)=RO*G*HMY(I,J)-pwater(i,j) 
    6566 
    66 !             la pression effective mini est Nefmin (en Pa) pour la glace posée  
    67              Neffmy(i,j)=max(Neffmy(i,j),Nefmin) 
     67           !             la pression effective mini est Nefmin (en Pa) pour la glace posée  
     68           Neffmy(i,j)=max(Neffmy(i,j),Nefmin) 
    6869 
    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)) 
     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)) 
    7273 
    7374 
    7475 
    75 ! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat 
    76 ! pour utiliser les nouvelles vitesses. 
     76           ! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat 
     77           ! pour utiliser les nouvelles vitesses. 
    7778 
    78           else 
    79 !           points completement flottants 
    80               Neffmy(i,j)=0. 
     79        else 
     80           !           points completement flottants 
     81           Neffmy(i,j)=0. 
    8182 
    82            endif  pose_y 
    83         end do 
    84       end do 
     83        endif  pose_y 
     84     end do 
     85  end do 
    8586 
    86 ! calcul de la presion effective Neffmx 
     87  ! calcul de la presion effective Neffmx 
    8788 
    88         do J=2,NY-1 
    89           do I=2,NX 
    90 pose_x :       if (.not.flotmx(i,j)) then 
     89  do j=2,Ny-1 
     90     do i=2,nx 
     91        pose_x :       if (.not.flotmx(i,j)) then 
    9192 
    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  
     93           !     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  
    9596 
    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. 
     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. 
    100101 
    101 !    nouvelle version, moyenne sur les deux plus proches voisins pour mieux  
    102 !    localiser les fleuves de glace 
     102           !    nouvelle version, moyenne sur les deux plus proches voisins pour mieux  
     103           !    localiser les fleuves de glace 
    103104 
    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) 
     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) 
    106107!!!!!        Neffmx(i,j)=RO*G*HMX(I,J)-pwater(i,j) 
    107108 
    108 !             la pression effective mini est 1 Pascal pour la glace posée  
    109              Neffmx(i,j)=max(Neffmx(i,j),Nefmin) 
     109           !             la pression effective mini est 1 Pascal pour la glace posée  
     110           Neffmx(i,j)=max(Neffmx(i,j),Nefmin) 
    110111 
    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)) 
     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)) 
    114115 
    115116 
    116117 
    117118 
    118 ! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat 
    119 ! pour utiliser les nouvelles vitesses. 
     119           ! on calcule tobmy dans diagnoshelf apres etre passe dans remplimat 
     120           ! pour utiliser les nouvelles vitesses. 
    120121 
    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. 
    128125 
    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 
     136end subroutine Neffect 
Note: See TracChangeset for help on using the changeset viewer.