Changeset 467
- Timestamp:
- 01/26/24 16:49:00 (4 months ago)
- Location:
- branches/GRISLIv3/SOURCES
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GRISLIv3/SOURCES/3D-physique-gen_mod.f90
r465 r467 63 63 real :: V_limit !< vitesse maxi (limitateur de flux pour conserv masse) 64 64 real :: betamax !< (Pa) frottement maxi sous les streams 65 real :: pvimin !< valeur de pvi pour les noeuds fictifs66 65 67 66 … … 77 76 78 77 integer,dimension(nx,ny) :: FRONT !< point d'un shelf situe sur le front 79 integer,dimension(nx,ny) :: FRONTFACEX!< type de front sur les faces x80 integer,dimension(nx,ny) :: FRONTFACEY!< type de front sur les faces y81 78 integer,dimension(nx,ny) :: gr_line_schoof ! points ou on impose le flux de schoof (pour sorties) 82 79 integer,dimension(nx,ny) :: gr_line !< points grounding line pour les sorties … … 88 85 integer,dimension(nx,ny) :: Mk_init !< initial mask (with islands, outcrops, ... 89 86 integer,dimension(nx,ny) :: MK !< masks (ice sheet, max, above water, below water, 1) 90 integer,dimension(nx,ny) :: MNEG !< masks (ice sheet, max, above water, below water, 1)91 87 integer,dimension(nx,ny) :: IBASE !< type de base (froide, temperee) 92 88 … … 95 91 real,dimension(nx,ny) :: ABLBORD !< Ablation dans les zones non englacees 96 92 real,dimension(nx,ny) :: ablbord_dtt !< Ablation sur le bord de la calotte (flux de glace inférieur à ablation sur le bord) sur dtt 97 real,dimension(nx,ny) :: ACQUA !< Surface des surfaces en eau98 93 double precision,dimension(nx,ny) :: B !< Altitude de la base de la glace 'o' 99 94 real,dimension(nx,ny) :: BDOT !< derivee de B / t 100 real,dimension(nx,ny) :: B1 !<101 95 double precision,dimension(nx,ny) :: BSOC0 !< ice free bedrock 102 real,dimension(nx,ny) :: betamx !< coefficient beta du frottement basal 103 ! betamx=cf*neffmx et tobmx=betamx*uxbar 104 real,dimension(nx,ny) :: betamy !< coefficient beta du frottement basal 105 ! betamy=cf*neffmy et tobmy=betamy*uybar 106 !hassine 96 real,dimension(nx,ny) :: betamx !< coefficient beta du frottement basal, betamx=cf*neffmx et tobmx=betamx*uxbar 97 real,dimension(nx,ny) :: betamy !< coefficient beta du frottement basal, betamy=cf*neffmy et tobmy=betamy*uybar 107 98 real, dimension(nx,ny) :: beta_centre !< beta on major node (average) 108 99 real, dimension(nx,ny) :: betamax_2d !< (Pa) frottement maxi sous les streams … … 116 107 real,dimension(nx,ny) :: CALV !< calving 117 108 118 !real,dimension(:,:,:),allocatable :: DDX ! pour le calcul de UX119 !real,dimension(:,:,:),allocatable :: DDY ! pour le calcul de UY120 109 real,dimension(nx,ny) :: DDBX !< UBX/(-SDX) '>' 121 110 real,dimension(nx,ny) :: DDBY !< UBY/(-SDY) '^' … … 123 112 real,dimension(nx,ny) :: Diffmy !< partie diffusive en y 124 113 125 !REAL,dimension(nx,ny) :: DPHIX !< ROG*HMX**2 '>'126 !REAL,dimension(nx,ny) :: DPHIY !< ROG*HMY**2 '^'127 114 real,dimension(nx,ny) :: DHDT !< derive lagrangienne de l'epaisseur 'o' 128 real,dimension(nx,ny) :: DIF1 !< UZR(I,J,1)-BM(I,J)129 real,dimension(nx,ny) :: DIF2 !< UZR(I,J,1)-BMELT(I,J)130 real,dimension(nx,ny) :: DIFT !< pour sorties eismint131 real,dimension(nx,ny) :: DIVU !< divergence de UH132 ! real,dimension(nx,ny) :: DISTCENT !133 real,dimension(nx,ny) :: ELA !< Equilibrium line altitude, for mass balance134 115 real,dimension(nx,ny) :: epsxx !< vitesse de deformation selon x 135 116 real,dimension(nx,ny) :: epsyy !< vitesse de deformation selon y … … 141 122 real,dimension(nx,ny) :: FROTMY !< 142 123 real,dimension(nx,ny) :: GHF !< geothermal heat flux J/m2/a 'o' 143 real,dimension(nx,ny) :: GHF0 !< geothermal heat flux J/m2/a 'o'144 124 double precision,dimension(nx,ny) :: H !< ice thickness 'o' 145 125 double precision,dimension(nx,ny) :: H0 !< initial ice thickness, must be initialized before init_iso … … 148 128 real,dimension(nx,ny) :: Hp !< H value if prescribed 149 129 real,dimension(nx,ny) :: Hp0 !< H value if prescribed (reference value) 150 ! real,dimension(nx,ny) :: Delta_H !< Delta_H value if prescribed151 ! integer,dimension(nx,ny) :: i_delta_H !< 1 if Delta_H is prescribed on this node, else 0152 130 integer,dimension(nx,ny) :: i_Hp !< 1 if H is prescribed on this node, else 0 153 131 integer,dimension(nx,ny) :: i_Hp0 !< i_hp mask reference value does not change with time 154 132 integer, dimension(nx,ny) :: imx_diag !< masque pour eq elliptique 155 133 integer, dimension(nx,ny) :: imy_diag !< masque pour eq elliptique 156 integer,dimension(nx,ny) :: MK_gl0 !< mask grounding line initial157 integer,dimension(nx,ny) :: MK_flot0 !< mask float initial158 159 134 160 135 double precision,dimension(nx,ny) :: HDOT !< ice thickness derivee / t 161 136 real,dimension(nx,ny) :: HDOTWATER 162 real,dimension(nx,ny) :: H1 !<163 137 real,dimension(nx,ny) :: HMX !< ice thickness moy selon x '>' 164 138 real,dimension(nx,ny) :: HMY !< ice thickness moy selon y '^' 165 real,dimension(nx,ny) :: HDOTPREC !< 166 real,dimension(nx,ny) :: HDOTRAP !< 167 168 real,dimension(nx,ny) :: KOND !< basale hydro. conductivity 'o' 169 real,dimension(nx,ny) :: PDD !< Positive degree day 170 real,dimension(nx,ny) :: PRECIP !< precipitation 171 real,dimension(nx,ny) :: PRECIP0 !< initial precipitation (used in 'heminord') 139 172 140 real,dimension(nx,ny) :: PHID !< flux de chaleur lie a la deformation et glissement basal 173 real,dimension(nx,ny) :: PWATER !< basal water pressure174 real,dimension(nx,ny) :: pgx,pgy !< hydro. potential gradient / x '>' and / y '^'175 real,dimension(nx,ny) :: phiWx,phiWy !< flux d'eau sous glaciaire / x '>' and / y '^'176 141 real,dimension(nx,ny) :: NEFFMX !< pression effective '>' 177 142 real,dimension(nx,ny) :: NEFFMY !< pression effective '^' 178 143 real,dimension(nx,ny) :: TOBMX !< cisaillement basal '>' 179 144 real,dimension(nx,ny) :: TOBMY !< cisaillement basal '^' 180 real,dimension(nx,ny) :: SW !< for bedrock isostasy181 145 double precision,dimension(nx,ny) :: S !< altitude of ice sheet surface 182 146 real,dimension(nx,ny) :: sealevel_2d !< local sea surface elevation … … 184 148 real,dimension(nx,ny) :: SDX !< slope derivee / x '>' 185 149 real,dimension(nx,ny) :: SDY !< slope derivee / y '^' 186 real,dimension(nx,ny) :: SDXMY !< slope selon x moy selon y '^' remplace SDMX187 real,dimension(nx,ny) :: SDYMX !< slope selon y moy selon x '>' remplace SDMY188 150 real,dimension(nx,ny) :: SLOPE2mx !< = Sdx**2 + Sdymx**2 '>' 189 151 real,dimension(nx,ny) :: SLOPE2my !< = Sdy**2 + Sdxmy**2 '^' … … 193 155 real,dimension(nx,ny) :: TANN !< Ground air temperature annual 194 156 real,dimension(nx,ny,12) :: Tmois !< Ground air temperature monthly 195 real,dimension(nx,ny) :: TSHELF !< temperature des shelfs pour viscosite196 real,dimension(nx,ny) :: TJ0 !< initial air temperature at sea level July197 ! real,dimension(nx,ny) :: TA0 !< initial air temperature at sea level annual198 157 real,dimension(nx,ny) :: TAUB !< basal shear stress (for output) 199 158 real,dimension(nx,ny) :: TAUSHELF !< effective stress in ice shelves (vertical av.) 200 159 real,dimension(nx,ny) :: TS !< surface ice temperature 'o' 201 160 real,dimension(nx,ny) :: TB !< basal ice temperature 'o' 202 real,dimension(nx,ny) :: TG !< degrees above melting point at the base203 161 real,dimension(nx,ny) :: TBDOT !< variation in time of basal temperature 204 162 real,dimension(nx,ny) :: UZK !< vertical velocity at the ice surface (kinematic boundary) … … 212 170 real,dimension(nx,ny) :: UBY !< basal sliding '^' 213 171 real,dimension(nx,ny) :: UZSDOT !< variation in time of surface vertical velocity 214 real,dimension(nx,ny) :: UX1 !<215 real,dimension(nx,ny) :: UY1 !<216 real,dimension(nx,ny) :: VBAR !< depth averaged velocity magnitude (for output)217 !!!!!!!real,dimension(nx,ny) :: VSDOT ! variation in time of surface velocity magnitude218 real,dimension(nx,ny) :: W0 !< enfoncement du socle a l'equilibre isostatique219 real,dimension(nx,ny) :: W1 !< enfoncement du socle courant220 172 real,dimension(nx,ny) :: XLONG !< longitude 221 173 real,dimension(nx,ny) :: YLAT !< latitude 222 174 real,dimension(nx,ny) :: xcc ! grille Xkm 223 175 real,dimension(nx,ny) :: ycc ! grille Ykm 224 ! real,dimension(nx,ny) :: ZS !< surface topography above sea level225 real,dimension(nx,ny) :: ETABAR !<226 176 real,dimension(nx,ny) :: BSOC !< altitude (ou bathymetrie) du socle 'o' 227 177 real,dimension(nx,ny) :: PVI !< viscosite ice shelf 228 178 real,dimension(nx,ny) :: PVM !< viscosite ice shelf 229 real,dimension(nx,ny) :: ramollo !< pour ramollir les ice shelves230 179 real,dimension(nx,ny) :: Abar !< coefficient de Glen integre 231 real,dimension(nx,ny) :: Uiter_centre !< pour iterations equation diagnostique232 real,dimension(nx,ny) :: tabtest !< tableau de travail233 180 234 181 … … 241 188 integer,dimension(nx,ny) :: mstream_my !< masque stream selon y 242 189 integer,dimension(nx,ny) :: mstream !< masque stream sur les noeuds majeurs 243 real,dimension(nx,ny) :: socle_cry !< courbure du socle, negatif -> vallees244 190 real,dimension(nx,ny) :: drag_mx !< coefficient pour tenir compte de variations 245 191 real,dimension(nx,ny) :: drag_my !< geographiques eventuelles dans le basal drag 246 192 247 integer,dimension(nx,ny) :: mslid_mx !< masque glissement selon x248 integer,dimension(nx,ny) :: mslid_my !< masque glissement selon y249 real,dimension(nx,ny) :: slid_mx !< coefficient pour tenir compte de variations250 real,dimension(nx,ny) :: slid_my !< geographiques eventuelles dans le glissement251 252 253 254 !REAL,dimension(-NL:NL,-NL:NL) :: WE ! enfoncement du socle autour d'une charge unitaire255 256 257 258 193 ! ********** common des tableaux a 3 dimensions ***** 259 !real,dimension(:,:,:,:),allocatable :: BTT !< deformation parameter for flow law 260 261 !real,dimension(:,:,:,:),allocatable :: SA ! effet temperature sur la deformation (loi n=3) 262 !real,dimension(:,:,:,:),allocatable :: S2A ! effet integre sur l'epaisseur temperature sur la deformation (loi n=3) 263 !real,dimension(:,:,:,:),allocatable :: SA_mx ! effet temperature sur la deformation (loi n=3) 264 !real,dimension(:,:,:,:),allocatable :: S2A_mx ! effet integre sur l'epaisseur temperature sur la deformation (loi n=3) 265 266 !real,dimension(:,:,:,:),allocatable :: SA_my ! effet temperature sur la deformation (loi n=3) 267 !real,dimension(:,:,:,:),allocatable :: S2A_my ! effet integre sur l'epaisseur temperature sur la deformation (loi n=3) 194 268 195 real,dimension(nx,ny,nz) :: SUX !< 269 196 real,dimension(nx,ny,nz) :: SUY !< … … 299 226 ! ===================== Booleens ======================================== 300 227 logical :: SHELFY !< 301 logical :: BOOST !<302 228 logical :: MARINE !< 303 logical :: appel_new_flot !< pour appeler la routine new_flot304 229 305 230 logical,dimension(nx,ny) :: FLOT !< vrai si flottant (test d'archimede) 'o' … … 308 233 logical,dimension(nx,ny) :: FRONT_RESC!< comme front (mais boolean) pour remplimat rescue 309 234 logical,dimension(nx,ny) :: FBM !< 310 logical,dimension(nx,ny) :: OKUMAT !<311 logical,dimension(nx,ny) :: OKVMAT !<312 logical,dimension(nx,ny) :: GRZONE !<313 235 logical,dimension(nx,ny) :: GZMX !< point stream ">" 314 236 logical,dimension(nx,ny) :: GZMY !< point stream "^" … … 317 239 logical,dimension(nx,ny) :: ILEMX !< points ile ">" 318 240 logical,dimension(nx,ny) :: ILEMY !< points ile "^" 319 logical,dimension(nx,ny) :: cotemx !< points cotiers ">"320 logical,dimension(nx,ny) :: cotemy !< points cotiers "^"321 241 logical,dimension(nx,ny) :: fleuvemx !< actual grounded stream 322 242 logical,dimension(nx,ny) :: fleuvemy !< actual grounded stream 323 logical,dimension(nx,ny) :: isolx !< designe un point sans voisin sur ses faces x324 logical,dimension(nx,ny) :: isoly !< designe un point sans voisin sur ses faces y325 logical,dimension(nx,ny) :: new_flot_point !< pour signaler les points qui se mettent a flotter entre 2 pas de temps dtt326 logical,dimension(nx,ny) :: new_flotmx !< pour signaler les points qui deviennent flottantmx entre 2 dtt327 logical,dimension(nx,ny) :: new_flotmy !< pour signaler les points qui deviennent flottantmy entre 2 dtt328 243 logical,dimension(nx,ny) :: flot_marais !< afq -- vrai si flottant et coince entre points poses 'o' 329 244 logical,dimension(nx,ny) :: iceberg !< point iceberg … … 359 274 integer :: num_file4 = 995 !< Id of 360 275 integer :: num_coor = 2004 !< Id of coord-Ant-40km 361 ! integer :: num_tracebug !< numero de l'unite itracebug362 276 363 277 ! Variables communes au main et aux subroutines du step 364 logical :: base_froide365 logical :: base_temp366 278 real :: timemax 367 279 -
branches/GRISLIv3/SOURCES/Climate_modules/climat-perturb_mod-0.4.f90
r451 r467 13 13 14 14 15 use module3d_phy,only: S,S0,Tann,Tjuly, precip,acc,Ylat,num_forc,num_param,num_rep_42,tafor,time,sealevel,sealevel_2d,coefbmshelf15 use module3d_phy,only: S,S0,Tann,Tjuly,acc,Ylat,num_forc,num_param,num_rep_42,tafor,time,sealevel,sealevel_2d,coefbmshelf 16 16 use geography, only: nx,ny,dirforcage,dirnameinp 17 17 use io_netcdf_grisli, only: read_ncdf_var … … 25 25 26 26 real,dimension(nx,ny) :: ta0 !< initial air temperature at sea level annual 27 real,dimension(nx,ny) :: precip 27 28 28 29 real :: coefT !< pour modifier l'amplitude de la perturb. T -
branches/GRISLIv3/SOURCES/Netcdf-routines/sortie_netcdf_GRISLI_mod.0.2-hassine.f90
r449 r467 665 665 use geography, only: nx,ny,nz,nzm,dx,dy 666 666 use runparam, only: itracebug,xmin,ymin,dirsource 667 use module3d_phy, only: s,s0,h,h0,b,s ocle_cry,sealevel,mk,mk_init,hdot,dhdt,tann,tjuly,t,tpmp, &667 use module3d_phy, only: s,s0,h,h0,b,sealevel,mk,mk_init,hdot,dhdt,tann,tjuly,t,tpmp, & 668 668 acc,abl,ghf,phid,bmelt,uxbar,uybar,ux,uy,frotmx,frotmy,tobmx,tobmy, & 669 669 taushelf,epsxx,epsyy,epsxy,eps,abar,pvi,pvm,betamx,betamy,beta_centre, & 670 ablbord_dtt,ice,front,gr_line_schoof,hwater,hdotwater, kond,bsoc,bm, &671 pgx,pgy,phiwx,phiwy,flot_marais,neffmx,neffmy,gzmx,gzmy,ilemx,ilemy, &672 fleuvemx,fleuvemy,flotmx,flotmy,hmx,hmy, frontfacex,frontfacey,sux,suy, &670 ablbord_dtt,ice,front,gr_line_schoof,hwater,hdotwater,bsoc,bm, & 671 flot_marais,neffmx,neffmy,gzmx,gzmy,ilemx,ilemy, & 672 fleuvemx,fleuvemy,flotmx,flotmy,hmx,hmy,sux,suy, & 673 673 tpmp,ux,uy,uzr,debug_3d,xlong,ylat,time,dtt 674 use eau_basale, only: kond,pgx,pgy,phiwx,phiwy 674 675 use tracer_vars, only: xdep_out,ydep_out,tdep_out 675 676 use bilan_eau_mod,only: tot_water,calv_dtt … … 788 789 tab(:,:) = b(:,:) 789 790 end if 790 if (itab.eq.8) then791 tab(:,:) = socle_cry(:,:)792 end if791 !if (itab.eq.8) then 792 ! tab(:,:) = socle_cry(:,:) !no longer computed 793 !end if 793 794 if (itab.eq.9) then 794 795 tab(:,:) = mk_init(:,:) … … 1015 1016 end do 1016 1017 end if 1017 if (itab.eq.72) then1018 tab(:,:) = frontfacex(:,:)1019 end if1020 if (itab.eq.73) then1021 tab(:,:) = frontfacey(:,:)1022 end if1018 !if (itab.eq.72) then !no longer computed 1019 ! tab(:,:) = frontfacex(:,:) 1020 !end if 1021 !if (itab.eq.73) then 1022 ! tab(:,:) = frontfacey(:,:) 1023 !end if 1023 1024 1024 1025 !SORTIE 3D -
branches/GRISLIv3/SOURCES/New-remplimat/diagno-L2_mod.f90
r446 r467 6 6 implicit none 7 7 8 8 real :: pvimin !< valeur de pvi pour les noeuds fictifs 9 9 10 10 real :: somint,test,delp,prec … … 12 12 real, dimension(nx,ny) :: uyb1 13 13 14 real, dimension(nx,ny) :: ramollo !< pour ramollir les ice shelves 14 15 real, dimension(nx,ny) :: uxb1ramollo 15 16 real, dimension(nx,ny) :: uyb1ramollo … … 49 50 subroutine init_diagno 50 51 51 use module3D_phy,only: num_rep_42,num_param ,pvimin52 use module3D_phy,only: num_rep_42,num_param 52 53 use geography, only: geoplace 53 54 use deformation_mod_2lois,only: sf ! afq - 07/2023 - not clean since it is in module_choix … … 111 112 112 113 use module3D_phy, only: niter_nolin,taushelf,flot,h,pvi, & 113 gr_line_schoof,uxbar,uybar, pvimin,debug_3D,V_limit, &114 gr_line_schoof,uxbar,uybar,debug_3D,V_limit, & 114 115 imx_diag,imy_diag,tobmx,tobmy,neffmx,neffmy,gr_line, schoof, & 115 116 betamx,betamy,flgzmx,flgzmy,uxflgz,uyflgz,taub … … 378 379 subroutine calc_pvi 379 380 380 use module3d_phy, only: pvi, pvimin,abar,flot,gzmx,gzmy, &381 ilemx,ilemy,eps,taushelf,h, ramollo,debug_3d,pvm381 use module3d_phy, only: pvi,abar,flot,gzmx,gzmy, & 382 ilemx,ilemy,eps,taushelf,h,debug_3d,pvm 382 383 use runparam, only: itracebug 383 384 use geography, only: nx,ny,nz -
branches/GRISLIv3/SOURCES/New-remplimat/remplimat-shelves-tabTu.f90
r446 r467 44 44 use module3d_phy, only: debug_3D,hmx,hmy,pvi, & 45 45 flgzmx,flgzmy,frotmx,frotmy,betamx,betamy,betamax,betamax_2d, & 46 sdx,sdy,h,b, pvimin,sealevel_2d,flotmx,flotmy,drag_mx,drag_my, &46 sdx,sdy,h,b,sealevel_2d,flotmx,flotmy,drag_mx,drag_my, & 47 47 beta_centre,pvm 48 48 use runparam, only: itracebug,num_tracebug … … 1110 1110 ! et qui ne dépendent d'aucun noeud (ligne Tu,Tv nulle sauf diagonale) 1111 1111 1112 use diagno_mod, only: pvimin 1113 1112 1114 implicit none 1113 1115 -
branches/GRISLIv3/SOURCES/Temperature-routines/icetemp_mod.f90
r446 r467 70 70 subroutine icetemp 71 71 !$ use OMP_LIB 72 use module3D_phy, only: uxbar,uybar,dtt,nzm,time,ux,uy,uzr,ts,h, h1,b,b1, &72 use module3D_phy, only: uxbar,uybar,dtt,nzm,time,ux,uy,uzr,ts,h,b, & 73 73 ghf,t,tpmp,phid,flot,ibase,debug_3D,tbdot 74 74 use runparam, only: itracebug,num_tracebug … … 223 223 Do J=1,Ny 224 224 Do I=1,Nx 225 H1(I,J)=H(I,J)226 B1(I,J)=B(I,J)227 225 Tpmp(I,J,1)=0. 228 226 End Do -
branches/GRISLIv3/SOURCES/ablation_mod.f90
r465 r467 84 84 85 85 86 use module3d_phy,only:Tjuly,Tann,Tmois,acc, pdd,TS,Tshelf,precip,BM,Abl,S86 use module3d_phy,only:Tjuly,Tann,Tmois,acc,TS,BM,Abl,S 87 87 use param_phy_mod,only:dice,cl 88 88 89 89 IMPLICIT NONE 90 90 91 real, dimension(nx,ny) :: p ds, simax, pdsi, sif91 real, dimension(nx,ny) :: precip, pdd, pds, simax, pdsi, sif 92 92 integer :: i,j,k,mo,nday 93 93 real :: summ … … 285 285 TS(:,:)=(TANN(:,:)+26.6*SIF(:,:)) 286 286 TS(:,:)=min(0.0,TS(:,:)) 287 tshelf(:,:)=TS(:,:)288 287 Abl(:,:)=BM(:,:)-Acc(:,:) 289 288 -
branches/GRISLIv3/SOURCES/conserv-mass-adv-diff_sept2009_mod.f90
r446 r467 19 19 module equat_adv_diff_2D_vect ! Cat nouvelle mouture juin 2009 20 20 use module3D_phy, only: V_limit,num_param,num_rep_42,dx1,mk0,i_Hp,Hp,H,uxbar,uybar,testdiag,& 21 dtmax,dt,dtmin,time,dtt,isynchro,diffmx,diffmy,sdx,sdy,hmx,hmy,flgzmx,flgzmy,flot,t abtest,timemax,&21 dtmax,dt,dtmin,time,dtt,isynchro,diffmx,diffmy,sdx,sdy,hmx,hmy,flgzmx,flgzmy,flot,timemax,& 22 22 marine,dtdx2,dtdx,bm,bmelt,igrdline,ibmelt_inv,ice,ablbord,hdot 23 23 use geography, only: nx,ny,dx,geoplace … … 89 89 implicit none 90 90 integer :: i,j 91 real,dimension(nx,ny) :: tabtest ! tableau de travail 91 92 real,dimension(nx,ny) :: Dminx,Dminy 92 93 real,dimension(nx,ny) :: Uxdiff,Uydiff ! vitesse due a la diffusion -
branches/GRISLIv3/SOURCES/eaubasale-0.5_mod.f90
r465 r467 34 34 real :: nefflocal 35 35 36 real,dimension(nx,ny) :: KOND !< basale hydro. conductivity 'o' 37 real,dimension(nx,ny) :: pgx,pgy !< hydro. potential gradient / x '>' and / y '^' 38 real,dimension(nx,ny) :: phiWx,phiWy !< flux d'eau sous glaciaire / x '>' and / y '^' 39 real,dimension(nx,ny) :: PWATER !< basal water pressure 36 40 REAL,dimension(NX,NY) :: limit_hw !< conditions aux limites 37 41 integer,dimension(NX,NY) :: klimit !< ou appliquer les conditions … … 57 61 subroutine init_eaubasale 58 62 59 use module3d_phy, only:num_param,num_rep_42, kond,secyear,hdotwater,pgx,pgy63 use module3d_phy, only:num_param,num_rep_42,secyear,hdotwater 60 64 61 65 namelist/eaubasale1/ecoulement_eau,hwatermax,infiltr … … 126 130 subroutine eaubasale !(pwater) version correspondant à la thèse de Vincent 127 131 128 use module3d_phy, only:hwater, kond,secyear,flot,sealevel_2D,Bsoc,ibase,S,H,B,bmelt,&129 debug_3d,flotmx,flotmy, pgx,pgy,phiwx,phiwy,isynchro,dtt,dt,hdotwater,pwater132 use module3d_phy, only:hwater,secyear,flot,sealevel_2D,Bsoc,ibase,S,H,B,bmelt,& 133 debug_3d,flotmx,flotmy,isynchro,dtt,dt,hdotwater 130 134 use geography, only:dx,dy 131 135 use param_phy_mod, only:rowg,ro,rog,rofreshg,rofresh -
branches/GRISLIv3/SOURCES/flottab2-0.7.f90
r446 r467 104 104 105 105 use runparam, only:itracebug,nt 106 use module3D_phy, only:shelfy,igrdline,mk_init,flot,H,sealevel_2d,Bsoc,S,H,B, appel_new_flot,&107 new_flot_point,new_flotmx,new_flotmy,ice,front,frontfacex,frontfacey,isolx,isoly,cotemx,&108 cotemy,boost,iceberg,uxbar,uybar,mk,gzmx,gzmy,flotmx,flotmy,hmx,hmy,isynchro,ilemx,ilemy,&106 use module3D_phy, only:shelfy,igrdline,mk_init,flot,H,sealevel_2d,Bsoc,S,H,B,& 107 ice,front,& 108 iceberg,uxbar,uybar,mk,gzmx,gzmy,flotmx,flotmy,hmx,hmy,isynchro,ilemx,ilemy,& 109 109 flgzmx,flgzmy,marine,fbm,bm,bmelt,debug_3D,dt 110 110 use param_phy_mod, only:row,ro … … 113 113 implicit none 114 114 115 logical,dimension(nx,ny) :: new_flot_point !< pour signaler les points qui se mettent a flotter entre 2 pas de temps dtt 116 logical,dimension(nx,ny) :: new_flotmx !< pour signaler les points qui deviennent flottantmx entre 2 dtt 117 logical,dimension(nx,ny) :: new_flotmy !< pour signaler les points qui deviennent flottantmy entre 2 dtt 118 115 119 integer :: i,j 116 120 … … 141 145 ! a flotter entre 2 dtt 142 146 143 appel_new_flot=.false.144 147 !$OMP DO 145 148 do j=1,ny … … 157 160 ICE(:,:)=0 158 161 front(:,:)=0 159 frontfacex(:,:)=0160 frontfacey(:,:)=0161 isolx(:,:)=.false.162 isoly(:,:)=.false.163 cotemx(:,:)=.false.164 cotemy(:,:)=.false.165 boost=.false.166 162 iceberg(:,:)=.false. 167 163 !$OMP END WORKSHARE … … 190 186 ex_pose: if ((.not.FLOT(I,J)).and.(isynchro.eq.1)) then ! il ne flottait pas avant 191 187 FLOT(I,J)=.true. 192 BOOST=.false.193 188 194 189 if (igrdline.eq.1) then ! en cas de grounding line prescrite … … 220 215 if(FLOT(I,J)) then ! mais il flottait avant 221 216 FLOT(I,J)=.false. 222 BOOST=.false.223 217 endif 224 218 !cdc correction topo pour suivre variations sealevel … … 283 277 if (flotmx(i,j).and.(new_flot_point(i,j).or. & 284 278 new_flot_point(i-1,j))) then 285 appel_new_flot=.true. 286 new_flotmx(i,j)=.true. 279 new_flotmx(i,j)=.true. 287 280 endif 288 281 … … 301 294 archim=(Bsoc(i,j)+Bsoc(i-1,j))*0.5-(sealevel_2d(i,j)+sealevel_2d(i-1,j))*0.5+ro/row*Hmx(i,j) 302 295 gzmx(i,j)=gzmx(i,j).and.(archim.le.100.) 303 cotemx(i,j)=gzmx(i,j)304 296 305 297 end do … … 323 315 if (flotmy(i,j).and.(new_flot_point(i,j).or. & 324 316 new_flot_point(i,j-1))) then 325 appel_new_flot=.true. 326 new_flotmy(i,j)=.true. 317 new_flotmy(i,j)=.true. 327 318 endif 328 319 … … 339 330 340 331 archim=(Bsoc(i,j)+Bsoc(i,j-1))*0.5-(sealevel_2d(i,j)+sealevel_2d(i,j-1))*0.5+ro/row*Hmy(i,j) 341 gzmy(i,j)=gzmy(i,j).and.(archim.le.100.) 342 cotemy(i,j)=gzmy(i,j) 332 gzmy(i,j)=gzmy(i,j).and.(archim.le.100.) 343 333 344 334 end do … … 820 810 subroutine determin_front 821 811 822 use module3D_phy, only:ice,H,front ,frontfacex,frontfacey,isolx,isoly812 use module3D_phy, only:ice,H,front 823 813 824 814 … … 1039 1029 !$OMP END DO 1040 1030 1041 !isolx signifie pas de voisins en x1042 !isoly signifie pas de voisins en y1043 !remarque :1044 !si isolx/y=.true. alors frontfacex/y=0 (a la fois +1 & -1 or +1-1=0)1045 1046 ! calcul de frontfacex et isolx1047 !$OMP DO1048 do j=1,ny1049 do i=2,nx-11050 1051 if (front(i,j).ge.1.and.front(i,j).le.3) then !front(entre 1 et 3)1052 1053 if ((ice(i-1,j)+ice(i+1,j)).lt.2) then ! il y a un front // a x1054 1055 if ((ice(i-1,j)+ice(i+1,j)).eq.0) then1056 isolx(i,j)=.true.1057 elseif (ice(i-1,j).eq.0) then1058 frontfacex(i,j)=-1 ! front i-1 |i i+11059 else1060 frontfacex(i,j)=+1 ! front i-1 i| i+11061 endif1062 endif1063 end if !fin du test il y a un front1064 1065 end do1066 end do1067 !$OMP END DO1068 1069 ! calcul de frontfacey et isoly1070 !$OMP DO1071 do j=2,ny-11072 do i=1,nx1073 1074 if (front(i,j).ge.1.and.front(i,j).le.3) then !front(entre 1 et 3)1075 1076 if ((ice(i,j-1)+ice(i,j+1)).lt.2) then ! il y a un front // a y1077 1078 if ((ice(i,j-1)+ice(i,j+1)).eq.0) then1079 isoly(i,j)=.true. !front j-1 |j| j+11080 elseif (ice(i,j-1).eq.0) then1081 frontfacey(i,j)=-1 !front j-1 |j j+11082 else1083 frontfacey(i,j)=+1 !front j-1 j| j+11084 endif1085 endif1086 end if !fin du test il y a un front1087 1088 end do1089 end do1090 !$OMP END DO1091 1092 1093 ! traitement des bords. On considere que l'exterieur n'a pas de glace1094 ! attention ce n'est vrai que sur la grande grille1095 1096 !$OMP DO PRIVATE(i)1097 do j=2,ny-11098 i=11099 if (front(i,j).ge.1) then1100 if (ice(i+1,j).eq.0) then1101 isolx(i,j)=.true.1102 else1103 frontfacex(i,j)=-11104 endif1105 end if1106 i=nx1107 if (front(i,j).ge.1) then1108 if (ice(i-1,j).eq.0) then1109 isolx(i,j)=.true.1110 else1111 frontfacex(i,j)=11112 endif1113 end if1114 end do1115 !$OMP END DO1116 1117 !$OMP DO PRIVATE(j)1118 do i=2,nx-11119 j=11120 if (front(i,j).ge.1) then1121 if (ice(i,j+1).eq.0) then1122 isoly(i,j)=.true.1123 else1124 frontfacey(i,j)=-11125 endif1126 end if1127 j=ny1128 if (front(i,j).ge.1) then1129 if (ice(i,j-1).eq.0) then1130 isoly(i,j)=.true.1131 else1132 frontfacey(i,j)=11133 endif1134 end if1135 end do1136 !$OMP END DO1137 1031 !$OMP END PARALLEL 1138 1032 -
branches/GRISLIv3/SOURCES/initial2-0.4.f90
r446 r467 17 17 subroutine INITIAL2() 18 18 19 USE module3D_phy, only: cde,abl,bdot,bmelt,epsxx,epsyy,epsxy,hwater,calv,hdot,hdotwater, pdd,&20 slope,taub, tg,ubx,uby,uzk,uxbar,uybar,vbar,ibase,tpmp,mk,mk0,h,grzone,front, &21 frontfacex,frontfacey,bsoc,flot,sealevel_2D,flotmx,flotmy,okumat,okvmat,gzmx, &19 USE module3D_phy, only: cde,abl,bdot,bmelt,epsxx,epsyy,epsxy,hwater,calv,hdot,hdotwater, & 20 slope,taub,ubx,uby,uzk,uxbar,uybar,ibase,tpmp,mk,mk0,h,front, & 21 bsoc,flot,sealevel_2D,flotmx,flotmy,gzmx, & 22 22 gzmy,flgzmx,flgzmy,ilemx,ilemy,sdx,sdy,ux,uy,uzr,t,s 23 23 use geography, only: nx,ny,nz,nzm,dx 24 USE param_phy_mod 24 USE param_phy_mod,only: ro,row 25 25 implicit none 26 26 real,dimension(NZ) ::cord_vert … … 47 47 HDOT(:,:)=0. 48 48 HDOTWATER(:,:)=0. 49 PDD(:,:)=0.50 49 SLOPE(:,:)=0. 51 50 TAUB(:,:)=0. 52 TG(:,:)=0.53 51 UBX(:,:)=0. 54 52 UBY(:,:)=0. … … 56 54 UXBAR(:,:)=0. 57 55 UYBAR(:,:)=0. 58 VBAR(:,:)=0.59 56 IBASE(:,:)=1 60 57 TPMP(:,:,1)=0 … … 62 59 63 60 MK(:,:)=MK0(:,:) 64 grzone(:,:)=.false.65 61 66 62 67 63 !-------Initialisation des fronts. 68 64 FRONT(:,:) =0 69 FRONTFACEX(:,:)=070 FRONTFACEY(:,:)=071 65 72 66 !-------Initialisation des flot... devrait etre mise dans input_topo. … … 86 80 FLOTMX(:,:)=FLOT(:,:) 87 81 FLOTMY(:,:)=FLOT(:,:) 88 OKUMAT(:,:)=.FALSE.89 OKVMAT(:,:)=.FALSE.90 82 GZMX(:,:)=.FALSE. 91 83 GZMY(:,:)=.FALSE. -
branches/GRISLIv3/SOURCES/isostasie_mod-0.3.f90
r465 r467 16 16 17 17 module isostasie_mod 18 18 19 use geography, only: nx,ny 19 20 use iso_declar,only: nbed 21 22 implicit none 23 24 real,dimension(nx,ny) :: W0 !< enfoncement du socle a l'equilibre isostatique 25 real,dimension(nx,ny) :: W1 !< enfoncement du socle courant 20 26 21 27 contains … … 27 33 28 34 use iso_declar,only: nlith,dt_iso,tausoc,dl,rl,lbloc,we,charge 29 use module3D_phy, only: icouple,marine,err,h0,bsoc0,sealevel_2d ,w0,w135 use module3D_phy, only: icouple,marine,err,h0,bsoc0,sealevel_2d 30 36 use geography, only: geoplace,nx,ny,dx,dy 31 37 use param_phy_mod, only: ro,row,rog,rowg,romg -
branches/GRISLIv3/SOURCES/lineartemp-0.2.f90
r414 r467 13 13 14 14 use geography, only:nx,ny,nz,nzm 15 use module3D_phy, only:H 1,H,B1,B,TG,bmelt,T,TS,tpmp,ghf15 use module3D_phy, only:H,B,bmelt,T,TS,tpmp,ghf 16 16 use icetemp_declar, only:Dzm,Cm 17 17 … … 19 19 20 20 integer :: i,j,k 21 real,dimension(nx,ny) :: TG !< degrees above melting point at the base 21 22 22 23 do I=1,NX 23 24 do J=1,NY 24 H1(I,J)=H(I,J)25 B1(I,J)=B(I,J)26 25 TG(I,J)=0. 27 26 BMELT(I,J)=0. -
branches/GRISLIv3/SOURCES/litho-0.4.f90
r446 r467 39 39 subroutine litho 40 40 !$ USE OMP_LIB 41 USE module3D_phy, only: err ,w141 USE module3D_phy, only: err 42 42 use geography, only: nx,ny 43 use isostasie_mod, only: w1 43 44 USE iso_declar, only: lbloc,we,charge ! module de declaration des variables specifiques a l'isostasie 44 45 -
branches/GRISLIv3/SOURCES/main3D-0.4-40km.f90
r465 r467 133 133 USE module3D_phy, only: itemp,icouple,isynchro,icompteur,iglen,marine,num_sealevel, & 134 134 num_ts_ritz,num_ic_vo,num_ic_by,num_ic_dm,num_ic_dc,num_ic_df, & 135 s,h,b,bsoc,flot,mk,mk0,uxbar,uybar,hwater,time,timemax, boost,ndebug,ndebug_max135 s,h,b,bsoc,flot,mk,mk0,uxbar,uybar,hwater,time,timemax,ndebug,ndebug_max 136 136 use runparam, only: nt,tbegin,tgrounded,dtprofile,dtcpt,dirnameout,runname,itracebug 137 137 use geography, only: nx,ny,geoplace … … 349 349 endif 350 350 351 boost = .false.352 353 351 do i=2,nx-1 354 352 do j=2,ny-1 -
branches/GRISLIv3/SOURCES/prescribe-H-i2s_mod.f90
r431 r467 21 21 ! use toy_retreat_mod 22 22 23 use geography,only: nx,ny 24 23 25 implicit none 24 26 ! real,dimension(nx,ny) :: Hp !< H value if prescribed … … 28 30 ! integer,dimension(nx,ny) :: i_Hp !< 1 if H is prescribed on this node, else 0 29 31 ! 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 initial31 !integer,dimension(nx,ny) :: MK_flot0 !< mask float initial32 integer,dimension(nx,ny) :: MK_gl0 !< mask grounding line initial 33 integer,dimension(nx,ny) :: MK_flot0 !< mask float initial 32 34 33 35 ! pour grounding line retreat, ice2sea … … 48 50 subroutine init_prescribe_H 49 51 50 use module3D_phy, only: flot, MK_flot0,MK_gl0,Hp0,H0,Mk_init,i_hp052 use module3D_phy, only: flot,Hp0,H0,Mk_init,i_hp0 51 53 use geography, only: nx,ny,geoplace 52 54 use runparam, only: itracebug … … 103 105 subroutine prescribe_present_H_gl 104 106 105 use module3D_phy, only: MK_flot0,MK_gl0,i_hp,Hp,Hp0107 use module3D_phy, only: i_hp,Hp,Hp0 106 108 use runparam, only: itracebug 107 109 … … 170 172 subroutine prescribe_paleo_gl_shelf 171 173 172 use module3D_phy, only: MK_flot0,MK_gl0,i_hp,hp,sealevel_2d,Bsoc174 use module3D_phy, only: i_hp,hp,sealevel_2d,Bsoc 173 175 use runparam, only: itracebug 174 176 use param_phy_mod, only: row,ro … … 245 247 subroutine break_all_ice_shelves 246 248 247 use module3D_phy, only: i_hp,hp,hp0,H,debug_3D,flot ,MK_flot0249 use module3D_phy, only: i_hp,hp,hp0,H,debug_3D,flot 248 250 use runparam, only: itracebug 249 251 … … 336 338 subroutine prescribe_present_H_gl_copy 337 339 338 use module3D_phy, only: i_hp,hp,Hp0 ,MK_flot0,MK_gl0340 use module3D_phy, only: i_hp,hp,Hp0 339 341 use runparam, only: itracebug 340 342 use geography, only: nx,ny -
branches/GRISLIv3/SOURCES/slope_surf.f90
r428 r467 13 13 subroutine slope_surf 14 14 15 use module3D_phy, only: sdx,sdy,S,slope,s dxmy,sdymx,slope2mx,slope2my,debug_3D15 use module3D_phy, only: sdx,sdy,S,slope,slope2mx,slope2my,debug_3D 16 16 use geography, only: nx,ny,dx,dy 17 17 !$ USE OMP_LIB 18 18 19 19 implicit none 20 21 real,dimension(nx,ny) :: SDXMY !< slope selon x moy selon y '^' remplace SDMX 22 real,dimension(nx,ny) :: SDYMX !< slope selon y moy selon x '>' remplace SDMY 20 23 21 24 real :: inv_4dx ! inverse de dx pour eviter les divisions =1/(4*dx) -
branches/GRISLIv3/SOURCES/spinup_mod.f90
r446 r467 682 682 subroutine ajust_ghf 683 683 684 use module3D_phy, only: debug_3D,flot,ibase,ghf, ghf0,secyear684 use module3D_phy, only: debug_3D,flot,ibase,ghf,secyear 685 685 686 686 implicit none 687 687 688 real,dimension(nx,ny) :: ghf0 !< geothermal heat flux J/m2/a 'o' 688 689 real,dimension(nx,ny) :: coefdef_maj !< coefficient deformation 689 690 real :: increment_ghf -
branches/GRISLIv3/SOURCES/taubed-0.3.f90
r446 r467 44 44 45 45 !$USE OMP_LIB 46 USE module3D_phy, only: h,bsoc0,bsoc,bdot,sealevel_2d ,w0,w146 USE module3D_phy, only: h,bsoc0,bsoc,bdot,sealevel_2d 47 47 USE geography, only: nx,ny 48 48 USE param_phy_mod, only: ro,row,rog,rowg,rom 49 USE isostasie_mod, only:w0,w1 49 50 USE iso_declar,only: nlith,lbloc,charge,dt_iso,tausoc ! module de declaration des variables de l'isostasie 50 51 -
branches/GRISLIv3/SOURCES/velocities-polyn-0.3.f90
r446 r467 26 26 use runparam, only : itracebug 27 27 use module3d_phy, only: flotmx,flotmy,ux,uy,sux,suy,sdx,sdy,ubx,uby,& 28 hmx,hmy,uxbar,uybar,iglen,cde, divu,uzr,bmelt,bm,flot,front,flgzmx,flgzmy,&28 hmx,hmy,uxbar,uybar,iglen,cde,uzr,bmelt,bm,flot,front,flgzmx,flgzmy,& 29 29 uzsdot,dtt,uzk,bdot,hdot 30 30 use geography, only : nx,ny,nz,dx … … 36 36 real, dimension(nx,ny) :: hdd 37 37 real, dimension(nx,ny) :: xx 38 real, dimension(nx,ny) :: divu !< divergence de UH 39 38 40 39 41 if (itracebug.eq.1) call tracebug(' Entree dans routine SIA_velocity')
Note: See TracChangeset
for help on using the changeset viewer.