Académique Documents
Professionnel Documents
Culture Documents
Software Corporation
2 MacArthur Place
Santa Ana, CA 92707 USA
Tel: (714) 540-8900
Fax: (714) 784-4056
Web: http://www.mscsoftware.com
August 2002
1
DISCLAIMER
2
TABLE OF CONTENTS
3
Workshop # 1
4
Workshop #1
Objective:
Procedure:
There are 15 students in an algebra class. The following are test scores from
a recent test:
92,85,70,82,90,82,32,94,100,50,95,80,65,100, and 70
Write a DMAP using parameters to represent the test scores and calculate
the average and standard deviation for the test. Assign the test scores inside
the DMAP. Use the MESSAGE module to label the output.
AVG = 1/N XI
I=I
^^^
^^^ AVERAGE TEST SCORE = 7.913333E+01
^^^
^^^
^^^ STANDARD DEVIATION = 1.846751E+01
^^^
5
Solution File for Workshop # 1
$ soln1.dat
$
SOL AVGSTD
COMPILE AVGSTD LIST
SUBDMAP AVGSTD
$
$ DECLARE PARAMETERS
$
TYPE PARM,,RS,N,sc1,sc2,sc3,sc4,sc5,sc6,sc7,sc8,sc9,sc10
TYPE PARM,,RS,N,sc11,sc12,sc13,sc14,sc15
TYPE PARM,,RS,N,AVG,STD
$
sc1 = 92.
sc2 = 85.
sc3 = 70.
sc4 = 82.
sc5 = 90.
sc6 = 82.
sc7 = 32.
sc8 = 94.
sc9 = 100.
sc10 = 50.
sc11 = 95.
sc12 = 80.
sc13 = 65.
sc14 = 100.
sc15 = 70.
$
$ 2 3 4 5 6 7 8 9
AVG = (sc1 + sc2 + sc3 + sc4 + sc5 + sc6 + sc7 + sc8 + sc9 +
sc10 + sc11 + sc12 + sc13 + sc14 + sc15 ) / 15.
$
MESSAGE //' ' $ PRINT BLANK LINE
MESSAGE //' AVERAGE TEST SCORE = '/AVG $
MESSAGE //' ' $
$
STD = SQRT ( ((sc1-AVG)**2 + (sc2-AVG)**2 + (sc3-AVG)**2 +
(sc4-AVG)**2 + (sc5-AVG)**2 + (sc6-AVG)**2 +
(sc7-AVG)**2 + (sc8-AVG)**2 + (sc9-AVG)**2 +
(sc10-AVG)**2 + (sc11-AVG)**2 + (sc12-AVG)**2 +
(sc13-AVG)**2 + (sc14-AVG)**2 + (sc15-AVG)**2)
/ 15. )
$
MESSAGE //' ' $
MESSAGE // ' STANDARD DEVIATION = '/STD $
MESSAGE// ' ' $
$
END
$
CEND
$
6
TITLE = WORKSHOP # 1 -- USE PARAMETERS TO
Solution File for Workshop # 1 (cont.)
7
Workshop # 2
8
Workshop #2
Objective:
Procedure:
Repeat workshop # 1 by reading in the test scores from the bulk data section
instead of defining them inside the DMAP. Note that the preface modules—
IFP1, XSORT, and IFP are needed. These modules are provided in the
preface.dat file. Perform this workshop using two different methods.
a. Create your own solution name (as in workshop # 1) and bring in the
preface modules using the include command.
b. Repeat step a using SOL 100. Note that SOL 100 has the preface
modules already built in.
^^^
^^^ AVERAGE TEST SCORE = 7.913333E+01
^^^
^^^
^^^ STANDARD DEVIATION = 1.846751E+01
^^^
9
Solution for Workshop # 2A
$
$ soln2a.dat
$
SOL avgstd
compile avgstd $
subdmap svgstd $
$
include 'preface.dat'
$
$ DECLARE PARAMETERS
$
TYPE PARM,,RS,y,sc1,sc2,sc3,sc4,sc5,sc6,sc7,sc8,sc9,sc10
TYPE PARM,,RS,y,sc11,sc12,sc13,sc14,sc15
TYPE PARM,,I,Y,NSTUDENT
TYPE PARM,,RS,N,AVG,STD,nstudr
$
nstudr = real(nstudent)
AVG = ( sc1 + sc2 + sc3 + sc4 + sc5 + sc6 + sc7 + sc8 + sc9 +
sc10 + sc11 + sc12 + sc13 + sc14 + sc15 ) / nstudr
$
MESSAGE //' ' $ PRINT BLANK LINE
MESSAGE //' AVERAGE TEST SCORE = '/AVG $
MESSAGE //' ' $
$
STD = SQRT ( ((sc1-AVG)**2 + (sc2-AVG)**2 + (sc3-AVG)**2 +
(sc4-AVG)**2 + (sc5-AVG)**2 + (sc6-AVG)**2 +
(sc7-AVG)**2 + (sc8-AVG)**2 + (sc9-AVG)**2 +
(sc10-AVG)**2 + (sc11-AVG)**2 + (sc12-AVG)**2 +
(sc13-AVG)**2 + (sc14-AVG)**2 + (sc15-AVG)**2)
/ nstudr )
$
MESSAGE //' ' $
MESSAGE // ' STANDARD DEVIATION = '/STD $
MESSAGE// ' ' $
$
END
$
CEND
$
TITLE = WORKSHOP # 2 -- READ PARAMETERS FROM BULK DATA SECTION
SUBTITLE = CALCULATE AVERAGE AND STANDARD DEVIATION
$
BEGIN BULK
$
PARAM,sc1,92.
PARAM,sc2,85.
PARAM,sc3,70.
PARAM,sc4,82.
PARAM,sc5,90.
PARAM,sc6,82.
PARAM,sc7,32.
10
Solution for Workshop # 2A (cont.)
PARAM,sc8,94.
PARAM,sc9,100.
PARAM,sc10,50.
PARAM,sc11,95.
PARAM,sc12,80.
PARAM,sc13,65.
PARAM,sc14,100.
PARAM,sc15,70.
$
param,nstudent,15
$
ENDDATA
11
Solution for Workshop # 2B
$
$ soln2b.dat
$
SOL 100
compile userdmap list $
alter 2 $
$
$ DECLARE PARAMETERS
$
TYPE PARM,,RS,y,sc1,sc2,sc3,sc4,sc5,sc6,sc7,sc8,sc9,sc10
TYPE PARM,,RS,y,sc11,sc12,sc13,sc14,sc15
TYPE PARM,,I,Y,NSTUDENT
TYPE PARM,,RS,N,AVG,STD,nstudr
$
nstudr = real(nstudent)
AVG = ( sc1 + sc2 + sc3 + sc4 + sc5 + sc6 + sc7 + sc8 + sc9 +
sc10 + sc11 + sc12 + sc13 + sc14 + sc15 ) / nstudr
$
MESSAGE //' ' $ PRINT BLANK LINE
MESSAGE //' AVERAGE TEST SCORE = '/AVG $
MESSAGE //' ' $
$
STD = SQRT ( ((sc1-AVG)**2 + (sc2-AVG)**2 + (sc3-AVG)**2 +
(sc4-AVG)**2 + (sc5-AVG)**2 + (sc6-AVG)**2 +
(sc7-AVG)**2 + (sc8-AVG)**2 + (sc9-AVG)**2 +
(sc10-AVG)**2 + (sc11-AVG)**2 + (sc12-AVG)**2 +
(sc13-AVG)**2 + (sc14-AVG)**2 + (sc15-AVG)**2)
/ nstudr )
$
MESSAGE //' ' $
MESSAGE // ' STANDARD DEVIATION = '/STD $
MESSAGE// ' ' $
$
END
$
CEND
$
TITLE = WORKSHOP # 2 -- READ PARAMETERS FROM BULK DATA SECTION
SUBTITLE = CALCULATE AVERAGE AND STANDARD DEVIATION
$
BEGIN BULK
$
PARAM,sc1,92.
PARAM,sc2,85.
PARAM,sc3,70.
PARAM,sc4,82.
PARAM,sc5,90.
PARAM,sc6,82.
PARAM,sc7,32.
PARAM,sc8,94.
PARAM,sc9,100.
12
PARAM,sc10,50.
Solution for Workshop # 2B (cont.)
PARAM,sc11,95.
PARAM,sc12,80.
PARAM,sc13,65.
PARAM,sc14,100.
PARAM,sc15,70.
$
param,nstudent,15
$
ENDDATA
13
Workshop # 3
14
Workshop #3
Objective:
Procedure:
2. 1. 0. 0.
1. 2. 1. 0.
A
0. 1. 2. 1.
0. 0. 1. 2.
Provide checks to ensure that matrix A is read in and print matrix A using
MATPRN and MATPRT.
15
PARTIAL F06 RESULTS
0
0 MATRIX A (GINO NAME 101 ) IS A DB PREC 4 COLUMN X 4 ROW SYMMETRC MATRIX.
0COLUMN 1 ROWS 1 THRU 2 --------------------------------------------------
ROW
1) 2.0000D+00 -1.0000D+00
0COLUMN 2 ROWS 1 THRU 3 --------------------------------------------------
ROW
1) -1.0000D+00 2.0000D+00 -1.0000D+00
0COLUMN 3 ROWS 2 THRU 4 --------------------------------------------------
ROW
2) -1.0000D+00 2.0000D+00 -1.0000D+00
0COLUMN 4 ROWS 3 THRU 4 --------------------------------------------------
ROW
3) -1.0000D+00 2.0000D+00
0THE NUMBER OF NON-ZERO TERMS IN THE DENSEST COLUMN = 3
0THE DENSITY OF THIS MATRIX IS 62.50 PERCENT.
^^^MAPTRT FOLLOWS
1 USE MTRXIN TO READ DMIG ENTRIES MARCH 19, 2000 MSC.NASTRAN 12/14/99 PAGE 6
0
INTERMEDIATE MATRIX ... A
COLUMN 1
1 2.000000E+00 -1.000000E+00 0.000000E+00 0.000000E+00 4
COLUMN 2
1 -1.000000E+00 2.000000E+00 -1.000000E+00 0.000000E+00 4
COLUMN 3
1 0.000000E+00 -1.000000E+00 2.000000E+00 -1.000000E+00 4
COLUMN 4
1 0.000000E+00 0.000000E+00 -1.000000E+00 2.000000E+00 4
16
2. IF ADDITIONAL SIGNIFICANT DIGITS ARE REQUIRED, THEN INCREASE THE VALUE OF THE FIFTH PARAMETER,
AND
RERUN THE JOB.
DATA BLOCK A WRITTEN ON FORTRAN UNIT 51 FROM DMAP MODULE OUTPUT4 IN ASCII FORMAT (1P,5E16.9)
TRAILER = 101 4 4 6 2 6 6250
DATA BLOCK A WRITTEN ON FORTRAN UNIT 52 FROM DMAP MODULE OUTPUT4 IN BINARY FORMAT
TRAILER = 101 4 4 6 2 6 6250
1 * * * END OF JOB * * *
17
Solution for Workshop # 3
$ soln3.dat
$
assign output2='soln3.opa2',unit=41,form=formatted, delete $
assign output2='soln3.opb2',unit=42,delete $
assign output4='soln3.opa4',unit=51, form=formatted,delete $
assign output4='soln3.opb4',unit=52,delete $
$
SOL 100 $
COMPILE USERDMAP $
ALTER 2
type parm,,logical,n,got1 $
dmiin dmi,dmindx/A,,,,,,,,,/s,n,got1 $
if (got1) then $
MESSAGE //'matrix A read in ok, matprn follows' $
MATPRN A// $
MESSAGE //'MAPTRT FOLLOWS' $
MATPRT A// $
ELSE $
MESSAGE //'MATRIX A NOT IN INPUT FILE' $
ENDIF $
$
output2 A,,,,///41///'matrix' $ ascii format
output2 A,,,,///42/// $ binary format
output4 A,,,,///51/-1 $ ascii format
output4 A,,,,///52/1 $ binary format
$
END $
CEND
TITLE = USE DMIIN TO READ IN MATRIX A
SUBTITLE = OUTPUT MATRIX A USING OUTPUT2 AND OUTPUT4 USING ASCII AND
BINARY
BEGIN BULK
$
DMI,A,0,6,1,,,4,4
DMI,A,1,1,2.,-1.
DMI,A,2,1,-1.,2.,-1.
DMI,A,3,2,-1.,2.,-1.
DMI,A,4,3,-1.,2.
$
ENDDATA
18
Workshop # 4
19
Workshop # 4
Objective:
Procedure:
Use the matrix A read by INPUTT2 with the binary format to perform the
following eigenvalue calculation.
[ A –I ] {U} = 0
20
PARTIAL F06 RESULTS
E I G E N V A L U E A N A L Y S I S S U M M A R Y (READ MODULE)
1 USE INPUTT2 AND INPUTT4 TO READ IN MATRIX A WRITTEN OUT IN WORKS MARCH 19,
2000 MSC.NASTRAN 12/14/99 PAGE 12
R E A L E I G E N V A L U E S
MODE EXTRACTION EIGENVALUE RADIANS CYCLES
GENERALIZED GENERALIZED
NO. ORDER
MASS STIFFNESS
1 1 3.819660E-01 6.180340E-01 9.836316E-02
1.000000E+00 3.819660E-01
2 2 1.381966E+00 1.175570E+00 1.870978E-01
1.000000E+00 1.381966E+00
3 3 2.618034E+00 1.618034E+00 2.575181E-01
1.000000E+00 2.618034E+00
4 4 3.618034E+00 1.902113E+00 3.027307E-01
1.000000E+00 3.618034E+00
1 USE INPUTT2 AND INPUTT4 TO READ IN MATRIX A WRITTEN OUT IN WORKS MARCH 19,
2000 MSC.NASTRAN 12/14/99 PAGE 13
0
1 USE INPUTT2 AND INPUTT4 TO READ IN MATRIX A WRITTEN OUT IN WORKS MARCH 19,
2000 MSC.NASTRAN 12/14/99 PAGE 14
0
0 MATRIX MYPHI (GINO NAME 101 ) IS A DB PREC 4 COLUMN X 4 ROW
SQUARE MATRIX.
0COLUMN 1 ROWS 1 THRU 4
--------------------------------------------------
ROW
1) 3.7175D-01 6.0150D-01 6.0150D-01 3.7175D-01
0COLUMN 2 ROWS 1 THRU 4
--------------------------------------------------
ROW
1) -6.0150D-01 -3.7175D-01 3.7175D-01 6.0150D-01
0COLUMN 3 ROWS 1 THRU 4
--------------------------------------------------
ROW
1) -6.0150D-01 3.7175D-01 3.7175D-01 -6.0150D-01
0COLUMN 4 ROWS 1 THRU 4
--------------------------------------------------
ROW
1) -3.7175D-01 6.0150D-01 -6.0150D-01 3.7175D-01
0THE NUMBER OF NON-ZERO TERMS IN THE DENSEST COLUMN = 4
0THE DENSITY OF THIS MATRIX IS 100.00 PERCENT.
21
Solution Input File for Workshop # 4
$ soln4.dat
$
assign inputt2='soln3.opa2',unit=41,form=formatted $
assign inputt2='soln3.opb2',unit=42 $
assign inputt4='soln3.opa4',unit=51, form=formatted $
assign inputt4='soln3.opb4',unit=52 $
$
SOL 100 $
COMPILE USERDMAP $
ALTER 2
$
message //'reading matrices using inputt2 and inputt4' $
$
inputt2 /A2a,,,,//41 $ ascii format
inputt2 /A2b,,,,//42 $ binary format
inputt4 /A4a,,,,/1/51//-1 $ ascii format
inputt4 /A4b,,,,/1/52//1 $ binary format
$
matprn a2a,a2b,a4a,a4b// $
$
diagonal a2b/ident/'square'/0. $
read a2b,ident,,,dynamics,,casecc,,,,,,/
mylama,myphi,modemass,eigmat,lammat,/
'modes'/s,n,nmodes $
if ( nmodes > 0) then $
ofp mylama// $
matprn myphi// $
else $
message //'NO EIGENVALUES FOUND' $
endif $ nmodes > 0
$
END $
CEND
TITLE = USE INPUTT2 AND INPUTT4 TO READ IN MATRIX A WRITTEN OUT IN WORKSHOP # 3
method = 100
BEGIN BULK
$
eigrl,100,,,4
$
ENDDATA
22
Workshop # 5
23
Workshop # 5
Objective:
Procedure:
[B][X]+[C]=[X]
where,
0. 0.1 0.1
B 0.1 0. 0.1
0.1 0.1 0.
1.2
C 1.2
1.2
Solve for [ Xn ] until the error is less than or equal to 1. E-5 or nine
iterations are performed.
Hint:
24
EQUIVX XNP1/XN/ALWAYS $
Partial Output for Workshop # 5
0
0 MATRIX X (GINO NAME 101 ) IS A DB PREC 1 COLUMN X 3 ROW RECTANG MATRIX.
0COLUMN 1 ROWS 1 THRU 3 --------------------------------------------------
ROW
1) 1.0000D+00 1.0000D+00 1.0000D+00
0THE NUMBER OF NON-ZERO TERMS IN THE DENSEST COLUMN = 3
0THE DENSITY OF THIS MATRIX IS 100.00 PERCENT.
25
Solution Input File for Workshop # 5
$
$ soln5.dat
$
diag 8
sol 100
compile userdmap $
alter 2 $
type parm,,rs,n,xnorm=1. $
type parm,,i,n,knt=1 $
dmiin dmi,dmindx/b,x,c,,,,,,,/ $
matprn b,x,c// $
do while (knt<=9 and xnorm > 1.E-5 ) $
mpyad b,x,c/xx/ $ [B]*[X] + [C] $
add x,xx/dif/(-1.,0.) $
matprn dif// $
norm dif/difn///s,n,xnorm $
message //' iteration no. = '/knt/' error = '/xnorm $
equivx xx/x/always $
knt = knt + 1 $
enddo $
matprn x// $ final answer
cend
$
begin bulk
$
dmi,b,0,1,1,0,,3,3
dmi,b,1,2,-.1,-.1
dmi,b,2,1,-.1,3,-.1
dmi,b,3,1,-.1,-.1
$
dmi,c,0,2,1,0,,3,1
dmi,c,1,1,1.2,1.2,1.2
$
dmi,x,0,2,1,0,,3,1
$
enddata
26
Workshop # 6
27
Workshop # 6A
Objective:
Procedure:
4 5 6
4 5 6 7
3 7
3 8
2
8
2 9 y
1 9
x
1 10
Hints:
28
Input File for Modification (wkshp6a.dat):
$
$ wkshp6a.dat
$
$
SOL 101 $
TIME 5
$
$ PUT DMAP HERE
$
CEND
TITLE = STATIC CONDENSATION OF HORIZONTAL BARS
DISP = ALL
$
SUBCASE 1
LABEL = STATIC LOAD CASE
LOAD = 1
$
BEGIN BULK
$
ASET1,123456,4,7
$
GRID 4 0 0.0 30. 0.0
GRID 5 0 10. 30. 0.0
GRID 6 0 20. 30. 0.0
GRID 7 0 30. 30. 0.0
$
GRID 100 0 50. 50. 0.0 123456
$
CBAR 4 1 4 5 100
CBAR 5 1 5 6 100
CBAR 6 1 6 7 100
$
PBAR 1 1 3.461. 1. 2.
MAT1 1 1.+7 .3
$
ENDDATA
29
Solution File for Writing Out Boundary Stiffness
Matrices:
$
$ soln6a.dat
$
SOL 101 $
TIME 5
$
compile sekr $
alter 'mpyad.*got.*ktt' $
type parm,nddl,i,n,lusets $
umerge1 uset,ktt,,,/kttg/'g'/'t'/'comp' $
MATGEN EQEXINS/INTEXT/9/0/LUSETS
SMPYAD INTEXT,kttg,INTEXT,,,/KTTGEXT/3////1////6 $
matprn kttgext// $
MATMOD KTTGEXT,EQEXINS,,,,/KTTOUT,/16/1 $
exit $
$
CEND
TITLE = STATIC CONDENSATION OF HORIZONTAL BARS
DISP = ALL
$
SUBCASE 1
LABEL = STATIC LOAD CASE
LOAD = 1
$
BEGIN BULK
$
ASET1,123456,4,7
$
GRID 4 0 0.0 30. 0.0
GRID 5 0 10. 30. 0.0
GRID 6 0 20. 30. 0.0
GRID 7 0 30. 30. 0.0
$
GRID 100 0 50. 50. 0.0 123456
$
CBAR 4 1 4 5 100
CBAR 5 1 5 6 100
CBAR 6 1 6 7 100
$
PBAR 1 1 3.461. 1. 2.
MAT1 1 1.+7 .3
$
ENDDATA
30
DMIG Punch File Generated from soln6a.dat:
DMIG KTTGEXT 0 6 2 0 30
DMIG* KTTGEXT 4 1
* 4 1 1.153333346D+06
DMIG* KTTGEXT 4 2
* 4 2 4.444444444D+03
DMIG* KTTGEXT 4 3
* 4 3 4.444444444D+03
DMIG* KTTGEXT 4 4
* 4 4 2.564102500D+05
DMIG* KTTGEXT 4 5
* 4 3-6.666666667D+04
* 4 5 1.333333333D+06
DMIG* KTTGEXT 4 6
* 4 2 6.666666667D+04
* 4 6 1.333333333D+06
DMIG* KTTGEXT 7 1
* 4 1-1.153333346D+06
* 7 1 1.153333346D+06
DMIG* KTTGEXT 7 2
* 4 2-4.444444444D+03
* 4 6-6.666666667D+04
* 7 2 4.444444444D+03
DMIG* KTTGEXT 7 3
* 4 3-4.444444444D+03
* 4 5 6.666666667D+04
* 7 3 4.444444444D+03
DMIG* KTTGEXT 7 4
* 4 4-2.564102500D+05
* 7 4 2.564102500D+05
DMIG* KTTGEXT 7 5
* 4 3-6.666666667D+04
* 4 5 6.666666667D+05
* 7 3 6.666666667D+04
* 7 5 1.333333333D+06
DMIG* KTTGEXT 7 6
* 4 2 6.666666667D+04
* 4 6 6.666666667D+05
* 7 2-6.666666667D+04
* 7 6 1.333333333D+06
31
Workshop # 6B
Objective:
Procedure:
4 5 6
4 5 6 7
3 7
3 8
2
8
2 9 y
1 9
1 x
10
2. Compare the results with the full model where all 9 elements are
directly defined by CBAR entries.
32
Model Input File for Modification:
$
$ wkshp6b.dat
$
SOL 101 $
TIME 5
CEND
TITLE = bring in the cross bar using dmig
DISP = ALL
SPC = 1
$
$ (Case Control Command to Bring in DMIG Entries)
$
SUBCASE 1
LABEL = STATIC LOAD CASE
LOAD = 1
$
BEGIN BULK
$
$ Include DMIG Entries
$
GRID 1 0 0.0 0.0 0.0
GRID 2 0 0.0 10. 0.0
GRID 3 0 0.0 20. 0.0
GRID 4 0 0.0 30. 0.0
$
GRID 7 0 30. 30. 0.0
GRID 8 0 30. 20. 0.0
GRID 9 0 30. 10. 0.0
GRID 10 0 30. 0.0 0.0
$
GRID 100 0 50. 50. 0.0 123456
$
CBAR 1 1 1 2 100
CBAR 2 1 2 3 100
CBAR 3 1 3 4 100
CBAR 7 1 7 8 100
CBAR 8 1 8 9 100
CBAR 9 1 9 10 100
$
FORCE 1 4 0 1000. 1.
$
$ CONSTRAINTS BULK DATA ENTRIES
$
SPC1 1 123456 1 10
$
$ PROPERTY AND MATERIAL BULK DATA ENTRIES
$
PBAR 1 1 3.46 1. 1. 2.
MAT1 1 1.+7 .3
$
ENDDATA
33
Solution File for Bringing in Reduced
Stiffness Matrix:
$
$ soln6b.dat
$
SOL 101 $
TIME 5
CEND
TITLE = bring in the cross bar using dmig
DISP = ALL
SPC = 1
$
k2gg = kttgext
$
SUBCASE 1
LABEL = STATIC LOAD CASE
LOAD = 1
$
BEGIN BULK
$
include 'soln6a.pch'
$
GRID 1 0 0.0 0.0 0.0
GRID 2 0 0.0 10. 0.0
GRID 3 0 0.0 20. 0.0
GRID 4 0 0.0 30. 0.0
$
GRID 7 0 30. 30. 0.0
GRID 8 0 30. 20. 0.0
GRID 9 0 30. 10. 0.0
GRID 10 0 30. 0.0 0.0
$
GRID 100 0 50. 50. 0.0 123456
$
CBAR 1 1 1 2 100
CBAR 2 1 2 3 100
CBAR 3 1 3 4 100
CBAR 7 1 7 8 100
CBAR 8 1 8 9 100
CBAR 9 1 9 10 100
$
FORCE 1 4 0 1000. 1.
$
$ CONSTRAINTS BULK DATA ENTRIES
$
SPC1 1 123456 1 10
$
$ PROPERTY AND MATERIAL BULK DATA ENTRIES
$
PBAR 1 1 3.46 1. 1. 2.
MAT1 1 1.+7 .3
$
34
ENDDATA
35
Solution File for Full Model:
$
$ soln6c.dat
$
SOL 101 $
TIME 5
CEND
TITLE = FULL MODEL
DISP = ALL
SPC = 1
$
SUBCASE 1
LABEL = STATIC LOAD CASE
LOAD = 1
$
BEGIN BULK
$
GRID 1 0 0.0 0.0 0.0
GRID 2 0 0.0 10. 0.0
GRID 3 0 0.0 20. 0.0
GRID 4 0 0.0 30. 0.0
$
GRID 5 0 10. 30. 0.0
GRID 6 0 20. 30. 0.0
GRID 7 0 30. 30. 0.0
$
GRID 8 0 30. 20. 0.0
GRID 9 0 30. 10. 0.0
GRID 10 0 30. 0.0 0.0
$
GRID 100 0 50. 50. 0.0 123456
$
CBAR 1 1 1 2 100
CBAR 2 1 2 3 100
CBAR 3 1 3 4 100
CBAR 4 1 4 5 100
CBAR 5 1 5 6 100
CBAR 6 1 6 7 100
CBAR 7 1 7 8 100
CBAR 8 1 8 9 100
CBAR 9 1 9 10 100
$
FORCE 1 4 0 1000. 1.
$
$ CONSTRAINTS BULK DATA ENTRIES
$
SPC1 1 123456 1 10
$
$ PROPERTY AND MATERIAL BULK DATA ENTRIES
$
PBAR 1 1 3.46 1. 1. 2.
MAT1 1 1.+7 .3
$
36
ENDDATA
37
PARTIAL OUTPUT FROM FULL MODEL RUN
1 FULL MODEL
D I S P L A C E M E N T V E C T O R
38
Workshop # 7
39
Workshop # 7
Objective:
Procedure:
1 2 3
x
11 12
L L
A = 1.0, I1 = I2 = .0833,
J = .1667, E = 3.E7, L = 10.
Py1 6 3L -6 3L y1
40
Workshop # 7 (cont.)
dmig stiff 0 6 1 0
$
$DMIG NAME GJ CJ G1 C1 A1
$
dmig stiff 1 2 1 2 29988.
1 6 149940. 2 2 -29988.
2 6 149940.
dmig stiff 1 6 1 6 999600.
2 2 -149940. 2 6 499800.
dmig stiff 2 2 2 2 29988.
2 6 -149940.
dmig stiff 2 6 2 6 999600.
Hints:
41
PARTIAL OUTPUT FOR WORKSHOP # 7
42
Input File for Baseline Model with Both CBARs
Defined
$
$ soln7a.dat - baseline bar model
$
id bar stiff
sol 103
time 10
cend
title = two bar example
spc = 100
disp = all
method = 100
ese = all
$
begin bulk
cbar 11 1 1 2 99
cbar 12 1 2 3 99
conm2 21 2 1.5
conm2 22 3 1.5
eigrl 100 2
grdset 1345
grid 1 0. 0. 0.
grid 2 10. 0. 0.
grid 3 20. 0. 0.
grid 99 10. 0. 100.
mat1 1 3.+7 .32
param wtmass .00259
pbar 1 1 1.0 .0833 .0833 .1667
spc1 100 123456 1
enddata
43
Input File for Model with CBAR 11 Defined Using
DMIGs
$
$ soln7b.dat
$ replace bar # 11 using dmig
$
id dmig stiff
sol 103
diag 8
COMPILE SEMG1
ALTER 'add.*k2jj' $
CALL DBSTORE K2JJ,,,,//0/0/' '/0 $
COMPILE SEDRCVR
ALTER 'OFP.*ONRGY1.*cardno'(1,-1) $
CALL STRNENRG UG // $
$
COMPILE STRNENRG
SUBDMAP STRNENRG UG // $
$
TYPE PARM,,I,N,NUMMODES,NVALS $
TYPE PARM,,RS,N,REX$
TYPE PARM,,RS,Y,TINY
$
$ DMIG Processing
$
CALL DBFETCH /K2JJ,,,,/0/0/0/0/0 $
PARAML K2JJ//'PRESENCE'////S,N,NOK2JJ $
$
IF (NOK2JJ <> -1) THEN
matprn k2jj // $
SMPYAD UG,K2JJ,UG,,,/ESEK2JJ/3////1/0/0/ $
$
matprn esek2jj// $
PARAML ESEK2JJ//'trailer'/1/S,N,NVALS $
$
NUMMODES = 1 $
DO WHILE (NUMMODES <= NVALS) $
PARAML ESEK2JJ//'DMI'/NUMMODES/NUMMODES/S,N,REX $
REX = 0.5 * REX $
MESSAGE //'-------------------------------------------------------' $
MESSAGE //'MODE Number '/NUMMODES $
MESSAGE //'Strain Energy of DMIG'/REX $
MESSAGE //' ' $
MESSAGE //'-------------------------------------------------------' $
NUMMODES = NUMMODES + 1 $
ENDDO
ENDIF $ NOK2JJ
RETURN
END $
cend
title = two bar example
44
subtitle = replace one bar with dmig
Model with CBAR 11 Defined Using DMIGs (cont.)
spc = 100
disp = all
method = 100
k2gg = stiff
ese = all
$
begin bulk
cbar 12 1 2 3 99
conm2 21 2 1.5
conm2 22 3 1.5
dmig stiff 0 6 1 0
$
$DMIG NAME GJ CJ G1 C1 A1
$
dmig stiff 1 2 1 2 29988.
1 6 149940. 2 2 -29988.
2 6 149940.
dmig stiff 1 6 1 6 999600.
2 2 -149940. 2 6 499800.
dmig stiff 2 2 2 2 29988.
2 6 -149940.
dmig stiff 2 6 2 6 999600.
eigrl 100 3
grdset 1345
grid 1 0. 0. 0.
grid 2 10. 0. 0.
grid 3 20. 0. 0.
grid 99 10. 0. 100.
mat1 1 3.+7 .32
param wtmass .00259
pbar 1 1 1.0 .0833 .0833 .1667
spc1 100 123456 1
enddata
45
Workshop # 8
46
Workshop # 8
Objective:
Procedure:
Write a DMAP to perform strain free rigid body check on the g-set
level, n-set level, and f-set level.
The reaction = [K] * [Ur], where [Ur] is the rigid body vector.
47
Partial Input File for Workshop # 8
$
$ wkshp8.dat
$
SOL 101
DIAG 8
COMPILE semg, LIST
alter 'ema.*kjjz'
VECPLOT ,,BGPDTS,EQEXINS,CSTMS,,,,/RBGT1/GRDPNT//4 $ generate rigid-body matrix
TRNSP RBGT1/RBG $
TYPE PARM,NDDL,I,N,ZUZR1,ZUZR2,ZUZR3 $ qualifiers have to be defined
TYPE PARM,NDDL,CHAR8,N,ZNAME
TYPE DB,ZUZR12
ZUZR1 = SEID $ set first qualifier as the current superelement id
ZNAME = 'RBG ' $ set zname as datablock name
COPY RBG/ZUZR12 $ copy and store RBG
DBDICT DATABLK=(ZUZR12), SELECT=(NAME,SIZE,ZNAME,ZUZR1,ZUZR2,ZUZR3) $
MPYAD KJJZ,RBG,/REACG $ reactions to rigid-body motion
MPYAD RBGT1,REACG,/strain2 $ 2.* strain energy
DIAGONAL strain2/strain2d/'column' $ get diagonal terms
ADD strain2d,/strain/(.5,0.) $ divide by 2
NORM strain/tempx///s,n,largest $
type parm,,rs,n,tol= .000001 $ default tolerance
if(largest>tol) then $
message //'kgg failed rigid body test - strain energy follows' $
matprn strain// $
norm reacg/reacgn $
matgpr GPLS,USET0,SILS,REACGN//'H'/'G'//.01 $ print filtered reactions
else $
message //' matrix kgg passed rigid body test' $
endif $
$
compile sekr0
alter 'mce2.*knn'
type db,zuzr12
type parm,nddl,char8,n,zname $
zname='rbg '
type parm,nddl,i,n,zuzr1,zuzr2,zuzr3
upartn uset0,zuzr12/rbn,,,/'g'/'n'/'m'/1 $
mpyad rbn,knn,/reacn/1 $
mpyad reacn,rbn,/strainn2 $
diagonal strainn2/straind2/'column' $
add straind2,/straind/(.05,0.) $
norm straind/tempn///s,n,largestn $
type parm,,rs,n,tol= .000001 $ default tolerance
if(largestn>tol)then $
message //' knn failed rigid-body test'
norm reacn/reacnn $
matgpr gpls,uset0,sils,reacnn//'h'/'n'//.01 $
else $
message //' knn passed rigid-body test'
endif $
48
Partial Input File for Workshop # 8 (cont.)
endalter
cend
title = rigid-body test on kgg
load = 1
spc = 1
disp = all
begin bulk
grid,1,,1.
grid,2,,2.
grid,3,,3.
rbar,99,2,3,123456
celas2,99,10.,1,1,2,1
force,1,1,,1.,1.,0.,0.
spc1,1,123456,2
enddata
49
Solution File for Workshop # 8
$
$ soln8.dat
$
SOL 101
DIAG 8,5,6
COMPILE semg $
alter 'ema.*kjjz'
VECPLOT ,,BGPDTS,EQEXINS,CSTMS,,,,/RBGT1,,/GRDPNT//4 $ generate rigid-body matrix
TRNSP RBGT1/RBG $
TYPE PARM,NDDL,I,N,ZUZR1,ZUZR2,ZUZR3 $ qualifiers have to be defined
TYPE PARM,NDDL,CHAR8,N,ZNAME
TYPE DB,ZUZR12
ZUZR1 = SEID $ set first qualifier as the current superelement id
ZNAME = 'RBG ' $ set zname as datablock name
COPY RBG/ZUZR12 $ copy and store RBG
DBDICT DATABLK=(ZUZR12), SELECT=(NAME,SIZE,ZNAME,ZUZR1,ZUZR2,ZUZR3) $
MPYAD KJJZ,RBG,/REACG $ reactions to rigid-body motion
MPYAD RBGT1,REACG,/strain2 $ 2.* strain energy
DIAGONAL strain2/strain2d/'column' $ get diagonal terms
ADD strain2d,/strain/(.5,0.) $ divide by 2
NORM strain/tempx///s,n,largest $
type parm,,rs,n,tol= .000001 $ default tolerance
if(largest>tol) then $
message //'kgg failed rigid body test - strain energy follows' $
matprn strain// $
norm reacg/reacgn $
matgpr GPLS,USET0,SILS,REACGN//'H'/'G'//.01 $ print filtered reactions
else $
message //' matrix kgg passed rigid body test' $
endif $
$
compile sekr0
alter 'mce2.*knn'
type db,zuzr12
type parm,nddl,char8,n,zname $
ZNAME = 'RBG ' $ set zname as datablock name
type parm,nddl,i,n,zuzr1,zuzr2,zuzr3
DBDICT DATABLK=(ZUZR12), SELECT=(NAME,SIZE,ZNAME,ZUZR1,ZUZR2,ZUZR3) $
upartn uset0,zuzr12/rbn,,,/'g'/'n'/'m'/1 $
mpyad rbn,knn,/reacn/1 $
mpyad reacn,rbn,/strainn2 $
diagonal strainn2/straind2/'column' $
add straind2,/straind/(.5,0.) $
norm straind/tempn///s,n,largestn $
type parm,,rs,n,tol= .000001 $ default tolerance
if(largestn>tol)then $
message //' knn failed rigid-body test'
norm reacn/reacnn $
matgpr gpls,uset0,sils,reacnn//'h'/'n'//.01 $
else $
message //' knn passed rigid-body test'
endif $
50
$
Solution File for Workshop # 8 (cont.)
compile sekr $
alter 'upartn.*knn.*kff' $
type db,zuzr12
type parm,nddl,char8,n,zname $
ZNAME = 'RBG ' $ set zname as datablock name
type parm,nddl,i,n,zuzr1,zuzr2,zuzr3
DBDICT DATABLK=(ZUZR12), SELECT=(NAME,SIZE,ZNAME,ZUZR1,ZUZR2,ZUZR3) $
upartn uset,zuzr12/rbf,,,/'g'/'f'/'comp'/1 $
mpyad rbf,kff,/reacf/1 $
matprn rbf,kff// $
matprn reacf// $
mpyad reacf,rbf,/strainf2 $
diagonal strainf2/straind2/'column' $
add straind2,/straind/(.5,0.) $
norm straind/tempf///s,n,largestf $
type parm,,rs,n,tol= .000001 $ default tolerance
if(largestf>tol)then $
message //' kff failed rigid-body test'
norm reacf/reacff $
matgpr gpls,uset,sils,reacff//'h'/'f'//.01 $
else $
message //' kff passed rigid-body test'
endif $
$
endalter
cend
title = rigid-body test on kgg, knn, and kff
load = 1
spc = 1
disp = all
begin bulk
grid,1,,1.
grid,2,,2.
grid,3,,3.
rbar,99,2,3,123456
celas2,99,10.,1,1,2,1
force,1,1,,1.,1.,0.,0.
spc1,1,123456,2
enddata
51