Technology Data Format (TDF) is a semiconductor data interchange format for wafer data including 1D, 2D and 3D geometries, mesh, fields and other related information.
TDF is developed by
http://www.tmai.com/
Technology Modeling Associates, Inc
(TMA).
The primary purpose of TDF is to facilitate data interchange between the full range of semiconductor technology simulators and related applications, including visualization, mesh generation and geometry editors. The goal is to provide a unified data model with a comprehensive description of those data types which are common to all semiconductor processing, while providing enough flexibility to allow for application-specific extensions.
The TDF data storage model is designed for efficiency of storage and access. The data is stored in files, but unlike other file formats, applications using TDF are not forced to read, let alone understand, all of the data stored in a TDF data set; instead the application is free to access the specific portions of the data which are relevant for its own purposes. Accessing a TDF data set can be thought of as accessing a data server, rather than reading/writing a file. As a result, access times tend to be faster than with other formats.
TDF provides persistence using Hierarchical Data Format (HDF), which was developed at the University of Illinois, NCSA. This is a cross-platform, binary format, and the libraries and documentation are available in the public domain. For more information about HDF, see http://hdf.ncsa.uiuc.edu.
For the convenience of application developers, TDF includes a C++ class library. The C++ API provides a high-level view of the TDF information model, and facilitates the integration of new applications.
Note, that the API uses the C++ Standard Template Library (STL) see section 2.8 STL.
The following figure illustrates the integration of the TDF library with client programs written in C++, C or FORTRAN. Persistence in HDF files is handled automatically by the TDF library. The library also includes a TMA TIF ASCII file format reader for backward compatibility.
The remainder of this document describes the C++ API.
We will start our tour of TDF's C++ classes. The classes covered are meant to include only those that are of interest for the application.
The hard copy or html version has class diagrams following here.
Here are four Object Model Rumbaugh diagrams showing top-level classes.
Note, that actual C++ classes names are shown here without
the Tdf Prefix.
see section 2.3.1 TdfFieldSet and see section 2.4.1 TdfMesh.
See see section 2.6.1 TdfGeometry.
See see section 2.2.7 TdfAttributes.
Here are the top level C++ classes of the TDF library. TDF uses HDF which is Hierarchal Data Format. HDF uses a vgroup/vdata model which is analog to the UNIX directory/file system. Most of the Tdf classes correspond to HDF-vgroups.
The top classes may also be thought of vgroups that are close to the root.
Tdf
#include "Tdf.hh"
This class controls the global initialization of TDF library.
There are two static functions:
TDFLIB has to be a UNIX-path that
includes a directory where these files are located.
It is safe to call more than once.
Tdf class, besides being a place holder for the static
init and close global functions, serves as a convenient
dummy object that calls Tdf::init() upon construction and calls
Tdf::close() upon destruction.
TdfDataSet
#include "TdfDataSet.hh"
This is the "top most" class to access or generate a TDF file.
true if success.
The writerName should be the name of the application,
it is appended to the Documentation vgroup
(TdfDocumentation) of the file.
Returns true if success.
TdfDocumentation class member as
a constant (see section 2.2.3 TdfDocumentation).
TdfDocumentation class member
(see section 2.2.3 TdfDocumentation).
TdfWafer contained in this
TdfDataSet class instance,i'th TdfWafer
--- which is created if necessary ---
of this TdfDataSet (see section 2.2.5 TdfWafer).
const reference and no
creation is made.
TdfDocumentation
#include "TdfDocumentation.hh"
The TdfDocumentation class carries the history of writers/modifiers
of the TdfDataSet it belongs to.
TdfWaferDataSet.
TdfWaferDataSet.
The first modifier is the original writer.
TdfModifier).
TdfModifier
#include "TdfModifier.hh"
This class holds the "signature" of the writer or modifier of the data.
time function).
TdfWafer
#include "TdfWafer.hh"
TdfWafer is a class that holds a wafer data within TdfDataSet.
Typically there exist only one TdfWafer in a TdfDataSet.
The TdfWafer class contains:
TdfAttributes).
TdfAttributes).
TdfWaferDataSet). Typically, there's only one data-set,
but it may hold several data-sets;
for example representing the same device
at different times.
TdfAttributes this TdfWafer
holds.
const reference to the i-th
material's attributes of this TdfWafer.
TdfAttributes reference to the
attributes of this TdfWafer material mtrName --
which is created if necessary.
materialProperties(mtrName) but if such TdfAttributes
does not exist a dummy reference is returned.
Analog to Material Properties.
TdfAttributes this
TdfWafer holds.
const reference to the i-th
solution's attributes of this TdfWafer.
TdfAttributes reference to the
attributes of this TdfWafer solution solName --
which is created if necessary.
solutionProperties(solName) but if such TdfAttributes
does not exist a dummy reference is returned.
TdfWaferDataSets contained in this TdfWafer.
const reference to the i-th TdfWaferDataSet
contained in this TdfWafer (see section 2.2.6 TdfWaferDataSet).
TdfWaferDataSet
--- which is created if necessary ---
contained in this TdfWafer (see section 2.2.6 TdfWaferDataSet).
TdfWaferDataSet
#include "TdfWaferDataSet.hh"
The TdfWaferDataSet class represents a wafer or a structure.
It may contain geometry, regions, mesh, element data, node data.
The most important class contained is the TdfFieldSet (see section 2.3.1 TdfFieldSet)
which is a super-class of TdfRegion (see section 2.3.2 TdfRegion).
TdfWaferDataSet.
TdfWaferDataSet.
TdfWaferDataSet to d.
floats and the flattened array of
coordinates. const reference to array of the coordinates. Its size
can also be obtained by TdfWaferDataSet::nCoordFlat().
For 3D the order is:
x0, y0, z0, x1, y1, z1, ...
const version of the above.
Now for some interface functions to the underlying array of
field-sets. Here things may vary depending on the nature of the
application. Internally, we use array of pointers to
TdfFieldSet (see section 2.3.1 TdfFieldSet). The pointers may actually point
to a subclass of TdfFieldSet, mostly TdfRegion
(see section 2.3.2 TdfRegion).
TdfRegions
pointed from this TdfWaferDataSet.
nRegions(i) instead.
Returns the number of instances of TdfFieldSets (or a sub-class)
pointed from this TdfWaferDataSet.
const pointer to the i-the TdfRegion
belonging to this TdfWaferDataSet. Null is returned if such region
does not exist.
Note: This function is deprecated. Use region(i) instead.
Returns a const pointer to the i-the TdfFieldSet
(or a sub-class) belonging to this TdfWaferDataSet.
TdfRegion
of this TdfWaferDataSet.
If any of the region(j), where
j <= i,
do not exist prior to the call then they are created.
TdfRegion and names it rgnName.
It is similar to:
TdfRegion* rgn = region(nRegions()); rgn->objectName(rgnName); return(rgn);
Note: This function is deprecated. Use region(i)
or newRegion(.) instead.
Returns a pointer to the i-the TdfFieldSet
(or a sub-class) belonging to this TdfWaferDataSet.
If
subClassName != 0
Creates a new appropriate subclass of TdfFieldSet.
Recognized subclass-names are:
TdfFieldSet::gname (see section 2.3.1 TdfFieldSet).
TdfRegion::gname (see section 2.3.2 TdfRegion).
All previously uninitialized fieldSet(j)
(where 0<=j<i)
are created as the type of fieldSet(i)
Now for some interface functions to the underlying array of
geometries. Here things may vary depending on the nature of the application.
We use array of pointers to
TdfGeometry (see section 2.6 Geometry).
The pointers may actually point to a subclass of TdfGeometry.
TdfGeometry (or a sub-class)
pointed from this TdfWaferDataSet.
const pointer to the i-the TdfGeometry
(or a sub-class) belonging to this TdfWaferDataSet (see section 2.6.1 TdfGeometry).
TdfGeometry
belonging to this TdfWaferDataSet.
If
subClassName != 0
Creates a new appropriate subclass of TdfGeometry.
Recognized subclass-names are:
TdfGeometry0D::gname (see section 2.6.2 TdfGeometry0D).
TdfGeometry1D::gname (see section 2.6.3 TdfGeometry1D).
TdfGeometry2D::gname (see section 2.6.6 TdfGeometry2D).
TdfGeometry3D::gname (see section 2.6.7 TdfGeometry3D).
All previously uninitialized geometry(j)
(where 0<=j<i)
are created as the type of geometry(i) (see section 2.6.1 TdfGeometry).
TdfAttributes
#include "TdfAttributes.hh"
This class maps strings to values (see section 2.2.8 TdfValue).
The values could be ints, floats, char-strings and
(recursive) attributes-set -- TdfAttributes.
TDF uses this class in every
subclass of TdfGroup (see section 2.7.2 TdfGroup).
true if no value was assigned to keyStr before.
true if indeed there was a deletion.
const pointer the value assigned to keyStr
in this attributes-set. If no value is assigned, null is returned.
const reference to the value assigned to keyStr
in this attributes-set.
Returns reference to dummy value if not assigned.
This is a convenience function, for the case a value is known to
be set. One may use TdfAttributes::value(keyStr) to check.
reference to the value assigned to keyStr
in this attributes-set.
If necessary, a dummy value is created and assigned to keyStr.
TdfAttributes::KeyIter)
to the beginning of the keys for which mapping are defined
in this attributes-set. STL-like.
TdfAttributes::KeyIter)
to the past-end of the keys for which mapping are defined
in this attributes-set. STL-like.
TdfValue
#include "TdfValue.hh"
TdfValue is a class that can hold:
int or array of ints (vector<int>).
float or array of floats (vector<float>).
TdfAttributes) (see section 2.2.7 TdfAttributes)
becomes a recursive
class, since it can contain values of its own type.
There are several classes involved in implementing TdfValue,
Among them is TdfValueData, from which applications needs to know
the following enumeration, all of type TdfValueData::Type:
TdfValueData::Undefined
TdfValueData::Int
TdfValueData::Float
TdfValueData::String
TdfValueData::Attributes
TdfValueData::Int or TdfValueData::Float.
TdfValueData::Int type.
TdfValueData::Int type value returns the value,
otherwise return 0.
TdfValueData::Int value-type,
with the array int values of the STL-like range
[begin, end).
TdfValueData::Int type value
then return a const pointer to the vector of ints.
otherwise return null-pointer.
TdfValueData::Float type.
TdfValueData::Float type value returns the value,
otherwise return 0.0.
TdfValueData::Float value-type,
with the array of float values of the STL-like range
[begin, end).
TdfValueData::Float type value
then return a const pointer to the vector of floats.
otherwise return null-pointer.
TdfValueData::String type.
TdfValueData::String type.
TdfValueData::String type value returns a const
pointer to the character-string array.
otherwise return empty string "".
Again, this is a recursion. A value of TdfAttribute type
can map string to values.
TdfValueData::Attributes type value
then return a const pointer to the value,
otherwise return null-pointer.
TdfValueData::Attributes type value
then return a pointer to the value,
otherwise return null-pointer.
TdfAttributes::KeyIter
#include "TdfAttributes.hh"
TdfAttributes::KeyIter is an iterator nested class of
TdfAttributes (see section 2.2.7 TdfAttributes).
It can be used to iterate over the keys for which attributes are defined.
const char* string which is the key
of the (string,value) pair this attribute-iterator points to.
This string may be invalidated by future operations on the attribute-set.
The FieldSet classes are classes that describes the mesh and the fields and the relation between them.
Note: In some previous versions of TDF-API
there was also TdfInterface sub-class which was removed.
Also TdfFieldSet is considered obsolete as an instance, but is maintained
for backward compatibility as a base class for TdfRegion.
TdfFieldSet
#include "TdfFieldSet.hh"
Note: It is recommedned that application
will the subclass instantiate TdfRegion (see section 2.3.2 TdfRegion)
rather than TdfFieldSet.
Still, the member functions of TdfFieldSet are valid
for TdfRegion.
The TdfFieldSet class holds
The fields are closely related to the mesh.
The TdfFieldSet has a unique mesh. An instance fs
of TdfFieldSet
always belongs to a TdfWaferDataSet w (see section 2.2.6 TdfWaferDataSet).
In the case of unstructured mesh, the coordinates of the mesh nodes
are owned by w. In such case, the nodes coordinates are shared by
all of w's instances of TdfFieldSets.
If a node n is common to more than a single TdfFieldSet
-- say
fs0, fs1
-- of the same TdfWaferDataSet, then it must be on the boundaries
of the TdfFieldSets and it may have specific node-data for
each
fsi
TdfFieldSet.
const pointer to this TdfFieldSet's mesh (see section 2.4.1 TdfMesh).
TdfFieldSet's mesh (see section 2.4.1 TdfMesh).
TdfMeshElement::gname
TdfMeshRectilinear::gname
TdfMeshUniform::gname
Since node-data is used more often than element data,
we generally omit the term 'node' from the member names.
So TdfFieldSet::nField and TdfFieldSet::field
refer to node-data fields.
TdfFieldSet.
const pointer of the i-th node-data TdfField
of this TdfFieldSet (see section 2.5.2 TdfField).
TdfFieldSet
belonging to this TdfFieldSet.
If
subClassName != 0
then a new appropriate subclass of TdfFieldSet is created.
Recognized subclass-names are:
TdfFieldNumeric::gname (see section 2.5.3 TdfFieldNumeric).
TdfFieldAnalytic::gname (see section 2.5.4 TdfFieldAnalytic).
All previously uninitialized field(j)
(where 0<=j<i)
are created as the type of field(i) (see section 2.5.2 TdfField.
And now for the element data fields.
TdfFieldSet.
const reference to the i-th elementData-data
TdfFieldNumeric& that belong to this TdfFieldSet
(see section 2.5.3 TdfFieldNumeric).
TdfFieldNumeric& that belong to this TdfFieldSet
(see section 2.5.3 TdfFieldNumeric).
TdfAttributes
of the material of this TdfFieldSet.
For instances of TdfFieldSet it returns 0.
This method is actually used for the TdfRegion subclass (see section 2.3.2 TdfRegion).
const pointer to the TdfWafer w which this
TdfFieldSet fs belong to.
Note, there must be a TdfWaferDataSet wds which belongs
to w and contains this fs
(see section 2 C++ Classes diagrams).
TdfRegion
#include "TdfRegion.hh"
The TdfRegion is a subclass of TdfFieldSet (see section 2.3.1 TdfFieldSet).
The only addition here is the material that the region has.
TdfRegion.
TdfRegion to mn.
The mesh classes define the partition of the geometrical structure to finite elements thus also introducing sets of nodes. These elements and nodes are used for assigning or calculating data.
There are several types of meshes (see section 2 C++ Classes diagrams).
The mesh instances are owned by TdfFieldSet (see section 2.3.1 TdfFieldSet),
That in turn has a TdfWaferDataSet parent (see section 2.2.6 TdfWaferDataSet).
Hence, every instance
of a class or sub-class of TdfMesh has a well-defined
ancestor instance of TdfWaferDataSet (grandparent)..
2.4.0.1 Mesh - Cast Down Functions
There are const and non-const safe cast down functions
for the specific mesh sub-classes. They can also be used
to determine the meh-type. If the cast down is not appropriate for
the object the null pointer is returned
const TdfMeshElement* TdfMesh::thisMeshElement() const
const TdfMeshRectilinear* TdfMesh::thisMeshRectilinear() const
const TdfMeshUniform* TdfMesh::thisMeshUniform() const
TdfMesh
#include "TdfMesh.hh"
Here is the enumeration TdfMesh::Type of the mesh-types:
TdfMesh::dimension(int)) set,
then the parent TdfWaferDataSet's dimension is returned.
(see section 2.4.1.5 TdfMeshElement)
TdfWaferDataSet.
TdfWaferDataSet::nCoordNode.
TdfMeshElement).
TdfWaferDataSet ancestor.
Returns coords for convenience .
TdfMesh is of a subclass
TdfMeshElement in which case it returns this.
TdfMeshUniform
#include "TdfMeshUniform.hh"
The TdfMeshUniform class
is the simplest sub-class of TdfMesh (see section 2.4.1 TdfMesh).
It divides a rectangle or box (2D or 3D respectively)
into equally sized sub rectangles or sub boxes.
Thus, the mesh is determined by:
float pointer to this uniform mesh min vertex
of its major diagonal.
Note: For 2D only the first two numbers are meaningful.
float pointer to this uniform mesh max vertex
of its major diagonal.
Note: For 2D only the first two numbers are meaningful.
unsigned array
representing the numbers by which dimension is divided in the uniform mesh.
Note: For 2D only the first two numbers are meaningful.
float array pointer v3.
Note: Must supply 3-sized arrays even in 2D case.
float array pointer v3.TdfMeshRectilinear
#include "TdfMeshRectilinear.hh"
The TdfMeshRectilinear class
is a sub-class of TdfMesh (see section 2.4.1 TdfMesh).
It divides a rectangle or box (2D or 3D respectively)
into sub rectangles or sub boxes. This is done by dividing
each dimesnion of the rectangle or boxes independently
and then taking cartesian products.
We have,
(Hard copy looks better here...)
x_0 <= x_1 <= ... x_Nx-1
y_0 <= y_1 <= ... y_Ny-1
z_0 <= z_1 <= ... z_Nz-1
We refer to the W_i (w=x,y,z)
as the ticks on the W-dimension.
In the 2D case we should have z_i = 0
and (Nx-1)(Ny-1)$ sub rectangles.
In the 3D case we have $(Nx-1)(Ny-1)(Nz-1)$ boxes.
float array ticks of sufficient size.
float array ticks.
TdfMeshElement
#include "TdfMeshElement.hh"
The TdfMeshElement class
is the most complicated sub-class of TdfMesh (see section 2.4.1 TdfMesh).
The main source of complexity comes from the fact that the element
of the mesh, that this class carries, may vary in types.
Still, for efficiency we would like to be able to access
nodes and elements fast.
The elements of the mesh defined by an instance of TdfMeshElement
can be of any of the enumeration defined by TdfElement::Type
(see section 2.4.1.6 TdfElement).
We distinguish between element of fixed-type topology
and general polygons and general polyhedrons.
The reason for this as the fact that the fixed type are very common,
and treating them separately simplifies the random access of a fixed-type
element.
Each element has node indices, pointing to the
common coordinate array owned by the TdfWaferDataSet ancestor
(TdfGroup::pWDS see section 2.7.2 TdfGroup).
These indices are concatenated into a connection list.
Naturally, connection list will have repetitions of indices, since
same vertices appear in different elements.
The TdfMeshElement has a separate connection-list
for each of the 8 fixed elements types; i.e.:
Node,
Edge,
Triangle, Quad,
Tetrahedron, Pyramid, Prism, Hexahedron.
Note that every such fixed type has a constant number of nodes
(TdfElement::nElementVertices see section 2.4.1.6 TdfElement).
There are member functions accessing these fixed-type connection-list. Rather then specifying them for the each of the 8 fixed types we'll describe their common pattern using foo and Foo. The actual members names are obtained by replacing:
TdfMeshElementTdfMeshElement:nTriangles().
const reference to the connection-list
of the foo in this TdfMeshElement
(e.g: TdfMeshElement:triangle()).
There is a non-const variant of this function, but it should be used
with special care, since it is not safe in term of consistency
of arrays lengths, and the synchronizing with the array given by
TdfMeshElement::allNodes().
TdfMeshElement,
where nv is well defined by foo.TdfMeshElement::triangleAppend(const unsigned *pu)TdfMeshElement, to hold nel foo elements. For example:TdfMeshElement::triangleAppend(unsigned 5)In Addition to the "patterned" members there are some interface to the fixed-type element connection lists, where the actual type is given as a parameter.
const reference to the connection-list
of the elemType fixed-type element in this TdfMeshElement.
TdfMeshElement.
TdfMeshElement.
TdfMeshElement.
TdfMeshElement.
This array is uniquely sorted and cached. It is recalculated on demand
if any of the connection list has been updated.
Now, for the non-fixed element types.
TdfMeshElement.
Note, the triangle or quad
specific connection lists are maintained separately.
TdfMeshElement.@c
Note: the connection lists of:
tetrahedron,
pyramid,
prism,
hexahedron
From now on in this TdfMeshElement--section, whenever
we say polygon, or polyhedron, we do not refer to the fixed-type elements.
The polygons are maintained internally by two arrays. One that holds the sizes (number of vertices), and the other a simple concatenation of all the vertices indices of all polygons.
const reference to the array of polygons sizes.
const reference to the connection list of all polygons.
See explanation in the hard-copy.
A polyhedron are defined by its boundary which consists of polygons. The polygons are maintained internally by two arrays. One that holds the sizes (number of boundary polygons), and the other a simple concatenation of all the polygon indices of all polyhedrons.
const reference to the array of polygons sizes.
The polyhedron interface is not yet completed.
Although the boundary may be calculated from the mesh
(See TdfMeshElement::generateBoundary), it is more efficient and
consistent to store and load it.
The boundary consists of an array of geometries
where each is a boundary component.
For 2D mesh the boundary is of TdgGeometry1D components.
For 3D mesh the boundary is of TdgGeometry2D components.
When the mesh-dimension is the same as the space-dimension
(i.e. not the case of 2D-mesh in 3D-space)
the first boundary component is external the others are holes.
Note: do not confuse the mesh-boundary discussed here, with the other function that refers to boundary of single elements.
TdfMeshElement.
const pointer to the i-th component of the boundary
which is a subclass of TdfGeometry (see section 2.6.1 TdfGeometry).
Note that it could be calculated via TdfMeshElement::generateBoundary.
TdfMeshElement.
Generate the boundary of this element mesh. The boundary is returned thru geoms. The caller is responsible for the deletions of geoms pointers.
This calculation is rather complicated. The algorithm basically traverses all the elements' boundaries. These elements' boundaries are edges for 2D, and polygons for 3D. Every element-boundary may be a boundary of one or two elements - but not more! Every internal element-boundary is traversed exactly twice. The resulted boundary comprises the union of all the elements' boundaries that were traversed exactly once. In the case of 2D-mesh in 3D-space (see later) there is further complexity, that double edges are not "canceled out" if they belong to faces which are coplanar (via coplanarCosine).
TdfGeometry1DTdfGeometry2D.
The first is the external and the rest are holes.
Notes:
vector<TdfGeometry*>
but we want to save on templates, so we use a super class as a pointer.
Safe Tdfgeometry cast down functions are available
(see section 2.7.1 TdfVGDBase).
new
of some subclass of TdfGeometry.
TdfMeshElement::dimension() (see section 2.4.1 TdfMesh).
If it is not explicitly given and the mesh is not empty,
return the highest element dimension.
generateBoundary
and sets the resulting boundary.
TdfElement
#include "TdfElement.hh"
The TdfElement provides further interface
that may be desired to instantiate elements defined via
TdfMeshElement (see section 2.4.1.5 TdfMeshElement).
There are some useful static definitions for this class.
TdfElement has Type enumeration that defines
the element geometric type for nFixedType basic fixed topology types
and for general polygon or polyhedron.
TdfElement::Node
TdfElement::Edge
TdfElement::Triangle
TdfElement::Quad
TdfElement::Tetrahedron
TdfElement::Pyramid
TdfElement::Prism
TdfElement::Hexahedron
TdfElement::nFixedType
TdfElement::Polygon
TdfElement::Polyhedron
TdfElement::nType
nFixedType + 2.
TdfFieldDef
#include "TdfFieldDef.hh"
TdfField
#include "TdfField.hh"
Fields are used for assigning values to nodes or elements. They could be scalar or multi-valued. The values can be given by numerical data, or calculated by analytic formula.
The TdfField is an abstract base class
from which other field classes are defined and could be instantiated
(see section 2 C++ Classes diagrams).
TdfFieldDef::Type of the field
(see section 2.5.1 TdfFieldDef).
Currently, only TdfFieldDef::Float -- that corresponds to
C's float -- is supported.
order().
The data is returned thru the supplied array fa that must be of
the order() size.
For convenience, fa is returned.
order().
must hold.order()*nRows size.
For convenience, fa is returned.
TdfFieldNumeric
#include "TdfFieldNumeric.hh"
TdfFieldNumeric is a subclass of TdfField (see section 2.5.2 TdfField).
It holds numerical data, both for scalar or vector field.
Internally the data is always flattened to a linear array.
Still we have the notion of number of rows and number of columns which
is also referred to as order.
TdfFieldNumeric to reserve space for nRows rows.
TdfFieldNumeric,
where n is the order of this field.
setData nRows times: for (r=row0; r<row0+nr; setData(r, fa + r*order()), r++)
TdfFieldNumeric::getDataArray(.,.,.)
to be done more efficiently (see section 2.5.2 TdfField).
const reference to the (flattened) array of numerical data.
TdfFieldAnalytic
#include "TdfFieldAnalytic.hh"
TdfFieldAnalytic is a subclass of TdfFieldNumeric
(see section 2.5.3 TdfFieldNumeric).
TdfAnalyticDoping
#include "TdfAnalyticDoping.hh"
TdfFieldNumeric is a subclass of TdfFieldAnalytic
(see section 2.5.4 TdfFieldAnalytic).
It hold 10 numerical constants that define a
formula.
formula methods not yet documented
See hard copy for description of the formula.
TdfGeometry
#include "TdfGeometry.hh"
The TdfGeometry is an abstract class.
For each of the
d=0,1,2,3
dimensions there corresponds a class TdfGeometrydD.
2.6.1.1 Geometry - Cast Down Functions
There are const and non-const safe cast down functions
for the dimension-specific sub-classes. They also can be used
to determine dimensionality.
For d=1,2,3
the virtual functions ---
TdfGeometry::geometrydD()
return this if this is class TdfGeometrydD
and 0 otherwise.
TdfGeometry instance belongs to an instance of
TdfWaferDataSet using its coordinates (see section 2.2.6 TdfWaferDataSet).
TdfGeometry has.
TdfGeometry0D
#include "TdfGeometry0D.hh"
The TdfGeometry0D class is a subclass of TdfGeometry
(see section 2.6.1 TdfGeometry).
It holds discrete vertices. Note that this may not be connected
as the other TdfGeometrydD for
1<=d<3
TdfGeometry0D has.
i-th vertex
of this TdfGeometry0D.
i-th vertex
of this TdfGeometry0D.
TdfGeometry0D's i-th
vertex. Return coord.
TdfGeometry0D's contains a vertex whose coordinates-index
is ci.
TdfGeometry1D
#include "TdfGeometry1D.hh"
The TdfGeometry1D class is a subclass of TdfGeometry
(see section 2.6.1 TdfGeometry).
It contains a connected polyline. Closed polylnes are implemented
by having an equal coordinate-index for their first and last vertices.
A polyline P1,P2,P3,...Pn may be defined as a sequence of edges where vertices are repeated: [P1,P2] , [P2,P3] ... [Pn-1,Pn]
A vertex is represented as an index.
An edge is represented as a pair of two indices.
The indices are actually used with coordinates arrays of TdfWaferDataSet
(see section 2.2.6 TdfWaferDataSet).
TdfGeometry1D.
TdfGeometry1D.
TdfGeometry::point(...) see section 2.6.1 TdfGeometry).
TdfGeometry1D.
TdfGeometry1D has (see section 2.6.4 TdfGeometry1D::Edge).
TdfGeometry1D (see section 2.6.4 TdfGeometry1D::Edge).
TdfGeometry1D if and only if it is the
first edge or its first end-point equals the last end-point of the
current poly-line (see section 2.6.4 TdfGeometry1D::Edge).
The restriction is for ensuring a connected poly-line.
true if this TdfGeometry1D has the edge
[v0, v1],
false otherwise.
TdfGeometry1D::Edge
#include "TdfGeometry1D.hh"
The TdfGeometry1D::Edge is a trivial
nested class of TdfGeometry1D.
TdfGeometry1D::Edge with vertices indices
v0 and v1.
TdfGeometry1D::Edge
to vi.
TdfGeometry1D::Edge.
TdfGeometryFaces
#include "TdfGeometryFaces.hh"
This class is a base class for
TdfGeometry2D (see section 2.6.6 TdfGeometry2D)
and TdfGeometry3D (see section 2.6.6 TdfGeometry2D.
It is a container of faces (polygons).
We typedef TdfGeometryFaces::Face to be simply,
vector<unsigned> Face.
TdfGeometryFaces
TdfGeometryFaces.
TdfGeometryFaces.
Some convenient functions:
TdfGeometryFaces.
TdfGeometryFaces.
TdfGeometryFaces.
Repeated vertices are counted. So cube-faces will give 24=6*4 (not 8).
TdfGeometry2D
#include "TdfGeometry2D.hh"
The TdfGeometry2D class represents a 2-Dimensional linear Geometry.
It is a subclass of TdfGeometryFaces (see section 2.6.5 TdfGeometryFaces).
There are two distinctive cases:
TdfGeometry2D.
TdfGeometry2D.
TdfGeometry3D
#include "TdfGeometry3D.hh"
TdfGeometry3D is a class representing a connected polyhedra that
may have holes.
It is a subclass of TdfGeometryFaces (see section 2.6.6 TdfGeometry2D).
With some analogy with TdfGeometry2D,
the geometry of TdfGeometry3D is assumed to be connected,
but not necessarily simply connected; i.e. it may have holes.
The first volume (TdfGeometry3D::volume(0)) is the outside boundary.
If
TdfGeometry2D::nVolumes() > 1
then the rest of the volumes are the boundaries of holes.
Note, that we do not allow a 3D-geometry composed of volumes within
3D-holes.
Such a geometry should be divided into
several (connected) TdfGeometry3Ds.
The TdfGeometry3D class contains volumes,
each of which is an array of face indices.
We typedef TdfGeometry3D::Volume to be simply,
vector<unsigned> Face.
TdfGeometry3D has.
TdfGeometry3D.
const reference to the vli-th volume of
this TdfGeometry3D.
Note: that for (vli > 0) it means the (vli-1)-th hole.
const reference to outer boundary which is the 1st volume
of this TdfGeometry3D. Equivalent to volume(0).
const reference to the bi-th hole's volume of
this TdfGeometry3D. Equivalent to volume(bi-1).
TdfGeometry3D.
See note about vli in TdfGeometry3D::volume(vli)).
TdfGeometry3D.
See note about vli in TdfGeometry3D::volume(vli)).
TdfGeometry3D.
See note about vli in TdfGeometry3D::volume(vli)).
The motivation for specific geometries comes mainly from the
Raphael http://www.tmai.com/PRODUCT/raphael.html application.
TdfXform
#include "TdfXform.hh"
This class defines a 3D transformation.
typedef float Mat3x3[3][3] -- for rotation.
typedef float XMat[4][3] -- for rotation and translation.
TdfXform represents identity transformation,
which is the default, and actually does not carry any float data.
TdfXform to represents identity transformation.
Actually it will delete internal float data if it exists from previous
settings.
const reference to the transformation matrix.
If it is an identity, the reference is to a static matrix.
TdfGeomXform
#include "TdfGeomXform.hh"
This class serves as a base class for other specific geometries that carry a transformation matrix with them.
const reference to this TdfGeomXform's transform
(see section 2.6.10 TdfGeomXform).
TdfGeomXform's transform
(see section 2.6.10 TdfGeomXform).
const reference to this TdfGeomXform's transform matrix
(see section 2.6.10 TdfGeomXform).
TdfGeomArcCircle
#include "TdfGeomyArcCircle.hh"
TdfGeomArcCircle is a class representing a circle
or a arc-section of a circle.
It is a subclass of TdfGeomXform (see see section 2.6.10 TdfGeomXform).
There are also queries for specific circle parameters:
TdfGeomCylinder
#include "TdfGeomCylinder.hh"
TdfGeomCylinder is a class representing a 3-dimensional cylinder.
It is a subclass of TdfGeomXform (see see section 2.6.10 TdfGeomXform).
The direction is given by a non zero vector -- (direction[0],direction[1],direction[2]).
The function returns true if successfully set.
There are also queries for specific cylinder parameters:
float array dir3.
TdfGeomRect
#include "TdfGeomRect.hh"
TdfGeomRect holds a 2-Dimensional rotate-able rectangle.
It is a subclass of TdfGeomXform (see see section 2.6.10 TdfGeomXform).
There are also queries for specific rectangle parameters:
TdfGeomSphere
#include "TdfGeomSphere.hh"
TdfGeomSphere is a class representing a 3-dimensional sphere.
It is a subclass of TdfGeomXform (see see section 2.6.10 TdfGeomXform).
float array center,
the radius thru r.
TdfVGDBase
#include "TdfVGDBase.hh"
Actually, the TdfVGDBase should not be of the application's concern.
It is a base class for both
TdfGroup (see section 2.7.2 TdfGroup) that represents
HDF-vgroup.
TdfLeaf (Not documented) that represents
HDF-vdata.
For the sake of reducing the number of internal template code,
the TDF library uses arrays (STL-vectors) of
pointers TdfVGDBase* to represent arrays of
subclasses of TdfGroup (HDF-vgroups) or
subclasses of TdfLeaf (HDF-vdata).
The drawback is some loss of type safety. This is somewhat compensated
by a rich collection of safe cast down functions for most of TdfVGDBase
subclasses.
We have the following family (Foo) of safe cast down function
(See the C preprocessor smart macros TdfThisCastDown0
and TdfThisCastDown in `TdfVGDBase.hh').
Some possible Foo's:
Group,
Attributes,
Field,
FieldNumeric,
FieldSet,
Geometry,
Mesh,
Modifier,
Wafer
and
WaferDataSet.
TdfVGDBase
is TdfFoo or a subclass of TdfFoo,
cast this to TdfFoo*.
Thus, we can use
#include "TdfGeometry1D.hh"
int nEdgesIfGeom1D(const TdfVGDBase* p)
{
int ne = -1; // undefined for non 1D-geometry
const TdfGeometry* pGeo = p->thisGeometry();
if (pGeo)
{ // is geometry! now see if it is 1D
const TdfGeometry1D pGeo1D = pGeo->thisGeemetry1D();
if (pGeo1D) ne = TdfGeometry1D->nEdges();
}
return ne;
}
TdfGroup
#include "TdfGroup.hh"
The TdfGroup class is an abstract base class
from which all other TDF classes that represents HDF-Vgroups
are derived (see section 1 Introduction).
Some members that are documented here, are actually
defined in classes that TdfGroup is derived from,
but hopefully they are not of direct concern to the application.
TdfGroup.
TdfGroup.
TdfGroup.
If this TdfGroup has not been loaded from or saved to a TDF/HDF file
the id returned is @minus{1}.
Tdf:Id is typedef'ed to long int and must
agree with HDF's int32 definition.
Every TdfGroup may have attributes which are (string, value)
pairs (see section 2.2.7 TdfAttributes).
Following are the related interface member functions.
const pointer to this class's (vgroup's) attributes.
It may be null.
The TDF library uses STL (Standard Template Library).
Most used STL template class is vector.
Some recommeded STL references:
Many of the classes in the TDF API support HDF I/O operations. These operation are supported by base classes or static member functions and data.
The application should not need to use these.
The reason for them not always being C++-private
is that it would have required too many friendship relationships.
The following are repeated base-classes, and class members that the Tdf-API user is encouraged to ignore:
TdfClassDefVGroup
TdfClassDefVData
sGroupDef
groupDef
subNode
subNodeArrayItem
subNodeArrayLength
subNodeArrayReset
allNodes, of TdfMeshElement
ang1, of TdfGeomArcCircle
ang2, of TdfGeomArcCircle
ang, of TdfGeomRect
TdfGeomArcCircle)
TdfValue
Attributes of TdfValueData
attributes, of TdfGroup, attributes, of TdfGroup
attributesClear, of TdfGroup
attributesOpen, of TdfGroup
boundary, of TdfMeshElement, boundary, of TdfMeshElement, boundary, of TdfMeshElement
center, of TdfGeomCylinder
TdfGeomArcCircle)
className, of TdfGroup
clear, of TdfField
clear, of TdfFieldSet
clear, of TdfMesh
clear, of TdfWaferDataSet
close, of Tdf
comment, of TdfModifier, comment, of TdfModifier
connection, of TdfMeshElement, connection, of TdfMeshElement
coordinates, of TdfWaferDataSet, coordinates, of TdfWaferDataSet
coordIndex, of TdfMesh
coordNode, of TdfWaferDataSet
cx, of TdfGeomArcCircle
cx, of TdfGeomRect
cx, of TdfGeomSphere
cy, of TdfGeomArcCircle
cy, of TdfGeomRect
cy, of TdfGeomSphere
TdfGeomCylinder)
cz, of TdfGeomSphere
data, of TdfFieldNumeric, data, of TdfFieldNumeric
delValue, of TdfAttributes
determinant, of TdfXform
dimension, of TdfMesh
dimension, of TdfMeshElement
dimension, of TdfWaferDataSet, dimension, of TdfWaferDataSet
direction, of TdfGeomCylinder
documentation, of TdfDataSet, documentation, of TdfDataSet
Edge, of TdfElement
Edge, of TdfGeometry1D, Edge, of TdfGeometry1D
edgeAppend, of TdfGeometry1D
edgeAppend, of TdfMeshElement
edgeReshape, of TdfMeshElement
edges, of TdfGeometry1D
edges, of TdfMeshElement
Element, of TdfMesh, Element, of TdfMesh
elementData, of TdfFieldSet, elementData, of TdfFieldSet
elementType, of TdfMeshElement
elementVertices, of TdfMesh
Face, of TdfGeometryFaces
face, of TdfGeometryFaces
faceAppend, of TdfGeometryFaces
faceNEdges, of TdfGeometryFaces
faceVertex, of TdfGeometryFaces
field, of TdfFieldSet, field, of TdfFieldSet
fieldSet, of TdfWaferDataSet, fieldSet, of TdfWaferDataSet
TdfValue
Float of TdfValueData
generateBoundary, of TdfMeshElement
generateSelfBoundary, of TdfMeshElement
geometry, of TdfWaferDataSet, geometry, of TdfWaferDataSet
getCoordNode, of TdfWaferDataSet
getData, of TdfField, getData, of TdfField
getDataArray, of TdfFieldNumeric
getFloat, of TdfValue
getFloatArray, of TdfValue
getInt, of TdfValue
getIntArray, of TdfValue
getMap, of TdfValue, getMap, of TdfValue
getString, of TdfValue, getString, of TdfValue
getTicks, of TdfMeshRectilinear
getValues, of TdfGeomArcCircle
getValues, of TdfGeomCylinder
getValues, of TdfGeomRect
getValues, of TdfGeomSphere
groupDef
h, of TdfGeomCylinder
h, of TdfGeomRect, h, of TdfGeomRect
hasEdge, of TdfGeometry1D
hasVertex, of TdfGeometry0D
HDFread, of TdfDataSet
HDFwrite, of TdfDataSet
TdfGeomCylinder)
TdfGeomRect)
Hexahedron, of TdfElement
hexahedronAppend, of TdfMeshElement
hexahedronReshape, of TdfMeshElement
hexahedrons, of TdfMeshElement
id, of TdfGroup
identityXform, of TdfXform
init, of Tdf
innerBoundary, of TdfGeometry2D
innerBoundary, of TdfGeometry3D
Int of TdfValueData
TdfValue
Irregular, of TdfMesh
isIdentityXform, of TdfXform
keyBegin, of TdfAttributes
keyEnd, of TdfAttributes
KeyIter of TdfAttributes
Mat3x3 of TdfXform
materialName, of TdfRegion, materialName, of TdfRegion
materialProperties, of TdfFieldSet
materialProperties, of TdfWafer, materialProperties, of TdfWafer
materialPropertiesOf, of TdfWafer
materialPropIndex, of TdfWafer
matrix, of TdfXform, matrix, of TdfXform
max, of TdfMeshUniform
maxXYZ, of TdfMeshUniform, maxXYZ, of TdfMeshUniform
mesh, of TdfFieldSet, mesh, of TdfFieldSet
meshElement, of TdfMesh
min, of TdfMeshUniform
minXYZ, of TdfMeshUniform, minXYZ, of TdfMeshUniform
modifier, of TdfDocumentation
modifierAppend, of TdfDocumentation
n, of TdfMeshUniform
name, of TdfModifier, name, of TdfModifier
nAttributes, of TdfAttributes
nBoundary, of TdfMeshElement
nCoordFlat, of TdfWaferDataSet
nCoordNode, of TdfWaferDataSet
nEdges, of TdfGeometry1D
nEdges, of TdfMeshElement
nElementData, of TdfFieldSet
nElements, of TdfMesh
nElements, of TdfMeshElement
newMesh, of TdfFieldSet
newRegion, of TdfWaferDataSet
nFaces, of TdfGeometryFaces
nFacesVertices, of TdfGeometryFaces
nField, of TdfFieldSet
nFieldSets, of TdfWaferDataSet
nFixedType, of TdfElement
nGeometries, of TdfWaferDataSet
nHexahedrons, of TdfMeshElement
nHoles, of TdfGeometry2D
nHoles, of TdfGeometry3D
nMaterialProperties, of TdfWafer
nModifiers, of TdfDocumentation
nNodes, of TdfMesh
Node, of TdfElement
nodeCoords, of TdfMesh
nPolygon, of TdfMeshElement
nPolyhedron, of TdfMeshElement
nPrisms, of TdfMeshElement
nPyramids, of TdfMeshElement
nQuads, of TdfMeshElement
nRegions, of TdfWaferDataSet
nRows, of TdfField
nSingleNodes, of TdfMeshElement
nSolutionProperties, of TdfWafer
nTetrahedrons, of TdfMeshElement
nTicks, of TdfMeshRectilinear
nTriangles, of TdfMeshElement
nType, of TdfElement
nVal, of TdfValue
nVertices, of TdfGeometry
nVertices, of TdfGeometry0D
nVolumes, of TdfGeometry3D
nWaferDataSets, of TdfWafer
nWafers, of TdfDataSet
nXYZ, of TdfMeshUniform, nXYZ, of TdfMeshUniform
objectName, of TdfGroup
operator*, of KeyIter
operator++, of KeyIter, operator++, of KeyIter
operator[], of TdfAttributes, operator[], of TdfAttributes
order, of TdfField
outerBoundary, of TdfGeometry2D
point, of TdfGeometry
Polygon, of TdfElement
polygonConnectAppend, of TdfMeshElement, polygonConnectAppend, of TdfMeshElement
polygonConnectList, of TdfMeshElement
polygonNNodes, of TdfMeshElement, polygonNNodes, of TdfMeshElement
Polyhedron, of TdfElement
polyhedronNBdyPolygons, of TdfMeshElement, polyhedronNBdyPolygons, of TdfMeshElement
polyLineAppend, of TdfGeometry1D
printTime, of TdfModifier
Prism, of TdfElement
prismAppend, of TdfMeshElement
prismReshape, of TdfMeshElement
prisms, of TdfMeshElement
pWafer, of TdfFieldSet
Pyramid, of TdfElement
pyramidAppend, of TdfMeshElement
pyramidReshape, of TdfMeshElement
pyramids, of TdfMeshElement
Quad, of TdfElement
quadAppend, of TdfMeshElement
quadReshape, of TdfMeshElement
quads, of TdfMeshElement
r, of TdfGeomArcCircle
r, of TdfGeomCylinder
r, of TdfGeomSphere
TdfGeomArcCircle)
TdfGeomCylinder)
TdfGeomSphere)
TdfGeomRect)
Rectilinear, of TdfMesh
region, of TdfWaferDataSet, region, of TdfWaferDataSet
reshape, of TdfFieldNumeric
rotate2D, of TdfXform, rotate2D, of TdfXform
rotate3D, of TdfXform
Scatter, of TdfMesh
setData, of TdfFieldNumeric
setDataArray, of TdfFieldNumeric
setDimension, of TdfMesh
setFloat, of TdfValue
setFloatArray, of TdfValue
setInt, of TdfValue
setIntArray, of TdfValue
setMap, of TdfValue
setString, of TdfValue
setTicks, of TdfMeshRectilinear
setValue, of TdfAttributes
setValues, of TdfGeomArcCircle
setValues, of TdfGeomCylinder
setValues, of TdfGeomRect
setValues, of TdfGeomSphere
sGroupDef
singleNodeAppend, of TdfMeshElement
singleNodeReshape, of TdfMeshElement
singleNodes, of TdfMeshElement
solutionProperties, of TdfWafer, solutionProperties, of TdfWafer
solutionPropertiesOf, of TdfWafer
solutionPropIndex, of TdfWafer
TdfGeomSphere)
STL
TdfValue
String of TdfValueData
strValue, of TdfAttributes
subNode
subNodeArrayItem
subNodeArrayLength
subNodeArrayReset
Tdf
Tdf::Tdf
TdfAnalyticDoping
TdfAttributes, TdfAttributes
TdfClassDefVData
TdfClassDefVGroup
TdfDataSet
TdfDocumentation
TdfElement
TdfField
TdfFieldAnalytic, TdfFieldAnalytic
TdfFieldDef, TdfFieldDef
TdfFieldNumeric, TdfFieldNumeric
TdfFieldSet, TdfFieldSet
TdfFieldSet.
TdfGeomArcCircle
TdfGeomCylinder
TdfGeometry, TdfGeometry, TdfGeometry, TdfGeometry, TdfGeometry, TdfGeometry, TdfGeometry
TdfGeometry0D
TdfGeometry1D
TdfGeometry1D::Edge
TdfGeometry2D
TdfGeometry3D
TdfGeometryFaces
TdfGeomRect
TdfGeomSphere
TdfGeomXform
TdfGroup
TDFLIB, environment variable
TdfMesh, TdfMesh, TdfMesh, TdfMesh
TdfMesh.
TdfMeshElement, TdfMeshElement
TdfMeshRectilinear
TdfMeshUniform
TdfModifier, TdfModifier, TdfModifier, TdfModifier
TdfRegion, TdfRegion, TdfRegion
TdfValue
TdfValueData
tdfVersion, of TdfDocumentation
TdfVGDBase
TdfWafer, TdfWafer
TdfWaferDataSet
TdfWaferDataSet, of TdfMesh
TdfXform
Tetrahedron, of TdfElement
tetrahedronAppend, of TdfMeshElement
tetrahedronReshape, of TdfMeshElement
tetrahedrons, of TdfMeshElement
thisFoo, of TdfVGDBase
thisGeometry0D, of TdfGeometry, thisGeometry0D, of TdfGeometry
thisGeometry1D, of TdfGeometry, thisGeometry1D, of TdfGeometry
thisGeometry2D, of TdfGeometry, thisGeometry2D, of TdfGeometry
thisGeometry3D, of TdfGeometry, thisGeometry3D, of TdfGeometry
time, of TdfModifier
translate, of TdfXform
Triangle, of TdfElement
triangleAppend, of TdfMeshElement
triangleReshape, of TdfMeshElement
triangles, of TdfMeshElement
Type of TdfValueData
Type, of TdfElement
type, of TdfField
Type, of TdfMesh
type, of TdfMesh
type, of TdfMeshElement
type, of TdfValue
Undefined of TdfValueData
uniform
Uniform, of TdfMesh
v, of TdfGeometry1D::Edge, v, of TdfGeometry1D::Edge
value, of TdfAttributes
vector
vertex, of TdfGeometry0D
vertex, of TdfGeometry1D
vertexAppend, of TdfGeometry0D
vertexPoint, of TdfGeometry0D
vertexPoint, of TdfGeometry1D
vertices, of TdfGeometry1D
Volume, of TdfGeometry3D
volume, of TdfGeometry3D, volume, of TdfGeometry3D
volumeAppend, of TdfGeometry3D
volumeFaceNVertices, of TdfGeometry3D
volumeFaceVertex, of TdfGeometry3D
volumeNFaces, of TdfGeometry3D
wafer, of TdfDataSet, wafer, of TdfDataSet
waferDataSet, of TdfWafer, waferDataSet, of TdfWafer
TdfGeomRect)
xform, of TdfGeomXform, xform, of TdfGeomXform, xform, of TdfGeomXform
xformVec, of TdfXform
XMat of TdfXform
This document was generated on 23 May 1997 using the texi2html translator version 1.51.