domingo, 10 de agosto de 2025

Generacion de videos con OpenSWPC

Hay dos opciones para reducir el tamaño de los datos de un snapshot: reducir la cantidad de datos por snapshot o reducir el número de snapshots.

 

a) Reducir la cantidad de datos por snapshot 

Primero, la resolución espacial del snapshot está determinada por los parámetros nx/idec, ny/jdec y nz/kdec. El tamaño de la malla de tu simulación numérica actual es muy grande horizontalmente, con nx/idec = ny/jdec = 12069.

La visualización asigna los valores de amplitud de este snapshot a píxeles. Es decir, en tu caso, la visualización del plano horizontal genera imágenes de 12069 × 12069 píxeles. Sin embargo, dado que la resolución de pantalla normalmente está en el orden de 10³, no tiene mucho sentido crear una imagen con un número de píxeles mayor que esa resolución. Por experiencia, una imagen con nx/idec de 1000 a 2000 es suficiente para obtener un resultado visualmente atractivo. Por lo tanto, podrías aumentar los valores de idec, jdec y kdec para reducir considerablemente el tamaño de los datos de los snapshots.

 

 

En el contexto de OpenSWPC, significa lo siguiente:

  • nx, ny y nz → son el número de puntos de malla en las direcciones X, Y y Z de tu simulación. En tu caso, tu malla es muy grande horizontalmente, y eso produce snapshots (salidas intermedias) con muchísimos puntos.

  • idec, jdec y kdec → son factores de decimación (decimation factors). Le indican a OpenSWPC que no guarde todos los puntos de la malla en el snapshot, sino que “salte” puntos.

    • Por ejemplo, si idec = 2, OpenSWPC guardará solo 1 de cada 2 puntos en la dirección X.

    • El valor efectivo de resolución del snapshot en esa dirección será nx / idec.

  • En tu caso:

    nx / idec = 12069
    ny / jdec = 12069

 

  • Esto significa que cada imagen del plano horizontal que guardas tiene 12069 × 12069 puntos, que el software de visualización mapea directamente a píxeles en una imagen.

  • El problema: 12069 píxeles por lado es una resolución masiva (≈ 145 millones de píxeles por imagen), y la mayoría de las pantallas solo muestran resoluciones de ~1000–2000 píxeles por lado (por ejemplo, 1920×1080 en Full HD). Así que generar imágenes con más resolución de la que puedes visualizar no mejora la calidad percibida, pero sí aumenta muchísimo el tamaño de los archivos.

  • La solución que propone Takuto: aumentar idec, jdec y kdec para que la resolución final de los snapshots sea menor (por ejemplo, nx / idec ≈ 1000–2000), reduciendo drásticamente el tamaño de los datos sin pérdida apreciable de calidad visual para propósitos de visualización.

En otras palabras, la recomendación es:

“No necesitas guardar cada punto de la malla si al final lo vas a visualizar en una pantalla. Guarda solo una versión reducida, usando los parámetros de decimación, para que los archivos sean más pequeños pero igual de útiles para ver.”

 

 

 

 

b) Reducir el numero de snapshots  

Este se determina con nt/ntdec_s. Con los parámetros que indicaste, se generarían 1000 imágenes. La velocidad de fotogramas típica de un video es de 24 a 60 fps, así que 1000 imágenes equivalen a entre 16 y 41 segundos de video. Conviene evaluar si esto es adecuado para el video que quieres mostrar. Mi impresión es que este ajuste está dentro de un rango apropiado, pero si lo vas a usar para una presentación en conferencia, quizá quieras aumentar un poco ntdec_s para acortar la duración del video.

En resumen, mi recomendación es:

idec = 20
jdec = 20
kdec = 5
ntdec_s = 200
 

En OpenSWPC, el número de snapshots (imágenes) que se generan durante la simulación depende de los parámetros nt y ntdec_s.

  • nt es el número total de pasos de tiempo de la simulación.

  • ntdec_s es el factor de decimación temporal que indica cada cuántos pasos de tiempo se guarda un snapshot.

Por ejemplo, si nt = 20000 y ntdec_s = 200, se guarda 1 imagen cada 200 pasos, lo que produce: 20000 / 200 = 100 imágenes

 

En el caso descrito en el correo, con los parámetros iniciales (nt / ntdec_s ≈ 1000), el resultado es que se generan 1000 imágenes. Si luego se usan como fotogramas para un video:

  • A 24 fps (fotogramas por segundo) → el video dura aproximadamente 41 segundos.

  • A 60 fps → dura alrededor de 16 segundos.

Esto implica que:

  • Si el video se utilizará para análisis detallado, la cantidad de imágenes es adecuada.

  • Si es para una presentación en conferencia, podría convenir aumentar ntdec_s para reducir el número de imágenes y acortar la duración del video.

La recomendación del especialista Takuto para optimizar el tamaño y duración de los snapshots fue:

 

idec = 20
jdec = 20
kdec = 5
ntdec_s = 200
 

Con estos valores:

  • La resolución espacial disminuye, reduciendo drásticamente el tamaño de los archivos.

  • La resolución temporal también baja, generando menos imágenes y un video más corto.

  • El tamaño final de cada snapshot se reduce aproximadamente a 1/50 del original.

Esta configuración logra un equilibrio entre calidad visual y tamaño de archivo,
 facilitando el manejo y la visualización de los resultados de la simulación.

 

 
module load hdf/5-1.8.15/intel-2015-update2
module load netcdf/4.3.3.1/intel-2015-update2
module load netcdf-fortran/4.4.1/intel-2015-update2 
 
 
OpenSWPC also comes with dedicated tools for visualization.
 
  /home/ucfbmve/OpenSWPC-5.3.1/bin/read_snp.x -i /home/ucfbmve/Scratch/KF_tests/out/Mref_B_full_L2b_S1.xz.v.nc
-ppm -pall -mul 10
 (comprimir para bajar al computador personal)
 tar -cvJf ppm.tar.xz ppm/ 
 
Let us confirm the result as an animation movie by using ffmpeg.
! ffmpeg -i ppm/swpc.xz.v2.%6d.ppm -qscale 0 -pix_fmt yuv420p -y swpc.mp4 
 

No hay comentarios:

Publicar un comentario