Changeset 431


Ignore:
Timestamp:
04/26/23 17:03:03 (12 months ago)
Author:
dumas
Message:

Use only in module prescribe_H

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GRISLIv3/SOURCES/prescribe-H-i2s_mod.f90

    r430 r431  
    1818module prescribe_H 
    1919 
    20   use module3D_phy 
    21   use param_phy_mod 
    22   use interface_input 
    23  
    24 ! pour les reculs de type ice2sea 
    25 !  use toy_retreat_mod 
     20  ! pour les reculs de type ice2sea 
     21  !  use toy_retreat_mod 
    2622 
    2723  implicit none 
    28 !  real,dimension(nx,ny)    :: Hp           !< H value if prescribed 
    29 !  real,dimension(nx,ny)    :: Hp0          !< H value if prescribed (reference value) 
    30 !  real,dimension(nx,ny)    :: Delta_H      !< Delta_H value if prescribed 
    31 !  integer,dimension(nx,ny) :: i_delta_H    !< 1 if Delta_H is prescribed on this node, else 0 
    32 !  integer,dimension(nx,ny) :: i_Hp         !< 1 if H is prescribed on this node, else 0 
    33 !  integer,dimension(nx,ny) :: i_Hp0        !< i_hp mask reference value does not change with time 
    34 !  integer,dimension(nx,ny) :: MK_gl0       !< mask grounding line initial 
    35 !  integer,dimension(nx,ny) :: MK_flot0     !< mask float initial 
    36  
    37 ! pour grounding line retreat, ice2sea 
    38 ! nouvelle version interactive pour imposer des contraintes variees. 
    39 ! sanity check, temps de depart en fonction des bassins, .... 
    40  
    41  
    42 ! nouvelle version recul grounding line pour ice2sea 
    43 ! ------------------------------------------------------ 
    44  
    45  
     24  !  real,dimension(nx,ny)    :: Hp           !< H value if prescribed 
     25  !  real,dimension(nx,ny)    :: Hp0          !< H value if prescribed (reference value) 
     26  !  real,dimension(nx,ny)    :: Delta_H      !< Delta_H value if prescribed 
     27  !  integer,dimension(nx,ny) :: i_delta_H    !< 1 if Delta_H is prescribed on this node, else 0 
     28  !  integer,dimension(nx,ny) :: i_Hp         !< 1 if H is prescribed on this node, else 0 
     29  !  integer,dimension(nx,ny) :: i_Hp0        !< i_hp mask reference value does not change with time 
     30  !  integer,dimension(nx,ny) :: MK_gl0       !< mask grounding line initial 
     31  !  integer,dimension(nx,ny) :: MK_flot0     !< mask float initial 
     32 
     33  ! pour grounding line retreat, ice2sea 
     34  ! nouvelle version interactive pour imposer des contraintes variees. 
     35  ! sanity check, temps de depart en fonction des bassins, .... 
     36 
     37 
     38  ! nouvelle version recul grounding line pour ice2sea 
     39  ! ------------------------------------------------------ 
    4640 
    4741contains 
     
    5448  subroutine init_prescribe_H 
    5549 
     50    use module3D_phy, only: flot,MK_flot0,MK_gl0,Hp0,H0,Mk_init,i_hp0 
     51    use geography, only: nx,ny,geoplace 
     52    use runparam, only: itracebug  
     53 
    5654    implicit none 
    5755    integer    :: voisin   !< pour test sur des masques 
     56    integer :: i,j 
    5857 
    5958    if (itracebug.eq.1)  call tracebug(' Entree dans routine init_prescribe_H') 
     
    6665    end where 
    6766 
    68  
    6967    ! determine the initial grounding line 
    7068 
    7169    MK_gl0(:,:)=0 
    7270    HP0(:,:)=H0(:,:) 
    73  
    7471 
    7572    do j=2,ny-1 
     
    7875          if ((MK_flot0(i,j).eq.0).and.(voisin.gt.0))  then  ! grounded and at least one neighbour floating 
    7976             MK_gl0(i,j) = 1                                ! tagged mask grounding line 
    80  
    8177          end if 
    8278       end do 
    8379    end do 
    8480 
    85  
    8681    call prescribe_grid_boundary_0 
    8782 
    88  
    89 ! Dans le cas du Groenland ice2sea, mk_init = 3 -> noeuds qui ne bougent pas 
     83    ! Dans le cas du Groenland ice2sea, mk_init = 3 -> noeuds qui ne bougent pas 
    9084 
    9185    if (geoplace(1:4).eq.'GI2S') then 
     
    108102 
    109103  subroutine prescribe_present_H_gl 
    110  
     104     
     105    use module3D_phy, only: MK_flot0,MK_gl0,i_hp,Hp,Hp0 
     106    use runparam, only: itracebug  
     107     
    111108    implicit none 
    112109 
     
    115112    where ((MK_flot0(:,:).eq. 1).or.(MK_gl0(:,:) .eq. 1)) ! floating or grounding line 
    116113       i_hp(:,:) = 1                                      ! thickness prescribed to present value 
    117        hp(:,:)   = Hp0(:,:) 
    118     end where 
    119 if (itracebug.eq.1)  call tracebug(' fin prescribe_present_H_gl') 
    120  
     114       Hp(:,:)   = Hp0(:,:) 
     115    end where 
     116    if (itracebug.eq.1)  call tracebug(' fin prescribe_present_H_gl') 
    121117 
    122118  end subroutine prescribe_present_H_gl 
    123    
    124    !______________________________________________________________________________________ 
     119 
     120  !______________________________________________________________________________________ 
    125121  !>  function prescribe_present_H_gl_bmelt 
    126122  !! calculate the initial grounding line position 
     
    129125 
    130126  subroutine prescribe_present_H_gl_bmelt 
    131  
     127     
     128    use module3D_phy, only: i_hp 
     129    use runparam, only: itracebug  
     130     
    132131    implicit none 
    133132 
    134133    if (itracebug.eq.1)  call tracebug(' Entree dans routine  prescribe_present_H_gl_bmelt') 
    135134 
    136 !    where (MK_gl0(:,:) .eq. 1) ! grounding line only !cdc pour calcule fonte basale 
    137 !       i_hp(:,:) = 1                                 ! thickness prescribed to present value 
    138 !       hp(:,:)   = Hp0(:,:) 
    139 !    end where 
     135    !    where (MK_gl0(:,:) .eq. 1) ! grounding line only !cdc pour calcule fonte basale 
     136    !       i_hp(:,:) = 1                                 ! thickness prescribed to present value 
     137    !       hp(:,:)   = Hp0(:,:) 
     138    !    end where 
    140139    i_hp(:,:) = 0 
    141 if (itracebug.eq.1)  call tracebug(' fin prescribe_present_H_gl_bmelt') 
    142  
     140    if (itracebug.eq.1)  call tracebug(' fin prescribe_present_H_gl_bmelt') 
    143141 
    144142  end subroutine prescribe_present_H_gl_bmelt 
     
    150148 
    151149  subroutine prescribe_fixed_points 
    152  
    153 if (itracebug.eq.1)  call tracebug(' Entree dans routine  prescribe_fixed_points') 
     150     
     151    use module3D_phy, only: i_hp0,i_hp,Hp,Hp0 
     152    use runparam, only: itracebug  
     153     
     154    if (itracebug.eq.1)  call tracebug(' Entree dans routine  prescribe_fixed_points') 
    154155    where (i_hp0(:,:).eq.1)             ! les points i_hp0 le sont pour tout le run 
    155156       i_hp(:,:) = i_hp0(:,:) 
     
    157158    end where 
    158159 
    159 if (itracebug.eq.1)  call tracebug(' fin prescribe_fixed_points') 
    160  
     160    if (itracebug.eq.1)  call tracebug(' fin prescribe_fixed_points') 
    161161 
    162162  end subroutine prescribe_fixed_points 
     
    169169 
    170170  subroutine prescribe_paleo_gl_shelf 
    171  
     171     
     172    use module3D_phy, only: MK_flot0,MK_gl0,i_hp,hp,sealevel_2d,Bsoc 
     173    use runparam, only: itracebug  
     174    use param_phy_mod, only: row,ro 
     175     
    172176    implicit none 
    173177 
     
    175179 
    176180 
    177 !   noeuds qui doivent être imposés 
     181    !   noeuds qui doivent être imposés 
    178182 
    179183    where ((MK_flot0(:,:).eq. 1).or.(MK_gl0(:,:) .eq. 1)) ! floating or grounding line 
     
    181185    end where 
    182186 
    183 ! valeur imposee 
     187    ! valeur imposee 
    184188    where (MK_flot0(:,:).eq. 1)                          ! paleo shelf epaisseur a 1 
    185189       hp(:,:)   = 1. 
     
    191195    end where 
    192196 
    193  
    194197  end subroutine prescribe_paleo_gl_shelf 
    195198 
     
    200203 
    201204  subroutine prescribe_grid_boundary_0 
    202  
    203     implicit none 
     205     
     206    use module3D_phy, only: i_hp,hp,i_hp0,hp0 
     207    use runparam, only: itracebug  
     208    use geography, only: nx,ny 
     209 
     210    implicit none 
     211 
    204212    if (itracebug.eq.1)  call tracebug(' Entree dans routine prescribe_grid_boundary_0') 
    205213 
     
    217225    hp(:,ny)  = 0 
    218226 
    219 ! valeurs de reference 
     227    ! valeurs de reference 
    220228    i_hp0(1,:)  = 1 
    221229    i_hp0(nx,:) = 1 
     
    228236    hp0(:,ny)   = 0 
    229237 
    230  
    231238  end subroutine prescribe_grid_boundary_0 
    232239  !______________________________________________________________________________________ 
     
    237244  !! 
    238245  subroutine break_all_ice_shelves 
    239  
     246     
     247    use module3D_phy, only: i_hp,hp,hp0,H,debug_3D,flot,MK_flot0 
     248    use runparam, only: itracebug 
     249     
    240250    implicit none 
    241251    if (itracebug.eq.1)  call tracebug(' Entree dans routine break_all_ice_shelves ') 
     
    259269    end where 
    260270 
    261  
    262271  end subroutine break_all_ice_shelves 
    263272 
     
    268277  !! 
    269278  subroutine melt_ice_shelves 
    270  
    271     implicit none 
     279     
     280    use module3D_phy, only: i_hp,H,hp,dt,flot 
     281    use runparam, only: itracebug  
     282    use geography, only: nx,ny 
     283     
     284    implicit none 
     285     
    272286    integer :: nbvoisins,nbdeglac,iv,jv 
    273287    real    :: hmoy,hmin,hmax 
     288    integer :: i,j 
    274289 
    275290    if (itracebug.eq.1)  call tracebug(' Entree dans routine melt_ice_shelves') 
     
    314329 
    315330 
    316    !______________________________________________________________________________________ 
     331  !______________________________________________________________________________________ 
    317332  !>  function prescribe_present_H_gl 
    318333  !! calculate the initial grounding line position 
     
    320335 
    321336  subroutine prescribe_present_H_gl_copy 
    322  
    323     implicit none 
     337     
     338    use module3D_phy, only: i_hp,hp,Hp0,MK_flot0,MK_gl0 
     339    use runparam, only: itracebug  
     340    use geography, only: nx,ny 
     341     
     342    implicit none 
     343    integer :: i,j 
     344     
    324345    if (itracebug.eq.1)  call tracebug(' Entree dans routine  prescribe_present_H_gl-copy') 
    325346 
     
    333354    end do 
    334355 
    335 !!$where ((MK_flot0(:,:).eq. 1).or.(MK_gl0(:,:) .eq. 1)) ! floating or grounding line 
    336 !!$   i_hp(:,:) = 1                                      ! thickness prescribed to present value 
    337 !!$!   hp(:,:)   = 1   !Hp0(:,:) 
    338 !!$end where 
    339  
    340  
    341356  end subroutine prescribe_present_H_gl_copy 
    342 !______________________________________________________________________________________ 
     357  !______________________________________________________________________________________ 
    343358 
    344359 
Note: See TracChangeset for help on using the changeset viewer.