Пример #1
0
                           Eprime,
                           K1c,
                           Carters_coef=Cl)

# injection parameters
Q0 = 0.01  # injection rate
Injection = InjectionProperties(Q0, Mesh)

# fluid properties
Fluid = FluidProperties(rheology='PLF', n=0.6, k=0.001 / 12)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 1e7                               # the time at which the simulation stops
simulProp.set_outputFolder("./Data/MtoK_leakoff")       # the disk address where the files are saved
simulProp.set_simulation_name('PLF_MtoKtilde_n0.6')
simulProp.tolFractFront = 0.003                         # increase the tolerance for faster run
simulProp.projMethod = 'LS_continousfront'              # using the continuous front algorithm
simulProp.set_tipAsymptote('PLF')                       # setting the tip asymptote to power-law fluid

# initializing the fracture width with the solution provided by  Madyarova & Detournay 2004 for power-law fluids. 
w = np.zeros(Mesh.NumberOfElts)
xw = np.genfromtxt('width_n_05.csv', delimiter=',')
t = 0.00005
n = Fluid.n
gamma = 0.7155
Mprime = 2**(n + 1) * (2 * n + 1)**n / n**n * Fluid.k
Vel = 2 * (n + 1) / (n + 2) / 3 * gamma * (Eprime * Q0 ** (n + 2) / Mprime
        ) ** (1 / (3 * n + 6)) / t ** ((n + 4) / (3 * n + 6))
eps = (Mprime / Eprime / t**n) ** (1 / (n + 2))
L = (Eprime * Q0**(n + 2) * t**(2 * n + 2) / Mprime) ** (1 / (3 * n + 6))
Q0 = 0.001  # injection rate
Injection = InjectionProperties(Q0, Mesh)

# fluid properties
Fluid = FluidProperties(viscosity=1.1e-5)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 500  # the time at which the simulation stops
simulProp.set_volumeControl(
    True)  # to set up the solver in volume control mode (inviscid fluid)
simulProp.tolFractFront = 4e-3  # increase tolerance for the anisotropic case
simulProp.remeshFactor = 1.5  # the factor by which the mesh will be compressed.
simulProp.set_outputFolder(
    "./Data/ellipse")  # the disk address where the files are saved
simulProp.set_simulation_name('anisotropic_toughness_benchmark')
simulProp.symmetric = True  # solving with faster solver that assumes fracture is symmetric

# initializing fracture
gamma = (K1c_func(np.pi / 2) / K1c_func(0))**2  # gamma = (Kc1/Kc3)**2
Fr_geometry = Geometry('elliptical', minor_axis=2., gamma=gamma)
init_param = InitializationParameters(Fr_geometry, regime='E_K')

# creating fracture object
Fr = Fracture(Mesh, init_param, Solid, Fluid, Injection, simulProp)

# create a Controller
controller = Controller(Fr, Solid, Fluid, Injection, simulProp)

# run the simulation
controller.run()
# fluid properties
Fluid = FluidProperties(
    viscosity=0.617,
    rheology='HBF',  # set fluid rheology to Herschel-Bulkley
    compressibility=1e-11,
    n=0.617,
    k=0.22,
    T0=2.3)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 86  # the time at which the simulation stops
simulProp.set_outputFolder(
    "./Data/HB")  # the disk address where the files are saved
simulProp.set_simulation_name(
    'HB_injection_line_sink')  # setting simulation name
simulProp.saveG = True  # enable saving the coefficient G
simulProp.plotVar = ['ir', 'w']  # plot width of fracture
simulProp.saveEffVisc = True  # enable saving of the effective viscosity
simulProp.relaxation_factor = 0.3  # relax Anderson iteration
simulProp.maxSolverItrs = 200  # set maximum number of Anderson iterations to 200
simulProp.Anderson_parameter = 10  # save last 10 iterations in Anderson iteration
simulProp.collectPerfData = True  # enable collect performance data
simulProp.fixedTmStp = np.asarray(
    [[0, 0.5], [0.01,
                None]])  # set auto time step size after propagation start
simulProp.tolFractFront = 0.003  # relaxing tolerance for front iteration
simulProp.set_tipAsymptote(
    'HBF')  # setting tip asymptote to Herschel-Bulkley fluid

# starting simulation with a static radial fracture with radius 20cm and net pressure of 1MPa
# injection parameters
Q0 = 0.01  # injection rate
Injection = InjectionProperties(Q0, Mesh)

# fluid properties
Fluid = FluidProperties(viscosity=1.1e-3)  # toughness dominated solution

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 4000  # the time at which the simulation stops
simulProp.set_volumeControl(
    True)  # to set up the solver in volume control mode (inviscid fluid)
simulProp.tolFractFront = 4e-3  # increase tolerance for the anisotropic case
simulProp.set_outputFolder(
    "./Data/toughness_jump")  # the disk address where the files are saved
simulProp.set_simulation_name('anisotropic_toughness_jump')
simulProp.symmetric = True  # set the fracture to symmetric

# initializing fracture
gamma = (K1c_func(np.pi / 2) / K1c_func(0))**2  # gamma = (Kc1/Kc3)**2
Fr_geometry = Geometry('elliptical', minor_axis=15., gamma=gamma)
init_param = InitializationParameters(Fr_geometry, regime='E_K')

# creating fracture object
Fr = Fracture(Mesh, init_param, Solid, Fluid, Injection, simulProp)

# create a Controller
controller = Controller(Fr, Solid, Fluid, Injection, simulProp)

# run the simulation
controller.run()
Пример #5
0
                           K_Ic)

# injection parameters
Q0 = 0.01  # injection rate
Injection = InjectionProperties(Q0, Mesh)

# fluid properties
Fluid = FluidProperties(rheology='PLF',
                        n=0.6,
                        k=0.001 / 12)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 1e7                               # the time at which the simulation stops
simulProp.set_outputFolder("./Data/radial_PL")          # the disk address where the files are saved
simulProp.set_simulation_name('PLF_n0.6')               # setting simulation name
simulProp.tolFractFront = 0.003                         # increase the tolerance for faster run
simulProp.plotTSJump = 5                                # plot after every five time steps
simulProp.set_tipAsymptote('PLF')                       # setting the tip asymptote to power-law fluid

# initializing the fracture width with the solution provided by  Madyarova & Detournay 2004 for power-law fluids. 
w = np.zeros(Mesh.NumberOfElts)
xw = np.genfromtxt('width_n_05.csv', delimiter=',')         # loading dimensionless width profile for n = 0.5
t = 0.00005
n = Fluid.n
gamma = 0.7155
Mprime = 2**(n + 1) * (2 * n + 1)**n / n**n * Fluid.k
Vel = 2 * (n + 1) / (n + 2) / 3 * gamma * (Eprime * Q0 ** (n + 2) / Mprime
        ) ** (1 / (3 * n + 6)) / t ** ((n + 4) / (3 * n + 6))
eps = (Mprime / Eprime / t**n) ** (1 / (n + 2))
L = (Eprime * Q0**(n + 2) * t**(2 * n + 2) / Mprime) ** (1 / (3 * n + 6))
Пример #6
0
gamma = (
    K1c_func(np.pi / 2) / K1c_func(0) *
    TI_plain_strain_modulus(  # gamma = (Kc3/Kc1*E1/E3)**2
        0, Cij) / TI_plain_strain_modulus(np.pi / 2, Cij))**2

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 1000  # the time at which the simulation stops
simulProp.set_volumeControl(
    True)  # to set up the solver in volume control mode (inviscid fluid)
simulProp.tolFractFront = 4e-3  # increase tolerance for the anisotropic case
simulProp.frontAdvancing = "implicit"  # set the front advancing scheme to implicit
simulProp.set_tipAsymptote('K')  # set the tip asymptote to toughness dominated
simulProp.set_outputFolder(
    "./data/TI_elasticity_ellipse")  # setting the output folder
simulProp.set_simulation_name(
    'TI_ellasticy_benchmark')  # setting the simulation name
simulProp.TI_KernelExecPath = '../TI_Kernel/build/'  # path to the executable that calculates TI kernel
simulProp.symmetric = True  # solving with faster solver that assumes fracture is symmetric
simulProp.remeshFactor = 1.5  # the factor by which the domain is expanded

# initialization parameters
Fr_geometry = Geometry('elliptical', minor_axis=1, gamma=gamma)
init_param = InitializationParameters(Fr_geometry, regime='E_E')

# #  creating fracture object
Fr = Fracture(Mesh, init_param, Solid, Fluid, Injection, simulProp)

# create a Controller
controller = Controller(Fr, Solid, Fluid, Injection, simulProp)

#run the simulation
# fluid properties
viscosity = 1e-3
Fluid = FluidProperties(viscosity=viscosity)

# value of the trajectory parameter phi
phi = (2 * Cl)**4 * Eprime**11 * (12 * viscosity)**3 * Q0 / (
    (32 / np.pi)**(1 / 2) * K1c)**14

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 1e5  # the time at which the simulation stops
simulProp.saveTSJump, simulProp.plotTSJump = 5, 5  # save and plot after every 5 time steps
simulProp.set_outputFolder(
    "./Data/MtoK_leakoff")  # the disk address where the files are saved
simname = 'phi_001'
simulProp.set_simulation_name(simname)  # set the nime of the simulation
simulProp.frontAdvancing = 'explicit'  # setting up explicit front advancing
simulProp.plotVar = ['regime', 'w']

# initializing fracture
Fr_geometry = Geometry('radial')
init_param = InitializationParameters(Fr_geometry, regime='M', time=1e-3)

# creating fracture object
Fr = Fracture(Mesh, init_param, Solid, Fluid, Injection, simulProp)

# create a Controller
controller = Controller(Fr, Solid, Fluid, Injection, simulProp)

# run the simulation
controller.run()
Пример #8
0
Q0 = 0.005
Injection = InjectionProperties(Q0, Mesh)

# fluid properties
Fluid = FluidProperties(viscosity=0.75,
                        rheology='HBF',
                        compressibility=0,
                        n=0.6, k=0.75, T0=10.)


# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 38000                             # the time at which the simulation stops
simulProp.set_outputFolder("./Data/HB")                 # the disk address where the files are saved
simulProp.set_simulation_name('HB_Gauss_Chebyshev_comparison')  # setting simulation name
simulProp.saveG = True                                  # enable saving the coefficient G
simulProp.plotVar = ['w', 'G']                          # plot width of fracture
simulProp.saveEffVisc = True                            # enable saving of the effective viscosity
simulProp.relaxation_factor = 0.3                       # relax Anderson iteration
simulProp.maxSolverItrs = 200                           # set maximum number of Anderson iterations to 200
simulProp.collectPerfData = True                        # enable collect performance data
simulProp.tolFractFront = 3e-3                          # increasing fracture front iteration tolerance
simulProp.plotTSJump = 5                                # plotting after every five time steps
simulProp.tmStpPrefactor = 0.6                          # reducing time steps for better convergence
simulProp.Anderson_parameter = 10                       # saving last 10 solutions for better performance

# initializing the fracture width with the solution provided by  Madyarova & Detournay 2004 for power-law fluids.
w = np.zeros(Mesh.NumberOfElts)
xw = np.genfromtxt('width_n_05.csv', delimiter=',')     # loading dimensionless width profile for n = 0.5
t = 2e-2