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')

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

# create a Controller
controller = Controller(Fr, Solid, Fluid, Injection, simulProp)
# 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
controller.run()

####################