Changeset 404 for branches/GRISLIv3


Ignore:
Timestamp:
03/31/23 10:50:31 (16 months ago)
Author:
aquiquet
Message:

Cleaning branch: use only in all dragging modules

Location:
branches/GRISLIv3
Files:
1 added
9 edited
3 moved

Legend:

Unmodified
Added
Removed
  • branches/GRISLIv3/SOURCES/Draggings_modules/beta_iter_vitbil_mod.f90

    r257 r404  
    1313module beta_iter_vitbil_mod 
    1414 
    15   use module3d_phy 
    16   use interface_input 
     15  use geography, only: nx,ny 
    1716  use netcdf 
    18   use io_netcdf_grisli 
     17 
    1918 
    2019  implicit none 
     
    6564subroutine init_beta_iter_vitbil 
    6665 
     66  use io_netcdf_grisli,only: read_ncdf_var 
     67  use geography, only: dirnameinp 
     68  use module3D_phy, only: num_param,num_rep_42,time,tbegin,debug_3d 
     69 
    6770  implicit none 
    6871   
     
    113116  subroutine beta_min_value(val_betamin) 
    114117 
    115   real :: val_betamin     ! valeur mini que peut avoir beta (en Pa an m-1) 
     118  use module3d_phy, only: drag_mx,drag_my,flot 
     119 
     120  implicit none 
     121 
     122  real,intent(in) :: val_betamin     ! valeur mini que peut avoir beta (en Pa an m-1) 
    116123 
    117124    drag_centre(:,:) = max(drag_centre(:,:),val_betamin) 
     
    131138 
    132139    implicit none 
    133     integer                                ::  nxx,nyy                ! dimension des tableaux 
     140 
     141    integer, intent(in)                    ::  nxx,nyy                ! dimension des tableaux 
    134142    real, dimension(nxx,nyy), intent(out)  ::  R_mx                   ! valeur du beta sur maille mx 
    135143    real, dimension(nxx,nyy), intent(out)  ::  R_my                   ! valeur du beta sur maille my 
    136144    real, dimension(nxx,nyy), intent(in)   ::  R_centre               ! valeur du beta sur maille centree 
     145 
     146    integer :: i,j ! loop integers 
    137147 
    138148    do j=2,nyy  
     
    152162subroutine beta_iter_vitbil(m_iter) 
    153163 
    154 implicit none 
    155 integer :: m_iter ! indice bloucle iteration 
    156  
     164  use geography,     only: nz 
     165  use param_phy_mod, only: rog 
     166  use module3D_phy, only: h,h0,ux,uy,uxbar,uybar,dtmin,time,flot,slope,beta_centre,betamx,betamy, & 
     167                        drag_mx,drag_my,debug_3d 
     168 
     169  implicit none 
     170 
     171  integer :: m_iter ! indice bloucle iteration 
     172  integer :: i,j    ! loop integers 
    157173 
    158174! calcul des vitesses cibles : 
    159175!if ((time.eq.time_iter).and.(time.gt.time_reiter).and.(m_iter.eq.1)) then 
    160176! Si time > time_reiter => recalcul des vitesses de bilan (methode inspiree de Pollard) 
    161 if ((abs(time-time_iter).lt.dtmin).and.(time.gt.time_reiter).and.(m_iter.eq.1)) then 
     177  if ((abs(time-time_iter).lt.dtmin).and.(time.gt.time_reiter).and.(m_iter.eq.1)) then 
     178    Umag_direct(:,:)    = (((uxbar(:,:)+eoshift(uxbar(:,:),shift=1,boundary=0.,dim=1))**2+ &        ! moyenne 
     179                            (uybar(:,:)+eoshift(uybar(:,:),shift=1,boundary=0.,dim=2))**2)**0.5)*0.5 
     180    Umag_vitbil(:,:)= min(Umag_direct(:,:) * min(1.e3,H(:,:)/H0(:,:)), 5000.) 
     181    print*,'*****debug beta_iter_vitbil calcul de Umag_vitbil',time,m_iter 
     182    do j=1,ny 
     183      do i=1,nx 
     184        write(266,*) Umag_vitbil(i,j) 
     185      enddo 
     186    enddo 
     187  endif 
     188 
     189! calcule la vitesse centree venant du calcul direct 
     190 
    162191  Umag_direct(:,:)    = (((uxbar(:,:)+eoshift(uxbar(:,:),shift=1,boundary=0.,dim=1))**2+ &        ! moyenne 
    163192                          (uybar(:,:)+eoshift(uybar(:,:),shift=1,boundary=0.,dim=2))**2)**0.5)*0.5 
    164   Umag_vitbil(:,:)= min(Umag_direct(:,:) * min(1.e3,H(:,:)/H0(:,:)), 5000.) 
    165   print*,'*****debug beta_iter_vitbil calcul de Umag_vitbil',time,m_iter 
    166   do j=1,ny 
    167     do i=1,nx 
    168       write(266,*) Umag_vitbil(i,j) 
    169     enddo 
    170   enddo 
    171 endif 
    172  
    173 ! calcule la vitesse centree venant du calcul direct 
    174  
    175   Umag_direct(:,:)    = (((uxbar(:,:)+eoshift(uxbar(:,:),shift=1,boundary=0.,dim=1))**2+ &        ! moyenne 
    176                           (uybar(:,:)+eoshift(uybar(:,:),shift=1,boundary=0.,dim=2))**2)**0.5)*0.5 
    177193 
    178194  Uslmag_direct(:,:)  = (((ux(:,:,nz)+eoshift(ux(:,:,nz),shift=1,boundary=0.,dim=1))**2+ &        ! glissement  
     
    193209! Pas de glissement dans GRISLI 
    194210 
    195 where ((Uslmag_direct(:,:).le.0.).and.(Uslid_vitbil(:,:).gt.1.e-3))     ! pas de glissement dans GRISLI 
    196   beta_centre(:,:) = driving_stress(:,:) / Uslid_vitbil(:,:)            ! mais du glissement "bilan" 
    197 end where 
    198  
    199  
    200 where ((Uslmag_direct(:,:).le.0.).and.(Uslid_vitbil(:,:).le.1.e-3))     ! ni l'un ni l'autre 
    201    Uslid_vitbil(:,:) = 0. 
    202    beta_centre(:,:)  = beta_limgz 
    203 end where 
     211  where ((Uslmag_direct(:,:).le.0.).and.(Uslid_vitbil(:,:).gt.1.e-3))     ! pas de glissement dans GRISLI 
     212    beta_centre(:,:) = driving_stress(:,:) / Uslid_vitbil(:,:)            ! mais du glissement "bilan" 
     213  end where 
     214 
     215 
     216  where ((Uslmag_direct(:,:).le.0.).and.(Uslid_vitbil(:,:).le.1.e-3))     ! ni l'un ni l'autre 
     217     Uslid_vitbil(:,:) = 0. 
     218     beta_centre(:,:)  = beta_limgz 
     219  end where 
    204220 
    205221 
     
    223239  beta_centre(:,:) = min(beta_centre(:,:),beta_limgz) 
    224240   
    225     call  beta_c2stag(nx,ny,betamx,betamy,beta_centre)  ! redistribue sur les mailles alternees 
    226     call  beta_min_value(beta_min)                      !  valeur mini que peut avoir beta (en Pa an m-1) 
     241  call  beta_c2stag(nx,ny,betamx,betamy,beta_centre)  ! redistribue sur les mailles alternees 
     242  call  beta_min_value(beta_min)                      !  valeur mini que peut avoir beta (en Pa an m-1) 
    227243  
    228244 
    229  debug_3D(:,:,59) = betamx(:,:) 
    230  debug_3D(:,:,60) = beta_centre(:,:) 
     245  debug_3D(:,:,59) = betamx(:,:) 
     246  debug_3D(:,:,60) = beta_centre(:,:) 
    231247 
    232248! estimateurs 
    233 J_Umag  = 0. 
    234 J_Udef   = 0. 
    235 nb_umag = 0 
    236 nb_udef = 0 
    237  
    238 do j=2,ny-1 
    239    do i=2,nx-1 
     249  J_Umag  = 0. 
     250  J_Udef   = 0. 
     251  nb_umag = 0 
     252  nb_udef = 0 
     253 
     254  do j=2,ny-1 
     255    do i=2,nx-1 
    240256 
    241257      if (.not.flot(i,j)) then                       ! calcul sur les points poses 
     
    249265      end if 
    250266 
    251    end do 
    252 end do 
    253       J_Umag = (J_Umag**0.5) / nb_umag 
    254       J_Udef = (J_Udef**0.5) / nb_udef 
    255  
    256  
    257 drag_centre(:,:) = beta_centre(:,:) 
    258 drag_mx(:,:)     = betamx(:,:) 
    259 drag_my(:,:)     = betamy(:,:) 
     267    end do 
     268  end do 
     269  J_Umag = (J_Umag**0.5) / nb_umag 
     270  J_Udef = (J_Udef**0.5) / nb_udef 
     271 
     272 
     273  drag_centre(:,:) = beta_centre(:,:) 
     274  drag_mx(:,:)     = betamx(:,:) 
     275  drag_my(:,:)     = betamy(:,:) 
    260276 
    261277 
  • branches/GRISLIv3/SOURCES/Draggings_modules/dragging_beta_iter_vitbil_mod.f90

    r333 r404  
    77module dragging_beta_iter_vitbil_mod 
    88 
    9   use module3d_phy 
    10   use interface_input 
    119  use netcdf 
    12   use io_netcdf_grisli 
    13   use beta_iter_vitbil_mod 
     10  ! pour compilation de steps_time_loop : 
     11  use beta_iter_vitbil_mod, only:time_iter,time_iter_end,nb_iter_vitbil,beta_iter_vitbil 
     12 
     13 
    1414 
    1515  implicit none 
    16  
    17  
    18 !~   real, dimension(nx,ny) :: Vcol_x           !< uniquement pour compatibilite 
    19 !~   real, dimension(nx,ny) :: Vcol_y           !< 
    20 !~   real, dimension(nx,ny) :: Vsl_x            !< 
    21 !~   real, dimension(nx,ny) :: Vsl_y            !< 
    22  
    23  
    24 !~   real, dimension(nx,ny) :: drag_centre      !< beta on major node (average) 
    25 !~   real :: beta_limgz                         !< when beta gt beta_limgz -> not gzmx 
    26 !~   real :: beta_min                           !< minimum value of beta 
    27 !~   real :: beta_mult                          !< coefficient of beta field 
    28 !~   integer  :: ill,jll,nmoy 
    29  
    30 !~   real :: maxi                               !< calcul correction dS a la grounding line 
    31 !~   real :: mini 
    32  
    33 !~   logical :: corr_def = .False.               !< for deformation correction (compatibility) 
    34  
    35  
    36 !~   real, dimension(nx,ny) :: Umag_vitbil             !< vitesse de bilan 
    37 !~   real, dimension(nx,ny) :: Uslid_vitbil            !< vitesse de bilan partie glissement 
    38 !~   real, dimension(nx,ny) :: Umag_direct             !< vitesse moyenne centree calculee par GRISLI 
    39 !~   real, dimension(nx,ny) :: Uslmag_direct           !< vitesse glissement centree calculee par GRISLI 
    40 !~   real, dimension(nx,ny) :: Udefmag_direct          !< vitesse deformation centree calculee par GRISLI 
    41 !~   real, dimension(nx,ny) :: driving_stress          !< driving stress 
    42  
    43 !~   character(len=100)     :: Umag_bil_file           !< fichier qui contient les donnees 
    44 !~   real                   :: time_iter               !< temps de debut des iterations 
    45 !~   real                   :: time_iter_end           !< temps de fin des iterations 
    46 !~   real                   :: time_reiter             !< nbr annees entre 2 iterations calcul beta 
    47 !~   integer                :: nb_iter_vitbil          !< nombre d'iteratiosn avant de changer de pas de temps 
    48 !~   real                   :: coef_iter_vitbil        !< coefficient <= 1 (rapport vitesses) 
    49 !~   real                   :: J_Umag                  !< estimateur ecart entre vitesses 
    50 !~   real                   :: J_Udef                  !< estimateur vitesse regions sans glissement 
    51 !~   integer                :: nb_umag                 !< nombre de points calcul J_Umag 
    52 !~   integer                :: nb_Udef                 !< nombre de points calcul J_Umag 
    53  
    5416 
    5517contains 
     
    6022  !< 
    6123  subroutine init_dragging      ! Cette routine fait l'initialisation du dragging. 
     24 
     25    use io_netcdf_grisli, only: read_ncdf_var 
     26    use runparam, only: itracebug,num_tracebug 
     27    use geography, only: dirnameinp,nx,ny 
     28    use module3D_phy, only: num_param,num_rep_42,inv_beta,betamax,betamax_2d,mk_init,flot,beta_centre, & 
     29                            drag_mx,drag_my,betamx,betamy,mstream_mx,mstream_my,niter_nolin 
     30    use beta_iter_vitbil_mod, only: beta_limgz,beta_min,beta_mult,drag_centre,init_beta_iter_vitbil, & 
     31                                    beta_min_value,beta_c2stag 
     32 
    6233    ! nouvelle version : lit les fichiers nc 
    6334    implicit none 
     
    193164  subroutine dragging   ! defini la localisation des streams et le frottement basal 
    194165 
     166    use module3D_phy, only: time,dtmin,itracebug,betamx,betamy,drag_mx,drag_my 
     167    use beta_iter_vitbil_mod, only: time_iter,time_iter_end,time_reiter 
     168 
    195169    implicit none 
    196170 
     
    226200 
    227201  subroutine gzm_beta_prescr     ! attribue flgzmx et gzmx (et my) 
    228      
     202 
     203    use geography, only: nx,ny 
     204    use module3D_phy, only: gzmx,gzmy,fleuvemx,fleuvemy,flgzmx,flgzmy,flot,flotmx,flotmy, & 
     205                            betamx,betamy,itracebug,num_tracebug,ibase 
     206    use beta_iter_vitbil_mod, only: beta_limgz,drag_centre 
     207 
     208    implicit none 
     209 
    229210    logical ::  test_Tx          ! test if there is a basal melting point in the surrounding 
    230211    logical ::  test_Ty          ! test if there is a basal melting point in the surrounding 
     
    233214 
    234215    real    ::  beta_forc_fleuve ! below this value -> ice stream 
     216 
     217    integer :: i,j ! loop integers 
    235218 
    236219!    beta_forc_fleuve = 5.e3 
     
    313296    end where 
    314297 
    315         fleuvemx(:,:)=gzmx(:,:) 
    316         fleuvemy(:,:)=gzmy(:,:) 
     298    fleuvemx(:,:)=gzmx(:,:) 
     299    fleuvemy(:,:)=gzmy(:,:) 
    317300    
    318301  end subroutine gzm_beta_prescr 
  • branches/GRISLIv3/SOURCES/Draggings_modules/dragging_prescr_beta_mod.f90

    r333 r404  
    1414module dragging_prescr_beta 
    1515 
    16  
    17   use module3d_phy 
    18   use interface_input 
    19   use fake_beta_iter_vitbil_mod 
     16  use geography, only: nx,ny 
     17  ! pour compilation de steps_time_loop : 
     18  use fake_beta_iter_vitbil_mod, only:time_iter,time_iter_end,nb_iter_vitbil,beta_iter_vitbil 
     19 
    2020   
    2121  implicit none 
     
    5151  subroutine init_dragging      ! Cette routine fait l'initialisation du dragging. 
    5252                                ! nouvelle version : lit les fichiers nc 
    53     implicit none 
     53 
     54    use runparam, only: itracebug,num_tracebug 
     55    use geography, only: dirnameinp 
     56    use module3d_phy, only: num_param,num_rep_42,inv_beta,betamax,betamax_2d,mk_init,h,bsoc, & 
     57                            drag_mx,drag_my,beta_centre,betamx,betamy,mstream_mx,mstream_my, & 
     58                            niter_nolin 
     59 
     60    implicit none 
     61 
    5462    character(len=100) :: beta_c_file               !  beta on centered grid 
    5563    character(len=100) :: betamx_file               !  beta on staggered grid mx 
     
    209217  subroutine dragging   ! defini la localisation des streams et le frottement basal 
    210218 
     219    use runparam, only: itracebug 
     220    use module3d_phy, only: mstream_mx,mstream_my,betamx,betamy,drag_mx,drag_my 
     221 
    211222    implicit none 
    212223 
     
    261272 
    262273  subroutine gzm_beta_prescr     ! attribue flgzmx et gzmx (et my) 
     274 
     275    use runparam, only: itracebug,num_tracebug 
     276    use module3d_phy, only: gzmx,gzmy,flgzmx,flgzmy,flot,flotmx,flotmy,betamx,betamy,ibase, & 
     277                            fleuvemx,fleuvemy 
    263278     
    264279    logical ::  test_Tx          ! test if there is a basal melting point in the surrounding 
     
    268283 
    269284    real    ::  beta_forc_fleuve ! below this value -> ice stream 
     285 
     286    integer :: i,j ! loop integers 
    270287 
    271288!    beta_forc_fleuve = 5.e3 
     
    348365    end where 
    349366 
    350         fleuvemx(:,:)=gzmx(:,:) 
    351         fleuvemy(:,:)=gzmy(:,:) 
     367    fleuvemx(:,:)=gzmx(:,:) 
     368    fleuvemy(:,:)=gzmy(:,:) 
    352369     
    353370  end subroutine gzm_beta_prescr 
     
    365382  subroutine beta_plateau_slope      ! give value beta_limgz to places where slope is >1.e-2 
    366383 
     384    use module3d_phy, only: sdx,sdy,drag_mx,drag_my 
     385 
     386    implicit none 
     387 
    367388    call slope_surf 
    368389 
     
    380401!< 
    381402  subroutine beta_plateau_S     !  give value beta_limgz to places where S > 2500 m 
     403 
     404    use module3d_phy, only: S,drag_mx,drag_my 
     405 
     406    implicit none  
    382407 
    383408    where (S(:,:).gt.2500.)     ! moyen simple de nettoyer l'interieur. WAIS pas touche 
     
    394419  subroutine beta_min_value(val_betamin) 
    395420 
    396   real :: val_betamin     ! valeur mini que peut avoir beta (en Pa an m-1) 
     421    use module3d_phy, only: drag_mx,drag_my,flot 
     422 
     423    implicit none 
     424     
     425    real :: val_betamin     ! valeur mini que peut avoir beta (en Pa an m-1) 
    397426 
    398427    drag_centre(:,:) = max(drag_centre(:,:),val_betamin) 
     
    412441 
    413442    implicit none 
     443 
    414444    integer                                ::  nxx,nyy                ! dimension des tableaux 
    415445    real, dimension(nxx,nyy), intent(in)   ::  R_mx                   ! valeur du beta sur maille mx 
    416446    real, dimension(nxx,nyy), intent(in)   ::  R_my                   ! valeur du beta sur maille my 
    417447    real, dimension(nxx,nyy), intent(out)  ::  R_centre               ! valeur du beta sur maille centree    
     448 
     449    integer :: i,j ! loop integers 
    418450     
    419451    R_centre(:,:)=0. 
     
    433465 
    434466    implicit none 
     467 
    435468    integer                                ::  nxx,nyy                ! dimension des tableaux 
    436469    real, dimension(nxx,nyy), intent(out)  ::  R_mx                   ! valeur du beta sur maille mx 
     
    438471    real, dimension(nxx,nyy), intent(in)   ::  R_centre               ! valeur du beta sur maille centree 
    439472 
     473    integer :: i,j ! loop integers 
     474 
    440475    do j=2,nyy  
    441476       do i=2,nxx 
     
    454489 
    455490    implicit none 
     491 
    456492    integer                                ::  nxx,nyy                ! dimension des tableaux 
    457493    real, dimension(nxx,nyy), intent(inout)::  R_mx                   ! valeur du beta sur maille mx 
     
    459495    real, dimension(nxx,nyy), intent(in)   ::  R_centre               ! valeur du beta sur maille centree 
    460496 
     497    integer :: i,j ! loop integers 
     498 
    461499    do j=2,nyy  
    462500       do i=2,nxx 
     
    475513 
    476514    implicit none 
     515 
    477516    integer,intent(in)                       :: n          ! demi taille du tableau gaussienne 
    478517    real, intent(in)                         :: sigma      ! sigma gaussienne exprime en dx 
     
    484523    real                                     :: som        ! pour calibration 
    485524    real                                     :: sigma2     ! pour gaussienne 
     525 
     526    integer :: i,j ! loop integers 
    486527 
    487528    som = 0. 
     
    509550  subroutine iter_gauss(n,nxx,nyy,M,coef,beta_in,beta_out,Ecart) 
    510551 
     552    implicit none 
     553 
    511554    integer,                  intent(in)    :: n          ! taille matrice gaussienne  
    512555    integer,                  intent(in)    :: nxx,nyy    ! taille du domaine 
     
    519562! variables locales 
    520563    integer                                 :: ii,jj 
     564    integer                                 :: i,j 
    521565 
    522566    do j= 1 + n, nyy - n 
  • branches/GRISLIv3/SOURCES/Draggings_modules/fake_beta_iter_vitbil_mod.f90

    r168 r404  
    66 
    77module fake_beta_iter_vitbil_mod 
    8  
    9   use module3d_phy 
    108   
    119  implicit none 
     
    1816   
    1917  subroutine beta_iter_vitbil(m_iter)  
    20     integer :: m_iter ! indice bloucle iteration 
     18 
     19    use runparam, only: itracebug 
     20 
     21    implicit none 
     22 
     23    integer,intent(in) :: m_iter ! indice bloucle iteration 
     24 
    2125    if (itracebug.eq.1)  call tracebug(' Entree dans routine fake_beta_iter_vitbil') 
     26 
    2227  end subroutine beta_iter_vitbil 
    2328   
  • branches/GRISLIv3/SOURCES/Makefile.grisli.inc

    r371 r404  
    153153  output_Grice2sea_mod.o \ 
    154154  fake-routines_Grice2sea_mod.o \ 
    155         dragging_prescr_beta_mod.o dragging_prescr_beta_perturb_mod.o \ 
     155        dragging_prescr_beta_mod.o \ 
    156156        beta_iter_vitbil_mod.o \ 
    157157        dragging_beta_iter_vitbil_mod.o \ 
     
    159159         
    160160Liste_grismip6 = output_anta40_mod-0.4.o \ 
    161         dragging_prescr_beta_mod.o dragging_prescr_beta_perturb_mod.o \ 
     161        dragging_prescr_beta_mod.o \ 
    162162        dragging_prescr_beta_nolin_mod.o \ 
    163163        lect-grismip6_mod.o \ 
     
    169169 
    170170Liste_ANT16 = output_anta40_mod-0.4.o \ 
    171         dragging_prescr_beta_mod.o dragging_prescr_beta_perturb_mod.o \ 
     171        dragging_prescr_beta_mod.o \ 
    172172        dragging_prescr_beta_nolin_mod.o \ 
    173173        lect-anteis_mod.o \ 
     
    187187        bmelt-hemin40-regions_mod.o bmelt-hemin40-depth_mod.o \ 
    188188        fake-routines-hemin40_mod.o \ 
    189         dragging_prescr_beta_mod.o dragging_prescr_beta_perturb_mod.o \ 
     189        dragging_prescr_beta_mod.o \ 
    190190        beta_iter_vitbil_mod.o \ 
    191191        dragging_beta_iter_vitbil_mod.o \ 
     
    202202        dragging_neem_mod.o \ 
    203203        fake-routines-greeneem_mod.o \ 
    204         dragging_prescr_beta_mod.o dragging_prescr_beta_perturb_mod.o \ 
     204        dragging_prescr_beta_mod.o \ 
    205205        beta_iter_vitbil_mod.o \ 
    206206        dragging_beta_iter_vitbil_mod.o \ 
     
    214214        bmelt-ant-regions-initmip_mod.o \ 
    215215        fake-routines-ant_mod.o \ 
    216         dragging_prescr_beta_mod.o dragging_prescr_beta_perturb_mod.o \ 
     216        dragging_prescr_beta_mod.o \ 
    217217        beta_iter_vitbil_mod.o \ 
    218218        dragging_beta_iter_vitbil_mod.o \ 
  • branches/GRISLIv3/SOURCES/dragging_coulomb_friction_mod.f90

    r348 r404  
    4444 
    4545 
    46 use module3d_phy, only: nx,ny 
    47 use fake_beta_iter_vitbil_mod 
     46use geography, only: nx,ny 
     47! pour compilation de steps_time_loop : 
     48use fake_beta_iter_vitbil_mod, only:time_iter,time_iter_end,nb_iter_vitbil,beta_iter_vitbil 
    4849 
    4950implicit none 
     
    7172subroutine init_dragging      ! Cette routine fait l'initialisation du dragging. 
    7273 
    73 use module3d_phy, only: niter_nolin,betamax,betamax_2d,inv_beta,mstream_mx,mstream_my,drag_mx,drag_my,num_rep_42 
     74use geography,    only: dirnameinp 
    7475use runparam,     only: itracebug 
    75  
    76 use interface_input  !for sediments 
    77 use io_netcdf_grisli !for sediments 
     76use module3d_phy, only: niter_nolin,betamax,betamax_2d,inv_beta,mstream_mx,mstream_my,drag_mx,drag_my, & 
     77                        num_rep_42,num_param 
    7878 
    7979implicit none 
     
    128128mstream_my(:,:)=1 
    129129 
    130  
    131130! coefficient permettant de modifier le basal drag. 
    132131drag_mx(:,:)=1. 
     
    184183!$ USE OMP_LIB 
    185184 
    186 use module3d_phy, only: nx,ny,betamax,beta_centre,betamx,betamy,neffmx,neffmy,hwater,flot,ux,uy 
     185use geography,    only: nx,ny 
     186use module3d_phy, only: betamax,beta_centre,betamx,betamy,neffmx,neffmy,hwater,flot,ux,uy, & 
     187                        uxbar,uybar 
    187188 
    188189implicit none 
     
    196197 
    197198real,parameter        :: u0 = 100d0 ! threshold sliding speed 
     199 
     200integer               :: i,j ! loop integers 
    198201 
    199202!$OMP PARALLEL 
     
    294297subroutine mstream_dragging   ! defini la localisation des streams 
    295298 
    296    
    297 use module3d_phy, only: nx,ny,betamax,betamx,betamy,fleuvemx,fleuvemy,gzmx,gzmy,flgzmx,flgzmy,flot,flotmx,flotmy 
     299use geography,    only: nx,ny  
     300use module3d_phy, only: betamax,betamx,betamy,fleuvemx,fleuvemy,gzmx,gzmy,flgzmx,flgzmy,flot,flotmx,flotmy 
    298301 
    299302implicit none 
     303 
     304integer :: i,j  ! loop integers 
    300305 
    301306!$OMP PARALLEL 
  • branches/GRISLIv3/SOURCES/dragging_coulomb_friction_simplhydro_mod.f90

    r357 r404  
    4747 
    4848 
    49 use module3d_phy, only: nx,ny 
    50 use fake_beta_iter_vitbil_mod 
     49use geography, only: nx,ny 
     50! pour compilation de steps_time_loop : 
     51use fake_beta_iter_vitbil_mod, only:time_iter,time_iter_end,nb_iter_vitbil,beta_iter_vitbil 
    5152 
    5253implicit none 
     
    7071logical :: corr_def = .false.              !< for deformation correction, pour compatibilite beta 
    7172 
    72  
    7373contains 
    7474!------------------------------------------------------------------------------- 
     
    7979subroutine init_dragging      ! Cette routine fait l'initialisation du dragging. 
    8080 
    81 use module3d_phy, only: niter_nolin,betamax,betamax_2d,inv_beta,mstream_mx,mstream_my,drag_mx,drag_my,num_rep_42 
     81use geography,    only: dirnameinp 
    8282use runparam,     only: itracebug 
    83  
    84 use interface_input  !for sediments 
    85 use io_netcdf_grisli !for sediments 
     83use module3d_phy, only: niter_nolin,betamax,betamax_2d,inv_beta,mstream_mx,mstream_my,drag_mx,drag_my, & 
     84                        num_rep_42,num_param 
    8685 
    8786implicit none 
     
    9796 
    9897namelist/drag_coulomb_friction_simplhydro/till_c0, TFA_min, TFA_max, bed_crit, Ob_coeff,m_nolin,niter_nolin,betamax,betamin,bool_sedim,file_sedim,seuil_sedim,coef_sedim 
    99  
    10098 
    10199if (itracebug.eq.1)  call tracebug(' dragging avec neff et slope') 
     
    199197!$ USE OMP_LIB 
    200198 
    201 use module3d_phy, only: nx,ny,betamax,beta_centre,betamx,betamy,hwater,flot,ux,uy,H,B,sealevel_2d 
    202 use param_phy_mod, only: G,RO,ROFRESH 
     199use geography,    only: nx,ny 
     200use module3d_phy, only: betamax,beta_centre,betamx,betamy,hwater,flot,ux,uy,H,B,bsoc,sealevel_2d, & 
     201                        uxbar,uybar 
     202use param_phy_mod,only: G,RO,ROFRESH 
    203203 
    204204implicit none 
     
    220220 
    221221real,parameter        :: u0 = 100d0 ! threshold sliding speed 
     222 
     223integer               :: i,j ! loop integers 
    222224 
    223225!$OMP PARALLEL 
     
    320322subroutine mstream_dragging   ! defini la localisation des streams 
    321323 
    322    
    323 use module3d_phy, only: nx,ny,betamax,betamx,betamy,fleuvemx,fleuvemy,gzmx,gzmy,flgzmx,flgzmy,flot,flotmx,flotmy 
     324use geography,    only: nx,ny  
     325use module3d_phy, only: betamax,betamx,betamy,fleuvemx,fleuvemy,gzmx,gzmy,flgzmx,flgzmy,flot,flotmx,flotmy 
    324326 
    325327implicit none 
     328 
     329integer :: i,j  ! loop integers 
    326330 
    327331!$OMP PARALLEL 
  • branches/GRISLIv3/SOURCES/dragging_param_beta_mod.f90

    r394 r404  
    2323  ! * un critere sur la courbure du socle (si negatif, vallees)  
    2424 
    25   use module3d_phy, only:nx,ny 
    26   use io_netcdf_grisli 
     25  use geography, only: nx,ny 
    2726  ! pour compilation de steps_time_loop : 
    2827  use fake_beta_iter_vitbil_mod, only:time_iter,time_iter_end,nb_iter_vitbil,beta_iter_vitbil 
     
    4443 
    4544  real :: coef_ile      ! coef frottement zones iles   (0.1) 
     45 
     46  real :: neffmin = 1.e5 ! as in neffect, but this should be the exact same variable 
    4647 
    4748  real, dimension(nx,ny) :: Vcol_x           !< uniquement pour compatibilite avec spinup cat 
     
    7071 
    7172 
    72     ! formats pour les ecritures dans 42 
    73 428 format(A) 
    7473 
    7574    ! lecture des parametres du run                      block drag neff 
     
    7978    read(num_param,drag_param_beta) 
    8079 
    81     write(num_rep_42,428)'!___________________________________________________________'  
    82     write(num_rep_42,428) '&drag_param_beta          ! nom du bloc dragging param beta' 
     80    write(num_rep_42,'(A)')'!___________________________________________________________'  
     81    write(num_rep_42,'(A)') '&drag_param_beta          ! nom du bloc dragging param beta' 
    8382    write(num_rep_42,*) 
    8483    write(num_rep_42,*) 'beta_slope            = ', beta_slope 
     
    8786    write(num_rep_42,*) 'betamin               = ', betamin 
    8887    write(num_rep_42,*)'/'                             
    89     write(num_rep_42,428) '! Slope & expo of beta = - slope x Neff ** expo' 
    90  
     88    write(num_rep_42,'(A)') '! Slope & expo of beta = - slope x Neff ** expo' 
     89     
    9190    inv_beta=0 
    9291    !------------------------------------------------------------------- 
     
    124123    !         (ce bloc etait avant dans flottab) 
    125124 
    126      
     125 
    127126 
    128127    !    -- !$OMP DO 
     
    134133    !    -- end do 
    135134    !    -- !$OMP END DO 
    136      
     135 
    137136    implicit none 
    138137    integer :: i,j 
     
    152151    !aurel, for the borders: 
    153152    !$OMP WORKSHARE 
    154     neff(:,ny)=1.e5 
    155     neff(nx,:)=1.e5 
     153    neff(:,ny)=neffmin 
     154    neff(nx,:)=neffmin 
    156155    ! calcul de hwat (staggered) 
    157156    hwatmx(:,:)=0. 
     
    177176    where (ilemx(:,:)) betamx(:,:) = betamx(:,:) * coef_ile 
    178177    where (ilemy(:,:)) betamy(:,:) = betamy(:,:) * coef_ile 
    179  
    180178 
    181179    betamx(:,:)=max(betamx(:,:),betamin) 
     
    189187    !$OMP END WORKSHARE 
    190188 
    191     ! points flottants  
     189    ! points flottants 
    192190    !$OMP DO 
    193191    do j=2,ny 
     
    202200    end do 
    203201    !$OMP END DO 
    204  
    205202 
    206203    !$OMP DO 
     
    230227    implicit none 
    231228    integer :: i,j 
    232      
     229 
    233230    !$OMP PARALLEL 
    234231 
     
    245242    ! detection des cotes 
    246243    !$OMP DO 
    247     do  j=2,ny-1   
    248        do i=2,nx-1   
    249           if ((.not.flot(i,j)).and. &  
     244    do  j=2,ny-1 
     245       do i=2,nx-1 
     246          if ((.not.flot(i,j)).and. & 
    250247               ((flot(i+1,j)).or.(flot(i,j+1)).or.(flot(i-1,j)).or.(flot(i,j-1)))) then 
    251248             cote(i,j)=.true. 
  • branches/GRISLIv3/SOURCES/dragging_param_beta_sedim_mod.f90

    r394 r404  
    2323  ! * un critere sur la courbure du socle (si negatif, vallees)  
    2424 
    25   use module3d_phy, only:nx,ny 
    26   use io_netcdf_grisli 
     25  use geography, only:nx,ny 
     26  ! pour compilation de steps_time_loop : 
    2727  use fake_beta_iter_vitbil_mod, only:time_iter,time_iter_end,nb_iter_vitbil,beta_iter_vitbil 
    2828 
     
    6363  !> 
    6464  subroutine init_dragging      ! Cette routine fait l'initialisation du dragging. 
    65      
     65 
     66    use geography,    only:dirnameinp 
    6667    use module3d_phy, only:betamax,num_param,num_rep_42,inv_beta,mstream_mx,mstream_my,& 
    67          drag_mx,drag_my,betamax_2d,niter_nolin,dirnameinp 
     68         drag_mx,drag_my,betamax_2d,niter_nolin 
    6869    use runparam, only:itracebug 
    69      
     70 
    7071    implicit none 
    7172 
     
    7879 
    7980    if (itracebug.eq.1)  call tracebug(' dragging param avec sedim') 
     81 
    8082 
    8183 
     
    114116 
    115117    ! modification of basal drag depends on where we have sediments 
    116     ! for Antarctica, we assume that what is present-day below sea level has sediment 
     118    ! for Antarctica, we can assume that what is present-day below sea level has sediment 
    117119    file_sedim=trim(dirnameinp)//trim(file_sedim) 
    118120    call lect_input(1,'h_sedim',1,h_sedim(:,:),file_sedim,file_ncdf) 
     
    163165    integer :: i,j 
    164166 
    165  
    166167    !$OMP PARALLEL 
    167168    ! calcul de neff (pression effective sur noeuds majeurs) 
     
    208209       betamy(:,:)= beta_slope*(neffmy(:,:)**beta_expo) * coef_sedim 
    209210    endwhere 
    210     !where (h_sedimmx(:,:).gt.seuil_sedim) betamx(:,:) = beta_slope*(neffmin**beta_expo)/neffmin 
    211     !where (h_sedimmy(:,:).gt.seuil_sedim) betamy(:,:) = beta_slope*(neffmin**beta_expo)/neffmin 
    212211 
    213212    where (ilemx(:,:)) betamx(:,:) = betamx(:,:) * coef_ile 
     
    223222 
    224223    !$OMP END WORKSHARE 
    225  
    226  
    227     ! calcul de gzmx  
    228224 
    229225    ! points flottants 
     
    260256  !------------------------------------------------------------------------- 
    261257  subroutine mstream_dragging   ! defini la localisation des streams 
    262      
     258 
    263259    use module3d_phy, only:fleuvemx,fleuvemy,gzmx,gzmy,flgzmx,flgzmy,flotmx,flotmy,flot,& 
    264260         betamx,betamy,betamax 
     
    267263    implicit none 
    268264    integer :: i,j 
     265 
    269266    !$OMP PARALLEL 
    270267 
Note: See TracChangeset for help on using the changeset viewer.