1.5. Description of the Modal Results File

This section explains the content of the modal results file (jobname.mode).

1.5.1. Standard Mechanical APDL File Header

See The Standard Header for Mechanical APDL Binary Files for a description of this set. File number (Item 1) is 9.

1.5.2. MODE File Format

*comdeck,fdmode

c *** Copyright ANSYS.  All Rights Reserved.
c *** ansys, inc.

c     **********  description of modal result file  **********

      character*8  MODENM
      parameter   (MODENM='mode    ')

      character*8  MODENM_LEFT
      parameter   (MODENM_LEFT='lmode   ')

c     *** NOTE: if this variable is changed in the future it should be
c     ***       updated in spdefines.h also for symbolic assembly (jrb)
      integer         MODEHDLEN
      parameter      (MODEHDLEN=100)

      LONGINT         modefpL
      integer         modebk, modeut

      LONGINT         modeLeftfpL
      integer         modeLeftbk, modeLeftut

      common /fdmode/ modefpL, modebk, modeut,
     x                modeLeftfpL, modeLeftbk, modeLeftut

c   ********** common variable descriptions ***********
co  modefpL      file position on file mode
co  modebk       block number for file mode
co  modeut       file unit for file mode
co  modeLeftfpL  file position on file .lmode
co  modeLeftbk   block number for file .lmode
co  modeLeftut   file unit for file .lmode


c   See fddesc for documentation of how binary files are stored.
c
c     **********  file format  **********

c        recid tells the identifier for this record.  Not all records will have
c             identifiers -- they are only indicated for those records whose
c             record pointers are stored in the second file header.

c        type tells what kind of information is stored in this record:
c             i - integer
c             dp - double precision
c             cmp - complex

c        nrec tells how many records of this description are found here

c        lrec tells how long the records are (how many items are stored)

c recid    type    nrec    lrec     contents

c  ---      i       1      100      standard ANSYS file header (see binhed8 for
c                                   details of header contents)


c  ---      i       1      100      .MODE FILE HEADER
c
c                                    fun09,    nmrow,        0,    nmode,   numdof,  <  5
c                                     maxn,    wfmax,   lenbac,  nEnfGrp,    neqns,  < 10
c                                   lumpms,   extopt,   SvCode,      kan,   ldstep,  < 15
c                                   numitr,   expbeg,   expend,   nspect,   nSPdat,  < 20
c                                        0,   ptrFRQ, kPerturb,   ptrSHP,   ptrLOD,  < 25
c                                   ptrNAR,  ptrNARh,   ptrDMP,nrkeyPert,   nrigid,  < 30
c                                   ptrLPM,   ptrSP1,  ptrSHPh,  ptrLODh,        0,  < 35
c                                        0,  ptrDMPh,  ptrLPMh,  ptrSP1h, ptrIRHSl,  < 40
c                                 ptrIRHSh,        0,   ptrRES,  ptrRESh,Glblenbac,  < 45
c                                KeyStress,   ptrELD,  ptrELDh,   ptrGBk,  ptrGBkh,  < 50
c                                  modlstp,    nresi,   ptrEf1,  ptrEf1h,    sstif,  < 55
c                                  ptrFSTA,   ptrEf2,  ptrEf2h,   ptrEf3,  ptrEf3h,  < 60
c                                qrDampKey,cycMSUPkey,cycnmode,    ptrHI,  ptrKUNS,  < 65
c                                 ptrKUNSh, mrestart, LPrestls, LPrestss,   cpxmod,  < 70
c                                  keyLeft,    cpxlv,   ptrSCL, sparseLV, udfrqkey,  < 75
c                                ptrUDFRQl,ptrUDFRQh,  ptrKCPX, ptrKCPXh,ptrGDAMPl,  < 80
c                                ptrGDAMPh,  ptrECRl,  ptrECRh,  moddirF,ptrRESMODl, < 85
c                               ptrRESMODh,ptrPSIREDl,ptrPSIREDh, modcmb,  keyNscop, < 90
c                                 numNscop, ptrNSCOPl, ptrNSCOPh,      0,         0, < 95
c                                        0,         0,         0,      0,         0, < 100


c                                  each item in header is described below:

c                                   fun09  - unit number (mode file is 9)
c                                   nmrow  - number of rows/columns in matrices
c                                            (maxn*numdof)
c                                   nmode  - number of modes extracted
c                                   numdof - number of dof per node
c                                   maxn   - maximum node number (if extopt=3
c                                            or 4, the actual number of nodes is
c                                            referenced.)
c                                   wfmax  - maximum wavefront (does not apply
c                                            if extopt=3 or 4)
c                                   lenbac - number of nodes
c                                  nEnfGrp - numbre of enforced group
c                                   neqns  - number of equations on the .LN22
c                                            file
c                                   lumpms - lumped mass key
c                                            = 0 - default matrix type
c                                            = 1 - lumped
c                                            (does not apply if extopt=3 or 4)
c                                   extopt - mode extraction method
c                                            = 3 - unsymmetric Lanczos
c                                            = 4 - damped Lanczos
c                                            = 6 - block Lanczos
c                                            = 8 - SuperNode
c                                            = 9 - PCG Lanczos
c                                   SvCode - Solver assembly code path
c                                            = 1 Symbolic assembly
c                                   kan    - analysis type
c                                            = 1 - buckling
c                                            = 2 - modal
c                                   ldstep - load step number - also number of load vectors
c                                   numitr - total number of cumulative
c                                            iterations done during analysis
c                                            (does not apply if extopt=3 or 4)
c                                   expbeg - beginning of the frequency range of
c                                            interest
c                                   expend - end of the frequency range of
c                                            interest
c                                   nspect - number of spectra; if -6, these are
c                                            the 6 default unit spectra
c                                   nSPdat - number of data items per spectrum
c                                   ptrFRQ - pointer to the frequencies
c                                 kPerturb - Linear Perturbation key
c                                   ptrSHP - pointer to the mode shapes
c                                            (eigenvectors)
c                          ptrLOD, ptrLODh - pointer to the load vectors
c                          ptrNAR, ptrNARh - pointer to the nodal averaged result records
c                          ptrDMP, ptrDMPh - pointer to the modal damping matrix
c                        ptrKUNS, ptrKUNSh - pointer to the modal stiffness
c                                            matrix (unsymmetric part)
c                        ptrKCPX, ptrKCPXh - pointer to the modal complex stiffness
c                                            matrix (structural damping)
c                      ptrGDAMPl,ptrGDAMPh - pointer to global damping values
c                                nrkeyPert - nrkey setting of base analysis (Linear Perturbation)
c                                   nrigid - number of rigid body modes
c                                   ptrLPM - pointer to the diagonal mass vector
c                                   ptrSP1 - pointer to the the spectrum data
c                               ptrIRHSl,h - pointer to imaginary part of RHS vector
c                           ptrRES,ptrRESh - pointer to residual vectors
c                                Glblenbac - global number of nodes (for D-ANSYS)
c                           ptrGBk,ptrGBkh - pointer to global nodal equivalence table
c                                  modlstp - multiple load step key
c                                    nresi - number of residual vectors in file
c                                KeyStress - key set if mode stresses on file
c                           ptrELD,ptrELDh - pointer to element records
c                           ptrEf1,ptrEf1h - pointer to enforced motion dof information
c                                    sstif - key denoting prestress effects are included,
c                                            this key is for internal usage only. SSTIF,on
c                                            or off is controlled by NLGEOM on or off now.
c                                  ptrFSTA - pointer to fstacm data
c                           ptrEf2,ptrEf2h - pointer to enforced motion modes
c                           ptrEf3,ptrEf3h - pointer to enforced motion force
c                                qrDampKey - QR damped calcaulations key
c                               cycMSUPkey - mode file format is for subsequent cyclic MSUP
c                                            (only base results on file)
c                                 cycnmode - total number of cyclic modes extracted
c                                            (sum of all harmonic indices)
c                                    ptrHI - pointer to harmonic indices
c                                 mrestart - key for modal restart (=0 none, =1 modal restart)
c                                 LPrestls - restarted load step (from linear perturbation)
c                                 LPrestss - restarted substep (from linear perturbation)
c                                   cpxmod - key for complex frequencies/shapes (0=no 1=yes)  
c                                  keyLeft - key for LMODE writing (0=no 1=yes)  
c                                    cpxlv - key for RHS vector in complex form (0=no 1=yes)
c                                            = 0 no  (before version 17.0)
c                                            = 1 yes (since version 17.0) ; ptrIRHSl,h is 0
c                                   ptrSCL - pointer to cyclic mode scale factors
c                                            (if scaled to unity, modnrm on modopt)
c                                 sparseLV - key if load vectors have been sparsified
c                                        0 - position not used
c                                 udfrqkey - Key for format and writing of undamped frequency record
c                      ptrUDFRQl,ptrUDFRQh - pointer to undamped frequency record
c                         ptrECRl, ptrECRh - pointer to the element centroidal result records
c                                  moddirF - 1 = this file was created in an analysis using
c                                                remote files (see MODDIR command).
c                                                There are no mode shapes (SHP).
c                    ptrRESMODl,ptrRESMODh - pointer to residual vectors
c                                            (only if moddirF = 1 and nresi > 0)
c                    ptrPSIREDl,ptrPSIREDh - mode shapes of a reduced system
c                                            (only if moddirF = 1 and nresi > 0)
c                                   modcmb - > 0 - if spectrum has been created with a
c                                                  mode combination command (srss/grp/cqc/etc.)
c                               keyNscop   - key for node scoping (0/1)
c                               numNscop   - number of scoped nodes
c                   ptrNSCOPl, ptrNSCOPh   - pointer to table of scoping node numbers


c  ---      i       1     numdof    Degrees of freedom per node
c                                   DOF reference numbers are:
c         UX  = 1, UY  = 2, UZ  = 3, ROTX= 4, ROTY= 5, ROTZ= 6, AX  = 7, AY  = 8
c         AZ  = 9, VX  =10, VY  =11, VZ  =12, GFV1=13, GFV2=14, GFV3=15, WARP=16
c         CONC=17, HDSP=18, PRES=19, TEMP=20, VOLT=21, MAG =22, ENKE=23, ENDS=24
c         EMF =25, CURR=26, SP01=27, SP02=28, SP03=29, SP04=30, SP05=31, SP06=32
c                                    (curdof(i),i=1,numdof)

c  ---      i       1     lenbac    Nodal equivalence table
c                                   This table equates the number used for
c                                   storage to the actual node number.
c                                    (Back(i),i=1,lenbac)

c  GBK      i       1    Glblenbac  Global nodal equivalence table
c                                   This table equates the number used for
c                                   storage to the actual global node number.
c                                    (GlbBack(i),i=1,Glblenbac)

c  FSTA    dp       1     30        fstacm.inc information (mass and MofI)

c  HI       i       1     cycnmode  Signed harmonic index for each extracted frequency.
c                                   Only present if cycMSUPkey=1.

c  FRQ     dp/cmp   1     nf        Frequencies (eigenvalues).
c                                   Frequencies are complex if cpxmod=1 or qrdampKey=1. 
c                                   If frequencies are real, numbers stored are
c                                      the squares of the natural circular
c                                      frequencies (w**2, where w=radians/time).
c                                      You can obtain the natural frequencies, f
c                                      (in cycles/time), using the equation f=w/2pi
c                                   If frequencies are complex, numbers stored are
c                                      the natural frequencies (Hz)         
c                                   (freq(i),i=1,nf)
c                                       nf = nmode+nresi
c                                     if cycMSUPkey=1 then
c                                       nf = cycnmode

c  UDFRQ     dp    1     nf         Undamped Eigenvalues for a QRDAMP Modal Analysis.
c                                   Record only exists when udfrqkey=1. 
c                                   Numbers are stored as the squares of the natural 
c                                   circular frequencies.
c                                   This record is directly written to the mode file and might
c                                   not be present in the .modesym file

c  SHP     dp/cmp   ns    nmrow[1]  Mode shapes (eigenvectors). Mode shapes are
c                                   complex if cpxmod=1.  The order corresponds
c                                   to the nodal equivalence table
c                                    (psi(i,j),i=1,nmrow)
c                                       ns = nmode
c                                    if cycMSUPkey=1 then
c                                       ns = cycnmode

c  RES      dp    nresi   nmrow[1]  Residual vectors

c  LOD     cmp   ldstep   nmrow[2]  Load vectors in complex form (since version 17.0)
c                                    (f(i),i=1,nmrow)
c                                   Before version 17.0, records were (cpxlv=0):
c                                   LOD  dp ldstep nmrow Load vectors
c                                                         (f(i),i=1,nmrow)
c                                   IRHS dp ldstep nmrow Imaginary Load vectors
c                                                         (fimag(i),i=1,nmrow)

c  LPM      dp      1     nmrow     Lumped mass vector. This record is present
c                                   only if lumpms=1 and nmatrix=0. It is a
c                                   vector containing the mass at each node in
c                                   the system.
c                                    (mass(i),i=1,nmrow)

c  DMP      dp    nmrow   nmrow     Modal damping matrix. Each row of the matrix
c                                   matrix is stored as a record.
c                                    (dmp(i,j),i=1,nmrow)

c  KUNS     dp    nmrow   nmrow     Modal unsymmetric stiffness matrix. Each row of the
c                                   matrix is stored as a record.
c                                    (kuns(i,j),i=1,nmrow)

c  KCPX     dp    nmrow   nmrow     Modal complex stiffness matrix. Each row of the
c                                   matrix is stored as a record.
c                                    (kcpx(i,j),i=1,nmrow)

c  GDAMP    dp       1      5       Global damping values
c                                   alphad, betad, dmpstr, 0, 0   

c  RESMOD   dp    nresi   nmrow[1]  Residual vectors if moddirF = 1 and nresi > 0

c  PSIRED   dp nmode+nresi nmode+nresi Mode shapes of a reduced system
c                                      if moddirF = 1 and nresi > 0
 
c  EF1     int      1    nEnfGrp    (groupID(i),i=1,nEnfGrp)
c          int      1    nEnfGrp    (grpdof(i),i=1,nEnfGrp)
c           dp  nEnfGrp  grpdof(i)  dofIndx(i,j) i=1,grpdof(j)
c                                   The above records contain information about each
c                                   enforced motion group.

c  EF2      dp  nEnfGrp   nmrow[2]  Enforced static modes

c  EF3      dp  nEnfGrp   nmrow[2]  Enforced forced vector
c

c  NSCOP    int     1    numNscop   Table of node numbers for which solution
c                                     vectors [1] are on file. If this table exists
c                                     (numNscop>0 and keyNscop=1) the size of the solution 
c                                     vectors [1] is smaller than nmrow. 
c
c                                   [2] If keyNscop = 1, vector is in modal subspace. 

c for each spectrum (|nspect| records):
c  SP1      dp      1   nmode+nresi Participation factors for this spectra
c  ---      dp      1   nmode+nresi Mode coefficients for this spectra
c  ---      dp      1   nmode+nresi Modal damping values
c  ---      dp      1    ndsvc*       (*) see svcom.inc
c  ---      int     1    nisvc*       
c  ---      dp      1     20        misc. spectra data

c  ELD      int     1     15         nelm,  maskl,  nItems, ptrELM, ptrERS,
c                                 ptrCERl,ptrCERh, ptrESLl,ptrESLh,    nRF,    (10)
c                                  ptrRFl, ptrRFh, PrecKey,  maskh,      0,

c                                  each item in header is described below:

c                                    nelm - number of elements
c                                 maskl,h - output mask (OUTRES)
c                                  nItems - number of element records (7, VOL
c                                           not included)
c                                  ptrELM - pointer to element equivalence table
c                                  ptrERS - pointer to element record sizes
c                               ptrCERl,h - pointer to constant element records
c                               ptrESLl,h - pointer to element index
c                                     nRF - number of reaction forces
c                                ptrRFl,h - pointer to reaction forces
c                                 PrecKey - 0, double precision 1, single
c                      above pointers are relative to ptrELD

c  ---      int     1   2*nItems   Total size of each element record (LONGINT)

c  ELM      int     1     nelm     Element equivalence table
c                                   This table equates the order number used to
c                                   the actual element number

c  ERS      int   nItems  nelm     Sizes of the nItem element results sets for
c                                   each element

c  CER      int     1     5       ptrVOL, ptrEPT, ptrEUL,      0,      0
c                      above pointers are relative to ptrCER

c     constant element records (do not vary by mode):
c   VOL     dp      1  nelm*1       Element volume
c   EPT     dp      1  nelm*size    Element structural nodal temperatures
c   EUL     dp      1  nelm*size    Element Euler angles

c   ESL     int     1     10      ptrENS, ptrEEL, ptrEMS, ptrENF, ptrENG,
c                                 ptrENSh,ptrEELh,ptrEMSh,ptrENFh,ptrENGh
c                      above pointers are relative to ptrESL

c     non-constant element records (do vary by mode):
c   ENS     dp   nelm  nmode*size   Element nodal component stresses
c   EEL     dp   nelm  nmode*size   Element nodal component elastic strains
c   EMS     dp   nelm  nmode*size   Element summable miscellaneous data
c   ENF     dp   nelm  nmode*size   Element nodal forces
c   ENG     dp   nelm  nmode*3      Element energies

c     see fdresu.inc for more information on the element results

c  NAR      int     1      7         nnod, ptrNCTl, ptrNCTh, ptrNSTl, ptrNSTh,
c                                    ptrNELl, ptrNELh

c                                  each item in header is described below:

c                                    nnod - number of nodes
c                               ptrNCTl,h - pointer to node contributions
c                               ptrNSTl,h - pointer to NAR stress record
c                               ptrNELl,h - pointer to NAR elastic strain record
c                      above pointers are relative to ptrNAR

c     NAR records (do vary by mode):
c   NCT      i   nnod  2            Node Contributions
c   NST     dp   nnod  nmode*6      Nodal component stresses
c   NEL     dp   nnod  nmode*7      Nodal component elastic strains

c     see fdresu.inc for more information on the NAR records

c  ECR      int     1      40         nelms,       0,       0,       0,       0,
c                                         0,       0,       0,       0,       0,  (10)
c                                     nECSl,   nECSh,pECSidxl,pECSidxh, ptrECSl,
c                                   ptrECSh,   nCELl,   nCELh,pCELidxl,pCELidxh,  (20)
c                                   ptrCELl, ptrCELh,       0,       0,       0,
c                                         0,       0,       0,       0,       0,  (30)
c                                         0,       0,       0,       0,       0,
c                                         0,       0,       0,       0,       0,  (40)
c                                  each item in header is described below:

c                                   nelms - number of elements
c                                 nECSl,h - num values for element centroid stress data
c                              pECSidxl,h - pointer to the element centroid stress index table
c                               ptrECSl,h - pointer to elmement centroid stress data
c                                 nCELl,h - num values for element centroid elastic strain data
c                              pCELidxl,h - pointer to the element centroid elastic strain index table
c                               ptrCELl,h - pointer to elmement centroid elastic strain data
c                      above pointers are relative to ptrECR

c     ECR records (do vary by mode):
c   ECS     dp   1   nECS*nmode*6      Element centroidal stresses
c   CEL     dp   1   nCEL*nmode*7      Element centroidal elastic strains

c     see fdresu.inc for more information on the ECR records