hexagon logo

write reduced mass / stiffness to an HDF5 file

In nastran 2018, it seems as though you can write out the reduced mass and stiffness matrices in an HDF5 file. How would you go about doing this? Is there anything special outside the nastran system flag to dump out into and hdf5 file?
 
Parents
  • $ This alter modifies the existing EXTOUT code to 
    $ output matrices to the HDF5 file as well as the
    $ OP4 file. Currently only works with the OP4 output
    $ already turned on.
     
    COMPILE EXTOUT
     
    $ Output all model matrices
    ALTER 'if ( nomatpc>0 ) then'(,-1)
     
      if ( extmedia='matrixop' ) then $
     
       if ( nomatk>0 and kout ) then $
         CRDB_MTX KAA,,,,//'KAA' $
       else $
         CRDB_MTX KXX,,,,//'KXX' $
       endif $ nomatk>0 and kout
     
       if ( nomatm>0 and mout ) then $
         CRDB_MTX MAA,,,,//'MAA' $
       else $
         CRDB_MTX MXX,,,,//'MXX' $
       endif $ nomatm>0 and mout
     
       if ( nomatb>0 and bout ) then $
         CRDB_MTX BAA,,,,//'BAA' $
       else $
         CRDB_MTX BXX,,,,//'BXX' $
       endif $ nomatb>0 and bout
     
       if ( nomatk4>0 and k4out ) then $
         CRDB_MTX K4AA,,,,//'K4AA' $
       else $
         CRDB_MTX K4XX,,,,//'K4XX' $
       endif $ nomatk4>0 and k4out
     
       if ( nomatp>0 and pout ) then $
         CRDB_MTX PA,,,,//'PA' $
       else $
         CRDB_MTX PX,,,,//'PX' $
       endif $ nomatp>0 and pout
     
       if ( nomatgp>0 ) then $
         CRDB_MTX GPAK,,,,//'GPAK' $
       else $
         CRDB_MTX GPXX,,,,//'GPXX' $
       endif $ nomatgp>0 
     
       if ( nomatgd>0 ) then $
         CRDB_MTX GDAK,,,,//'GDAK' $
       else $
         CRDB_MTX GDXX,,,,//'GDXX' $
       endif $ nomatgd>0
     
       if ( extdtm ) then $
         if ( nomatrga>0 ) then $
          CRDB_MTX RGA,,,,//'RGA' $
         else $
          CRDB_MTX RGX,,,,//'RGX' $
         endif $ nomatrga>0 
       endif $ extdtm 
     
       if ( nomatvfs>0 ) then $
         CRDB_MTX VAFS,,,,//'VAFS' $
       else $
         CRDB_MTX VAFX,,,,//'VAFX' $
       endif $ nomatvfs>0 
     
       if ( nomata>0 and aout ) then $
         CRDB_MTX AA,,,,//'AA' $
       else $
         CRDB_MTX AX,,,,//'AX' $
       endif $ nomata>0 and aout
     
       if ( nomatrva>0 ) then $
         CRDB_MTX RVA,,,,//'RVA' $
       else $
         CRDB_MTX RVAX,,,,//'RVAX' $
       endif $ nomatrva>0 
     
       if ( nomatksm>0 ) then $
         CRDB_MTX KASM,,,,//'KASM' $
       else $
         CRDB_MTX KASMX,,,,//'KASMX' $
       endif $ nomatkasm>0 
     
       if ( nomatmsm>0 ) then $
         CRDB_MTX MASM,,,,//'MASM' $
       else $
         CRDB_MTX MASMX,,,,//'MASMX' $
       endif $ nomatmsm>0 
        
      endif
     
    $ Output OTMs
    ALTER 'if (rotorflg>0) call rotout'(,-1)
     
      if ( extotm and extmedia='matrixop' ) then $
        
       CRDB_MTX VA,,,,//'VA' $
       CRDB_MTX MUG1,,,,//'MUG1' $
       CRDB_MTX MUG1O,,,,//'MUG1O' $
       CRDB_MTX MES1,,,,//'MES1' $
       CRDB_MTX MES1O,,,,//'MES1O' $
       CRDB_MTX MEF1,,,,//'MEF1' $
       CRDB_MTX MEF1O,,,,//'MEF1O' $
       CRDB_MTX MKQG1,,,,//'MKQG1' $
       CRDB_MTX MKQG1O,,,,//'MKQG1O' $
       CRDB_MTX MMQG1,,,,//'MMQG1' $
       CRDB_MTX MBQG1,,,,//'MBQG1' $
       CRDB_MTX MK4QG1,,,,//'MK4QG1' $
       CRDB_MTX MUG1B,,,,//'MUG1B' $
       CRDB_MTX MUG1OB,,,,//'MUG1OB' $
       CRDB_MTX MEE1,,,,//'MEE1' $
       CRDB_MTX MEE1O,,,,//'MEE1O' $
       CRDB_MTX MKQMG1,,,,//'MKQMG1' $
       CRDB_MTX MKQMG1O,,,,//'MKQMG1O' $
       CRDB_MTX MMQMG1,,,,//'MMQMG1' $
       CRDB_MTX MBQMG1,,,,//'MBQMG1' $
       CRDB_MTX MK4QMG1,,,,//'MK4QMG1' $
       
      endif
     
    ENDALTER
     
Reply
  • $ This alter modifies the existing EXTOUT code to 
    $ output matrices to the HDF5 file as well as the
    $ OP4 file. Currently only works with the OP4 output
    $ already turned on.
     
    COMPILE EXTOUT
     
    $ Output all model matrices
    ALTER 'if ( nomatpc>0 ) then'(,-1)
     
      if ( extmedia='matrixop' ) then $
     
       if ( nomatk>0 and kout ) then $
         CRDB_MTX KAA,,,,//'KAA' $
       else $
         CRDB_MTX KXX,,,,//'KXX' $
       endif $ nomatk>0 and kout
     
       if ( nomatm>0 and mout ) then $
         CRDB_MTX MAA,,,,//'MAA' $
       else $
         CRDB_MTX MXX,,,,//'MXX' $
       endif $ nomatm>0 and mout
     
       if ( nomatb>0 and bout ) then $
         CRDB_MTX BAA,,,,//'BAA' $
       else $
         CRDB_MTX BXX,,,,//'BXX' $
       endif $ nomatb>0 and bout
     
       if ( nomatk4>0 and k4out ) then $
         CRDB_MTX K4AA,,,,//'K4AA' $
       else $
         CRDB_MTX K4XX,,,,//'K4XX' $
       endif $ nomatk4>0 and k4out
     
       if ( nomatp>0 and pout ) then $
         CRDB_MTX PA,,,,//'PA' $
       else $
         CRDB_MTX PX,,,,//'PX' $
       endif $ nomatp>0 and pout
     
       if ( nomatgp>0 ) then $
         CRDB_MTX GPAK,,,,//'GPAK' $
       else $
         CRDB_MTX GPXX,,,,//'GPXX' $
       endif $ nomatgp>0 
     
       if ( nomatgd>0 ) then $
         CRDB_MTX GDAK,,,,//'GDAK' $
       else $
         CRDB_MTX GDXX,,,,//'GDXX' $
       endif $ nomatgd>0
     
       if ( extdtm ) then $
         if ( nomatrga>0 ) then $
          CRDB_MTX RGA,,,,//'RGA' $
         else $
          CRDB_MTX RGX,,,,//'RGX' $
         endif $ nomatrga>0 
       endif $ extdtm 
     
       if ( nomatvfs>0 ) then $
         CRDB_MTX VAFS,,,,//'VAFS' $
       else $
         CRDB_MTX VAFX,,,,//'VAFX' $
       endif $ nomatvfs>0 
     
       if ( nomata>0 and aout ) then $
         CRDB_MTX AA,,,,//'AA' $
       else $
         CRDB_MTX AX,,,,//'AX' $
       endif $ nomata>0 and aout
     
       if ( nomatrva>0 ) then $
         CRDB_MTX RVA,,,,//'RVA' $
       else $
         CRDB_MTX RVAX,,,,//'RVAX' $
       endif $ nomatrva>0 
     
       if ( nomatksm>0 ) then $
         CRDB_MTX KASM,,,,//'KASM' $
       else $
         CRDB_MTX KASMX,,,,//'KASMX' $
       endif $ nomatkasm>0 
     
       if ( nomatmsm>0 ) then $
         CRDB_MTX MASM,,,,//'MASM' $
       else $
         CRDB_MTX MASMX,,,,//'MASMX' $
       endif $ nomatmsm>0 
        
      endif
     
    $ Output OTMs
    ALTER 'if (rotorflg>0) call rotout'(,-1)
     
      if ( extotm and extmedia='matrixop' ) then $
        
       CRDB_MTX VA,,,,//'VA' $
       CRDB_MTX MUG1,,,,//'MUG1' $
       CRDB_MTX MUG1O,,,,//'MUG1O' $
       CRDB_MTX MES1,,,,//'MES1' $
       CRDB_MTX MES1O,,,,//'MES1O' $
       CRDB_MTX MEF1,,,,//'MEF1' $
       CRDB_MTX MEF1O,,,,//'MEF1O' $
       CRDB_MTX MKQG1,,,,//'MKQG1' $
       CRDB_MTX MKQG1O,,,,//'MKQG1O' $
       CRDB_MTX MMQG1,,,,//'MMQG1' $
       CRDB_MTX MBQG1,,,,//'MBQG1' $
       CRDB_MTX MK4QG1,,,,//'MK4QG1' $
       CRDB_MTX MUG1B,,,,//'MUG1B' $
       CRDB_MTX MUG1OB,,,,//'MUG1OB' $
       CRDB_MTX MEE1,,,,//'MEE1' $
       CRDB_MTX MEE1O,,,,//'MEE1O' $
       CRDB_MTX MKQMG1,,,,//'MKQMG1' $
       CRDB_MTX MKQMG1O,,,,//'MKQMG1O' $
       CRDB_MTX MMQMG1,,,,//'MMQMG1' $
       CRDB_MTX MBQMG1,,,,//'MBQMG1' $
       CRDB_MTX MK4QMG1,,,,//'MK4QMG1' $
       
      endif
     
    ENDALTER
     
Children
No Data