![]() |
Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
00001 /**
00002 * MOAB, a Mesh-Oriented datABase, is a software component for creating,
00003 * storing and accessing finite element mesh data.
00004 *
00005 * Copyright 2004 Sandia Corporation. Under the terms of Contract
00006 * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
00007 * retains certain rights in this software.
00008 *
00009 * This library is free software; you can redistribute it and/or
00010 * modify it under the terms of the GNU Lesser General Public
00011 * License as published by the Free Software Foundation; either
00012 * version 2.1 of the License, or (at your option) any later version.
00013 *
00014 */
00015
00016 //-------------------------------------------------------------------------
00017 // Filename : ReadABAQUS.hpp
00018 //
00019 // Purpose : ABAQUS inp file reader
00020 //
00021 // Special Notes : Started with NetCDF EXODUS II reader
00022 //
00023 // Creator : Paul Wilson & Patrick Snouffer
00024 //
00025 // Date : 08/2009
00026 //
00027 // Owner : Paul Wilson
00028 //-------------------------------------------------------------------------
00029
00030 /** Implementation of ABAQUS mesh hierarchy and meta-data on MOAB
00031
00032
00033 This reader processes data written by the ABAQUS computer-aided engineering
00034 front-end. While that tool writes binary files in its own proprietary format,
00035 it also writes an ASCII input file that is the fundamental input to the
00036 ABAQUS solver itself. A published syntax for this format is available from Simulia.
00037
00038 This reader only supports a subset of the mesh syntax necessary to support
00039 a basic thermal analysis of solid systems.
00040
00041 An ABAQUS mesh makes use of the common paradigms of building a
00042 geometry as an "assembly" of "instances" of "parts".
00043
00044 A "part" is defined as a set of "nodes" and "elements" connecting
00045 those nodes. The nodes and elements can be arranged in "node sets" and
00046 "element sets" and specific "materials" can be assigned to "element
00047 sets" other features of parts are not currently used by applications
00048 and are not implemented.
00049
00050
00051 Overview of supported structure
00052
00053 * File:
00054 * Heading
00055 * Part
00056 * Nodes
00057 * Elements
00058 * Node Sets
00059 * Element Sets
00060 * Solid Sections
00061 * Assembly
00062 * Instance
00063 * Nodes
00064 * Elements
00065 * Node Sets
00066 * Element Sets
00067 * Solid Sections
00068 * Node Sets
00069
00070
00071 An "instance" is a full copy of a "part" with a linear geometric
00072 transformation. To create a full copy:
00073 • a duplicate set of nodes is created by copying the coordinates of
00074 the part nodes and applying a linear geometric transformation - the
00075 new coords are used to define the new nodes
00076 • a new node set is created for each node set in the part and the set
00077 of nodes among the duplicates are assigned to the new node set
00078 • a duplicate set of elements is defined by creating a new element
00079 with a connectivity made up of the duplicate nodes that correspond
00080 to the appropriate original element
00081 • a new element set is created for each element set in the part and
00082 the set of elements among the duplicates are assigned to the new
00083 element set; the corresponding material is also assigned go the new
00084 element sets
00085
00086 It is also possible for an "instance" to contain the complete
00087 definition of the mesh, copying nothing from the "part" (the "part"
00088 may have no mesh defined). It is unclear whether an "instance" can
00089 combine mesh from the "part" definition with mesh contained only in
00090 the "instance" definition. (Not appropriately documented in ABAUQUS
00091 Reference Manual.)
00092
00093 In order to provide convenient access to the data and mesh structures
00094 the following data model is used:
00095
00096 • EntitySet file_set
00097 • tags
00098 • NONE
00099 • members
00100 • all nodes of all parts and all instances
00101 • all elements of all parts and all instances
00102 • all assembly_sets
00103 • all part_sets
00104 • EntitySet part_set
00105 • tags
00106 • mSetNameTag (opaque=char*)
00107 name of entity set
00108 • members
00109 • part nodes
00110 • part elements
00111 • part node sets
00112 • part element sets
00113 • EntitySet assembly_set
00114 • tags
00115 • mSetNameTag (opaque=char*)
00116 name of entity set
00117 • members
00118 • instance_sets
00119 • instance element_sets
00120 • instance node_sets
00121 • instance nodes
00122 • instance elements
00123 • EntitySet instance_set
00124 • tags
00125 • mSetNameTag (opaque=char*)
00126 name of entity set
00127 • mPartHandleTag (handle)
00128 pointer to part from which this instance was generated
00129 • mAssemblyHandleTag (handle)
00130 pointer to assembly in which this instance exists
00131 • mInstancePIDTag (int)
00132 ordinal number indicating which instance of this part
00133 • mInstanceGIDTag (int)
00134 ordinal number indicating which instance in this assembly
00135 • members
00136 • instance nodes
00137 • instance elements
00138 • instance node_sets
00139 • instance element_sets
00140 • EntitySet node_set
00141 • tags
00142 • mSetNameTag (opaque=char*)
00143 name of entity set
00144 • mPartHandleTag (handle)
00145 pointer to part in which this node set exists
00146 (only defined for node sets that are in an instance and
00147 derive from a part)
00148 • mInstanceHandleTag (handle)
00149 pointer back to instance set in which this node set exists
00150 (NULL if this node_set is not in an instance)
00151 • mAssemblyHandleTag (handle)
00152 pointer to assembly in which this node set exists
00153 (NULL if this node_set is not in an assembly)
00154 • members
00155 • nodes
00156 • EntitySet element_set
00157 • tags
00158 • mSetNameTag (opaque=char*)
00159 name of entity set
00160 • mPartHandleTag (handle)
00161 pointer to part in which this element set exists
00162 (only defined for node sets that are in an instance and
00163 derive from a part)
00164 • mInstanceHandleTag (handle)
00165 pointer back to instance set in which this element set exists
00166 (NULL if this node_set is not in an instance)
00167 • mAssemblyHandleTag (handle)
00168 pointer to assembly in which this element set exists
00169 (NULL if this node_set is not in an assembly)
00170 • mMatNameTag (opaque=char*)
00171 name of material in these elements
00172 • mMaterialSetTag (integer)
00173 material id in these elements
00174 • members
00175 • elements
00176 • Entity node
00177 • tags
00178 • mLocalIDTag (int)
00179 numerical ID of node in local scope (part, instance)
00180 • mInstanceHandleTag (handle)
00181 pointer back to instance set in which this node exists
00182 (NULL if this node is not in an instance)
00183 • Entity element
00184 • tags
00185 • mLocalIDTag (int)
00186 numerical ID of element in local scope (part, instance)
00187 • mInstanceHandleTag (handle)
00188 pointer back to instance set in which this element exists
00189 (NULL if this element is not in an instance)
00190
00191
00192 **/
00193
00194 #ifndef READABAQUS_HPP
00195 #define READABAQUS_HPP
00196
00197 #ifndef IS_BUILDING_MB
00198 #error "ReadABAQUS.hpp isn't supposed to be included into an application"
00199 #endif
00200
00201 #include
00202 #include