FeResPost Web Site                     FeResPost Online User Manual

IV.2.8.2 Printing Coordinate System Table Matrix

The example is provided in “RUBY/EX22/recoverCSTM.rb”. The interesting part of the example is the use of the iterator:

db.iter_xdbRaw(xdbFileName,["CSTM",0],"iiffffffffffffifffffffff").each do |tab|
    STDOUT.printf("Coordinate system ID: %d\n",tab[0])
    STDOUT.printf("Coordinate system type: %d\n",tab[1])
    STDOUT.printf("Coordinate system origin (with respect to 0): %14g %14g %14g\n",
            tab[2],tab[3],tab[4])
    STDOUT.printf("Coordinate system V1 (with respect to 0)    : %14g %14g %14g\n",
            tab[5],tab[6],tab[7])
    STDOUT.printf("Coordinate system V2 (with respect to 0)    : %14g %14g %14g\n",
            tab[8],tab[9],tab[10])
    STDOUT.printf("Coordinate system V3 (with respect to 0)    : %14g %14g %14g\n",
            tab[11],tab[12],tab[13])
end

Note that the CSTM table correspond to a FEM modeling table and not to a result table. This shows that the raw access to XDB file can be used to access modeling information.

Generally, maximum one table per type is defined in XDB file, if the table corresponds to modeling information. However, this is sometimes different. For example FEM modeling table may correspond to an output of optimization run.

One also presents an example in which the ‘each_xdbBinRaw” iterator is used with “binDataToValues” singleton method to interpret the content of XDB file. The example is provided in “RUBY/EX22/recoverBINRAW.rb” script and its main part looks as follows:

    wdSize=db.getAttachmentWordsSize(xdbFileName)
    bSwap=db.getAttachmentSwapEndianness(xdbFileName)
    policy=0
    if (bSwap) then
        policy=1
    end

    bAutoSwap=true
    cards=[]
    db.each_xdbBinRaw(xdbFileName,["CQD4",0],bAutoSwap) do |str|
        arri=NastranDb.binDataToValues(str,wdSize,"iiiiiiii iiiii".delete(’ ’),policy)
        arrf=NastranDb.binDataToValues(str,wdSize,"iiiiiiff fiiii".delete(’ ’),policy)
    puts arri.size()

        card=["CQUAD4"]+arri
        #~ puts arri,arrf
        cards << card
    end

    NastranDb.writeNastranCards("output.bdf","w","right","wide",cards)

Note that we output the read values into a kind of BDF file, but you will notice that the cards do not really match the corresponding CQUAD4 card definition. you may notice that we also use the getAttachmentWordsSize and getAttachmentSwapEndianness methods to determine the endianness policy for binary data translation.