.. _smtk-overview: ------------------------------- An Overview of SMTK's Subsytems ------------------------------- SMTK's core library contains several subsystems, each of which is covered in depth in sections that follow this one. These subsystems are: * The **resource** system holds a set of base classes used by the systems below to provide basic provenance information about versions of data on disk. Each file is a *resource*, which may hold a resource of *resource components*; the *resource manager* assembles resources together for processing into a simulation input. * The **attribute** resource, which provides a way to specify how information should be organized for scientific and engineering workflows, accept that information from users, and ensure that it is consistent with the specification. * The **model** resource, which provides geometric modeling and allows you to tie information from the attribute resource to geometric entities (e.g., assign boundary conditions in the attribute resource to particular boundaries on a CAD model). * The **mesh** resource, which can manipulate meshes of geometric models; it provides a way to propagate simulation attribute information from model entities onto meshes. It also provides a way to run external mesh creation tools on the model. * The **operation** system, which provides an interface to constructing and executing *operators*, which create, modify and delete resources. * The **simulation** (also known as the **export**) system, which is a set of utilities that lets you convert resources (e.g., attribute, model, and mesh resources) into an input deck for a simulation using Python scripts (or C++ if you wish). * The **view** system provides user interface functionality that is independent of any particular operating system or platform. It serves as a layer between the resource system and the visual layout of resources so that multiple views of the same resources can exist in the same application. * A **common** system holding utility classes. * Python **bindings** that enable SMTK to be used *by* python scripts *and* SMTK to run python scripts as part of its normal operations. * A set of **extension** libraries, which provide additional functionality but also introduce dependencies on software beyond what the core smtk library already requires. These are used to create applications built on SMTK.