Skip to content

Solution Process

Cofe Class

The Cofe class is the primary user interface class for CoFE. The class constructor creates and solves the model; the user inputs either: (1) the path to a Nastran-format input file, or (2) a BdfEntries object. Class properties are Model objects and Solution objects.

Model Class

Stores finite element model data and case control data. Contains methods for assembling and the system of equations and methods for results recovery. An array of Model objects is assembled if superelements are present.

Solution Class

An abstract superclass -- subclasses are created for specific solution types (e.g., statics, modes). Provides solution methods. Contains results data.

Input File Processing

The CoFE input file process creates CoFE Model objects from Nastran-formatted input files. The process uses a sequence of limited-scope classes.

BdfLines Class

Reads Nastran-formatted input file lines. Handles INCLUDE statements. Removes comments. Partitions executive, case control, and bulk data sections. Partitions the bulk data section into part superelements.

BdfFields Class

Constructed from a BdfLines object. Converts Nastran input lines to distinct entries and fields stored as char variables in cell/struct arrays. This is a general class with respect to the Case Control and Bulk Data sections; data are processed without regard to the specific case control commands and bulk data entries, so, no updates are required to handle new types of case control data or bulk data. All file management and executive control commands are ignored except for the for the first SOL entry, which is stored.

BdfEntries Class

Created from BdfFields object and interfaces to Model objects. Can be exported as a Nastran-formatted file using the BdfEntries.echo() method. Specific CaseEntry and BulkEntry subclasses must be available for all input data types. The BdfEntries.entries2model() method creates a Model object from a BdfEntries object.

Assembly Process

The initial Model properties mirror the data from the source BdfEntries object. The assembly process expands this data through the following methods.

Model.preprocess() Method

Performs data sorting and checking. Full geometric processing of coordinate systems and nodes is carried out. Degree of freedom (DOF) sets are processed and checked. Certain data that require repeated access are processed and stored to speed up follow-on assembly.

  • Parameter.preprocess() checks parameters and assigns default values if unspecified.

  • CoordinateSystem.preprocess() sorts the coordinate systems data by ID number and checks ID uniqueness. Checks and assembles the full interdependent system of coordinate systems.

  • Material.preprocess() sorts the materials data by ID number and checks ID uniqueness.

  • Property.preprocess() sorts the properties data by ID number and checks ID uniqueness. Saves material data to property objects to save assembly time.

  • Element.preprocess) sorts the element data by ID number and checks ID uniqueness.

  • Point.preprocess() sorts the points (nodes and scalar points) data by ID number and checks ID uniqueness. Calculates and saves location of all nodes expressed in the basic coordinate system. Calculates and saves transformation matrices from the basic coordinate system to node deformation coordinate systems. Assigns global degrees of freedom for all nodes and scalar points.

  • Point.getPerminantSinglePointConstraints() returns a logical array for the set permanently constrained DOF.

  • Spcs.preprocess() returns a logical array for the sb [nGdof,1 logical] set -- the set of constrained DOF specified for boundary conditions. The SID selected by SPC=SID in the first case control subcase is applied to all subcases. Different analyses must be run for different constraints.

  • Mpcs.preprocess() returns a logical arrays for independent and dependent sets. Calculates constraint coefficient matrices (analogous to element matrices) for rigid elements (it's more efficient to do this while defining sets than to postpone). Checks that MPCs don't over constrain the model.

  • DofSet.preprocess() provides a logical arrays for several DOF sets. Checks exclusivity of exclusive sets.

  • SuperElement.preprocess() determines DOF indices of superelement connections.

  • DofSet.partition() set logic and assignment related to superelements and Guyan/Dynamic model reduction.

Vector lists of ID numbers (e.g., a vector containing all element ID numbers) are concatenated and stored in the Model object so that they can be used later. This duplicates data, but is cost-effective because repeated concatenation is expensive.

Model.assemble() Method

Calculates elastic element matrices. Assembles global matrices. Partitions global matrices. Optionally calculates reduced analysis-set matrices.

  • Element.assemble() calculates element data (mass, stiffness, global-local transformations, recovery data) and assembles global mass and stiffness matrices.

  • Mpcs.assemble() assembles the global multipoint constraint matrix from matrices calculated by Mpcs.preprocess().

  • Load.assemble() assembles global load vectors and enforced-displacement vectors.

  • Model.mpcPartition() partitions mass, stiffness, and load matrices for the independent set.

  • Model.reducedModel.constructFromModel() calculates analysis set matrices and loads. Performs Guyan/dynamic reduction if requested.

  • Superelement mass and stiffness matrices are superimposed on the residual structure.