# GDR\_FOAL1 — Utah FORGE Surface Nodal Array (April 2022 Stimulation)

This package contains triggered 3-component surface nodal seismic waveforms recorded during the FOAL 1  experiment (FORGE Observarion Array Linear #1) which occurred during the April 2022 hydraulic stimulation of well 16A(78)-32 at the Utah FORGE EGS site. This data was utilized and documented in the paper

Kim, J., Ajo-Franklin, J., Shadoan, T., Sobolevskaia, V., Correa, J. and Freifeld, B., 2026. "Using a dense linear array for passive seismic converted wave imaging at a geothermal site: The FOAL 1 experiment at Utah FORGE." Geophysics, 91(2).

This experiment was conducted at the Utah FORGE site to facilitate passive seismic imaging studies of the basement contact and deeper structures (if possible). See Kim et al. 2026 for details on the acquisition effort. We should note that this GDR entry is the triggered data (as described below). The continuous data will be archived in a seperate archive in the future. Please reference this GDR entry and Kim et al. when data is utilized in the future. This dataset was acquired with internal support from Rice university and secondary support from the FOGMORE R\&D project (Fiber Optic MOnitoring for Reservoir Evolution), Utah FORGE R\&D Project 3-2417.



README File Authors: Jaewoo Kim and Jonathan Ajo-Franklin, assembled June 30th, 2026

## Experiment context

* **Site**: Utah FORGE (Frontier Observatory for Research in Geothermal Energy),
Milford, UT. Lat/Lon ≈ 38.505° N / -112.900° W.
* **Stimulation well**: 16A(78)-32 (deviated injection well into crystalline basement).
* **Stimulation period**: April 2022, Stages 2 and 3.
* **Reservoir depth**: \~7,800–8,250 m measured (granitoid basement).

## Array (FOAL1)

* **Internal project name**: `FOAL` (used in filenames, documentation, and the
original 4-character StationXML in `metadata/FOAL\_station.xml`)
* **FDSN network code in MSEED + companion StationXML**: `XX` (see note below)
* **Location code**: `00`
* **Stations**: `F001`–`F100` (100 SmartSolo IGU-16HR-3C surface nodes)
* **Channels**: `HHE`, `HHN`, `HHZ` (3-component, 500 Hz sample rate)
* **Instrument response**: nominal sensitivity 4001.09 counts/(m/s) @ 125 Hz reference
(full PAZ in StationXML files)
* **Deployment start**: 2022-04-10
* **Coordinate origin**: see `metadata/FOAL\_coords.dat` (lat, lon, elevation, UTM-12 x/y, offset)

### Network code: FOAL → XX

miniSEED v2 restricts network codes to 2 characters. The project's internal 4-char
name `FOAL` is therefore mapped to the FDSN-reserved code `XX` (designated for
unregistered / experimental / temporary deployments) in the archival waveforms and
their companion StationXML. The pairing is:

|File / format|Network code|Trace ID example|
|-|-|-|
|`waveforms/\*.mseed` (this archive)|`XX`|`XX.F001.00.HHE`|
|`metadata/FOAL\_station\_XX.xml` (use this with the MSEED)|`XX`|—|
|`metadata/FOAL\_station.xml` (original, project reference)|`FOAL`|—|
|Source SAC in `01.FORGE/Merged\_catalog/` (not shipped)|`FOAL`|—|

The station codes (`F001`–`F100`), location code (`00`), and channel codes
(`HHE/HHN/HHZ`) are identical across all files.

## Event catalog (23 microseismic events)

Events were detected by the Silixa downhole DAS/microseismic array in well 78B-32
(19 events) and complemented with 4 additional detections from a surface-network
catalog (GES). The merged 23-event list is the reference catalog for the per-event
waveform cuts in `waveforms/`.

* **Time span**: 2022-04-19 14:36 UTC to 2022-04-21 21:52 UTC
* **Moment magnitude range**: \~ -1.7 to +0.06 Mw (19 Silixa-matched events;
EID 19–22 from the GES surface-only catalog do not have Mw propagated)
* **Hypocentral depth range**: \~7,780–8,250 **ft** (\~ 2,370–2,510 m) —
see *Catalog units caveat* below
* **Stage attribution**: Stages 2 and 3 of the 16A(78)-32 stimulation
* **Catalog columns** (`catalog/event\_catalog.csv`): `DT, Source, Status, Y, X, Depth, MomMag, Stage`
where (X, Y) are local plant coordinates relative to a FORGE site origin
(NOT UTM), `Depth` is in feet, and `Source` is the Silixa downhole source ID.

### Catalog units caveat

The `Depth` column in `event\_catalog.csv` (renamed `Depth\_ft` in
`event\_id\_map.csv`) is in **feet**, not meters. Cross-check: the 16A injection well
bottoms at 2,601 m TVD per `metadata/16A\_well\_trajectory.csv`, so a meters
interpretation of 7,778–8,246 would place every event several km *below* the well
bottom (physically impossible), while a feet interpretation places them at
2,370–2,513 m — inside the granitoid reservoir, exactly where stimulation-induced
microseismicity should be.

The `X` and `Y` columns (named `X\_plant`, `Y\_plant` in `event\_id\_map.csv`) are
local plant-grid coordinates relative to a FORGE site origin (not UTM). Their
unit is most likely **feet** as well (consistent with depth), but this has not
been independently verified — confirm against the original Silixa documentation
before co-registering events with the station UTM coordinates in
`metadata/FOAL\_coords.dat` (which are in meters).

## Waveform data (`waveforms/`)

> \*\*Important — these waveforms are NOT raw counts.\*\* They have been pre-processed
> (see below). Users wanting truly raw broadband data should request the original
> SmartSolo SEG-2 or DCCDATA from the FOAL1 acquisition team.

* **Format**: miniSEED, one file per event containing **all 100 stations × 3 channels = 300 traces**.
* **MSEED encoding**: `FLOAT32` (the source data is float32; STEIM2 is not used because
the data are not integer counts — see processing chain below).
* **File naming**: `FOAL\_event\_<EID>\_<YYYYMMDDTHHMMSS>.mseed`
e.g. `FOAL\_event\_07\_20220421151154.mseed`.
* **Time window per event**: origin time ± 30 s (60 s total, 30,001 samples @ 500 Hz).
* **Network / Location / Channel codes baked into MSEED**: `XX` / `00` / `HHE,HHN,HHZ`
(network code remapped from internal `FOAL`; see "Network code: FOAL → XX" above).
* **Total**: 23 events × 100 stations × 3 components = **6,900 trace segments → 23 MSEED files**.
* **Event ID mapping**: see `catalog/event\_id\_map.csv` (EID ↔ origin time ↔ Silixa Source ID).

### Processing chain applied to these waveforms

The waveforms in `waveforms/` were produced by `GES\_catalog.ipynb` (Cell 32) in the
parent project directory. The chain is:

1. Continuous SmartSolo SEG-2 hourly gathers loaded via ObsPy `read(..., format='SEG2')`.
ObsPy applies the SEG-2 `DESCALING\_FACTOR` on read, so trace data leave the reader
as **float32 in descaled SmartSolo SEG-2 output units** (geophone output voltage at
whatever scale the SmartSolo SEG-2 export was configured with — typically µV or mV).
2. Network/station/channel metadata injected as `FOAL` / `F0##` / `HH\[ENZ]`. Absolute
start times derived from the SEG-2 filename (SEG-2 itself does not carry absolute
time in standard headers).
3. **Bandpass filter applied: 10–50 Hz, 4-corner Butterworth, zero-phase (`obspy.Stream.filter`).**
4. Trimmed to ±30 s around each catalog origin time.
5. Written to SAC, then converted here to per-event MSEED (FLOAT32) for GDR upload.

### Known caveats — please read before using

* **Instrument response is NOT removed.** Data carry the full SmartSolo IGU-16HR-3C
geophone response. Apply `metadata/FOAL\_station.xml` with
`obspy.Stream.remove\_response(inventory=inv, output="VEL")` (or similar) to obtain
ground velocity in m/s. See `docs/data\_processing\_notes.md` for guidance.
* **10–50 Hz bandpass is baked into the data.** All energy at < 10 Hz (e.g. Mw / FWI /
long-period coda) and > 50 Hz (e.g. template matching at the Nyquist 250 Hz limit)
has been removed and cannot be recovered.
* **Units**: not response-corrected ground motion. Treat as relative amplitudes within
this dataset; do not compare absolute amplitudes against external broadband stations
without first removing the response.
* **Location code in source SAC was blank** and has been set to `00` during the MSEED
conversion so that it matches `FOAL\_station.xml`.

## Directory layout

```
GDR\_FOAL1/
├── README.md                       ← this file
├── waveforms/
│   └── FOAL\_event\_<EID>\_<UTC>.mseed   ← 23 MSEED files, 300 traces each
├── metadata/
│   ├── FOAL\_station\_XX.xml         ← StationXML paired with the MSEED files (network=XX)
│   ├── FOAL\_station.xml            ← Original StationXML (network=FOAL, project reference)
│   ├── FOAL\_coords.dat             ← station lat/lon/elev + UTM-12 x/y + offset
│   └── 16A\_well\_trajectory.csv     ← injection well trajectory (for reference)
├── catalog/
│   ├── event\_catalog.csv           ← 23-event merged catalog (DT, X, Y, Depth, Mw, Stage)
│   └── event\_id\_map.csv            ← EID (00–22) ↔ origin time ↔ Silixa Source ID
├── data\_processing\_notes.md    ← processing log + known caveats
└── sac\_to\_mseed.py             ← script that produced the MSEED files in waveforms/
```

## Quick-start (ObsPy)

```python
from obspy import read, read\_inventory

st  = read("waveforms/FOAL\_event\_07\_20220421151154.mseed")
inv = read\_inventory("metadata/FOAL\_station\_XX.xml")   # MUST use the XX-coded inventory
print(st)                          # 300 traces, XX.F001..F100, HH\[ENZ], 00
st.remove\_response(inventory=inv, output="VEL",
                   pre\_filt=(8, 10, 50, 60), water\_level=60)   # → ground velocity (m/s)
# pre\_filt respects the 10–50 Hz bandpass already baked into the data.
```

## Suggested GDR submission metadata

* **Title**: Surface Nodal Seismic Waveforms (FOAL Array, Apr 2022) — Utah FORGE 16A(78)-32 Stimulation Microseismicity
* **Creators**: Jaewoo Kim (Rice University) et al.
* **Keywords**: Utah FORGE, EGS, microseismicity, surface nodal array, SmartSolo,
hydraulic stimulation, 16A(78)-32, induced seismicity
* **Format**: MSEED (waveforms) + FDSN StationXML (metadata) + CSV (catalog)
* **License**: (TBD — coordinate with FORGE/DOE data-release policy)

