$ $ 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. $ $ FOR V70.7 $ $ corrected error 39808 - error if MPCFORCE output requested - August, 2000 $ $ correction 1/4/00 - tlr changed tabdis to correct names $ $ $ FILE ALTER1G.v707 - DMAP TO CREATE CRAIG_BAMPTON MODELS AND OTM $ $ FOR V70.5 $ echooff $ alter1ga.v69 $ $ updated March, 1998 for V70.5 $ $ updated June, 1997 for V70 - remove residual vectors from alter - $ they are a standard feature in the code now... $ user interface - PARAM,RESVEC,YES $ $ matrices KLAA and MLAA no longer exist, so now only $ KAA and MAA may be obtained (NOTE that $ they contain the contributions from $ KLAA and MLAA) $ $ added PARAM,NOOTM - indicates if no OTM are requested $ -1 = creating OTM = default $ +1 = don't create OTM $ NOTE: If you use the OUPUT2 option and there are $ no output requests in this run, then $ this parameter MUST BE SET TO +1 - otherwise $ the run using alter2g will fail while reading $ the input matrices. (Currently there is no method $ to check ahead on an INPUTT2 file to see if matrices $ exist) $ also updated to write null matrices for PHIXT and PHIXQ if the $ U2 set does not exist - in this case, no interior loads may $ be applied to the superelements. If any are, they will not $ be reduced to the boundary points. NOTE: This is only for the $ special case where the user does not define a U2 set. $ $ modified modal damping - can only be used on superelements which $ do not have a C- or R-set (no SECSETi or SESUP in main bulk data, $ no CSETi or SUPORT in partitioned data) $ if run requests modal damping and an R_ or C- set exist, it will $ terminate the run $ $ $ updated Sep. 6, 1996 for version 69 $ $ updated March, 1995 to include requests for MPCFORCE output $ $ VERSION 4 - January, 1995 $ updated on Jan 19, 1995 - added option to use OUTPUT2 for the matrices and $ tables. This avoids the need for DMIG, which can result in large input $ files. This will write the information using the MATPOOL format, which is $ supported by OUTPUT2 neutral and can be transferred across computer types. $ alter2g.v68 is also updated to read these files. $ $ This is controlled by PARAM,MATFILE - default = -1 => DMIG $ any positive value = OUTPUT2 unit id $ It is recommended to use the ASSIGN statement to create the OUTPUT2 $ file. Here is a sample which creates unit 12, requiring MATFILE=12. $ $ ASSIGN OUTPUT2='SE1.OUT', unit=12, formatted, delete $ $ this will create a file named SE1.OUT, which will be used as unit 12 $ for OUTPUT2 formatted output - this file may be transferred to any $ computer MSC/NASTRAN V68 runs on. $ NOTE: if using the "formatted" option, the tables created by the $ DRMH1 module are not described in the NDDL and cannot be written. $ If the "unformatted" (default) format is used, the tables can be $ written. A parameter is provided to assist the alter in handling $ this. The parameter is NEUTRAL, with a default of -1. Format for $ this parameter is: $ $ PARAM,NEUTRAL,x - where x = -1 => unformatted (DRMH1 tables $ are written to OUTPUT file) $ $ x = 1 => formatted (DRMH1 tables $ are written to the punch $ file in DTI format) $ $ When writing the matrices and tables, this alter will write "dummy" $ matrices which identify what is next on the output2 file $ These dummy matrices are: $ $ OUTFLAG1 (value=1.0) => kaa (or kaan if adding matrices) in MATPOOL format $ OUTFLAG2 (value=2.0) => maa (or maan if adding matrices) in MATPOOL format $ OUTFLAG3 (value=3.0) => klaa in MATPOOL format ===> no longer exists $ OUTFLAG4 (value=4.0) => mlaa in MATPOOL format ===> no longer exists $ OUTFLAG5 (value=5.0) => baa in MATPOOL format $ OUTFLAG6 (value=6.0) => phixq in MATPOOL format $ OUTFLAG7 (value=7.0) => phixt in MATPOOL format $ OUTFLG75 (value=7.5) => k4aa in MATPOOL format $ OUTFLAG8 (value=8.0) => dis (output from DRMH1 or DRMS1) in MATPOOL format $ OUTFLG85 (value=8.5) => tabdis (output from DRMH1 or DRMS1) if NEUTRAL=-1 $ OUTFLAG9 (value=9.0) => spcf (output from DRMH1 or DRMS1) in MATPOOL format $ OUTFLG95 (value=9.5) => tabspcf (output from DRMH1 or DRMS1) if NEUTRAL=-1 $ OUTFLG10 (value=10.0) => stress (output from DRMH1 or DRMS1) in MATPOOL format $ OUTFL105 (value=10.5) => tabstr (output from DRMH1 or DRMS1) if NEUTRAL=-1 $ OUTFLG11 (value=11.0) => forc (output from DRMH1 or DRMS1) in MATPOOL format $ OUTFL115 (value=11.5) => tabfor (output from DRMH1 or DRMS1) if NEUTRAL=-1 $ OUTFLG12 (value=12.0) => mpcf (output from DRMH1 or DRMS1) in MATPOOL format $ OUTFL125 (value=12.5) => tabmpcf (output from DRMH1 or DRMS1) if NEUTRAL=-1 $ OUTFLG13 (value=13.0) => flag that OUTPUT2 file is complete (written several times) $ $ $ VERSION 3 - April, 1994 $ updated April, 1994 for V68 - added DRMH1 and DRMH3 modules $ These are prototype modules, which are not documented. $ they are enabled by setting PARAM,DRMH,1 $ If DRMH is set to 1, then the DRMH1 module will convert the $ OTM into tables and matrices. The tables may be written as $ DTI entries by using the MATMOD module (option 32). These $ DTI entries are read by the second run (cbar2g) and converted into $ tables for the DRMH3 module by MATMOD (option 32 again). These $ tables, when used by DRMH3 with the matrices from DRMH1 (punched $ as DMI in the first run and read into the second) result in $ the OTM results in standard MSC/NASTRAN output format with element $ labels, grid point labels, etc. As a new feature, the third alter $ (alter9g.v68) will allow output and xyplots as requested by case $ control of the information from the OTM. $ $ ALSO: $ modified to eliminate the requirement of a second subcase $ for the residual vectors. This now requires that a DTI $ table, resmeth, must be in the input file and also $ an EIGR (or EIGRL) set number 2000, which will be used $ to orthogonalize the residual vectors. $ $ if residual vectors are used, the following three entries MUST be $ in the input file which uses this alter: $ $ dti,resmeth,1,cr,1,dw,5,5,1,+resmeth $ +resmeth,200 $ eigr,200,agiv,,,,2000 $ $ $ Corrected problem with MPC processing for loading $ $ $ Modal damping - added check - if modal damping is specified and $ SECSET or SESUP entries are used, the alter will fail - a FATAL $ message has been added to the alter if your input has both. $ $ $ VERSION 2 - 6/25/1992 - added residual vectors and modal damping $ as options $ (Residual vectors as per 1991 WUC paper by $ Ted Rose, Modal damping based on 1992 WUC $ paper by Chris Flanigan, et al) $ $ $ CRAIG-BAMPTON MATRICES IN DMIG FORMAT $ $ OTM IN DMI FORMAT $ $ $ MODEL = CANTILEVER BEAM $ $ CREATE CMS (CRAIG-BAMPTON) MODEL OF S.E. AND WRITE MATRICES. $ MATRICES ARE BOUNDARY MASS AND STIFFNESS, PLUS SELECTED $ DISPLACEMENTS (USED TO GENERATE LOADING VECTORS), AND SELECTED $ DATA RECOVERY ITEMS FOR AN OTM, LTM, DTM, OR ATM MATRIX $ $ =============================NOTE================================ $ $ THE DMAP CREATES DMIG ENTRIES FOR PHIXQ AND PHIXT WHICH MAY BE $ INTERPRETED IMPROPERLY. THE PROGRAM WRITES THE DMIG AS TYPE '9' $ BUT DOES NOT FILL IN 'NCOL' ON THE HEADER ENTRY. IN ORDER TO $ PROPERLY USE THESE MATRICES 'NCOL' SHOULD BE ADDED BY THE USER $ $ ================================================================= $ $ CREATE DMIG MATRICES FOR USE IN NEXT RUN $ $ USER INPUT - $ $ 1) STANDARD INPUT FOR CMS $ $ 2) SET PARAM,FIXEDB,-1 $ $ 3) IN CASE CONTROL REQUEST OUTPUT QUANTITIES FOR OTM $ $ 4) SELECT U2 SET AND SPECIFY IN BULK DATA - SET OF DOF WHICH WILL BE USED $ IN PLOTING THE 'INTERIOR' AND FOR LOAD APPLICATION $ $ 5) CASE CONTROL COMMAND SDAMP IN SUPERELEMENT SUBCASE (IF MODAL DAMPING IS $ DESIRED FOR THE SUPERELEMENT - USE PARAM,SESDAMP - STARTING WITH V70.7 $ $ 6) TABDMP1 ENTRY FOR THE SUPERELEMENT MATCHING CASE CONTROL $ (ONCE AGAIN, IF DESIRED) $ $ 7) PARAMETERS USED IN THIS DMAP $ $ $ MAKEMAT = SEID TO CREATE MATRICES FOR $ DEFAULT = -1 (DON'T CREATE EXTERNAL MATRICES) $ $ SEPARATE= WILL CREATE SEPARATE KAA,KLAA,MAA,MLAA MATRICES TO =====> removed in V70 $ PROVIDE CLEAN RIGID-BODY CHECKS IN SUBSEQUENT RUNS =====> removed in V70 $ DEFAULT = -1 (SEPARATE MATRICES) =====> removed in V70 $ IF SET OTHER THAN -1, KAA=KAA+KLAA =====> removed in V70 $ AND MAA=MAA+MLAA WILL BE WRITTEN =====> removed in V70 $ $ MATFILE = FILE ID TO WRITE MATRICES IN $ USED ONLY IF MAKEMAT<>-1 $ DEFAULT = -1 (WRITE DMIG IN PUNCH FILE) $ IF > 0, THEN IT IS THE UNIT FOR OUTPUT2 $ $ RESFLEX = CREATE RESIDUAL VECTORS TO IMPROVE THE ACCURACY =====> removed in V70 $ OF THE DYNAMIC REDUCTION - SEE 1991 WUC PAPER =====> removed in V70 $ "USING RESIDUAL VECTORS IN MSC/NASTRAN DYNAMIC =====> removed in V70 $ ANALYSIS TO IMPROVE ACCURACY" BY TED ROSE =====> removed in V70 $ 0 = DEFAULT - DON'T USE RES VECTORS =====> removed in V70 $ -1 = CALC RES VECTORS - =====> removed in V70 $ DON'T ORTHOGONALIZE =====> removed in V70 $ -2 = CALC RES VECTORS - ORTHOGONALIZE =====> removed in V70 $ $ NOTE: IF RESLFEX IS USED, THEN STATIC LOADING(S) =====> removed in V70 $ MUST BE DEFINED FOR THE SUPERELEMENT USING =====> removed in V70 $ LOADSET-LSEQ AND A SECOND SUBCASE MUST =====> removed in V70 $ APPEAR FOR THE SUPERELEMENT(IF RESFLEX=-2). =====> removed in V70 $ THIS SECOND SUBCASE MUST REFERENCE AN EIGR =====> removed in V70 $ (OR EIGRL) WHICH WILL CALCULATE ALL MODES =====> removed in V70 $ OF THE REDUCED PROBLEM (THE ORIGINAL MODES + =====> removed in V70 $ THE RESIDUAL VECTORS - SEE PAPER) =====> removed in V70 $ $ ------------------------------------------------ compile ifps $alter 103 $alter 95 alter 'idtindx.*dtindx' dtiin dti,dtindx/resmeth,,,,,,,,,/s,n,resok $ type parm,,i,n,doit=0 $ call dbstore resmeth,,,,//0/0/'MASTER'/s,doit $ $ ------------------------------------------------ COMPILE SEMODES alter 1 $ allow alter to work if scratch database is used putsys(0,192) $ $ $ ------------------------------------------------ $ compile semg $alter 108 $alter 163 alter 'return'(,-1) type parm,,rs,y,g=0. if (nok4gg<=0 and g<>0.)then $ message //' ' $ message //'dmap alter information message' $ message //' ' $ message //'you have specified PARAM,G,'/g/' in your input, but'/ ' have not included structural damping on your' $ message //'material entries. In order to save disk space, the'/ ' program does not automatically generate the structural' $ message //'damping matrix in this case. The DMAP alter is overriding'/ ' this and creating a null structural damping matrix' $ message //' ' $ type parm,,cs,n,cmplxg=(0.,0.) cmplxg=cmplx(g,0.0) $ add kjj,/k4jj/cmplxg $ endif $ $ ------------------------------------------------ $ COMPILE PHASE1B ALTER 2 $ FLAG FOR CREATION OF EXTERNAL S.E. MATRICES $ IF MAKEMAT <0, DO NOTHING, IF NOT, CREATE MATRICES FOR S.E. MAKEMAT $ TYPE PARM,,I,Y,(MAKEMAT=-1) $ TYPE PARM,,I,Y,(MATFILE=-1) $ TYPE PARM,,I,Y,(SEPARATE=-1) $ TYPE PARM,,I,N,NEED,BEXISTS,NMODES $ type parm,,cs,n,mattype $ file outflag=ovrwrt $ matgen ,/ident1/1/1 $ $ $ Add modal damping if requested $ $ REMOVED FOR V70.7 - NOW A STANDARD FEATURE $ $ $ALTER 83 $ alter end of SELR - ENDIF $ SELR alter 'endif.*selr' TYPE DB ZUZR01,ZUZR02,ZUZR03,ZUZR04,ZUZR05 $ type parm,,char8,y,label='xxxxxxxx' $ TYPE PARM NDDL I N ZUZR1 $ $ IF (SEID = MAKEMAT) THEN $ ********** MESSAGE //'CREATING CRAIG-BAMPTON MATRICES FOR SUPERELEMENT'/SEID $ $ ZUZR1=SEID $ MATGEN EQEXINS/INTEXT1/9/0/LUSETS $ $ UMERGE1 USET,KAA,,,/KAAG/'G'/'A'/'O'/0 $ MPYAD INTEXT1,KAAG,/KAAGE/1 $ MPYAD KAAGE,INTEXT1,/KAAEXT $ MODTRL KAAEXT////6 $ $ UMERGE1 USET,MAA,,,/MAAG/'G'/'A'/'O'/0 $ MPYAD INTEXT1,MAAG,/MAAGE/1 $ MPYAD MAAGE,INTEXT1,/MAAEXT $ MODTRL MAAEXT////6 $ $ IF (MATFILE=-1)THEN $ PUNCH MATRICES MATMOD KAAEXT,EQEXINS,,,,/MPkaa,/16/1//////////KA $ MATMOD MAAEXT,EQEXINS,,,,/MPmaa,/16/1//////////MA $ ELSE $ $ don't punch DMIG, write MATPOOL to OUTPUT2 MATMOD KAAEXT,EQEXINS,,,,/MPkaa,/16/0//////////KA $ MATMOD MAAEXT,EQEXINS,,,,/MPmaa,/16/0//////////MA $ mattype = cmplx(1.,0.) $ add ident1,/outflag1/mattype $ output2 outflag1,,,,//-1/MATFILE/label//'matrix' $ OUTPUT2 mpkaa,,,,///MATFILE///'matrix' $ mattype = cmplx(2.,0.) $ add ident1,/outflag2/mattype $ output2 outflag2,,,,///MATFILE///'matrix' $ OUTPUT2 mpmaa,,,,///MATFILE///'matrix' $ ENDIF $ $ PARAML BAA//'PRESENCE'////S,N,BEXISTS $ IF (BEXISTS<>-1) THEN $ UMERGE1 USET,BAA,,,/BAAG/'G'/'A'/'O'/0 $ MPYAD INTEXT1,BAAG,/BAAGE/1 $ MPYAD BAAGE,INTEXT1,/BAAEXT $ MODTRL BAAEXT////6 $ $ IF (MATFILE=-1)THEN $ PUNCH MATRICES MATMOD BAAEXT,EQEXINS,,,,/MPbaa,/16/1//////////BA $ ELSE $ $ don't punch DMIG, write MATPOOL to OUTPUT2 MATMOD BAAEXT,EQEXINS,,,,/MPbaa,/16/0//////////BA $ mattype = cmplx(5.,0.) $ add ident1,/outflag5/mattype $ output2 outflag5,,,,///MATFILE///'matrix' $ OUTPUT2 mpbaa,,,,///MATFILE///'matpool'$ $ OUTPUT2 BAAEXT,,,,///MATFILE $ ENDIF $ endif $ bexists $ $ CREATE G-SIZE TRANSFORMATION MATRICES WITH TERMS FOR U2 SET ONLY $ THESE MATRICES WILL BE USED FOR PLOTTING AND LOAD APPLICATION $ $ $ addition August, 1996 - check for existance of U2 set $ PARAML USET//'USET'////S,N,NOUSETX//'A'/S,N,NOASET/ 'G'/S,N,NOGSET/ 'U2'/S,N,NOU2SET $ $message //'testing - nou2set = '/nou2set $: if(nou2set<1)then $ $ $ U2 set not defined - create null matrices $ message //'you have not defined a u2 set of dof for this'/ 'superelement - the program will write out null'/ 'transformation matrices' $ matgen ,/zuzr04/7/noGset/noaset/2 $ copy zuzr04/zuzr05/always $ endif $nou2set<1 $ if(nou2set>0)then $ if(nomset>-1)then $ $ vec uset/identt/'A'/'Q'/'T' $ PARAML USET//'USET'////S,N,NUSETX//'A'/S,N,NASET $ matgen ,/aone/1/naset $ partn aone,identt,/identq2,,identt2,/1 $ SDR1 USET,,identt2,,,GOA,GM,,KFS,KSS,/ gogt,,QGSTAT/1/'statics' $ SDR1 USET,,identq2,,,GOA,GM,,KFS,KSS,/ gogq,,QGDYN/1/APP1/NOQGOLD $ $ else $ UMERGE USET,GOQ,/GOGQ/'G'/'O'/'A' $ UMERGE USET,GOT,/GOGT/'G'/'O'/'A' $ endif $ UPARTN USET,GOGQ/GU2Q,,,/'G'/'U2'/'A'/1 $ UMERGE USET,GU2Q,/ZUZR04/'G'/'U2'/'A' $ UPARTN USET,GOGT/GU2T,,,/'G'/'U2'/'A'/1 $ UMERGE USET,GU2T,/ZUZR05/'G'/'U2'/'A' $ endif $ MPYAD INTEXT1,ZUZR04,/PHIXQ/1 $ $ umerge1 uset,,,phixqq,/phixq/'A'/'T'/'Q'/2 $ MPYAD INTEXT1,ZUZR05,/PHIXT/1 $ $ umerge1 uset,phixtt,,,/phixt/'A'/'T'/'Q'/2 $ $ dbstatus phixq//s,n,nophixq $ dbstatus phixt//s,n,nophixt $ IF (MATFILE=-1)THEN $ if(nophixq=1)then $ MATMOD PHIXQ,EQEXINS,,,,/MPphixq,/16/1//////////PQ $ endif $ if(nophixt=1)then $ MATMOD PHIXT,EQEXINS,,,,/MPphixt,/16/1//////////PT $ endif $ nophixt=1 ELSE $ $ don't punch DMIG, write MATPOOL to OUTPUT2 if(nophixq=1)then $ MATMOD PHIXQ,EQEXINS,,,,/MPphixq,/16/0//////////PQ $ mattype = cmplx(6.,0.) $ add ident1,/outflag6/mattype $ output2 outflag6,,,,///MATFILE///'matrix' $ OUTPUT2 mpphIXQ,,,,///MATFILE///'matpool' $ endif $ nophixq=1 if(nophixt=1)then $ MATMOD PHIXT,EQEXINS,,,,/MPphixt,/16/0//////////PT $ mattype = cmplx(7.,0.) $ add ident1,/outflag7/mattype $ output2 outflag7,,,,///MATFILE///'matrix' $ OUTPUT2 mpphIXt,,,,///MATFILE///'matpool' $ endif $ $ OUTPUT2 PHIXQ,PHIXT,,,///MATFILE///'matrix'/'matrix' $ ENDIF $ $ dbstatus k4aa//s,n,nok4aa $ if(nok4aa=1)then $ UMERGE1 USET,K4AA,,,/K4AAG/'G'/'A'/'O'/0 $ MPYAD INTEXT1,K4AAG,/K4AAGE/1 $ MPYAD K4AAGE,INTEXT1,/K4AAEXT $ MODTRL K4AAEXT////6 $ PARAML k4aaext//'PRESENCE'////S,N,k4EXISTS $ IF (k4EXISTS<>-1) THEN $ $ IF (MATFILE=-1)THEN $ MATMOD K4AAEXT,EQEXINS,,,,/MPk4an,/16/1//////////KA $ ELSE $ $ don't create DMIG in punch file, write MATPOOL using OUTPUT2 MATMOD K4AAEXT,EQEXINS,,,,/MPk4aa,/16/0//////////KA $ mattype = cmplx(7.5,0.) $ add ident1,/outflg75/mattype $ output2 outflg75,,,,///MATFILE///'matrix' $ output2 mpk4aa,,,,///MATFILE///'matpool' $ $ OUTPUT2 K4aaEXT,,,,///MATFILE///'matrix' $ ENDIF $ endif $ k4exixts endif $ nok4aa=1 $ type parm,,i,y,nootm=-1 $ if(nootm<>-1 and matfile<>-1)then $ mattype = cmplx(13.,0.) $ add ident1,/outflg13/mattype $ OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF endif $ nootm<>-1 $ ENDIF $ ********************* $ $ $ ------------------------------------------------ COMPILE SEDISP $ $ CREATE OTM $ ALTER 2 TYPE DB,ZUZR06,ZUZR07 $ $ TYPE DB,GOAQ,GOAT $ was needed in v66a and v66 TYPE PARM,NDDL,I,N,ZUZR1 $ $ FLAG FOR CREATION OF EXTERNAL S.E. MATRICES $ IF MAKEMAT <0, DO NOTHING, IF NOT, CREATE MATRICES FOR S.E. MAKEMAT $ TYPE PARM,,I,Y,(MAKEMAT=-1) TYPE PARM,,I,Y,(MATFILE=-1) $ $ file zuzr07=ovrwrt $ $alter 190 $ before actual SDR1 $alter 210 $ before actual SDR1 alter 'endif.*app1.*mmreig' $ $ $ ALTER TO CREATE LTM, ATM, AND/OR DTM $ IF (SEID = MAKEMAT) THEN $ ******************* $ MESSAGE //'CREATING OTM REQUESTED IN CASE CONTROL FOR SE '/SEID $ $ $ CALCULATE AND STORE OUTPUT QUANTITIES FOR S.E. FOR UNIT BOUNDARY DISP $ $ ADD GOAT,GOAQ/GOA $ ZUZR1 = SEID $ if (newspcf or noqmg>-1) then $ need to use separate data recovery $ PARAML USET//'USET'////S,N,NUSETX//'A'/S,N,NASET/ 'Q'/S,N,NQSET/ 'T'/S,N,NTSET $ vec uset/identt/'A'/'Q'/'T' $ PARAML USET//'USET'////S,N,NUSETX//'A'/S,N,NASET $ matgen ,/aone/1/naset $ partn aone,identt,/identq2,,identt2,/1 $ dbstatus goa//s,n,needgoa $ if(needgoa<>1)CALL SEGOA USET,GOT,GOQ/GOA/NOOSET/NOQSET/NOTSET $ SDR1 USET,,identt2,,,GOA,GM,PS1,KFS,KSS,/ UGSTAT,,QGSTAT/1/'statics' $ SDR1 USET,,identq2,,,GOA,GM,PS1,KFS,KSS,/ UGDYN,,QGDYN/1/APP1/NOQGOLD $ Umerge1 uset,ugstat,,ugdyn,/zuzr06/'A'/'T'/'Q'/2 $ else $ (newspcf or noqmg>-1) $ PARAML GOA//'TRAILER'/1/S,N,NGOA $ NUMBER OF DOF IN GOA dbstatus goa//s,n,needgoa $ if(needgoa<>1)CALL SEGOA USET,GOT,GOQ/GOA/NOOSET/NOQSET/NOTSET $ paraml goa//'trailer'/1/s,n,ngoa $ MATGEN ,/UNITDISP/1/NGOA $ UNIT BOUNDARY DISP SDR1 USET,,UNITDISP,,,GOA,GM,PS1,KFS,KSS,/ZUZR06,,ZUZR07/1/APP1 $ endif $ (newspcf or noqmg>-1) ENDIF $ (SEID = MAKEMAT) ******************** $ $ correction for error 39808 - August, 2000 $ $alter 'call.*cforce.*uh1'(,-1) $if(seid<>makemat)then $$ $ $alter 248 $ after call cforce $alter 267 $ after call cforce $alter 268 $ alter 'call.*cforce.*uh1' $ $ dynamic spcforces $ $alter 274 alter 'endif.*noqg.*and.*nosset.*dynspcf.*old'(,-1) IF (SEID = MAKEMAT) THEN $ ******************* delete /qgdyn,,,, $ CALL CFORCE USET,,UF,UH1,MSF,M2SF,BSF,B2SF,KSF,K4SF,K2SF, PSX,OLX/ QGDYN/ APP/APP1/GW3/RW4/C1G/FALSE/SEID $ append qgstat,qgdyn/zuzr07/1 $ endif $ $ $alter 250 $ after call cforce - MPC $alter 274 $ after call cforce - MPC $alter 276 $ $ $alter 'call.*cforce.*gm.*uh1' $ $ mpc forces $alter 247 $alter 281 alter 'endif.*noqmg.*and.*not.*nonlnr' $ IF (SEID = MAKEMAT) THEN $ ******************* IF ( NOQMG>-1 AND NOT(NONLNR0) AND NOMSET>-1 )then $ CALL CFORCE, USET,GM,UGSTAT,UH1,MMG,M2MG,BMG,B2MG,KMG,K4MG,K2MG, PM,OLX/ QMGSTAT/ 'statics'/'statics'/GW3/RW4/C1G/TRUE/SEID $ $ $ remove unused columns from UGDYN before calling CFORCE $ LAMX ,,OLX/OMEGAT/-1 $ paraml omegat//'TRAILER'/2/s,n,nomodes $ paraml ugdyn//'TRAILER'/1/s,n,nocoldyn $ type parm,,i,n,nulcol=-1 $ nulcol = nocoldyn-nomodes $ if(nulcol>0)then $ matgen ,/part0/6/nocoldyn/nomodes/nulcol $ partn ugdyn,part0,/ugdynok,,ugnull,/1 $ else $ equivx ugdyn/ugdynok/always $ endif $ CALL CFORCE, USET,GM,UGDYNOK,UH1,MMG,M2MG,BMG,B2MG,KMG,K4MG,K2MG, PM,OLX/ QMGDYNOK/ app/app1/GW3/RW4/C1G/TRUE/SEID $ $ 'reig '/'reig '/GW3/RW4/C1G/TRUE/SEID $ if(nulcol>0)then $ merge qmgdynok,,,,part0,/qmgdyn/1 $ else $ equivx qmgdynok/qmgdyn/always $ endif $ Umerge1 uset,qmgstat,,qmgdyn,/qmgtot/'A'/'T'/'Q'/2 $ type parm,,i,n,doit=0 call dbstore qmgtot,,,,//seid/0/'DBALL'/s,doit $ endif $ endif $ $ $ $ ------------------------------------------------ COMPILE SEDRCVR $ $ALTER 2 ALTER 3 TYPE DB,BGPDP,ZUZR06,ZUZR07 $ TYPE PARM,NDDL,I,N,ZUZR1 $ type parm,,i,y,drmh=-1 $ $ FLAG FOR CREATION OF EXTERNAL S.E. MATRICES $ IF MAKEMAT <0, DO NOTHING, IF NOT, CREATE MATRICES FOR S.E. MAKEMAT $ TYPE PARM,,I,Y,(MAKEMAT=-1) TYPE PARM,,I,Y,(MATFILE=-1) $ type parm,,cs,n,mattype $ file outflag=ovrwrt $ type parm,,i,y,neutral=-1 matgen ,/ident1/1/1 $ $ $ALTER 41 $ after endif after VECPLOT $ALTER 27 $ after endif after VECPLOT alter 'endif.*app.*statics' $ $ IF (SEID = MAKEMAT) THEN $ **************************** ZUZR1 = SEID $ $ SDR2 CASEDR,CSTMS,MPTS,DIT,EQEXINS,,ETT,OL2,BGPDTS,, ZUZR07,ZUZR06,EST,XYCDBDR,,,/ IOPG1,IOQG1,IOUGV1,IOES1,IOEF1, IPUGV/APP1/S,N,NOSORT2/NOCOMPS $ $ $ MPC forces $ type parm,,i,n,gotit=0 call dbfetch /qmgtot,,,,/SEID/0/0/0/S,gotit if (gotit<>0)then $ SDR2 CASEDR,CSTMS,MPTS,DIT,EQEXINS,,ETT,OL2,BGPDP, PJ1,QMGtot,zuzr06,EST ,,OINT,PELSETS,VIEWTB/ ,IQMG1,,ISTR1,,/ APP1/S,N,NOSTR2/3/////ACOUT/PREFDB/// ADPTINDX/ADPTEXIT/FALSE $ endif $ $ CREATE OTM $ if (drmh>0) then $ DRMH1 IOUGV1,IOQG1,IOES1,IOEF1/TABDIS,DIS,TABSPCF, SPCF,TABSTR,STRESS,TABFOR,FORC/LMODES/1/7/3/1005/1004 $ $ MPC forces (?) DRMH1 ,,IQMG1,,/,,TABMPCF, MPCF,,,,/LMODES/1/7/3/1005/1004 $ MATMOD TABMPCF,,,,,/,/32/0 $ $ end MPC forces if(matfile>0 and neutral=-1)then $ write output2 message //' ' $ message //'tables from DRMH1 module are to be written to OUTPUT2 file' $ message //' ' $ else $ message //' ' $ message //'tables from DRMH1 module will be in the punch file' $ message //' ' $ MATMOD TABDIS,,,,,/,/32/0 $ MATMOD TABSPCF,,,,,/,/32/0 $ MATMOD TABSTR,,,,,/,/32/0 $ MATMOD TABFOR,,,,,/,/32/0 $ endif $ $ else $ DRMS1 IOUGV1,IOQG1,IOES1,IOEF1/TABDIS,DIS,TABSPCF,SPCF,TABSTR, STRESS,TABFOR,FORC/LMODES $ endif $ ofp IOUGV1,IOQG1,IOES1,IOEF1// $ ofp iqmg1// $ $ OFP IOPG1,OQG1,IOUGV1,IOES1,IOEF1,IPUGV//S,N,CARDNO $ $ TABPT TABDIS,TABSPCF,TABSTR,TABFOR// $ IF (MATFILE=-1) THEN $ PUNCH OTM MATPCH DIS// $ MATPCH SPCF// $ MATPCH STRESS// $ MATPCH FORC// $ MATPCH mpcf// $ ELSE $ WRITE OTM TO FILE paraml dis//'presence'////s,n,isdis $ if (isdis<>-1) then $ mattype = cmplx(8.,0.) $ add ident1,/outflag8/mattype $ output2 outflag8,,,,///MATFILE///'matrix' $ OUTPUT2 DIS,,,,///MATFILE///'matrix' $ if(neutral=-1)then $ mattype = cmplx(8.5,0.) $ add ident1,/outfl85/mattype $ output2 outfl85,,,,///MATFILE $ output2 tabdis,,,,///MATFILE $ endif $ endif $ paraml spcf//'presence'////s,n,isspcf $ if (isspcf<>-1) then $ mattype = cmplx(9.,0.) $ add ident1,/outflag9/mattype $ output2 outflag9,,,,///MATFILE///'matrix' $ OUTPUT2 SPCF,,,,///MATFILE///'matrix' $ if(neutral=-1)then $ mattype = cmplx(9.5,0.) $ add ident1,/outfl95/mattype $ output2 outfl95,,,,///MATFILE $ output2 tabspcf,,,,///MATFILE $ endif $ endif $ paraml stress//'presence'////s,n,isstress $ if (isstress<>-1) then $ mattype = cmplx(10.,0.) $ add ident1,/outflg10/mattype $ output2 outflg10,,,,///MATFILE///'matrix' $ OUTPUT2 STRESS,,,,///MATFILE///'matrix' $ if(neutral=-1)then $ mattype = cmplx(10.5,0.) $ add ident1,/outfl105/mattype $ output2 outfl105,,,,///MATFILE $ output2 tabstr,,,,///MATFILE $ endif $ endif $ paraml forc//'presence'////s,n,isforc $ if (isforc<>-1) then $ mattype = cmplx(11.,0.) $ add ident1,/outflg11/mattype $ output2 outflg11,,,,///MATFILE///'matrix' $ OUTPUT2 FORC,,,,///MATFILE///'matrix' $ if(neutral=-1)then $ mattype = cmplx(11.5,0.) $ add ident1,/outfl115/mattype $ output2 outfl115,,,,///MATFILE $ output2 tabfor,,,,///MATFILE $ endif $ endif $ paraml mpcf//'presence'////s,n,ismpcf $ if (ismpcf<>-1) then $ mattype = cmplx(12.,0.) $ add ident1,/outflg12/mattype $ output2 outflg12,,,,///MATFILE///'matrix' $ OUTPUT2 mpcf,,,,///MATFILE///'matrix' $ if(neutral=-1)then $ mattype = cmplx(12.5,0.) $ add ident1,/outfl125/mattype $ output2 outfl125,,,,///MATFILE $ output2 tabmpcf,,,,///MATFILE $ endif $ endif $ mattype = cmplx(13.,0.) $ add ident1,/outflg13/mattype $ OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF OUTPUT2 outflg13,,,,///MATFILE///'matrix' $ WRITE EOF OUTPUT2 ,,,,//-9/MATFILE $ WRITE EOF ENDIF $ MESSAGE //'finished with generating reduced model for superelement'/ seid $ $ EXIT $ $ ENDIF $ *************************** $ $ END OF ALTER1G $ echoon