|
virtual int | IsA (const char *type) |
|
vtkLSDynaReader * | NewInstance () const |
|
virtual void | PrintSelf (ostream &os, vtkIndent indent) |
|
void | Dump (ostream &os) |
|
void | DebugDump () |
|
virtual int | CanReadFile (const char *fname) |
|
char * | GetTitle () |
|
int | GetDimensionality () |
|
vtkIdType | GetNumberOfNodes () |
|
vtkIdType | GetNumberOfCells () |
|
vtkIdType | GetNumberOfContinuumCells () |
|
vtkIdType | GetNumberOfSolidCells () |
|
vtkIdType | GetNumberOfThickShellCells () |
|
vtkIdType | GetNumberOfShellCells () |
|
vtkIdType | GetNumberOfRigidBodyCells () |
|
vtkIdType | GetNumberOfRoadSurfaceCells () |
|
vtkIdType | GetNumberOfBeamCells () |
|
vtkIdType | GetNumberOfParticleCells () |
|
int | GetNumberOfComponentsInSolidArray (int a) |
|
int | GetNumberOfComponentsInSolidArray (const char *arrName) |
|
int | GetNumberOfComponentsInThickShellArray (int a) |
|
int | GetNumberOfComponentsInThickShellArray (const char *arrName) |
|
int | GetNumberOfComponentsInShellArray (int a) |
|
int | GetNumberOfComponentsInShellArray (const char *arrName) |
|
int | GetNumberOfComponentsInRigidBodyArray (int a) |
|
int | GetNumberOfComponentsInRigidBodyArray (const char *arrName) |
|
int | GetNumberOfComponentsInRoadSurfaceArray (int a) |
|
int | GetNumberOfComponentsInRoadSurfaceArray (const char *arrName) |
|
int | GetNumberOfComponentsInBeamArray (int a) |
|
int | GetNumberOfComponentsInBeamArray (const char *arrName) |
|
int | GetNumberOfComponentsInParticleArray (int a) |
|
int | GetNumberOfComponentsInParticleArray (const char *arrName) |
|
|
virtual void | SetDatabaseDirectory (const char *) |
|
const char * | GetDatabaseDirectory () |
|
int | IsDatabaseValid () |
|
|
virtual void | SetFileName (const char *) |
|
const char * | GetFileName () |
|
|
vtkIdType | GetNumberOfTimeSteps () |
|
virtual void | SetTimeStep (vtkIdType) |
|
vtkIdType | GetTimeStep () |
|
double | GetTimeValue (vtkIdType) |
|
virtual int * | GetTimeStepRange () |
|
virtual void | GetTimeStepRange (int &, int &) |
|
virtual void | GetTimeStepRange (int[2]) |
|
virtual void | SetTimeStepRange (int, int) |
|
void | SetTimeStepRange (int[2]) |
|
|
int | GetNumberOfPointArrays () |
|
const char * | GetPointArrayName (int) |
|
virtual void | SetPointArrayStatus (int arr, int status) |
|
virtual void | SetPointArrayStatus (const char *arrName, int status) |
|
int | GetPointArrayStatus (int arr) |
|
int | GetPointArrayStatus (const char *arrName) |
|
int | GetNumberOfComponentsInPointArray (int arr) |
|
int | GetNumberOfComponentsInPointArray (const char *arrName) |
|
|
int | GetNumberOfCellArrays (int cellType) |
|
const char * | GetCellArrayName (int cellType, int arr) |
|
virtual void | SetCellArrayStatus (int cellType, int arr, int status) |
|
virtual void | SetCellArrayStatus (int cellType, const char *arrName, int status) |
|
int | GetCellArrayStatus (int cellType, int arr) |
|
int | GetCellArrayStatus (int cellType, const char *arrName) |
|
int | GetNumberOfComponentsInCellArray (int cellType, int arr) |
|
int | GetNumberOfComponentsInCellArray (int cellType, const char *arrName) |
|
|
int | GetNumberOfSolidArrays () |
|
const char * | GetSolidArrayName (int) |
|
virtual void | SetSolidArrayStatus (int arr, int status) |
|
virtual void | SetSolidArrayStatus (const char *arrName, int status) |
|
int | GetSolidArrayStatus (int arr) |
|
int | GetSolidArrayStatus (const char *arrName) |
|
|
int | GetNumberOfThickShellArrays () |
|
const char * | GetThickShellArrayName (int) |
|
virtual void | SetThickShellArrayStatus (int arr, int status) |
|
virtual void | SetThickShellArrayStatus (const char *arrName, int status) |
|
int | GetThickShellArrayStatus (int arr) |
|
int | GetThickShellArrayStatus (const char *arrName) |
|
|
int | GetNumberOfShellArrays () |
|
const char * | GetShellArrayName (int) |
|
virtual void | SetShellArrayStatus (int arr, int status) |
|
virtual void | SetShellArrayStatus (const char *arrName, int status) |
|
int | GetShellArrayStatus (int arr) |
|
int | GetShellArrayStatus (const char *arrName) |
|
|
int | GetNumberOfRigidBodyArrays () |
|
const char * | GetRigidBodyArrayName (int) |
|
virtual void | SetRigidBodyArrayStatus (int arr, int status) |
|
virtual void | SetRigidBodyArrayStatus (const char *arrName, int status) |
|
int | GetRigidBodyArrayStatus (int arr) |
|
int | GetRigidBodyArrayStatus (const char *arrName) |
|
|
int | GetNumberOfRoadSurfaceArrays () |
|
const char * | GetRoadSurfaceArrayName (int) |
|
virtual void | SetRoadSurfaceArrayStatus (int arr, int status) |
|
virtual void | SetRoadSurfaceArrayStatus (const char *arrName, int status) |
|
int | GetRoadSurfaceArrayStatus (int arr) |
|
int | GetRoadSurfaceArrayStatus (const char *arrName) |
|
|
int | GetNumberOfBeamArrays () |
|
const char * | GetBeamArrayName (int) |
|
virtual void | SetBeamArrayStatus (int arr, int status) |
|
virtual void | SetBeamArrayStatus (const char *arrName, int status) |
|
int | GetBeamArrayStatus (int arr) |
|
int | GetBeamArrayStatus (const char *arrName) |
|
|
int | GetNumberOfParticleArrays () |
|
const char * | GetParticleArrayName (int) |
|
virtual void | SetParticleArrayStatus (int arr, int status) |
|
virtual void | SetParticleArrayStatus (const char *arrName, int status) |
|
int | GetParticleArrayStatus (int arr) |
|
int | GetParticleArrayStatus (const char *arrName) |
|
|
void | SetDeformedMesh (int) |
|
virtual int | GetDeformedMesh () |
|
virtual void | DeformedMeshOn () |
|
virtual void | DeformedMeshOff () |
|
|
virtual void | SetRemoveDeletedCells (int) |
|
virtual int | GetRemoveDeletedCells () |
|
virtual void | RemoveDeletedCellsOn () |
|
virtual void | RemoveDeletedCellsOff () |
|
|
virtual void | SetDeletedCellsAsGhostArray (int) |
|
virtual int | GetDeletedCellsAsGhostArray () |
|
virtual void | DeletedCellsAsGhostArrayOn () |
|
virtual void | DeletedCellsAsGhostArrayOff () |
|
|
virtual void | SetInputDeck (const char *) |
|
virtual char * | GetInputDeck () |
|
|
int | GetNumberOfPartArrays () |
|
const char * | GetPartArrayName (int) |
|
virtual void | SetPartArrayStatus (int arr, int status) |
|
virtual void | SetPartArrayStatus (const char *partName, int status) |
|
int | GetPartArrayStatus (int arr) |
|
int | GetPartArrayStatus (const char *partName) |
|
vtkMultiBlockDataSetAlgorithm * | NewInstance () const |
|
vtkMultiBlockDataSet * | GetOutput () |
|
vtkMultiBlockDataSet * | GetOutput (int) |
|
void | SetInputData (vtkDataObject *) |
|
void | SetInputData (int, vtkDataObject *) |
|
virtual int | ProcessRequest (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) |
|
vtkAlgorithm * | NewInstance () const |
|
int | HasExecutive () |
|
vtkExecutive * | GetExecutive () |
|
virtual void | SetExecutive (vtkExecutive *executive) |
|
virtual int | ModifyRequest (vtkInformation *request, int when) |
|
vtkInformation * | GetInputPortInformation (int port) |
|
vtkInformation * | GetOutputPortInformation (int port) |
|
int | GetNumberOfInputPorts () |
|
int | GetNumberOfOutputPorts () |
|
void | UpdateProgress (double amount) |
|
vtkInformation * | GetInputArrayInformation (int idx) |
|
void | RemoveAllInputs () |
|
vtkDataObject * | GetOutputDataObject (int port) |
|
virtual void | RemoveInputConnection (int port, vtkAlgorithmOutput *input) |
|
virtual void | RemoveInputConnection (int port, int idx) |
|
virtual void | RemoveAllInputConnections (int port) |
|
int | GetNumberOfInputConnections (int port) |
|
int | GetTotalNumberOfInputConnections () |
|
vtkAlgorithmOutput * | GetInputConnection (int port, int index) |
|
vtkAlgorithm * | GetInputAlgorithm (int port, int index, int &algPort) |
|
vtkAlgorithm * | GetInputAlgorithm (int port, int index) |
|
vtkExecutive * | GetInputExecutive (int port, int index) |
|
vtkInformation * | GetInputInformation (int port, int index) |
|
vtkInformation * | GetOutputInformation (int port) |
|
virtual void | UpdateInformation () |
|
virtual void | UpdateDataObject () |
|
virtual void | PropagateUpdateExtent () |
|
virtual void | UpdateWholeExtent () |
|
void | ConvertTotalInputToPortConnection (int ind, int &port, int &conn) |
|
int | SetUpdateExtentToWholeExtent (int port) |
|
int | SetUpdateExtentToWholeExtent () |
|
void | SetUpdateExtent (int port, int extent[6]) |
|
int | ProcessRequest (vtkInformation *request, vtkCollection *inInfo, vtkInformationVector *outInfo) |
|
virtual int | ComputePipelineMTime (vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int requestFromOutputPort, unsigned long *mtime) |
|
virtual vtkInformation * | GetInformation () |
|
virtual void | SetInformation (vtkInformation *) |
|
virtual void | Register (vtkObjectBase *o) |
|
virtual void | UnRegister (vtkObjectBase *o) |
|
virtual void | SetAbortExecute (int) |
|
virtual int | GetAbortExecute () |
|
virtual void | AbortExecuteOn () |
|
virtual void | AbortExecuteOff () |
|
virtual void | SetProgress (double) |
|
virtual double | GetProgress () |
|
void | SetProgressText (const char *ptext) |
|
virtual char * | GetProgressText () |
|
virtual unsigned long | GetErrorCode () |
|
virtual void | SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, const char *name) |
|
virtual void | SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, int fieldAttributeType) |
|
virtual void | SetInputArrayToProcess (int idx, vtkInformation *info) |
|
virtual void | SetInputArrayToProcess (int idx, int port, int connection, const char *fieldAssociation, const char *attributeTypeorName) |
|
vtkDataObject * | GetInputDataObject (int port, int connection) |
|
virtual void | SetInputConnection (int port, vtkAlgorithmOutput *input) |
|
virtual void | SetInputConnection (vtkAlgorithmOutput *input) |
|
virtual void | AddInputConnection (int port, vtkAlgorithmOutput *input) |
|
virtual void | AddInputConnection (vtkAlgorithmOutput *input) |
|
virtual void | SetInputDataObject (int port, vtkDataObject *data) |
|
virtual void | SetInputDataObject (vtkDataObject *data) |
|
virtual void | AddInputDataObject (int port, vtkDataObject *data) |
|
virtual void | AddInputDataObject (vtkDataObject *data) |
|
vtkAlgorithmOutput * | GetOutputPort (int index) |
|
vtkAlgorithmOutput * | GetOutputPort () |
|
vtkAlgorithm * | GetInputAlgorithm () |
|
vtkExecutive * | GetInputExecutive () |
|
vtkInformation * | GetInputInformation () |
|
virtual void | Update (int port) |
|
virtual void | Update () |
|
virtual void | SetReleaseDataFlag (int) |
|
virtual int | GetReleaseDataFlag () |
|
void | ReleaseDataFlagOn () |
|
void | ReleaseDataFlagOff () |
|
int | UpdateExtentIsEmpty (vtkInformation *pinfo, vtkDataObject *output) |
|
int | UpdateExtentIsEmpty (vtkInformation *pinfo, int extentType) |
|
void | SetUpdateExtent (int port, int piece, int numPieces, int ghostLevel) |
|
void | SetUpdateExtent (int piece, int numPieces, int ghostLevel) |
|
void | SetUpdateExtent (int extent[6]) |
|
int * | GetUpdateExtent () |
|
int * | GetUpdateExtent (int port) |
|
void | GetUpdateExtent (int &x0, int &x1, int &y0, int &y1, int &z0, int &z1) |
|
void | GetUpdateExtent (int port, int &x0, int &x1, int &y0, int &y1, int &z0, int &z1) |
|
void | GetUpdateExtent (int extent[6]) |
|
void | GetUpdateExtent (int port, int extent[6]) |
|
int | GetUpdatePiece () |
|
int | GetUpdatePiece (int port) |
|
int | GetUpdateNumberOfPieces () |
|
int | GetUpdateNumberOfPieces (int port) |
|
int | GetUpdateGhostLevel () |
|
int | GetUpdateGhostLevel (int port) |
|
void | SetProgressObserver (vtkProgressObserver *) |
|
virtual vtkProgressObserver * | GetProgressObserver () |
|
vtkObject * | NewInstance () const |
|
virtual void | DebugOn () |
|
virtual void | DebugOff () |
|
bool | GetDebug () |
|
void | SetDebug (bool debugFlag) |
|
virtual void | Modified () |
|
virtual unsigned long | GetMTime () |
|
unsigned long | AddObserver (unsigned long event, vtkCommand *, float priority=0.0f) |
|
unsigned long | AddObserver (const char *event, vtkCommand *, float priority=0.0f) |
|
vtkCommand * | GetCommand (unsigned long tag) |
|
void | RemoveObserver (vtkCommand *) |
|
void | RemoveObservers (unsigned long event, vtkCommand *) |
|
void | RemoveObservers (const char *event, vtkCommand *) |
|
int | HasObserver (unsigned long event, vtkCommand *) |
|
int | HasObserver (const char *event, vtkCommand *) |
|
void | RemoveObserver (unsigned long tag) |
|
void | RemoveObservers (unsigned long event) |
|
void | RemoveObservers (const char *event) |
|
void | RemoveAllObservers () |
|
int | HasObserver (unsigned long event) |
|
int | HasObserver (const char *event) |
|
template<class U , class T > |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f) |
|
template<class U , class T > |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
|
template<class U , class T > |
unsigned long | AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
|
int | InvokeEvent (unsigned long event, void *callData) |
|
int | InvokeEvent (const char *event, void *callData) |
|
int | InvokeEvent (unsigned long event) |
|
int | InvokeEvent (const char *event) |
|
const char * | GetClassName () const |
|
virtual void | Delete () |
|
virtual void | FastDelete () |
|
void | Print (ostream &os) |
|
void | SetReferenceCount (int) |
|
void | PrintRevisions (ostream &) |
|
virtual void | PrintHeader (ostream &os, vtkIndent indent) |
|
virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
|
int | GetReferenceCount () |
|
|
virtual vtkObjectBase * | NewInstanceInternal () const |
|
| vtkLSDynaReader () |
|
virtual | ~vtkLSDynaReader () |
|
int | ReadHeaderInformation (int currentAdaptLevel) |
|
int | ScanDatabaseTimeSteps () |
|
virtual int | RequestInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
|
virtual int | RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
|
virtual void | ResetPartInfo () |
|
virtual int | ReadInputDeck () |
|
virtual int | ReadPartTitlesFromRootFile () |
|
virtual int | ReadUserMaterialIds () |
|
int | WriteInputDeckSummary (const char *fname) |
|
virtual void | ReadDeletionArray (vtkUnsignedCharArray *arr, const int &pos, const int &size) |
|
virtual void | ReadCellProperties (const int &type, const int &numTuples) |
|
void | ResetPartsCache () |
|
|
virtual int | ReadTopology () |
|
virtual int | ReadNodes () |
|
virtual int | ReadPartSizes () |
|
virtual int | ReadConnectivityAndMaterial () |
|
virtual int | ReadUserIds () |
|
virtual int | ReadState (vtkIdType) |
|
virtual int | ReadNodeStateInfo (vtkIdType) |
|
virtual int | ReadCellStateInfo (vtkIdType) |
|
virtual int | ReadDeletion () |
|
virtual int | ReadSPHState (vtkIdType) |
|
|
int | ReadInputDeckXML (ifstream &deck) |
|
int | ReadInputDeckKeywords (ifstream &deck) |
|
| vtkMultiBlockDataSetAlgorithm () |
|
| ~vtkMultiBlockDataSetAlgorithm () |
|
virtual vtkExecutive * | CreateDefaultExecutive () |
|
virtual int | FillOutputPortInformation (int port, vtkInformation *info) |
|
virtual int | FillInputPortInformation (int port, vtkInformation *info) |
|
vtkDataObject * | GetInput (int port) |
|
virtual int | RequestDataObject (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
|
virtual int | RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
|
| vtkAlgorithm () |
|
| ~vtkAlgorithm () |
|
virtual void | SetNumberOfInputPorts (int n) |
|
virtual void | SetNumberOfOutputPorts (int n) |
|
int | InputPortIndexInRange (int index, const char *action) |
|
int | OutputPortIndexInRange (int index, const char *action) |
|
int | GetInputArrayAssociation (int idx, vtkInformationVector **inputVector) |
|
virtual void | ReportReferences (vtkGarbageCollector *) |
|
virtual void | SetNumberOfInputConnections (int port, int n) |
|
int | GetInputArrayAssociation (int idx, int connection, vtkInformationVector **inputVector) |
|
int | GetInputArrayAssociation (int idx, vtkDataObject *input) |
|
vtkDataArray * | GetInputArrayToProcess (int idx, vtkInformationVector **inputVector) |
|
vtkDataArray * | GetInputArrayToProcess (int idx, vtkInformationVector **inputVector, int &association) |
|
vtkDataArray * | GetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector) |
|
vtkDataArray * | GetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association) |
|
vtkDataArray * | GetInputArrayToProcess (int idx, vtkDataObject *input) |
|
vtkDataArray * | GetInputArrayToProcess (int idx, vtkDataObject *input, int &association) |
|
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector) |
|
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector, int &association) |
|
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector) |
|
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association) |
|
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkDataObject *input) |
|
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkDataObject *input, int &association) |
|
vtkInformation * | GetInputArrayFieldInformation (int idx, vtkInformationVector **inputVector) |
|
virtual void | SetNthInputConnection (int port, int index, vtkAlgorithmOutput *input) |
|
void | SetInputDataInternal (int port, vtkDataObject *input) |
|
void | AddInputDataInternal (int port, vtkDataObject *input) |
|
virtual void | SetErrorCode (unsigned long) |
|
| vtkObject () |
|
virtual | ~vtkObject () |
|
virtual void | RegisterInternal (vtkObjectBase *, int check) |
|
virtual void | UnRegisterInternal (vtkObjectBase *, int check) |
|
void | InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL) |
|
void | InternalReleaseFocus () |
|
| vtkObjectBase () |
|
virtual | ~vtkObjectBase () |
|
virtual void | CollectRevisions (ostream &) |
|
| vtkObjectBase (const vtkObjectBase &) |
|
void | operator= (const vtkObjectBase &) |
|
Read LS-Dyna databases (d3plot)
This filter reads LS-Dyna databases.
The Set/GetFileName() routines are actually wrappers around the Set/GetDatabaseDirectory() members; the actual filename you choose is irrelevant – only the directory name is used. This is done in order to accommodate ParaView.
Note that this reader produces 7 output meshes. These meshes are required as several attributes are defined on subsets of the mesh. Below is a list of meshes in the order they are output and an explanation of which attributes are unique to each mesh:
- solid (3D) elements: number of integration points are different than 2D
- thick shell elements: number of integration points are different than planar 2D
- shell (2D) elements: number of integration points are different than 3D
- rigid surfaces: can't have deflection, only velocity, accel, etc.
- road surfaces: have only a "segment ID" (serves as material ID) and a velocity.
- beam elements: have Frenet (TNB) frame and cross-section attributes (shape and size)
spherical particle hydrodynamics (SPH) elements: have a radius of influence, internal energy, etc. Because each mesh has its own cell attributes, the vtkLSDynaReader has a rather large API. Instead of a single set of routines to query and set cell array names and status, one exists for each possible output mesh. Also, GetNumberOfCells() will return the sum of all the cells in all 7 meshes. If you want the number of cells in a specific mesh, there are separate routines for each mesh type.
- Attention
- LSDyna files contain 3 different types of sections: control, data, and state. Control sections contain constants that describe the type of simulation data in a file or group of files. Data sections contain simulation information that is invariant across individual time steps (but can vary when a mesh adaptation occurs). This information includes material, connectivity, and undeformed geometry. Finally, state data is information that varies with each time step. Unless a mesh adaptation occurs, there will be a single control and data section, and they will be located at the start of the database (the first file).
-
In their infinite wisdom, LSDyna developers decided to split simulation data into multiple files, each no larger than some predetermined limit. Each file can contain one section, a partial section (if it would not fit into a single file), or multiple sections. Files are padded with zeros so that their lengths will be multiples of 512*512. The size of each section is determined by constants in the control and data sections, which means that these must be parsed carefully in order to correctly locate desired information. Unfortunately, the constants are not terribly well-documented and in some cases the documentation is in error.
- Open Issues
- : The LS-Dyna file format document leaves a good bit open to interpretation. In addition to the "documentation vs. files in the
wild" issues there are also implementation problems.
- Open Issues
- :
- Where exactly may breaks to a new file occur in the pre-state information? At each section?
- Will state data sections (node/cell data, element deletion, sph data, rigid body motion) be moved to the beginning of a new file if their data will be too large for a given file, or are all the sections counted together as a single state (makes more sense for keeping time word at start of every file). The questions above arise because the docs (p. 3) state "There are 3
sections in this database." but then call many smaller pieces of data "sections". Should they be subsections? The docs are quiet about whether the second section (of 3) is ever split across multiple files and, if so, whether it is done at (sub)section boundaries when possible or just wherever it needs to occur.
- How many components does Eddy Viscosity have? It's shown as 7 bits in NCFDV1 which makes no sense at all.
- Why is NARBS larger than 10+NUMNP+NEL8+NEL2+NEL4+NELT (which is the value specified by the documentation)? Obviously, NARBS is definitive, but what are the extra numbers at the end?
- Is there a difference between rigid body elements NUMRBE and rigid road surfaces? It appears that the nodes and connectivity of the road surface are given separately (p.13) while on p.7 the Material Type Data subsection says that shells in a rigid body will just have a certain material ID but be interspersed among deformable shell elements.
- Word 37 of the control section serves two possible purposes... it can mean NMSPH or EDLOPT. I assume that different versions of the code use that word differently. How do we know the difference?
- It's unclear how much state isn't stored when a shell element is marked as rigid. Specifically, is element deletion data stored for rigid shells? Page 21 of the spec is mute on this.
The loop to read cell User IDs won't work if Rigid Body and Shell elements are interleaved (which I now believe they are).
- Open Issues
- : On the VTK side of things:
- Berk has nudged me towards multiblock outputs but hasn't committed to exactly how things can be made efficient for a parallel version of the reader.
- This reader will eventually need to respond to a second output port for "small spatial, large temporal" queries.
- The reader doesn't handle crack files (d3crck)
- The reader doesn't handle interface force files (no default name)
- The reader doesn't handle time history (abbreviated output) files (d3thdt)
- The reader doesn't handle dynamic relaxation files (d3drfl)
- The reader doesn't handle reduced parts (state for a subset of parts) files (d3part)
- The reader doesn't handle mode shape files (d3eigv)
- The reader doesn't handle equilibrium iteration files (d3iter)
- The reader doesn't handle extra time data files (d3xtf)
- The reader doesn't handle printer files (d3hsp)
- The reader doesn't handle modal neutral files (d3mnf)
- The reader doesn't handle packed connectivity.
- The reader doesn't handle adapted element parent lists (but the 2002 specification says LSDyna doesn't implement it).
- All the sample datasets have MATTYP = 0. Need something to test MATTYP = 1.
- I have no test datasets with rigid body and/or road surfaces, so the implementation is half-baked.
It's unclear how some of the data should be presented. Although blindly tacking the numbers into a large chuck of cell data is better than nothing, some attributes (e.g., forces & moments) lend themselves to more elaborate presentation. Also, shell and thick shell elements have stresses that belong to a particular side of an element or have a finite thickness that could be rendered. Finally, beam elements have cross sections that could be rendered. Some of these operations require numerical processing of the results and so we shouldn't eliminate the ability to get at the raw simulation data. Perhaps a filter could be applied to "fancify" the geometry.
- Tests:
- vtkLSDynaReader (Tests)
Definition at line 166 of file vtkLSDynaReader.h.