FeResPost Web Site                     FeResPost Online User Manual

X.F.5.1 Data for load cases

Those data are very similar to those defined in “A” version of the post-processing. One added however, new methods to the “LoadCase” module to allow the post-processing of dynamic Results (SOL108 and SOL111 of Nastran).

In iterator “LoadCases::each”, a new proc object called “makeDynamLoop” loops on all the dynamic sub-cases (frequency outputs) for a given load case name. The three argument of this loop are

The first operation performed by “makeDynamLoop” is to build a list of sub-cases in sorted in order of increasing frequencies:

            lcNames=[lcName]  
            tmpList={}  
            xdbInfos=db.getXdbLcInfos(fullXdbName)  
            xdbInfos.each do |info|  
                if (info[0]==lcName) then  
                    tmpList[info[4]]=info[1]  
                end  
            end  
            scList=tmpList.sort

In the previous instructions, one first loads the information about load cases and sub-cases stored in the xdb Result file. Then, the sub-cases corresponding to the selected load case name are selected. Finally, they are sorted and stored in the Array “scList”.

Then, a loop is done on the list of sub-cases stored in “scList”. A new Array “scNames” containing a list of sub-cases is filled. Each time its size reaches the values specified by the proc argument, one reads the Results, yields them, and finally erases them from the DataBase. This is done as follows:

            scNames=[]  
            scList.each do |intId,scName|  
                scNames << scName  
                if (scNames.size==maxScNbr) then  
                    db.readXdb(fullXdbName,lcNames,scNames)  
                    scNames.each do |name|  
                        yield([db,lcName,name])  
                        db.removeResults("SubCaseId",name)  
                        GC.start  
                    end  
                    scNames=[]  
                end  
            end

At the end, the remaining sub-cases are calculated the same way:

            db.readXdb(fullXdbName,lcNames,scNames)  
            scNames.each do |name|  
                yield([db,lcName,name])  
                db.removeResults("SubCaseId",name)  
                GC.start  
            end  
            GC.start  
        end

An example of use of the “makeDynamLoop” proc follows:

        when "SINUS_Z" then  
            db=getDb("LAUNCH")  
            fullXdbName=getXdbDirName()+"/sol111_ri_xyz.xdb"  
            makeDynamLoop.call(fullXdbName,"SINUS_Z",30)

In this case, the Results of “SINUS_Z” load case are required, and the maximum number of sub-cases loaded simultaneously in the DataBase is 30. Note that this number should be chosen with care: if it is too small, many readings of the Nastran xdb file will be necessary which increases the disk access time. On the other hand, if the number is too big, a larger amount of memory might be necessary to store the Results in the DataBase. This is important if you have limited resources. It is the responsibility of “LoadCases” module manager to select an appropriate value of this integer parameter.

Note that we voluntarily limit the example of dynamic Results post-processing to a simple extraction from an xdb file. Actually, the possibilities of FeResPost are larger that. For example, it should be possible to read simultaneously the Results for different load cases as “SINUS_X”, “SINUS_Y” and “SINUS_Z” and to yield linear combinations of these elementary Results for the different frequency outputs.