Degrees of freedom (DOFs) are numbered 1-n
, where
n
is the total number of DOFs in the system. Mechanical
APDL maintains three orderings of the DOF set:
The user ordering is based on the user's node numbers. As an example, this ordering corresponds to what would be printed in the POST1 postprocessor by the PRNSOL,U command.
The internal ordering is obtained by compressing the unused node numbers from the user's set and renumbering them based on the reordered element set. This reordering is performed to obtain better cache performance as these items are referenced in the solution phase. The map between the user ordering and this internal ordering is referred to as the "nodal equivalence table" in the descriptions of binary data files (see Format of Binary Data Files in the Programmer's Reference).
The solver ordering is obtained by reordering the equations (DOFs) in order to minimize the solver time and disk requirements. Also, the effects of any constraints (D command), couplings (CP command), and constraint equations (CE command or MPC contact) are accounted for, thereby reducing the DOF set. This ordering represents the "independent" DOFs of the system.
The matrices and load vector imported from the .FULL file (*SMAT,,,FULL) are in terms of the solver ordering; mapping from the internal ordering to this ordering is required when working with these matrices.
The resulting solution from *LSBAC will also be in this solver ordering.
The mode shapes from the .mode file and the DOF results from the .rst file are in the internal ordering, and they need to be converted before use with any of the matrices from the .full file, as shown below:
*SMAT,Nod2Solv,D,IMPORT,FULL,file.full,NOD2SOLV ! import the mapping vector *DMAT,PhiI,D,IMPORT,MODE,file.mode ! import the mode shapes *MULT,Nod2Solv,,PhiI,,PhiB ! convert to the solver set
To convert from solver to internal ordering (for example, after an *LSBAC solution), use the transpose of the NOD2SOLV mapping vector:
*MULT,Nod2Solv,TRAN,Xsolv,,Xint
To convert from external (user) ordering to the internal ordering, use the FORWARD nodal mapping vector. The following example retrieves the UZ displacement of user node 45232 from the internal solution vector Xint:
*VEC,MapForward,I,IMPORT,FULL,file.full,FORWARD j = MapForward(45232) UzVal = Xint((j-1)*NUMDOF + 3) ! 3 is the UZ DOF number
To convert from internal ordering to external (user), use the BACK nodal mapping vector. The following example returns the force applied on user-defined node j having internal node number 672:
*VEC,MapBack,I,IMPORT,FULL,file.full,BACK myforce = Fint((672-1)*NUMDOF + 3) j = MapBack(672)
To convert this to solver ordering for solving (*LSBAC):
*MULT,Nod2Solv,,Fint,,Fsolv