The CoreUnsteadyProblem and UnsteadyProblem classes (found in _core.py and problems.py) use a strict attribute classification system to manage simulation data. Understanding these categories is essential for interacting with solver results.
Immutable Attributes
These are set during __init__ and never modified. They define the simulation parameters and constraints.
movement (Movement): The movement definition (only on UnsteadyProblem).only_final_results (bool): Flag for result reporting.num_steps (int): Total number of steps (copied from Movement).delta_time (float): Time step size (copied from Movement).first_averaging_step (int): The step index where averaging begins.first_results_step (int): The step index where results are first recorded.max_wake_rows (int | None): Maximum wake rows (copied from Movement).steady_problems (tuple[SteadyProblem, ...]): A collection of steady problems (only on UnsteadyProblem).
Mutable Attributes (Solver Results)
These are initialized as empty lists and populated by the solver during the simulation. They contain the raw data for each Airplane in the simulation. The G and Cg IDs refer to the entry's own geometry axes and CG respectively.
Force and Moment Lists:
finalForces_W, finalForceCoefficients_W, finalMoments_W_CgP1, finalMomentCoefficients_W_CgP1 (Wind axes)finalForces_G, finalForceCoefficients_G, finalMoments_G_Cg, finalMomentCoefficients_G_Cg (Geometry axes)finalMoments_W_Cg, finalMomentCoefficients_W_Cg (Wind axes, own-CG)finalMean... and finalRms... variants for cycle-averaged and RMS counterparts of the above.
Derived Read-Only Properties
These properties do not store data; they are recomputed on every access to ensure they reflect the current state of the mutable lists. They provide named aerodynamic components (e.g., Lift, Drag, Rolling Moment) extracted from the raw force/moment lists.