$ run0a.v2004 mag date last revised: June 4, 2003 $ alter to store data needed for fast restart in large database $ user data blocks (zuzri) employed to avoid identifier problems $ designed for SOLs 103, 111, 112 Diag 8 $ put matrix trailer data in .f04 file compile phase1dr list $ alter 'call.*phase1b' $ type parm,,char8,y,fastprep='yes' $ set to no for production. Requests $ preparation run for fast restart, to be made from its database. type parm,,I,y,maxns0=36 $ cutoff for autoresvec. 6 gids worth. Type parm,,I,n,nzwdsvg,prec $ If (fastprep='yes') then $ vec uset0/vgs0c/'g'/'comp'/'s' $ vector of user-selected spcs, no autopsc paraml vgs0c//'trailer'/5/s,n,nzwdsvg $ paraml vgs0c//'trailer'/4/s,n,prec $ nzwdsvg = nzwdsvg/prec $ if (nzwdsvg>0 and nzwdsvg<=maxns0) then $ upartn uset,vgs0c/vss0c,,,/'g'/'s'//1 $ has 0.0 for autospc dofs message //'auto resvec performed for'/nzwdsvg/' variables' $ else $ message //'uim. The number of user-defined spc DOFs is'/nzwdsvg $ message //'this is larger than the limiting value of maxns0='/maxns0$ message //'the auto resvec size will not be set' $ message //'use spcd entries to specify these dofs, or use param, '/ 'maxns0 with a value larger than'/nzwdsvg $ endif $ nzwdsvg call dbstore vss0c,,,,//0/0/' '/0 $ endif $ fastprep compile genrlda list $ alter 'endif.*nullpg' $ type parm,,char8,y,fastprep='yes' $ set to no for production. Requests $ preparation run for fast restart, to be made from its database. type parm,,char8,y,autorv='yes' $ set to no for production type parm,,cs,n,cu=(1.,0.),cz $ for xadd5 if (fastprep='yes' and autorv='yes') then $ call dbfetch /vss0c,,,,/0/0/0/0/0 $ paraml vss0c//'presence'////s,n,novss0c $ endif $ alter 'if (nullys','' $ if (nullys><-1 or novss0c>-1) then $ if (novss0c>-1) then $ equivx vss0c/ysmax/always $ replace the values from $ an SPCD entry, if any else $ use the spcd values alter 'matmod.*/6' endif $ novss0c compile semodes list $ real modes, SOL 103 alter 'call.*ifpl' $ type parm,,char8,y,debug='no' $ print lots of intermediate data call xifpindx geom1,geom2,,,,,,,,//s,np $ index the geom files delete /geom1q,,,, $ copy geom1/geom1q $ if (debug='yes') then $ message //'stored geom1' $ matprn geom1// $ endif $ call dbstore geom1q,,,,//0/0/' '/0 $ paraml geom1//'presence'////s,n,nogeom1 $ if (nogeom1=-1) then $ message //'user fatal message. This alter requires scr=no'/ ' on the nastran command line' $ exit $ endif $ if (debug='yes') then $ message //'immediatedly after indexing' $ matprn geom1,geom2// $ endif $ $Alter 'call modefsrs','' $ fix the msf input. Temp. error in exp. system $ fixed about aug 13 $CALL MODEFSRS, $ MR ,USET ,DAR ,CASEM ,DYNAMICS, $ MAA ,MKAA ,GPLS ,SILS ,EED , $ EQEXINS ,VAFS ,PG ,GM ,GOT , $ KSF ,YS ,LLL ,KLL ,DRG , $ BGPDTS ,CSTMS ,VGQ ,GOQ , , $ BJJ ,RVG ,CEE ,MEE ,GGE , $ $ BEC ,MEC ,BSF ,mSF ,PMYG , $ $ PBYG ,PKYG ,PVT0 ,MGG ,VGFS / $ PHA ,LAMA ,PHFA ,LAMAF ,PHSA , $ LAMAS ,MECHG ,LAMMATS ,LAMMATF ,MIS , $ MIF ,MEH / $ APP /NORSET /NOASET /FS /NOFASET / $ NOSASET /METH /METHF /TRUE /NOQSET / $ 1 /0 /S,CARDNO $ alter 'call.*modefsrs' $ after modes delete /geom1q,,,, $ copy geom1/geom1qq $ geom1qq is dbfetched on next run call dbstore geom1qq,,,,//0/0/' '/0 $ paraml k4aa//'presence'////s,n,nok4aa $ IF ( NOK4aa>0 ) THEN $ PARAML K4aa//'TRAILER'/3/S,N,K4aaS $ SMPYAD PHsa,K4aa,PHsa,,,/Kx4HH/3////1 $ modal ge damping $ SET SYMMETRY OF K4HH TO K4DDX IN CASE SMPYAD $ PERFORMS TWO MPYADS MODTRL Kx4HH////K4aaS $ ENDIF $ NOK4aa>0 Call dbstore kx4hh,,,,//0/0/' '/0 $ done in gma in sols 111, 112 Alter 'call.*super3' $ call prpfst uset,ksf,,k4sf,kdsf,bsf,,msf,,phg, kss,,k4ss,kdss,bss,,mss,// $ review for need $ in sols 111,112 these come from gma, have x2pp added in $ sol 111, 112 removed for v2004 because ifpl not available from main $ subdmap compile phase0 list $ alter 'gp1.*gpl'(2,) $ call mload// $ load message parameters into database for fast restart type parm,,char8,y,debug='no' $ print lots of intermediate data type db,zuzr01 $ pass eqexin to fast restart run copy eqexin/zuzr01 $ used to partition shadow modes from all modes $ matpool used for api search for spcs alter 'ENDIF $ NOGO=-1' $ after gp4-bndspc paraml uset0//'uset'//////'s'/s,n,nosset $ if (nosset>-1) then $ vec uset0/vgcs/'g'//'s' $ 1.0 at s-set $ s is all the spcs from any source, before autospc matmod vgcs,eqexins,,,,/mplspc,/16/ $ call dbstore mplspc,,,,//0/0/' '/0 $ This file lists spc DOFs $ with their external sequence numbers, that is, gid-c. used for api $ call in patran to find DOFs eligible for enfmo. Endif $ Compile gma list $ this subdmap not in sol 103 Alter 'matredu.*m2dd' $ from m2pp dmig entries Type parm,,char8,n,debug='no' $ paraml m2dd//'presence'////s,n,nom2dd $ IF ( Nom2dd>-1 ) THEN $ PARAML m2dd//'TRAILER'/3/S,N,m2ddS $ SMPYAD PHsa,m2dd,PHsa,,,/mx2hh/3////1 $ MODTRL mx2hh////m2ddS $ ENDIF $ Nom2dd>0 Alter 'matredu.*k2xdd' $ paraml k2xdd//'presence'////s,n,nok2dd $ IF ( Nok2dd>-1 ) THEN $ PARAML k2xdd//'TRAILER'/3/S,N,k2ddS $ SMPYAD PHsa,k2xdd,PHsa,,,/kx2hh/3////1 $ MODTRL kx2hh////k2ddS $ ENDIF $ Nom2dd>0 Alter 'matredu.*b2xdd' $ paraml b2xdd//'presence'////s,n,nob2dd $ If (debug='yes') then $ message //'nob2dd,b2xdd,phsa'/nob2dd $ matprn b2xdd,phsa// $ endif $ IF ( Nob2dd>-1 ) THEN $ PARAML b2xdd//'TRAILER'/3/S,N,b2ddS $ SMPYAD PHsa,b2xdd,PHsa,,,/bx2hh/3////1 $ MODTRL bx2hh////b2ddS $ ENDIF $ Nom2dd>0 If (debug='yes') then $ Message //'b2dds,b2hh'/b2dds $ Matprn bx2hh $ endif $ paraml k4dd//'presence'////s,n,nok4dd IF ( Nok4dd>-1 ) THEN $ PARAML k4dd//'TRAILER'/3/S,N,k4ddS $ SMPYAD PHsa,k4dd,PHsa,,,/kx4hh/3////1 $ MODTRL kx4hh////k4ddS $ ENDIF $ Nok4dd>0 If (debug='yes') then $ Message //'k4dds,k4hh'/k4dds $ Matprn kx4hh $ endif $ Alter 'ENDIF $ NOB2PP>-1' $ Call dbstore mx2hh,bx2hh,kx2hh,kx4hh,lamas//0/0/' '/0 $ $ use mx-, bx- to be sure their names unique in gma compile fdrmgen list $ non-ddrmm may not be selected by user $ default value for param, ddrmm is ok alter 'DOSPCF = ( NOSSET','' $ dospcf = true $ force generation of xsf1 matrices $noys=1 $ generate xss1 noys removed on later v2004 systems $ fdrmgen makes ksf1, etc equal to ksh for ddrmm method alter 'cforce1.*mss1' $ call prpfst uset,ksf,k2sf,k4sf,kdsf,bsf,b2sf,msf,m2sf,rph, kss,k2ss,k4ss,kdss,bss,b2ss,mss,m2ss // $ compile super3 list $ alter 'file.*casedr' $ after last file command type parm,,char8,y,debug='no' $ print lots of intermediate data if (debug='yes') then $ message//'app/app1/soltyp' $ message//app/app1/soltyp $ endif $ type db zuzr03 $ for eigenvalue table copy lama/zuzr03 $ avoid qualifier issues paraml ug//'presence'////s,n,nophig $ g-size eigenvectors if (nophig=-1) dropt = 3 $ force generation of phig(ug) dropt=3 $ $ this branch does not appear to be necessary in v2004. mag alter ' EQUIVX OL1/OL1M' $ else for if mmreig $ if (soltyp='modal') then $ $ message //'ufm. Data base update cannot be done when ddrmm blocked.' $ $ message //'either remove param,ddrmm, -1 or run in sol 103' $ $ exit $ $ endif $ compile prpfst list $ subdmap prpfst uset,ksf,k2sf,k4sf,kdsf,bsf,b2sf,msf,m2sf,phigh, kss,k2ss,k4ss,kdss,bss,b2ss,mss,m2ss // $ $ prepare database for fast restart. Put datablocks on zuzr0i's for next run type parm,,char8,y,debug='no' $ type parm,,I,n,nzwds $ type parm,,cs,n,ci=(0.0,1.0),cu=(1.0,0.0),cz,ck4gg $ type db,zuzr02 $ pass phigt to fast restart run $ zuzr04-zuzr07 no longer used, replaced by dbstores of xsh components type db,zuzr07 $ p-s partitioning vector vGG11SS if (debug='yes') then $ message //'phigh in prpfst' $ matprn phigh// $ endif $ trnsp phigh/zuzr02 $ do transpose to use faster col partn $ rather than row partn in fast restart paraml uset//'uset'//////'s'/s,n,nosset $ vec uset/vGG11SS/'g'//'s' $ go back and do p-set later copy vGG11SS/zuzr07 $ used in fast restart to make shadow str. partitions upartn uset,phigh/phifh,,,/'g'/'f'//1 $ mpyad ksf,phifh,/kSSh $ mpyad k2sf,phifh,/k2SSh $ mpyad k4sf,phifh,/k4SSh $ mpyad kdsf,phifh,/kdSSh $ mpyad bsf,phifh,/bSSh $ mpyad b2sf,phifh,/b2SSh $ mpyad msf,phifh,/mSSh $ mpyad m2sf,phifh,/m2SSh $ call dbstore kSSh,k2SSh,k4SSH,kdSSh,//0/0/' '/0 $ call dbstore bSSh,b2SSh,mSSh,m2SSh,//0/0/' '/0 $ copy kss/kSSSS $ avoid storing equivd name copy k2ss/k2SSSS $ copy k4ss/k4SSSS $ copy kdss/kdSSSS $ copy bss/bSSSS $ copy b2ss/b2SSSS $ copy mss/mSSSS $ copy m2ss/m2SSSS $ call dbstore kSSSS,k2SSSS,k4SSSS,kdSSSS,//0/0/' '/0 $ call dbstore bSSSS,b2SSSS,mSSSS,m2SSSS,//0/0/' '/0 $ if (debug='yes') then $ message //' phigt(02)' $, modal ksh(04), bsh(05), msh(06) ' $ matprn zuzr02// $,zuzr04, zuzr05, zuzr06// $ message //'xsh matrices' $ matprn kSSh,bSSh,mSSh,k4SSh// $ message //'xss matrices' $ matprn kSSSS,bSSSS,mSSSS,k4SSSS// $ endif $ $ if you get here the database is ok for fast restart type parm,nddl,I,n,zuzri1,zuzr1 $ defines state of database type parm,nddl,char80,n,zuzrcl1 $ contains message on state zuzr1 = 1 $ qualifier for zuzri1,zuzrcl1 too zuzri1 = 1 $ pass on to fast restart if (debug='yes') dbdict param $ prints all stored values message //zuzrcl1 $ this call says large db ok to patran return $ end prpfst $ compile mload list $ subdmap mload // $ $ load user messages into the database $ type parm,nddl,char80,n,zuzrcl1 $ store messages in this type parm,nddl,I,n,zuzr1 $ qualifier for char8 above $ only 80 characters are allowed, so to conserve space I've used $ the following conventions: $ xxx4-80. The first three characters are for intgers, allowing 999 messages. $ The remaining fields may be used for anything, including following blanks. zuzr1 = 0 $ zuzrcl1 = '000 db state unknown. May not fast restart' $ $dbdict param $ use for debug only $ large db run did not reach end, did not set state parameter. There $ may be missing data blocks. $ info and warning messages zuzr1 = 1 $ zuzrcl1 = '001 Normal exit from modes run. OK for fast restart' $ $ the modes run is also the large db run $ the remaining values were planned for fstrst messages. Since we no longer $ plan to keep the fstrst nastran db, they are not needed at present. $ the next release of beta will have 80 character params. The messages will $ be extended then. $zuzr1 = 2 $ $zuzrch1 = '002 Only'$ disp-type output selected, no elements' $ $zuzr1 = 3 $ $zuzrch1 = '003' $ $zuzr1 = 4 $ $zuzrch1 = '004' $ $zuzr1 = 5 $ $zuzrch1 = '005' $ $zuzr1 = 6 $ $zuzrch1 = '006' $ $zuzr1 = 7 $ $zuzrch1 = '007' $ $zuzr1 = 8 $ $zuzrch1 = '008' $ $ fatal messages zuzr1 = -1 $ not used in fast restart at present zuzrcl1 = '-01 large db not ready for fast restarts' $ return $ end $ mload compile moders list $ need lammats for v2004 compile newlamax list $ alter 'matmod.*lammatx' $ call dbstore lammatx,,,,//0/0/' '/0 $ high precision version $compile resload list $ $ end alter package run0.v2001