porepy.numerics.displacement_correlation module

Estimation of stress intensity factors using the displacement correlation method, see e.g.

Nejati et al. On the use of quarter-point tetrahedral finite elements in linear elastic fracture mechanics Engineering Fracture Mechanics 144 (2015) 194–221

At present, some unnecessary quantities are computed (and passed around). This is (at least partly) for purposes of investigation of the method.

determine_onset(sifs, critical_values)[source]

For the time being, very crude criterion: K_I > K_I,cricial. TODO: Extend to equivalent SIF, taking all three modes into account.

Parameters
  • sifs (array) – stress intensity factors.

  • critical_values (array) – critical SIF values to which the above are

  • compared.

Returns

bool indicating which sifs meet the

criterion.

Return type

exceed_critical (array)

estimate_rm(sd, **kw)[source]

Estimate the optimal distance between tip face centers and correlation points. Based on the findings in Nejati et al. (see displacement_correlation), where a optimum is found related to local cell size.

Parameters

grid. (g - fracture) –

Returns

rm - distance estimate.

faces_to_open(mdg, u, critical_sifs, **kw)[source]

Determine where a fracture should propagate based on the displacement solution u using the displacement correlation technique. :param mdg: mixed-dimensional grid. For now, contains one higher-dimensional (2D or 3D)

grid and one lower-dimensional fracture, to be referred to as g_h and g_l, respectively. Note that the data corresponding to d_h should contain the Young’s modulus and Poisson’s ratio, both assumed (for now) to be constant.

Parameters
  • u (array) –

    solution as computed by FracturedMpsa. One displacement vector for each cell center in g_h and one for each of the fracture faces. The ordering for a 2D g_h with four cells and four fracture faces (two on each side of two g_l fracture cells) is

    [u(c0), v(c0), u(c1), v(c1), u(c2), v(c2), u(c3), v(c3),

    u(f0), v(f0), u(f1), v(f1), u(f2), v(f2), u(f3), v(f3)]

    Here, f0 and f1 are the “left” faces, the original faces before splitting of the grid, found in g_h.frac_pairs[0]. f2 and f3 are the “right” faces, the faces added by the splitting, found in g_h.frac_pairs[1].

  • critical_sifs (array) – the stress intensity factors at which the fracture yields, one per mode (i.e., we assume this rock parameter to be homogeneous for now)

  • kw

    optional keyword arguments, to be explored. For now: rm (float): optimal distance from tip faces to correlation points.

    If not provided, an educated guess is made by estimate_rm().

    use_normal_rm_distance (bool) - if True, the distance from

    correlation point to tip face is used instead of the distance between the correlation point and the tip face centroid. These may differ for 2d fractures.

  • mdg (MixedDimensionalGrid) –

Returns

list (one entry for each fracture subdomain) of (possibly empty)

arrays of higher-dimensional faces to be split.

sifs: list (one entry for each g_l) of the calculated stress intensity

factors for each of the lower-dimensional tip faces. Axes for listed arrays: mode, tip face.

Return type

faces_nd_to_open

identify_correlation_points(sd_primary, sd_secondary, rm, u, face_cells)[source]

Get the relative displacement for displacement correlation SIF computation. For each tip face of the fracture, the displacements are evaluated on the two fracture walls, on the (higher-dimensional) face midpoints closest to a point p. p is defined as the point lying a distance rm away from the (lower-dimensional) face midpoint in the direction normal to the fracture boundary. TODO: Account for sign (in local coordinates), to ensure positive relative displacement for fracture opening.

Parameters
  • sd_primary – higher-dimensional grid

  • sd_secondary – lower-dimensional grid

  • rm (float) – optimal distance from fracture front to correlation point.

  • u (array) – displacement solution.

  • face_cells (array) – face_cells of the grid pair.

Returns

Lower-dimensional cells containing the correlation

point (as its cell center).

faces_secondary (array): The tip faces, for which the SIFs are to be estimated. rm_vectors (array): Vector between centers of cells_secondary and faces_secondary. actual_rm (array): Length of the above. normal_rm (array): Distance between the cell center and the fracture

front (defined by the face of the fracture tip). Will differ from actual_rm if rm_vectors are non-orthogonal to the tip faces (in 2d fractures).

Return type

cells_secondary (array)

identify_faces_to_open(sd_primary, sd_secondary, tips_to_propagate, rm_vectors)[source]

Identify the faces to open. For now, just pick out the face lying immediately outside the existing fracture tip faces which we wish to propagate (as close to the fracture plane as possible). TODO: Include angle computation.

Parameters
  • sd_primary – higher-dimensional grid

  • sd_secondary – lower-dimensional grid

  • tips_to_propagate (boolean array) – Whether or not to propagate the fracture at each of the tip faces.

  • rm_vectors (array) – Vectors pointing away from the fracture tip, lying in the fracture plane.

Returns

The higher-dimensional faces which should be opened.

Return type

faces_primary (array)

relative_displacements(u, face_cells, sd_secondary, cells_secondary, faces_secondary, sd_primary)[source]

Compute the relative displacements between the higher-dimensional faces on either side of each correlation point.

Parameters
  • u (array) – displacements on the higher-dimensional grid, as computed by FracturedMpsa, g_h.dim x (g_h.num_cells + g_l.num_cells * 2), see e.g. displacement_correlation for description.

  • face_cells (array) – the face_cells connectivity matrix corresponding to g_l

  • g_h. (and) –

  • sd_primary – and …

  • sd_secondary – higher- and lower-dimensional grid.

  • cells_secondary (array) – the lower-dimensional cells containing the correlation points as their cell centers.

  • faces_secondary (array) – the tip faces of the lower dimension, where propagation may occur.

Returns

the relative displacements, g_h.dim x n_tips.

Return type

delta_u (array)

sif_from_delta_u(d_u, rm, mu, kappa)[source]

Compute the stress intensity factors from the relative displacements

Parameters
  • d_u (array) – relative displacements, g_h.dim x n.

  • rm (array) – distance from correlation point to fracture tip.

Returns

the displacement correlation stress intensity factor estimates.

Return type

sifs (array)