Guía de Trabajo Práctico 3#
Materia: Aprendizaje Profundo Basado en la Física (optativa del Instituto Balseiro)
Docente: José I. Robledo
Edición: abril-mayo 2026
Problema 1: PINN en PyTorch para Poisson 1D#
Resolver
$\(
u''(x) = -\pi^2 \sin(\pi x), \quad x\in[0,1],\quad u(0)=u(1)=0
\)$
cuya solución analítica es u(x)=sin(pi x).
Crear una red pequeña
x -> u(x).Muestrear puntos interiores y de borde.
Usar
autogradpara obteneru_xyu_xx.Construir una loss con residual de PDE y condiciones de borde.
Entrenar y comparar contra la solución analítica.
Problema 2: Poisson 2D con DeepXDE#
Resolver con deepxde un problema de Poisson 2D sobre el cuadrado unitario .
con condición de borde homogénea y solución analítica $\( u(x,y) = -\sin(\pi x)\sin(\pi y). \)$
Definir la geometría del cuadrado unitario.
Declarar la PDE y la condición de borde de Dirichlet homogénea.
Armar el objeto
dde.data.PDE.Entrenar una red
FNNque estime la solución en el dominio.Evaluar la solución sobre una grilla y compararla con la expresión analítica.
Problema 2.b: Helmholtz 2D con métrica de prueba y ajuste de hiperparámetros (OPCIONAL)#
Retomar el problema anterior de Poisson 2D, cuya solución analítica era
Observar que, para esta solución particular, se cumple que
de modo que el mismo campo puede reinterpretarse como solución de una ecuación de Helmholtz homogénea:
con condición de borde de Dirichlet homogénea
y con
Resolver este problema con DeepXDE, usando como solución de referencia
Definir la geometría rectangular y escribir el residual de la ecuación de Helmholtz usando derivadas automáticas de segundo orden.
Declarar la condición de borde de Dirichlet homogénea, o bien imponerla mediante una transformación de salida si se desea trabajar con restricciones duras.
Construir el objeto
dde.data.PDEincluyendo la solución exacta para poder evaluar una métrica de prueba razonable durante el entrenamiento.Entrenar una red
FNNutilizando, por ejemplo, la métrica"l2 relative error"para monitorear la calidad de la solución sobre el conjunto de test.Comparar la solución predicha con la solución analítica sobre una grilla bidimensional y reportar el error final.
Realizar una optimización de hiperparámetros inspirada en el demo oficial de
DeepXDEpara Helmholtz 2D, explorando al menos tasa de aprendizaje, cantidad de capas, número de neuronas por capa y función de activación.Definir una función objetivo razonable para la optimización, por ejemplo el mínimo error de test o la mejor métrica
l2 relative errorobtenida durante el entrenamiento.Presentar la mejor configuración encontrada y compararla con una configuración base.
Problema 3: Estimar la difusividad térmica: problema inverso#
Se considera la ecuación de difusión unidimensional: $\( u_t = \alpha u_{xx} \)$
donde \(u(x,t)\) representa la temperatura y \(\alpha > 0\) es la difusividad térmica desconocida. Supongamos que queremos estimar la solución con una PINN, en el dominio \(x \in [0,1]\) y \(t \in[0,1]\), con condiciones iniciales \( u(x,0) = \sin(\pi x)\), \(u(0,t) = 0\) y \(u(1,t) = 0\).
Cargar los datos observados de data/difusion_1D.csv. Contiene valores de \((x, t, u(x,t)\) para varios pares \((x,t)\) en el dominio mencionado.
Utilizando
dde.icbc.DirichletBCpara las condiciones de contorno,dde.icbc.ICpara las condiciones iniciales, ydde.icbc.PointSetBCpara los puntos de colocacion provistos, entrenar una PINN dependiente del tiempo condde.data.TimePDEque estime el valor del parámetro \(\alpha\). TIP: estas clases están pensadas para trabajar con numpy arrays.Entrenar el modelo durante 5000 épocas con el optimizador Adam, y luego utilizar L-BFGS para el refinamiento de la solución.
Problema 4: Viga estática simplemente apoyada#
Considere una viga unidimensional simplemente apoyada, modelada en forma adimensional por la ecuación de Euler-Bernoulli
donde \(\hat{w}(\xi)\) representa la deflexión adimensional de la viga.
Las condiciones de borde para una viga simplemente apoyada son:
La solución analítica del problema es
Resolver este problema con DeepXDE usando el backend de PyTorch.
Definir la geometría unidimensional sobre el intervalo \([0,1]\).
Implementar la PDE usando derivadas automáticas hasta cuarto orden.
Imponer las condiciones de borde esenciales \(\hat{w}(0)=\hat{w}(1)=0\) con
dde.icbc.DirichletBC.Imponer las condiciones de borde naturales \(\hat{w}''(0)=\hat{w}''(1)=0\) con
dde.icbc.OperatorBC.Construir el objeto
dde.data.PDE, entrenar una redFNNprimero con Adam y luego refinar con L-BFGS.Evaluar la solución aprendida en una grilla uniforme, compararla con la solución analítica y reportar el error relativo \(L^2\).
Graficar la solución exacta, la aproximación de la PINN y el error absoluto.
Problema 5: Viga dinámica apoyada#
Considere ahora la versión dinámica de la viga apoyada, modelada en variables adimensionales por la ecuación
para \((\xi,\tau) \in (0,1) \times (0,1)\), donde \(\hat{w}(\xi,\tau)\) representa la deflexión transversal adimensional.
Las condiciones de borde espaciales de una viga simplemente apoyada son
Además, se imponen las condiciones iniciales
donde \(a>0\) es una amplitud dada.
La solución exacta correspondiente al primer modo es
Resolver este problema con DeepXDE usando el backend de PyTorch.
Definir el dominio espacio-temporal usando
dde.geometry.Interval,dde.geometry.TimeDomainydde.geometry.GeometryXTime.Implementar la PDE dinámica usando derivadas automáticas de segundo orden en tiempo y cuarto orden en espacio.
Imponer las condiciones de borde esenciales \(\hat{w}=0\) con
dde.icbc.DirichletBCy las condiciones naturales \(\hat{w}_{\xi\xi}=0\) condde.icbc.OperatorBC.Imponer las condiciones iniciales de desplazamiento y velocidad usando
dde.icbc.ICydde.icbc.OperatorBC.Construir un objeto
dde.data.TimePDE, entrenar una redFNNcon Adam, usar pesos apropiados en la loss. OPCIONAL: puede investigar como implementar un callbackdde.callbacks.PDEPointResamplerpara remuestrear puntos de colocación cada 200 iteraciones.Refinar la solución con el optimizador
L-BFGS.Evaluar el error relativo \(L^2\) para distintos tiempos sobre una grilla espacial uniforme.
Graficar perfiles de la solución PINN para varios tiempos y comparar la solución exacta con la aproximación para un tiempo fijo.
OPCIONAL: Generar una animación o GIF que muestre la evolución temporal de la deformación de la viga y la comparación entre solución exacta y PINN.