¿En qué consiste?
Mediante el método de Euler se simula el movimiento de partículas esféricas. Se pueden aplicar fuerzas entre partículas, fuerzas de fricción, ligaduras y fuerzas en función de la posición, tiempo y velocidad de la partícula, así como colisiones elásticas. La simulación se realiza en 3D, con representación gráfica en tiempo real usando la librería three.js.
Los pasos del método de Euler son, para cada partícula, a partir de los valores de posición x y velocidad v en un instante t:
- calcular la fuerza total aplicada a la partícula,
- calcular la nueva velocidad v(t+dt)=v(t)+F*dt,
- calcular la nueva posición x(t+dt)=x(t)+v(t+dt)*dt.
La precisión del método depende del intervalo de tiempo utilizado dt.
Guía de uso
Teclas para el movimiento de la cámara y de la simulación:
- Avanzar: W, cursor arriba o botón izquierdo del ratón
- Retroceder: S, cursor abajo o botón derecho del ratón
- Izquierda: A
- Derecha: D
- Arriba: R
- Abajo: F
- Q: el punto de vista de la cámara sigue el movimiento del ratón (pulsar Q de nuevo para desactivar)
- P: detiene/continúa la simulación
- Nota: las acciones asociadas a los movimientos y click del ratón no están activas en la parte alta de la pantalla, y no están activos cuando la cámara sigue a un objeto y la simulación está corriendo
Novedad octubre 2023: en dispositivos táctiles la cámara ahora se puede mover arrastrando con un dedo (rotación), arrastrando con dos dedos (desplazamiento) o haciendo zoom con dos dedos. Si el menú de parámetros de la derecha no se ve bien en una pantalla de móvil, se puede hacer zoom con dos dedos situándolos ambos encima del menú y abriendo. En dispositivos móviles algunas simulaciones con muchas partículas pueden ir lentas.
Menú de parámetros:
- Velocidad de la simulación. El valor 42 corresponde a tiempo simulación = tiempo de reloj.
- Sombras: activa sombras sobre el suelo
- Suelo: suelo visible
- Lineas: lineas entre objetos visibles (si están definidas en la simulación)
- Flechas: vectores velocidad visibles (si están definidas en la simulación)
- Para: detiene la simulación
Medidas de la simulación:
t es el tiempo transcurrido
E es la energía cinética de todas las partículas.
W es el trabajo, con dW=m*v*dv (el valor es aproximado por el método de simulación (Euler)
E+W suma de energía cinética y trabajo. Debe ser constante en sistemas conservativos, salvo errores de aproximación del método de Euler
Si se define una caja (como por ejemplo en la simulación de termalización), se cuenta el número de colisiones contra las paredes de la caja.
Posicionando el puntero del ratón sobre una partícula, aparecen las coordenadas y velocidad de la misma a la izquierda de la pantalla, salvo que la partícula se represente como un tipo Punto
Cómo se generan las simulaciones
Para generar el código html+javascript de cada simulación utilizo un libro Excel con código VBA. Los datos de la simulación (fuerza entre partículas, tamaño, masa, posición y velocidades iniciales de las partículas, posición de la cámara...) se definen en una hoja Excel y un programa realizado en VBA genera automáticamente el código de la simulación física y su representación gráfica, que es muy sencilla gracias a la excelente librería thrre.js. Asociado a cada simulación aparece una imagen de la hoja de cálculo que la genera.
Aquí puedes ver las hojas del libro Excel.Es una imagen web del libro. En la parte inferior aparecen los tabs a las hojas del libro.
Si estás interesado en que incluya alguna simulación en particular, puedes ponerte en contacto conmigo por correo electrónico (jmsanzgonzalez3001@gmail.com).
Limitaciones y problemas conocidos
- Para velocidades altas, el método de Euler es impreciso y puede generar resultados incorrectos.
- Dependiendo de dicha imprecisión, la conservación de la energía (cinética más trabajo) puede no ser exacta.
- Las colisiones múltiples de más de dos partículas no se calculan correctamente, ya que el cálculo es secuencial por parejas de partículas
- Las ligaduras (líneas rígidas uniendo dos partículas) no funcionan bien cuando una partícula tiene ligaduras con dos o más partículas.
- La detección de colisiones no evita que con fuerzas atractivas las partículas se solapen al cabo de un tiempo, sobre todo si la velocidad de la simulación es alta.
- Y lo más importante: three.js utiliza WebGL, por lo que se requiere un navegador compatible (Chrome, Firefox...) y un ordenador con cierta potencia gráfica.