Fracture network characterization via deep generative model and Bayesian inversion
收藏资源简介:
This repository contains code and data for fracture network characterization using tracer test data, based on the CMAM (Covariance Matrix Adaptation Metropolis) algorithm integrated with a pre-trained WGAN-GP deep generative model. The workflow combines generative modeling, forward simulation via GEOS, and Bayesian-style inversion to infer fracture properties from observational data. Two cases are provided: a synthetic benchmark case and a real-field application at the Soultz-sous-Forêts geothermal site in France. Repository Structure SyntheticCase/ A hypothetical 2D case for validating the inversion methodology. Reference/: Input files for generating reference breakthrough curves and thermal simulation. TracerTransport/: Base XML files for inert and sorptive tracer simulations (TracerInert.xml, TracerSorptive.xml) and fracture model template (FractureInfo.xml).ThermalSimulation/ : Input files for thermal-hydraulic simulation (THSimu.xml, FractureInfo.xml). Inversion/: Core inversion workflow for the synthetic case. CMAM.py: Main inversion script using the CMAM algorithm; supports multi-core parallelism.Generation.py: Reads latent parameters from CMAM and reconstructs fracture networks using a pre-trained WGAN-GP generator.TracerModeling.py: Writes generated fracture networks to FractureInfo.xml, calls GEOS for forward simulation, and returns results to the inversion.utils.py: Utility functions for the WGAN-GP model.run.py: Launcher script that runs `CMAM.py` as a background process.FlowTracerInert.xml / FlowTracerSorptive.xml: GEOS base configuration files for inert and sorptive tracer transport.FractureInfo.xml: Dynamically updated fracture model file.InertData.txt, SorptiveData.txt, PressureData.txt: Observational data for inversion. SoultzCase/ Real-field application at the Soultz-sous-Forêts geothermal site (France). Structure is similar to SyntheticCase/Inversion/, with site-specific data: CMAM.py, Generation.py, run.py, utils.py, TracerModeling.py, FractureInfo.xml: Same functionality as in the synthetic case. FlowTracer.xml: GEOS base configuration for simulating the 2005 fluorescein tracer circulation experiment. SoultzModel.vtu: 3D mesh model of the Soultz site, including well locations (GPK2–GPK4) and major fault zones (FZ4770, FZ4710). Model source: Geoenergy Modeling III. Flow.txt: Monitored production flow rates at GPK2 and GPK4. TBC.txt: Monitored tracer concentration data at GPK2 and GPK4. Workflow The inversion workflow relies on a pre-trained WGAN-GP model that provides a robust mapping from a low-dimensional latent space to geologically realistic discrete fracture network (DFN) realizations. Latent parameter proposal: At each iteration, the CMAM algorithm proposes new latent vectors. DFN generation: The proposed latent vector is passed (by Generation.py) to the WGAN-GP generator to synthesize an explicit DFN. The generated fracture network is then embedded into a structured porous matrix grid using the Embedded Discrete Fracture Model (EDFM) approach, avoiding the need for domain re-meshing during stochastic updates. Forward modeling: TracerModeling.py writes the updated fracture parameters to FractureInfo.xml and calls GEOS for forward simulation, using either inert or sorptive tracer configuration files. The GEOS multi-physics simulator evaluates coupled fluid flow and tracer transport to yield simulated breakthrough curves. Likelihood evaluation: Simulated responses are compared with observational data (tracer concentrations and hydraulic data) to compute the likelihood, which quantifies the fitness of the proposed DFN. Acceptance and update: The CMAM algorithm uses the likelihood and chain history to accept or reject the proposal, then adaptively updates the latent parameters for the next generation. This loop continues until reaching criterion. Uncertainty quantification: Following the inversion, the framework addresses equifinality through a pseudo-Bayesian uncertainty estimation. History trajectories are repurposed to extract an ensemble of behavioral models based on a predefined log-likelihood threshold (following the GLUE concept), providing bounded uncertainty intervals for long-term reservoir performance predictions. System Requirements This inversion code runs on Linux systems.



