jon85p / pyENL

Cross-platform engineering nonlinear equations systems solver [Under construction 🚧]
https://jon85p.github.io/pyENL/
MIT License
30 stars 6 forks source link

Error en bloques con ejercicio de prueba #37

Closed xmagor closed 3 years ago

xmagor commented 4 years ago

Se presenta el error TypeError: only size-1 arrays can be converted to Python scalars en la siguiente linea:

https://github.com/jon85p/pyENL/blob/fad5a168ff50c623840669b76402c89ef162cf0e/utils.py#L473

Se sospecha que la siguiente función no está haciendo bien su trabajo:

https://github.com/jon85p/pyENL/blob/fad5a168ff50c623840669b76402c89ef162cf0e/utils.py#L356

xmagor commented 4 years ago

Acá se encuentra el sistema de ecuaciones que presenta ese error: https://drive.google.com/open?id=1GcogkypT8JcOJzlWNnfytNyEnhTNqluI

xmagor commented 4 years ago

Se ha identificado los siguientes problemas con el sistema de ecuaciones

  1. El reportado en este issue con respecto a la codificación para abrir/guardar archivos en .enl #38
  2. missing unary operator "*"' : apareció en las unidades [kW/°C-m**2] al cambiar el "-" por un "/" dejó de aparecer el error.
  3. Ambiguous operation with offset unit (degree_Celsius, ). See https://pint.readthedocs.io/en/latest/nonmult.html for guidance.: La unidad de °C en la tabla de variables la detecta como degree_Celcius, pero a la hora de hacer un bloque como "T - 25[°C]" salía ese error, dejó de aparecer el error cuando cambié el °C por delta_degC tanto en el sistema de ecuaciones como en la columna de unidades de la tabla de variables 4.Temperature to QT_flash [97 K] must be in range [273.06 K, 647.096 K] : PropsSI("V","T",97,"Q",0,"Water") : la función prop debería convertir la unidad de C a K antes de calcularla con coolprop, por ahora está pendiente eso.

Lo extraño de estos errores es que 1. no disparan las execpciones y 2. que como el error aparece el bucle del bloque lo va mantener iterando hasta que se cumpla el tiempo limite, en teoria el error debería aparecer siempre, pero el bloque luego de un tiempo aparece resuelto, es decir, como si a veces aparecieran esos errores y luego que sigue intentando cambiando guesses ya dejen de aparecer, cosa que no le veo mucho sentido porque la unidad no tiene porque cambiar.

El archivo actualizado con los cambios mencionados se deja a continuación: https://drive.google.com/open?id=1URoewUi3l1gJ8Ly_1keNcpSK5pAJ5bFb

y se debe usar con la rama de solver-testing que es donde se está trabajando en el solver, dejo el commit https://github.com/jon85p/pyENL/commit/94b507339e9acea17ac4a908ef8a2c14f55ec4e2

xmagor commented 4 years ago

Para evitar el inconveniente con la unidad de la temperatura pasé todo a Kelvin ; también cambié un valor del sistema de eqn (variable F_f, me había equivocado).

Luego de eso, se identifica que no se reconocía la propiedad del Prandtl en la función: https://github.com/jon85p/pyENL/blob/953cc8c8e88f54c014d356e2d86b55c5d48615c0/pyENL_fcns/functions.py#L71 Y era porque faltaba agregarla al diccionario que relaciona el nombre de las propiedades con las unidades de coolprop, en el siguiente commit se agrega (igual sigue pendiente agregar el resto de propiedades adimensionales :D ) https://github.com/jon85p/pyENL/commit/953cc8c8e88f54c014d356e2d86b55c5d48615c0

Pero eso deja en evidencia una vez mas que siguen habiendo errores que deberían salir en una excepción pero no aparecen!

Subo la versión 3 del ejercició, converge con un pequeño margen de desviación en menos de 1 min!, dejo el enlace del ejercicio actualizado y una imagén del cálculo!

"evaporador_vertical_V3.enl" https://drive.google.com/open?id=1YTnRdY9wz0JomWAhvg3UPqSXd39VCMKR

imagen

xmagor commented 4 years ago

Se resuelve el inconveniente con los errores que no se mostraban luego de pasar por las excepciones 👀 https://github.com/jon85p/pyENL/commit/b1f55acf58f07932b4aa1281561089e9631ec1ea

había escrito mal la condición de una de las excepciones XD

jon85p commented 4 years ago

Jajajaja, damos por cerrado el issue entonces?

Se resuelve el inconveniente con los errores que no se mostraban luego de pasar por las excepciones eyes b1f55ac

había escrito mal la condición de una de las excepciones XD

xmagor commented 4 years ago

Si, lo único de todo lo que se mencionó que está pendiente es lo del manejo de los °C, que para evitar el problema se cambiaron los datos a K, pero eso se puede tratar aparte, cerremoslo cuando hagamos el merge

jon85p commented 4 years ago

Comentario de prueba