A BasicReactionSupporter is used for testing. It is the simplest class that can implement the ISupportsReactions interface (it also implements IXmlPersistable...)
A class that holds useful chemistry constants.
Class MaterialCatalog stands alone, or serves as a base class for any object that manages instances of MaterialType. In this case, to "manage" means to be a point of focus to supply a requester with a material type that is specified by name ur unique ID (Guid). This is often kept at the model level in a model that represents or contains chemical reactions.
A MaterialConduitManager handles replenishment and drawdown from a primary resource manager (i.e. pool) to one or more secondary managers in the case that the primary resource manager either cannot satisfy a request from, or cannot accept a release to, the pool it manages. One might think of it as an intermediary between a ready tank and an inventory tank, or a waste tank and a reclamation plant.
Class MaterialResourceItem is a resource pool that contains a quantity of a substance, and acts as a resource manager for that substance, processing Material Resource Requests.
Class MaterialResourceRequest is a Resource request that requests a specified quantity of a specified material type be added to or removed from a specified MaterialResourceItem.
A Mixture is a collection of consituent materials that share the same temperature. Reactions can take place within a mixture, if that mixture is being watched by a ReactionProcessor.
Class MaterialChangeDistiller is an intermediary between a mixture and its change event listeners. When Hold() is called, it captures and stores all change events. When release is called, if issueSummaryEvents is set to true, it creates a set of summary events that summarize each of the change types (mass, temperature and constituents) into the minimum number of events necessary to represent those changes. This is useful for ongoing processes when you only want to log material changes at the start and end of a complex series of steps.
A Reaction is a class that characterizes a chemical transformation. A reaction represents that when it occurs, 'a' mass units of substance 'A' reacts with 'b' nass units of substance 'B' to yield 'c' mass units of substance 'C' and 'd' mass units of substance 'D'. Additionally, it represents that the reaction will habben with a forward execution percentage of 'x' percent, and were it to execute 100%, it would yield or consume 'y' energy units - permitting it to be an endothermic or exothermic reaction.
A ReactionParticipant is a struct that represents a material type and a mass, depicting the type and representative quantity of a material that will take place in a reaction. Note that the quantities are specified in proportion only.
An exception that is thrown if there is a cycle in a dependency graph that has been analyzed.
A ReactionInstance is created every time a reaction takes place. It records what reaction took place, how much of the reaction took place (i.e. percent completion) in both the forward and reverse directions, and the percent of completion the reaction had been told to attempt to accomplish, in case the value were to be changed in the reaction, later (such as as a result of a change in temperature.)
A reaction processor knows of a set of chemical reactions, and watches a set of mixtures. Whenever a material is added to, or removed from, a mixture, the reaction processor examines that mixture to see if any of the reactions it knows of are capable of occurring. If any are, then it proceeds to execute that reaction, eliminating the appropriate quantity of reactants, generating the appropriate quantity of products (or vice versa) and changing the mixture's thermal characteristics.
A substance is a homogeneous mixture - one constituent. Typically, this is a single element or compound. Temperatures externally are always presented in degrees celsius.
Implemented by anything that can hold a mixture, and has a capacity.
Interface IHasMaterials is implemented by any object that serves as a librarian for material types, which are held in a MaterialCatalog.
Implemented by anything that is a material - Substances and Mixtures are current examples.
ISupportsReactions is an entity that keeps track of reactions and materials, and provides each a place to acquire references to the other. If you define a reaction with Potassium in it, and use the Potassium material type to create some potassium, you can be sure the potassium will be able to react if the material is made from the MaterialCatalog, and the reaction is stored in the ReactionProcessor of, the same instance of ISupportsReactions.
Fired after a change in mass, constituents or temperature has taken place in this mixture.
A delegate that indicates acceptance of a material type, for example, for inclusion in a mole fraction or partial pressure computation. This delegate returns true to indicate that the material passes the filter criteria.
Implemented by a method that can be notified when a reaction is going to happen.
Implemented by a method that can be notified after a reaction has happened.
Delegate implemented by a method that wants to be called when a reaction is added to or removed from, a ReactionProcessor.
An enumeration that describes the kind of change that has taken place in a material.
Enum Direction specified whether a resource request aimed at a MaterialResourceItem intends to take from (deplete) or add to (augment) the quantity of substance in that MaterialResourceItem.
Enum MaterialState represents the current (or initial) state of a material. It is used if the modeler wishes to represent the thermodynamic effects of state change, and if they do, then Latent Heat of Vaporization and SpecificHeat must be provided. Note - the mechanisms for modeling thermal transition to the solid state are not present, as this is a rare transition to occur in manufacturing processes - at least no need has yet been encountered.
Describes the role a material plays in a reaction.