COOLFluiD  Release kernel
COOLFluiD is a Collaborative Simulation Environment (CSE) focused on complex MultiPhysics simulations.
Introducing the Component class

Introduction

The component object concept is the key of understanding COOLFluiD 3. A component is typically organized in a tree-like data structure similar to the file system on your computer. A component can contain multiple other components and is uniquely defined by its name and path in the tree. This concept is implemented in COOLFluiD 3 as a class Component in the cf3::common namespace. One can derive new component types adding more specific functionality to the Component class. A component can simply serve to store data, or group multiple components, or perform actions on other components, or combinations of these.

Characteristics of Components

Components have so called tags assigned to them which are strings that further characterize the type or purpose of a component. This is similar to a file extension for files on your computer. Multiple tags can be assigned to one component. Tags are not modifiable or seen by end-users. They can only be changed by developers in the code.

Components have properties or meta-data, which store usually small informational data. This data can serve to describe the component (e.g. 'usage'='time iterator' ) or actually hold functional data used in some way by the code (e.g. 'iteration'=4 ). Properties are publicly accessible through their name and can be used for dynamic variables. Properties can not be changed by the user, only by developers.

Components have configuration options which are implemented as a special case of user modifiable properties. These configuration options can be changed by the user in an interactive environment or script, or hardcoded in COOLFluiD when another event is triggered. Configuration options are either basic or advanced, and have a name, a description and a default value.

Components can receive and send so called signals, using xml language. Signals are translated into actions which are implemented by the component. For instance, a mesh reading component can receive the signal to start reading from a file and build the mesh, where the path to the file is specified inside the signal.

The COOLFluID 3 Kernel is basically a collection of libraries of components that can be created on demand by users or developers, to build a whole data structure or application.

What's there?

The cf3::common namespace contains apart from the Component base class, some specialized components: Link: This component contains a reference to another component in the tree, and accessing it, accesses this reference. It serves as an analogy to the symbolic link on the computer file system. Group: This component actually doesn't add more functionality, but serves as an analogy to the folder or directory on the computer file system. It is also used for the "/" or root directory in a unix type file system, which holds the Environment or Environment component for interaction with the Operating System. The cf3::Mesh namespace implements components that constitute to building, storing, and manipulating the mesh.


Send comments to:
COOLFluiD Web Admin