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
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)) # interpolating width on cell centers
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) init_param = InitializationParameters(Fr_geometry, regime='M') # creating fracture object Fr = Fracture(Mesh, init_param, Solid, Fluid,
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'] # setting up mesh extension options simulProp.meshExtensionAllDir = True simulProp.maxElementIn = 10000 simulProp.set_mesh_extension_factor(1.1)
# 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 simulProp.projMethod = 'ILSA_orig' simulProp.set_tipAsymptote('U') # 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)