Implementación, estudio paramétrico y publicación
Arquitectura modular
project/
├── basilisk/
│ ├── cases/ # entradas C: colapso esférico y pared rígida
│ ├── eos/ # auditorías y tests de EOS; no forks ocultos
│ ├── postprocessing/ # extracción de interfaz, pared y energías
│ └── validation/ # RP/Keller–Miksis, pulso y convergencia
├── coupling/
│ ├── schemas/ # contrato HDF5 versionado
│ └── tests/ # fixtures cruzados Basilisk/Kratos
├── src/cavitation_coupling/ # I/O, mapeo, conservación y CLI reutilizables
├── mpm/
│ ├── kratos/ # Process HDF5 y fragmentos ProjectParameters
│ ├── material_models/ # solo modelos nuevos y sus tests
│ ├── cases/ # elástico, plástico y gradado
│ └── validation/ # onda 1-D, impulso, indentación y energías
├── experiments/ # metadatos y enlaces a datos, no binarios grandes
├── examples/ # ejemplos sintéticos ejecutables
├── results/ # ignorado; manifiestos publicables van a Zenodo
├── scripts/ # lanzadores delgados, sin lógica científica oculta
├── docs/ # formulación, decisiones, V&V y publicación
└── provenance/ # commits, toolchains y contenedores fijados
Cada caso se configura en YAML validado por JSON Schema. Entrada: geometría, materiales, solver, tolerancias y semillas. Salida: directorio inmutable con configuración resuelta, hashes, logs, HDF5, métricas y estado pass/fail. El workflow nunca deduce un parámetro científico del nombre de un directorio.
Etapas y puertas de aceptación
A. Verificación de Basilisk
- Colapso esférico 1-D/2-D contra Rayleigh–Plesset y Keller–Miksis.
- Burbuja estática de Laplace y oscilación pequeña con tensión superficial.
- Propagación/reflexión/transmisión de un pulso acústico.
- Masa de cada fase, energía total y \(p_gV^\Gamma\).
- Niveles 12–16, CFL y tamaño de dominio.
Puerta: error de tiempo de colapso <2 %, tendencia asintótica de \(R(t)\), balances explicados y sin reflexión de frontera en la ventana útil.
B. Cavidad cerca de pared rígida
- \(\gamma=1.1,1.5,1.9\), forma, impacto, \(u_j,d_j\).
- Presión radial, FWHM, sensor equivalente, fuerza e impulso.
- Comparación morfológica/temporal con Dular y escalados de Supponen; presión con datos que realmente usen sensores de pared.
Puerta: chorro y tiempo convergentes; impulso cambia <2 % entre las dos mallas más finas. El pico se reporta como función de sensor y malla.
C. Verificación de MPM
- Barra/medio elástico 1-D: velocidad y reflexión de onda.
- Semiespacio o placa bajo presión analítica.
- Johnson–Cook uniaxial y pulso plástico antes de 3-D; J2 solo tras verificar compatibilidad con MPMApplication.
- Momento, energías nativas de Kratos y trabajo externo del adaptador.
Puerta: orden/tendencia esperados, error de onda <2 % en ROI y residuo de energía <2 % antes del retorno de ondas por las fronteras.
D. Acoplamiento offline (MVP publicable)
- Exportar HDF5, construir \(M_{ai}\), aplicar carga al sólido elástico.
- Fuerza e impulso del mapeo <1 %.
- Comparar Kratos MPM con FEniCSx en desplazamientos y tensiones filtradas a una resolución común.
Puerta: diferencias <5 % en desplazamiento máximo y energía elástica, y convergencia de norma \(L_2\); las singularidades puntuales no se comparan.
E. Recubrimiento elastoplástico gradado
- Sustrato, \(h_c\), perfiles Al–316L e igual masa areal.
- elasticidad → Johnson–Cook nativo → daño nuevo, una complejidad por vez.
- Interfaz perfectamente adherida primero; cohesiva solo con datos.
Puerta: cada nuevo modelo reproduce sus cupones/benchmarks y la respuesta elástica previa en su límite.
F. DOE y mapa de regímenes
Clasificar: elástico; plasticidad localizada; cráter residual; daño iniciado; falla constitutiva. “Remoción” y “erosión acumulada” quedan fuera salvo validación experimental explícita.
Diseño de experimentos secuencial
No se cruza desde el inicio toda incertidumbre fluida con toda incertidumbre material.
- Fluido: 3 valores de \(\gamma\) × 3 de \(p_{g0}/p_\infty\), más réplicas numéricas de nivel/CFL en tres puntos: 15 casos físicos y 12–18 de convergencia.
- Elástico: factorial pequeño \(h_c/R_0=\{0.06,0.15,0.30,0.61\}\), perfil homogéneo/creciente/decreciente y \(n=1\) donde aplica, para dos cargas: 20 configuraciones tras eliminar duplicados.
- No lineal: Latin hypercube máximo-proyección de 48–64 puntos en \(h_c/R_0,n,Z_{sup}/Z_l,\sigma_y,p_{g0},\gamma\) y parámetros de tasa. Se añaden 10 puntos de validación fuera del entrenamiento.
- Adaptación: un proceso gaussiano o polynomial chaos identifica frontera entre regímenes; se agregan lotes de 8 puntos donde la entropía de clasificación sea mayor.
- Incertidumbre: 200–1000 evaluaciones del surrogate para Sobol/intervalos; 5–10 simulaciones directas confirman colas críticas.
Se bloquean previamente variables de proceso no identificables. El muestreo, semilla y matriz exacta se versionan. Las comparaciones de igual masa y de igual espesor son dos bloques distintos.
Variables de salida y clasificación
| Fluido | Sólido |
|---|---|
| \(R(t)/R_0\), interfaz, \(t_c\) | desplazamiento máximo y residual |
| \(u_j,d_j\), tiempo de impacto | profundidad/radio de cráter geométrico |
| pico y FWHM por sensor | \(\bar\varepsilon_p\), tasa máxima |
| \(I(r),F_z(t),\int F_zdt\) | tensiones principales y triaxialidad |
| energía cinética/compresible | daño, volumen dañado y estado de interfaz |
| balances de masa/energía | energías elástica, plástica, viscosa y cinética |
- Daño iniciado: variable alcanza el umbral calibrado en volumen finito.
- Craterización: desplazamiento residual medible, aun sin daño.
- Falla constitutiva: el modelo pierde capacidad portante según su ley.
- Remoción: separación geométrica/másica demostrada, no mero
D=1. - Erosión acumulada: pérdida por población de impactos y evolución material; requiere múltiples colapsos y calibración.
Costo computacional preliminar
Son rangos de planificación, no benchmarks. Se reemplazan por tiempos medidos en la etapa A y se publican hardware, eficiencia y energía de cómputo.
| Etapa/caso | Recursos orientativos | Costo por caso | Almacenamiento útil |
|---|---|---|---|
| A: esférico/onda | 1–32 CPU, minutos–2 h | 1–50 core-h | <2 GB |
| B: axi nivel 14 | 64–256 CPU, 2–8 h | 128–2048 core-h | 5–30 GB |
| B: axi nivel 15/16 | 128–512 CPU, 8–48 h | 1000–25000 core-h | 20–150 GB |
| C/D: Kratos MPM elástico 100 µm | 1 nodo OpenMP; medir antes de escalar | por determinar con benchmark | 10–80 GB |
| D: FEniCSx lineal | 16–128 CPU, 0.5–4 h | 8–512 core-h | 2–20 GB |
| E: MPM 50 µm/no lineal | no estimado hasta validar constitutivo y escalado | por determinar | 50–500 GB |
| F: campaña | arreglos de 48–100 casos | \(10^5{-}10^6\) core-h | 2–20 TB crudos |
No se guardan dumps completos en cada paso. Se retienen checkpoints espaciados, campos en ventanas de impacto, métricas reducidas y cargas HDF5; la política de retención se define antes de enviar el barrido.
Ejecución HPC reproducible
- Compilar Basilisk y ejecutar Kratos 10.4.3 en un contenedor Linux reproducible; fijar commit, paquetes, compilador y número de hilos OpenMP. MPMApplication no se presenta como ruta MPI soportada en la release auditada.
- Ejecutar una prueba corta en el nodo de login solo para configuración; usar Slurm job arrays por matriz de casos.
- Escribir checkpoints a scratch local, copiar atómicamente artefactos completos y verificar SHA-256.
- Reanudar por ID de caso; nunca sobrescribir una corrida completa.
- Reducir cargas y métricas dentro del job para evitar I/O masivo.
- Registrar tiempo de pared, core-h, memoria máxima, pasos, celdas/partículas y razón de fallas.
- Publicar scripts, configs y fixtures pequeños en Git; datos grandes con DOI y manifiesto de hashes.
Estructura propuesta del artículo
- Introducción: daño por un colapso, gradación de impedancia y vacío de acoplamiento reproducible.
- Pregunta e hipótesis: alcance de pared rígida y gas de masa fija.
- Método fluido: all-Mach VOF, EOS, dominio, AMR y extracción.
- Transferencia: HDF5, operador \(M_{ai}\), conservación y sincronización.
- Método sólido: Kratos MPMApplication, dominio, constitutivo y gradación.
- Verificación/validación: solvers separados, mapping y FEniCSx.
- Diseño paramétrico e incertidumbre.
- Resultados: carga convergida, respuesta elástica, plasticidad y mapa de regímenes.
- Discusión: mecanismos de onda, tasa, fabricabilidad y límites de acoplamiento.
- Conclusiones y datos/código disponibles.
La primera versión puede terminar tras la respuesta elastoplástica sin daño si la calibración no es defendible. Es preferible un resultado limitado y verificado a una afirmación de erosión sin sustento.
Figuras de publicación
- Geometría, ejes, \(R_0,H,h_c,R_{map}\) y flujo de datos.
- Auditoría EOS: \(p,e,c\) y estado inicial de ambas fases.
- \(R(t)/R_0\) contra RP/Keller–Miksis y convergencia de \(t_c\).
- Secuencia de interfaz/chorro cerca de pared con resolución AMR.
- Mapa \(p_w(r,t)\), fuerza total y ventana del pulso.
- Pico e impulso frente a nivel, CFL y diámetro de sensor.
- Error de columnas de \(M\), fuerza e impulso del mapeo.
- Benchmark de onda MPM y comparación MPM–FEM del MVP.
- Perfiles \(\rho,E,\nu,Z,\sigma_y\) y masa areal de cada gradación.
- Campos 3-D de desplazamiento, plasticidad y energía por perfil.
- Diagrama de reflexión/transmisión y series en interfaces.
- Mapa de regímenes con intervalos de incertidumbre y frontera del surrogate.