Exemplo n.º 1
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
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)

# run the simulation
# 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']

# setting up mesh extension options
simulProp.meshExtensionAllDir = True
simulProp.maxElementIn = 10000
simulProp.set_mesh_extension_factor(1.1)
simulProp.set_mesh_extension_direction(['all'])
Exemplo n.º 4
0
# 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
controller = Controller(Fr, Solid, Fluid, Injection, simulProp)

# run the simulation
controller.run()
Exemplo n.º 5
0
# 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
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)
Exemplo n.º 6
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)

# run the simulation