[24] | 1 | !> \file Qprod_icetemp.f90 |
---|
| 2 | !! Subroutines for heat production |
---|
| 3 | !< |
---|
| 4 | |
---|
| 5 | !> \namespace Qprod_icetemp |
---|
| 6 | !! Subroutines for heat production |
---|
| 7 | !< |
---|
| 8 | |
---|
| 9 | |
---|
| 10 | !> SUBROUTINE: Qprod |
---|
| 11 | !! Subroutine for heat pruduction |
---|
| 12 | !! Used modules: |
---|
| 13 | !! - use Icetemp_declar |
---|
| 14 | !> |
---|
| 15 | |
---|
| 16 | subroutine Qprod_ice(Iq1) |
---|
| 17 | |
---|
| 18 | use Icetemp_declar |
---|
| 19 | |
---|
| 20 | implicit none |
---|
| 21 | |
---|
| 22 | !<Arguments |
---|
| 23 | |
---|
| 24 | integer,intent(In) :: Iq1 !< Choice Of Method For Heat Production |
---|
| 25 | |
---|
| 26 | !< Local variables needed by the various case of Iq1 |
---|
| 27 | |
---|
| 28 | real, dimension(Nx,Ny) :: Pente2_maj !< Pente Au Carre Sur Les Noeuds Majeurs |
---|
| 29 | real, dimension(Nx,Ny) :: Pente_maj !< Pente Au Carre Sur Les Noeuds Majeurs |
---|
| 30 | real, dimension(Nx,Ny) :: Vit_maj !< Ubar Moyennee Sur Les Noeuds Majeurs |
---|
| 31 | real, dimension(Nx,Ny) :: Uslid_maj !< Uslid Moyennee Sur Les Noeuds Majeurs |
---|
| 32 | real, dimension(Nx,Ny) :: Vit_stag2 !< Ubar Moyennee Sur Les Noeuds Stag |
---|
| 33 | real, dimension(Nx,Ny,Nz) :: Vit_stag3 !< Ubar Moyennee Sur Les Noeuds Stag |
---|
| 34 | real, dimension(Nx,Ny) :: Hmxy !< Epaisseur Moyenne Sur Les Noeuds Stag |
---|
| 35 | real, dimension(Nx,Ny) :: Qslid !< Chaleur Produite Par Glissement Sur Les Noeuds Stag |
---|
| 36 | real, dimension(Nx,Ny) :: Qdef2 !< Chaleur Produite Par Deformation Sur Les Noeuds Stag |
---|
| 37 | real, dimension(Nx,Ny,Nz) :: Qdef3 !< Chaleur Produite Par Deformation Sur Les Noeuds Stag |
---|
| 38 | real, dimension(Nx,Ny) :: Pente_stag !< Pente Au Carre Sur Les Noeuds Stag |
---|
| 39 | real, dimension(Nx,Ny) :: Uslid_stag !< Uslid Moyennee Sur Les Noeuds Stag |
---|
| 40 | real, dimension(Nx,Ny) :: Tob_stag !< Contrainte Basale |
---|
| 41 | real, dimension(Nx,Ny) :: Tox !< Contraintes Sur Maille Mx |
---|
| 42 | real, dimension(Nx,Ny) :: Toy !< Contraintes Sur Maille Mx |
---|
| 43 | |
---|
| 44 | |
---|
| 45 | select case (Iq1) |
---|
| 46 | |
---|
| 47 | case (1) ! iq1 = 1 Q_prod_demi, Ancienne Methode Sur Les Demi-Mailles |
---|
| 48 | !------------------------------------------------------------------------------------------ |
---|
| 49 | |
---|
| 50 | ! Calcul Avec L'Ancienne Methode Sur Les Demi-Mailles |
---|
| 51 | ! Nom Du Sub Routine Avant Et Var Utilisee |
---|
| 52 | ! Q_prod_demi(T_m%T,T_m%Tpmp,Deform_m%Tobmx,Deform_m%Tobmy,Geom_m%H,Geom_m%Hmx,Geom_m%Hmy,mask_flot_m%Flot,mask_flot_m%Flotmx,mask_flot_m%Flotmy,mask_flot_m%Flgzmx ,mask_flot_m%Flgzmy,Geom_m%Slop_x,Geom_m%Slop_y,Ice_flow_m%Ddx,Ice_flow_m%Ddy,& |
---|
| 53 | ! Ice_flow_m%Ddbx,Ice_flow_m%Ddby,Deform_m%Epsxx,Deform_m%Epsyy,Deform_m%Epsxy,mask_flot_m%Gzmx,mask_flot_m%Gzmy,Deform_m%Btt,Ice_flow_m%Uxbar,Ice_flow_m%Uybar,therm_var_m%Phid,Deform_m%Glen,Deform_m%Visc) |
---|
| 54 | |
---|
| 55 | do K=2,Nz |
---|
| 56 | do J=2,Ny-1 |
---|
| 57 | do I=2,Nx-1 |
---|
| 58 | |
---|
| 59 | ! Calcul De La Chaleur De Deformation Selon Xx Yy Zz Et Xy |
---|
| 60 | ! Pour Les Ice-Streams Et Ice-Shelves |
---|
| 61 | ! Les Divers Eps Sont Calcules Dans Strain-Rate Pour L'Ensemble De La Grille |
---|
| 62 | |
---|
| 63 | if ((flot(I,J).or.flgzmx(I,J).or.flgzmx(I+1,J)).or. & |
---|
| 64 | (flgzmy(I,J).or.flgzmy(I,J+1))) then |
---|
| 65 | |
---|
| 66 | Chal2_x(I,J,K)=2.*Visc(I,J,K)*Epsxx(I,J)**2 |
---|
| 67 | Chal2_y(I,J,K)=2.*Visc(I,J,K)*Epsyy(I,J)**2 |
---|
| 68 | Chal2_z(I,J,K)=2.*Visc(I,J,K)*(-Epsxx(I,J)-Epsyy(I,J))**2 |
---|
| 69 | |
---|
| 70 | ! Epsxy Est Calcule Sur Les Noeuds Mineur 1/2,1/2, Faire La Moyenne |
---|
| 71 | Chal2_xy(I,J,K)=(Epsxy(I,J)+Epsxy(I+1,J)+Epsxy(I+1,J+1)+Epsxy(I,J+1)) |
---|
| 72 | Chal2_xy(I,J,K)=2.*Visc(I,J,K)*(Chal2_xy(I,J,K)*0.25)**2 |
---|
| 73 | |
---|
| 74 | else ! Glace Posee |
---|
| 75 | Chal2_x(I,J,K)=0. |
---|
| 76 | Chal2_y(I,J,K)=0. |
---|
| 77 | Chal2_z(I,J,K)=0. |
---|
| 78 | Chal2_xy(I,J,K)=0. |
---|
| 79 | endif |
---|
| 80 | end do |
---|
| 81 | end do |
---|
| 82 | end do |
---|
| 83 | |
---|
| 84 | ! Partie Sia Calcul De La Chaleur Produite Sur Chaque Demi Maille |
---|
| 85 | do L=1,size(Btt,4) !N1poly,N2poly |
---|
| 86 | do J=2,Ny |
---|
| 87 | do I=2,Nx |
---|
| 88 | ! Ffx A 3 Dimensions ! |
---|
| 89 | Ffx(I,J,L)=ddx(I,J,L)*Sdx(I,J)*Sdx(I,J) |
---|
| 90 | Ffy(I,J,L)=ddy(I,J,L)*Sdy(I,J)*Sdy(I,J) |
---|
| 91 | end do |
---|
| 92 | end do |
---|
| 93 | end do |
---|
| 94 | |
---|
| 95 | do L=1,size(Btt,4)!N1poly,N2poly |
---|
| 96 | do K=2,Nz |
---|
| 97 | do J=2,Ny |
---|
| 98 | do I=2,Nx |
---|
| 99 | if ((.not.Flotmx(I,J)).and.(.not.Gzmx(I,J))) then |
---|
| 100 | Chalx(I,J,K,L)=(Btt(I-1,J,K,L)+Btt(I,J,K,L))*Ffx(I,J,L) !& |
---|
| 101 | ! *Ro*G*Ee(K)**(Glen(L)+1)/Cp(I,J,K) |
---|
| 102 | |
---|
| 103 | else if (Gzmx(I,J)) then ! Ice Streams |
---|
| 104 | Chalx(I,J,K,L)=0. |
---|
| 105 | else ! Ice Shelves |
---|
| 106 | Chalx(I,J,K,L)=0. |
---|
| 107 | endif |
---|
| 108 | if ((.not.Flotmy(I,J)).and.(.not.Gzmy(I,J))) then |
---|
| 109 | Chaly(I,J,K,L)=(Btt(I,J-1,K,L)+Btt(I,J,K,L))*Ffy(I,J,L) !& |
---|
| 110 | ! *Ro*G*Ee(K)**(Glen(L)+1)/Cp(I,J,K) |
---|
| 111 | else if (Gzmy(I,J)) then ! Ice Streams |
---|
| 112 | Chaly(I,J,K,L)=0. |
---|
| 113 | |
---|
| 114 | else ! Ice Shelves |
---|
| 115 | Chaly(I,J,K,L)=0. |
---|
| 116 | endif |
---|
| 117 | |
---|
| 118 | end do |
---|
| 119 | end do |
---|
| 120 | end do |
---|
| 121 | end do |
---|
| 122 | |
---|
| 123 | ! Nouvelle Formulation De Chaldef_maj(I,J,K), Le 4 Vient Des Moyennes |
---|
| 124 | ! Deform_m%Btt Et Gauche Et Droite (Ou Haut Et Bas) Mais Il Faut Sommer |
---|
| 125 | ! Les Productions X Et Y |
---|
| 126 | ! Ancienne Formulation Chal=(Ro*G*H(I,J))**4*(Sx2+Sy2)*(Sx*Sx+Sy*Sy) |
---|
| 127 | |
---|
| 128 | do K=2,Nz |
---|
| 129 | do J=1,Ny-1 |
---|
| 130 | do I=1,Nx-1 |
---|
| 131 | |
---|
| 132 | ! Modif Christophe Mars 2000 : Chalx Et Chaly Sont A 4 Dim |
---|
| 133 | Chaldef_maj(I,J,K)= 0. |
---|
| 134 | |
---|
| 135 | ! Chalk_2 Pour Ice Shelves Et Ice Streams |
---|
| 136 | Chalk_2=(Chal2_x(I,J,K)+Chal2_y(I,J,K) + & |
---|
| 137 | Chal2_z(I,J,K)+Chal2_xy(I,J,K))/Cp(I,J,K) |
---|
| 138 | |
---|
| 139 | ! Chalk_1 Pour La Partie Posée |
---|
| 140 | do L=1,size(Btt,4)!N1poly,N2poly |
---|
| 141 | |
---|
| 142 | ! On Somme La Chaleur Due Aux Diverses Lois De Déformation Et Celles En X Et Y |
---|
| 143 | Chalk_1=(Chalx(I,J,K,L)+Chalx(I+1,J,K,L))+ & |
---|
| 144 | (Chaly(I,J,K,L)+Chaly(I,J+1,K,L)) |
---|
| 145 | |
---|
| 146 | Chalk_1=Ro*G*Chalk_1/4.*(Ee(K)**(Glen(L)+1))/Cp(I,J,K) |
---|
| 147 | Chaldef_maj(I,J,K)= Chalk_1 + Chaldef_maj(I,J,K) |
---|
| 148 | enddo |
---|
| 149 | |
---|
| 150 | ! Pour Shelves Et Streams, On Ajoute Chalk_2 |
---|
| 151 | Chaldef_maj(I,J,K) = Chaldef_maj(I,J,K) + Chalk_2 |
---|
| 152 | end do |
---|
| 153 | end do |
---|
| 154 | end do |
---|
| 155 | ! Chaleur Produite A La Base Par Le Glissement |
---|
| 156 | do J=2,Ny |
---|
| 157 | do I=2,Nx |
---|
| 158 | |
---|
| 159 | if (Gzmx(I,J)) then |
---|
| 160 | Chalglissx(I,J)= abs(Uxbar(I,J)*Tobmx(I,J)) |
---|
| 161 | else |
---|
| 162 | Chalglissx(I,J)=ddbx(I,J)*Sdx(I,J)**2*Ro*G*Hmx(I,J) |
---|
| 163 | endif |
---|
| 164 | |
---|
| 165 | if (Gzmy(I,J)) then |
---|
| 166 | Chalglissy(I,J)= abs(Uybar(I,J)*Tobmy(I,J)) |
---|
| 167 | else |
---|
| 168 | Chalglissy(I,J)=ddby(I,J)*sdy(I,J)**2*Ro*G*Hmy(I,J) |
---|
| 169 | endif |
---|
| 170 | |
---|
| 171 | end do |
---|
| 172 | end do |
---|
| 173 | |
---|
| 174 | ! Boundary Condition Ice-Rock Interface |
---|
| 175 | K=Nz |
---|
| 176 | |
---|
| 177 | do J=2,Ny-1 |
---|
| 178 | do I=2,Nx-1 |
---|
| 179 | |
---|
| 180 | ! L'Ancien Chalbed Correspond A Chaldef_maj(I,J,Nz) : Pas La Peine De Recalculer |
---|
| 181 | !---------------------------------------------------- |
---|
| 182 | ! Chalbed=0. |
---|
| 183 | ! Do L=1,size(Btt,4)!N1poly,N2poly |
---|
| 184 | ! Chalbed_1=(Chalx(I,J,K,L)+Chalx(I+1,J,K,L)) & |
---|
| 185 | ! + (Chaly(I,J,K,L)+Chaly(I,J+1,K,L)) |
---|
| 186 | ! Chalbed_1=Ro*G*Chalbed_1/4.*H(I,J) |
---|
| 187 | ! Chalbed= Chalbed_1 +Chalbed |
---|
| 188 | ! Enddo |
---|
| 189 | |
---|
| 190 | ! Rajouter Un Flux De Chaleur Pour La Production Par Deformation |
---|
| 191 | ! Dans La Derniere 1/2 Maille Et Par Le Glissement |
---|
| 192 | ! Attention Phid Est >0 Et Ghf Est <0 |
---|
| 193 | if (.not.flot(I,J)) then |
---|
| 194 | |
---|
| 195 | ! Phid Avec Fonte Sous Les Streams |
---|
| 196 | ! Phid(I,J)=0.25*(Chalglissx(I,J)+Chalglissx(I+1,J)+ & |
---|
| 197 | ! Chalglissy(I,J)+Chalglissy(I,J+1)) + & |
---|
| 198 | ! Chalbed*Fracq |
---|
| 199 | |
---|
| 200 | |
---|
| 201 | ! Moyenne Phid Sur 4 Points : Attention 0.5 Pour Moyenne Gauche - Droite |
---|
| 202 | ! Mais Les Chaleurs X,Y S'Ajoutent |
---|
| 203 | |
---|
| 204 | ! Phid(I,J)=0.5*(Chalglissx(I,J)+Chalglissx(I+1,J)+ & |
---|
| 205 | ! Chalglissy(I,J)+Chalglissy(I,J+1)) |
---|
| 206 | |
---|
| 207 | ! Moyenne Phid Sur 12 Points. On Moyenne Chaque Chaleur Et On Somme X Et Y |
---|
| 208 | |
---|
| 209 | Phid(I,J)=0.25*(Chalglissx(I,J)+Chalglissx(I+1,J)+ & |
---|
| 210 | Chalglissy(I,J)+Chalglissy(I,J+1)) |
---|
| 211 | Phid(I,J)=Phid(I,J)+0.125*( & |
---|
| 212 | ((Chalglissx(I,J-1)+Chalglissx(I+1,J-1))+ & |
---|
| 213 | (Chalglissx(I,J+1)+Chalglissx(I+1,J+1))) + & |
---|
| 214 | ((Chalglissy(I-1,J)+Chalglissy(I-1,J+1)) + & |
---|
| 215 | (Chalglissy(I+1,J)+Chalglissy(I+1,J+1)))) |
---|
| 216 | |
---|
| 217 | ! Plus La Base Est Loin Du Point De Fusion Moins La Chaleur De Glissement Est Prise En Compte |
---|
| 218 | Phid(I,J)=Phid(I,J)*exp((T(I,J,Nz)-Tpmp(I,J,Nz))*Ecart_phid) |
---|
| 219 | |
---|
| 220 | ! Pour Sorties Heino |
---|
| 221 | Chalgliss_maj(I,J)=Phid(I,J) |
---|
| 222 | |
---|
| 223 | Phid(I,J)=Phid(I,J)+ Chaldef_maj(I,J,Nz)*Fracq*H(I,J)*Cp(I,J,Nz) |
---|
| 224 | |
---|
| 225 | else |
---|
| 226 | Phid(I,J)=0. |
---|
| 227 | endif |
---|
| 228 | end do |
---|
| 229 | end do |
---|
| 230 | |
---|
| 231 | |
---|
| 232 | case (2) ! Q_prod_centre : Calcul Avec La Somme Des Carres |
---|
| 233 | !------------------------------------------------------------------------------------- |
---|
| 234 | ! Calcul Avec La Somme Des Carres |
---|
| 235 | ! Nom Du Sub Routine Avant Et Var Utilisee |
---|
| 236 | ! Q_prod_centre(T_m%T,T_m%Tpmp,Deform_m%Tobmx,Deform_m%Tobmy,Geom_m%H,Geom_m%Hmx,Geom_m%Hmy,mask_flot_m%Flot,mask_flot_m%Flotmx,mask_flot_m%Flotmy,mask_flot_m%Flgzmx,mask_flot_m%Flgzmy,Geom_m%Slop_x,Geom_m%Slop_y,Ice_flow_m%Ddx,Ice_flow_m%Ddy,& |
---|
| 237 | ! Ice_flow_m%Ddbx,Ice_flow_m%Ddby,Deform_m%Epsxx,Deform_m%Epsyy,Deform_m%Epsxy,mask_flot_m%Gzmx,mask_flot_m%Gzmy,Deform_m%Btt,Ice_flow_m%Uxbar,Ice_flow_m%Uybar,therm_var_m%Phid,Deform_m%Glen,Deform_m%Visc) |
---|
| 238 | |
---|
| 239 | do K=2,Nz |
---|
| 240 | do J=2,Ny-1 |
---|
| 241 | do I=2,Nx-1 |
---|
| 242 | |
---|
| 243 | |
---|
| 244 | ! Calcul De La Chaleur De Deformation Selon Xx Yy Zz Et Xy |
---|
| 245 | ! Pour Les Ice-Streams Et Ice-Shelves |
---|
| 246 | ! Les Divers Eps Sont Calculés Dans Strain-Rate Pour L'Ensemble De La Grille |
---|
| 247 | |
---|
| 248 | if ((flot(I,J).or.Flgzmx(I,J).or.Flgzmx(I+1,J)).or. & |
---|
| 249 | (Flgzmy(I,J).or.Flgzmy(I,J+1))) then |
---|
| 250 | |
---|
| 251 | Chal2_x(I,J,K)=2.*Visc(I,J,K)*Epsxx(I,J)**2 |
---|
| 252 | Chal2_y(I,J,K)=2.*Visc(I,J,K)*Epsyy(I,J)**2 |
---|
| 253 | Chal2_z(I,J,K)=2.*Visc(I,J,K)*(-Epsxx(I,J)-Epsyy(I,J))**2 |
---|
| 254 | |
---|
| 255 | ! Epsxy Est Calcule Sur Les Noeuds Mineur 1/2,1/2, Faire La Moyenne |
---|
| 256 | Chal2_xy(I,J,K)=(Epsxy(I,J)+Epsxy(I+1,J)+Epsxy(I+1,J+1)+Epsxy(I,J+1)) |
---|
| 257 | Chal2_xy(I,J,K)=2.*Visc(I,J,K)*(Chal2_xy(I,J,K)*0.25)**2 |
---|
| 258 | |
---|
| 259 | else ! Glace Posee |
---|
| 260 | Chal2_x(I,J,K)=0. |
---|
| 261 | Chal2_y(I,J,K)=0. |
---|
| 262 | Chal2_z(I,J,K)=0. |
---|
| 263 | Chal2_xy(I,J,K)=0. |
---|
| 264 | endif |
---|
| 265 | end do |
---|
| 266 | end do |
---|
| 267 | end do |
---|
| 268 | |
---|
| 269 | ! Partie Sia Calcul De La Chaleur Produite Sur Chaque Demi Maille |
---|
| 270 | do L=1,size(Btt,4)!N1poly,N2poly |
---|
| 271 | do J=2,Ny |
---|
| 272 | do I=2,Nx |
---|
| 273 | |
---|
| 274 | ! Ffx A 3 Dimensions ! |
---|
| 275 | Ffx(I,J,L)=ddx(I,J,L)*Sdx(I,J)*Sdx(I,J) |
---|
| 276 | Ffy(I,J,L)=ddy(I,J,L)*Sdy(I,J)*Sdy(I,J) |
---|
| 277 | end do |
---|
| 278 | end do |
---|
| 279 | end do |
---|
| 280 | |
---|
| 281 | |
---|
| 282 | do L=1,size(Btt,4) !N1poly,N2poly |
---|
| 283 | do K=2,Nz |
---|
| 284 | do J=2,Ny |
---|
| 285 | do I=2,Nx |
---|
| 286 | if ((.not.Flotmx(I,J)).and.(.not.Gzmx(I,J))) then |
---|
| 287 | Chalx(I,J,K,L)=(Btt(I-1,J,K,L)+Btt(I,J,K,L))*Ffx(I,J,L) !& |
---|
| 288 | ! *Ro*G*Ee(K)**(Glen(L)+1)/Cp(I,J,K) |
---|
| 289 | |
---|
| 290 | else if (Gzmx(I,J)) then ! Ice Streams |
---|
| 291 | Chalx(I,J,K,L)=0. |
---|
| 292 | |
---|
| 293 | else ! Ice Shelves |
---|
| 294 | Chalx(I,J,K,L)=0. |
---|
| 295 | |
---|
| 296 | endif |
---|
| 297 | |
---|
| 298 | if ((.not.Flotmy(I,J)).and.(.not.Gzmy(I,J))) then |
---|
| 299 | Chaly(I,J,K,L)=(Btt(I,J-1,K,L)+Btt(I,J,K,L))*Ffy(I,J,L) !& |
---|
| 300 | ! *Ro*G*Ee(K)**(Glen(L)+1)/Cp(I,J,K) |
---|
| 301 | |
---|
| 302 | else if (Gzmy(I,J)) then ! Ice Streams |
---|
| 303 | Chaly(I,J,K,L)=0. |
---|
| 304 | |
---|
| 305 | else ! Ice Shelves |
---|
| 306 | Chaly(I,J,K,L)=0. |
---|
| 307 | endif |
---|
| 308 | |
---|
| 309 | end do |
---|
| 310 | end do |
---|
| 311 | end do |
---|
| 312 | end do |
---|
| 313 | |
---|
| 314 | ! Nouvelle Formulation De Chaldef_maj(I,J,K), Le 4 Vient Des Moyennes |
---|
| 315 | ! Deform_m%Btt Et Gauche Et Droite (Ou Haut Et Bas) Mais Il Faut Sommer |
---|
| 316 | ! Les Productions X Et Y |
---|
| 317 | ! Ancienne Formulation Chal=(Ro*G*H(I,J))**4*(Sx2+Sy2)*(Sx*Sx+Sy*Sy) |
---|
| 318 | |
---|
| 319 | do K=2,Nz |
---|
| 320 | do J=1,Ny-1 |
---|
| 321 | do I=1,Nx-1 |
---|
| 322 | |
---|
| 323 | ! Modif Christophe Mars 2000 : Chalx Et Chaly Sont A 4 Dim |
---|
| 324 | Chaldef_maj(I,J,K)= 0. |
---|
| 325 | |
---|
| 326 | ! Chalk_2 Pour Ice Shelves Et Ice Streams |
---|
| 327 | Chalk_2=(Chal2_x(I,J,K)+Chal2_y(I,J,K) + & |
---|
| 328 | Chal2_z(I,J,K)+Chal2_xy(I,J,K))/Cp(I,J,K) |
---|
| 329 | |
---|
| 330 | ! Chalk_1 Pour La Partie Posée |
---|
| 331 | do L=1,size(Btt,4)!N1poly,N2poly |
---|
| 332 | |
---|
| 333 | ! On Somme La Chaleur Due Aux Diverses Lois De Déformation Et Celles En X Et Y |
---|
| 334 | ! La Somme Se Fait Par (Cx2+Cy2)** 0.5. Le 4 Vient Des Moyennes Deform_m%Btt + Des Moyennes Gauche-Droite |
---|
| 335 | |
---|
| 336 | Chalk_1=(Chalx(I,J,K,L)+Chalx(I+1,J,K,L))**2+ & |
---|
| 337 | (Chaly(I,J,K,L)+Chaly(I,J+1,K,L))**2 |
---|
| 338 | Chalk_1=Chalk_1**0.5 |
---|
| 339 | |
---|
| 340 | Chalk_1=Ro*G*Chalk_1/4.*(Ee(K)**(Glen(L)+1))/Cp(I,J,K) |
---|
| 341 | Chaldef_maj(I,J,K)= Chalk_1 + Chaldef_maj(I,J,K) |
---|
| 342 | enddo |
---|
| 343 | |
---|
| 344 | ! Pour Shelves Et Streams, On Ajoute Chalk_2 |
---|
| 345 | Chaldef_maj(I,J,K) = Chaldef_maj(I,J,K) + Chalk_2 |
---|
| 346 | end do |
---|
| 347 | end do |
---|
| 348 | end do |
---|
| 349 | |
---|
| 350 | ! Chaleur Produite A La Base Par Le Glissement |
---|
| 351 | |
---|
| 352 | do J=2,Ny |
---|
| 353 | do I=2,Nx |
---|
| 354 | |
---|
| 355 | if (Gzmx(I,J)) then |
---|
| 356 | Chalglissx(I,J)= abs(Uxbar(I,J)*Tobmx(I,J)) |
---|
| 357 | else |
---|
| 358 | Chalglissx(I,J)=ddbx(I,J)*Sdx(I,J)**2*Ro*G*Hmx(I,J) |
---|
| 359 | endif |
---|
| 360 | |
---|
| 361 | if (Gzmy(I,J)) then |
---|
| 362 | Chalglissy(I,J)= abs(Uybar(I,J)*Tobmy(I,J)) |
---|
| 363 | else |
---|
| 364 | Chalglissy(I,J)=ddby(I,J)*Hmy(I,J)**2*Ro*G*Hmy(I,J) |
---|
| 365 | endif |
---|
| 366 | |
---|
| 367 | end do |
---|
| 368 | end do |
---|
| 369 | |
---|
| 370 | ! Boundary Condition Ice-Rock Interface |
---|
| 371 | |
---|
| 372 | K=Nz |
---|
| 373 | |
---|
| 374 | do J=2,Ny-1 |
---|
| 375 | do I=2,Nx-1 |
---|
| 376 | |
---|
| 377 | ! Rajouter Un Flux De Chaleur Pour La Production Par Deformation |
---|
| 378 | ! Dans La Derniere 1/2 Maille Et Par Le Glissement |
---|
| 379 | ! Attention Phid Est >0 Et Ghf Est <0 |
---|
| 380 | if (.not.flot(I,J)) then |
---|
| 381 | |
---|
| 382 | ! Phid Avec Fonte Sous Les Streams |
---|
| 383 | ! Phid(I,J)=0.25*(Chalglissx(I,J)+Chalglissx(I+1,J)+ & |
---|
| 384 | ! Chalglissy(I,J)+Chalglissy(I,J+1)) + & |
---|
| 385 | ! Chalbed*Fracq |
---|
| 386 | |
---|
| 387 | |
---|
| 388 | ! Moyenne Phid Sur 4 Points Formulation (A2+B2)**0.5 |
---|
| 389 | ! |
---|
| 390 | Chalgliss_maj(I,J)=(Chalglissx(I,J)+Chalglissx(I+1,J))**2+ & |
---|
| 391 | (Chalglissy(I,J)+Chalglissy(I,J+1))**2 |
---|
| 392 | |
---|
| 393 | Chalgliss_maj(I,J)=Chalgliss_maj(I,J)**0.5 |
---|
| 394 | |
---|
| 395 | Chalgliss_maj(I,J)=Chalgliss_maj(I,J)*0.5 ! Les Moyennes Droite Gauche |
---|
| 396 | |
---|
| 397 | ! Plus La Base Est Loin Du Point De Fusion Moins La Chaleur De Glissement Est Prise En Compte |
---|
| 398 | Chalgliss_maj(I,J)=Chalgliss_maj(I,J)*exp((T(I,J,Nz)-Tpmp(I,J,Nz))*Ecart_phid) |
---|
| 399 | |
---|
| 400 | |
---|
| 401 | ! Flux Total A Rajouter à La Base |
---|
| 402 | Phid(I,J)=Chalgliss_maj(I,J)+Chaldef_maj(I,J,Nz)*Fracq*H(I,J)*Cp(I,J,Nz) |
---|
| 403 | |
---|
| 404 | |
---|
| 405 | else |
---|
| 406 | Phid(I,J)=0. |
---|
| 407 | endif |
---|
| 408 | end do |
---|
| 409 | end do |
---|
| 410 | |
---|
| 411 | |
---|
| 412 | case (3) ! Q_prod_pente : Pour Essayer D'Avoir La Chaleur En Alpha4 |
---|
| 413 | !------------------------------------------------------------------------------------- |
---|
| 414 | ! Calcul Pour Essayer D'Avoir La Chaleur En Alpha4 |
---|
| 415 | ! Nom Du Sub Routine Avant Et Var Utilisee |
---|
| 416 | ! Q_prod_pente(T_m%T,T_m%Tpmp,Deform_m%Tobmx,Deform_m%Tobmy,Geom_m%H,Geom_m%Hmx,Geom_m%Hmy,mask_flot_m%Flot,mask_flot_m%Flotmx,mask_flot_m%Flotmy,mask_flot_m%Flgzmx,mask_flot_m%Flgzmy,Geom_m%Slop_x,Geom_m%Slop_y,Ice_flow_m%Ddx,Ice_flow_m%Ddy,& |
---|
| 417 | ! Ice_flow_m%Ddbx,Ice_flow_m%Ddby,Deform_m%Epsxx,Deform_m%Epsyy,Deform_m%Epsxy,mask_flot_m%Gzmx,mask_flot_m%Gzmy,Deform_m%Btt,Ice_flow_m%Uxbar,Ice_flow_m%Uybar,therm_var_m%Phid,Deform_m%Glen,Deform_m%Visc) |
---|
| 418 | |
---|
| 419 | |
---|
| 420 | do J=2,Ny |
---|
| 421 | do I=2,Nx |
---|
| 422 | Pente2_maj(I,J)=(Sdx(I,J)+Sdx(I+1,J))**2 + & |
---|
| 423 | (Sdy(I,J)+Sdy(I,J+1))**2 |
---|
| 424 | Pente2_maj(I,J)=Pente2_maj(I,J)*0.25 !Pour La Moyenne Sur Sdx Et Sdy |
---|
| 425 | end do |
---|
| 426 | end do |
---|
| 427 | |
---|
| 428 | do K=2,Nz |
---|
| 429 | do J=2,Ny-1 |
---|
| 430 | do I=2,Nx-1 |
---|
| 431 | ! Calcul De La Chaleur De Deformation Selon Xx Yy Zz Et Xy |
---|
| 432 | ! Pour Les Ice-Streams Et Ice-Shelves |
---|
| 433 | ! Les Divers Eps Sont Calculés Dans Strain-Rate Pour L'Ensemble De La Grille |
---|
| 434 | if ((flot(I,J).or.Flgzmx(I,J).or.Flgzmx(I+1,J)).or. & |
---|
| 435 | (Flgzmy(I,J).or.Flgzmy(I,J+1))) then |
---|
| 436 | |
---|
| 437 | Chal2_x(I,J,K)=2.*Visc(I,J,K)*Epsxx(I,J)**2 |
---|
| 438 | Chal2_y(I,J,K)=2.*Visc(I,J,K)*Epsyy(I,J)**2 |
---|
| 439 | Chal2_z(I,J,K)=2.*Visc(I,J,K)*(-Epsxx(I,J)-Epsyy(I,J))**2 |
---|
| 440 | |
---|
| 441 | ! Epsxy Est Calcule Sur Les Noeuds Mineur 1/2,1/2, Faire La Moyenne |
---|
| 442 | Chal2_xy(I,J,K)=(Epsxy(I,J)+Epsxy(I+1,J)+Epsxy(I+1,J+1)+Epsxy(I,J+1)) |
---|
| 443 | Chal2_xy(I,J,K)=2.*Visc(I,J,K)*(Chal2_xy(I,J,K)*0.25)**2 |
---|
| 444 | |
---|
| 445 | else ! Glace Posee |
---|
| 446 | Chal2_x(I,J,K)=0. |
---|
| 447 | Chal2_y(I,J,K)=0. |
---|
| 448 | Chal2_z(I,J,K)=0. |
---|
| 449 | Chal2_xy(I,J,K)=0. |
---|
| 450 | endif |
---|
| 451 | end do |
---|
| 452 | end do |
---|
| 453 | end do |
---|
| 454 | |
---|
| 455 | ! Partie Sia Calcul De La Chaleur Produite Sur Chaque Demi Maille |
---|
| 456 | ! Do L=1,size(Deform_m%Btt,4)!N1poly,N2poly |
---|
| 457 | ! Do J=2,Ny_m |
---|
| 458 | ! Do I=2,Nx_m |
---|
| 459 | ! |
---|
| 460 | ! Ffx A 3 Dimensions ! |
---|
| 461 | ! Ffx(I,J,L)=Ddx(I,J,L)*Sdx(I,J)*Sdx(I,J) |
---|
| 462 | ! Ffy(I,J,L)=Ddy(I,J,L)*Sdy(I,J)*Sdy(I,J) |
---|
| 463 | ! End Do |
---|
| 464 | ! End Do |
---|
| 465 | ! End Do |
---|
| 466 | |
---|
| 467 | do L=1,size(Btt,4)!N1poly,N2poly |
---|
| 468 | do K=2,Nz |
---|
| 469 | do J=2,Ny |
---|
| 470 | do I=2,Nx |
---|
| 471 | if ((.not.Flotmx(I,J)).and.(.not.Gzmx(I,J))) then |
---|
| 472 | Chalx(I,J,K,L)=(Btt(I-1,J,K,L)+Btt(I,J,K,L))*ddx(I,J,L) |
---|
| 473 | |
---|
| 474 | else if (Gzmx(I,J)) then ! Ice Streams |
---|
| 475 | Chalx(I,J,K,L)=0. |
---|
| 476 | |
---|
| 477 | else ! Ice Shelves |
---|
| 478 | Chalx(I,J,K,L)=0. |
---|
| 479 | |
---|
| 480 | endif |
---|
| 481 | |
---|
| 482 | if ((.not.Flotmy(I,J)).and.(.not.Gzmy(I,J))) then |
---|
| 483 | Chaly(I,J,K,L)=(Btt(I,J-1,K,L)+Btt(I,J,K,L))*ddy(I,J,L) |
---|
| 484 | |
---|
| 485 | else if (Gzmy(I,J)) then ! Ice Streams |
---|
| 486 | Chaly(I,J,K,L)=0. |
---|
| 487 | |
---|
| 488 | else ! Ice Shelves |
---|
| 489 | Chaly(I,J,K,L)=0. |
---|
| 490 | endif |
---|
| 491 | |
---|
| 492 | end do |
---|
| 493 | end do |
---|
| 494 | end do |
---|
| 495 | end do |
---|
| 496 | |
---|
| 497 | ! Nouvelle Formulation De Chaldef_maj(I,J,K), Le 4 Vient Des Moyennes |
---|
| 498 | ! Deform_m%Btt Et Gauche Et Droite (Ou Haut Et Bas) Mais Il Faut Sommer |
---|
| 499 | ! Les Productions X Et Y |
---|
| 500 | ! Ancienne Formulation Chal=(Ro*G*H(I,J))**4*(Sx2+Sy2)*(Sx*Sx+Sy*Sy) |
---|
| 501 | |
---|
| 502 | do K=2,Nz |
---|
| 503 | do J=1,Ny-1 |
---|
| 504 | do I=1,Nx-1 |
---|
| 505 | |
---|
| 506 | ! Modif Christophe Mars 2000 : Chalx Et Chaly Sont A 4 Dim |
---|
| 507 | Chaldef_maj(I,J,K)= 0. |
---|
| 508 | |
---|
| 509 | ! Chalk_2 Pour Ice Shelves Et Ice Streams |
---|
| 510 | Chalk_2=(Chal2_x(I,J,K)+Chal2_y(I,J,K) + & |
---|
| 511 | Chal2_z(I,J,K)+Chal2_xy(I,J,K))/Cp(I,J,K) |
---|
| 512 | |
---|
| 513 | ! Chalk_1 Pour La Partie Posée |
---|
| 514 | do L=1,size(Btt,4)!N1poly,N2poly |
---|
| 515 | |
---|
| 516 | ! On Somme La Chaleur Due Aux Diverses Lois De Déformation Et Celles En X Et Y |
---|
| 517 | ! La Somme Se Fait Par (Cx2+Cy2)** 0.5. Le 4 Vient Des Moyennes Deform_m%Btt + Des Moyennes Gauche-Droite |
---|
| 518 | |
---|
| 519 | ! On Fait La Moyenne Des Termes Ddx*Btt (*0.25 Pour Cette Moyenne, Le 0.5 Est Pour Les Btt) |
---|
| 520 | Chalk_1=(Chalx(I,J,K,L)+Chalx(I+1,J,K,L))+ & |
---|
| 521 | (Chaly(I,J,K,L)+Chaly(I,J+1,K,L)) |
---|
| 522 | |
---|
| 523 | Chalk_1=Chalk_1*0.25*0.5 |
---|
| 524 | |
---|
| 525 | ! On Multiplie Par La Pente Moyenne Au Carre Sur Le Noeud Majeur |
---|
| 526 | Chalk_1=Chalk_1*Pente2_maj(I,J) |
---|
| 527 | |
---|
| 528 | Chalk_1=Ro*G*Chalk_1*(Ee(K)**(Glen(L)+1))/Cp(I,J,K) ! Attention Plus De /4 |
---|
| 529 | Chaldef_maj(I,J,K)= Chalk_1 + Chaldef_maj(I,J,K) |
---|
| 530 | enddo |
---|
| 531 | |
---|
| 532 | ! Pour Shelves Et Streams, On Ajoute Chalk_2 |
---|
| 533 | Chaldef_maj(I,J,K) = Chaldef_maj(I,J,K) + Chalk_2 |
---|
| 534 | end do |
---|
| 535 | end do |
---|
| 536 | end do |
---|
| 537 | |
---|
| 538 | ! Chaleur Produite A La Base Par Le Glissement |
---|
| 539 | |
---|
| 540 | do J=2,Ny |
---|
| 541 | do I=2,Nx |
---|
| 542 | |
---|
| 543 | if (Gzmx(I,J)) then |
---|
| 544 | Chalglissx(I,J)= abs(Uxbar(I,J)*Tobmx(I,J)) |
---|
| 545 | else |
---|
| 546 | Chalglissx(I,J)=ddbx(I,J)*Sdx(I,J)**2*Ro*G*Hmx(I,J) |
---|
| 547 | endif |
---|
| 548 | |
---|
| 549 | if (Gzmy(I,J)) then |
---|
| 550 | Chalglissy(I,J)= abs(Uybar(I,J)*Tobmy(I,J)) |
---|
| 551 | else |
---|
| 552 | Chalglissy(I,J)=ddby(I,J)*Sdy(I,J)**2*Ro*G*Hmy(I,J) |
---|
| 553 | endif |
---|
| 554 | |
---|
| 555 | end do |
---|
| 556 | end do |
---|
| 557 | |
---|
| 558 | |
---|
| 559 | ! Boundary Condition Ice-Rock Interface |
---|
| 560 | |
---|
| 561 | K=Nz |
---|
| 562 | |
---|
| 563 | do J=2,Ny-1 |
---|
| 564 | do I=2,Nx-1 |
---|
| 565 | |
---|
| 566 | ! Rajouter Un Flux De Chaleur Pour La Production Par Deformation |
---|
| 567 | ! Dans La Derniere 1/2 Maille Et Par Le Glissement |
---|
| 568 | ! Attention Phid Est >0 Et Ghf Est <0 |
---|
| 569 | if (.not.flot(I,J)) then |
---|
| 570 | |
---|
| 571 | ! Phid Avec Fonte Sous Les Streams |
---|
| 572 | ! Phid(I,J)=0.25*(Chalglissx(I,J)+Chalglissx(I+1,J)+ & |
---|
| 573 | ! Chalglissy(I,J)+Chalglissy(I,J+1)) + & |
---|
| 574 | ! Chalbed*Fracq |
---|
| 575 | |
---|
| 576 | |
---|
| 577 | ! Moyenne Phid Sur 4 Points Formulation (A2+B2)**0.5 ! Je Garde Pour L'Instant A Revoir |
---|
| 578 | ! |
---|
| 579 | Chalgliss_maj(I,J)=(Chalglissx(I,J)+Chalglissx(I+1,J))**2+ & |
---|
| 580 | (Chalglissy(I,J)+Chalglissy(I,J+1))**2 |
---|
| 581 | |
---|
| 582 | Chalgliss_maj(I,J)=Chalgliss_maj(I,J)**0.5 |
---|
| 583 | |
---|
| 584 | Chalgliss_maj(I,J)=Chalgliss_maj(I,J)*0.5 ! Les Moyennes Droite Gauche |
---|
| 585 | |
---|
| 586 | ! Plus La Base Est Loin Du Point De Fusion Moins La Chaleur De Glissement Est Prise En Compte |
---|
| 587 | Chalgliss_maj(I,J)=Chalgliss_maj(I,J)*exp((T(I,J,Nz)-Tpmp(I,J,Nz))*Ecart_phid) |
---|
| 588 | |
---|
| 589 | |
---|
| 590 | ! Flux Total A Rajouter a La Base |
---|
| 591 | |
---|
| 592 | Phid(I,J)=Chalgliss_maj(I,J)+Chaldef_maj(I,J,Nz)*Fracq*H(I,J)*Cp(I,J,Nz) |
---|
| 593 | |
---|
| 594 | |
---|
| 595 | else |
---|
| 596 | Phid(I,J)=0. |
---|
| 597 | endif |
---|
| 598 | end do |
---|
| 599 | end do |
---|
| 600 | |
---|
| 601 | |
---|
| 602 | case (4) ! Q_u_taub : Routine Qui concentre La Chaleur au Socle |
---|
| 603 | !------------------------------------------------------------------------------------- |
---|
| 604 | ! Routine Qui Prend La Chaleur Remise Au Socle |
---|
| 605 | ! Nom Du Sub Routine Avant Et Var Utilisee |
---|
| 606 | ! Q_u_taub(T_m%T,T_m%Tpmp,Geom_m%H,Geom_m%Slop_x,Geom_m%Slop_y,Ice_flow_m%Uxbar,Ice_flow_m%Uybar,therm_var_m%Phid) |
---|
| 607 | |
---|
| 608 | |
---|
| 609 | do J=2,Ny |
---|
| 610 | do I=2,Nx |
---|
| 611 | |
---|
| 612 | |
---|
| 613 | Pente_maj(I,J)=(Sdx(I,J)+Sdx(I+1,J))**2 + & ! Pente |
---|
| 614 | (Sdy(I,J)+Sdy(I,J+1))**2 |
---|
| 615 | |
---|
| 616 | Pente_maj(I,J)=Pente_maj(I,J)*0.25 ! 0.25pour La Moyenne Sur Sdx Et Sdy |
---|
| 617 | Pente_maj(I,J)=Pente_maj(I,J)**0.5 |
---|
| 618 | |
---|
| 619 | Vit_maj(I,J)=(Uxbar(I,J)+Uxbar(I+1,J))**2 + & ! Vitesse De Bilan |
---|
| 620 | (Uybar(I,J)+Uybar(I,J+1))**2 |
---|
| 621 | Vit_maj(I,J)=Vit_maj(I,J)*0.25 |
---|
| 622 | Vit_maj(I,J)=Vit_maj(I,J)**0.5 |
---|
| 623 | |
---|
| 624 | Uslid_maj(I,J)=(Ux(I,J,Nz)+Ux(I+1,J,Nz))**2 + & ! Vitesse De Bilan |
---|
| 625 | (Uy(I,J,Nz)+Uy(I,J+1,Nz))**2 |
---|
| 626 | Uslid_maj(I,J)=Uslid_maj(I,J)*0.25 |
---|
| 627 | Uslid_maj(I,J)=Uslid_maj(I,J)**0.5 |
---|
| 628 | |
---|
| 629 | end do |
---|
| 630 | end do |
---|
| 631 | |
---|
| 632 | |
---|
| 633 | |
---|
| 634 | Chaldef_maj(:,:,:)=0. |
---|
| 635 | Chalgliss_maj(:,:)=Ro*G*H(:,:)*Pente_maj(:,:)*Uslid_maj(:,:) |
---|
| 636 | Chaldef_maj(:,:,Nz)=Ro*G*H(:,:)*Pente_maj(:,:)*Vit_maj(:,:)-Chalgliss_maj(:,:) |
---|
| 637 | |
---|
| 638 | ! Plus La Base Est Loin Du Point De Fusion Moins La Chaleur De Glissement Est Prise En Compte |
---|
| 639 | |
---|
| 640 | Chalgliss_maj(:,:)=Chalgliss_maj(:,:)*exp((T(:,:,Nz)-Tpmp(:,:,Nz))*Ecart_phid) |
---|
| 641 | |
---|
| 642 | ! Flux Total A Rajouter a Base |
---|
| 643 | Phid(:,:)=Chaldef_maj(:,:,Nz)+Chalgliss_maj(:,:) |
---|
| 644 | |
---|
| 645 | |
---|
| 646 | case (5) ! Q_u_taub_stag : concentre La Chaleur Au Socle mais Sur Les Mailles Staggered |
---|
| 647 | !---------------------------------------------------------------------------------- |
---|
| 648 | ! Routine Qui Prend La Chaleur Remise Au Socle Mais Sur Les Mailles Staggered |
---|
| 649 | ! Les Noeuds Stag Sont Ceux Au Milieux Des Mailles Vitesses |
---|
| 650 | ! Nom Du Sub Routine Avant Et Var Utilisé |
---|
| 651 | ! Q_u_taub_stag(T_m%T,T_m%Tpmp,Geom_m%H,Geom_m%Slop_x,Geom_m%Slop_y,Ice_flow_m%Uxbar,Ice_flow_m%Uybar,therm_var_m%Phid) |
---|
| 652 | |
---|
| 653 | |
---|
| 654 | do J=2,Ny |
---|
| 655 | do I=2,Nx |
---|
| 656 | |
---|
| 657 | Pente_stag(I,J)=(Sdx(I,J)+Sdx(I,J-1))**2 + & ! Pente |
---|
| 658 | (Sdy(I,J)+Sdy(I-1,J))**2 |
---|
| 659 | |
---|
| 660 | Pente_stag(I,J)=Pente_stag(I,J)*0.25 ! 0.25pour La Moyenne Sur Sdx Et Sdy |
---|
| 661 | Pente_stag(I,J)=Pente_stag(I,J)**0.5 |
---|
| 662 | |
---|
| 663 | Vit_stag2(I,J)=(Uxbar(I,J)+Uxbar(I,J-1))**2 + & ! Vitesse De Bilan |
---|
| 664 | (Uybar(I,J)+Uybar(I-1,J))**2 |
---|
| 665 | Vit_stag2(I,J)=Vit_stag2(I,J)*0.25 |
---|
| 666 | Vit_stag2(I,J)=Vit_stag2(I,J)**0.5 |
---|
| 667 | |
---|
| 668 | Uslid_stag(I,J)=(Ux(I,J,Nz)+Ux(I,J-1,Nz))**2 + & ! Vitesse De Bilan |
---|
| 669 | (Uy(I,J,Nz)+Uy(I-1,J,Nz))**2 |
---|
| 670 | Uslid_stag(I,J)=Uslid_stag(I,J)*0.25 |
---|
| 671 | Uslid_stag(I,J)=Uslid_stag(I,J)**0.5 |
---|
| 672 | |
---|
| 673 | Hmxy(I,J)=((H(I,J)+H(I-1,J-1))+(H(I,J-1)+H(I-1,J)))*0.25 |
---|
| 674 | |
---|
| 675 | end do |
---|
| 676 | end do |
---|
| 677 | |
---|
| 678 | |
---|
| 679 | Qslid(:,:)=Ro*G*Hmxy(:,:)*Pente_stag(:,:)*Uslid_stag(:,:) |
---|
| 680 | Qdef2(:,:)=Ro*G*Hmxy(:,:)*Pente_stag(:,:)*Vit_stag2(:,:)-Qslid(:,:) |
---|
| 681 | Chaldef_maj(:,:,:)=0. |
---|
| 682 | |
---|
| 683 | |
---|
| 684 | ! On Fait La Moyenne De La Chaleur Produite Sur Les Mailles Stag |
---|
| 685 | |
---|
| 686 | do J=2,Ny-1 |
---|
| 687 | do I=2,Nx-1 |
---|
| 688 | Chalgliss_maj(I,J)=(Qslid(I,J)+Qslid(I+1,J+1))+(Qslid(I,J+1)+Qslid(I+1,J)) |
---|
| 689 | Chalgliss_maj(I,J)=Chalgliss_maj(I,J)*0.25 |
---|
| 690 | |
---|
| 691 | Chaldef_maj(I,J,Nz)=(Qdef2(I,J)+Qdef2(I+1,J+1))+(Qdef2(I,J+1)+Qdef2(I+1,J)) |
---|
| 692 | Chaldef_maj(I,J,Nz)=Chaldef_maj(I,J,Nz)*0.25 |
---|
| 693 | |
---|
| 694 | ! Plus La Base Est Loin Du Point De Fusion Moins La Chaleur De Glissement Est Prise En Compte |
---|
| 695 | Chalgliss_maj(I,J)=Chalgliss_maj(I,J)*exp((T(I,J,Nz)-Tpmp(I,J,Nz))*Ecart_phid) |
---|
| 696 | |
---|
| 697 | end do |
---|
| 698 | end do |
---|
| 699 | |
---|
| 700 | |
---|
| 701 | |
---|
| 702 | |
---|
| 703 | ! |
---|
| 704 | !Write(126,*)'Time=',Time |
---|
| 705 | !J=41 |
---|
| 706 | !Do I=20,30 |
---|
| 707 | ! Write(126,'(I3,6(E14.4,1x))') I,Chalgliss_maj(I,J),Chaldef_maj(I,J,Nz_m),Qdef2(I,J),Qdef2(I+1,J+1) & |
---|
| 708 | ! , Qdef2(I,J+1),Qdef2(I+1,J) |
---|
| 709 | !End Do |
---|
| 710 | |
---|
| 711 | ! Flux Total A Rajouter à La Base |
---|
| 712 | Phid(:,:)= Chaldef_maj(:,:,Nz)+Chalgliss_maj(:,:) |
---|
| 713 | |
---|
| 714 | case (6) ! Q_sia_stag : concentre La Chaleur Au Socle Mais Sur Les Mailles Staggered |
---|
| 715 | ! Au Milieux Des Mailles Vitesses |
---|
| 716 | |
---|
| 717 | !---------------------------------------------------------------------------------- |
---|
| 718 | ! Routine Qui Prend La Chaleur Remise Au Socle Mais Sur Les Mailles Staggered |
---|
| 719 | ! Les Noeuds Stag Sont Ceux Au Milieux Des Mailles Vitesses |
---|
| 720 | ! Nom Du Sub Routine Avant Et Var Utilisé |
---|
| 721 | ! Q_sia_stag(T_m%T,T_m%Tpmp,Geom_m%H,Geom_m%Slop_x,Geom_m%Slop_y,therm_var_m%Phid) |
---|
| 722 | |
---|
| 723 | |
---|
| 724 | Pente_stag = 0. |
---|
| 725 | Vit_stag3 = 0. |
---|
| 726 | Uslid_stag = 0. |
---|
| 727 | Hmxy = 0. |
---|
| 728 | Qslid = 0. |
---|
| 729 | Qdef3 = 0. |
---|
| 730 | |
---|
| 731 | do J=2,Ny |
---|
| 732 | do I=2,Nx |
---|
| 733 | |
---|
| 734 | ! Variables 2d |
---|
| 735 | Pente_stag(I,J)=(Sdx(I,J)+Sdx(I,J-1))**2 + & ! Pente |
---|
| 736 | (Sdy(I,J)+Sdy(I-1,J))**2 |
---|
| 737 | |
---|
| 738 | Pente_stag(I,J)=Pente_stag(I,J)*0.25 ! 0.25pour La Moyenne Sur Sdx Et Sdy |
---|
| 739 | Pente_stag(I,J)=Pente_stag(I,J)**0.5 |
---|
| 740 | |
---|
| 741 | Uslid_stag(I,J)=(Ux(I,J,Nz)+Ux(I,J-1,Nz))**2 + & ! Vitesse De Bilan |
---|
| 742 | (Uy(I,J,Nz)+Uy(I-1,J,Nz))**2 |
---|
| 743 | Uslid_stag(I,J)=Uslid_stag(I,J)*0.25 |
---|
| 744 | Uslid_stag(I,J)=Uslid_stag(I,J)**0.5 |
---|
| 745 | |
---|
| 746 | Hmxy(I,J)=((H(I,J)+H(I-1,J-1))+(H(I,J-1)+H(I-1,J)))*0.25 |
---|
| 747 | |
---|
| 748 | ! En Vertical : Calcul De La Deformation Par Differentiation Des Vitesses |
---|
| 749 | |
---|
| 750 | do K=1,Nz |
---|
| 751 | |
---|
| 752 | Vit_stag3(I,J,K)=(Ux(I,J,K)+Ux(I,J-1,K))**2 + & ! Magnitude Vitesse |
---|
| 753 | (Uy(I,J,K)+Uy(I-1,J,K))**2 ! A Tous Niveaux K |
---|
| 754 | |
---|
| 755 | Vit_stag3(I,J,K)=Vit_stag3(I,J,K)*0.25 |
---|
| 756 | Vit_stag3(I,J,K)=Vit_stag3(I,J,K)**0.5 |
---|
| 757 | end do |
---|
| 758 | |
---|
| 759 | Qdef3(I,J,1)=0. |
---|
| 760 | do K=2,Nz-1 |
---|
| 761 | Qdef3(I,J,K)=Vit_stag3(I,J,K-1)-Vit_stag3(I,J,K+1) ! Difference Des Vitesses |
---|
| 762 | Qdef3(I,J,K)=Ro*G*Pente_stag(I,J)*Ee(K)*Qdef3(I,J,K)/2./Dee ! Gamma Tau |
---|
| 763 | end do |
---|
| 764 | |
---|
| 765 | |
---|
| 766 | Qdef3(I,J,Nz)=Vit_stag3(I,J,Nz-1)-Vit_stag3(I,J,Nz) ! Pour Le Fond Differentiation |
---|
| 767 | Qdef3(I,J,Nz)=Ro*G*Pente_stag(I,J)*Qdef3(I,J,K)/Dee ! Sur Une Seule Maille |
---|
| 768 | end do |
---|
| 769 | end do |
---|
| 770 | |
---|
| 771 | |
---|
| 772 | Qslid(:,:)=Ro*G*Hmxy(:,:)*Pente_stag(:,:)*Uslid_stag(:,:) |
---|
| 773 | |
---|
| 774 | ! On Fait La Moyenne De La Chaleur Produite Sur Les Mailles Stag |
---|
| 775 | |
---|
| 776 | do J=2,Ny-1 |
---|
| 777 | do I=2,Nx-1 |
---|
| 778 | Chalgliss_maj(I,J)=(Qslid(I,J)+Qslid(I+1,J+1))+(Qslid(I,J+1)+Qslid(I+1,J)) |
---|
| 779 | Chalgliss_maj(I,J)=Chalgliss_maj(I,J)*0.25 |
---|
| 780 | |
---|
| 781 | ! Plus La Base Est Loin Du Point De Fusion Moins La Chaleur De Glissement Est Prise En Compte |
---|
| 782 | Chalgliss_maj(I,J)=Chalgliss_maj(I,J)*exp((T(I,J,Nz)-Tpmp(I,J,Nz))*Ecart_phid) |
---|
| 783 | |
---|
| 784 | ! Chaleur Due A La Defromation |
---|
| 785 | do K=1,Nz |
---|
| 786 | Chaldef_maj(I,J,K)=(Qdef3(I,J,K)+Qdef3(I+1,J+1,K))+(Qdef3(I,J+1,K)+Qdef3(I+1,J,K)) |
---|
| 787 | Chaldef_maj(I,J,K)=Chaldef_maj(I,J,K)*0.25 |
---|
| 788 | Chaldef_maj(I,J,K)=Chaldef_maj(I,J,K)/Cp(I,J,K) |
---|
| 789 | end do |
---|
| 790 | |
---|
| 791 | |
---|
| 792 | end do |
---|
| 793 | end do |
---|
| 794 | |
---|
| 795 | !Write(126,*)'Time=',Time |
---|
| 796 | !J=41 |
---|
| 797 | !Do I=20,30 |
---|
| 798 | ! Write(126,'(I3,6(E14.4,1x))') I,Chalgliss_maj(I,J),Chaldef_maj(I,J,Nz_m),Qdef2(I,J),Qdef2(I+1,J+1) & |
---|
| 799 | ! , Qdef2(I,J+1),Qdef2(I+1,J) |
---|
| 800 | !End Do |
---|
| 801 | |
---|
| 802 | ! Flux Total A Rajouter à La Base |
---|
| 803 | |
---|
| 804 | Phid(:,:)=Chalgliss_maj(:,:)+Chaldef_maj(:,:,Nz)*Fracq*H(:,:)*Cp(:,:,Nz) |
---|
| 805 | |
---|
| 806 | case (7) ! Q_all_stag idem case 6 mais Le Calcul De Taub Tient Compte Des Noeuds Grzmx |
---|
| 807 | !---------------------------------------------------------------------------------- |
---|
| 808 | ! Routine Qui Prend La Chaleur Remise Au Socle Mais Sur Les Mailles Staggered |
---|
| 809 | ! Les Noeuds Stag Sont Ceux Au Milieux Des Mailles Vitesses |
---|
| 810 | ! Le Calcul De Taub Tient Compte Des Noeuds Grzmx |
---|
| 811 | ! Nom Du Sub Routine Avant Et Var Utilisé |
---|
| 812 | ! Q_all_stag(T_m%T,T_m%Tpmp,Deform_m%Tobmx,Deform_m%Tobmy,Geom_m%H,Geom_m%Hmx,Geom_m%Hmy,mask_flot_m%Flgzmx,mask_flot_m%Flgzmy,Geom_m%Slop_x,Geom_m%Slop_y,therm_var_m%Phid) |
---|
| 813 | |
---|
| 814 | where (Flgzmx(:,:)) |
---|
| 815 | Tox(:,:)=Tobmx(:,:) |
---|
| 816 | elsewhere |
---|
| 817 | Tox(:,:)=Sdx(:,:)*Hmx(:,:)*Ro*G |
---|
| 818 | end where |
---|
| 819 | |
---|
| 820 | where (Flgzmy(:,:)) |
---|
| 821 | Toy(:,:)=Tobmy(:,:) |
---|
| 822 | elsewhere |
---|
| 823 | Toy(:,:)=Sdy(:,:)*Hmy(:,:)*Ro*G |
---|
| 824 | end where |
---|
| 825 | |
---|
| 826 | do J=2,Ny |
---|
| 827 | do I=2,Nx |
---|
| 828 | |
---|
| 829 | ! Variables 2d |
---|
| 830 | Pente_stag(I,J)=(Sdx(I,J)+Sdx(I,J-1))**2 + & ! Pente |
---|
| 831 | (Sdy(I,J)+Sdy(I-1,J))**2 |
---|
| 832 | |
---|
| 833 | Pente_stag(I,J)=Pente_stag(I,J)*0.25 ! 0.25pour La Moyenne Sur Sdx Et Sdy |
---|
| 834 | Pente_stag(I,J)=Pente_stag(I,J)**0.5 |
---|
| 835 | |
---|
| 836 | |
---|
| 837 | Tob_stag(I,J)=(Tox(I,J)+Tox(I,J-1))**2 + & ! Pente |
---|
| 838 | (Toy(I,J)+Toy(I-1,J))**2 |
---|
| 839 | |
---|
| 840 | Tob_stag(I,J)=Tob_stag(I,J)*0.25 ! 0.25pour La Moyenne Sur Sdx Et Sdy |
---|
| 841 | Tob_stag(I,J)=Tob_stag(I,J)**0.5 |
---|
| 842 | |
---|
| 843 | Uslid_stag(I,J)=(Ux(I,J,Nz)+Ux(I,J-1,Nz))**2 + & ! Vitesse De Bilan |
---|
| 844 | (Uy(I,J,Nz)+Uy(I-1,J,Nz))**2 |
---|
| 845 | Uslid_stag(I,J)=Uslid_stag(I,J)*0.25 |
---|
| 846 | Uslid_stag(I,J)=Uslid_stag(I,J)**0.5 |
---|
| 847 | |
---|
| 848 | Hmxy(I,J)=((H(I,J)+H(I-1,J-1))+(H(I,J-1)+H(I-1,J)))*0.25 |
---|
| 849 | |
---|
| 850 | ! En Vertical : Calcul De La Deformation Par Differentiation Des Vitesses |
---|
| 851 | |
---|
| 852 | do K=1,Nz |
---|
| 853 | |
---|
| 854 | Vit_stag3(I,J,K)=(Ux(I,J,K)+Ux(I,J-1,K))**2 + & ! Magnitude Vitesse |
---|
| 855 | (Uy(I,J,K)+Uy(I-1,J,K))**2 ! A Tous Niveaux K |
---|
| 856 | |
---|
| 857 | Vit_stag3(I,J,K)=Vit_stag3(I,J,K)*0.25 |
---|
| 858 | Vit_stag3(I,J,K)=Vit_stag3(I,J,K)**0.5 |
---|
| 859 | end do |
---|
| 860 | |
---|
| 861 | Qdef3(I,J,1)=0. |
---|
| 862 | do K=2,Nz-1 |
---|
| 863 | Qdef3(I,J,K)=Vit_stag3(I,J,K-1)-Vit_stag3(I,J,K+1) ! Difference Des Vitesses |
---|
| 864 | Qdef3(I,J,K)=Ro*G*Pente_stag(I,J)*Ee(K)*Qdef3(I,J,K)/2./Dee ! Gamma Tau |
---|
| 865 | end do |
---|
| 866 | |
---|
| 867 | |
---|
| 868 | Qdef3(I,J,Nz)=Vit_stag3(I,J,Nz-1)-Vit_stag3(I,J,Nz) ! Pour Le Fond Differentiation |
---|
| 869 | Qdef3(I,J,Nz)=Ro*G*Pente_stag(I,J)*Qdef3(I,J,K)/Dee ! Sur Une Seule Maille |
---|
| 870 | end do |
---|
| 871 | end do |
---|
| 872 | |
---|
| 873 | Qslid(:,:)=Tob_stag*Uslid_stag(:,:) |
---|
| 874 | |
---|
| 875 | ! On Fait La Moyenne De La Chaleur Produite Sur Les Mailles Stag |
---|
| 876 | |
---|
| 877 | do J=2,Ny-1 |
---|
| 878 | do I=2,Nx-1 |
---|
| 879 | Chalgliss_maj(I,J)=(Qslid(I,J)+Qslid(I+1,J+1))+(Qslid(I,J+1)+Qslid(I+1,J)) |
---|
| 880 | Chalgliss_maj(I,J)=Chalgliss_maj(I,J)*0.25 |
---|
| 881 | |
---|
| 882 | ! Plus La Base Est Loin Du Point De Fusion Moins La Chaleur De Glissement Est Prise En Compte |
---|
| 883 | Chalgliss_maj(I,J)=Chalgliss_maj(I,J)*exp((T(I,J,Nz)-Tpmp(I,J,Nz))*Ecart_phid) |
---|
| 884 | |
---|
| 885 | ! Chaleur Due A La Defromation |
---|
| 886 | do K=1,Nz |
---|
| 887 | Chaldef_maj(I,J,K)=(Qdef3(I,J,K)+Qdef3(I+1,J+1,K))+(Qdef3(I,J+1,K)+Qdef3(I+1,J,K)) |
---|
| 888 | Chaldef_maj(I,J,K)=Chaldef_maj(I,J,K)*0.25 |
---|
| 889 | Chaldef_maj(I,J,K)=Chaldef_maj(I,J,K)/Cp(I,J,K) |
---|
| 890 | end do |
---|
| 891 | |
---|
| 892 | end do |
---|
| 893 | end do |
---|
| 894 | |
---|
| 895 | ! |
---|
| 896 | !Write(126,*)'Time=',Time |
---|
| 897 | !J=41 |
---|
| 898 | !Do I=20,30 |
---|
| 899 | ! Write(126,'(I3,6(E14.4,1x))') I,Chalgliss_maj(I,J),Chaldef_maj(I,J,Nz_m),Qdef2(I,J),Qdef2(I+1,J+1) & |
---|
| 900 | ! , Qdef2(I,J+1),Qdef2(I+1,J) |
---|
| 901 | !End Do |
---|
| 902 | |
---|
| 903 | ! Flux Total A Rajouter à La Base |
---|
| 904 | Phid(:,:)=Chalgliss_maj(:,:)+Chaldef_maj(:,:,Nz)*Fracq*H(:,:)*Cp(:,:,Nz) |
---|
| 905 | |
---|
| 906 | end select |
---|
| 907 | end subroutine Qprod_ice |
---|