Changeset 431
- Timestamp:
- 04/26/23 17:03:03 (12 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GRISLIv3/SOURCES/prescribe-H-i2s_mod.f90
r430 r431 18 18 module prescribe_H 19 19 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 26 22 27 23 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 ! ------------------------------------------------------ 46 40 47 41 contains … … 54 48 subroutine init_prescribe_H 55 49 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 56 54 implicit none 57 55 integer :: voisin !< pour test sur des masques 56 integer :: i,j 58 57 59 58 if (itracebug.eq.1) call tracebug(' Entree dans routine init_prescribe_H') … … 66 65 end where 67 66 68 69 67 ! determine the initial grounding line 70 68 71 69 MK_gl0(:,:)=0 72 70 HP0(:,:)=H0(:,:) 73 74 71 75 72 do j=2,ny-1 … … 78 75 if ((MK_flot0(i,j).eq.0).and.(voisin.gt.0)) then ! grounded and at least one neighbour floating 79 76 MK_gl0(i,j) = 1 ! tagged mask grounding line 80 81 77 end if 82 78 end do 83 79 end do 84 80 85 86 81 call prescribe_grid_boundary_0 87 82 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 90 84 91 85 if (geoplace(1:4).eq.'GI2S') then … … 108 102 109 103 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 111 108 implicit none 112 109 … … 115 112 where ((MK_flot0(:,:).eq. 1).or.(MK_gl0(:,:) .eq. 1)) ! floating or grounding line 116 113 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') 121 117 122 118 end subroutine prescribe_present_H_gl 123 124 119 120 !______________________________________________________________________________________ 125 121 !> function prescribe_present_H_gl_bmelt 126 122 !! calculate the initial grounding line position … … 129 125 130 126 subroutine prescribe_present_H_gl_bmelt 131 127 128 use module3D_phy, only: i_hp 129 use runparam, only: itracebug 130 132 131 implicit none 133 132 134 133 if (itracebug.eq.1) call tracebug(' Entree dans routine prescribe_present_H_gl_bmelt') 135 134 136 ! where (MK_gl0(:,:) .eq. 1) ! grounding line only !cdc pour calcule fonte basale137 ! i_hp(:,:) = 1 ! thickness prescribed to present value138 ! hp(:,:) = Hp0(:,:)139 ! end where135 ! 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 140 139 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') 143 141 144 142 end subroutine prescribe_present_H_gl_bmelt … … 150 148 151 149 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') 154 155 where (i_hp0(:,:).eq.1) ! les points i_hp0 le sont pour tout le run 155 156 i_hp(:,:) = i_hp0(:,:) … … 157 158 end where 158 159 159 if (itracebug.eq.1) call tracebug(' fin prescribe_fixed_points') 160 160 if (itracebug.eq.1) call tracebug(' fin prescribe_fixed_points') 161 161 162 162 end subroutine prescribe_fixed_points … … 169 169 170 170 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 172 176 implicit none 173 177 … … 175 179 176 180 177 ! noeuds qui doivent être imposés181 ! noeuds qui doivent être imposés 178 182 179 183 where ((MK_flot0(:,:).eq. 1).or.(MK_gl0(:,:) .eq. 1)) ! floating or grounding line … … 181 185 end where 182 186 183 ! valeur imposee187 ! valeur imposee 184 188 where (MK_flot0(:,:).eq. 1) ! paleo shelf epaisseur a 1 185 189 hp(:,:) = 1. … … 191 195 end where 192 196 193 194 197 end subroutine prescribe_paleo_gl_shelf 195 198 … … 200 203 201 204 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 204 212 if (itracebug.eq.1) call tracebug(' Entree dans routine prescribe_grid_boundary_0') 205 213 … … 217 225 hp(:,ny) = 0 218 226 219 ! valeurs de reference227 ! valeurs de reference 220 228 i_hp0(1,:) = 1 221 229 i_hp0(nx,:) = 1 … … 228 236 hp0(:,ny) = 0 229 237 230 231 238 end subroutine prescribe_grid_boundary_0 232 239 !______________________________________________________________________________________ … … 237 244 !! 238 245 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 240 250 implicit none 241 251 if (itracebug.eq.1) call tracebug(' Entree dans routine break_all_ice_shelves ') … … 259 269 end where 260 270 261 262 271 end subroutine break_all_ice_shelves 263 272 … … 268 277 !! 269 278 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 272 286 integer :: nbvoisins,nbdeglac,iv,jv 273 287 real :: hmoy,hmin,hmax 288 integer :: i,j 274 289 275 290 if (itracebug.eq.1) call tracebug(' Entree dans routine melt_ice_shelves') … … 314 329 315 330 316 331 !______________________________________________________________________________________ 317 332 !> function prescribe_present_H_gl 318 333 !! calculate the initial grounding line position … … 320 335 321 336 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 324 345 if (itracebug.eq.1) call tracebug(' Entree dans routine prescribe_present_H_gl-copy') 325 346 … … 333 354 end do 334 355 335 !!$where ((MK_flot0(:,:).eq. 1).or.(MK_gl0(:,:) .eq. 1)) ! floating or grounding line336 !!$ i_hp(:,:) = 1 ! thickness prescribed to present value337 !!$! hp(:,:) = 1 !Hp0(:,:)338 !!$end where339 340 341 356 end subroutine prescribe_present_H_gl_copy 342 !______________________________________________________________________________________357 !______________________________________________________________________________________ 343 358 344 359
Note: See TracChangeset
for help on using the changeset viewer.