# material properties
Solid = MaterialProperties(Mesh,
                           Eprime,
                           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
Beispiel #2
0
nu = 0.4  # Poisson's ratio
youngs_mod = 3.3e10  # Young's modulus
Eprime = youngs_mod / (1 - nu**2)  # plain strain modulus
K_Ic = 1e6  # fracture toughness

Solid = MaterialProperties(Mesh, Eprime, K_Ic)

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

# fluid properties
Fluid = FluidProperties(viscosity=0)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 1e2  # the time at which the simulation stops
simulProp.set_tipAsymptote(
    'K'
)  # the tip asymptote is evaluated with the toughness dominated assumption
simulProp.set_volumeControl(
    True
)  # use the inviscid fluid solver(toughness dominated), imposing volume balance
simulProp.set_outputFolder(
    "./Data/K_radial_symmetric")  # the disk address where the files are saved
simulProp.symmetric = True  # assume fracture geometry to be symmetric (only available for volume control)

# initializing fracture
Fr_geometry = Geometry('radial', radius=0.15)
init_param = InitializationParameters(Fr_geometry, regime='K')
Beispiel #3
0
# material properties
Solid = MaterialProperties(Mesh,
                           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
Beispiel #4
0
Solid = MaterialProperties(Mesh,
                            Eprime,
                            K_Ic)

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.

Solid = MaterialProperties(Mesh,
                           Eprime,
                           anisotropic_K1c=True,
                           K1c_func=K1c_func)

# injection parameters
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')
Beispiel #6
0
        point.
    """
    tolerance = 2.
    # the condition
    return abs(x) < 75 and (y >= -75. - tolerance and y <= -75. + tolerance)


# injection parameters
Q0 = 0.001  # injection rate
Injection = InjectionProperties(Q0, Mesh, source_loc_func=source_location)

# fluid properties
Fluid = FluidProperties(viscosity=1.1e-3, density=1000)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 1.1e4  # the time at which the simulation stops
simulProp.set_outputFolder(
    "./Data/buoyant_line_source")  # the disk address where the files are saved
simulProp.gravity = True  # take the effect of gravity into account
simulProp.set_mesh_extension_direction(['top'])
simulProp.plotVar = ['w', 'regime']
simulProp.toleranceEHL = 1e-3

# initializing fracture
surv_cells, _, inner_cells = get_eliptical_survey_cells(Mesh,
                                                        80,
                                                        20,
                                                        center=[0.0, -75.0])
surv_cells_dist = surv_cells * 0 + (Mesh.hx**2 + Mesh.hy**2)**(1 / 2)
Fr_geometry = Geometry(shape='level set',
Beispiel #7
0
def source_location(x, y):
    """ This function is used to evaluate if a point is included in source, i.e. the fluid is injected at the given
        point.
    """
    # the condition
    return abs(x) < 75. and (y > -80. and y < -74)

# injection parameters
Q0 = 0.001  # injection rate
Injection = InjectionProperties(Q0, Mesh, source_loc_func=source_location)

# fluid properties
Fluid = FluidProperties(viscosity=1.1e-3, density=1000)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 6000              # the time at which the simulation stops
simulProp.set_outputFolder("./Data/M_radial_explicit") # the disk address where the files are saved
simulProp.gravity = True                # take the effect of gravity into account

# initialization parameters
Fr_geometry = Geometry(shape='height contained',
                       fracture_length=80,
                       fracture_height=35)
init_param = InitializationParameters(Fr_geometry, regime='PKN')

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

Solid = MaterialProperties(Mesh,
                           Eprime,
                           anisotropic_K1c=True,
                           K1c_func=K1c_func)

# 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
Beispiel #9
0
# material properties
Solid = MaterialProperties(Mesh,
                           Eprime,
                           toughness=6.5e6,
                           confining_stress_func=sigmaO_func,
                           minimum_width=1e-5)

# injection parameters
Q0 = np.asarray([[0.0, 500], [2000, 0]])  # injection rate
Injection = InjectionProperties(Q0, Mesh, source_coordinates=[0, -1400])

# fluid properties
Fluid = FluidProperties(viscosity=30, density=2400)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 560000  # the time at which the simulation stops
simulProp.set_outputFolder(
    "./Data/neutral_buoyancy")  # the disk address where the files are saved
simulProp.gravity = True  # set up the gravity flag
simulProp.tolFractFront = 3e-3  # increase the tolerance for fracture front iteration
simulProp.plotTSJump = 4  # plot every fourth time step
simulProp.saveTSJump = 2  # save every second time step
simulProp.maxSolverItrs = 200  # increase the Picard iteration limit for the elastohydrodynamic solver
simulProp.tmStpPrefactor = np.asarray([[0, 80000], [0.3, 0.1]
                                       ])  # set up the time step prefactor
simulProp.timeStepLimit = 5000  # time step limit
simulProp.plotVar = ['w',
                     'v']  # plot fracture width and fracture front velocity

# initializing a static fracture
# injection parameters
Q0 = 0.001  # injection rate
Injection = InjectionProperties(Q0, Mesh)

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

# aspect ratio of the elliptical fracture
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
Beispiel #11
0
# material properties
Solid = MaterialProperties(Mesh,
                           Eprime,
                           toughness=2.5e6,
                           confining_stress_func=sigmaO_func,
                           minimum_width=1e-5)

# injection parameters
Q0 = np.asarray([[0.0, 50], [50, 0]])  # injection rate
Injection = InjectionProperties(Q0, Mesh, source_coordinates=[0, -1000])

# fluid properties
Fluid = FluidProperties(viscosity=50, density=2650)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 56000000000
#simulProp.frontAdvancing = 'implicit'  # the time at which the simulation stops
simulProp.set_outputFolder(
    "./Data/neutral_buoyancy")  # the disk address where the files are saved
simulProp.gravity = True  # set up the gravity flag
simulProp.tolFractFront = 3e-3  # increase the tolerance for fracture front iteration
simulProp.plotTSJump = 5  # plot every fourth time step
simulProp.saveTSJump = 2  # save every second time step
simulProp.maxSolverItrs = 500  # increase the Picard iteration limit for the elastohydrodynamic solver
#simulProp.tmStpPrefactor = np.asarray([[0, 80000], [0.3, 0.1]]) # set up the time step prefactor
#simulProp.timeStepLimit = 500             # time step limit
simulProp.plotVar = ['w']  # plot fracture width and fracture front velocity
#simulProp.blockFigure = True
#simulProp.saveToDisk = False
Beispiel #12
0
K1c = 0  # Zero toughness case

# material properties
Solid = MaterialProperties(Mesh, Eprime, K1c)

# injection parameters
Q0 = np.asarray([[0.0, 50], [0.01, 0]])  # injection rate

Injection = InjectionProperties(Q0, Mesh)

# fluid properties
viscosity = 0.001
Fluid = FluidProperties(viscosity=viscosity)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 5e6  # the time at which the simulation stops
simulProp.saveTSJump, simulProp.plotTSJump = 3, 3  # save and plot after every 5 time steps
simulProp.set_outputFolder(
    "./Data/Pulse")  # the disk address where the files are saved

# initializing fracture
Fr_geometry = Geometry('radial')
init_param = InitializationParameters(Fr_geometry, regime='M', time=0.05)

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

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

Solid = MaterialProperties(Mesh,
                           Eprime,
                           K_Ic,
                           confining_stress_func=sigmaO_func)

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

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

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 145.  # the time at which the simulation stops
simulProp.bckColor = 'sigma0'  # setting the parameter according to which the mesh is colored
simulProp.set_outputFolder(
    "./Data/height_contained")  # set the directory to save the simulation
simulProp.tmStpPrefactor = 1.0  # decreasing the size of time step
simulProp.plotVar = ['footprint']  # plotting footprint
simulProp.set_mesh_extension_direction(
    ['horizontal'])  # allow the mesh to extend horizontally
simulProp.set_mesh_extension_factor(1.35)  # setting the mesh extension factor
simulProp.useBlockToeplizCompression = True  # use the Toepliz elasticity to save memory

# initializing fracture
Fr_geometry = Geometry(shape='radial', radius=1.)
init_param = InitializationParameters(Fr_geometry, regime='M')
youngs_mod = 3.3e10  # Young's modulus
Eprime = youngs_mod / (1 - nu**2)  # plain strain modulus
K_Ic = 0.5  # fracture toughness

# material properties
Solid = MaterialProperties(Mesh, Eprime, K_Ic)

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

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

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 1e5  # the time at which the simulation stops
simulProp.frontAdvancing = 'explicit'  # to set explicit front tracking
simulProp.saveTSJump, simulProp.plotTSJump = 5, 5  # save and plot after every five time steps
simulProp.set_outputFolder(
    "./Data/M_radial_explicit")  # the disk address where the files are saved

# initialization parameters
Fr_geometry = Geometry('radial', radius=0.1)
init_param = InitializationParameters(Fr_geometry, regime='M')

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

# create a Controller
controller = Controller(Fr, Solid, Fluid, Injection, simulProp)
Beispiel #15
0
Solid = MaterialProperties(Mesh,
                           Eprime,
                           K1c_func=My_KIc_func,
                           confining_stress_func=sigmaO_func,
                           minimum_width=1e-8)


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

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

# simulation properties
simulProp = SimulationProperties()
simulProp.bckColor = 'sigma0'
simulProp.finalTime = 0.28                          # the time at which the simulation stops
simulProp.outputTimePeriod = 1e-4                    # to save after every time step
simulProp.tmStpPrefactor = 0.5                       # decrease the pre-factor due to explicit front tracking
simulProp.set_outputFolder("./Data/stress_heterogeneities") # the disk address where the files are saved
simulProp.saveFluidFluxAsVector = True
simulProp.plotVar = ['ffvf']
simulProp.projMethod = 'LS_continousfront' # <--- mandatory use
simulProp.saveToDisk = True
simulProp.set_mesh_extension_factor(1.1)
simulProp.set_mesh_extension_direction(['all'])
simulProp.useBlockToeplizCompression = True

# initialization parameters
Fr_geometry = Geometry('radial', radius=0.12)
Solid = MaterialProperties(Mesh,
                           Eprime,
                           K1c,
                           Carters_coef=Cl,
                           minimum_width=1e-12)

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

# fluid properties
viscosity = 0.001 / 12  # mu' =0.001
Fluid = FluidProperties(viscosity=viscosity)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 3e7  # the time at which the simulation stops
simulProp.saveTSJump, simulProp.plotTSJump = 3, 5  # save and plot after every 5 time steps
simulProp.set_outputFolder(
    "./Data/MtoMt_FO")  # the disk address where the files are saved
simulProp.plotVar = ['w', 'regime']

# initializing fracture
Fr_geometry = Geometry('radial')
init_param = InitializationParameters(Fr_geometry, regime='M', time=50)

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

# create a Controller
controller = Controller(Fr, Solid, Fluid, Injection, simulProp)
# material properties
Solid = MaterialProperties(Mesh,
                           Eprime,
                           toughness=K_Ic,
                           confining_stress_func=sigmaO_func,
                           Carters_coef=1e-6)

# injection parameters
Q0 = np.asarray([[0, 6000], [0.001, 0]])
Injection = InjectionProperties(Q0, Mesh, source_coordinates=[0, -20])

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

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 1.6e4  # the time at which the simulation stops
simulProp.set_outputFolder(
    "./Data/fracture_closure")  # the disk address where the files are saved
simulProp.bckColor = 'confining stress'  # setting the parameter for the mesh color coding
simulProp.plotTSJump = 4  # set to plot every four time steps
simulProp.plotVar = ['w', 'lk', 'footprint'
                     ]  # setting the parameters that will be plotted
simulProp.tmStpPrefactor = np.asarray(
    [[0, 6000], [0.8, 0.4]])  # decreasing the time step pre-factor after 6000s
simulProp.maxSolverItrs = 120  # increase maximum iterations for the elastohydrodynamic solver

# initialization parameters
Fr_geometry = Geometry('radial', radius=20)
init_param = InitializationParameters(Fr_geometry, regime='M')
        return 1e6

Solid = MaterialProperties(Mesh,
                           Eprime,
                           K_Ic,
                           confining_stress_func=sigmaO_func)

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

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

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 145.              # the time at which the simulation stops
simulProp.bckColor = 'sigma0'           # setting the parameter according to which the mesh is color coded
simulProp.set_outputFolder("./Data/height_contained")
simulProp.tmStpPrefactor = 1.0          # decreasing the size of time step
simulProp.plotVar = ['footprint']       # plotting footprint

# initializing fracture
Fr_geometry = Geometry(shape='radial', radius=1.)
init_param = InitializationParameters(Fr_geometry, regime='M')

# creating fracture object
Fr = Fracture(Mesh,
              init_param,
              Solid,
              Fluid,
Beispiel #19
0
K1c = 5e5 / (32 / np.pi)**0.5  # K' = 5e5
Cl = 0.5e-6  # Carter's leak off coefficient

# material properties
Solid = MaterialProperties(Mesh, Eprime, K1c, Carters_coef=Cl)

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

# fluid properties
viscosity = 0.001 / 12  # mu' =0.001
Fluid = FluidProperties(viscosity=viscosity)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 1e7  # 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
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=0.5)

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

# create a Controller
Beispiel #20
0
    def run_radial_simul(self, my_front_reconstruction, my_front_advancement,
                         my_vertex_or_path, my_param):
        # setting up the verbosity level of the log at console
        # setup_logging_to_console(verbosity_level='error')

        outputfolder = "./Temp_Data/" + my_vertex_or_path + "_radial_" + my_front_advancement + "_" + my_front_reconstruction
        self.remove(outputfolder)

        # creating mesh
        Mesh = CartesianMesh(my_param['Lx'], my_param['Ly'], my_param['Nx'],
                             my_param['Ny'])

        # solid properties
        nu = my_param['nu']  # Poisson's ratio
        youngs_mod = my_param['youngs_mod']  # Young's modulus
        Eprime = youngs_mod / (1 - nu**2)  # plain strain modulus
        K_Ic = my_param['K_Ic']  # fracture toughness
        Cl = my_param['Cl']  # Carter's leak off coefficient

        # material properties
        Solid = MaterialProperties(Mesh, Eprime, K_Ic, Carters_coef=Cl)

        # injection parameters
        Q0 = my_param['Q0']  # injection rate
        Injection = InjectionProperties(Q0, Mesh)

        # fluid properties
        Fluid = FluidProperties(viscosity=my_param['viscosity'])

        # simulation properties
        simulProp = SimulationProperties()
        simulProp.finalTime = my_param[
            'finalTime']  # the time at which the simulation stops
        simulProp.set_tipAsymptote(
            my_vertex_or_path
        )  # tip asymptote is evaluated with the viscosity dominated assumption
        simulProp.frontAdvancing = my_front_advancement  # to set explicit front tracking
        simulProp.plotFigure = False
        simulProp.set_solTimeSeries(np.asarray([2, 200, 5000, 30000, 100000]))
        simulProp.saveTSJump, simulProp.plotTSJump = 5, 5  # save and plot after every five time steps
        simulProp.set_outputFolder(outputfolder)
        simulProp.projMethod = my_front_reconstruction
        simulProp.log2file = False

        # initialization parameters
        Fr_geometry = Geometry('radial', radius=my_param['initialR'])
        init_param = InitializationParameters(Fr_geometry,
                                              regime=my_vertex_or_path)

        # 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
        exitcode = controller.run()
        return exitcode, outputfolder
# material properties
Solid = MaterialProperties(Mesh,
                           Eprime,
                           toughness=6.5e6,
                           confining_stress_func=sigmaO_func,
                           minimum_width=1e-5)

# injection parameters
Q0 = np.asarray([[0.0, 500], [2000, 0]])  # injection rate
Injection = InjectionProperties(Q0, Mesh)

# fluid properties
Fluid = FluidProperties(viscosity=30, density=2400)

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 560000  # the time at which the simulation stops
simulProp.set_outputFolder(
    "./Data/neutral_buoyancy")  # the disk address where the files are saved
simulProp.gravity = True  # set up the gravity flag
simulProp.tolFractFront = 3e-3  # increase the tolerance for fracture
# front iteration
simulProp.plotTSJump = 4  # plot every fourth time step
simulProp.saveTSJump = 2  # save every second time step
simulProp.maxSolverItrs = 200  # increase the Anderson iteration limit for the
# elastohydrodynamic solver
simulProp.tmStpPrefactor = np.asarray([[0, 80000], [0.5, 0.1]
                                       ])  # set up the time step prefactor
simulProp.timeStepLimit = 5000  # time step limit
simulProp.plotVar = ['w',
                     'v']  # plot fracture width and fracture front velocity
    il_volume=1e-3,
    perforation_friction=0,
    initial_pressure=np.nan
)  # the initial pressure in injection line is set below

# 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

Solid = MaterialProperties(Mesh,
                           Eprime,
                           K1c_func=My_KIc_func,
                           minimum_width=1e-8)

# injection parameters
Q0 = 0.05  # injection rate
Injection = InjectionProperties(Q0, Mesh, source_coordinates=[0.1, 0.])

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

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 0.0003  # the time at which the simulation stops
myfolder = "./Data/toughness_jump_3p6"
simulProp.set_outputFolder(
    myfolder)  # the disk address where the files are saved
simulProp.projMethod = 'LS_continousfront'
simulProp.frontAdvancing = 'implicit'
simulProp.useBlockToeplizCompression = True
simulProp.saveToDisk = False
simulProp.bckColor = 'K1c'
simulProp.saveFluidVelAsVector = True

# To decide what you will see when you print:
#simulProp.plotVar = ['ffvf','regime']
#simulProp.plotVar = ['footprint','regime']
#simulProp.plotVar = ['footprint']
Beispiel #24
0
youngs_mod = 3.3e10  # Young's modulus
Eprime = youngs_mod / (1 - nu**2)  # plain strain modulus
K_Ic = 1e7  # fracture toughness

Solid = MaterialProperties(Mesh, Eprime, K_Ic, minimum_width=1e-9)

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

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

# simulation properties
simulProp = SimulationProperties()
simulProp.finalTime = 50  # the time at which the simulation stops
simulProp.set_outputFolder("./Data/star")  # the address of the output folder
simulProp.plotTSJump = 4

# initializing fracture
from fracture_initialization import get_radial_survey_cells
initRad = np.pi
surv_cells, _, inner_cells = get_radial_survey_cells(Mesh, initRad)
surv_cells_dist = np.cos(Mesh.CenterCoor[surv_cells, 0]) + 2.5 - abs(
    Mesh.CenterCoor[surv_cells, 1])
Fr_geometry = Geometry(shape='level set',
                       survey_cells=surv_cells,
                       tip_distances=surv_cells_dist,
                       inner_cells=inner_cells)
Beispiel #25
0

Solid = MaterialProperties(Mesh,
                           Eprime,
                           confining_stress_func=sigmaO_func,
                           minimum_width=1e-8)

# injection parameters
Q0 = np.asarray([[0, 31, 151], [0.0009e-6, 0.0065e-6, 0.0023e-6]])
Injection = InjectionProperties(Q0, Mesh)

# fluid properties
Fluid = FluidProperties(viscosity=30)

# simulation properties
simulProp = SimulationProperties()
simulProp.bckColor = 'confining stress'  # the parameter according to which the background is color coded
simulProp.frontAdvancing = 'explicit'
simulProp.set_outputFolder('./Data/Wu_et_al')
simulProp.set_solTimeSeries(np.asarray([22., 60., 144., 376., 665.]))
simulProp.plotVar = ['footprint']

# initializing fracture
Fr_geometry = Geometry('radial', radius=0.019)
init_param = InitializationParameters(Fr_geometry, regime='M')

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

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