Features¶
Overview¶
- Python 2.7, 3.6-3.7
- BSD-3 license
- unicode support
- importable from within Matlab
- limited package requirements for BDF/OP2/F06
additional features available with more packages
BDF/OP2:
- h5py for HDF5 input/output support
- PyQt4/PyQt5/PySide/PySide2/wxpython for file loading popup
OP2:
- pandas for results/matrices for use in the Jupyter Notebook
F06:
- matplotlib support for plotting
GUI: range of choices
- PyQt4/PyQt5/PySide/PySide2
- VTK 7/8
logging using cpylog
- colorama for console logging
- HTML logging for Jupyter Notebook
- no markup when piping output to a file
- supports overwriting logger object with user-defined logger
BDF Reader/Writer¶
- Input/Output:
- 473 cards supported including:
- optimization
- aero
- thermal
- superelements
- small, large, double precision file reading/writing
- pickling
- HDF5 reading/writing
- comments are stored
- simplified card adding
`python >>> model.add_grid(nid, xyz=[4.,5.,6.], comment='nid, cp, x, y, z') `` $GRID comment $grid,nid,cp,x,y,z GRID,10,,4.0,5.0,6.0 `- methods:
- loads summation
- mass properties (including NSM)
- nodal equivalencing
- mesh quality
- aspect ratio, taper ratio, skew, min/max interior angle
- quad collapsing
- element deletion
- deck merging
- renumber
- unit conversion
- cutting plane
- visualization of material coordinate systems
- mirroring
- solid skinning
- length, area, volume, mass breakdowns
- list of cards supported…
| Card Group | Cards |
| MATS1 | MATS1 |
| MATT1 | MATT1 |
| MATT2 | MATT2 |
| MATT3 | MATT3 |
| MATT4 | MATT4 |
| MATT5 | MATT5 |
| MATT8 | MATT8 |
| MATT9 | MATT9 |
| aecomps | AECOMP |
| aefacts | AEFACT |
| aelinks | AELINK |
| aelists | AELIST |
| aeparams | AEPARM |
| aero | AERO |
| aeros | AEROS |
| aestats | AESTAT |
| aesurf | AESURF |
| aesurfs | AESURFS |
| ao_element_flags | CBARAO |
| asets | ASET, ASET1 |
| axic | AXIC |
| axif | AXIF |
| bconp | BCONP |
| bcrparas | BCRPARA |
| bcs | CONV, CONVM, RADBC, RADM, TEMPBC |
| bctadds | BCTADD |
| bctparas | BCTPARA |
| bctsets | BCTSET |
| blseg | BLSEG |
| bsets | BSET, BSET1 |
| bsurf | BSURF |
| bsurfs | BSURFS |
| cMethods | EIGC, EIGP |
| caeros | CAERO1, CAERO2, CAERO3, CAERO4, CAERO5 |
| convection_properties | PCONV, PCONVM |
| coords | CORD1C, CORD1R, CORD1S, CORD2C, CORD2R, CORD2S, GMCORD |
| creep_materials | CREEP |
| csets | CSET, CSET1 |
| csschds | CSSCHD |
| csuper | CSUPER |
| csupext | CSUPEXT |
| dareas | DAREA |
| dconstrs | DCONADD, DCONSTR |
| ddvals | DDVAL |
| delays | DELAY |
| dequations | DEQATN |
| desvars | DESVAR |
| divergs | DIVERG |
| dlinks | DLINK |
| dload_entries | ACSRCE, QVECT, RANDPS, RANDT1, RLOAD1, RLOAD2, TLOAD1, |
| TLOAD2 | |
| dloads | DLOAD |
| dmigs | DMIG |
| dmijis | DMIJI |
| dmijs | DMIJ |
| dmiks | DMIK |
| dmis | DMI |
| doptprm | DOPTPRM |
| dphases | DPHASE |
| dresps | DRESP1, DRESP2, DRESP3 |
| dscreen | DSCREEN |
| dtable | DTABLE |
| dti | DTI |
| dvcrels | DVCREL1, DVCREL2 |
| dvgrids | DVGRID |
| dvmrels | DVMREL1, DVMREL2 |
| dvprels | DVPREL1, DVPREL2 |
| elements | CBAR, CBEAM, CBEAM3, CBEND, CBUSH, CBUSH1D, CBUSH2D, |
| CDAMP1, CDAMP2, CDAMP3, CDAMP4, CDAMP5, CELAS1, CELAS2, | |
| CELAS3, CELAS4, CFAST, CGAP, CHBDYE, CHBDYG, CHBDYP, | |
| CHEXA, CIHEX1, CIHEX2, CONROD, CPENTA, CPLSTN3, CPLSTN4, | |
| CPLSTN6, CPLSTN8, CPYRAM, CQUAD, CQUAD4, CQUAD8, CQUADR, | |
| CQUADX, CQUADX4, CQUADX8, CRAC2D, CRAC3D, CROD, CSHEAR, | |
| CTETRA, CTRAX3, CTRAX6, CTRIA3, CTRIA6, CTRIAR, CTRIAX, | |
| CTRIAX6, CTUBE, CVISC, GENEL | |
| flfacts | FLFACT |
| flutters | FLUTTER |
| frequencies | FREQ, FREQ1, FREQ2, FREQ3, FREQ4, FREQ5 |
| grdset | GRDSET |
| gridb | GRIDB |
| gusts | GUST |
| hyperelastic_materials | MATHE, MATHP |
| load_combinations | LOAD, LSEQ |
| loads | ACCEL, ACCEL1, FORCE, FORCE1, FORCE2, GMLOAD, GRAV, |
| LOADCYN, MOMENT, MOMENT1, MOMENT2, PLOAD, PLOAD1, PLOAD2, | |
| PLOAD4, PLOADX1, QBDY1, QBDY2, QBDY3, QHBDY, QVOL, | |
| RFORCE, RFORCE1, SLOAD, SPCD, TEMP | |
| masses | CMASS1, CMASS2, CMASS3, CMASS4, CONM1, CONM2 |
| materials | MAT1, MAT10, MAT11, MAT2, MAT3, MAT3D, MAT8, MAT9, MATG |
| methods | EIGB, EIGR, EIGRL |
| mkaeros | MKAERO1, MKAERO2 |
| monitor_points | MONPNT1, MONPNT2, MONPNT3 |
| mpcadds | MPCADD |
| mpcs | MPC |
| nlparms | NLPARM |
| nlpcis | NLPCI |
| nodes | EPOINT, GRID, SPOINT |
| normals | SNORM |
| nsmadds | NSMADD |
| nsms | NSM, NSM1, NSML, NSML1 |
| nxstrats | NXSTRAT |
| omits | OMIT1 |
| paeros | PAERO1, PAERO2, PAERO3, PAERO4, PAERO5 |
| params | PARAM |
| pbusht | PBUSHT |
| pdampt | PDAMPT |
| pelast | PELAST |
| phbdys | PHBDY |
| plotels | PLOTEL |
| points | POINT |
| properties | PBAR, PBARL, PBCOMP, PBEAM, PBEAML, PBEND, PBMSECT, |
| PBRSECT, PBUSH, PBUSH1D, PCOMP, PCOMPG, PCOMPS, PCONEAX, | |
| PDAMP, PDAMP5, PELAS, PFAST, PGAP, PIHEX, PLPLANE, | |
| PLSOLID, PPLANE, PRAC2D, PRAC3D, PROD, PSHEAR, PSHELL, | |
| PSOLID, PTUBE, PVISC | |
| properties_mass | PMASS |
| qsets | QSET, QSET1 |
| radcavs | RADCAV, RADLST |
| radmtx | RADMTX |
| radset | RADSET |
| random_tables | TABRND1, TABRNDG |
| rigid_elements | RBAR, RBAR1, RBE1, RBE2, RBE3, RROD, RSPLINE, RSSCON |
| ringaxs | POINTAX, RINGAX |
| ringfl | RINGFL |
| rotors | ROTORD, ROTORG |
| se_bsets | SEBSET, SEBSET1 |
| se_csets | SECSET, SECSET1 |
| se_qsets | SEQSET, SEQSET1 |
| se_sets | SESET |
| se_suport | SESUP |
| se_usets | SEQSET1 |
| sebndry | SEBNDRY |
| sebulk | SEBULK |
| seconct | SECONCT |
| seelt | SEELT |
| seexcld | SEEXCLD |
| selabel | SELABEL |
| seload | SELOAD |
| seloc | SELOC |
| sempln | SEMPLN |
| senqset | SENQSET |
| seqgp | SEQGP |
| setree | SETREE |
| sets | SET1, SET3 |
| spcadds | SPCADD |
| spcoffs | SPCOFF, SPCOFF1 |
| spcs | GMSPC, SPC, SPC1, SPCAX |
| splines | SPLINE1, SPLINE2, SPLINE3, SPLINE4, SPLINE5, SPLINE6, |
| SPLINE7 | |
| suport | SUPORT |
| suport1 | SUPORT1 |
| tables | TABLEH1, TABLEHT, TABLES1, TABLEST |
| tables_d | TABLED1, TABLED2, TABLED3, TABLED4 |
| tables_m | TABLEM1, TABLEM2, TABLEM3, TABLEM4 |
| tables_sdamping | TABDMP1 |
| tempds | TEMPD |
| thermal_materials | MAT4, MAT5 |
| tics | TIC |
| transfer_functions | TF |
| trims | TRIM, TRIM2 |
| tstepnls | TSTEP1, TSTEPNL |
| tsteps | TSTEP |
| usets | USET, USET1 |
| view3ds | VIEW3D |
| views | VIEW |
- Executive Control Deck
- System Control Deck
- Case Control Deck
- cross-referencing to simplify accessing data
- *_ref attributes are cross-referenced
- element.nodes is not cross-referenced
- element.nodes_ref is cross-referenced
- safe cross-referencing for imperfect models
- optional error storage to get a list of all discovered errors as once
- model validation
OP4 Reader¶
- For matrices, the OP2 is preffered. It’s simply faster.
- Types:
- ASCII/binary
- SMALL/BIG MAT format
- Real/Complex
- Sparse/Dense
- Single/Double Precision
- ASCII writer
OP2 Reader / F06 Writer¶
- Supported Nastran versions:
- MSC Nastran
- NX Nastran
- Optistruct
- Radioss
- IMAT
- Autodesk Nastran/Nastran-in-CAD
- geometry not supported
- Input/Output:
- Very fast OP2 reader (up to 500 MB/sec with an SSD)
- Memory efficient
- support directly loading into HDF5 for very large models
- HDF5 export/import support for MATLAB integration
- pandas support (results & matrices)
- F06 writing
- Most fatal errors caught (BDF input errors not caught)
- geometry can be read directly from op2 (it’s not perfect, but it’s much faster)
- Operations:
- transform displacement/eigenvectors/spc/mpc/applied loads to global coordinate system
- transform stresses/forces to material coordinate system
- Supports:
- superelements
- optimization
- mesh adaptivity
- preload
- shape optimization
OP2 Results¶
This is probably an incomplete list. Most results are supported.
Basic Tables
- Types:
- Displacment
- Velocity
- Acceleration
- Eigenvectors
- SPC/MPC Forces
- Applied Loads
- Load Vectors
- Temperature
- Real/Complex
- Random; no NO (Number of Crossings) or RMS results
Stress/Strain
Real/Complex
Random; no NO (Number of Crossings) or RMS results
Types:
- Spring, Rod, Bar, Beam, Bushing, Gap, Shell, Solid
Forces
Real/Complex
Types:
- Loads: Spring, Rod, Bar, Beam, Bushing, Gap, Shell (Isotropic/Composite), Solid
- Thermal Gradient/Flux: 1D, 2D, 3D
Grid Point Forces
- Real/Complex
Strain Energy
- Real/Complex
- Types:
- Spring, Rod, Bar, Beam, Bushing, Gap, Shell (Isotropic/Composite), Solid, Rigid, DMIG
Matrices
- Basic:
- Real/Complex
- Sparse/Dense
- Single/Double Precision
- MATPOOL:
- Real/Complex
- Sparse/Dense
- Single/Double Precision
- Basic:
Other
- Eigenvalues
- Modal, Buckling, Complex
- Grid Point Weight
- Monitor Points
- Design Optimization:
- Convergence History
- Limited Design Responses:
- Weight
- Stress (Isotropic/Composite)
- Strain (Isotropic/Composite)
- Force
- Flutter
- Eigenvalues
F06 Plotter¶
- flutter (SOL 145) parser
- Supports:
- multiple subcases
- PK and PKNL methods
- plot_Vg_Vf(…), plot_Vg(…), plot_root_locus(…)
- input/output units
GUI¶
buttons for picking, rotation center, distance, min/max
GUI Features:
Packages:
- PyQt4/PyQt5
- PySide/PySide2
- QScintilla & pygments support for scripting code editor
color coded logging
legend menu
- min/max control
- number of labels/colors
- additional color maps
- legend position
animation menu
- mix and match fringe/displacement/vector results (e.g., stress shown on a displaced model)
- Real/Complex Results
- Scale factor
- Phase
- Time
- Multiple Animation Profiles
- Where:
- in GUI
- exported gif
node/element highlighting
element groups
high resolution screenshots
nodal/centroidal picking
coordinate systems
results sidebar
custom user results
- nodal fringe
- centroidal fringe
- deflection
- nodal vector results (e.g., SPC forces)
preferences menu
Nastran Specific Features¶
- multiple OP2s
- deflection plots
- SOL 200 support
- geometry
- all elements supported in BDF
- bar profile visualzation
- 3D
- dimensional vectors
- aero models
- CAERO panels & subpanels
- sideslip coordinate systems support
- mass elements
- plotting elements (e.g., PLOTEL)
- nominal geometry (useful for deflection plots)
Nastran Geometry Results¶
- node id
- element id
- property id
- PSHELL breakdown
- thickness, ts/t, 12I/t^3
- for each material:
- material id
- stiffnesses
- is_isotropic
- PCOMP breakdown
- total thickness
- for each layer:
- thickness
- material id
- stiffnesses
- is_isotropic
- PSOLID breakdown
- material id
- stiffnesses
- is_isotropic
- PSHELL breakdown
- loads
- optimization
- design regions
- current value
- lower/upper bounds
- mesh quality:
- area, min/max interior angle, skew angle, aspect ratio, taper ratio results
Nastran OP2 Results¶
- solution types:
- analysis types:
- static
- modal
- frequency response
- load step
- additional model complexity
- optimization
- preload
- analysis types:
- result quantities:
- displacement, velocity, acceleration, eigenvectors
- SPC/MPC forces
- applied loads
- temperature
- stress/strain
- strain energy
- limited element forces
- thermal gradient/flux
Converters / Additional GUI Options¶
pyNastran’s code base makes it easy to develop other useful tools that make use of common code. As such, additional formats are supported in terms of readers/writers/converters/viewing, but are not a main focus.
These include:
- AFLR
- AVL
- Cart3d
- Panair
- OpenFOAM
- S/HABP
- LAWGS
- FAST
- STL
- SU2
- Tetgen
- Tecplot
- Usm3d
- Abaqus