This competition provides a synthetic dataset simulating 2D elastic wave propagation through the Earth. Each simulation is generated using a finite-difference elastic wave solver and contains both velocity models and wavefield responses.

## Files
The dataset is organized into the following folders:

/training
    ├── layered_simulation/            # 250 simulations in layered velocity models
    └── random_field_simulation/       # 250 simulations in random Gaussian velocity models

/test
    ├── layered_simulation_test/       # 50 test samples (layered)
    └── random_field_simulation_test/  # 50 test samples (random field)

### Training Set
Number of simulations: 500 total
Spatial domain: 64 × 128 grid (dz = dx = 20m → 1.28 km × 2.56 km)
Time frames: 60 (0–1.77 s)
Wavefield shape: (60, 64, 128, 2), (nt, nz, nx, channel)
| Key               | Type / Shape        | Description                                |
|------------------|---------------------|--------------------------------------------|
| `vp`, `vs`        | (64, 128)            | Velocity models (in m/s)                   |
| `wavefield_vx`    | (60, 64, 128)        | vx, x-direction wavefield over time            |
| `wavefield_vz`    | (60, 64, 128)        | vz, z-direction wavefield over time            |
| `source_loc`      | [float, float]       | Source location \([x, z]\) in meters       |
| `focal_mechanism` | [strike, dip, rake]  | Focal mechanism angles                     |
| Other fields      | Scalars (e.g. `dt`)  | Time step, frequency, metadata             |

 

Velocity models: Provided as spatial maps for P-wave (Vp), and S-wave (Vs). Note you should only use 'vp', 'vs',  `wavefield_vx`, and `wavefield_vx` for this contest. 

You can load each simulation data and get access to the keys as follows:
<pre> ```
sample_2_show = np.load('./layered_simulation/0.npy', allow_pickle=True)

wavefield_vx = sample_2_show.item().get('wavefield_vx') # Extract the x-direction wavefield (shape: [15, 64, 128])
wavefield_vz = sample_2_show.item().get('wavefield_vz') # Extract the z-direction wavefield (shape: [15, 64, 128])
vp = sample_2_show.item().get('vp') # Extract the P-wave velocity field (Vp) [64×128], in m/s
vs = sample_2_show.item().get('vs') # Extract the S-wave velocity field (Vs) [64×128], in m/s
 ``` </pre>

### Test Set
Number of simulations: 100 (50 layered + 50 random field)
First 15 time frames of the wavefield: (15, 64, 128, 2)
Corresponding Vp and Vs velocity models

### Your Task:

Predict the remaining 45 time frames from 0.45 to 1.77 seconds
Submit your results in the required CSV format (see submission instructions)