Tengo dos versiones de un código hidrodinámico que tiene la misma física subyacente; llamémoslos código A y B. Sin embargo, el código B está más optimizado y más orientado a objetos que el A. Estaba tratando de comparar los resultados numéricos de ambos códigos y ver si parecen compatibles. La forma en que estoy haciendo esto es ejecutando ambos códigos con los mismos parámetros iniciales y calculando un valor hidrodinámico X particular, que está en el orden de magnitud de . Para comparar ambos códigos, esencialmente estoy haciendo
X(A)−X(B)=ϵ donde ϵ es algún error. la prueba esta dando , lo que significaría que ambos códigos escupen la misma X para los primeros 8 dígitos.
¿Qué tan significativo es este error? Estoy usando doble precisión para números no enteros, ¿tal magnitud simplemente implicaría un error de redondeo acumulativo para los miles de cálculos involucrados en un código hidrográfico? ¿O una diferencia fundamental que me estoy perdiendo?
La mejor manera de ver la precisión de un código de hidrodinámica es probarlo con soluciones analíticas. Como mencionó Winther en los comentarios, el tubo de choque Sod es una de las pruebas más comunes para 1D hydro (el análogo magnetohidrodinámico (MHD) de esto se llama tubo de choque Brio-Wu )
Para otras pruebas (de cualquier dimensión, pero sin la solución analítica), lo que está haciendo está bien (y a menudo se realiza en códigos académicos profesionales, por ejemplo, este conjunto de pruebas de Athena menciona el uso del conjunto para sus propias comparaciones).
Dependiendo de norma que está utilizando allí (parece ser ), creo que la diferencia es aceptable. Es probable que el origen de la diferencia se deba a un indicador de optimización o a través de una diferencia algorítmica en el código 'más OOP', pero sin más pruebas que comparen los dos, uno no podría decir cuánto va a diferir esto en otras pruebas o en los 'miles de cálculos involucrados' en sus simulaciones.
dmckee --- gatito ex-moderador
maniquí matemático
tpg2114
invierno