File: COSDFVA

package info (click to toggle)
nastran 0.1.95-2
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm, bullseye
  • size: 122,540 kB
  • sloc: fortran: 284,409; sh: 771; makefile: 324
file content (310 lines) | stat: -rw-r--r-- 14,142 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
$ COSMIC ALTERS FOR DIRECT FORCED VIBRATION ANALYSIS (COSDFVA)        
$ ALTER    3 $        
INSERT FILE $
FILE     UXVF=APPEND/PDT=APPEND/PD=APPEND $        
$ PERFORM INITIAL ERROR CHECKS ON NSEGS AND KMAX.        
COND     ERRORC1,NSEGS $  IF USER HAS NOT SPECIFIED NSEGS.        
COND     ERRORC1,KMAX  $  IF USER HAS NOT SPECIFIED KMAX.        
PARAM    //*EQ*/CYCIOERR /V,Y,CYCIO=0 /0 $        
COND     ERRORC1,CYCIOERR  $  IF USER HAS NOT SPECIFIED CYCIO.        
PARAM    //*DIV*/NSEG2 /V,Y,NSEGS /2 $  NSEG2 = NSEGS/2        
PARAM    //*SUB*/KMAXERR /NSEG2 /V,Y,KMAX $        
COND     ERRORC1,KMAXERR $  IF KMAX .GT. NSEGS/2        
$ SET DEFAULTS FOR PARAMETERS.        
PARAM    //*NOP*/V,Y,NOKPRT=+1 /V,Y,LGKAD=-1 $        
$ CALCULATE OMEGA, 2*OMEGA AND OMEGA**2 FROM RPS. SET DEFAULT RPS.      
PARAMR   //*MPY*/OMEGA /V,Y,RPS=0.0 /6.283185 $        
PARAMR   //*MPY*/OMEGA2 /2.0 /OMEGA $        
PARAMR   //*MPY*/OMEGASQR /OMEGA /OMEGA $        
$ GENERATE NORPS FLAG IF RPS IS ZERO.        
PARAMR   //*EQ*//V,Y,RPS /0.0 ////NORPS $        
$ MAKE SURE COUPLED MASSES HAVE NOT BEEN REQUESTED.        
PARAM    //*NOT*/NOLUMP /V,Y,COUPMASS=-1 $        
COND     ERRORC2,NOLUMP $        
$ ALTER    21,21 $  ADD SLT TO OUTPUT FOR TRLG.        
DELETE GP3 $
GP3      GEOM3,EQEXIN,GEOM2 / SLT,GPTT / NOGRAV $        
$ ALTER    24 $        
INSERT TA1,2 $
$ SINCE MULTIPLE CONSTRAINTS ARE NOT ALLOWED EXECUTE GP4 NOW SO THAT    
$ MORE ERROR CHECKS CAN BE MADE BEFORE ELEMENT GENERATION.        
$ ADD YS NEEDED FOR PSF RECOVERY IN SSG2.        
PARAM    //*MPY*/NSKIP /0/0 $        
GP4      CASECC,GEOM4,EQEXIN,GPDT,BGPDT,CSTM,/RG,YS,USET,ASET,/LUSET/
         S,N,MPCF1/S,N,MPCF2/S,N,SINGLE/S,N,OMIT/S,N,REACT/S,N,NSKIP/
         S,N,REPEAT/S,N,NOSET/S,N,NOL/S,N,NOA/C,Y,ASETOUT/C,Y,AUTOSPC $        
PURGE    GM,GMD/MPCF1/GO,GOD/OMIT/KFS,PSF,QPC/SINGLE $        
$ SUPORT BULK DATA IS NOT ALLOWED.        
PARAM    //*NOT*/REACDATA /REACT $        
COND     ERRORC3,REACDATA $        
$ EXECUTE DPD NOW SO CHECKS CAN BE MADE. ADD TRL TO OUTPUT DATA BLOCKS. 
DPD      DYNAMICS,GPL,SIL,USET / GPLD,SILD,USETD,TFPOOL,DLT,PSDL,FRL,,  
         TRL,,EQDYN / LUSET/S,N,LUSETD/NOTFL/S,N,NODLT/S,N,NOPSDL/
         S,N,NOFRL/NONLFT/S,N,NOTRL/NOEED//S,N,NOUE $        
$ MUST HAVE EITHER FREQ OR TSTEP BULK DATA.        
PARAM    //*AND*/FTERR /NOFRL /NOTRL $        
COND     ERRORC5,FTERR $  NO FREQ OR TSTEP BULK DATA.        
$ ONLY FREQUENCY OR TSTEP IS ALLOWED IN THE CASE CONTROL        
PARAML   CASECC //*TABLE1*/1/14//FREQSET $        
PARAML   CASECC //*TABLE1*/1/38//TIMESET $        
PARAM    //*MPY*/FREQTIME /FREQSET /TIMESET $        
PARAM    //*NOT*/FTERR1 /FREQTIME $        
PARAM    //*LE*/NOFREQ /FREQSET /0 $        
PARAM    //*LE*/NOTIME /TIMESET /0 $        
COND     ERRORC6,FTERR1 $  BOTH FREQ AND TSTEP IN CASE CONTROL DECK.    
$ EPOINT BULK DATA NOT ALLOWED        
PARAM    //*NOT*/EXTRAPTS /NOUE $        
COND     ERRORC4,EXTRAPTS $        
$ GENERATE DATA FOR CYCT2 MODULE.        
GPCYC    GEOM4,EQDYN,USETD /CYCDD /CTYPE=ROT /S,N,NOGO $        
COND     ERRORC1,NOGO $        
$ ALTER    34 $        
INSERT EMA,1 $
$ PRE-PURGE DATA BLOCKS THAT WILL NOT BE GENERATED        
PARAM    //*OR*/NOBM1 /NOMGG /NORPS $        
PURGE    B1GG,M1GG /NOBM1 $        
PURGE    M2GG,M2BASEXG /NOMGG $        
$ ALTER    38 $        
INSERT EMA(2),1 $
$ GENERATE DATA BLOCKS FRLX, B1GG, M1GG, M2GG AND BASEGX.        
$ GENERATE PARAMETERS FKMAX AND NOBASEX.        
FVRSTR1  CASECC,BGPDT,CSTM,DIT,FRL,MGG,, / FRLX,B1GG,M1GG,M2GG,BASEXG,
         PDZERO,, /NOMGG/V,Y,CYCIO/V,Y,NSEGS/V,Y,KMAX/S,N,FKMAX/
         V,Y,BXTID=-1/V,Y,BXPTID=-1/V,Y,BYTID=-1/V,Y,BYPTID=-1/
         V,Y,BZTID=-1/V,Y,BZPTID=-1/S,N,NOBASEX/NOFREQ/OMEGA  $        
PARAML   FRLX //*PRES*////NOFRLX $        
COND     LBLFRLX,NOFRLX $        
EQUIV    FRLX,FRL $        
LABEL    LBLFRLX $        
$ ALTER    47 $        
INSERT EMA(4),2 $
PARAM    //*ADD*/NOBGG /NOBM1 /0 $  RESET NOBGG.        
$ ALTER    58 $        
INSERT GPSTGEN $
$ REDEFINE BGG AND KGG.        
COND     LBL11A,NOBM1 $        
PARAMR   //*COMPLEX*// OMEGA2 /0.0/ CMPLX1 $        
PARAMR   //*SUB*/ MOMEGASQ / 0.0 / OMEGASQR $        
PARAMR   //*COMPLEX*// MOMEGASQ / 0.0 / CMPLX2 $        
ADD      BGG,B1GG / BGG1 / (1.0,0.0) / CMPLX1 $        
EQUIV    BGG1,BGG $        
ADD      KGG,M1GG / KGG1 / (1.0,0.0) / CMPLX2 $        
EQUIV    KGG1,KGG $        
LABEL    LBL11A        
$ ALTER    59,62 $  GP4 HAS BEEN MOVED-UP.        
DELETE GP4,-1,GP4,2 $
$ ALTER    87,87 $  DPD HAS BEEN MOVED-UP.        
DELETE DPD $
$ ALTER    112 $  PARAM AND EQUIV LOGIC DEPENDING ON LGKAD FOR FREQ/TRAN. 
INSERT GKAD,-3 $
PARAM    //*AND*/KDEKA/NOUE/NOK2PP $        
COND     LGKAD1,LGKAD $  BRANCH IN NOT FREQRESP.        
$ ALTER    113 $  SEE ALTER 112 COMMENT.        
INSERT GKAD,-2 $
JUMP     LGKAD2 $        
LABEL    LGKAD1 $        
EQUIV    M2PP,M2DD/NOA/B2PP,B2DD/NOA/K2PP,K2DD/NOA/MAA,MDD/MDEMA/       
         KAA,KDD/KDEKA $        
LABEL    LGKAD2 $        
$ ALTER    115,115 $  ADD PARAMETERS GKAD, W3 AND W4 TO GKAD.        
DELETE GKAD $
GKAD     USETD,GM,GO,KAA,BAA,MAA,K4AA,K2PP,M2PP,B2PP/KDD,BDD,MDD,GMD,   
         GOD,K2DD,M2DD,B2DD/C,Y,GKAD=TRANRESP/*DISP*/*DIRECT*/        
         C,Y,G=0.0/C,Y,W3=0.0/C,Y,W4=0.0/NOK2PP/NOM2PP/NOB2PP/MPCF1/
         SINGLE/OMIT/NOUE/NOK4GG/NOBGG/KDEK2/-1 $        
$ ALTER    116 $  SEE ALTER 112 COMMENT.        
INSERT GKAD,1 $
COND     LGKAD3,LGKAD $  BRANCH IF NOT FREQRESP.        
$ ALTER    117 $  SEE ALTER 112 COMMENT.        
INSERT GKAD,2 $
JUMP     LGKAD4 $        
LABEL    LGKAD3 $        
EQUIV    B2DD,BDD/NOGPDT/M2DD,MDD/NOSIMP/K2DD,KDD/KDEK2 $        
LABEL    LGKAD4 $        
$ ALTER    118,122 $        
DELETE FRRD,-2,VDR $
$ NEW SOLUTION LOGIC        
$ GENERATE TIME-DEPENDENT LOADS IF TSTEP WAS REQUESTED IN CASE CONTROL. 
$ USE FOL INSTEAD OF PPF TO GET OUTPUT FREQUENCY LIST.        
COND     LBLTRL1,NOTIME $        
$ LOOP THRU ALL SUBCASES FOR TIME-DEPENDENT LOADS.        
PARAM    //*MPY*/REPEATT /1 /-1 $        
PARAM    //*ADD*/APPFLG /1 /0 $  INITIALIZE FOR SDR1.        
LABEL    TRLGLOOP $        
CASE     CASECC,/CASEYY/*TRAN*/S,N,REPEATT/S,N,NOLOOP1 $        
PARAM    //*MPY*/NCOL /0 /1 $        
TRLG     CASEYY,USETD,DLT,SLT,BGPDT,SIL,CSTM,TRL,DIT,GMD,GOD,,EST,MGG,/ 
         ,,PDT1,PD1,,TOL/ NOSET/NCOL $        
SDR1     TRL,PDT1,,,,,,,,, / ,PDT, /APPFLG/*DYNAMICS* $        
SDR1     TRL,PD1 ,,,,,,,,, / ,PD , /APPFLG/*DYNAMICS* $        
PARAM    //*ADD*/APPFLG /APPFLG /1 $  APPFLG=APPFLG+1.        
COND     TRLGDONE,REPEATT $        
REPT     TRLGLOOP,100 $        
JUMP     ERROR3 $        
LABEL    TRLGDONE $        
FVRSTR2  TOL,,,,,,, / FRLZ,FOLZ,REORDER1,REORDER2,,,, /V,Y,NSEGS/
         V,Y,CYCIO/S,Y,LMAX=-1/FKMAX/S,N,FLMAX/S,N,NTSTEPS/S,N,NORO1/
         S,N,NORO2 $        
EQUIV    FRLZ,FRL // FOLZ,FOL $        
JUMP     LBLFRL2 $        
LABEL    LBLTRL1 $        
$ GENERATE FREQUENCY-DEPENDENT LOADS IF FREQUENCY WAS SELECTED IN CC.   
FRLG     CASEXX,USETD,DLT,FRL,GMD,GOD,DIT, / PPF,PSF,PDF,FOL,PHFDUM /   
         *DIRECT*/FREQY/*FREQ* $        
COND     LBLFRLX1,NOFRLX $  ZERO OUT LOAD COLUMNS IF FRLX WAS GENERATED.
MPYAD    PPF,PDZERO, / PPFX /0 $        
EQUIV    PPFX,PPF $        
LABEL    LBLFRLX1 $        
$ FORM NEW LOADS.        
COND     LBLFRL1,NOBASEX $        
MPYAD    M2GG,BASEXG, / M2BASEXG /0 $        
ADD      PPF,M2BASEXG / PPF1 /(1.0,0.0) /(-1.0,0.0) $        
EQUIV    PPF1,PPF $        
COND     LBLBASE1,NOSET $        
SSG2     USETD,GMD,YS,KFS,GOD,,PPF / ,PODUM1,PSF1,PDF1 $        
EQUIV    PSF1,PSF // PDF1,PDF $        
LABEL    LBLBASE1 $        
LABEL    LBLFRL1 $        
EQUIV    PPF,PDF/NOSET $        
$ LOADS ARE FREQUENCY-DEPENDENT        
$ PERFORM CYCLIC TRANSFORMATION ON LOADS IF CYCIO=+1.        
PARAML   PDF //*TRAILER*/1 /PDFCOLS $        
$ CALCULATE THE NUMBER OF LOADS FOR CYCIO=-1.        
PARAM    //*DIV*/NLOAD /PDFCOLS /FKMAX $ NLOAD = NF/FKMAX        
EQUIV    PDF,PXF/CYCIO $        
COND     LBLPDONE,CYCIO $        
$ CALCULATE THE NUMBER OF LOADS FOR CYCIO=1.        
PARAM    //*DIV*/NLOAD /PDFCOLS /V,Y,NSEGS $ NLOAD = NF/NSEGS        
CYCT1    PDF / PXF,GCYCF1 /CTYPE /*FORE*/V,Y,NSEGS=-1 /V,Y,KMAX=-1/
         NLOAD /S,N,NOGO $        
COND     ERRORC1,NOGO $        
JUMP     LBLPDONE $        
LABEL    LBLFRL2 $        
$ LOADS ARE TIME-DEPENDENT        
PARAM    //*NOT*/NOTCYCIO /V,Y,CYCIO $        
$ BRANCH DEPENDING ON VALUE OF CYCIO        
COND     LBLTRL2,NOTCYCIO $        
$ CYCIO=-1        
EQUIV    PD,PDTRZ1/NORO1 $        
COND     LBLRO1A,NORO1 $        
MPYAD    PD,REORDER1, / PDTRZ1 / 0 $        
LABEL    LBLRO1A $        
CYCT1    PDTRZ1 / PXTRZ1,GCYCF2 /CTYPE/*FORE*/NTSTEPS/V,Y,LMAX/FKMAX/
         S,N,NOGO $        
COND     ERRORC1,NOGO $        
EQUIV    PXTRZ1,PXFZ1/NORO2 $        
COND     LBLRO2A,NORO2 $        
MPYAD    PXTRZ1,REORDER2, / PXFZ1 /0 $        
LABEL    LBLRO2A $        
EQUIV    PXFZ1,PXF1 $        
JUMP     LBLTRL3 $        
LABEL    LBLTRL2 $        
$ CYCIO = +1        
MPYAD    PD,REORDER1, / PDTRZ2 / 0 $        
CYCT1    PDTRZ2 /PXTRZ2,GCYCF3 /CTYPE/*FORE*/NTSTEPS/V,Y,LMAX/
         V,Y,NSEGS/S,N,NOGO $        
COND     ERRORC1,NOGO $        
EQUIV    PXTRZ2,PXTR2/NORO2 $        
COND     LBLRO2B,NORO2 $        
MPYAD    PXTRZ2,REORDER2, / PXTR2 /0 $        
LABEL    LBLRO2B $        
CYCT1    PXTR2 / PXFZ2,GCYCF4 / CTYPE/*FORE*/V,Y,NSEGS/V,Y,KMAX/        
         FLMAX/S,N,NOGO $        
COND     ERRORC1,NOGO $        
EQUIV    PXFZ2,PXF1 $        
LABEL    LBLTRL3 $        
$ TIME-DEPENDENT LOADS ARE REAL. MAKE LOADS COMPLEX TO CORRESPOND       
$ TO FREQUENCY DEPENDENT LOADS. ALSO SDR2 EXPECTS LOADS TO BE COMPLEX   
$ IN FREQRESP TYPE PROBLEMS.        
COPY     PXF1 / PXF2  $  CONVERT REAL PXF1 TO COMPLEX PXF.        
ADD      PXF1,PXF2 / PXF / (0.5,1.0) / (0.5,-1.0) $        
$ DEFINE NLOAD FOR CYCT2.        
PARAM    //*ADD*/NLOAD /FLMAX /0 $  NLOAD = FLMAX        
LABEL    LBLPDONE $        
PARAM    //*ADD*/KINDEX /V,Y,KMIN=0 /0 $  INTITIALIZE KINDEX.        
$        
$ INITIALIZE UXVF IF KMIN IS NOT ZERO.        
$        
PARAM    //*ADD*/KMINL /V,Y,KMIN /-1 $        
COND     NOKMINL,KMINL $        
PARAM    //*ADD*/KMINV /0 /0 $        
LABEL    KMINLOOP $        
CYCT2    CYCDD,,,PXF,, /,,PKFZ,, /*FORE*/V,Y,NSEGS/KMINV/CYCSEQ/NLOAD/
         S,N,NOGO $        
COND     ERRORC1,NOGO $        
ADD      PKFZ, / UKVFZ / (0.0,0.0) $        
PRTPARM  //0/*KINDEX* $        
CYCT2    CYCDD,,,UKVFZ,, /,,UXVF,, /*BACK*/V,Y,NSEGS/        
         KMINV/CYCSEQ/NLOAD/S,N,NOGO $        
PRTPARM  //0/*KINDEX* $        
COND     ERRORC1,NOGO $        
PARAM    //*ADD*/KMINV /KMINV /1 $        
REPT     KMINLOOP,KMINL $        
LABEL    NOKMINL $        
LABEL    TOPCYC $  LOOP ON KINDEX        
COND     NOKPRT,NOKPRT $        
PRTPARM  //0 /*KINDEX* $        
LABEL    NOKPRT $        
CYCT2    CYCDD,KDD,MDD,,, /KKKF,MKKF,,, /*FORE*/V,Y,NSEGS/KINDEX/
         CYCSEQ=-1/NLOAD/S,N,NOGO $        
COND     ERRORC1,NOGO $        
CYCT2    CYCDD,BDD,,PXF,, /BKKF,,PKF,, /*FORE*/V,Y,NSEGS/KINDEX/
         CYCSEQ/NLOAD/S,N,NOGO $        
COND     ERRORC1,NOGO $        
$ SOLUTION        
FRRD2    KKKF,BKKF,MKKF,,PKF,FOL / UKVF /0.0/0.0/-1.0 $        
CYCT2    CYCDD,,,UKVF,, /,,UXVF,, /*BACK*/V,Y,NSEGS/KINDEX/CYCSEQ/
         NLOAD/S,N,NOGO $        
COND     ERRORC1,NOGO $        
PARAM    //*ADD*/KINDEX/KINDEX/1 $  KINDEX = KINDEX + 1        
PARAM    //*SUB*/DONE / V,Y,KMAX / KINDEX $        
COND     LCYC2,DONE $  IF KINDEX .GT. KMAX THEN EXIT        
REPT     TOPCYC,100 $        
JUMP     ERROR3 $        
LABEL    LCYC2 $        
EQUIV    UXVF,UDVF / CYCIO $        
COND     LCYC3,CYCIO $  IF CYCIO .GE. 0 THEN TRANSFORM TO PHYSICAL.     
CYCT1    UXVF / UDVF,GCYCB1 / CTYPE/*BACK*/V,Y,NSEGS/V,Y,KMAX/NLOAD $        
LABEL    LCYC3 $        
COND     LBLTRL4,NOTIME $        
EQUIV    PXF,PDF2 / CYCIO $        
COND     LCYC4,CYCIO $  IF CYCIO .GE. 0 THEN TRANSFORM TO PHYSICAL.     
CYCT1    PXF / PDF2,GCYCB2 / CTYPE/*BACK*/V,Y,NSEGS/V,Y,KMAX/NLOAD $        
LABEL    LCYC4 $        
$ IF LOADS WERE TIME-DEPENDENT THEN RECOVER PPF AND PSF FROM PXF.       
SDR1     USETD,,PDF2,,,GOD,GMD,,,, / PPFZ,, /1 /*DYNAMICS* $        
SSG2     USETD,GMD,YS,KFS,GOD,,PPFZ / ,PODUM,PSFZ,PLDUM $        
EQUIV    PPFZ,PPF // PSFZ,PSF $        
LABEL    LBLTRL4 $        
VDR      CASEXX,EQDYN,USETD,UDVF,FOL,XYCDB,/OUDVC1,/*FREQRESP*/        
         *DIRECT*/S,N,NOSORT2/S,N,NOD/S,N,NOP/0 $        
$ ALTER    138,138 $  USE FOL INSTEAD OF PPF TO GET OUTPUT FREQUENCY LIST.
DELETE SDR2 $
SDR2     CASEXX,CSTM,MPT,DIT,EQDYN,SILD,,,BGPDP,FOL,QPC,UPVC,EST,XYCDB, 
         PPF,/OPPC1,OQPC1,OUPVC1,OESC1,OEFC1,PUPVC1,,/*FREQRESP*/       
         S,N,NOSORT2 $        
$ ALTER    160 $  ADD LABEL FOR ERROR3.        
INSERT PLOT(2),4 $
LABEL    ERROR3 $        
$ ALTER    163,166 $  REMOVE ERROR1 AND ERROR2.        
DELETE PLOT(2),7,PLOT(2),10 $
$ ALTER    168 $  FORCED VIBRATION ERRORS        
INSERT END,-3 $
LABEL    ERRORC1 $  CHECK NSEGS, KMAX AND OTHER CYCLIC DATA.        
PRTPARM  //-5 /*CYCSTATICS* $        
LABEL    ERRORC2 $  COUPLED MASS NOT ALLOWED.        
PRTPARM  //0 /C,Y,COUPMASS $        
JUMP     FINIS $        
LABEL    ERRORC3 $  SUPORT BULK DATA NOT ALLOWED.        
PRTPARM  //-6 /*CYCSTATICS* $        
LABEL    ERRORC4 $  EPOINT BULK DATA NOT ALLOWED.        
PRTPARM  //0 /*NOUE* $        
JUMP     FINIS $        
LABEL    ERRORC5 $  NEITHER FREQ OR TSTEP WERE IN BULK DATA DECK.       
PRTPARM  //0 /*NOFRL* $        
PRTPARM  //0 /*NOTRL* $        
JUMP     FINIS $        
LABEL    ERRORC6 $  BOTH FREQ AND TSTEP WERE SELECTED IN CASE CONTROL.  
PRTPARM  //0 /*NOFREQ* $        
PRTPARM  //0 /*NOTIME* $        
ENDALTER $