/*========================================================================= Program: Visualization Toolkit Module: LSDynaMetaData.cxx Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #include "LSDynaMetaData.h" //------------------------------------------------------------------------------ LSDynaMetaData::LSDynaMetaData() { this->FileIsValid = 0; this->Dimensionality = 0; this->NumberOfNodes = 0; this->FileSizeFactor = 7; this->MaxFileLength = this->FileSizeFactor * 512 * 512 * 8; this->Title[0] = '\0'; this->ReleaseNumber[0] = '\0'; this->CodeVersion = 0.0; this->PreStateSize = 0; this->StateSize = 0; this->CurrentState = 0; this->ElementDeletionOffset = 0; this->SPHStateOffset = 0; std::vector blankNames; std::vector blankNumbers; for (int cellType = 0; cellType < LSDynaMetaData::NUM_CELL_TYPES; ++cellType) { this->NumberOfCells[cellType] = 0; this->CellArrayNames[cellType] = blankNames; this->CellArrayComponents[cellType] = blankNumbers; this->CellArrayStatus[cellType] = blankNumbers; } } //------------------------------------------------------------------------------ bool LSDynaMetaData::AddPointArray(const std::string& name, int numComponents, int status) { for (unsigned i = 0; i < this->PointArrayNames.size(); ++i) { if (this->PointArrayNames[i] == name) { return false; } } this->PointArrayNames.push_back(name); this->PointArrayComponents.push_back(numComponents); this->PointArrayStatus.push_back(status); return true; } //------------------------------------------------------------------------------ bool LSDynaMetaData::AddCellArray( int cellType, const std::string& name, int numComponents, int status) { for (unsigned i = 0; i < this->CellArrayNames[cellType].size(); ++i) { if (this->CellArrayNames[cellType][i] == name) { return false; } } this->CellArrayNames[cellType].push_back(name); this->CellArrayComponents[cellType].push_back(numComponents); this->CellArrayStatus[cellType].push_back(status); return true; } //------------------------------------------------------------------------------ vtkIdType LSDynaMetaData::GetTotalMaterialCount() { return this->Dict["NUMMAT8"] + this->Dict["NUMMATT"] + this->Dict["NUMMAT4"] + this->Dict["NUMMAT2"] + this->Dict["NGPSPH"] + this->Dict["NSURF"]; // Dict["NUMMAT"] is the subset of Dict["NUMMAT4"] materials that are rigid body materials // FIXME: Should NSURF be in here at all? I don't have any datasets w/ NSURF > 0, so I can't test. } //------------------------------------------------------------------------------ void LSDynaMetaData::Reset() { this->FileIsValid = 0; this->FileSizeFactor = 7; this->MaxFileLength = this->FileSizeFactor * 512 * 512 * 8; this->Title[0] = '\0'; this->ReleaseNumber[0] = '\0'; this->CodeVersion = 0.0; this->PreStateSize = 0; this->StateSize = 0; this->CurrentState = 0; this->Dict.clear(); this->Fam.Reset(); this->PointArrayNames.clear(); this->PointArrayComponents.clear(); this->PointArrayStatus.clear(); for (int cellType = 0; cellType < LSDynaMetaData::NUM_CELL_TYPES; ++cellType) { this->CellArrayNames[cellType].clear(); this->CellArrayComponents[cellType].clear(); this->CellArrayStatus[cellType].clear(); } this->PartNames.clear(); this->PartIds.clear(); this->PartMaterials.clear(); this->PartStatus.clear(); this->MaterialsOrdered.clear(); this->MaterialsUnordered.clear(); this->MaterialsLookup.clear(); this->RigidSurfaceSegmentSizes.clear(); this->TimeValues.clear(); }