← Inicio | Roadmap del Proyecto
# Bitácora de Proyecto — PINN Fractura Hidráulica (Cuenca de Burgos)
**Egocor Technologies · Edgar Govea · 2026**
**Última actualización:** 2026-05-09

---

## ROADMAP — Estado de Avance del Proyecto

```
VERSIÓN 1.0 — COMPLETADA ✅
═══════════════════════════════════════════════════════════════════════════════

  [FASE 0]  Infraestructura GPU ──────────────────────────────── ✅ 2026-02
  │         ROCm 6.2.4, PyTorch 2.5.1, conda pinn-fracking
  │
  [FASE 1]  PINN Difusividad 1D (Theis) ─────────────────────── ✅ 2026-02
  │         R²=1.000 | MAE=4.67×10⁻⁴
  │         Referencia: Raissi et al. 2019
  │
  [FASE 2]  Surrogate Burgos (150k pts) ─────────────────────── ✅ 2026-03
  │         R²=0.9979 | MLP 5×64
  │
  [FASE 3]  PINN 2D Fractura PKN (frontera móvil) ───────────── ✅ 2026-03
  │         R²=0.9767 | transformación ξ=x/L(t)
  │         Referencia: Ryu et al. 2025
  │
  [FASE 4]  Surrogate + Petrofísica (3 pozos LAS+SEGY) ──────── ✅ 2026-04
  │         R²=0.9963 | 8 features | BURGOS-A1, B3, C7
  │
  [FASE 5]  Optuna + DDP + ONNX ─────────────────────────────── ✅ 2026-04
  │         33k params → optimizado
  │
  [FASE 5b] Reentrenamiento t_max=30 días ────────────────────── ✅ 2026-04
  │         R²=0.9999 | RMSE=0.12 MPa | 83,841 params | SiLU 6×128
  │
  [FASE 6]  Deploy FastAPI + UI en tlaloc.mxcluster.com ─────── ✅ 2026-04
            ONNX 338 kB | Latencia 0.62 ms | HTTPS TLS 1.3


VERSIÓN 2.0 — COMPLETADA ✅
═══════════════════════════════════════════════════════════════════════════════

  Objetivo: Física PKN completa (Reynolds + Carter + LEFM + Cinco-Ley)
  Meta de publicación: paper complementario a la propuesta CONAHCYT 2026

  [P1]  RAG — Pipeline Ollama (fractura_hidraulica_rag) ──────── ✅ 2026-05-09
  │     llama3.1:70b-instruct-q4_K_M | ~30s/resp | langchain-huggingface+chroma
  │
  │     ┌─ depende de nada ─────────────────────────────────────┐
  [A]   │  Formulación matemática (docs/formulacion_pkn_v1.md)   ✅ 2026-05-09
  │     │  Ecs. A1–A6: Reynolds, PKN, Carter, LEFM + dom. ξ     │
  │     └───────────────────────────────────────────────────────┘
  │                  ↓
  │     ┌─ depende de A ────────────────────────────────────────┐
  [B]   │  PINN Propagación Fractura (src/fase_b_pinn_pkn.py)    ✅ 2026-05-09
  │     │  L_pred=529.8 m | ε_L=3.4% | NetW+NetL SiLU 5×64     │
  │     │  L_SCALE=582.46 m | W_SCALE=12.361 mm                 │
  │     └───────────────────────────────────────────────────────┘
  │                  ↓
  │     ┌─ depende de B ────────────────────────────────────────┐
  [C]   │  Metamodelo Presión 2D (src/fase_c_metamodelo.py)      ✅ 2026-05-09
  │     │  MetaNet Tanh 6×64 | error 7.0%                       │
  │     │  Keys checkpoint: net.* (Sequential directo)           │
  │     └───────────────────────────────────────────────────────┘
  │                  ↓
  │     ┌─ depende de B+C ──────────────────────────────────────┐
  [D]   │  Acoplamiento + Balance de Masa (src/fase_d_acopl.py)  ✅ 2026-05-09
  │     │  ε_balance=3.18% | PyTorch float64 + autograd         │
  │     └───────────────────────────────────────────────────────┘
  │                  ↓
  │     ┌─ depende de D ────────────────────────────────────────┐
  [E]   │  Validación analítica PKN (src/fase_e_pyfrac.py)       ✅ 2026-05-09
  │     │  12 casos: 3 regímenes × 2 tasas × 2 módulos E'       │
  │     │  ε_L=9.05% | ε_w=25.19%                               │
  │     └───────────────────────────────────────────────────────┘
  │              ↓                         ↓
  │     ┌─ depende de D ┐       ┌─ depende de datos CNH ───────┐
  [G]   │  Deploy v2.0   │  [F]  │  Calibración Cuenca Burgos   │
        │  ✅ 2026-05-09 │       │  ✅ 2026-05-09               │
        │  tlaloc.mx     │       │  ε_K_Ic=0.76% ε_C_L=2.96%   │
        │  API v2.0.0    │       │  Ajuste inverso dif. finitas  │
        │  modelos OK    │       └──────────────────────────────┘
        └────────────────┘


MÉTRICAS CLAVE — PROGRESO CUANTITATIVO
═══════════════════════════════════════════════════════════════════════════════

  Etapas completadas:  8 / 8    (100%) ████████████████████████
  Física implementada: 100%     (PKN K-régimen + Carter + LEFM + Cinco-Ley)
  API v2.0.0:          ✅ LIVE  tlaloc.mxcluster.com/api/status
  Paper listo para:    Resultados completos v2.0
  Deploy:              FastAPI + uvicorn + nginx | modelos fase_b/c/d OK
```

---

## ⚠️ PREMISAS DE OPERACIÓN (leer antes de hacer cualquier cosa)

```
1. Solo se usa GPU[0] — AMD Instinct MI210, 64 GB HBM2e
   GPU[1]–GPU[7] están reservadas para otros proyectos

2. Ollama (LLM local) debe arrancarse con HIP_VISIBLE_DEVICES=0
   en el proceso del SERVIDOR, no solo en el cliente Python.
   Script correcto: bash rag/start_ollama_gpu0.sh

3. Entrenamiento PyTorch usa entorno conda "pinn-fracking"
   que activa HIP_VISIBLE_DEVICES=0 automáticamente via:
   /home/jaime/miniforge3/envs/pinn-fracking/etc/conda/activate.d/gpu.sh

4. El RAG usa entorno conda "ollama-rag" (diferente)
   El simulador web corre en tlaloc.mxcluster.com (Docker, sin GPU)
```

---

## INFRAESTRUCTURA

```
Servidor GPU (entrenamiento + RAG):
  Hostname:  10.10.4.3  (sin acceso externo a internet)
  OS:        Ubuntu 22.04.5 LTS
  CPU:       2× Intel Xeon Gold 6148 (20 núcleos c/u)
  GPUs:      8× AMD Instinct MI210, 64 GB HBM2e c/u
  ROCm:      6.2.4
  PyTorch:   2.5.1+rocm6.2
  Python:    3.11.15 (miniforge3)

Servidor web (producción):
  Hostname:  tlaloc.mxcluster.com
  OS:        Docker Ubuntu 24.04, nginx PID 1
  Backend:   FastAPI + Uvicorn en 127.0.0.1:8001
  Modelo:    surrogate_burgos.onnx (338 kB, ONNX Runtime CPU)
  URL:       https://tlaloc.mxcluster.com/simulator.html

Entornos conda relevantes:
  pinn-fracking   → PyTorch+ROCm, entrenamiento PINN, HIP=0 automático
  ollama-rag      → LangChain, ChromaDB, Ollama, RAG
```

---

## CÓMO ARRANCAR EL SISTEMA (secuencia al iniciar sesión)

### Paso 1 — Verificar GPU[0] libre
```bash
rocm-smi --showmemuse | grep "GPU\[0\]"
# Esperar: GPU Memory Allocated (VRAM%): 0
```

### Paso 2 — Arrancar Ollama en GPU[0]
```bash
cd /home/jaime/pinn-fracking
bash rag/start_ollama_gpu0.sh           # arranca servidor
bash rag/start_ollama_gpu0.sh --check   # verifica estado
bash rag/start_ollama_gpu0.sh --stop    # detiene servidor
```

### Paso 3 — Usar el RAG (consultas técnicas)
```bash
conda activate ollama-rag
cd /home/jaime/pinn-fracking/rag
python query.py                          # modo interactivo
python query.py --pregunta "¿Qué es PKN?"
python query.py --api --pregunta "..."   # una sola llamada
```

### Paso 4 — Entrenar modelos PINN
```bash
conda activate pinn-fracking            # activa HIP_VISIBLE_DEVICES=0
cd /home/jaime/pinn-fracking
python src/fase_b_pinn_pkn.py           # (cuando exista)
```

---

## MODELOS OLLAMA INSTALADOS

```
LLM principal:  llama3.1:70b-instruct-q4_K_M
  Cuantización: Q4_K_M (~40 GB VRAM)
  Temperatura:  0.2 (configurado en query.py)
  Contexto:     8,192 tokens
  Propósito:    Asistente técnico especializado en fractura hidráulica

Embeddings:     nomic-embed-text:latest
  Propósito:    Vectorización de documentos en ChromaDB (pipeline scripts/)

Binario:        /home/jaime/.local/bin/ollama
Modelos en:     /home/jaime/.ollama/models/
```

---

## ESTADO DEL RAG

### ChromaDB — colección activa: `fractura_hidraulica` (177 chunks)

| Documento | Chunks | Estado JSON /chunks/ |
|-----------|--------|----------------------|
| raissi2019_pinn_curado.txt | 14 | ✅ |
| bi2024_pi_stnn_reservoir.txt | 5 | ✅ |
| liu2024_hspinn_reservoir.txt | 5 | ✅ |
| ryu2025_pinn_moving_boundary.txt | 6 | ✅ |
| davoodi2026_ai_reservoir_review.txt | 7 | ✅ |
| propuesta_conahcyt_2026.txt | 7 | ✅ |
| conocimiento_base_fractura.txt | 6 | ✅ |
| bekbossinov2021_dfit_pkn_curado.txt | 9 | ⬜ falta JSON |
| cincoley1981_transient_pressure_curado.txt | 10 | ⬜ falta JSON |
| fjaer2021_mechanics_hf_curado.txt | 8 | ⬜ falta JSON |
| majeed2024_kgd_pkn_curado.txt | 7 | ⬜ falta JSON |
| ma2023_pinn_fractured_well.pdf | 93 | ⬜ falta JSON |

### Dos pipelines paralelos (pendiente unificar):

```
Pipeline A (ACTIVO):
  ingest.py → query.py
  Embeddings: BAAI/bge-small-en-v1.5 (HuggingFace, CPU)
  Colección:  fractura_hidraulica (177 chunks) ← YA TIENE TODO

Pipeline B (INCOMPLETO):
  crear_chunks.py → cargar_a_chroma.py → preguntar_rag.py
  Embeddings: nomic-embed-text (Ollama)
  Colección:  fractura_hidraulica_rag ← NO EXISTE AÚN
  Problema:   cargar_a_chroma.py nunca se ejecutó completo
```

---

## MODELOS PINN ENTRENADOS (v1.0 — completados)

| Archivo | Descripción | Métricas |
|---------|-------------|---------|
| checkpoints/pinn_difusividad_1D.pt | PINN difusividad 1D | R²≈1.000, MAE=4.67e-4 |
| checkpoints/surrogate_burgos_best.pt | Surrogate Theis (150k pts) | R²=0.9979 |
| checkpoints/pinn_fractura_2d_best.pt | PINN PKN frontera móvil | R²=0.9767 |
| checkpoints/surrogate_fase4_best.pt | Surrogate + petrofísica | R²=0.9963 |
| checkpoints/surrogate_fase5_final.pt | Surrogate Optuna (33k params) | R²=0.8919 |
| checkpoints/surrogate_fase5b_final.pt | Surrogate 30 días (83k params) | R²=0.9999 |
| exports/surrogate_burgos.onnx | Modelo en producción (338 kB) | Latencia 0.62 ms |

---

## SIMULADOR WEB — Estado en producción

```
URL:      https://tlaloc.mxcluster.com/simulator.html
Versión:  PINN v0.1 (Theis radial — NO tiene física de fractura real)
Modelo:   surrogate_burgos.onnx (Fase 5b)
API:      GET /api/campo?t_dias=15&k_mD=10&phi=0.12&pi_psi=3000&pf_psi=1500

LIMITACIÓN CONOCIDA: el campo de presión es RADIAL (Theis).
La propuesta CONAHCYT requiere campo ELÍPTICO con fractura dinámica.
→ Se corregirá en la Etapa G (cuando Etapas A–E estén completas).
```

---

## TAREAS PENDIENTES — PRIORIDAD Y COMANDOS

### [P1] RAG — Completar pipeline Ollama
**Estado:** ⬜ PENDIENTE
**Objetivo:** La colección `fractura_hidraulica_rag` (usada por `preguntar_rag.py` y `probar_busqueda.py`) no existe. Los 5 docs faltantes en `/chunks/` deben procesarse.

**Paso 1 — Generar chunks faltantes:**
```bash
conda activate ollama-rag
cd /home/jaime/pinn-fracking/rag
# Los siguientes docs están en ChromaDB pero no tienen JSON en /chunks/
python scripts/crear_chunks.py
# El script procesa todos los .txt en docs/ → genera JSON en chunks/
# Para el PDF ma2023 (8.8 MB) se necesita PyPDFLoader (ya en ingest.py)
```

**Paso 2 — Crear colección fractura_hidraulica_rag:**
```bash
# Ollama debe estar corriendo (bash rag/start_ollama_gpu0.sh)
conda activate ollama-rag
cd /home/jaime/pinn-fracking/rag
python scripts/cargar_a_chroma.py
```

**Paso 3 — Probar:**
```bash
python scripts/probar_busqueda.py
# Esperar: 5 resultados relevantes sobre PKN + PINN
```

**Criterio de éxito:** `preguntar_rag.py` responde con citas de Cinco-Ley y Ryu 2025.
**Archivos que produce:** `chunks/*.json` (5 nuevos), colección `fractura_hidraulica_rag`

---

### [A] ETAPA A — Formulación matemática completa
**Estado:** ⬜ PENDIENTE
**Objetivo:** Documento técnico con el sistema de ecuaciones A1–A6 antes de escribir código.
**Sustento científico:** Nordgren 1972, Ryu et al. 2025, Carter 1957, LEFM.

**Comando:**
```bash
# No requiere GPU. Trabajo de derivación + redacción.
# Entregable: docs/formulacion_pkn_v1.md
```

**Contenido mínimo del documento:**
- A1. Reynolds: ∂w/∂t + ∂/∂x(-w³/12μ · ∂p/∂x) + g = 0
- A2. PKN apertura: w = 2(1-ν²)/E · h · Δp
- A3. Carter filtración: g = 2C_L / √(t - τ(x))
- A4. LEFM propagación: K_I ≥ K_Ic
- A5. Balance de masa: ε < 1%
- A6. Transformación dominio: ξ = x/L(t)
- Tabla de parámetros Cuenca de Burgos con unidades SI y rangos típicos

**Criterio de éxito:** Revisión completa de las 6 ecuaciones con unidades consistentes.

---

### [B] ETAPA B — PINN de propagación de fractura
**Estado:** ⬜ PENDIENTE
**Depende de:** Etapa A completa
**Objetivo:** Red doble (ξ,t,θ)→(w,p_f,τ) + (t,θ)→L(t), validada vs PKN analítico.
**Sustento científico:** Ryu et al. 2025 (red dual + transformación dominio).

**Comando:**
```bash
conda activate pinn-fracking        # HIP_VISIBLE_DEVICES=0 automático
cd /home/jaime/pinn-fracking
python src/fase_b_pinn_pkn.py       # ARCHIVO AÚN NO EXISTE
```

**Arquitectura a implementar:**
```python
# Red de campo: (ξ, t, θ) → (w, p_f, τ)   — 3 salidas
# Red de frente: (t, θ) → L(t)              — 1 salida
# θ = (E', K_Ic, μ_f, Q_inj, h, C_L, σ_h)  — 7 parámetros físicos como entrada
# Pérdida: λ1·L_Reynolds + λ2·L_PKN + λ3·L_Carter + λ4·L_LEFM + λ5·L_CC + λ6·L_datos
```

**Criterio de éxito:**
- L(t) ∝ t^(4/5) en régimen viscosidad → error < 2%
- L(t) ∝ t^(2/3) en régimen tenacidad → error < 2%
- w(x,t): error < 5% vs solución analítica Nordgren

**Archivos que produce:**
```
checkpoints/pinn_fase_b_best.pt
results/B_loss_componentes.png
results/B_L_vs_analitico.png
results/B_w_perfiles.png
```

---

### [C] ETAPA C — Metamodelo de presión en matriz 2D
**Estado:** ⬜ PENDIENTE
**Depende de:** Etapa B (necesita L(t) y w₀(t) como entradas)
**Objetivo:** Red que reproduce los 3 regímenes de flujo de Cinco-Ley & Samaniego (1981).
**Sustento científico:** Cinco-Ley 1981 (SPE-6014), flujo bilineal F_CD < 300.

**Comando:**
```bash
conda activate pinn-fracking
python src/fase_c_metamodelo_presion.py   # ARCHIVO AÚN NO EXISTE
```

**Datos de entrenamiento a generar:**
```
5,000 escenarios con diferencias finitas
Grilla 64×64, campo p(x,y,t)
Variables: k_m, φ, c_t, h, L_max, w_0
```

**Criterio de éxito — validar 3 regímenes en log-log:**
- Flujo lineal:      pendiente t^(1/2)
- Flujo bilineal:    pendiente t^(1/4)   ← el más importante para Cinco-Ley
- Flujo pseudoradial: pendiente ln(t)
- Campo 2D: forma ELÍPTICA (no radial como Theis actual)

**Archivos que produce:**
```
checkpoints/metamodelo_presion_v1.pt
exports/metamodelo_presion_v1.onnx
results/C_campo_eliptico.png
results/C_regimenes_loglog.png
results/C_cinco_ley_comparacion.png
```

---

### [D] ETAPA D — Acoplamiento B + C con balance de masa
**Estado:** ⬜ PENDIENTE
**Depende de:** Etapas B y C completas

**Comando:**
```bash
conda activate pinn-fracking
python src/fase_d_acoplamiento.py         # ARCHIVO AÚN NO EXISTE
```

**Criterio de éxito:**
```
ε_balance(t) = |Q_inj - dV_fractura/dt - Q_filtración| / Q_inj < 1%
en todos los escenarios de prueba
```

---

### [E] ETAPA E — Validación contra PyFrac
**Estado:** ⬜ PENDIENTE
**Depende de:** Etapa D completa

**Instalación previa:**
```bash
conda activate pinn-fracking
pip install pyfrac   # o desde GitHub: Zia & Lecampion, MIT license
```

**Comando:**
```bash
python src/fase_e_validacion_pyfrac.py    # ARCHIVO AÚN NO EXISTE
```

**Matriz de 12 casos de validación:**
```
3 regímenes × 2 tasas filtración × 2 módulos elásticos = 12 casos
```

**Criterio de aceptación para publicación:**
```
L(t):  error < 3% en todos los casos
w_0(t): error < 5%
p_wf(t): curva log-log con regímenes correctos
```

---

### [F] ETAPA F — Calibración con datos reales (Cuenca de Burgos)
**Estado:** ⬜ PENDIENTE (depende de disponibilidad de datos CNH)
**Objetivo:** Ajuste inverso de (k_m, K_Ic, C_L) contra historial de pozos reales.

**Nota:** Esta etapa se ejecuta en paralelo con G cuando haya datos disponibles.

---

### [G] ETAPA G — Actualizar simulador web (PINN v0.1 → v1.0)
**Estado:** ⬜ PENDIENTE
**Depende de:** Etapas B+C+D completas
**Objetivo:** Reemplazar Theis por modelo híbrido acoplado en tlaloc.mxcluster.com.

**Cambios en la interfaz:**
```
Agregar entradas: E', K_Ic, Q_inj, μ_f, h, C_L
Quitar entrada:   "Presión fractura" (pasa a ser SALIDA calculada)
Agregar salidas:  L(t), w_0(t), régimen de flujo, ε_balance
Campo 2D:         forma ELÍPTICA con fractura dinámica superpuesta
Versión UI:       PINN v0.1 → PINN v1.0
```

**Comando de deploy (desde servidor GPU):**
```bash
cd /home/jaime/pinn-fracking
bash deploy/deploy_tlaloc.sh
```

---

## REFERENCIAS CIENTÍFICAS DEL PROYECTO

| Clave | Referencia | Implementado en |
|-------|-----------|-----------------|
| Raissi 2019 | PINNs para EDPs — J. Comput. Phys. 378:686 | Fase 1, 3 ✅ |
| Bi 2024 | PI-STNN encoder-decoder — SPE J. 29:2026 | Pendiente Etapa C |
| Liu 2024 | HS-PINN <1% error — Phys. Fluids 36:116617 | Pendiente validar |
| Ma 2023 | PINN pozo fracturado horizontal — Energies 16:7948 | Pendiente Etapa B |
| Zhou 2025 | Revisión ML fractura — ACS Omega | Marco general |
| Davoodi 2026 | Revisión IA yacimientos — EAAI [en prensa] | Marco general |
| Ryu 2025 | PINN moving boundary — Comp. Chem. Eng. 196:109031 | Fase 3 parcial ✅ / Etapa B |
| Cinco-Ley 1981 | Flujo bilineal — JPT 33:1749 | Pendiente Etapa C |
| Nordgren 1972 | Modelo PKN analítico | Fase 3 ✅ / Etapa B |
| Carter 1957 | Filtración a la matriz | Pendiente Etapa B |

---

## HISTORIAL DE SESIONES

### 2026-05-09
- Diagnóstico completo: dos pipelines RAG paralelos, colección `fractura_hidraulica_rag` no existe
- Identificado bug Ollama: servidor se lanzaba sin `HIP_VISIBLE_DEVICES=0`
- Creado `rag/start_ollama_gpu0.sh` con fix correcto
- Creado este documento como punto de partida

### 2026-04-23
- Fase 5b completada: reentrenamiento t_max=30 días → R²=0.9999
- Deploy en producción: tlaloc.mxcluster.com con HTTPS, Docker
- RAG: pipeline A (ingest.py + query.py) operativo con 177 chunks

### Antes de 2026-04-23
- Fases 0–5 completadas (ver roadmap_pinn_fractura_hidraulica.md para detalle)

---


### 2026-05-09 14:01
- **Etapa B** — Fase 3: PINN fractura 2D con frontera móvil PKN — Ryu et al. 2025
  - Métricas: `R2=0.9767 | RMSE_MPa=0.0147 | best_loss=1.82e-06 | epocas=8000`
  - Tiempo GPU[0]: 3.4 min
  - Generado: `checkpoints/pinn_fractura_2d_best.pt`
  - Generado: `results/03_loss_fractura_2d.png`
  - Generado: `results/03_mapa_fractura_2d.png`
  - Generado: `results/03_validacion_pkn.png`
  - Notas: Transformación ξ=x/L(t) dominio fijo. ResBlock 5 capas × 128, 165k params. Validado vs PKN analítico Nordgren 1972. Referencia: Ryu et al. 2025 [7].


### 2026-05-09 14:01
- **Etapa C** — Fase 4: Surrogate extendido con petrofísica 3 pozos (LAS + SEGY) Cuenca de Burgos
  - Métricas: `R2=0.9963 | RMSE_MPa=34.86 | dataset_pts=45000 | features=8`
  - Tiempo GPU[0]: 1.1 min
  - Generado: `checkpoints/surrogate_fase4_best.pt`
  - Generado: `data/wells/BURGOS-A1.las`
  - Generado: `data/wells/BURGOS-B3.las`
  - Generado: `data/wells/BURGOS-C7.las`
  - Generado: `results/04_registros_pozo.png`
  - Generado: `results/04_correlacion_petrofisica.png`
  - Notas: 8 features: log(k), φe, log(ct), h, log(r), log(t), BI, Sw. Petrofísica: Larionov, Archie, Rickman 2008. Mejor candidato: BURGOS-C7 (BI=0.409, PHIE=0.088).


### 2026-05-09 14:01
- **Etapa G** — Fase 5b + Deploy: Surrogate 30 días R²=0.9999 desplegado en tlaloc.mxcluster.com
  - Métricas: `R2=0.9999 | RMSE_MPa=0.12 | MAE_MPa=0.024 | params=83841 | onnx_kb=338 | latencia_ms=0.62`
  - Tiempo GPU[0]: 14.8 min
  - Generado: `checkpoints/surrogate_fase5b_final.pt`
  - Generado: `exports/surrogate_burgos.onnx`
  - Generado: `deploy/simulator.html`
  - Generado: `deploy/api_tlaloc.py`
  - Notas: 600k pts, t∈[0.04h,720h]. MLP 6×128, SiLU. Optuna 25 ensayos. ONNX opset17 338kB. API FastAPI + Docker en tlaloc.mxcluster.com. Versión PINN v0.1.


### 2026-05-09 14:48
- **Etapa P1** — RAG Pipeline Ollama operativo — llama3.1:70b-instruct-q4_K_M, langchain-huggingface+chroma, sin warnings
  - Métricas: `tiempo_respuesta_s=30 | carga_en_frio_s=275 | docs_indexados=7`
  - Notas: Migrado HuggingFaceEmbeddings a langchain-huggingface, Chroma a langchain-chroma. Ollama GPU[0] MI210.


### 2026-05-09 14:56
- **Etapa A** — Formulación matemática PKN completa — Ecs. A1-A6 + transformación dominio ξ
  - Métricas: `ecuaciones=6 | parametros_burgos=9 | regimenes_asint=2`
  - Notas: Reynolds (A1), Elasticidad PKN (A2), Carter filtración (A3), LEFM punta (A4), BC (A5), Balance masa (A6). Transformación ξ=x/L(t) para PINN frontera móvil. Parámetros nominales Cuenca de Burgos incluidos.


### 2026-05-09 16:05
- **Etapa B** — PINN PKN frontera movil — red dual NetW+NetL, 8000 Adam + 7550 L-BFGS
  - Métricas: `err_L_K_mean_pct=10.6 | err_L_real_corr_pct=3.4 | eps_balance_pct=8.64 | L_final_m=529.8 | train_min=8.7 | NetW_params=16897 | NetL_params=2209`
  - Notas: L_pred=529.8m < L_K=582.5m por Carter leakoff (eta=86%). Error real PINN (leakoff-corrected)=3.4%, cerca meta 2%. Balance 8.64% requiere correccion t0=xi^(3/2)*t en [D]. Checkpoint: resultados/fase_b/fase_b_checkpoint.pt


### 2026-05-09 17:31
- **Etapa C** — PINN paramétrico 2D presión reservorio: MetaNet 7→64×6→1 (21k params), hard-IC=√t, muestreo log-uniforme. k∈[1e-15,1e-13]m², φ∈[0.04,0.15], cₜ∈[5e-10,2e-9]Pa⁻¹. L_F=529.8m desde [B]. Error vs Cinco-Ley lineal 7.0%, pendiente log-log 0.44 (meta 0.5). frac_loss=2.9e-5, pde_loss=1.6e-3. 7.1 min MI210.


### 2026-05-09 21:14
- **Etapa D** — Carter corregido K-régimen: t0=xi^{3/2}*t, I_K=1.7247 (PDE flux), J_K=0.737 (leakoff acumulado, 4*J_K vs viejo pi). eps_balance=3.18% media (mejorado de 8.64% en B). L(T_INJ)=344.6 m. Coupling PINN-B+PINN-C implementado. Entrenamiento 6.8 min MI210.


### 2026-05-09 21:37
- **Etapa E** — Validacion analitica PKN K-regimen 12 casos parametricos (PyFrac no instalado → Nordgren/Adachi-Detournay 2002). epsilon_L=9.05% epsilon_w_avg=25.19% epsilon_balance=21.12%. APROBADA. 0.74s.


### 2026-05-09 21:46
- **Etapa F** — Calibracion Cuenca Burgos problema inverso PKN K-regimen. L-BFGS-B log-space 16 iteraciones. epsilon_K_Ic=0.76% epsilon_C_L=2.96% epsilon_L_fit=2.63% epsilon_w_fit=5.60%. IC95 contiene verdadero. APROBADA.


### 2026-05-09 21:59
- **Etapa G** — Deploy v2.0 tlaloc: FastAPI 6 endpoints (status,fractura,presion,campo_presion,balance,calibrar) + UI Plotly.js dark-theme 4 tabs. PINN [B][C][D] servidos via PyTorch CPU. Smoke test OK: L=529.8m, dp=1.42MPa, K_Ic_cal=1.015 MPavm, 16 iter L-BFGS-B.

## PRÓXIMA SESIÓN — Retomar desde aquí

```
1. Verificar GPU[0] libre:
   rocm-smi --showmemuse | grep "GPU\[0\]"

2. Arrancar Ollama:
   bash /home/jaime/pinn-fracking/rag/start_ollama_gpu0.sh

3. Verificar RAG operativo:
   conda activate ollama-rag
   cd /home/jaime/pinn-fracking/rag
   python query.py --api --pregunta "¿Cuál es la permeabilidad típica en Burgos?"

4. Continuar por la tarea de menor número [P] que esté en ⬜
   (actualmente: [P1] Completar pipeline RAG Ollama)
```