A computer-implemented method for simulating a downhole fracture network, the method comprising: receiving input data defining parameters of one or more fractures in the fracture network; determining a first triangle mesh size for the fractures based on the input data; determining a second triangle mesh size for the fractures based on the input data, wherein the second triangle mesh size is smaller than the first triangle mesh size; simulating the fracture network using the first and second triangle mesh sizes, wherein determining the first and second triangle mesh sizes comprises: selecting a fracture to be simulated; calculating a maximum strike and dip length (L 1) for the selected fracture; determining a minimum fracture length (FL min) for a fracture set containing the selected fracture; calculating a number of orbits (N ORBITS) based on the minimum fracture length and the maximum strike and dip length, wherein (216, 218) the calculated number of orbits is set to a maximum number of orbits if the calculated number of orbits is greater than the maximum number of orbits; determining the first and second triangle mesh sizes based upon the number of orbits; and propagating the selected fracture using the number of orbits and one of the first and second triangle mesh sizes; and conducting a fracture operation based upon the simulated fracture network. receiving input data defining parameters of one or more fractures in the fracture network; determining a first triangle mesh size for the fractures based on the input data; determining a second triangle mesh size for the fractures based on the input data, wherein the second triangle mesh size is smaller than the first triangle mesh size; simulating the fracture network using the first and second triangle mesh sizes, wherein determining the first and second triangle mesh sizes comprises: selecting a fracture to be simulated; calculating a maximum strike and dip length (L 1) for the selected fracture; determining a minimum fracture length (FL min) for a fracture set containing the selected fracture; calculating a number of orbits (N ORBITS) based on the minimum fracture length and the maximum strike and dip length, wherein (216, 218) the calculated number of orbits is set to a maximum number of orbits if the calculated number of orbits is greater than the maximum number of orbits; determining the first and second triangle mesh sizes based upon the number of orbits; and propagating the selected fracture using the number of orbits and one of the first and second triangle mesh sizes; and selecting a fracture to be simulated; calculating a maximum strike and dip length (L 1) for the selected fracture; determining a minimum fracture length (FL min) for a fracture set containing the selected fracture; calculating a number of orbits (N ORBITS) based on the minimum fracture length and the maximum strike and dip length, wherein (216, 218) the calculated number of orbits is set to a maximum number of orbits if the calculated number of orbits is greater than the maximum number of orbits; determining the first and second triangle mesh sizes based upon the number of orbits; and propagating the selected fracture using the number of orbits and one of the first and second triangle mesh sizes; and conducting a fracture operation based upon the simulated fracture network.