1.9. Description of the Full Stiffness-Mass File

This section explains the contents of the full file (jobname.full).

1.9.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 4.

1.9.2. FULL File Format

*comdeck,fdfull

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

c     **********  description of full stiffness-mass file  **********

      character*8  FULLNM 
      parameter  (FULLNM='full    ')

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

      LONGINT         fullfpL, fullfp
      integer         fullbk,  fullut, wrLdstep, wrSbstep, wrEqiter,
     x                wrOption
      common /fdfull/ fullfpL, fullbk, fullut,
     x                wrLdstep,wrSbstep,wrEqiter,wrOption
      equivalence  (fullfp,fullfpL)

c   ********** common variable descriptions ***********
co  fullfpL      file position on file full
co  fullbk       block number for file full
co  fullut       file unit for file full

c     **********  file format (except for extopt=3,4) **********

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

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      160      .FULL FILE HEADER
c                                     
c                                  fun04,     neqn,    nmrow,   nmatrx,      kan,
c                                  wfmax,   lenbac,   numdof,  ntermKl,  ntermKh,   (10)
c                                  lumpm,    nmrow,   ntermK,   keyuns,   extopt,
c                                  keyse,   sclstf,   nxrows,  ptrSTFl,  ptrSTFh,   (20)
c                                ncefull,  ntermMh,  ptrENDl,  ptrENDh, ptrIRHSl,
c                               ptrIRHSh,  ptrMASl,  ptrMASh,  ptrDMPl,  ptrDMPh,   (30)
c                                 ptrCEl,   ptrCEh,   nNodes,  ntermMl,  ntermDl,
c                                ptrDOFl,  ptrDOFh,  ptrRHSl,  ptrRHSh,  ntermDh,   (40)
c                                ngMaxNZ, ptrNGPHl, ptrNGPHh, minKdiag, maxKdiag,
c                               minMdiag, maxMdiag, minDdiag, maxDdiag,  ngTerml,   (50)
c                                ngTermh, ngTermCl, ngTermCh,ptrDIAGKl,ptrDIAGKh,
c                              ptrDIAGMl,ptrDIAGMh,ptrDIAGCl,ptrDIAGCh, ptrSCLKl,   (60)
c                               ptrSCLKh,  Glbneqn,  distKey, ngTermFl, ngTermFh,
c                              GlbnNodes, GlbnVars, GlbfAcCE,        0,   GlbfCE,   (70)
c                                ptrGmtl,  ptrGmth,nceGprime,numA12A11,GnVirtBCs,
c                                ntermGl,  ntermGh,ptrDensel,ptrDenseh, nVirtBCs,   (80)
c                              ptrVrtBCl,ptrVrtBCh,  ptrMRKl,  ptrMRKh, ptrKclxl,
c                               ptrKclxh, ntermKCl, ntermKCh,minKCdiag,maxKCdiag,   (90)
c                                  ngChg,   ptrBCl,   ptrBCh, ptrPHYSl, ptrPHYSh,
c                                predKey, neqnDist, ptrGVBCl, ptrGVBCh,        0,  (100)
c                           localNonlKey, nMastDOF,  ptrMDFl,  ptrMDFh, GlbnMast,
c                               ptrGMDFl, ptrGMDFh,  cmsMeth,  cmsMixF,   hrmopt,  (110)
c                                ActFlag,InActNKey,IANSndCnt,IANRcvCnt,Glblenbac,
c                                ptrActl,  ptrActh,ext_nNods, ext_neqn,ext_nmrow,  (120)
c                             EqnMtxFlag,   krysub,  ext_nce, ptrExtNl, ptrExtNh,
c                              ExtSndCnt,ExtRcvCnt,buildGall,nExtSndCE,nExtRcvCE,  (130)
c                              ShaSndCnt,ShaRcvCnt,        0,        0,        0,
c                                      0,        0,        0,        0,        0,  (140)
c                                      0,        0,        0,        0,        0,
c                                      0,        0,        0,        0,        0,  (150)
c                                      0,        0,        0,        0,        0,
c                                      0,        0,        0,        0,        0   (160)


c                                  each item in header is described below:

c                                   fun04  - negative of the unit number (-4)
c                                            NOTE: if fun04 is > 0 it means that
c                                                  frontal assembly was used (which
c                                                  is longer documented here)
c                                   neqn   - number of equations on file
c                                   nmrow  - number of active DOF (neqn-BC)
c                                   nmatrx - number of matrices on file
c                                   kan    - analysis type
c                                   wfmax  - maximum row size
c                                   lenbac - number of nodes in ANSYS space (this can be different from nNodes when ActFlag is on)
c                                   numdof - number of dofs per node
c                                   ntermKl,ntermKh - number of terms in Stiffness
c                                                     matrix
c                                   lumpm  - lumped mass key
c                                            = 0 - default matrix type
c                                            = 1 - lumped
c                                   ntermK - pre-8.1 this is the number of terms 
c                                            in Stiffness matrix (otherwise this 
c                                            value must be 0 and ntermKl,ntermKh 
c                                            must be used)
c                                   keyuns - unsymmetric key
c                                            = 0 - no unsymmetric matrices on 
c                                                   file
c                                            = 1 - there is at least one 
c                                                   unsymmetric matrix on file
c                                   extopt - mode extraction method
c                                            = 0 - reduced
c                                            = 1 - lumped
c                                            = 3 - unsymmetric Lanczos
c                                            = 4 - damped Lanczos
c                                            = 6 - block Lanczos
c                                            = 7 - QRdamped
c                                            = 8 - SuperNode
c                                            = 9 - PCG Lanczos
c                                   keyse  - superelement key; set if at least
c                                           one superelement
c                                   sclstf - maximum absolute stiffness matrix term
c                                   nxrows - the maximum rank for this solution
c                                   ptrSTFl,h  - pointer to Stiffness matrix
c                                   ncefull    - number of CE+CP equations including acrossCE and inCpuCE
c                                   ptrENDl    - low part of 64 bit end of file ptr
c                                   ptrENDh    - high part of 64 bit end of file ptr
c                                   ptrIRHSl,h - pointer to imaginary RHS (F)
c                                   ptrMASl,h  - pointer to Mass matrix
c                                   ptrDMPl,h  - pointer to Damping matrix
c                                   ptrCEl,h   - pointer to Gt and g matrices
c                                   nNodes     - number of nodes considered by assembly (nNodes can be different from lenbac when ActFlag is on)
c                                   ntermMl,h  - number of terms in Mass matrix
c                                   ntermDl,h  - number of terms in Damping matrix
c                                   ptrDOFl,h  - pointer to DOF info
c                                   ptrRHSl,h  - pointer to RHS (F)
c                                   ngMaxNZ    - maximum number of nodes per nodal
c                                                block in nodal graph structure
c                                   ptrNGPHl,h - pointer to vectors needed for
c                                                nodal graph structure
c                                   minKdiag - minimum absolute stiffness matrix 
c                                              diagonal term
c                                   maxKdiag - maximum absolute stiffness matrix 
c                                              diagonal term
c                                   minMdiag - minimum absolute mass matrix 
c                                              diagonal term 
c                                   maxMdiag - maximum absolute mass matrix 
c                                              diagonal term 
c                                   minDdiag - minimum absolute damping matrix 
c                                              diagonal term 
c                                   maxDdiag - maximum absolute damping matrix 
c                                              diagonal term  
c                                   ngTerml,h  - total number of nonzeroes in nodal graph
c                                                 (expanded graph based value, no BC applied)
c                                   ngTermCl,h - total number of nonzeroes in nodal graph
c                                                 (compressed graph based value)
c                                   ptrDIAGKl,h - pointer to stiffness matrix DIAGONAL vector
c                                                 (NOTE: this is a copy of the diagonal
c                                                        values stored in the full matrix)
c                                   ptrDIAGMl,h - pointer to mass matrix DIAGONAL vector
c                                                 (NOTE: this is a copy of the diagonal 
c                                                        values stored in the full matrix)
c                                   ptrDIAGCl,h - pointer to damping matrix DIAGONAL vector
c                                                 (NOTE: this is a copy of the diagonal 
c                                                        values stored in the full matrix)
c                                   ptrSCLKl,h  - pointer to stiffness matrix diagonal scaling
c                                                 vector (may contain all 1.0's when not scaling)
c                                   Glbneqn  - global number of active DOF (this will match nmrow
c                                              unless we are writing distributed "local" FULL files
c                                              in Distributed ANSYS
c                                   distKey  - key denoting whether the FULL file is a single,
c                                              global FULL file (0) or multiple, local FULL file (1)
c                                   ngTermFl,h - total number of nonzeroes in nodal graph
c                                                as passed to the solver (after BC applied)
c                                   GlbnNodes - global number of nodes considered by assembly
c                                   GlbnVars  - global number of equations (will match neqn
c                                               unless we are writing distributed "local" FULL files
c                                               in Distributed ANSYS
c                                   GlbfAcCE  - total number of acrossCpu CE (GlbfinalAcCE)
c                                   GlbfCE    - total number of all the CE (GlbfinalCE)
c                                   ptrGmtl,h - pointer to G prime matrix for local nonlinearity
c                                   nceGprime - number of CE (or equations) in G prime local nonlinearity
c                                   numA12A11 - number of equations in local nonlinear matrix: excluding
c                                               equations from G prime
c                                   GnVirtBCs - global number of virtual constraints
c                                   ntermGl,ntermGh - total number of terms in total local nonlinear
c                                                     matrix including A12,A11 and G: total sum
c                                   ptrDensel,ptrDenseh - dense matrix information in local nonlinear
c                                                         matrix
c                                   nVirtBCs  - number of virtual constraints
c                                   ptrVrtBCl,ptrVrtBCh - pointer to the virtual constraint DOF data
c                                   ptrMRKl,h - pointer to the DOF marker array
c                                   ptrKclxl,h - pointer to K complex (the 4th matrix) matrix
c                                                full case is: K, M, C, Kcplx: existing at same time
c                                   ntermKCl,h - number of terms in Complex Stiffness matrix
c                                   minKCdiag - minimum absolute complex stiffness matrix
c                                               diagonal term
c                                   maxKCdiag - maximum absolute complex stiffness matrix
c                                               diagonal term
c                                   ngChg     - key denoting whether or not the nodal graph written
c                                               to this FULL file differs from the previous FULL file
c                                   ptrBCl,h  - pointer to boundary condition data
c                                   ptrPHYSl,h- pointer to the physics marker array
c                                   predKey   - nonlinear analysis predictor key
c                                   neqnDist  - number of distributed equations being solved in current domain (DDSP)
c                                   ptrGVBCl,h- pointer to the global virtual constraint DOF data
c                                   localNonlKey - local nonlinearity speedup key
c                                   nMastDOF  - number of master DOF for substructuring
c                                   ptrMDFl,h - pointer to the master DOF data for substructuring
c                                   GlbnMast  - global number of master DOF for substructuring
c                                   ptrGMDFl,h- pointer to the global master DOF data for substructuring
c                                   cmsMeth   - CMS method key
c                                               = 0 - fixed interface method
c                                               = 1 - free interface method
c                                               = 3 - residual-flexible free interface method
c                                               = 4 - user defined method
c                                   cmsMixF   - flags mixed interface method derived from
c                                               = 1 - free interface method
c                                               = 3 - Residual-flexible free interface method
c                                               = 0 - default
c                                   hrmopt     - harmonic analysis type
c                                               = 0 Not a harmonic analysis
c                                               > 0 Harmonic analysis type
c                                   ActFlag    - active element logic flag for the two-step method (only assemble and solve active nodes)
c                                              - equivalent to actSymbFlag defined in soptcm.inc
c                                              - currently, it is used for AM and target element trimming
c                                                = 2 - mark active nodes in casiInitialize before assembly due to targets trimming
c                                                = 1 - mark active nodes in casiInitialize before assembly due to additive manufacturing
c                                                = 0 - default
c                                   InActNKey  - sum of number of inactive nodes across all domain.
c                                              - it is only useful when ActFlag = 2
c                                                = 0 - number of active nodes (nNodes) is equal to original ANSYS nodes (lenbac)
c                                                    - there is no need to do AllToAll communication for the inactive nodes located on the interfaces between domains
c                                                > 0 - number of active nodes (nNodes) is smaller than original ANSYS nodes (lenbac)
c                                                    - if distributed full file is used, AllToAll communication are required to recover solution from FULL dof space
c                                                    - back to ANSYS dof space
c                                   IANSndCnt  - total number of inactive nodes that need to be sent to other domains
c                                              - it is only usefull when InActNKey > 0 and distributed full file is used
c                                                = 0 - no inactive nodes information in current domain that need to be sent to other domains
c                                                > 0 - length of InActNodesSnd array
c                                   IANRcvCnt  - total number of inactive nodes that need to be received from other domains
c                                              - it is only usefull when InActNKey > 0 and distributed full file is used
c                                                = 0 - no inactive nodes information in current domain that need to be received to other domains
c                                                > 0 - length of InActNodesRcv array
c                                   Glblenbac  - Global number of nodes in ANSYS space
c                                   ptrActl,h  - pointer to act nodes to ANSYS nodes mapping array and other supporting mapping vectors.
c                                   ext_nNods  - nNodes + extra number of nodes needed by local equation based matrix 
c                                   ext_neqn   - neqn on file + extra number of equations needed by local equation based matrix
c                                   ext_nmrow  - ext_neqn - nBC - number of BC in extra number of equations needed by local equation based matrix
c                                   EqnMtxFlag - unused
c                                   krysub     - key signaling that this .full file was created during the stage of buildling
c                                                the subspace for the KRYLOV method in a harmonic or transient analysis
c                                   ext_nce    - ncefull + extra number of CE/CP from extra number of equations needed by local equation based matrix
c                                   ptrExtNl,h - pointer to extra dof mapping array
c                                   ExtSndCnt  - total number of extra equation that need to be sent to other domains
c                                   ExtRcvCnt  - total number of extra equation that need to be received from other domains
c                                   buildGall  - key indicates whether Gbc is saved in full file or not (Gall needs to be built or not):
c                                                = 0 - no need to save Gbc in full file since G == Gall
c                                                = 1 - need to save Gbc in full file to build Gall, Gall = G + Gbc
c                                   nExtSndCE  - total number of extra equation (due to acrossCE) that need to be sent to other domains
c                                   nExtRcvCE  - total number of extra equation (due to acrossCE) that need to be received from other domains
c                                   ShaSndCnt  - total number of shared equation (interface dof) that need to be sent to other domains
c                                   ShaRcvCnt  - total number of shared equation (interface dof) that need to be received from other domains

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  ---      i       1      lenbac   Nodal equivalence table. This table equates
c                                   the number used for storage to the actual
c                                   node number 

c  ---      i       1   Glblenbac   Global nodal equivalence table.  This record
c                                   EXISTS ONLY in the full file of the master
c                                   domain and ONLY for distributed .full files
c
c Stiffness Matrix. The next two records are repeated as a group neqn times. 

c  STF      i       1      varies   Matrix row indices. The last item
c                                   corresponds to the diagonal. The
c                                   length of this record will vary (actual
c                                   length is returned from routine BINRD8)

c  ---   dp/cmp     1      varies   Matrix terms

c                                   If keyuns=0, this record will contain the
c                                   terms before the diagonal.

c                                   If keyuns=1, this record will contain the
c                                   entire row.
c          
c Load Vector

c  RHS   dp/cmp     1        neqn   Load vector terms.

c Imaginary part of Load Vector

c  IRHS    dp       1        neqn   Imaginary load vector terms.
c                                   This record EXISTS ONLY if its pointer in the header
c                                   is not zero.

c Stiffness matrix diagonal vector

c  DIAGK   dp/cmp   1        neqn   diagonal vector data for stiffness matrix.

c Stiffness matrix diagonal scaling vector

c  SCLK    dp/cmp   1    ext_neqn   diagonal scaling vector for stiffness matrix.

c DOF marker array

c  MRK      i       1        neqn   marker array flagging various types of DOF
c                                   (1=U_EQN, 2=P_EQN, 3=E_EQN, 4=A_EQN).  Positive
c                                   values mean the DOF belongs to a user-defined node,
c                                   negative values mean the DOF belongs to an internal node.
c                                   NOTE: if this array does not exist then it is assumed that
c                                   all DOFs are U_EQNs for user-defined nodes.

c PHYSICS marker array

c  PHYS     i       1        neqn   marker array flagging the various types of physics
c                                   (1=STRUCTURAL_EQN, 2=THERMAL_EQN, 3=ELECTRICAL_EQN,
c                                    4=MAGNETIC_EQN, 5=FLUID_EQN, 6=DIFFUSION_EQN)
c                                   NOTE: if this array does not exist then it is assumed that
c                                   all DOFs are STRUCTURAL_EQNs.

c DOF information

c  DOF      i       1   ext_nNods   Nodal extent vector. Number of DOFs at each node

c  ---      i       1    ext_neqn   DOF vector. If negative, this DOF is constrained.

c  ---      i       1   ext_nNods   A vector mapping local node number to global node number.
c                                   This record EXISTS ONLY for distributed .full files

c  ---      i       1   ext_nNods   A vector mapping local node number to the domain who owns it.
c                                   This record EXISTS ONLY for distributed .full files

c  ---      i       1 ext_neqn-neqn A vector mapping extended local dof (equation number) to global dof.
c                                   This record EXISTS ONLY for distributed .full files.

c  ---      i       1   ext_nNods   A vector mapping active node number used in assembly to global active node number.
c                                   This record EXISTS ONLY for distributed .full files and actSymbFlag > 1.

c act nodes to ANSYS nodes mapping array (this record only exist when actSymbFlag > 1)

c  ---      i       1    ext_nNods  A vector mapping active local node number used in assembly to ANSYS local node number.
c                                   This record EXISTS ONLY when distKey = 1 or numCPU = 1

c  ---      i       1    GlbnNodes  A vector mapping active global node number used in assembly to ANSYS global node number.
c                                   This record EXISTS ONLY when distKey = 0 and numCPU > 1

c  ---      i       1      numCPU   A vector (InActNumNodesSnd) giving the number of inactive nodes
c                                   that needs to be sent to each domain
c                                   This record EXISTS ONLY for distributed .full files and InActNKey > 0

c  ---      i       1      numCPU   A vector (InActNumNodesRcv) giving the number of inactive nodes
c                                   that needs to be received from each domain
c                                   This record EXISTS ONLY for distributed .full files and InActNKey > 0

c  ---      i       1   IANSndCnt   A vector (InActNodesSnd) giving local internal node number that needs to be
c                                   sent to other domains.
c                                   This record EXISTS ONLY when IANSndCnt > 0

c  ---      i       1   IANRcvCnt   A vector (InActNodesRcv) giving local internal node number that needs to be
c                                   received from other domains.
c                                   This record EXISTS ONLY when IANRcvdCnt > 0

c extended equations mapping array (this record only exist when distKey == 1)

c  ---      i       1      numCPU   A vector (extend_neqns_snd) giving the number of equations (dofs)
c                                   that needs to be sent to each domain as these domains' extended nodal information.
c                                   This record EXISTS ONLY for distributed .full files.

c  ---      i       1      numCPU   A vector (extend_neqns_rcv) giving the number of equations (dofs)
c                                   that needs to be received from each domain 
c                                   This record EXISTS ONLY for distributed .full files.

c  ---      i       1   ExtSndCnt   A vector (extend_eqn_snd) giving local equation number that needs to be
c                                   sent to other domains.
c                                   This record EXISTS ONLY when ExtSndCnt > 0

c  ---      i       1   ExtRcvCnt   A vector (extend_eqn_rcv) giving local equation number that needs to be
c                                   received from other domains.
c                                   This record EXISTS ONLY when ExtRcvCnt > 0

c extended equations (due to acrossCE) mapping array (this record only exist when distKey == 1 && GlbfinalAcCE > 0)

c  ---      i       1      numCPU   A vector (extend_neqns_fromCE_snd) giving the number of equations (dofs)
c                                   that needs to be sent to each domain as these domains' extended nodal information.
c                                   This record EXISTS ONLY for distributed .full files and GlbfinalAcCE > 0.

c  ---      i       1      numCPU   A vector (extend_neqns_fromCE_rcv) giving the number of equations (dofs)
c                                   that needs to be received from each domain 
c                                   This record EXISTS ONLY for distributed .full files and GlbfinalAcCE > 0.

c  ---      i       1   nExtSndCE   A vector (extend_eqn_fromCE_snd) giving local equation number that needs to be
c                                   sent to other domains.
c                                   This record EXISTS ONLY when nExtSndCE > 0

c  ---      i       1   nExtRcvCE   A vector (extend_eqn_fromCE_rcv) giving local equation number that needs to be
c                                   received from other domains.
c                                   This record EXISTS ONLY when nExtRcvCE > 0

c shared equations (interface dof) mapping array (this record only exist when distKey == 1)

c  ---      i       1      numCPU   A vector (shared_neqns_snd) giving the number of equations (dofs)
c                                   that needs to be sent to each domain as these domains' shared nodal information.
c                                   This record EXISTS ONLY for distributed .full files.

c  ---      i       1      numCPU   A vector (shared_neqns_rcv) giving the number of equations (dofs)
c                                   that needs to be received from each domain 
c                                   This record EXISTS ONLY for distributed .full files.

c  ---      i       1   ShaSndCnt   A vector (shared_eqn_snd) giving local equation number that needs to be
c                                   sent to other domains.
c                                   This record EXISTS ONLY when ExtSndCnt > 0

c  ---      i       1   ShaRcvCnt   A vector (shared_eqn_rcv) giving local equation number that needs to be
c                                   received from other domains.
c                                   This record EXISTS ONLY when ExtRcvCnt > 0

c BC information

c  BC       i       1        neqn   DOFs with imposed values.

c  ---   dp/cmp     1      varies   Imposed values.

c Mass Matrix. 
c    if lumpm = 0:
c      The next two records are repeated as a group neqn times.

c  MAS      i       1      varies   Matrix row indices. The last item 
c                                   corresponds to the diagonal. The
c                                   length of this record will vary (actual 
c                                   length is returned from routine BINRD8)

c  ---     dp       1      varies   Matrix terms.

c    if lumpm = 1:
c  ---     dp       1        neqn   Matrix diagonals. 

c Mass matrix diagonal vector

c  DIAGM   dp       1        neqn   diagonal vector data for mass matrix. 

c Damping Matrix. The next two records are repeated as a group neqn times.

c  DMP      i       1      varies   Matrix row indices. The last item 
c                                   corresponds to the diagonal. The
c                                   length of this record will vary (actual 
c                                   length is returned from routine BINRD8)

c  ---     dp       1      varies   Matrix terms.

c Damping matrix diagonal vector

c  DIAGC   dp       1        neqn   diagonal vector data for damping matrix.

c K complex Matrix. The next two records are repeated as a group neqn times.

c  KC      i       1       varies   Matrix row indices. The last item
c                                   corresponds to the diagonal. The
c                                   length of this record will vary (actual
c                                   length is returned from routine BINRD8)

c  ---     dp       1      varies   Matrix terms.


c Nodal graph vectors

c  NGPH     i       1      nNodes   number of nonzeroes for each node.

c   Repeat for each node

c           i       1      varies   Index vector. Node number in the vector is global when 
c                                   model has across CE

c G matrix if ncefull > 0.

c  CE       i       1     ext_nce   List of dependent DOFs of all CEs.
c                                   It EXISTS ONLY if ext_nce>0. The dependent DOF is local

c  ---     dp       1     ncefull   g vector (constant terms) of local CEs. This record
c                                   EXISTS ONLY if ncefull>0

c  ---     dp       1     ncefull   imaginary g vector (constant terms) of local CEs. This
c                                   vector only exists for FULL harmonic analyses (kan=3).
c                                   This record EXISTS ONLY if ncefull>0

c  ---     dp       1     ncefull   g vector (constant terms) of local CEs for nonlinear
c                                   analysis predictor logic.
c                                   This record EXISTS ONLY if ncefull>0 & predKey=1.

c  Following CE data (G) records EXIST ONLY in the full file of the domain with CEs:
c  ---      i       1           4   Header for local CEs; 1=nRows, 2=nRows, 3=1, 4=0

c  ---      i       1       nRows   Vector of 1's

c  ---      i       1       nRows   Number of non-zero terms in each row for one CE

c   Repeat for each row:

c  ---      i       1      varies   Column indices in local equation numbers

c  ---     dp       1      varies   Column values


c   Following CE data (Gbc) records EXIST ONLY if buildGall == 1 in the full file of the domain with CEs:
c   NOTE: this matrix includes boundary d.o.f. which touch the CEs (for cnvfor.F)
c  ---      i       1           4   Header for Gbc CEs; 1=nRows, 2=nRows, 3=1, 4=0

c  ---      i       1       nRows   Vector of 1's

c  ---      i       1       nRows   Number of non-zero terms in each row for a CE from Gbc

c   Repeat for each row:

c  ---      i       1      varies   Column indices in local equation numbers

c  ---     dp       1      varies   Column values

c   Following CE data records EXIST ONLY if n>0 in the full file, where n == ncefull with
c   SMP and n == GlbfCE with DMP.  NOTE: for DMP these records only exist in the .full file
c   of master domain

c  ---      i       1           n   List of dependent DOFs of all CEs. This record EXISTS ONLY
c                                   if n>0.  And it is ONLY in the full file of the master
c                                   domain

c Virtual constraint vector

c  VBC      i       1    nVirtBCs   marker array (bit 1 set -> constrained DOF for residual vector)
c                                                (bit 2 set -> constrained DOF for enforced motion)
c                                                (bit 3 set -> eliminated DOF for substructure master DOF)
c           i       1    nVirtBCs   virtual constraint DOFs

c  GVBC     i       1    GnVirtBCs  marker array (bit 1 set -> constrained DOF for residual vector)
c                                                (bit 2 set -> constrained DOF for enforced motion)
c                                                (bit 3 set -> eliminated DOF for substructure master DOF)
c                                   this record EXISTS ONLY for models using DMP with across CE

c           i       1    GnVirtBCs  virtual constraint DOFs
c                                   this record EXISTS ONLY for models using DMP with across CE

c Substructuring master DOF vector

c  MDF      i       1    nMastDOF   list of master DOFs for substructuring

c  GMDF     i       1    GlbnMast   list of master DOFs for substructuring
c                                   this record EXISTS ONLY for models using DMP with across CE


c  Meaning of K11, K12, and G matrices:
c     Given
c         [K]{x} = {F}
c     subject to the constraints
c           {x1} = [G]{x2} + {g}
c     where {x1} are the dependent DOFs, {x2} the independent DOFs

c     This results in
c         [K*]{x2} = {F*}
c     where
c         [K*] = [G]'[K11][G] + [G]'[K12] + [K21][G] + [K22]
c         {F*} = [G]'{f1} + {f2} - [G]'[K11]{g} - [K21]{g}

c for the complex version of {F*} and {x1}:
c [G] is always real
c [K11] is complex and we denote it as [K11*] == [K11r,K11i]
c [K21] is complex and we denote it as [K21*] == [K21r,K21i]
c {g} is complex and we denote it as {g*} == {gr,gi}
c         [G]'[K11*]{g*} = [G]'[K11r,K11i]*{gr,gi}
c                        = [G]'[K11r*gr - K11i*gi, K11i*gr + K11r*gi]

c         [K21*]{g*} = [K21r,K21i]*{gr,gi}
c                    = [K21r*gr - K21i*gi, K21i*gr + K21r*gi]

c for the complex version of {x1}:
c [G] is always real
c {x2} is complex and we denote it as {x2*} == {x2r,x2i}
c {g} is complex and we denote it as {g*} == {gr,gi}
c         [G]{x2*} + {g*} = [G]{x2r,x2i} + {gr,gi}
c                         = [G*x2r + gr, G*x2i + gi]