anchor.diff:      CALL Eye( outputMesh%Orientation, ErrStat, ErrMsg )         
           
   END SUBROUTINE CreateY2Meshes
  -!------------------------------------------------------------------------------------------------------
  -!> Set the index array that maps SD internal nodes to the Y2Mesh nodes.
  -!! NOTE: SDtoMesh is not checked for size, nor are the index array values checked for validity, 
  -!!       so this routine could easily have segmentation faults if any errors exist.
  -SUBROUTINE SD_Y2Mesh_Mapping(p, SDtoMesh )
  -   TYPE(SD_ParameterType),       INTENT(IN   )  :: p           !< Parameters
  -   INTEGER(IntKi),               INTENT(  OUT)  :: SDtoMesh(:) !< index/mapping of mesh nodes with SD mesh
  -   ! locals
  -   INTEGER(IntKi)                               :: i
  -   INTEGER(IntKi)                               :: SDnode
  -   INTEGER(IntKi)                               :: y2Node
  -
  -   y2Node = 0
  -   ! Interface nodes (IDI)
  -   DO I = 1,SIZE(p%IDI,1)/6
  -      y2Node = y2Node + 1      
  -      SDnode = p%IDI(I*6) / 6     ! TODO TODO TODO integer division gives me the actual node index; it is not the nodeID
  -      SDtoMesh( SDnode ) = y2Node ! TODO add safety check
  -   END DO
  -   
  -   ! Interior nodes (IDL)
  -   DO I = 1,SIZE(p%IDL,1)/6 
  -      y2Node = y2Node + 1      
  -      SDnode = p%IDL(I*6) / 6     ! TODO TODO TODO integer division gives me the actual node index; it is not the nodeID
  -      SDtoMesh( SDnode ) = y2Node ! TODO add safety check
  -   END DO
  -
  -   ! Base Reaction nodes (IDC)
  -   DO I = 1,SIZE(p%IDC,1)/6 
  -      y2Node = y2Node + 1      
  -      SDnode = p%IDC(I*6) / 6     ! TODO TODO TODO integer division gives me the actual node index; it is not the nodeID
  -      SDtoMesh( SDnode ) = y2Node ! TODO add safety check
  -   END DO
  -
  -END SUBROUTINE SD_Y2Mesh_Mapping
   
   
   !---------------------------------------------------------------------------
  
positive.code: #endif   
     
     CALL SDOut_CloseSum( UnSum, ErrStat, ErrMsg )  
  
  END SUBROUTINE OutSummary
  
  
negative.code:    WRITE(UnSum, '()') 
     WRITE(UnSum, '(A,I6)')  'Number of members',p%NMembers
     WRITE(UnSum, '(A,I6)')  'Number of nodes per member:', Init%Ndiv+1
     WRITE(UnSum, '(A9,A10,A10,A10,A10,A15,A15,A16)')  'Member ID', 'Joint1_ID', 'Joint2_ID','Prop_I','Prop_J', 'Mass','Length', 'Node IDs...'
     DO i=1,p%NMembers
         !Calculate member mass here; this should really be done somewhere else, yet it is not used anywhere else
         !IT WILL HAVE TO BE MODIFIED FOR OTHER THAN CIRCULAR PIPE ELEMENTS
         propids=p%Elems(i,iMProp:iMProp+1) ! TODO use member
         mLength=MemberLength(Init%Members(i,1),Init,ErrStat,ErrMsg) ! TODO double check mass and length
         IF (ErrStat .EQ. ErrID_None) THEN
          mType =  Init%Members(I, iMType) ! 
          if (mType==idMemberBeam) then
             mMass= MemberMass(Init%PropSetsB(propids(1),4),Init%PropSetsB(propids(1),5),Init%PropSetsB(propids(1),6),   &
                               Init%PropSetsB(propids(2),4),Init%PropSetsB(propids(2),5),Init%PropSetsB(propids(2),6), mLength, .TRUE.)
  
             WRITE(UnSum, '(I9,I10,I10,I10,I10,E15.6,E15.6, A3,'//Num2LStr(Init%NDiv + 1 )//'(I6))') Init%Members(i,1:3),propids(1),propids(2),&
                   mMass,mLength,' ',(Init%MemberNodes(i, j), j = 1, Init%NDiv+1)
          else
             WRITE(UnSum, '(A)') 'TODO, member mass for non-beam elements'
          endif
  