Scalings for “3D buoyant hydraulic fractures: constant release from
a point source”

A. Mori - B. Lecampion

Supplemental Materials to the paper “Three-dimensional buoyant hydraulic fractures: constant release from a point source”
J. Fluid Mechanics (2022)

Impermeable medium, constant release case

We define all the dimensionless groups in a Mathematica replacement rule :

DimensionlessGroups={ Ge-> ((Wstar Ep)/(   bstar Pstar))(* elastic pressure *),  Gv-> (((Qstar t)/(Wstar  Lstar bstar)))(* Global volume balance*),  Gm-> ((μp  Qstar )/(Pstar (Wstar^3)))(* viscosity -  viscous pressure over characteristic pressure  *),Gk-> (Kc/((Sqrt[bstar]) Pstar))(* toughness pressure over characteristic pressure *),Gq-> ((Qo )/(Qstar  ))(* inj rate*), 
Gb->    ((Δγ Lstar)/( Pstar)) (* Buoyancy pressure vs characteristic pressure *),Gmh-> ((μp  vxstar bstar )/(Pstar (Wstar^2))) (* viscous pressure (associated with horizontal velocity)  vs characteristic pressure *) ,Gmv-> ((μp  vzstar Lstar )/(Δγ Lstar (Wstar^2)))(*   viscous pressure (associated with vertical velocity) / buoyancy pressure  *) ,Gs-> bstar/Lstar (* aspect ratio *) ,GvelV-> vzstar (t/Lstar) (*  vertical velocity == fracture length velocity*)
};

Ep: Plane Strain Young Modulus (Pa)
t: time  (s) 
μp = 12 μ : viscosity coefficient appearing in Poiseuille law   (Pa.s) and in viscous energy dissipation 
Kc   : fracture toughness
Qo :  injection rate ((m^3)/s)

Radial scalings bstar=Lstar

Classical zero buoyancy scalings

M Scaling: constant injection / storage / Viscosity scaling

Gq=  Gv=Gm=Ge=1 in that scaling  (i.e. storage, injection elasticity  and viscosity as first order phenomena)  / no fluid lag

MScales=Solve[ ( # /.DimensionlessGroups)==1 & /@ {Ge,Gv,Gq,Gm,Gs ,vxstar/vzstar,GvelV}, {Lstar,bstar, Wstar,Pstar,Qstar,vxstar,vzstar}] [[1]]

The remaining (non-unity) dimensionless numbers provides the dimensionless numbers governing the solution of the problem

Mnumbers=DimensionlessGroups/.MScales //PowerExpand

(* time of viscous buoyancy transition  (Subscript[t, m^m]) *)
tmb=Solve[(Gb/.Mnumbers)== 1,t][[1]]//PowerExpand

(* time of viscosity to toughness transition (Subscript[t, mk]) *)
tmk=Solve[(Gk/.Mnumbers)== 1,t][[1]]//PowerExpand

K Scaling: constant injection / storage / Toughness scaling

Ge=Gv=Gq=  Gk=1 in that scaling  (i.e. storage, injection elasticity  and toughness  as first order phenomena)   / no fluid lag

KScales=Solve[ ( # /.DimensionlessGroups)==1 & /@ {Ge,Gv,Gq,Gk,Gs,vxstar/vzstar,GvelV}, {Lstar,bstar,Wstar,Pstar,Qstar,vxstar,vzstar}] [[1]]

The remaining (non-unity) dimensionless numbers provides the dimensionless numbers governing the solution of the problem

Knumbers=DimensionlessGroups/.KScales //PowerExpand

(* time to buoyancy  (Subscript[t, k^k])*)
tkb=Solve[(Gb/.Knumbers)== 1,t][[1]]//PowerExpand

tmk = Solve[(Gm/.Knumbers)== 1,t][[1]]//PowerExpand

Transition from M to K - Zero buoyancy

KScales/.tmk //PowerExpand

MScales /.tmk //PowerExpand

DimensionlessGroups/.KScales/.tmk //PowerExpand

DimensionlessGroups/.MScales/.tmk //PowerExpand

Scales at the onset of Buoyancy

(* Toughness *)

KScales/.tkb //PowerExpand

(* Viscosity *)

MScales/.tmb //PowerExpand

DimensionlessGroups/.KScales/.tkb //PowerExpand

DimensionlessGroups/.MScales/.tmb //PowerExpand

(* The problem is solution function of a dimensionless viscosity *)

Mkb={Mkhat->Gm/. DimensionlessGroups/.KScales/.tkb //PowerExpand}

(* some relation between scales *)

(Lstar /.(KScales/.tmk) //PowerExpand)/(Lstar /.(KScales/.tkb) //PowerExpand)== (Mkhat/.Mkb)

(Pstar /.(KScales/.tmk) //PowerExpand)/(Pstar /.(KScales/.tkb) //PowerExpand)== (((Mkhat/.Mkb))^(-1/2)) //PowerExpand

(Wstar /.(KScales/.tmk) //PowerExpand)/(Wstar /.(KScales/.tkb) //PowerExpand)== (((Mkhat/.Mkb))^(1/2)) //PowerExpand

Buoyancy - Elongated scalings

Toughness dominated buoyancy

Tail elongated scaling

We fix the breadth of the fracture to the head buoyancy scale (which is the characteristic scales at the onset of buoyancy in the toughness dominated regime.

bset={bstar->(Lstar /.(KScales/.tkb) //PowerExpand)}

Kelongated=Join[Solve[ ( # /.DimensionlessGroups/.bset)==1 & /@ { Ge,Gv,Gs  vzstar/vxstar , Gmv,Gq,GvelV
}, {Pstar, vxstar,vzstar,Lstar,Qstar,Wstar}][[1]] //PowerExpand //FullSimplify,bset]

KelongatedGroups=DimensionlessGroups/.Kelongated//PowerExpand

(Gmh /. KelongatedGroups)

((Gmh /. KelongatedGroups) /.{t-> τ t}/. tkb //PowerExpand) == ((((Mkhat/.Mkb))^0)//PowerExpand) (τ^(-1))

((Gb /. KelongatedGroups)/.{t-> τ t} /. tkb //PowerExpand) == ((((Mkhat/.Mkb))^(-2/3))//PowerExpand) τ

Solve[(Gmh /. KelongatedGroups)==1,t]//PowerExpand

((Gmh /. KelongatedGroups) /.{t-> τ t}/. tkb //PowerExpand) == ((((Mkhat/.Mkb))^0)//PowerExpand) (τ^(-1))

((Gb /. KelongatedGroups)/.{t-> τ t} /. tkb //PowerExpand) == ((((Mkhat/.Mkb))^(-2/3))//PowerExpand) τ

(Gs/.KelongatedGroups /.{t-> τ t} /.tkb )==((((Mkhat/.Mkb))^(1/3))//PowerExpand)  (τ^(-1))

Toughness - head scaling (bstar  ~ Lstar)

Note that this head scales are strictly the toughness scaling at the transition time scale (Subscript[t, k^k]) to buoyancy

Ge=Gq=Gb= Gk=1 in that scaling

HeadkScales=Solve[ ( # /.DimensionlessGroups)==1 & /@ {Ge,Gq,Gb,Gk,Gs}, {Lstar,bstar,Wstar,Pstar,Qstar}] [[1]]

Vkhead = (Lstar^2) Wstar //.HeadkScales

(Qo t /.tkb ) == Vkhead

Khnumbers=DimensionlessGroups//.HeadkScales //PowerExpand

( Gm/.Khnumbers )== (Mkhat/.Mkb)

VTail = Qo t - Vkhead

(Lstar /. HeadkScales)/(Lstar /.Kelongated)

(Pstar /. HeadkScales)/(Pstar /.Kelongated) ==(((Mkhat/.Mkb))^(-1/3))//PowerExpand

(Wstar /. HeadkScales)/(Wstar /.Kelongated) ==(((Mkhat/.Mkb))^(-1/3))//PowerExpand

(bstar /. HeadkScales)/(bstar /.Kelongated)

Viscosity dominated buoyancy

Tail / Source region scaling

This scaling is strictly similar to the Lister (1990b) scaling. Ge=Gv==Gmv=Gmh=1,   Gs= vx/vz,    vz~Lstar/t

Melongated=Solve[ ( # /.DimensionlessGroups)==1 & /@ { Ge,Gmv,Gmh,Gs   vzstar/vxstar , Gv,Gq,GvelV
}, {Pstar, vxstar,vzstar,Lstar,Qstar,Wstar,bstar}] [[4]]

MelongatedGroups=DimensionlessGroups/.Melongated//PowerExpand

(* The dimensionless toughness increases with time - for horizontal growth*)

(* timescale for the horizontal toughness to be of order 1 *)

tmxkx=(Solve[(Gk/.MelongatedGroups)==1,t]//PowerExpand )[[1]]

(* relation between this characteristic time and Mkhat and tm^m *)

(t/.tmxkx)    == ((t/.tmb) (((Mkhat/.Mkb ))^(36/35)) //PowerExpand)

(bstar /.Melongated/.tmxkx //PowerExpand)/(bstar/.bset) //PowerExpand

(((Mkhat/.Mkb ))^(2/5))//PowerExpand

((Gk/.MelongatedGroups)/.{t-> t τ} /. tmb //PowerExpand)==(((Mkhat/.Mkb  ))^(-3/14)) (τ^(5/24))//PowerExpand

Solve[(X^(36/35))==100.,X]

(vxstar/vzstar  /.Melongated     )/. tmb //PowerExpand

(OverHat[M]) Viscosity - head scaling

Ge=Gq=Gb= Gm=1 in that scaling  .
We set the characteristic vertical flow velocity in that scaling to be equal to the elongated (tail) viscous scaling

aux = Join[DimensionlessGroups,{Gqhead-> bstar Wstar (  (  vzstar)/.MelongatedDirect) /Qstar  }]

HeadmScales=Solve[ ( # /.aux)==1 & /@ {Ge,Gqhead,Gb,Gm,Gs,Gmv,Gmh}, {Lstar,Wstar,Pstar,Qstar,bstar,vxstar,vzstar}] [[-1]]

((μp 1vzstar  bstar)/((Wstar^2) Pstar ))/.HeadmScales

aux/.HeadmScales//PowerExpand

(* introducing the dimensionless time t/(Subscript[t, m^m])*)

HeadmScales /.{t-> τ t}/.tmb //PowerExpand

MScales/.tmb //PowerExpand

Vmhead=(Wstar Lstar bstar /.HeadmScales)/.{t-> τ t }/.tmb //PowerExpand

Qo t /.{t-> τ t } /.tmb

(Wstar Lstar bstar /.HeadmScales) /. tmb //PowerExpand

Wstar  bstar(vx/.MelongatedDirect)

Scaling Tables

{ { "" , "(SubStar[l])", "(SubStar[b])","(SubStar[w])","(SubStar[p])"," "," "},
{"M", Lstar,bstar,Wstar,Pstar,Gk/.DimensionlessGroups/.MScales /.{t-> τ t}/.tmk,Gb/.DimensionlessGroups/.MScales/.{t-> τ t}/.tmb}/.MScales //PowerExpand,
{"K",Lstar,bstar,Wstar,Pstar,Gm/.DimensionlessGroups /.KScales /.{t-> τ t}/.tmk,Gb/.DimensionlessGroups/.KScales /.{t-> τ t}/.tkb}/.KScales //PowerExpand}//TableForm

{t,Lstar,bstar,Wstar,Pstar,Gm/.DimensionlessGroups/.KScales /.{t-> t τ},Gb/.DimensionlessGroups}/.KScales  /.tmk//PowerExpand

(*{t,Lstar,bstar,Wstar,Pstar,Gk/.DimensionlessGroups /.MScales /.{t-> t τ} ,Gb/.DimensionlessGroups}/.MScales /.tmk//PowerExpand*)

{t,Lstar,bstar,Wstar,Pstar,Gk/.DimensionlessGroups,Gb/.DimensionlessGroups}/.MScales /.tmb//PowerExpand

{t,Lstar,bstar,Wstar,Pstar,Gm/.DimensionlessGroups,Gb/.DimensionlessGroups}/.KScales /.tkb//PowerExpand

{ { "" , "(SubStar[l])", "(SubStar[b])","(SubStar[w])","(SubStar[V])","(SubStar[p])"," "," "},
{"(OverHat[M]) (tail)" , Lstar,bstar,Wstar,"(Subscript[V, *]^head)" - Qo t,Pstar,Gk/.DimensionlessGroups/.Melongated /.{t-> τ t}/.tmb,Gb/.DimensionlessGroups /.Melongated/.{t-> τ t}/.tmb}/.Melongated //PowerExpand,
{"(OverHat[M]) (head)", Lstar,bstar,Wstar,( Lstar bstar Wstar),Pstar}/.HeadmScales //PowerExpand,
{"(OverHat[K]) (tail)",Lstar,bstar,Wstar,"(Subscript[V, *]^head)" - Qo t,Pstar,Gm/.DimensionlessGroups/.Kelongated /.{t-> τ t}/.tkb ,Gb/.DimensionlessGroups/.Kelongated/.{t-> τ t}/.tkb}/.Kelongated //PowerExpand,
{"(OverHat[K]) (head)",Lstar,bstar,Wstar,( Lstar bstar Wstar),Pstar}/.HeadkScales //PowerExpand}//TableForm

(Mkhat/.Mkb)

((((t/.tmb) /(t/.tkb) ))^(3/5))//PowerExpand

(((Mkhat/.Mkb))^(-2/3))//PowerExpand

tmxkx

{ { "" , "(SubStar[l])", "(SubStar[b])","(SubStar[w])","(SubStar[V])","(SubStar[p])"," "},
{"(OverHat[M]) (head)", Lstar,bstar,Wstar,( Lstar bstar Wstar),Pstar}/.HeadmScales //PowerExpand,
{"(OverHat[K]) (head)",Lstar,bstar,Wstar,( Lstar bstar Wstar),Pstar}/.HeadkScales //PowerExpand}//TableForm