The first example illustrates different versions of the call to “readBdf” method:
require "FeResPost" include FeResPost # Creates and initializes the DataBase : db=NastranDb.new() db.Name="tmpDB1" db.readBdf("../../MODEL/MAINS/unit_xyz.bdf")
The first call to “readBdf” is the default instruction used to read the Bulk file in most examples.
A second bdf read operation is performed as follows:
db=NastranDb.new() db.Name="tmpDB2" begin db.readBdf("unit_xyz_V1.bdf",[],"bdf",{},true) rescue Exception => x then printf ("\n\nMaybe you should modify the two first include statements in main file!\n") printf ("**********************************************************************\n\n") raise x end
The revised version reads main file “unit_xyz_V1.bdf” that illustrates several possible interpretation of the “include” statements in Nastran Bulk Data Files. The user must uncomment the corresponding statement, and modify the absolute paths in the include statements of “unit_xyz_V1.bdf” file. (The “begin” and “rescue” statements have been added to remind the user of this necessary modification. An error message is issued if the reading fails.)
Include statement in the data file look as follows:
include ’/home/ferespost/Documents/FERESPOST/TESTSAT/ MODEL/MESH/coordSys.bdf’ include /home/ferespost/Documents/FERESPOST/ , TESTSAT/MODEL/MATS/mats.bdf include ’../../MODEL/PROPS/props.bdf’ $ include ../../MODEL/MESH/elemNodes_pan_MX.bdf include ../../MODEL/MESH/elemNodes_pan_MY.bdf include ../../MODEL/MESH/elemNodes_pan_MZ.bdf include ../../ MODEL/MES H/elemNod es_pan_PX.bdf include ../../MODEL/MESH/ elemNodes_pan_PY.bdf
The example is given in file “RUBY/EX01/readBdf.rb”.
Another version of the example is given in file “RUBY/EX01/readBdf_V2.rb”. It illustrates the reading of Bulk Data Files containing include statements in which symbols are used. In that example, the call to “readBdf” looks as follows:
symbols=Hash.new symbols["INCDIR"]="../../MODEL" db=NastranDb.new() db.Name="tmpDB2" db.readBdf("unit_xyz_V2.bdf",[],"bdf",symbols,true)
The variable “symbols” is a Hash containing the list of symbols that must be substituted in the include statements. (Only one symbol is defined in this case.) The include statements of the BDF file look as follows:
include INCDIR:/MESH/elemNodes_pan_MX.bdf include INCDIR:/MESH/elemNodes_pan_MY.bdf include INCDIR:/MESH/elemNodes_pan_MZ.bdf include ../../ MODEL/MES H/elemNod es_pan_PX.bdf include INCDIR:/MESH/ elemNodes_pan_PY.bdf
The example “readBdf_V3” proposes a slightly more complicated case of file inclusions in a main BDF.
In Example “readBdf_V7” one proposes to illustrate several functions allowing the manipulation of the database FEM entities. A list of Nastran cards corresponding to the FEM definition is build as follows:
cards=[] db.each_coordSysId do |id| cards << db.fillCard("CoordSys",id) end db.each_nodeId do |id| cards << db.fillCard("Node",id) end db.each_elemId do |id| cards << db.fillCard("Element",id) end db.each_rbeId do |id| cards << db.fillCard("RBE",id) end db.each_materialId do |id| cards << db.fillCard("Material",id) end db.each_propertyId do |id| cards << db.fillCard("Property",id) end
Then, one builds a new database using these cards:
db3=NastranDb.new() db3.Name="tmpDB3" db3.insertCards(cards);
Finally, one checks the content of the new database:
db3.writeBdfLines("out.bdf","w","left","short","All"); vectStr=NastranDb.writeNastranCardsToVectStr("left","short",cards); vectStr.each do |line| puts line end
Example “readBdf_V8” illustrates the reading of a model by several calls to “readBdf” methods:
db.readBdf("D:/SHARED/FERESPOST/TESTSAT/MODEL/MESH/coordSys.bdf",nil,nil,nil,true,true) db.readBdf("D:/SHARED/FERESPOST/TESTSAT/MODEL/MATS/mats.bdf",nil,nil,nil,true,true) db.readBdf("../../MODEL/PROPS/props.bdf",nil,nil,nil,true,true) ... db.readBdf("../../MODEL/FIXAS/launch.bdf",nil,nil,nil,true,true) db.readBdf("../../MODEL/LOADS/unit_accel.bdf",nil,nil,nil,true,true)
This approach can be used to modify finite element model stored in a database during script execution.