Ask Your Question

Revision history [back]

To do this programmatically, I use the solved function. It looks at the last solution and returns an error code > 0 if there was a problem and returns 0 for no problem.

Assuming you have psspy.throwPsseExceptions = True near the start of your file:

import psspy
psspy.throwPsseExceptions = True
ITERATION_LIMIT = 1

def solve_and_reattempt(attempts=3):
    for attempt in range(attempts):

        try:
            return psspy.fnsl()

        except psspy.FnslError:

            # an error solving, if iteration limit reached resolve
            if psspy.solved() == ITERATION_LIMIT:
                continue
            #  else re-raise Error
            else:
                raise

and you would use the solve_and_reattempt function like this:

solve_and_reattempt(attempts=2)