Changes to PNM save/load
- It now loads objects with exact class, not a Generic version
- It uses pickle instead of numpy.save, but this doesn't make much difference.  Maybe slower?
KNOWN PROBLEMS
- It will still break when saving mixtures
- It loses all 'attributes' like network size and such.
Fiddling with IO.PNM
Change imports in almost all files
- It seems that if you import OpenPNM, then create an object, the import OpenPNM AGAIN that pickles will fail, since Python gets confused by the second import not matching the object created by the first import.
- This fixes the save/load problem but seems very fragile.
PNM.save/load now saves models as functions directly, rather than as string references to the location of the function...duh, why didn't I do this originally?
Save/Load now captures all attributes too!
- It scans through the __dict__, removes known OpenPNM.Base attributes (like _physics), and the stores the rest
- Upon loading, it simple appends all these attributes to the new object
IO no longer deletes the logger...this is not needed for the approach used.
Changes to the way mixtures are handled.  They now work reasonably well.
- When a pure component is sent to a mixture, the mixture is stored under component._phases
- Also, the pure components are stored under mixture._phases
- A change was made to the mixture_prop models so that pure components look into the mixture to get new temperature, pressure, or whatever, instead of the mixture sending it's temp/press/etc to the pure component
- Had to change the way regenerate works.  It was doing a recursive thing that cause an infinite loop.  Now when a phase is regenerated it regenerates all of its associated phases first, then itself.  So if air has a new temperature change, air.regenerate will update O2 and N2's temperature, then all of their properties, THEN air will regenerate using those updated properties.  Same result as before, no infinite loop.