forked from SteveDoyle2/pyNastran
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreleaseNotes.txt
836 lines (727 loc) · 29.9 KB
/
releaseNotes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
See the "bdf_xxx.txt" or "op2_xxx.txt" files for a list of the BDF/OP2 features that
are supported. They're nice and long :)
This document discusses the major features (and limitations) added in each
version of the software. See the HTML documentation for more information.
If you like it/want to help leave some feedback on the
Dicussion Page: https://groups.google.com/forum/#!forum/pynastran-discuss
Developer Dicussion https://groups.google.com/forum/#!forum/pynastran-dev
If you have a bug/want a new feature or card, leave some feedback on the
Issues List: https://github.com/SteveDoyle2/pyNastran/issues
This code was written entirely in Python and should install easily.
*** Not done....
--------------------------------Future--------------------------------
Overall Notes
Added BDF
- *** SET2,PEALST,TIC,DMI,CONM1
Overall OP2
- ***added support for SORT2
BDF Bug Fixes
BDF API Additions
Removed BDF
Overall OP2
- added plotting support for "standard" results (***complex)
- ***complex results may plot in real/imag or mag/phase or PSD
(power spectral density)
- ***no temperature, stress, element forces, energy
Overall F06 Reader/Writer
Added F06 Reader
Added F06 Writer
Solver
- not released
- rewriting pyNastran solver (SOL 101)
- improved support for 3D
- uses case control deck to identify loads/BCs
- still uses dense matricies, but layout will be easier to add sparse
matricies later
- still need to build Kgg/Fg/SPC/MPC matrices, partition matrices,
solve, calculate responses
- added D matricies for PSHELL, PCOMP, PSOLID
-----------------------v0.8.0 released 2015/10/25-----------------------
Major changes:
- BDF supports unicode
- 24 new cards
BDF:
- unicode is now supported
- support for the following in the header:
$ pyNastran: encoding=latin1
$ pyNastran: punch=True
$ pyNastran: version=nx
- self.set_as_msc() / self.set_as_nx()
- added bdf.get_cards_by_card_types to get list of cards by card type easily
- self._type_to_id_map
- self._type_to_slot_map
- self._slot_to_type_map
- added:
- cards
- splines: SPLINE3
- aecomps: AECOMP
- pbushts: PBUSHT
- pelasts: PELAST
- pdampts: PDAMPT
- epoints: EPOINT
- transfer_functions: TF
- loads: QVOL, GMLOAD
- csschd: CSSCHD
- usets : USET, USET1
- coords: GMCORD
- spcs: GMSPC
- tempds : TEMPD
- se_sets: SESUP
- se_bsets: SEBSET/SEBSET1
- se_csets: SECSET/SECSET1
- se_qsets: SEQSET/SEQSET1
- dtable : DTABLE
- dequations : DEQATN
- dphases : DPHASE
- more xref
- attempting to xref every card
- supports reading executive/case control decks
- renumbering
- parsing of "SET 1 THRU 10 EXCEPT, 8, 11, 12" in case control deck
- fixes:
- SUPORT1 dropping extra cards with same sid
- fixed bug in SPCAX with init
- fixed bug in CBUSH with GB of None
- QHBDY handles missing nodes better
- CFAST doesn't crash for blank nodes
- PFAST handles cid=-1
- renamed nlparm.id to nlparm.nlparm_id as it was obviously wrong
- renamed nlpci.nlparm_id to nlpci.nlpci_id as it was obviously wrong
- self.setSuper is now self.se_sets
- RBE3 is ambiguous; no longer handling bad cards
- model.material_ids
- MPC writing bug
- add_card and print_card_16 now handles float32
- API changes:
- case control now returns PRESSURE as DISPLACEMENT and not VECTOR
- SPCD is now in self.loads, not self.spcs
- TABDMP1 is now in self.tables_sdamping
- SUPORT1 is now in self.suport1, not self.spcs
- renamed spoints.spoints to spoints.points
- deprecated echo_bdf
OP2:
- automatically identifying NX vs MSC Nastran if header table found
- RealCRodForce, RealCTubeForce, RealConrodForce not identified separately
- RealRodForceArray headers bug
- added write_f06
- using _eigenvalue header across all transient results
- CBushStrain/CBush1dStrain f06 writing
- element_names removed from objects (element_name is used instead)
- SPOINTs in tables (e.g. displacement/spc forces) now write properly
- added subtable_name to objects
- improved catching of SORT1 vs. SORT2
- improved catching of REAL vs. IMAG
- better SOL200 support
- read_op2 is ~5x faster
- removed non-vectorized OP2
OP2 Issues:
- not all NX tables supported; some still cause crashes
- PLOTEL support is likely still buggy
GUI:
- added displacement deflection results
- improved legend control
- added sub-grids (e.g. SPCs) & sub-grid control menu
- added label support with 'p'
- csv result loading
- multiple OP2 files
F06:
- reworked subcase/label parsing
- still bad
-----------------------v0.7.2 released 2015/04/25-----------------------
Relase notes:
- This is a bug fix release
- improved documentation
BDF:
- fixed bug with write_card on GRID card
- fixing bug with bdf.get_material_id_to_property_ids_map
- fixing deprecation messages; missed a few stack traces
BDF API:
- these are internal methods
- build_thru(packs, maxDV=None) is now build_thru(packs, max_dv=None)
- build_thru_packs(packs, maxDV=None) is now build_thru_packs(packs, max_dv=None)
- build_thru_float(packs, maxDV=None) is now build_thru_float(packs, max_dv=None)
- build_table_lines(fields, nStart=1, nEnd=0) is now build_table_lines(fields, nstart=1, nend=0)
- added get_points(...) function for CAERO5
- subcases now support:
``if 'LOAD in subcase:``
``data = subcase['LOAD']``
OP2:
- fixed bug with gridPointForces not being saved
- fixed issue with test_op2 suppressing exceptions
- fixed bug with ComplexSolidStrainArray being a stress result
OP2 API:
- op2._found_results and op2._saved_results have been replaced by op2._results
to prevent invalid results from being requested
GUI:
- fixed nastran GUI loading issue (BDFs didn't show up in popup)
-----------------------v0.7.1 released 2015/04/17-----------------------
Relase notes:
- removed deprecation crashes
-----------------------v0.7.0 released 2015/04/17-----------------------
Release notes:
- much improved Python 3 support
- added large field BDF writing
- more OP2/F06 results (e.g. mass properties)
- OP2 reader is faster, more robust, and catches FatalErrors
- improved GUI to supports Cart3d, Panair, and Usm3D and log messages
- making bdf/f06/op2 APIs more consistent
BDF:
- added MAT11, ACCEL1, CAERO3/PAERO3, DMI, TABLED4/TABDMP1,
BCTPARA, BCRPARA, BCTADD, BCTSET, BSURF, BSURFS
- MATS1, MATTx, TABLED4, TABDMP1, CAERO3, PAERO3 supported
- fixed major PBEAM bug
- fixed bugs in PBUSHT, PDAMPT, PELST, TABRND1, PTUBE, EIGC
- imporved SET/SPOINT writing
- improved messages when cross-referencing
- readBDF is now gone, replaced by read_bdf (was previously deprecated)
- large field & double precision format writing now supported
write_bdf method now has a is_double=True/False option
- fixed bug with SETx writing. Nastran limits a SETx card to one THRU
per card, which is inconsistent with other cards that use THRU.
- fixed GRID Position bug when using referenced cylindrical/spherical
coordinate systems
- fixed CONM2 offset bug for coordinate systems
- added CAERO1/2 sub-element access methods for use in GUI
- additional xref options
- improved error handling
OP2:
- rewrite of the OP2 allows for increased robustness and speed
- Most fatal errors caught
- BDF input errors not caught
- added grid point weight table (see beam_modes demo)
- OP2 no longer defines the filename; use read_op2.
readOP2 is now gone, replaced by read_op2 (was previously deprecated)
- renamed OP2 class names to be more descriptive
(e.g. DisplacementObject -> RealDisplacement)
- OP2 vectorized support. It's slower, but it takes up much less
memory (~5x). Note: the F06 writing cannot be vectorized, so if
you do vectorize your code, it may be much faster. The API and data
members are still in development and should be expected to change.
- superelement support
F06:
- removed; use the OP2
GUI:
- added much improved qt GUI
- results sidebar
- controllable legend
- vectorized support for reduced memory usage
- color coded logging
- scripting capability
- removed wx GUI
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:
- Cart3d
- Panair
- STL
- Usm3D
Known issues:
=============
- 1. Unicode
- 2. doesn't support elements/properties with the same ID
- 3. card replication
- 4. Executive Control Deck INCLUDE files
5. DMIG headers not defined at the top of the matrix
- 6. cannot parse doubly included BDFs if the include file
is at the end of file A
Fails
=========
A.bdf
---------
CEND
BEGIN BULK
GRID,2,,1.0, 0.0, 0.0
INCLUDE B.bdf
B.bdf
---------
INCLUDE C.bdf
C.bdf
---------
GRID,1,,0.0, 0.0, 0.0
This will work
==============
A.bdf
---------
CEND
BEGIN BULK
INCLUDE B.bdf
GRID,2,,1.0, 0.0, 0.0
B.bdf
---------
INCLUDE C.bdf
C.bdf
---------
GRID,1,,0.0, 0.0, 0.0
-----------------------v0.6.1 released 2013/06/13-----------------------
BDF Bug Fixes
- Parsing of "1.2345D+04". It worked in Python 2.6, but not 2.7.
- RBE2 card with alpha field.
- active I12 field on PBAR card now disables AssertionError if K1 or K2 are
blank
- fixed bug in LSEQ card where table field was cross-referenced as a load
(field #4)
OP2/F06 Bug Fixes
- improved memory usage in real plates (stress/strain) when writing F06
-----------------------v0.6 released 2013/05/07-----------------------
Overall Notes
- significant improvement in BDF reader
- BDF reader now supports comments. It's stored on the card._comment
variable, but not all cards have one, so use the card.comment() method.
- BDF reader verifies types on the card fields (e.g. float is not allowed
on integer/blank field)
- integrated readBDF_Punch into readBDF method with a punch=True flag
- minor bug fixes to OP2 reader
- minor bug fixes to F06 reader
- more PEP-8
Overall BDF
- significant improvement in BDF reader
- BDF reader now supports comments. It's stored on the card._comment
variable, but not all cards have one, so use the card.comment() method.
- BDF reader verifies types on the card fields (e.g. float is not allowed
on integer/blank field)
- integrated readBDF_Punch into readBDF method with a punch=True flag
Added BDF
- NLPCI, PRAC2D, PRAC3D, PLPLANE
- added _verify methods to many cards
-----------------------v0.5 released 2012/08/13-----------------------
Overall Notes
- lots of new BDF cards
- OP2 now supports element real/imaginary forces
- OP2 is much, much better at reading frequency analysis results
- new OP4 reader in pure Python. Writer isn't fully functional yet.
- improved code to better support Python 3
- implementing PEP-8
BDF API Changes
- moved files around; if you want your imports to work, import from bdf.py
- moved storage location of EIGC, EIGP to cMethod
- grav card are now accessed using Load(lid) and not Grav(lid)
- grav card loadID renamed from sid to lid
- LOAD cards now have a getReducedLoads() which gets the scale factors and
load objects for all sub-loads (supports LOAD, FORCEx, MOMENTx, GRAV)
not implemented across all load types, so having a LOAD card is still a
good thing
- LOAD objects now have a getReducedLoads() method that determines
a list of scaleFactors and FORCE/MOMENT/GRAV/etc. cards
BDF Bug Fixes
- SPOINTs were lost when cross referenced
- EIGC, EIGP now stored in self.cMethods instead of self.methods
- TABRNDG is now in randomTables
- CREEP field g now reads/writes out
- PLOAD4 bug with g1 vs g3/g4
- EIGB keeps method (INV/SINV) now (not clear if there's a default)
- QBDY3 cross referencing fixed
- TSTEPNL fixed possible issue (kStep default) caused by unlisted METHOD
field
- SLOAD nodes were referencing loads instead of nodes
- PFAST kr3 was writing out as kr2
- PSHELL now supports mid2=-1
- fixed PVISC, PGAP cross referencing (these dont require it)
- CELASx and CDAMPx cards now allow empty fields / grounding
- GRAV cards don't crash if the max N value == min N value
Added BDF
- ASET, ASET1, BSET, BSET1, CSET, CSET1, QSET, QSET1
- DMIG, DMIJ, DMIJI, DMIK
- TABRNDG
- TLOAD1, ACCEL1,RFORCE, PLOADX1
- SPLINE4, SPLINE5
- CBUSH1D, PBUSH1D
- PRAC2D, PRAC3D
Removed BDF
- CONM1
Overall OP2
- moved files around; if you want your imports to work, import from op2.py
- test_op2 now crashes if there isn't a .op2 in the filename
- major changes to reader to support non-standard solutions
reader should be much better at getting correct values
- added majority of element forces
- added majority of element heat fluxes
- significantly more support for complex results
- added plotting support for "standard" results (real)
- displacement, velocity, acceleration,
eigenvectors, spcForces, mpcForces,
gridPointForces, appliedLoads, loadVectors, forceVectors
OP2 API Changes
- renamed many of the objects to follow pep-8, shouldn't really affect
much code
- complex tables now have same format as the real tables
all results are stored in real/imaginary format and not
magnitude/phase, regardless of what was defined in the OP2
Overall F06 Reader/Writer
- updated to work with OP2 updates
Added F06 Writer
- many, but not all loads
Overall GUI
- added Cart3d support
- added Panair support
Added GUI
- CQUADR, CTRIAR
GUI Bug Fixes
-----------------------v0.4.1 released Py2.x 2012/06/05-----------------------
Overall
- Python 3.x works!
BDF Bug Fixes
- coordinte system transpose bug (messed up most coordinate systems)
affected CORD1R, CORD2R, CORD1C, CORD2C, CORD1S, CORD2S
- Fluid Structure Interaction coordinate system of -1 is now allowed
- nastran double precision format (e.g. 1.23456D+03) now supported
- better rounding of floats when writing BDF
- SET3 printing
Added BDF
- coordinate systems in CONM2 are fully supported
- GRAV card prints out nicer
Added OP2
- GEOM1S, GEOM2S, GEOM3S, GEOM4S tables (for Radioss)
-----------------------v0.4 released 2012/04/23-----------------------
Overall Notes
- new ASCII/binary OP4 reader for dense matrices
- lots of BDF bug fixes
- lots of new BDF cards
- added support for OpenMDAO user-defined parameterization syntax %varname
- new results in OP2
- new F06 Reader/Writer
- F06 Writer integrates with OP2 Reader
Overall OP4
- ASCII/binary reader
- sparse matrices not supported
Overall BDF
- 180 total cards
- added tab support (no mixed tabs, spaces, commas)
- reworked format of bdf_crossReferencing.txt to be more like
bdf_readWrite.txt
- added test code that compares cards values from one run to the next
- added support for THRU-BY on certain cards (e.g. QBDY3)
- added new custom Exceptions to make errors messages clearer
- added support for user defined optimization values (using %varName)
values set with "bdf.setDynamicSyntax(dictOfVars)"
BDF API Changes
- removeCards(['GRID','CQUAD4']) is now called disableCards(cards)
- removed obsolete isPrintable and Is methods from BDF class
- added Mid1(), Mid2(), Mid3(), Mid4() methods for PSHELL.
Mid() now returns Mid1() or Mid2() depending on the form of the PSHELL
Mass() calculated based on mid1 (or mid2 if mid1=None) per QRG
- Tri-type elements are now TriShells instead of CTRIA3s (same for QUADs,
QuadShells)
- component constraints (e.g. 123456) on GRID, SPC, SPC1 and MPC are now
strings
for easy looping instead of a single integer (default='')
- added Mids() for PCOMP/PCOMPG
- added getNodeIDToElementIDsMap(), getPropertyIDToElementIDsMap(),
getMaterialIDToPropertyIDsMap()
limited 0D,1D element support (e.g. CBAR, CBEAM, CELAS1, etc.) for these
methods
BDF Bug Fixes
- printCard can now handle cards with an embedded line of Nones
with data below. This is a rare bug but affects the NLPARM
- fixed minor bug with small values not printing that were slightly
above the tolerance level
- fixed bug in CONM2 with inertia terms
- PCOMP can now have 1 ply per line or 2 plies per line
- PCOMP doesnt lose last plies anymore
- fixed bugs in CQUADR, CQUADX, CVISC, CONROD, CGAP, CTRIAX, PTUBE
- fixed bugs in NLPARM, PLOAD2, PLOAD4, QBDY1, QBDY3, FREQ2, CHBDYE
- fixed bugs in PMASS, CSHEAR, CBAR, CQUAD, RBE1, RBE2, RBE3
- fixed bugs in PBEAML, MAT1, MAT3, CTRIAX6, CREEP
- CREEP not lost when writing BDF out
- disabled PBEAML
Added BDF
- enabled CQUAD, RBE3
- EIGB, EIGC, EIGP, EIGR, EIGRL
- CBUSH, PBUSH, PDAMPT, CFAST, PFAST, CONM1, CVISC, PVISC
- TSTEP, TSTEPNL
- DLOAD, SLOAD, RLOAD1, RLOAD2
- CAERO2, PAERO2, AEFACT
- CBEND, PBEND, CBEAM3
- MATS1, MATHP
- DVPREL2, DVMREL1, DOPTPRM, DLINK
- DRESP2
- SPOINT
Overall OP2
- more results
- integrates with F06 Writer
- more embedded BDF reading
- added setTransientTimes(times) to explictly extract results at desired
times
- OUG
- OES
- OEE
- OQG
OP2 API Changes
- more results in CBEAM stress/strain
- complex displacement reworked
- added writeF06 method to most objects (no strain energy,
shear stress/strain, celas stress/strain)
Added OP2
- LAMA (requires an ESE = ALL to create table)
- eigenvalues (real)
- OUG (DISPLACMENTS=ALL)
- improved complex displacements
- ***complex velocity
- ***complex acceleration
- OQG (SPCFORCES=ALL, MPCFORCES=ALL)
- SPC Forces (static/transient)
- MPC Forces (static/transient)
- OES (STRESS=ALL, STRAIN=ALL)
- stress/strain
- CTRIAX6 (static/transient)
- hyperelastic stress/strain (transient)
- CQUAD4
- nonlinear strain (transient)
- CTRIA3, CQUAD4
- CROD, CONROD, CTUBE
- ***CBEAM
- OGF (GPFORCES=ALL)
- grid point forces (static/transient)
- load vector (static/transient)
Overall F06 Reader/Writer
- rewrote f06 reader
- format1, real, SORT1 supported
- limited transient support
- F06 Reader not nearly as complete as the OP2 Reader
- F06 field parsing needs more testing, so beware!
- juat use the OP2 reader
- F06 Writer integrates with OP2 reader
- transient variable names may not be correct (e.g. 'lftsfq' mean
'LOAD STEP', but it should write 'LOAD STEP')
- The op2 or f06 readers feed the f06 writer or another solver/user's own
results.
- see f06_readWrite.txt for more info
Overall GUI
- CSHEAR, CTRIAX6 support
- "python setup.py install" should work now, but it's still not recommended
-----------------------v0.3 released 2012/02/08-----------------------
Overall Notes
- coordinate systems!!!
- all user BDF card API methods will have the first letter capitalized
(not fully implemented)
- added OP2 demo program that calculates solidStress & displacement margins
- addd preliminary GUI (pyNastranGUI) that can view results
BDF API Changes
- added simpler method to remove cards from the BDF
- standardizing methods for element/property/material cards
- Eid, Pid, Mid, Mass, NodeIDs, Centroid
- Thickness, Area, Volume, Length
- J, I11, I12, I22
- FREQx methods
- CAERO1 methods
- SETx methods
BDF Bug Fixes
- enabled PDAMP, CREEP
- bug fix in NLPARM, MAT9,GRDSET
- BEGIN BULK may now have multiple spaces in it
- Continuation markers can have more than 1 character in them for CSV cards
- Unincluded cards at the end of an INCLUDE file won't crash the BDF reader
- CORD2Rs can have axes that arent ijk!
- fixed bug in fieldWriter that caused certain values (e.g. -0.9999 and
-0.0999) to be written out as (-.) They were assumed to not round up to
-1.0 and -0.1 respectively so the leading -0. could be replaced by (-.)
to save field width.
Overall BDF
- reorganized code files (main BDF class is in the same place)
- improved accuracy of PBEAM methods (Area, Nsm, etc.) by integrating
instead of using the first value
- added cross referencing of SPLINE1
- test_bdf only prints a reject message once per card type now
- more Volume, Centroid methods
Added BDF
- PBEAML
- TABLED1,TABLED2,TABLED3,
TABLEM1,TABLEM2,TABLEM3,TABLEM4,
TABLES1,TABLEST,TABRND1
- PAERO1
- FREQ,FREQ1,FREQ2
- CGAP, PGAP
- PDAMP5
- PSHEAR
- AEPARAM,AELINK,AESTAT
- SET1,SET3,SESET
- CORD1R,CORD1C,CORD2C,CORD1S,CORD2S
- CONM2 (cid!=0)
- SPLINE2
- TRIM
Added OP2
- GEOM2
- CGAP
- OES
- CSHEAR
- CTRIAR, CTRIA6
- OUG
- velocity
- accleration
OP2 API Changes
- OUG
- displacementObject now has self.translations (no more
self.displacements) & self.rotations
This is standard across displacement/velocity/acceleration
Overall OP2
- reorganized code files (main OP2 class is in the same place)
OP2 Bug Fixes
- deviceCode is now passed properly to result objects
- nodeIDs now are correct for transient results
-----------------------v0.2.1 released 2011/1/2-----------------------
BDF Bug Fixes
- fixed bug in fieldWriter that caused certain values (e.g. -0.9999 and
-0.0999) to be written out as (-.) They were assumed to not round up to
-1.0 and -0.1 respectively so the leading -0. could be replaced by (-.)
to save field width.
-----------------------v0.2 released 2011/12/20-----------------------
BDF API Changes
- test_bdf can be called from the command line
- renamed read method to readBDF (it got confusing when the op2 object can
read the bdf b/c it needs to initialize the bdf cards for the geomX tables)
- renamed write to writeBDF
- renamed writeAsPatran to writeBDFAsPatran
- thermal materials (MAT4, MAT5) pulled from self.materials and put into
self.thermalMaterials new ThermalMaterial & StructuralMaterial methods
Material method checks for either still
- rigid elements (RBAR, RBE2, etc.) separated out of elements to avoid
overwriting cards new RigidElement method
Element method doesnt check for rigid elements anymore
Overall BDF
- a few more cards
- added extra argument to all cards to set data directly from the
OP2 (no data type setting as the OP2 is binary).
- max lines in executive & case control decks is now 600
- methods for Elements (Area, Nsm, Thicknesss)
Overall OP2
- test_op2 can be called from the command line
- reading support ONLY
- static solutions (e.g. SOL 101) results will be very stable
- thermal solutions have significantly less support than
structural solutions.
- SORT2 is not supported...for example:
use DISPLACEMENT(PLOT,SORT1)=ALL
not DISPLACEMENT(PLOT,SORT2)=ALL
- Many examples outside of SOL 101 have been tested
and dont crash. This includes large SOL 200 models. Verify your results
first.
- The user has the option to read the Geometry tables (GEOM1 (nodes/coords),
GEOM2 (elements), GEOM3 (loads), GEOM4 (constraints),
EPT/EPTS (properties), MPT/MPTS (materials) and can write the data to a
BDF. This is still a preliminary option. Use the makeGeom argument.
You still need to write the BDF.
BDF Bug Fixes
- DCONSTR, DDVAL, DAREA weren't processed properly
- fixed RBE1 bug
- fixed RBE3 bug & disabled RBE3
- AERO/AEROS cards split from self.aeros object to avoid overwriting entries
- FLFACT reading when the card is short
- PCOMP Thickness method doesnt crash when you want the total thickness
Better defaults on PCOMP
- fixed some fields on disabled CORDxx cards
- CELASx cards had issues with proper order of entries
- PELAS cards werent processed properly
- files on remote drives dont cause crashes anymore
- cend now also signifies the end of the executive control deck
- begin BULK is valid now
- fixed issue with the case control deck parsing on some uncommon cards
Added BDF
- PBARL, PDAMP
- CDAMP1, CDAMP2, CDAMP3, CDAMP4, CDAMP5
- AESTAT
- DRESP1, DVPREL1, DRESP1
OP2 Tables
- GEOM1/GEOM2/GEOM3/EPT/MPT (basically stores the bdf)
Cards that are not stable are not supported. The
writeAsPatran method may be used, but there may still be a
few bugs in some of the cards. These tables are very stable.
- OUG table (displacement/temperature,eigenvalues
velocity,acceleration) is very robust
- just verify you're getting the result you want, there are
a lot of results in this table
- OQG table (spc/mpc forces) None
- OGP table (grid point forces) works for SOL 101, untested on others
(shouldnt crash)
- OSTR table (strain) - see OES table
- OES table (stress) - elements that arent supported are skipped
- Be careful about how you request the data from the object as
the variables are dynamic based on the Case Control Deck parameters
selected. For example:
STRESS(PLOT,SORT1,FIBER,VONMISES)=ALL
- composite stress oxx is in the fiber direction (not the
x axis)
- isotropic stress elements have von mises stress (ovm)
STRESS(PLOT,SORT1,FIBER,MAXSHEAR)=ALL
- composite stress oxx is in the fiber direction (not the
x axis)
- isotropic stress elements have max shear stress (maxShear)
- All this information is contained within boolean variables such as
isVonMises(), isMaxShear() (stress/strain),isFiber(), isCurvature()
(stress/strain) which are located on the result objects.
- Elements can have different outputs depending on the
solution and user requested output options. For example, rods can
contain the margin of safety in tension and compression, but they
don't always have that data. You can check this by using the
boolean isMargins.
- OEE table (element energy) - stable, but results are questionable
and difficult to verify.
-----------------------v0.1.1 released 2011/12/06 -----------------------
BDF Bug Fixes
- bug fix to elements.py to fix import error
-----------------------v0.1 released 2011/11/09 -----------------------
Overall BDF
- an executive control deck, case control deck, and bulk data deck
are REQUIRED.
- A ENDDATA card is strongly recommened!
- Mass/Stiffness Matricies not supported except in a few, rare cases.
- superelements are NOT supported
- loads need some TLC in v0.2, but there is minor support for them
- see the HTML documenation for a list of object data and methods.
The Nastran QRG (Quick Reference Guide) is another good reference.
Executive Control Deck
- Include files NOT supported
- Limited to LESS than 200 lines
- Extract soltion and method (if sol=600)
- Can update solution/method
Case Control Deck
- Include files supported (dont cross the BEGIN BULK entry)
- Limited to LESS than 200 lines
- In general, if a card is supported, EVERY field can be read,
accessed, and written.
- Most cards forms supported
1. STRESS(PLOT,PUNCH) = ALL # name(options) = value (STRESS-type)
2. STRESS = ALL # name = value (STRESS-type)
3. DISP(PLOT,PUNCH) = ALL # name(options) = value (STRESS-type)
4. PARAM,FIXEDB,-1 # name, options, value (PARAM-type)
5. SET 1 = 1,2,3,4, etc. # name id = options (SET-type)
- Some forms not supported
1. AUTOSPC (PRINT, PUNCH, SID=100, EPS=1.E-6, MPC)=YES (AUTOSPC=YES is supported)
2. MODALSE(ESORT=ASCEND,THRESH=.0001)= 100
3. MODESELECT (FLUID LMODES = 5)
4. OUTPUT(XYOUT)
5. TFL = 1, 25, 77
6. SURFACE 10 SET 9 NORMAL X3
7. VOLUME 21 SET 2
- Methods to update global/local subcase values
BDF Data Deck (no cross referencing required)
- include files supported
- 8/16 character fields, csv format for cards is supported.
DONT USE TABS!!!
- Cards are written in 8-character fields and make use of Nastran-scientific
notation to maximize precision.
- write and writeAsPatran methods to write the bdf file after modifying it.
The write method writes each 'section' (e.g. nodes/elements/properties)
as isolated sections. writeAsPatran intersperses properties and elements.
- Duplicate node/element/property/etc. IDs are NOT allowed!
Bulk Data Deck Cross-Referencing
- Entire deck is read. If a card isnt supported, it is rejected. Unparsed
cards are clearly marked in the $REJECTS or $REJECT_LINES sections.
- Cross-referencing is a feature that links data from one card to another.
An example is a CQUAD4 has four nodes. When cross-referenced, the element
object's nodes become node objects.
- Coordinate systems are a work in progress and difficult to test without
good test cases. Feel free to add some. Therefore, the global coordinate
system is safest and is the only one supported at the moment (CORD2R).
- In order to determine element information that requires information from
other cards, cross-referencing is REQUIRED. The read method has the
option to disable this.
- When using constraints, all constraints (SPC,SPC1,SPCD,MPC) must be
part of an SPCADD or MPCADD, unless there are no SPCADDs or MPCADDs.
In other words, DONT mix and match!
- Structural elements have a Mass/Area/Length/Thickness depending on type.
- Volume ONLY supported for TET4 and TET10
- Lots of methods for PCOMPs
- CBEAM elements do are not complete for their area/mass/etc calcuations.
- Moments of intertias of elements are not calculated.
- Stiffness Matricies are incomplete