The Output class is composed of several subclasses corresponding to physical domain (Output.Electrical, Output.Structural...). The Output object is instantiated by the Simulation method run(). Each Output sub-object (i.e. physics) contains mostly the same data, organized in the same way whatever model was used to compute it. For instance an Output.Magnetics will contains the airgap flux matrix (defined in the same way) whether it was computed by an analytical model or the coupling with FEMM.
Each model return a core set of output and can add its own dedicated output and post-processing if needed. For instance, one can store the mesh generated by FEMM in the output object for later use. The core set of output enables to make sure that the post-process will work regardless of how it was computed and the dedicated output enables to go further for each model.
PYLEECAN also includes options to select how many output data should be saved in the Output object. From keep everything to only the strict minimum (with the constraints that some post-processing may not be available). This option is particularly important for multi-simulations like optimization.