Skip to content

Commit

Permalink
Merge branch 'solver-testing' of https://github.com/jon85p/pyENL into…
Browse files Browse the repository at this point in the history
… solver-testing
  • Loading branch information
xmagor committed May 10, 2020
2 parents e345a1c + 3494499 commit 4f7aec0
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
# pyENL designa acá el vector de posibles soluciones que se está probando


def pyENL_sistema(pyENL, pyENL_variables, pyENL_eqns):
def pyENL_sistema(pyENL, pyENL_variables, pyENL_eqns, indices = None):
'''
Evalúa el sistema de ecuaciones que ingresa el usuario donde:
pyENL: Valores numéricos para evaluar
Expand Down Expand Up @@ -75,38 +75,38 @@ def pyENL_sistema(pyENL, pyENL_variables, pyENL_eqns):
# print("-------" + er)
clase = str(e.__class__)
if clase == "<class 'TypeError'>":
raise Exception("Error de tipeo en ecuación " + str(cont + 1))
raise Exception("Error de tipeo en ecuación " + str(indices[cont] + 1))
if 'Cannot convert' in er or 'is not defined in the unit registry' in er:
raise Exception('Error de unidades en la ecuación ' + str(cont + 1) + ': ' +er)
raise Exception('Error de unidades en la ecuación ' + str(indices[cont] + 1) + ': ' +er)
if 'invalid syntax' in er:
raise Exception(
'Error de sintaxis en la ecuación ' + str(cont + 1))
'Error de sintaxis en la ecuación ' + str(indices[cont] + 1))
elif 'is not defined' in er:
# Acá no se ha definido una función.
raise Exception('No se ha definido a ' + er
[6:-16] + " en la ecuación " + str(cont + 1))
[6:-16] + " en la ecuación " + str(indices[cont] + 1))
elif 'unsupported operand type(s)' in er:
# En este caso se intenta usar un nombre de función como
# variable
raise Exception('Nombre de función como variable en ecuación '
+ str(cont + 1))
+ str(indices[cont] + 1))
elif ('required positional arguments' in er) or ('invalid number of arguments' in er):
# Acá no se han suministrado suficientes argumentos a la
# función
raise Exception('Faltan argumentos en función de la ecuación '
+ str(cont + 1))
+ str(indices[cont] + 1))
elif 'Not implemented for this type' in er:
# Se ingresan variables no numéricas a la función
raise Exception('Tipo de variable inadecuado en función de ecuación '
+ str(cont + 1))
+ str(indices[cont] + 1))
elif 'return arrays must be of ArrayType' in er:
# Acá no se ingresaron bien valores a una función NumPy:
raise Exception('Mala entrada a función en la ecuación ' +
str(cont + 1))
str(indices[cont] + 1))
elif 'No se tienen los valores' in er:
# La funció pyENL lanza la excepción por no tener suficientes
# variables para operar
raise Exception(er + ' en la ecuación ' + str(cont + 1))
raise Exception(er + ' en la ecuación ' + str(indices[cont] + 1))
elif 'debe tener unidades' in er:
raise Exception(er + ' en la ecuación ' + str(cont + 1))
elif ('invalid value encountered in sqrt' in er
Expand Down Expand Up @@ -292,7 +292,7 @@ def solver(pyENL_eqns, pyENL_variables, tol=None, method='hybr',pyENL_timeout=10
# for cont in range(0, len(pyENL_variables)):
# pyENL_variables[cont].guess = pyENL_sol['x'][cont]
sol_sistema = [x.guess for x in pyENL_variables]
pyENL_residuos = pyENL_sistema(sol_sistema, pyENL_variables, pyENL_eqns)
pyENL_residuos = pyENL_sistema(sol_sistema, pyENL_variables, pyENL_eqns, None)
return pyENL_variables, pyENL_residuos, asegura_convergencia

def agregaUnidades(eqn_, pyENL_variables):
Expand Down

0 comments on commit 4f7aec0

Please sign in to comment.