# Namespace Guide

This is a guide to the top level namespaces in the Sage libraries.

We recommend that you start browsing this documentation by visiting the SimCore namespace, then the Utility namespace, and probably Resources next. That should give you enough foundation to know where you want to go after that.

In any case, we also recommend that you visit our Tutorials content to get a better feel for the entire library and the approach to modeling and simulation that it enables.

## Highpoint.Sage.SimCore

This namespace contains the core classes needed for constructing models and running simulations. These classes include executives (a.k.a. calendars,) models, state machines, metronomes, rate controllers, synchronizers and initialization infrastructure.

## Highpoint.Sage.Dependencies

This namespace contains classes for calculating a dependency sequence - that is, with a number of items, each of which may depend on some other items, calculates the sequence, if there is one, where each item is preceded in the sequence by all items on which it depends.

## Highpoint.Sage.Diagnostics

This namespace contains DiagnosticAids, a helper class, and EventLogger, which logs all events fired by an executive.

## Highpoint.Sage.Graphs

This namespace contains the classes necessary to model two different types of graphs, the TaskGraph and the Procedure Function Chart (as defined in the ISA S88 standard for depicting procedural control in master and control recipes.) It contains subordinate namespaces for analysis of these graphs, including detecting cycles, deadlocks, structure errors, finding critical paths, and more. It also contains a mechanism for executing a Procedure/Sequential Function Chart in the simulation engive as a Batch Executive would. See this PFC Execution white paper (http://www.highpointsoftware.com/documents/PFCSimControl.pdf) for details.

## Highpoint.Sage.ItemBased

This namespace contains classes necessary to support a simulation control mechanism consisting of blocks with ports that are "wired together" with connectors. There are subordinate namespaces with classes that implement servers and queues, splitters and joiners, sinks, sources, and data collection mechanisms. Such models are common in the modeling and simulation world.

## Highpoint.Sage.Licensing

This namespace contains the classes necessary to implement a very flexible licensing scheme.

## Highpoint.Sage.Materials

This namespace contains Vessels, Substances, Materials and Mixtures. It also contains classes necessary to effect and track material requests and transfers. Subordinate namespaces contain classes for modeling endo- and exo-thermic chemical reactions. environmental emissions, thermodynamics of mixtures in vessels, and calculating vapor pressures.

## Highpoint.Sage.Mathematics

This namespace contains classes for distributions, histograms, interpolation, and linear regressions, as well as applying scaling operations to objects. It also includes some useful extension methods for statistical and other computations.

## Highpoint.Sage.Persistence

This namespace contains classes to support a persistence mechanism that builds on LINQ-to-XML.

## Highpoint.Sage.Randoms

This namespace contains classes for the Random Server, a mechanism for issuing streams of independent but repeatable random numbers from distinct Mersenne Twister RNGs. The server can be set to use a double buffer, generating new random numbers into one buffer while serving them from the other, to take advantage of multiple processors.

## Highpoint.Sage.Resources

This namespace contains classes that implement Sage's resource model. These classes include interfaces and implementations for resources, resource managers (a.k.a. pools), resource requests, as well as tracking and earmarking mechanisms.

## Highpoint.Sage.Scheduling

This namespace contains classes that represent time periods constrained by start or finish times or duration (or any two of the three), milestones, and relationships between the milestones.