$ $ THIS ALTER IS CONFIDENTIAL AND A TRADE SECRET OF THE $ MSC.Software CORP. THE RECEIPT OR POSSESSION OF $ THIS ALTER DOES NOT CONVEY ANY RIGHTS TO REPRODUCE OR $ DISCLOSE ITS CONTENTS, OR TO MANUFACTURE, USE, OR SELL $ ANYTHING HEREIN, IN WHOLE OR IN PART, WITHOUT THE $ SPECIFIC WRITTEN CONSENT OF THE MSC.Software CORPORATION. $ echooff $ $ $ $-------+-------+-------+-------+-------+-------+-------+-------+-------+ $ + $ Alter SPC101A.V68 - ALTER to display separate SPCFORCE output + $ for modelled-in SPC (those on GRID/PS and SPC + $ sets) and AUTOSPC reactions. + $ + $ SOL: 101 (only) + $ + $ Description: + $ This alter organizes the calculated SPCForces by the type of + $ constraint placed upon a DOF; e.g. was it a user-induced constraint + $ such as the PS field on the GRID or an SPC card, or was it a DOF + $ constrained by the AUTOSPC function. User has further option of + $ breaking the user-induced constraints into those DOF constrained by + $ the GRID PS field and those on an SPC set. Answers may be + $ independently filtered to remove smaller SPCForces from the + $ printouts. Resultant vectors for SPCForce contributions are also + $ calculated. + $ + $ User Interface: + $ 1) Include this alter in sol 101 + $ 2) Ask for SPCFORCEs in the case control + $ 3) Bulk Data PARAMS: (optional) + $ -SPCLEVEL: Default = 0 (integer). Default will separate + $ SPCForce output into AUTOSPC'd DOFs and modelled-in + $ (GRID/PS plus SPC set) DOFs. Setting SPCLEVEL + $ to 1 will divide SPCForce output into three + $ separate groups: AUTOSPC, GRID/PS, and SPC sets. + $ -TINYAUTO: Default = 0.0. Acts as a filter on printed + $ SPCForces for those DOF constrained by AUTOSPC. + $ Any SPCForce smaller in magnitude than TINYAUTO + $ will NOT be printed. + $ -TINYSPC: Default = 0.0. Acts as a filter on printed + $ SPCForces for those DOF constrained by either + $ GRID/PS or SPC set cards. Any SPCForce smaller + $ than TINYSPC will NOT be printed. + $ -GRDPNT: Default = 0 (integer). Allows user to have + $ SPCForce Resultants summed about this grid point in + $ a coordinate system parallel to the BASIC system. + $ + $-------+-------+-------+-------+-------+-------+-------+-------+-------+ $ $ COMPILE SEDRCVR $ $ alter 1 $ type parm,,i,y,usrcoord $ $ $ Replace with alter in SEDRCVR just after printed output $ALTER 221 $ alter 'ofp.*oqmg1,ogds1,oeds1,oug1f' $ $ IF (APP1 = 'STATICS') THEN $ THE FOLLOWING APPLIES ONLY TO STATICS RUNS $ $ Matrix QG is G-rows by #Loads-cols of SPC (all types) Reaction Forces. $ $ Partition out & re-expand back to G-set sized those SPCForces that are: $ 1) Called out on SPC set (prior to AUTOSPC) via uset0 table from $ GP4, otherwise known as the SB set $ 2) Called out via the PS field (Field 8) on GRID/GRDSET cards, $ otherwise known as the SG set $ TYPE DB, USET0,PVTS $ Retrieve from database TYPE,PARM,NDDL,I,N,SPC $ Get SPC set ID TYPE,PARM,,RS,Y,TINYAUTO=0. $ Declare, set default on user PARAMs TYPE,PARM,,RS,Y,TINYSPC =0. $ TYPE,PARM,, I,Y,SPCLEVEL=0 $ PVT PVTS,/ $ Update PARAMs $ $ Act based on value of user input PARAM SPCLEVEL. At the default $ value of 0, just separate SPCFORCEs into AUTOSPC-type SPCFORCEs $ and ALL user input (GRID/PS and SPC set) SPCFORCES $ IF (SPCLEVEL = 0) THEN $ Split into AUTOSPC/PS+SPC UPARTN USET0,QG /QSPSNSPC,,,/'G'/'S'/'M'/1 $ PS+SPC, pre-AUTOSPC UMERGE USET0,QSPSNSPC,/QGPSNSPC /'G'/'S'/'M' $ Re-Expand to G-size ADD5 QG,QGPSNSPC,,,/QGAUTSPC/+1./-1. $ Auto=All-(PS+SPC) $ ELSE $ If SPCLEVEL <> 0 then do the following: $ UPARTN USET0,QG /QSPS,,, /'G'/'SG'/'M'/1 $ PS, pre-AUTOSPC UMERGE USET0,QSPS ,/QGPS /'G'/'SG'/'M' $ UPARTN USET0,QG /QSSPC,,,/'G'/'SB'/'M'/1 $ SPC, pre-AUTOSPC UMERGE USET0,QSSPC ,/QGSPC /'G'/'SB'/'M' $ ADD5 QG,QGPS,QGSPC,,/QGAUTSPC/+1./-1./-1. $ Auto=All-PS-SPC $ ENDIF $ Ends processing on SPCLEVEL $ PARAML QGAUTSPC//'PRESENCE'////S,N,ISAUTSPC $ Check for existence of: PARAML QGPSNSPC//'PRESENCE'////S,N,ISPSNSPC $ PARAML QGPS //'PRESENCE'////S,N,ISPS $ PARAML QGSPC //'PRESENCE'////S,N,ISSPC $ $ IF(ISAUTSPC = 0) THEN VECPLOT QGAUTSPC,BGPDTS,EQEXINS,CSTMS,CASEDR,,,/XGAUTSPC/ GRDPNT/0/1/'AUTOSPC' $ MESSAGE //' ' $ MESSAGE //' THE ABOVE RESULTANT TABLE IS FOR ALL DOFS '/ 'CONSTRAINED BY THE AUTOSPC FEATURE.' $ MESSAGE //' RESULTANT VECTORS ARE PARALLEL TO BASIC SYSTEM,'/ ' SUMMED ABOUT GRID POINT:'/GRDPNT MESSAGE //' ' $ IF(TINYAUTO > 0.) THEN MATMOD QGAUTSPC,,,,,/QFAUTSPC,/2////TINYAUTO $ Filter out terms ELSE $ Dont bother with matmod operation if filter term is zero EQUIVX QGAUTSPC/QFAUTSPC/ALWAYS $ ENDIF MESSAGE //' THE FOLLOWING OUTPUT TABLE, LABELLED "FORCES OF'/ ' SINGLE-POINT CONSTRAINT", CONTAIN REACTION FORCES' MESSAGE //' FOR THOSE DOF CONSTRAINED BY THE AUTOSPC FEATURE '/ 'WITH SPCFORCE TERMS GREATER THAN: '/TINYAUTO MESSAGE //' ' SDR2 CASEDR,CSTMS,MPTS,DIT,EQEXINS,,ETT,OL1,BGPDTS,,QFAUTSPC, UG,EST,XYCDB,,,,/,OQAUTSPC,,,,/'STATICS' $ OFP OQAUTSPC//S,N,CARDNO $ Printout... $ ENDIF $ IF(ISPSNSPC = 0) THEN VECPLOT QGPSNSPC,BGPDTS,EQEXINS,CSTMS,CASEDR,,,/XGPSNSPC/ GRDPNT/USRCOORD/1/'PS + SPC' $ MESSAGE //' ' $ MESSAGE //' THE ABOVE RESULTANT TABLE IS FOR ALL DOFS '/ 'CONSTRAINED BY THE PS FIELD ON THE GRID' $ MESSAGE //' CARDS AND ON SPC SETS CALLED OUT IN THE CASE CONTOL' MESSAGE //' RESULTANT VECTORS ARE PARALLEL TO BASIC SYSTEM,'/ ' SUMMED ABOUT GRID POINT:'/GRDPNT MESSAGE //' ' IF(TINYSPC > 0.) THEN MATMOD QGPSNSPC,,,,,/QFPSNSPC,/2////TINYSPC $ Filter out terms ELSE $ Dont bother with matmod operation if filter term is zero EQUIVX QGPSNSPC/QFPSNSPC/ALWAYS $ ENDIF MESSAGE //' THE FOLLOWING OUTPUT TABLE, LABELLED "FORCES OF'/ ' SINGLE-POINT CONSTRAINT", CONTAIN REACTION FORCES' $ MESSAGE //' FOR THOSE DOF CONSTRAINED BY GRID PS ENTRIES AND '/ 'SPC SETS CALLED OUT IN THE CASE CONTROL,' MESSAGE //' WITH TERMS GREATER THAN '/TINYSPC $ SDR2 CASEDR,CSTMS,MPTS,DIT,EQEXINS,,ETT,OL1,BGPDTS,,QFPSNSPC, UG,EST,XYCDB,,,,/,OQPSNSPC,,,,/'STATICS' $ OFP OQPSNSPC//S,N,CARDNO $ $ ELSE $ Do below iff PS and SPCs broken out separately $ IF(ISPS = 0) THEN VECPLOT QGPS ,BGPDTS,EQEXINS,CSTMS,CASEDR,,,/XGPS/ GRDPNT/USRCOORD/1/'GRID PS ' $ MESSAGE //' ' $ MESSAGE //' THE ABOVE RESULTANT TABLE IS FOR ALL DOFS'/ ' CONSTRAINED BY THE PS FIELD ON THE GRID CARDS' MESSAGE //' RESULTANT VECTORS ARE PARALLEL TO BASIC SYSTEM,'/ ' SUMMED ABOUT GRID POINT:'/GRDPNT MESSAGE //' ' IF(TINYSPC > 0.) THEN MATMOD QGPS ,,,,,/QFPS ,/2////TINYSPC $ Filter out terms ELSE $ Dont bother with matmod operation if filter term is zero EQUIVX QGPS /QFPS /ALWAYS $ ENDIF MESSAGE //' THE FOLLOWING OUTPUT TABLE, LABELLED "FORCES OF'/ ' SINGLE-POINT CONSTRAINT", CONTAIN REACTION'/ ' FORCES FOR THOSE DOF' $ MESSAGE //' CONSTRAINED BY THE PS FIELD ON THE GRID CARDS, '/ 'WITH TERMS GREATER THAN:'/TINYSPC $ SDR2 CASEDR,CSTMS,MPTS,DIT,EQEXINS,,ETT,OL1,BGPDTS,,QFPS, UG,EST,XYCDB,,,,/,OQPS ,,,,/'STATICS' $ OFP OQPS //S,N,CARDNO $ $ ENDIF IF(ISSPC = 0) THEN VECPLOT QGSPC ,BGPDTS,EQEXINS,CSTMS,CASEDR,,,/XGSPC/ GRDPNT/USRCOORD/1/'SPC SET ' $ MESSAGE //' ' $ MESSAGE //' THE ABOVE RESULTANT TABLE IS FOR ALL DOFS '/ ' CONSTRAINED BY SPC SETS CALLED OUT IN THE CASE' MESSAGE //' CONTROL. RESULTANT VECTORS ARE PARALLEL TO BASIC'/ ' SYSTEM, SUMMED ABOUT GRID POINT:'/GRDPNT MESSAGE //' ' IF(TINYSPC > 0.) THEN MATMOD QGSPC ,,,,,/QFSPC ,/2////TINYSPC $ Filter out terms ELSE $ Dont bother with matmod operation if filter term is zero EQUIVX QGSPC /QFSPC /ALWAYS $ ENDIF MESSAGE //' THE FOLLOWING OUTPUT TABLE, LABELLED "FORCES OF'/ ' SINGLE-POINT CONSTRAINT", CONTAIN REACTION '/ ' FORCES FOR THOSE DOF' $ MESSAGE //' CONSTRAINED BY SPC SETS CALLED OUT IN '/ 'THE CASE CONTROL, WITH TERMS GREATER THAN:'/TINYSPC SDR2 CASEDR,CSTMS,MPTS,DIT,EQEXINS,,ETT,OL1,BGPDTS,,QFSPC, UG,EST,XYCDB,,,,/,OQSPC ,,,,/'STATICS' $ OFP OQSPC //S,N,CARDNO $ $ ENDIF $ ENDIF $ Above executed iff PS and SPC sets broken out separately $ ENDIF $ Above executed iff APP1 = 'STATICS' $ $-------+-------+-------+-------+-------+-------+-------+-------+-------+ $============================================ End of SPC4C101.V675 =====+ $-------+-------+-------+-------+-------+-------+-------+-------+-------+ echoon $