def setup(self):
        """
        Set up the power system object by executing the following workflow:

         * Sort the loaded models to meet the initialization sequence
         * Create call strings for routines
         * Call the ``setup`` function of the loaded models
         * Assign addresses for the loaded models
         * Call ``dae.setup`` to assign memory for the numerical dae structure
         * Convert model parameters to the system base

        Returns
        -------
        PowerSystem
            The instance of the PowerSystem
        """

        self.devman.sort_device()
        self.call.setup()
        self.model_setup()
        self.xy_addr0()
        self.dae.setup()
        self.to_sysbase()

        return self