Discrete Fracture Network (DFN) User Guide
This guide covers the Discrete Fracture Network (DFN) modeling capabilities in VRGS, including generation, visualization, analysis, and export features.
Overview
A Discrete Fracture Network (DFN) is a stochastic representation of fracture systems in rock masses. VRGS allows you to:
- Generate statistically-controlled fracture networks
- Visualize fractures with various rendering modes
- Compute fracture intersections and connectivity
- Analyze fracture networks using graph theory
- Model fracture propagation
- Create cross-sections through the network
- Filter fractures by proximity to outcrops
Creating a DFN
From the Ribbon
- Navigate to Interpretation tab
- Click DFN in the Fractures group
- Select New DFN to create an empty network
Setting the Domain
The DFN domain defines the 3D bounding box where fractures will be generated:
- Right-click on the DFN in the project tree
- Select Properties
- Set the domain bounds (min/max X, Y, Z coordinates)
Alternatively, the domain can be automatically set from visible data extents.
Fracture Sets
A DFN consists of one or more fracture sets, each with distinct statistical properties.
Adding a Fracture Set
- Right-click on the DFN in the project tree
- Select Add Fracture Set
Fracture Set Parameters
Each fracture set is controlled by the following parameters:
Orientation (Fisher Distribution)
| Parameter | Description |
|---|---|
| Mean Dip | Average dip angle (0-90 degrees from horizontal) |
| Mean Azimuth | Average dip direction (0-360 degrees, 0=North) |
| Kappa | Fisher concentration parameter. Higher values = tighter clustering around mean |
- Kappa = 0: Uniform random orientations
- Kappa = 10-20: Moderate clustering
- Kappa = 50+: Tight clustering around mean
Size Distribution
| Parameter | Description |
|---|---|
| Size Distribution | Uniform, Power Law, or Log-Normal |
| Min Size | Minimum fracture radius |
| Max Size | Maximum fracture radius |
| Power Law Exponent | For power law distribution (typically 2.0-3.5) |
Intensity (P32)
| Parameter | Description |
|---|---|
| P32 Intensity | Fracture area per unit volume (m²/m³) |
P32 is the most robust intensity measure as it is scale-independent.
Generating the Network
- Right-click on the DFN
- Select Generate Network
Or use the Regenerate button in the properties panel.
Options:
- Use Fixed Seed: Enable reproducible generation with a specific random seed
- Seed Value: The random seed to use (only when fixed seed is enabled)
Visualization
Render Modes
Access via DFN properties or right-click menu:
| Mode | Description |
|---|---|
| Fracture Disks | Filled fracture polygons |
| Fracture Outlines | Polygon edges only |
| Color by Set | Each fracture set has a distinct color |
| Color by Property | Color by fracture attribute |
Visibility Options
- Show Fractures: Toggle fracture polygon visibility
- Show Intersection Lines: Display fracture-fracture intersections
- Show Graph Nodes: Display connectivity graph nodes as spheres
- Show Connections as Cylinders: Render graph edges as 3D cylinders
Appearance Settings
- Node Size: Size of graph node spheres
- Node Color: Color of graph nodes
- Connection Line Width: Thickness of connection cylinders
- Connection Line Color: Color of connection lines
Intersection Analysis
Fracture-Fracture Intersections
Compute where fractures intersect each other:
- Right-click on the DFN
- Select Generate Intersection Lines
This creates line segments at all fracture-fracture intersections, which can be:
- Visualized as lines
- Used to build the connectivity graph
- Exported as polylines
Mesh Intersections
Compute where fractures intersect mesh surfaces (e.g., outcrop models):
- Ensure the target mesh(es) are visible
- Right-click on the DFN
- Select Generate Mesh Intersections
This creates polylines representing the fracture traces on the mesh surface. Each fracture's intersection segments are automatically merged into continuous polylines.
Simplify Intersections
Merge collinear segments from the same fracture pair:
- Right-click on the DFN
- Select Simplify Intersection Segments
Connectivity Graph
The fracture graph represents network topology using nodes (intersection points) and edges (fracture segments between intersections).
Building the Graph
- First generate intersection lines
- Right-click on the DFN
- Select Build Fracture Graph
Graph Visualization
- Enable Show Graph Nodes to see intersection points
- Enable Show Connections as Cylinders to see edges
- Adjust node size and colors in properties
Graph Analysis
The graph provides:
- Connected component identification
- Path finding between fractures
- Node degree analysis (I, Y, X nodes)
- Branch length statistics
Fracture Propagation
VRGS includes a stress-controlled fracture propagation model that extends fracture tips.
Propagation Parameters
| Parameter | Description |
|---|---|
| Step Length | Distance each tip advances per step |
| Max Total Length | Maximum length a fracture can grow |
| Max Steps | Maximum propagation iterations |
| Abutting Distance | Distance at which tips terminate against other fractures |
| Abutting Probability | Probability of termination when within abutting distance |
| Stress Shadow Distance | Zone of influence around existing fractures |
| Stress Shadow Angle | Deflection angle in stress shadow zones |
| Direction Noise | Random variation in growth direction (degrees) |
Stress Tensor
The propagation direction is influenced by the regional stress field:
- Sigma1: Maximum principal stress direction
- Sigma2: Intermediate principal stress
- Sigma3: Minimum principal stress (fractures propagate perpendicular to this)
Running Propagation
- Right-click on the DFN
- Select Initialize Propagation (with default or custom config)
- Either:
- Propagate Step: Single iteration
- Propagate to Completion: Run until all tips terminate
Slicers (Cross-Sections)
Create 2D cross-sections through the DFN to visualize fracture traces on orthogonal planes.
Enabling Slicers
In the DFN properties panel:
- Enable X Axis Slicer, Y Axis Slicer, or Z Axis Slicer
- Adjust the slider position (0-100% of domain extent)
Slicer Display
When a slicer is active:
- Fracture disks are hidden
- Intersection lines with the slicer plane are displayed
- Line color and width can be customized
Multiple slicers can be active simultaneously.
Proximity Filtering
Filter fractures based on their distance to outcrop data (meshes or point clouds).
Enabling Proximity Filter
- In DFN properties, enable Proximity Filter
- Set Filter Distance (distance threshold in meters)
- Optionally enable Invert Filter to show only distant fractures
How It Works
- Distances are computed from fracture centroids to nearest visible mesh/point cloud
- A distance grid accelerates lookups for large datasets
- Filtering is performed in the GPU shader for smooth interaction
Attributes
DFN fractures support computed attributes for analysis and visualization.
Available Attributes
| Attribute | Description |
|---|---|
| Area | Fracture polygon area |
| Dip | Fracture dip angle |
| Azimuth | Fracture dip direction |
| Equivalent Radius | Radius of circle with same area |
| Aspect Ratio | Length/width ratio |
| Centroid X/Y/Z | Fracture center coordinates |
| Set Index | Which fracture set the fracture belongs to |
Generating Attributes
- Right-click on the DFN
- Select Generate Attribute > [Attribute Type]
Attributes can be used for:
- Color mapping
- Filtering
- Statistical analysis
- Export
Export Options
Export as Polylines
Export fracture outlines or intersection lines as polyline objects:
- Right-click on the DFN
- Select appropriate export option
Statistics Export
Export network statistics including:
- Fracture count per set
- P32 intensity
- Size distribution statistics
- Orientation statistics
Best Practices
For Realistic Networks
- Base parameters on field measurements when available
- Use multiple fracture sets to represent different deformation events
- Validate P32 intensity against borehole or scanline data
- Compare generated orientation distributions with stereonet data
For Performance
- Start with fewer fractures during parameter tuning
- Use proximity filtering to focus on relevant fractures
- Disable intersection line rendering when not needed
- Use outline mode for large networks
For Analysis
- Generate intersections before building the graph
- Use attributes for quantitative comparisons
- Export statistics for external analysis tools
Troubleshooting
No fractures generated
- Check that domain bounds are set correctly
- Verify P32 intensity is greater than 0
- Ensure at least one fracture set is defined
Slow intersection computation
- Reduce fracture count
- Ensure BVH is being built (automatic)
- Use proximity filtering to limit active fractures
Mesh intersections disconnected
- Segments from the same fracture are automatically merged
- If gaps exist, the mesh may have holes or the fracture doesn't fully intersect
Slicers not showing
- Ensure slicer is enabled AND position slider is moved
- Check that fractures exist within the slice plane
Advanced Statistical Analysis
VRGS includes advanced statistical tools for analyzing fracture data, based on techniques from the literature and FracPaQ.
Distribution Fitting
Fit statistical distributions to fracture size data using Maximum Likelihood Estimation (MLE) with Kolmogorov-Smirnov goodness-of-fit testing.
Supported Distributions
| Distribution | Parameters | Use Case |
|---|---|---|
| Power Law | α (exponent), x_min | Scale-invariant fracture lengths (most common) |
| Lognormal | μ, σ, x_min | Natural log-normal processes |
| Exponential | λ (rate), x_min | Constant spacing/fragmentation |
How It Works
- MLE Fitting: Parameters estimated by maximizing likelihood
- x_min Optimization: Lower bound automatically selected to minimize K-S statistic
- K-S Testing: Compares empirical vs theoretical CDF; p > 0.05 indicates acceptable fit
Power Law MLE
For power law P(x) ~ x^(-α):
α = 1 + n / Σ[ln(x_i / x_min)]
The finite-size correction is applied for small samples.
Interpretation
| p-value | Interpretation |
|---|---|
| > 0.10 | Good fit |
| 0.05 - 0.10 | Marginal fit |
| < 0.05 | Poor fit - distribution may not apply |
References
- Clauset et al. (2007) "Power-Law Distributions in Empirical Data"
- Newman (2006) "Power Laws, Pareto Distributions and Zipf's Law"
Stress Analysis
Analyze fracture slip and dilation tendency under a specified stress field.
Stress Parameters
| Parameter | Description |
|---|---|
| σ1 | Maximum principal stress (magnitude, plunge, trend) |
| σ2 | Intermediate principal stress |
| σ3 | Minimum principal stress |
| Pore Pressure | Effective stress modifier |
| Friction (μ) | Coefficient of friction for slip criterion |
| Cohesion (C0) | Cohesive strength |
Computed Attributes
| Attribute | Formula | Range | Description |
|---|---|---|---|
| Normal Stress (σn) | n·S·n | - | Stress normal to fracture |
| Shear Stress (τ) | √(σ1² + σ3² - σn²) | - | Shear stress on fracture plane |
| Slip Tendency (Ts) | τ / σn | 0-1 | Ratio of shear to normal stress |
| Dilation Tendency (Td) | (σ1 - σn) / (σ1 - σ3) | 0-1 | Tendency to dilate and conduct fluid |
| Fracture Susceptibility | τ - μ(σn - Pp) - C0 | - | Mohr-Coulomb failure criterion |
| Critically Stressed | - | bool | True if susceptibility > 0 |
Interpretation
- High Slip Tendency (Ts > 0.6): Fracture likely to slip under current stress
- High Dilation Tendency (Td > 0.6): Fracture likely open/conductive
- Critically Stressed: Fracture exceeds Mohr-Coulomb failure envelope
Applications
- Identify critically stressed faults for induced seismicity risk
- Predict hydraulically conductive fractures
- Assess reactivation potential under changing stress/pressure
Fabric Tensor Analysis
Quantify fracture network anisotropy using Oda's 2nd-rank fabric tensor (crack tensor).
Fabric Tensor (F2)
The tensor is computed as:
F2_ij = (1/V) * Σ[A_p * n_i * n_j]
Where:
- V = domain volume
- A_p = fracture area
- n = unit pole vector (normal to fracture)
Output Properties
| Property | Description |
|---|---|
| F2 Matrix | 3x3 symmetric tensor |
| Eigenvalues | Principal anisotropy magnitudes (λ1 ≥ λ2 ≥ λ3) |
| Eigenvectors | Principal anisotropy directions |
| Trace | λ1 + λ2 + λ3 (proxy for P32) |
| Anisotropy Ratio | λ1 / λ3 (1 = isotropic, higher = anisotropic) |
| Shape Factor | (λ1 - λ2) / (λ1 - λ3) (0 = prolate, 1 = oblate) |
Polar Form
For rose diagram overlay, the horizontal projection:
F2(θ) = F2_xx·cos²θ + 2·F2_xy·cosθ·sinθ + F2_yy·sin²θ
Interpretation
| Anisotropy Ratio | Interpretation |
|---|---|
| 1.0 - 1.5 | Nearly isotropic |
| 1.5 - 3.0 | Moderately anisotropic |
| 3.0 - 10.0 | Strongly anisotropic |
| > 10.0 | Highly anisotropic (single dominant set) |
Reference
- Oda (1982) "Fabric tensor for discontinuous geological materials"
Circular Statistics
Analyze orientation data accounting for the circular/periodic nature of angles.
Axial vs Vectorial Data
| Type | Range | Examples |
|---|---|---|
| Axial | 0-180° (headless) | Fracture strikes, lineation trends |
| Vectorial | 0-360° (directed) | Dip directions, current azimuths |
For axial data, angles are doubled before analysis and results halved.
Computed Statistics
| Statistic | Description |
|---|---|
| Mean Direction | Circular mean of angles |
| Resultant Length (R) | 0-1, measures concentration (0 = uniform, 1 = identical) |
| Circular Variance | 1 - R |
| Circular Std Dev | √(-2·ln(R)) |
| Concentration (κ) | Fisher/von Mises dispersion parameter |
Rose Diagrams
Rose diagrams display directional data in radial histograms:
| Option | Description |
|---|---|
| Bin Count | Number of angular bins (default 18 = 10° bins) |
| Equal Area | Radius ∝ √(count) for proper area representation |
| Symmetrical | Mirror data for axial display (0-180° → 0-360°) |
Uniformity Tests
| Test | Description |
|---|---|
| Rayleigh Test | Tests for unimodal concentration (R > critical) |
| Watson U² Test | Tests for non-uniform distribution on circle |
| Kuiper Test | Circular variant of K-S test |
p < 0.05 indicates statistically significant non-uniform distribution.
References
- Fisher (1993) "Statistical Analysis of Circular Data"
- Mardia & Jupp (2000) "Directional Statistics"
Attribute Reference (Extended)
Standard Attributes
| Attribute | Description |
|---|---|
| AREA | Fracture polygon area |
| DIP | Dip angle (0-90°) |
| AZIMUTH | Dip direction (0-360°) |
| EQUIVALENT_RADIUS | √(area/π) |
| ASPECT_RATIO | Length/width |
| CENTROID_X/Y/Z | Center coordinates |
| SET_INDEX | Fracture set ID |
Topology Attributes
| Attribute | Description |
|---|---|
| NODE_COUNT | Intersections on this fracture |
| BRANCH_COUNT | Graph edges on this fracture |
| I_NODE_COUNT | Isolated tips (degree 1) |
| Y_NODE_COUNT | Abutting nodes (degree 3) |
| X_NODE_COUNT | Crossing nodes (degree 4) |
Stress Attributes
| Attribute | Description |
|---|---|
| NORMAL_STRESS | σn on fracture plane |
| SHEAR_STRESS | τ on fracture plane |
| SLIP_TENDENCY | τ/σn ratio |
| DILATION_TENDENCY | (σ1-σn)/(σ1-σ3) |
| FRACTURE_SUSCEPTIBILITY | Mohr-Coulomb excess |
| CRITICALLY_STRESSED | Boolean failure flag |