Add TACSMeshReader support for 16 and 25 node quad elements #338
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds the ability for TACSMeshReader to read in higher order quad elements. I also updated the annulus example to work with these element types, results below.
Unfortunately, because CQUAD16 and CQUAD25 are not NASTRAN element types, the pymeshloader cannot read these elements.
Additionally, I was running into some multiple definition errors caused by a couple of variables that are defined in the TACSMeshLoader header file when compiling code that links to both TACS and an object file that uses TACSMeshLoader, for example:
TACSHelpers.h:
TACSHelpers.cpp:
RunTacs.cpp:
If you first compile
TACSHelpers.o
, then compileRunTacs
against both TACS andTACSHelpers.o
, you'll get a linking error like this:This is because
TacsMeshLoaderElementTypes
is defined inTACSMeshLoader.h
but outside theTACSMeshLoader
class and thus becomes defined inTACSHelpers.o
, when you then compileRunTACS
, it sees this definition and the original one from TACS.Since these variables are only ever used inside the mesh loader class, I just made these variables
static const
attributes ofTACSMeshLoader
, which fixes this issue.