Nasa - Fully-Coupled Fluid-Structure Vibration Analysis Using Nastran
Nasa - Fully-Coupled Fluid-Structure Vibration Analysis Using Nastran
Nasa - Fully-Coupled Fluid-Structure Vibration Analysis Using Nastran
Fernholz The George Washington University Joint Institute for Advancement of Flight Sciences Hampton, V A 23681{0001
Jay H. Robinson NASA Langley Research Center Structural Acoustics Branch Hampton, V A 23681{0001
MSC/NASTRAN's performance in the solution of fully-coupled uid/structure problems is evaluated. NASTRAN is used to perform normal modes (SOL 103) and forced-response analyses (SOL 108, 111) on cylindrical and cubic uid/structure models. Each model is discretized using nite element methods. Bulk data le cards unique to the specication of a uid/structure model are discussed and analytic partially-coupled solutions are derived for each type of problem. These solutions are used to evaluate NASTRAN's solutions for accuracy. Appendices to this work include NASTRAN data presented in fringe plot form, FORTRAN source code listings written in support of this work, and NASTRAN data le usage requirements for each analysis.
Nomenclature
A Fo E P a co h i l t u; v w x; y; z r; ; z
Length of a side for cube, plate Force amplitude Young's Modulus Acoustic pressure Radius for cylinder Acoustic speed of sound in an ideal gas Thickness of plate, shell p 01 Length of cylinder Time In-plane displacements Out-of-plane displacements Rectangular coordinate system Cylindrical coordinate system Damping coecient
1
f s !
Dirac delta Structural damping coecient Poission's ratio Density of uid Density of structure Frequency
Section 1: Introduction With the advent of more powerful computers, it is becoming possible to solve vibrations problems of ever increasing complexity. A greater dependence upon computers necessitates that researchers know the limits and capabilities of the computer systems and the software packages they are using. If these limits are unknown, the researcher may be unable to discern nonsensical data from accurate data provided by the computer. It is the aim of this paper to evaluate the capabilities of a commercially available nite element analysis package called MSC/NASTRAN (versions 67 and 68) in the analysis of fully coupled
uid/structure problems. Normal modes analysis and forced response analysis is used on two simple, well-understood geometric models. The models are dierent from each other both in shape and complexity in an eort to determine the accuracy of NASTRAN. The accuracy of a NASTRAN-generated solution is determined through comparison with classical analytic solutions. This paper is divided into two sections, one each for a cubic and a cylindrical geometry. Within each of these sections are analytic and numeric solutions for three types of problems. The rst problem is a normal modes analysis for a model containing
uid elements only. The second is a normal modes analysis of a model containing both
uid and structure elements. Normal modes of vibration are determined for the structural and
uid portions of the system. The third problem is a forced response analysis of the same model as that used in the second
2
problem. For the normal modes problems, both quadratic and linear element meshes are used. The forced response analysis makes use of a linear nite element mesh only. MSC/PATRAN was used as a graphical pre- and post-processor. FEM models and bulk data les were constructed within PATRAN. However, at the time of this work, PATRAN did not have the capability to work with uid elements. Thus, modications were made to the bulk data le outside of PATRAN before it was submitted to NASTRAN for analysis. These modications are discussed in this paper. Appendices to this work provide additional information about the numeric solutions to these problems. Appendix A tabulates NASTRAN's numeric results for each problem and compares it to the appropriate analytic result. MSC/PATRAN was used to produce the fringe plots shown. It should be noted that PATRAN uses a linear interpolation between nodes in a nite element mesh, no mater what type of element was used. Thus, linear and quadratic element meshes having an equal number of nodes will appear identical in a PATRAN-generated fringe plot. Appendix B lists the FORTRAN codes written in support of this work. Several codes make calls to Bessel function algorithms. These algorithms can be found in the text Numerical Recipes: The Art of Scientic Computing (FORTRAN Version)1 . Appendix C provides computer le usage data for the numerical solutions.
forces of equal magnitude and phase but opposite direction were applied to the model. They were applied such that translational vibration modes did not need to be considered for this analysis. The combination of these conditions makes an analytic solution of the problem straightforward. A skematic representation of the forced response
uid/structure model for the cubic geometry is shown in Figure 1.
Fluid/Structure Cubic Geometry, Exploded View
Figure 1: Exploded view of the uid/structure model for the cubic geometry.
r2 P 0 c12 @ P @t2
o
=0
(1)
(2)
Using the separation of variables technique2 in conjunction with the homogeneous boundary conditions
P (0; y; z; t) = P (A; y; z; t) = 0 P (x; 0; z; t) = P (x; A; z; t) = 0 P (x; y; 0; t) = P (x; y; A; t) = 0
(3)
1 1 1 XXX
Dnmk sin
(4)
where Dnmk is a constant to be determined from initial conditions. The natural frequencies
n2 + m2 + k2
(5)
A cubic
uid volume was discretized with three dierent meshes for analysis by MSC/NASTRAN. One model was constructed using 1000 linear HEX8 elements and 1331 nodes. The second model used 216 quadratic elements and 1225 nodes. The third model was discretized with 1000 quadratic HEX20 elements and 4961 nodes. The
uid in each of the models was given the material properties for density and speed of sound shown in Table 1. Boundary conditions in agreement with Equation 3 were also applied to the each of the models.
E h A co s f
Symbol
Property Name
Thickness of structure Acoustic speed of sound Poission's Ratio Density of structure Density of uid
13:620 2 103 in/sec 0.334 2:5383 2 1004 slugs=in3 1:170 2 1007 slugs=in3
To specify a
uid element within NASTRAN, several bulk data cards must be specied or changed. The brief outline of these cards which follows is as shown in the
Quick Reference Guide, Version 68. MSC/NASTRAN
regarding these cards. The rst card to be modied is the GRID card. The general format of this card is as shown in Figure 23 . A \-1" in the CD eld of the GRID card is used to signify a grid belonging to a
uid element. It should be noted that such a grid point can only be dened for volume elements.
GRID ID CP X1,X2,X3 CD PS SEID ID CP X1 X2 X3 CD PS SEID
Grid point identication number. Identication number of coordinate system in which the location of the grid point is dened. Location of the grid point in coordinate system CP. Identication number of coordinate system in which the displacements, degrees of freedom, constraints, and solution vectors are dened at the grid point. Permanent single-point constraints associated with the grid point. Superelement identication number. Figure 2: NASTRAN GRID bulk data card format.
The second card that must be specied is the material properties card. The format of the material properties card is shown in Figure 33 . Note that the MAT10 card species material properties for
uid elements only.
MAT10 MID BULK RHO C MID BULK RHO C
Material identication number. Bulk modulus. Mass density. Speed of sound Figure 3: NASTRAN MAT10 bulk data card format.
6
The third bulk data card that must be specied is the PSOLID card, shown in Figure 43 . For
uid elements in the model, the FCTN eld of the PSOLID card must be specied as \PFLUID".
PSOLID PID MID CORDM IN STRESS ISOP FCTN PID MID CORDM IN STRESS ISOP FCTN
Property identication number. Identication number of a MAT1, MAT4, MAT5, MAT9, or MAT10 entry. Identication number of the material coordinate system. Integration network. Location selection for stress output. Integration scheme. Fluid element ag. (Character: }PFLUID} indicates a uid element, }SMECH} indicates a structural element; defalut = }SMECH} Figure 4: NASTRAN PSOLID bulk data card format.
MSC/NASTRAN performed a normal modes analysis (SOL 103) on the linear and quadratic models. The NASTRAN-calculated frequency for the linear HEX8 model mode 1,1,1 was 2368.77 Hz. For the 1225{node quadratic HEX20 model, the eigenfrequency for this mode was 2359.18 Hz. The 4961{node quadratic HEX20 model yielded a frequency of 2359.32 Hz. For comparison with NASTRAN's results, the natural frequencies for these models can be determined analytically using Equation 5. From this relation, the rst natural frequency for each model is 2359.05 Hz, mode 1,1,1. A fringe plot of this mode shape for each of the models is shown in Figures A1, A2, and A3. It should be noted that in these (and subsequent) modal fringe plots, the displacements have been normalized to one. The NASTRAN solution was compared for accuracy against the analytic solution, Equation 4. A fringe plot displaying the dierence between analytic and numeric solutions at each node in the model was created for each case. The error plot for the linear HEX8 cube, mode 1,1,1 is shown in Figure A4. The error plot for the 1225{node quadratic HEX20 cube, mode
7
1,1,1 is shown in Figure A5. Figure A6 shows the error plot for the 4961{node quadratic model. This analysis was repeated for mode 1,3,1 of the linear model and mode 1,1,3 of the quadratic models. These mode shapes are shown in Figures A7, A8, and A9. The associated error plots for each of these mode shapes are shown in Figures A10, A11, andA12. A summary of the normal modes analysis for the uid cube is shown in Table 2. Here, the maximum model error is the largest dierence anywhere in the model between the normalized analytic and numeric solutions.
Model Type
1
Elements
Nodes
Mode Shape
Eigenvalue Error
Fluid only
1331 000 Linear HEX8 0.4117% 1,1,1 1225 215 Quadratic HEX20 0.0055% 4961 1000 Quadratic HEX20 0.0007% 1331 1000 Linear HEX8 3.134% 1225 1,3,1 215 Quadratic HEX20 0.3137% 4961 1000 Quadratic HEX20 0.0432% Table 2 Results for cubic geometry, normal modes analysis.
The Free Plate Problem for the Fluid/Structure Model Next, the model was modied by bounding two opposing faces of the
uid cube with thin, elastic plates. A partially coupled solution to the free vibration problem for this system is considered rst. For the unforced case, the thin elastic plate obeys the following equation of motion4:
D r4 w
+ sh @ w = 0 @t2
(6)
where
w is the displacement of the plate in the direction normal to its surface and D, the
D Eh = 12(1 0 2)
8
3
(7)
Assuming a harmonic time dependence and simply-supported boundary conditions at each edge, the out-of plane displacement
w can be written
1 1 XX
n=1 m=1
w(x; y; t) = ei!t
Cmn sin
mx
sin
ny
(8)
s n 2
D s h
(9)
(10)
That is, the
uid is constrained to match the behavior of the plates at those points where they are in contact. Applying these boundary conditions yields the following expression for P:
P (x; y; z; t) = 0ei!t
1 1 XX
n=1 m=1
Dmn sin
mx
sin
ny
cos(mnz )
(11)
where
2 = mn 2 0 2 21 !2 m +n 0 2 A2 co
(12)
and
Dmn = f !2Cmn 1 2 mn sin 2 mn (!mn 0 !2 )
0A
(13)
Three cubic
uid/structure models were constructed for a NASTRAN normal modes analysis. The
uid and structure elements within each of the models were given the material properties shown in Table 1. The number and type of elements and nodes were as shown in
9
Table 3. The boundary conditions of Equation 10 were applied to the uid surfaces in the model and the edges of the plates were simply supported.
Model
1
Material
Structure Fluid Structure Fluid Structure Fluid
Element Type
200 Linear QUAD4 1000 Linear HEX8 72 Quadratic QUAD8 216 Quadratic HEX20 200 Quadratic QUAD8 1000 Quadratic HEX20
Number of Nodes
242 1331 266 1225 682 4961
1491
5643
For models containing both
uid and structure elements, it is necessary in the NASTRAN bulk data le to explicitly specify which nodes lie on the interface between the
uid and structure portions of the model. This is accomplished by using the NASTRAN ACMODL card. The general format of ACMODL card is shown in Figure 53 . For this work, each structure grid in the SSET card had a corresponding
uid grid in the FSET card.
ACMODL INTER
INFOR
FSET
SSET
FSTOL
Type of interface between the uid and the structure. Indicates wether FSET and SSET are to be used to dene the uid-structure interface Identication number of a SET1 entry that contains a list of uid grid points on the interface. Identication number of a SET1 entry that contains a list of structural grid points on the interface. Tolerance, in units of length, used in determining the uid-structure interface. Figure 5: MSC/NASTRAN ACMODL bulk data card format.
Entry \by hand" of the nodes required for the ACMODL card would be an extraordinarily tedious task, particularly for more complicated or larger models. Several FORTRAN codes
10
were created to write this data for the ACMODL card from data already in the bulk data le. These codes are listed in Appendix B of this work. From Equation 9, the rst natural frequency of the plate is 484.54 Hz, mode 1,1. For the linear QUAD4 model, the NASTRAN-calculated eigenfrequency for mode 1,1 of the plate was 486.86 Hz. For the 266{node quadratic QUAD8 model, it was 481.02 Hz. The 682{node QUAD8 model yielded a result of 482.37 Hz. This mode shape is shown for each of the QUAD4 and QUAD8 models in Figures A13, A14, and A15. From these gures, it is apparent that a strong cross-coupling between the front (z= A ) and rear (z=0 A ) plates is occurring. Unlike 2 2 the partially-coupled analytic solution derived above, NASTRAN assumes a fully coupled solution. Thus, the rst mode shape of the front plate will be coupled through the uid to the rear plate in the NASTRAN solution. In the uncoupled analytic solution, the rst mode shape of the system is a 1,1 mode shape for one plate and a stationary (0,0) shape for the other. The uncoupled analytic solution was used to analyze the mode shapes present on the front plate of the model. The dierence between the analytic and numeric solutions at each node for all three models is shown in Figures A16, A17, and A18. This analysis was repeated for plate mode 2,2. This mode shape is shown in Figures A19, A20, and A21. The associated error plots are shown in Figures A22, A23, and A24. A summary of the normal modes of vibration for the structure portions of the cubic models is listed in Table 4.
Model Type
Elements
Nodes
Mode Shape
Eigenvalue Error
Table 4 Normal modes analysis for structure portion only of the
uid/structure model, cubic geometry. (Continued) . . .
11
200 Linear QUAD4 72 Quadratic QUAD8 Fluid/struct 200 Quadratic QUAD8 200 Linear QUAD4 72 Quadratic QUAD8 200 Quadratic QUAD8
Table 4 Normal modes analysis for structure portion only of the uid/structure model, cubic geometry.
For the uid portions of the system, fringe plots of NASTRAN calculated mode 1,1,0 are shown in Figures A25 (linear HEX8 elements), A26 (1225{node quadratic HEX20 model), and A27 (4961{node quadratic HEX20 model). For the linear model, NASTRAN calculated a frequency for this mode of 1934.09 Hz. For the 1225{node quadratic model, it was 1926.26 Hz. The 4961{node HEX20 model yielded 1926.17 Hz. A fringe plot showing the dierence between the analytic and numeric solutions of this mode for each model is shown in Figures A28, A29, and A30 This analysis was repeated for mode 1,1,1 of the uid for both models. This mode shape is shown in Figures A31, A32, and A33. The associated error plots are shown in Figures A34, A35, and A36. A summary of the normal modes of vibration for the uid is listed in Table 5.
Model Type
Elements
1000 Linear HEX8 216 Quadratic HEX20 1000 Quadratic HEX20 1000 Linear HEX8 216 Quadratic HEX20 1000 Quadratic HEX20
Nodes
1331 1225 4961 1331 1225 4961
Mode Shape
1,1,0
Eigenvalue Error
0.4637% 0.0052% 0.0007% 0.4117%
Fluid/struct
1,1,1
0.0054% 0.0007%
Maximum Error in Model 5 6 2 1006 728 0 2 1006 96 1 2 1006 6 6 2 1006 1 532 2 1003 198 6 2 1006
: : : : : :
Table 5 Normal modes analysis for
uid portion only of
uid/structure model, cubic geometry.
12
The Forced Fluid/Structure Problem The third and nal analysis performed for the cubic geometry model was that of forced vibration. A nite element model identical to the linear model used for the free vibration analysis was used, the only dierence being the application of a harmonic point force at the center of each plate in the system. The directional sense of these forces was such that they pointed in toward the
uid volume between the plates. Again, the analytic solution of the uncoupled problem is considered rst. For a forced vibration analysis of a thin, elastic plate including damping eects, the governing equation is now written
D r4 w +
@w @t
+ s h
@2w @t2
F (x; y; t)
(14)
where
is the viscous damping coecient and F(x,y,t) is a harmonic point force applied to the plate. For the case where this force is applied to the center of the plate, it can be written as:
i!t x F (x; y; t) = Fo e
A
2
y0
A
2
(15)
Applying simply-supported boundary conditions to the plate, the solution to Equation 14 is given by
w(x; y; t) = ei!t
XX
m=1 n=1
1 1
Cmn sin
mx
sin
ny
(16)
1 1
Fmnsin
m
2
sin
n
2
(17)
where
Fmn
= 4Fo
A2
(18)
and thus
Cmn
=
(19)
13
Note that in Equation 16, the viscous damping coecient
has been replaced by a frequencydependent damping coecient . The relation between these two coecients is:
= 2!mn s h
(20)
For the
uid in the region between the plates, Equation 1 and boundary conditions 10 still apply. Using the above results for the plates, the equation for acoustic pressure at a point in the
uid is now written
P (x; y; z; t) = 0ei!t
XX
1 1
n=1 m=1
Dmn sin
mx
sin
ny
cos(mnz )
(21)
where again
2 = mn 2 0 2 21 !2 m +n 0 2 A2 co
0 1 0 1
(22)
but
Dmn =
4
(23)
For the numerical analysis by NASTRAN of this forced-response problem point forces of {5sin(! t)n lbs. were applied to the center of each plate in the linear model. Boundary ^ conditions for the
uid and structure portions of the model were otherwise identical to those used for the free vibration problem. A direct frequency response analysis (SOL 108) was performed by NASTRAN over a frequency range from zero to 5000 Hz. Structural damping in the model was specied by using the PARAM G card in the NASTRAN bulk data le. Figure A37 shows the displacement of a node located at the center of the front plate for the linear QUAD4 model. Figure A38 shows the acoustic pressure disturbance at a node halfway between the center of the front plate and the center of the
uid region. Also shown are the partialy-coupled analytic solutions for the displacement and pressure respectively at these two locations.
14
A modal frequency response analysis (SOL 111) was next performed by NASTRAN on the same cubic-geometry model. The rst twenty NASTRAN-calculated uid and structural modes were used by NASTRAN to calculate the overall response of the model. It should be noted that the twentieth natural frequency of the structure, as calculated by NASTRAN, occurs at approximately 3000 HZ, while the twentieth natural frequency of the uid occurs above 5000 Hz. The results of this analysis for a frequency range of zero to 5000 Hz are shown in Figures A39 for a point at the center of the front plate, and A40 for a point midway between the front plate and the center of the cube, along with analytic solutions at each of these points.
15
r2 P 0 c12 @ P @t2
o
=0
(24)
where
r2 P
is given by
r2 P = @ P @r2
1 @P
r @r
r2 @2
1 @2P
@2P @z 2
(25)
= P (r; ; l) = 0 =0 (26)
P (a; ; z)
(periodicity)
1 1 1 XXX
Jn
rj r
a
sin
mz
l
(27)
16
where Jn is the nth order Bessel function, rj is its jth root, and a and l are the radius and length of the cylinder, respectively. The natural frequencies !jmn are given by
!jnm = co
r rj 2
a
m 2
l
(28)
Three cylindrical uid volumes were discretized for analysis by MSC/NASTRAN. One model was constructed using 2240 linear WEDGE6 elements and 1449 nodes, one used 348 quadratic WEDGE15 elements and 1200 nodes, and the third used 2240 quadratic WEDGE15 elements and 6609 nodes. The uid in each of the models was given the material properties for density and speed of sound shown in Table 6. Geometric dimensions are also shown in this table. Boundary conditions in agreement with Equation 26 were applied to each model.
Symbol
E a co h l s f
Young's Modulus
Property Name
Radius of cylinder Acoustic speed of sound Thickness of structure Length of the cylinder Poission's Ratio Density of structure Density of uid
13:620 2 103 in/sec 0.0625 in 5 in 0.334 2:5383 2 1004 slugs=in3 1:170 2 1007 slugs=in3
For each model, NASTRAN performed a normal modes analysis (SOL 103). The natural frequencies for this geometry can be determined analytically from Equation 28 for comparison to NASTRAN's results. Analytically, the rst natural frequency for this model is 5387.91
Hz, mode 1,0,1. The NASTRAN linear WEDGE6 model calculated an eigenfrequency of
5445.67 Hz for this mode. The quadratic 348{element model yielded a frequency 5392.38 Hz.
The mode 1,0,1 eigen frequency for the 2240{element WEDGE15 model was 5388.06 Hz. A
normalized fringe plot of this mode shape is shown for each model in Figures A41, A42, and
17
A43. The NASTRAN numeric solution was compared to the analytic solution, Equation 27. A fringe plot for each model showing the dierence between the analytic and numeric solutions at each node is shown in Figures A44, A45, and A46. This analysis was repeated for mode 1,1,3 for each model. This mode shape is shown in Figures A47, A48, and A49. However, at the time of this writing, it was not possible to create an error fringe plot for this mode. In calculating the eigenvectors for a model in which a rotational symmetry is present, NASTRAN introduces an arbitrary phase angle with respect to the analytic solution into its numeric solution. That is, the numeric solution is accurate, but its mode shape is rotated by some angle about its axis of symmetry. It was not possible to adequately determine what this angle was. Thus, a node-by node comparison to the analytic solution was not possible. A summary of the cylindrical normal modes analysis is shown in Table 7. The maximum model error is again the largest dierence anywhere in the model between the normalized analytic and numeric solutions.
Model Type
Elements
Nodes
Mode Shape
Eigenvalue Error
:
Fluid only
1.07% 1,0,1 82 87 2 1003% 6 50 2 1003% 3.04% 1,1,3 0.356% 0.015% Table 7 Results for cylindrical geometry, normal modes analysis.
:
2240 Linear WEDGE6 348 Quadratic WEDGE15 2240 Quadratic WEDGE15 2240 Linear WEDGE6 348 Quadratic WEDGE15 2240 Quadratic WEDGE15
vibration problem for this system using an uncoupled solution. For a thin, cylindrical shell,
1
2 CL
@2v @t2
2 CL
@2u @t2
2a
1+
@2u @z 2
0 0
1+ 2a2 2 1
C2
where
@2u @z@
@2w + @t2 a
0 @ 2 v 0 1 @ 2 v 0 1 @w = 0
@u @z
@2u @2 @z 2
+
1+ 2a2
@2v @z@
0 @w = 0 a @z
@
(29)
1
a2
@2
a2
a2
1 h2 @v + 2 w + 12 @ a
r4 w = 0
CL =
E s (1
0 2)
1 2
(30)
v(0; ) = v(l; ) = 0
(31)
w(0; ) = w(l; ) = 0
the complete solution to Equation 29 can be written as:
1 1 XX
n=0 m=0
cos
mz
l
1 1 XX
n=0 n=0
sin
mz
l
1 1 XX
(32)
n=0 m=0
sin
mz
l
Because of the boundary conditions imposed for this analysis, either the starred or un-starred
6 terms can be considered as a complete solution . This work will use the un-starred solution.
1 1 XX
n=0 m=0
1 1 XX 1 1 XX
Amn cos
mz
l
cos(n ) sin(n)
(33)
mz
l
mz
l
cos(n )
19
The end conditions shown in Equation 31 represent \shear diaphragms}7. Non|axial displacements at the ends of the cylindrical shell (at z = 0 and z = l) are zero. Substituting Equation 33 into Equation 29 yields: 1 32 20 3 2 3
6 4
where and
1+ n 2 1 0 10 2 0 n2 +
2 mn 2 n
(34)
mn
s
1 2 1 0 2 a2!mn
(35)
=
ma l
(36)
For non-trivial solutions to Equation 34, the determinant of the coecient matrix is set equal to zero. Doing so produces the following characteristic equation in
2 7: mn
6 0 K2
4 + K1
2 0 K0 = 0 mn mn mn (37)
where
K2 = 1 + K1 =
The roots of this equation in combination with Equation 35 can be used to calculate the natural frequencies !mn of the cylindrical shell. A more accurate description of the motion of thin cylindrical shell is provided by the Epstein-Kennard equations of motion. Unlike the Donnell-M
Kennard relation does not neglect changes in shear stresses acting through the thickness of the shell. For a more detailed analysis of this particular shell theory, the reader is referred to
(38)
the literature [7]. Here, it is noted that, with respect to the natural frequencies of vibration,
Equation 37 becomes
6 0 (K2 + k1K2)
4 + (K1 + k1K1)
2 0 (K0 + k1K0) = 0 mn mn mn
20
(39)
(40)
and
k= h2 12a2
(41)
= f @ w(; z) @t2
2
(42)
where w(; z ) represents the radial displacement of the cylindrical shell. That is, just as in the case for the cubic geometry, the
uid is constrained to match the behavior of the structure at those points where they are in contact. Applying these boundary conditions and using the results for the cylindrical shell yields the following expression for P5 :
P (r; ; z) = ei!t
XX
1 1
n=0 m=1
Dmn Jn (mn r)sin
mz
cos(n )
(43)
where
Dmn = mn
2n
(44)
and
2 = mn
!mn co
2
2 0 m l
(45)
Three cylindrical uid/structure models were constructed for NASTRAN normal modes analysis. The three models were discretized as shown in Table 8. The uid and structure elements within each of the models were given the material properties shown in Table 6. Boundary conditions as shown in Equations 31 and 42 were applied on each model.
Model
1
Material
Structure Fluid Structural Fluid Structure Fluid
Element Type
480 Linear QUAD4 2240 Linear WEDGE6 192 Quadratic QUAD8 672 Quadratic WEDGE15 480 Quadratic QUAD8 2240 Quadratic WEDGE15
Number of Nodes
504 1449 608 2121 1488 6609
2729
8097
From Equation 35, using Epstein-Kennard theory, the natural frequency of the cylindrical shell for mode 1,1 is 6248.99 Hz. Using the linear QUAD4 model, NASTRAN calculated an eigenfrequency of 6251.14 Hz. The 192{element QUAD8 model yielded a frequency for this mode of 6256.34 Hz. A frequency of 6245.55 Hz was calculated using the 480{element QUAD8 model. This mode shape is shown for the u, v, and w displacements for each model in Figures A50, A51, A52, A53, A54, A55, A56, A57, and A58. The \breathing modes" of the shell, i.e. modes where m=1 and n=0 in Equation 33 occur (using Epstein-Kennard theory) for this model at 12,318.19 Hz, 19,585.91 Hz and 35,037.39 Hz. The second frequency, 19,585.91 Hz, is shown for each model in Figures A59, A60, A61, A62, A63, A64, A65, A66, and A67, with error plots for the radial displacements in Figures A68, A69, and A70.
22
For the uid inside the cylindrical shell, fringe plots of NASTRAN-calculated mode 1,0,1 is shown in Figures A71 (linear WEDGE6 elements), A72 (672{element WEDGE15 model) and A73 (2240{element WEDGE15 model). A fringe plot showing the dierence between the analytic and numeric solutions of this mode is shown in Figures A74, A75, and A76. A summary of the normal modes analysis for the structure portion of the uid/structure cylinder is shown in Table 9.
Model Type
Elements
2240 Linear WEDGE6 672 Quadratic WEDGE15 2240 Quadratic WEDGE15
Nodes
1449 2121 6609 504 608 1488 504 608 1488
Mode Shape
1,0,1
Eigenvalue Error
2:937 2 1004% 7:34 2 1005 % 0.143% 0.102%
0.0824 101:3 2 1006 N/A N/A 0:087 2 1006 13:279 2 1003 -0.0270 N/A
Fluid/struct.
480 Linear QUAD4 192 Quadratic QUAD8 480 Quadratic QUAD8 480 Linear QUAD4 192 Quadratic QUAD8 480 Quadratic QUAD8
1,1
1,0
0.294% 0.040%
The Forced Fluid/Structure Problem The third problem considered for the cylindrical
uid/structure model was that of a forced response. As we did for the cubic model, we rst consider the analytic partially-coupled solution of this problem. The cylindrical shell equations of motion with viscous damping are given by5:
2 L11 6L 4
21
L31
2 3
3
(46)
where
= =
@ 0 @z a
+ @ 0 1 2a @z@
= = =
@2 2 CL @t2
1
Eh
0 2
@ @t
@ @ 0 1 0 @z 2 0 a12 @2 2
2 2
(47)
@ 0 a12 @ @ a @z
1
= =
a2
1
@ @
+
@2 2 @t2 CL
Eh
0 2
@ @t
a2
h2 4 r
12
and fz ; f ;
and fr
Here
5 the convention of a positive inward-directed radial force has been assumed . Applying forces
to the cylinder of
fz f
=0 =0
(48) [ ( ) + (
fr
Fo sin(!t) z 0
l
2
0 )];
expanding these forces in terms of the eigenfunctions of the shell and once again using Equation
32
3
(49)
where now
2 L11 = 0!2 + 2i!!mn + 2 CL +
1
0 n2 C 2
a2
L12 = L21 = 0
1+ 2
2 nCL
(50)
2 h2 CL 0 2 2 2 12 a +n
12 (51)
Fo sin
m
2
cos(n) + 1]
(52)
Note that in these equations, the viscous damping term
has once again been replaced by a frequency-dependent damping term . For the
uid inside the shell, we proceed as we did for the undamped, free vibration case. That is, applying the boundary conditions of Equation 42 to the cylindrical wave equation (Equation 24), the solution for the acoustic pressure eld becomes:5
P (r; ; z ) = ei!t
XX
1 1
n=0 m=1
Dmn Jn (mn r)sin
mz
cos(n )
(53)
with
Dmn = mn 2
2n
(54)
and
mn
!mn 2 m 2 0 l co
(55)
For the NASTRAN analysis of this problem, a cylindrical nite element model was constructed using linear elements. The nite element mesh was identical to the linear mesh
25
used for the cylindrical free vibrations problems. The geometric characteristic of this problem were modied as shown in Table 10. The structural and
uid elements were given the material properties shown in Table 6.
Radius (a) Length (l) Shell Thickness (h) 10.0 in 50.0 in 0.0625 in
Table 10 Geometric dimensions for the cylindrical geometry forced-response analysis model.
Boundary conditions in agreement with Equations 31 and 42 were applied to the appro^ priate structural and uid elements respectively. Two point forces of 50 sin (!t)k lbs., in phase
l z= 2
and = ;
l z = 2.
NASTRAN
performed a direct frequency response (SOL 108) over the frequency range zero to 5000 Hz. Analytic and NASTRAN-generated numeric solutions for the frequency range zero to 1000 Hz are shown in Figures A78 and A77. Figure A78 shows the displacement vs. frequency of a structural node located at a
uid node at location
l r = a; = 0; z = 2 .
l r = a ; = 0; z = 2 . 2
Section 4: Conclusions MSC/NASTRAN has been used to numerically calculate a number of dierent mode shapes for a cubic and a cylindrical acoustic cavity. The accuracy of the NASTRAN fullycoupled
uid/structure solution improves with the use of elements having a greater number of nodes (i.e. linear vs. quadratic elements). The dierence in performance between these two elements becomes particularly signicant in models involving a curved geometry. This result is not unexpected, as, it is dicult to model accurately a curved shape using only straight linear elements. No substantial change in performance was noted in going from a
uid-only model to a model containing both
uid and structure elements. NASTRAN was able to compute the
26
normal modes for each model quickly and accurately. In sum, NASTRAN's calculation of the normal modes (SOL 103) for a model tended to be simple, direct, quick, and accurate. Hard disk space limitations were factor that became an important consideration during the forced response analysises, particularly when the direct method (SOL 108) was used. In general, rather than use system memory, NASTRAN writes data to les during the solution of a nite element problem. Although most of these les are deleted when the NASTRAN solution is completed, they can become quite large during the process of solving the problem. If enough free space is not available for use by NASTRAN, the problem cannot be solved. To work around this problem, the forced response analysis for the cylindrical geometry was submitted to NASTRAN as four separate problems, each covering a range of 250 frequencies. After the solutions for each problem were calculated, they were combined to form a complete solution for the entire frequency range of interest. Appendix C of this work contains a listing of the signicant les produced by NASTRAN during each analysis and the size of each le. While this method was workable for the problem at hand, it could become very unwieldy with the addition of more nodes and/or elements to the model. In short, NASTRAN's normal modes analysis was very robust. For a reasonable model discretization, its results can be considered accurate. However, for the cases where a forced response analysis of a uid/structure model is required, careful consideration should be given to ways in which the model can be simplied and which frequencies are of prime interest.
Acknowledgments
The authors gratefully acknowledge the assistance of Travis Turner and Richard S. Matthews, without whom this work would not have been possible
27
References
[1] William H. Press. Numerical Recipes: The Art of Scientic Computing. Cambridge University Press, rst edition, 1990. [2] Tyn Myint-U with Lokenath Debnath. Partial Dierential Equations for Scientists and
28
Appendix A Figures
0. -.06667 -.1333 -.2000 -.2667 -.3333 -.4000 -.4667 -.5333 -.6000 -.6667 Y -.7333 -.8000 Z X -.8667 -.9333 -1.000
Figure A1: Mode 1,1,1 for cubic geometry, 1000 linear HEX8 elements, 1331 nodes.
1.000 .9333 .8667 .8000 .7333 .6667 .6000 .5333 .4667 .4000 .3333 Y Z X .2667 .2000 .1333 .06667 .00000004500
Figure A2: Mode 1,1,1 for cubic geometry, 215 quadratic HEX20 elements, 1225 nodes.
29
1.000 .9333 .8667 .8000 .7333 .6667 .6000 .5333 .4667 .4000 .3333 Y .2667 .2000 Z X .1333 .06667 .00000004500
Figure A3: Mode 1,1,1 for cubic geometry, 1000 quadratic HEX20 elements, 4961 nodes.
.000006831 .000006032 .000005233 .000004434 .000003636 .000002837 .000002038 .000001240 .0000004410 -.0000003580 -.000001157 Y -.000001956 -.000002755 Z X -.000003554 -.000004352 -.000005151
Figure A4: Mode 1,1,1 error for cubic geometry,
30
.000003375 -.00009951 -.0002024 -.0003053 -.0004082 -.0005111 -.0006139 -.0007168 -.0008197 -.0009226 -.001025 Y Z X -.001128 -.001231 -.001334 -.001437 -.001540
Figure A5: Mode 1,1,1 error for cubic geometry,
.000006602 -.000007180 -.00002096 -.00003474 -.00004852 -.00006230 -.00007609 -.00008987 -.0001036 -.0001174 -.0001312 Y -.0001450 -.0001588 Z X -.0001726 -.0001863 -.0002001
Figure A6: Mode 1,1,1 error for cubic geometry, 1000 quadratic HEX20 elements, 4961 nodes.
31
.4341 .3385 .2429 .1473 .05170 -.04391 -.1395 -.2351 -.3307 -.4263 -.5220 Y -.6176 -.7132 Z X -.8088 -.9044 -1.000
Figure A7: Mode 1,3,1 for cubic geometry, 1000 linear HEX8 elements, 1331 nodes.
.6045 .4975 .3905 .2836 .1766 .06965 -.03731 -.1443 -.2512 -.3582 -.4652 Y Z X -.5721 -.6791 -.7861 -.8930 -1.000
Figure A8: Mode 1,1,3 error for cubic geometry,
32
1.000 .8852 .7703 .6555 .5407 .4259 .3110 .1962 .08139 -.03343 -.1483 Y -.2631 -.3779 Z X -.4927 -.6076 -.7224
Figure A9: Mode 1,1,3 for cubic geometry, 1000 quadratic HEX20 elements, 4961 nodes.
.5222 .4387 .3552 .2717 .1881 .1046 .02111 -.06241 -.1459 -.2295 -.3130 Y -.3965 -.4800 Z X -.5635 -.6471 -.7306
Figure A10: Mode 1,3,1 error for cubic geometry, 1000 linear HEX8 elements, 1331 nodes.
33
.4593 .3981 .3368 .2756 .2143 .1531 .09186 .03062 -.03062 -.09186 -.1531 Y Z X -.2143 -.2756 -.3368 -.3981 -.4593
Figure A11: Mode 1,1,3 error for cubic geometry, 215 quadratic HEX20 elements, 1225 nodes.
.3861 .3409 .2957 .2506 .2054 .1603 .1151 .06996 .02480 -.02036 -.06551 Y -.1107 -.1558 Z X -.2010 -.2461 -.2913
Figure A12: Mode 1,1,3 error for cubic geometry, 1000 quadratic HEX20 elements, 4961 nodes.
34
1.000 .9333 .8667 .8000 .7333 .6667 .6000 .5333 .4667 .4000 .3333 Y .2667 .2000 Z X .1333 .06667 .00000004500
Figure A13: Mode 1,1 for structure portion of uid/structure cube. 200 linear QUAD4 elements, 242 nodes.
.1314 .05594 -.01948 -.09491 -.1703 -.2458 -.3212 -.3966 -.4720 -.5475 -.6229 Y -.6983 -.7737 Z X -.8492 -.9246 -1.000
Figure A14: Mode 1,1 for structure portion of uid/structure cube. 72 quadratic QUAD8 elements, 266 nodes.
35
0. -.06667 -.1333 -.2000 -.2667 -.3333 -.4000 -.4667 -.5333 -.6000 -.6667 Y -.7333 -.8000 Z X -.8667 -.9333 -1.000
Figure A15: Mode 1,1 for structure portion of uid/structure cube. 200 quadratic QUAD8 elements, 682 nodes.
.0000000000000 -.000008619 -.00001724 -.00002586 -.00003448 -.00004309 -.00005171 -.00006033 -.00006895 -.00007757 -.00008619 Y -.00009481 -.0001034 Z X -.0001120 -.0001207 -.0001293
Figure A16: Mode 1,1 error for cubic uid/structure geometry (front plate only). 200 quadratic QUAD4 elements, 242 nodes.
36
.0000000000000 -.0001215 -.0002430 -.0003645 -.0004860 -.0006075 -.0007290 -.0008505 -.0009720 -.001094 -.001215 Y -.001337 -.001458 Z X -.001580 -.001701 -.001823
Figure A17: Mode 1,1 error for cubic uid/structure geometry (front plate only). 72 quadratic QUAD8 elements, 266 nodes.
.0000000000000 -.00007785 -.0001557 -.0002336 -.0003114 -.0003893 -.0004671 -.0005450 -.0006228 -.0007007 -.0007785 Y -.0008564 -.0009342 Z X -.001012 -.001090 -.001168
Figure A18: Mode 1,1 error for cubic uid/structure geometry (structure only). 200 quadratic QUAD8 elements, 682 nodes.
37
1.000 .8667 .7333 .6000 .4667 .3333 .2000 .06667 -.06666 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A19: Mode 2,2 for structure portion of uid/structure cube. 200 linear QUAD4 elements, 242 nodes.
1.000 .8667 .7333 .6000 .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A20: Mode 2,2 for structure portion of uid/structure cube. 72 quadratic QUAD8 elements, 266 nodes.
38
1.000 .8667 .7333 .6000 .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A21: Mode 2,2 for structure portion of uid/structure cube. 200 QUAD8 elements, 682 nodes.
.09548 .08275 .07002 .05729 .04456 .03183 .01909 .006362 -.006369 -.01910 -.03183 Y -.04456 -.05730 Z X -.07003 -.08276 -.09549
Figure A22: Mode 2,2 error for cubic uid/structure geometry (front plate only). 200 linear QUAD4 elements, 242 nodes.
39
.1340 .1161 .09825 .08038 .06252 .04466 .02679 .008931 -.008932 -.02680 -.04466 Y -.06252 -.08038 Z X -.09825 -.1161 -.1340
Figure A23: Mode 2,2 error for cubic uid/structure geometry (front plate only). 72 quadratic QUAD8 elements, 266 nodes.
.04894 .04242 .03589 .02937 .02284 .01631 .009789 .003263 -.003263 -.009789 -.01631 Y -.02284 -.02937 Z X -.03589 -.04242 -.04894
Figure A24: Mode 2,2 error for cubic uid/structure geometry (front plate only). 200 quadratic QUAD8 elements, 682 nodes.
40
0. -.06667 -.1333 -.2000 -.2667 -.3333 -.4000 -.4667 -.5333 -.6000 -.6667 Y -.7333 -.8000 Z X -.8667 -.9333 -1.000
Figure A25: Mode 1,1,0 for uid portion of uid/structure cube. 1000 linear HEX8 elements, 1331 nodes.
0. -.06667 -.1333 -.2000 -.2667 -.3333 -.4000 -.4667 -.5333 -.6000 -.6667 Y -.7333 -.8000 Z X -.8667 -.9333 -1.000
Figure A26: Mode 1,1,0 for uid portion of uid/structure cube. 216 quadratic HEX20 elements, 1225 nodes.
41
1.000 .9333 .8667 .8000 .7333 .6667 .6000 .5333 .4667 .4000 .3333 Y .2667 .2000 Z X .1333 .06667 .00000004500
Figure A27: Mode 1,1,0 for uid portion of uid/structure cube. 1000 quadratic HEX20 elements, 4962 nodes.
.000005216 .000004495 .000003773 .000003052 .000002331 .000001610 .0000008880 .0000001670 -.0000005540 -.000001276 -.000001997 Y -.000002718 -.000003440 Z X -.000004161 -.000004882 -.000005603
Figure A28: Mode 1,1,0 error for uid/structure geometry ( uid only). 1000 linear HEX8 elements, 1331 nodes.
42
.0007277 .0006779 .0006281 .0005783 .0005285 .0004787 .0004290 .0003792 .0003294 .0002796 .0002298 Y .0001801 .0001303 Z X .00008049 .00003071 -.00001907
Figure A29: Mode 1,1,0 error for uid/structure geometry ( uid only). 216 quadratic HEX20 elements, 1225 nodes.
.0000007150 -.000005742 -.00001220 -.00001866 -.00002511 -.00003157 -.00003803 -.00004449 -.00005094 -.00005740 -.00006386 Y -.00007031 -.00007677 Z X -.00008323 -.00008969 -.00009614
Figure A30: Mode 1,1,0 error for cubic uid/structure geometry ( uid only). 1000 quadratic HEX20 elements, 4962 nodes.
43
1.000 .8667 .7333 .6000 .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A31: Mode 1,1,1 for uid portion of uid/structure cube. 1000 linear HEX8 elements, 1331 nodes.
1.000 .8667 .7333 .6000 .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667
Figure A32: Mode 1,1,1 for uid portion of uid/structure cube. 216 quadratic HEX20 elements, 1225 nodes.
-1.000
44
1.000 .8667 .7333 .6000 .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A33: Mode 1,1,1 for uid portion of uid/structure cube. 1000 quadratic HEX20 elements, 4962 nodes.
.000006617 .000005802 .000004987 .000004173 .000003358 .000002544 .000001729 .0000009140 .00000009900 -.0000007150 -.000001530 Y -.000002345 -.000003160 Z X -.000003974 -.000004789 -.000005603
Figure A34: Mode 1,1,1 error for cubic uid/structure geometry ( uid only). 1000 linear HEX8 elements, 1331 nodes.
45
.001532 .001328 .001124 .0009195 .0007151 .0005108 .0003065 .0001022 -.0001022 -.0003065 -.0005108 Y -.0007151 -.0009195 Z X -.001124 -.001328 -.001532
Figure A35: Mode 1,1,1 error for cubic uid/structure geometry ( uid only). 216 quadratic HEX20 elements, 1225 nodes.
.0001986 .0001721 .0001456 .0001192 .00009268 .00006620 .00003972 .00001324 -.00001324 -.00003972 -.00006620 Y -.00009268 -.0001192 Z X -.0001456 -.0001721 -.0001986
Figure A36: Mode 1,1,1 error for cubic uid/structure geometry ( uid only). 1000 quadratic HEX20 elements, 4962 nodes.
46
10-1
Numeric So Analytic S
10-2
Displacement (log)
10-3
10-4
Frequency (Hz)
Figure A37: Displacement at the center of the z=5 plate on the uid/structure cube. NASTRAN direct frequency response analysis. 1200 linear elements, 1573 nodes. Analytic and numeric solutions shown.
10
10-1
10-2
10-3
10-4
Numeric So Analytic S
10-5
10
-6
1000
2000
3000
4000
5000
Frequency (Hz)
Figure A38: Acoustic pressure at the point (2.5,2.5,3.5) in the uid/structure cube. NASTRAN direct frequency response analysis. 1200 linear elements, 1573 nodes. Analytic and numeric solutions shown.
47
10-1
Numeric So Analytic S
10-2
Displacement (log)
10-3
10
-4
Frequency (Hz)
Figure A39: Displacement at the center of the z=5 plate on the uid/structure cube. NASTRAN modal frequency response analysis. 1200 linear elements, 1573 nodes. Analytic and numeric solutions shown.
10
10-1
Displacement (log)
10-2
10-3
10-4
10-5
Numeric So Analytic S
10
-6
1000
2000
3000
4000
5000
Frequency (Hz)
Figure A40: Acoustic pressure at the point (2.5,2.5,3.5) in the uid/structure cube. NASTRAN modal frequency response analysis. 1200 linear elements, 1573 nodes. Analytic and numeric solutions shown.
48
1.000 .9333 .8667 .8000 .7333 .6667 .6000 .5333 .4667 .4000 .3333 Y .2667 .2000 Z X .1333 .06667 .00000004500
Figure A41: Fluid mode 1,0,1 for cylindrical geometry,
1.000 .9333 .8667 .8000 .7333 .6667 .6000 .5333 .4667 .4000 .3333 Y .2667 .2000 Z X .1333 .06667 .00000004500
Figure A42: Fluid mode 1,0,1 for cylindrical geometry, 348 quadratic WEDGE15 elements, 1200 nodes.
49
0. -.06667 -.1333 -.2000 -.2667 -.3333 -.4000 -.4667 -.5333 -.6000 -.6667 Y -.7333 -.8000 Z X -.8667 -.9333 -1.000
Figure A43: Fluid mode 1,0,1 for cylindrical geometry,
.01687 .01575 .01462 .01350 .01237 .01125 .01012 .008998 .007873 .006748 .005623 Y .004499 .003374 Z X .002249 .001124 -.0000004860
Figure A44: Fluid mode 1,0,1 error for cylindrical geometry, 2240 linear WEDGE6 elements, 1449 nodes.
50
.004925 .004488 .004051 .003614 .003177 .002740 .002303 .001866 .001429 .0009924 .0005555 Y .0001185 -.0003184 Z X -.0007554 -.001192 -.001629
Figure A45: Fluid mode 1,0,1 error for cylindrical
.0007742 .0007226 .0006709 .0006193 .0005677 .0005161 .0004645 .0004129 .0003613 .0003097 .0002581 Y .0002064 .0001548 Z X .0001032 .00005161 .0000000000000
Figure A46: Fluid mode 1,0,1 error for cylindrical geometry, 2440 quadratic WEDGE15 elements, 6609 nodes.
51
1.000 .8667 .7333 .6000 .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A47: Fluid mode 1,1,3 for cylindrical geometry,
1.000 .8668 .7334 .6001 .4667 .3334 .2000 .06667 -.06667 -.2000 -.3334 Y -.4667 -.6001 Z X -.7334 -.8668 -1.000
Figure A48: Fluid mode 1,1,3 for cylindrical geometry, 348 quadratic WEDGE15 elements, 1200 nodes.
52
1.000 .8667 .7333 .6000 .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A49: Fluid mode 1,1,3 for cylindrical geometry, 2240 quadratic WEDGE15 elements, 6609 nodes.
1.000 .8667 T 1 Z .7333 .6000 R .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A50: U-displacement (axial) of cylindrical shell, mode 1,1. 480 linear QUAD4 elements, 504 nodes.
53
1.000 .8667 T 1 Z .7333 .6000 R .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A51: V-displacement (circumferential) of cylindrical shell, mode 1,1. 480 linear QUAD4 elements, 504 nodes.
1.000 .8667 T 1 Z .7333 .6000 R .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A52: W-displacement (radial) of cylindrical shell, mode 1,1. 480 linear QUAD4 elements, 504 nodes.
54
1.000 .8667 .7333 .6000 .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A53: U-displacement (axial) of cylindrical shell, mode 1,1. 192 quadratic QUAD8 elements, 608 nodes.
62.94 54.54 46.15 37.76 29.37 20.98 12.59 4.196 -4.196 -12.59 -20.98 Y -29.37 -37.76 Z X -46.15 -54.54 -62.94
Figure A54: V-displacement (circumferential) of cylindrical shell, mode 1,1. 192 quadratic QUAD8 elements, 608 nodes.
55
61.08 52.94 44.79 36.65 28.50 20.36 12.22 4.072 -4.072 -12.22 -20.36 Y -28.50 -36.65 Z X -44.79 -52.94 -61.08
Figure A55: W-displacement (radial) of cylindrical shell, mode 1,1. 192 quadratic QUAD8 elements, 608 nodes.
1.000 T 1 Z .8667 .7333 R .6000 .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A56: U-displacement (axial) of cylindrical shell, mode 1,1. 480 quadratic QUAD8 elements, 1488 nodes.
56
1.000 T 1 Z .8667 .7333 R .6000 .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A57: V-displacement (circumferential) of cylindrical shell, mode 1,1. 480 quadratic QUAD8 elements, 1488 nodes.
1.000 T 1 Z .8667 .7333 R .6000 .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A58: W-displacement (radial) of cylindrical shell, mode 1,1. 480 quadratic QUAD8 elements, 1488 nodes.
57
60.82 52.71 T 1 Z 44.60 36.49 R 28.38 20.27 12.16 4.055 -4.055 -12.16 -20.27 Y -28.38 -36.49 Z X -44.60 -52.71 -60.82
Figure A59: U-displacement (axial) of cylindrical shell, mode 1,0 (breathing mode). 480 linear QUAD4 elements, 504 nodes
.00005914 .00005131 T 1 Z .00004348 .00003565 R .00002782 .00001999 .00001216 .000004335 -.000003495 -.00001132 -.00001915 Y -.00002698 -.00003481 Z X -.00004264 -.00005047 -.00005830
Figure A60: V-displacement (circumferential) of cylindrical shell, mode 1,0 (breathing mode). 480 linear QUAD4 elements, 504 nodes. Eigenvector not normalized to one.
58
0. -1.263 T 1 Z -2.527 -3.790 R -5.054 -6.317 -7.580 -8.844 -10.11 -11.37 -12.63 Y -13.90 -15.16 Z X -16.42 -17.69 -18.95
Figure A61: W-displacement (radial) of cylindrical shell, mode 1,0 (breathing mode). 480 linear QUAD4 elements, 504 nodes.
1.000 .8667 .7333 .6000 .4667 .3333 .2000 .06667 -.06667 -.2000 -.3333 Y -.4667 -.6000 Z X -.7333 -.8667 -1.000
Figure A62: U-displacement (axial) of cylindrical shell, mode 1,0 (breathing mode). 192 quadratic QUAD8 elements, 608 nodes.
59
1.000 .8674 .7347 .6021 .4695 .3368 .2042 .07156 -.06107 -.1937 -.3263 Y -.4590 -.5916 Z X -.7242 -.8569 -.9895
Figure A63: V-displacement (circumferential) of cylindrical shell, mode 1,0 (breathing mode). 192 quadratic QUAD8 elements, 608 nodes.
0. -.06667 -.1333 -.2000 -.2667 -.3333 -.4000 -.4667 -.5333 -.6000 -.6667 Y -.7333 -.8000 Z X -.8667 -.9333 -1.000
Figure A64: W-displacement (axial) of cylindrical shell, mode 1,0 (breathing mode). 192 quadratic QUAD8 elements, 608 nodes.
60
60.44 T 1 Z 52.38 44.32 R 36.26 28.21 20.15 12.09 4.029 -4.029 -12.09 -20.15 Y -28.21 -36.26 Z X -44.32 -52.38 -60.44
Figure A65: U-displacement (axial) of cylindrical shell, mode 1,0 (breathing mode). 480 quadratic QUAD8 elements, 1488 nodes.
.002703 T 1 Z .002343 .001982 R .001622 .001262 .0009011 .0005406 .0001802 -.0001803 -.0005408 -.0009012 Y -.001262 -.001622 Z X -.001983 -.002343 -.002704
Figure A66: V-displacement (circumferential) of cylindrical shell, mode 1,0 (breathing mode). 480 quadratic QUAD8 elements, 1488 nodes. Eigenvector not normalized to one.
61
18.91 T 1 Z 17.65 16.39 R 15.13 13.87 12.61 11.35 10.09 8.825 7.565 6.304 Y 5.043 3.782 Z X 2.522 1.261 .000004292
Figure A67: W-displacement (radial) of cylindrical shell, mode 1,0 (breathing mode). 480 quadratic QUAD8 elements, 1488 nodes.
.0000005070 -.00002158 -.00004366 -.00006574 -.00008783 -.0001099 -.0001320 -.0001541 -.0001762 -.0001982 -.0002203 Y -.0002424 -.0002645 Z X -.0002866 -.0003087 -.0003307
mode 1,0 (breathing mode). 480 linear QUAD4 elements, 504 nodes.
62
.00001526 -.001782 -.003579 -.005377 -.007174 -.008972 -.01077 -.01257 -.01436 -.01616 -.01796 Y -.01976 -.02155 Z X -.02335 -.02515 -.02695
Figure A69: W-displacement (radial) error for cylindrical shell, mode 1,0 (breathing mode). 192 quadratic QUAD8 elements, 608 nodes.
.001328 .001238 .001147 .001057 .0009670 .0008767 .0007865 .0006963 .0006061 .0005158 .0004256 Y .0003354 .0002452 Z X .0001549 .00006472 -.00002551
Figure A70: W-displacement (radial) error for cylindrical shell, mode 1,0 (breathing mode). 480 quadratic QUAD8 elements, 1488 nodes.
63
1.000 .9333 T 1 Z .8667 .8000 R .7333 .6667 .6000 .5333 .4667 .4000 .3333 Y .2667 .2000 Z X .1333 .06667
Figure A71: Acoustic pressure inside cylindrical shell, uid mode 1,0,1. 2241 linear WEDGE6 elements, 1449 nodes.
.00000004500
0. -.06667 -.1333 -.2000 -.2667 -.3333 -.4000 -.4667 -.5333 -.6000 -.6667 Y -.7333 -.8000 Z X -.8667 -.9333 -1.000
Figure A72: Acoustic pressure inside cylindrical shell, uid mode 1,0,1. 672 quadratic WEDGE15 elements, 2121 nodes.
64
1.000 T 1 Z .9333 .8667 R .8000 .7333 .6667 .6000 .5333 .4667 .4000 .3333 Y .2667 .2000 Z X .1333 .06667 .00000004500
Figure A73: Acoustic pressure inside cylindrical shell, mode 1,0,1. 2241 quadratic WEDGE15 elements, 6609 nodes.
.00009835 .00009179 T 1 Z .00008524 .00007868 R .00007212 .00006557 .00005901 .00005245 .00004590 .00003934 .00003278 Y .00002623 .00001967 Z X .00001311 .000006557
Figure A74: Mode 1,0,1 error for cylindrical uid/structure geometry ( uid only). 2241 linear WEDGE6 elements 1449 nodes.
.0000000000000
65
.08239 .07690 .07141 .06592 .06042 .05493 .04944 .04394 .03845 .03296 .02746 Y .02197 .01648 Z X .01099 .005493 .000000003000
Figure A75: Mode 1,0,1 error for cylindrical uid/structure geometry ( uid only). 672 quadratic WEDGE15 elements, 2121 nodes.
.0001013 T 1 Z .00009457 .00008782 R .00008106 .00007431 .00006755 .00006080 .00005404 .00004729 .00004053 .00003378 Y .00002702 .00002027 Z X .00001351 .000006756 .0000000000000
Figure A76: Mode 1,0,1 error for cylindrical uid/structure geometry ( uid portion only). 2241 quadratic WEDGE15 elements, 6609 nodes.
66
W Analytic W Numeric
10
-1
10-2
10-3
200
400
600
800
1000
Frequency (Hz)
l Figure A77: Radial displacement at the coordinates r = a; = 0; z = 2 for the uid/structure cylinder. NASTRAN direct frequency response analysis. 2720 linear elements, 1953 nodes. Analytic and numeric solutions shown.
67
Numeric and Analytic Acoustic Pressure Fields vs. Frequency, Cylindrical Geometry
Acoustic Pressure at location (x,y,z) a/2,0,L/2 (node 1218)
0
10
10
-1
10-2
10-3
10-4
P Analytic P Numeric
10
-5
10
-6
200
400
600
800
1000
Frequency (Hz)
l Figure A78: Acoustic pressure at the coordinates r = a ; = 0; z = 2 for the 2
uid/structure cylinder. NASTRAN direct frequency response. 2720 linear elements, 1953 nodes. Analytic and numeric solutions shown
68
This Appendix contains a source code listing of the FORTRAN programs written in support of this work. A brief description of each of these codes is shown in Table 11.
General Data Manipulation
NASTRAN bulk data le is modied such that it contains uid elements only. Converts NASTRAN .pch le to a PATRAN-readable .res le. Fluid pressures at each node are written as }displacements} in the x-direction. Converts NASTRAN .pch le to a TECPLOT data le. For use with forced-response analysis Compares analytic and numeric normal modes solutions for uid-only cube at each node. Creates ACMODL card for a cubic geometry. Compares analytic and numeric normal modes solutions for the uid/structure cube at each node. Computes analytic forced-response at a given location for the uid/structure cubic geometry. Compares analytic and numeric normal modes solutions at each node for uid-only cylinder. Creates ACMODL card for a cylindrical geometry. Calculates the natural frequencies of a thin, elastic, cylindrical shell using Epstien-Kennard theory. Computes analytic forced-response at a given location for the uid/structure cylindrical geometry. Table 11 Description of FORTRAN codes used.
The codes listed in this Appendix have been written specically for this study and should be considered to be research code only. They are provided for completeness. Their successful operation cannot be guaranteed outside the scope of this work.
69
ofile(1:i)=ifile(1:i) ilen=i goto 105 else endif c extract mode number i=0 im=0 106 i=i+1 if(inumber(i:i).ne. .and.im.le.8)then im=im+1 mn(im:im)=inumber(i:i) goto 106 elseif(i.lt.8)then goto 106 else endif c extract subcase number i=0 is=0 107 i=i+1 if(icase(i:i).ne. .and.is.le.8)then is=is+1 sn(is:is)=icase(i:i) goto 107 elseif(i.lt.8)then goto 107 else endif c create output file name write(*,*)inumber,mn write(*,*)icase,sn ofile=ifile(1:ilen)//_mode//mn(1:im)//.dis.//sn(1:is) else write(*,*)analysistype(1:11) ofile=error.dis.1 endif c defmax=1 nwidth=6 ndmax=int(numdata/2) open(unit=12,file=ofile,status=unknown) write(12,1003)eigen,freq write(12,1111)numdata,numdata,defmax,ndmax,nwidth write(12,5)title write(12,5)subtitle format(a72) format(a15,E13.4) do 100 i=1,numdata read(11,1001)cont,node,typevar,a1,a2,a3,iline read(11,1002)cont,a4,a5,a6,iline write(12,1112)node,a1,a2,a3,a4,a5,a6 format(2i9,e15.9,2i9) format(i8,(5e13.7)) format(a6,i8,a4,3(5x,e13.4),i8) format(a6,12x,3(5x,e13.4),i8) continue close(12) goto 1101 close(11) stop end
5 1003
Program pch2res.f
C1234&123456789012 program pch2res character*72 title,subtitle,label,analysistype,datatype character*30 ifile,ofile character*15 subcase,eigen character*8 icase,inumber,sn,mn character*6 mode,cont write(*,*)ENTER PUNCH FILE read(*,1)ifile write(*,*)ENTER NUMBER OF DATA POINTS read(*,*)numdata open(unit=11,file=ifile,status=old) 1101 read(11,2,end=205)title,iline read(11,2)subtitle,iline read(11,2)label,iline read(11,2)analysistype,iline read(11,2)datatype,iline 1 format(a) 2 format(a72,i8) c read(11,3)subcase,icase,iline read(11,4)eigen,freq,mode,inumber,iline 3 format(a15,5x,a8,44x,i8) 4 format(a15,E13.4,2x,a6,a8,28x,i8) if(analysistype(2:11).eq.EIGENVECTO)then c extract job name i=0 105 i=i+1 if(ifile(i:i).ne...and.ilen.lt.20)then
205
Program convert.f
program convert c c c c c c c c c c c c c c c c c c c c Program to convert xxx.pch file from NASTRAN forced-response analysis to PATRAN-readable XY-Plot files or TECPLOT formatted data files. Input consists of punch file from NASTRAN forced-response analysis. The total number of nodes (maxn) in the model, the number of nodes calculated (iwant), the number of frequencies (maxfreq) and the output format must be programed prior to compiling. Output consists of XY-Plot or TECPLOT data for displacement magnitudes at a point vs. frequency. XYPlot files contain magnitude or phase information for all nodes. Tecplot files contain infromation for phase and magnitude for only one node. Written by C.M.Fernholz 48221 Declarations implicit real*8(a-h,o-y)
70
implicit complex(z) c parameter (maxn=5643,maxfreq=126,iwant=3,pi=3.141592654) c character*72 title,subtitle,label,analysistype,datatype character*30 ifile,ofileRe,ofileIm,ofileu,ofilev,ofilew, & ofilex,ofiley,ofilez character*15 subcase, point,displace character*8 icase,inumber,sn,mn character*6 mode,cont character*4 typevar c dimension disr(6),disi(6),frequency(maxfreq),node(maxn), & freqRe(maxfreq,maxn,6),freqIm(maxfreq,maxn,6), & udata(maxn,maxfreq),utheta(maxn,maxfreq), & vdata(maxn,maxfreq),vtheta(maxn,maxfreq), & wdata(maxn,maxfreq),wtheta(maxn,maxfreq), & uphase(maxn,maxfreq),vphase(maxn,maxfreq), & wphase(maxn,maxfreq),size(3) c logical patran,tecplot c c c c c c Begin program Choose output type patran=.FALSE. tecplot=.TRUE. c write(*,*)Enter punch file name read(*,1)ifile 1 format(a) c c Open punch file open(unit=10,file=ifile,status=old) c do 50 i=1,iwant c c Read headers from punch file c read(10,1000)title,iline read(10,1000)subtitle,iline read(10,1000)label,iline read(10,1000)analysistype,iline read(10,1000)datatype,iline read(10,1005)subcase,icase,iline read(10,1010)point,node(i) c c Read in frequencies, displacements c do 100 j=1,maxfreq c read(10,1100)frequency(j),typevar, & (disr(k),k=1,3),iline read(10,1105)cont,(disr(k),k=4,6),iline read(10,1105)cont,(disi(k),k=1,3),iline read(10,1105)cont,(disi(k),k=4,6),iline c do 9 k=1,3 zdisp=cmplx(disr(k),disi(k)) partone=real(zdisp) parttwo=imag(zdisp) size(k)=SQRT(partone*partone+parttwo*parttwo) 9 continue c c Store real and imaginary displacements for each frequency in an c array. Note: used if PATRAN fringe plots of displacements for c a given frequency are desired. c do 160 k=1,6 freqRe(j,i,k)=disr(k) freqIm(j,i,k)=disi(k) 160 continue c c Store displacement magnitudes for each node c if (patran) then udata(i,j)=size(1) vdata(i,j)=size(2) wdata(i,j)=size(3) endif c if (tecplot) then udata(node(i),j)=size(1) vdata(node(i),j)=size(2) wdata(node(i),j)=size(3) endif c c Store displacement phase angles for each node c if (disr(1).EQ.0.0) then if (disi(1).GT.0.0) then
utheta(i,j)=90.0 elseif (disi(1).LT.0.0) then utheta(i,j)=-90.0 elseif (disi(1).EQ.0.0) then utheta(i,j)=0.0 endif else utheta(i,j)=(180.0/pi)*ATAN(disi(1)/disr(1)) endif c if (disr(2).EQ.0.0) then if (disi(2).GT.0.0) then vtheta(i,j)=90.0 elseif (disi(2).LT.0.0) then vtheta(i,j)=-90.0 else vtheta(i,j)=0.0 endif else vtheta(i,j)=(180.0/pi)*ATAN(disi(2)/disr(2)) endif if (disr(3).EQ.0.0) then if (disi(3).GT.0.0) then wtheta(i,j)=90.0 elseif (disi(3).LT.0.0) then wtheta(i,j)=-90.0 else wtheta(i,j)=0.0 endif else wtheta(i,j)=(180.0/pi)*ATAN(disi(3)/disr(3)) endif c if (tecplot) then uphase(node(i),j)=utheta(i,j) vphase(node(i),j)=vtheta(i,j) wphase(node(i),j)=wtheta(i,j) endif c 100 50 c c c c c c continue continue close(10) Dummy print write(*,*)title Magnitude output files for u,v, and w displacements if (patran) then ofileu=magu.xyd ofilev=magv.xyd ofilew=magw.xyd elseif (tecplot) then ofileu=magu.plt ofilev=magv.plt ofilew=magw.plt endif c c c Phase angle ouput files for u,v, and w displacements if (patran) then ofilex=phau.xyd ofiley=phav.xyd ofilez=phaw.xyd elseif (tecplot) then ofilex=phau.plt ofiley=phav.plt ofilez=phaw.plt endif c open(unit=40,file=ofileu,status=unknown) open(unit=50,file=ofilev,status=unknown) open(unit=60,file=ofilew,status=unknown) open(unit=70,file=ofilex,status=unknown) open(unit=80,file=ofiley,status=unknown) open(unit=90,file=ofilez,status=unknown) c if (patran) then do 300 l=1,iwant c write(40,1300)XYDATA,U-DISP, write(50,1300)XYDATA,V-DISP, write(60,1300)XYDATA,W-DISP, write(70,1300)XYDATA,U-PHASE write(80,1300)XYDATA,V-PHASE write(90,1300)XYDATA,W-PHASE c do 350 m=1,maxfreq write(40,1305)frequency(m),udata(l,m) write(50,1305)frequency(m),vdata(l,m) NODE,node(l) NODE,node(l) NODE,node(l) NODE,node(l) NODE,node(l) NODE,node(l)
71
350 c 300 c
write(60,1305)frequency(m),wdata(l,m) write(70,1305)frequency(m),utheta(l,m) write(80,1305)frequency(m),vtheta(l,m) write(90,1305)frequency(m),wtheta(l,m) continue continue do 14 n=40,90,10 write(n,1310)END continue elseif (tecplot) then
c c c c c c c c c c c
displacement error magnitude for the system. error.dis.1: PATRAN-readable displacement file that can be used to display the displacement errors for the model in fringe plot form. It is necessary to specify the number of nodes (maxn) and the number of elements (maxe) in the model prior to compiling. Declarations implicit real*8(a-h,o-z) parameter (maxn=4961, maxe=1000)
14 c c
c write(40,1400)TITLE write(50,1400)TITLE write(60,1400)TITLE write(70,1401)TITLE write(80,1401)TITLE write(90,1401)TITLE = = = = = = "Magnitude for u-displacements" "Magnitude for v-displacements" "Magnitude for w-displacements" "Phase Angle for u-displacements" "Phase Angle for v-displacements" "Phase Angle for w-displacements" character*15 zfile,pchfile,eigen character*8 count,typevar character za(maxn)*1 c & & & & c c c dimension x(maxn),y(maxn),z(maxn), aprod(maxn), px(maxn),py(maxn),pz(maxn), node(maxn),error(maxn), ndf(maxn),junk(6)
c do 11 n=40,60,10 write(n,1405)VARIABLES = "Frequency","Displacement" write(n,1410)ZONE T="Numeric Solution", I =,maxfreq continue do 12 n=70,90,10 write(n,1406)VARIABLES = "Frequency","Phase" write(n,1411)ZONE T="Phases", I =,maxfreq continue write(*,*)Enter desired node number for analysis read(*,2)l format(i) do 450 m=1,maxfreq write(40,1415)frequency(m),udata(l,m) write(50,1415)frequency(m),vdata(l,m) write(60,1415)frequency(m),wdata(l,m) write(70,1415)frequency(m),uphase(l,m) write(80,1415)frequency(m),vphase(l,m) write(90,1415)frequency(m),wphase(l,m) continue endif c do 13 n=40,90,10 close(n) continue format(a72,i8) format(a15,5x,a8,44x,i8) format(a13,5x,i8,46x,i8) format(4x,e13.4,a1,3(5x,e13.4),i8) format(a6,12x,3(5x,e13.4),i8) format(a15,e13.4) format(2i9,e15.9,2i9) format(a72) format(i8,(5e13.7)/e13.7) format(a19,i4) format(f10.3,2x,f10.6) format(a3) format(a39) format(a41) format(a38) format(a31) format(a30,i5) format(a20,i5) format(f10.3,2x,e13.5) format(a25,i5) stop end
11 c
Begin program write(*,*)Enter neutral file name read(*,1)zfile write(*,*)Enter punch file name read(*,1)pchfile format(a)
12 c
2 c
450 c
13 c 1000 1005 1010 1100 1105 1200 1205 1210 1215 1300 1305 1310 1400 1401 1405 1406 1410 1411 1415 1420 c 9999
Program reader.f
program reader c c c c c c c c c c c c c c Program to compare analytical and numerical displacement calculations for cubic geometry, fluid only. Input files include: NASTRAN-generated neutral file: used to determine geometric location of each node in the model. Neutral file should contain only node location information. NASTRAN-generated punch file: used to determine the displacement of each node, as calculated by NASTRAN. Output files: read.out: includes information about the maximum displacement error for each direction and the maximum
1 c c Define geometry (cube) c side=5.0 pi=3.141592654 idn=1.0 c c Mode shape of interest (nnn=x-dir,mmm=y-dir,kkk=z-dir) c nnn=1 mmm=1 kkk=-3 c c Open neutral file open(unit=10,file=zfile,status=old) c Open punch file open(unit=20,file=pchfile,status=old) c Open output file open(unit=30,file=read.out,status=unknown) c c Sort loop to determine maximum displacement in punch file c Punch file should contain data only for mode of interest c bigx=0 bigy=0 bigz=0 c do 50 j=1,(maxn-1) c read(20,1004) cont,node(j),typevar, & px(j),py(j),pz(j),iline read(20,1005) cont,a4,a5,a6,iline c if (ABS(px(j)).GT.ABS(bigx)) bigx=px(j) if (ABS(py(j)).GT.ABS(bigy)) bigy=py(j) if (ABS(pz(j)).GT.ABS(bigz)) bigz=pz(j) c 50 continue c if (bigx.EQ.0.0) bigx=1.0 if (bigy.EQ.0.0) bigy=1.0 if (bigz.EQ.0.0) bigz=1.0 c write(30,1)Error: Analytic vs. Numeric Solutions write(30,1015)Cubic geometry, mode ,nnn,mmm,kkk write(30,1010)bigx = ,bigx write(30,1010)bigy = ,bigy write(30,1010)bigz = ,bigz c rewind(unit=20) c 100 read(10,1000)idpacket,idn,iv,kc,n1,n2,n3,n4,n5 c if (idpacket.eq.99) then close(10) close(20) goto 500 c elseif (idpacket.eq.1) then c c Determine location of grid point
72
& c c
Determine analytic displacement of grid point, mode (1,1,1) ax=sin((nnn*pi*x(idn))/side) ay=sin((mmm*pi*y(idn))/side) az=sin((kkk*pi*z(idn))/side) aprod(idn)=ax*ay*az Determne grid point displacement from punch file read(20,1004) cont,node(idn),typevar, & px(idn),py(idn),pz(idn),iline read(20,1005) cont,a4,a5,a6,iline px(idn)=px(idn)/bigx py(idn)=py(idn)/bigy pz(idn)=pz(idn)/bigz else write(*,*)Invalid packet ID stop endif
c c
c goto 100 c c Dummy print 500 write(*,*)write to read.out completed c c Calculate displacement error at each node, max error for system c bigerror=0 c do 250 m=1,maxn c error(m)=aprod(m)-px(m) c if (ABS(error(m)).GT.bigerror) then bigerror=error(m) endif c 250 continue c write(30,1010)Max error ,bigerror c close(30) c c Write PATRAN input file c eigen=$EIGENVALUE = freq=bigerror defmax=1 nwidth=6 ndmax=int(maxn/2) c open(unit=40,file=error.dis.1,status=unknown) write(40,1100)eigen,freq write(40,1101)maxn,maxn,defmax,ndmax,nwidth write(40,1102)$TITLE GOES HERE write(40,1102)$SUBTITLE=LOAD_CASE_ONE c do 200 l=1,maxn write(40,1103)node(l),error(l),0.0,0.0,0.0,0.0,0.0 200 continue c close(40) c 1000 format(i2,8i8) 1001 format(3e16.9) 1002 format(i1,1a1,3i8,2x,6i1) 1003 format(4e16.9) 1004 format(a6,i8,a4,3(5x,e13.4),i8) 1005 format(a6,12x,3(5x,e13.4),i8) 1010 format(a10,e18.9) 1015 format(a21,i2,ix,i2,1x,i2) 1100 format(a15,e13.4) 1101 format(2i9,e15.9,2i9) 1102 format(a72) 1103 format(i8,(5e13.7)) c stop end
c c c c c c c c c c c c c c c c c c c c c c c c
Input consists of original GRID data only from the NASTRAN bulk data file. It is necessary to specifiy the total number of grids in the model (maxn) prior to compiling. Output consists of two files: grids.out: contains fluid/solid grid points for .bdf file set555: contains ACMODL set cards. In the ACMODL output file, SET1=555 contains the solid grid points and SET1=666 contains the fluid grid points. Line continuation markers start at "AAAAAAA". Assumptions: Structure nodes are assumed to lie in two planes only; one at z=0 and the other at z=5. If a fluid node as a z coordinate of either 0 or 5, it is assumed to lie on the fluid/ structure interface and will be included in the ACMODL card set. It is assumed that every structure node is on the fluid/ structure interface. The structure nodes are assumed to be sequential (ie xxx THRU xxx). Program written by C.M.Fernholz (48221) Declarations implicit real*8(a-h,o-z) parameter (maxn=5643)
c character*8 grid,set,thru,cont,con2 character*15 gridfile,yfile,zfile c logical test,check c dimension inode(maxn),m(8) c c c Begin program write(*,*)Enter GRID file name read(*,2)gridfile write(*,*)Enter minimum structure grid point ID read(*,1)nodemin write(*,*)Enter maximum structure grid point ID read(*,1)nodemax format(i) format(a) yfile=grids.out zfile=set555 c c c c c c c Open file containing grid information open(unit=10,file=gridfile,status=old) Open file for ACMODL gridset open(unit=20,file=zfile,status=unknown) Open file for grids output open(unit=30,file=yfile,status=unknown) Read grid file, determine fluid and solid grids, write new gridset do 20 i=1,maxn read(10,1000)grid,node,xx,yy,zz,fs if (node.LT.nodemin.OR.node.GT.nodemax) then fs=-1 write(30,1000)grid,node,xx,yy,zz,fs elseif (node.GE.nodemin.OR.node.LE.nodemax) then fs=0 write(30,1000)grid,node,xx,yy,zz,fs else write(*,*)WARNING: Grid type indeterminate endif continue close(10) rewind(unit=30) c c c Write structure SET card isset=555 set=SET1 thru= THRU write(20,1005)set,isset,nodemin,thru,nodemax c c c Read grid file, determine which fluid points lie on interface jj=0 do 50 i=1,maxn c read(30,1000)grid,node,xx,yy,zz,fs c if (node.LT.nodemin.OR.node.GT.nodemax) then c if (zz.EQ.(0.0).OR.zz.EQ.(5.0)) then jj=jj+1 inode(jj)=node
1 2 c
20 c
Program setmaker.f
program setmaker c c c c c c Program to produce NASTRAN ACMODL set cards for a cubic geometry as well as fluid/solid grid set. If grid point is determined to be a fluid point, grid co-ordinate remains "-1". If grid point is a solid, co-ordinate ID is changed to "0." (solid).
73
Logic for line continuation markers Note: "A" = char(65), "+" = char(43) m(1)=43 do 60 i=2,8 m(i)=65 continue cont=char(m(1))//char(m(2))//char(m(3))//char(m(4))// & char(m(5))//char(m(6))//char(m(7))//char(m(8)) con2=cont
60 c
c c c c c
Write first seven fluid points to SET card (first line) write(20,1010)set,ifset,(inode(k),k=1,7),cont Write groups of remaining fluid grid nodes eight at a time imax=INT((jj-7)/8) ithing=8 icount=1 check=.TRUE.
c 100 if (check) then cont=con2 test=.TRUE. if (test) then i=8 if (m(i).GE.90) then m(i)=65 m(i-1)=m(i-1)+1 if (m(i-1).LT.90) then test=.FALSE. else i=i-1 if (i.LT.2) then write(*,*)Too many grid points goto 999 endif endif else m(i)=m(i)+1 test=.FALSE. endif goto 80 endif con2=char(m(1))//char(m(2))//char(m(3))//char(m(4))// char(m(5))//char(m(6))//char(m(7))//char(m(8)) write(20,1015)cont,(inode(k),k=ithing,ithing+7),con2 c ithing=ithing+8 icount=icount+1 if (icount.GT.imax) then check=.FALSE. endif goto 100 endif c c c Write last line of file cont=con2 write(20,1020)cont,(inode(k),k=ithing,jj) c close(20) c 1000 1005 1010 1015 1020 c 999 format(a8,i8,8x,3F8.4,i8) format(a8,2i8,a8,i8) format(a8,i8,7i8,a8) format(a8,8i8,a8) format(a8,8i8) stop end
80
c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c
Program to compare analytic and numeric displacement calculations for the cubic fluid/structure geometry. Errors for w-displacement and pressure are determined. Input files include: PATRAN-generated punch (.pch) file. Numeric displacements for each node are read from this file. PATRAN-generated neutral (.out) file containing node information only. Geometric node locations are read from this file. Output files include: error.out: contains information about the maximum error occuring anywhere in the model. error.dis.1: PATRAN-readable displacement file that can be used to display the error results for the model in fringe plot form. It is necessary to specify the number of nodes (maxn), the number of elements (maxe), and the mode shape of interest prior to compiling. Assumptions: Analytic model uses an uncoupled solution. NASTRAN uses a coupled one. For the first structural mode, coupling will occur between the two plates of the model. The mode shape of the plate that is moving will be superimposed (with some attenuation of the amplitude) upon the other plate. To account for this, displacement amplitudes in the two plates are handled seperately in this code. The rear plate (at z=0) is assumed to be stationary. The error.dis file can be modified to delete the nodes corresponding to the rear plate. Written by C.M.Fernholz (48221) Declarations implicit real (a-h,o-z) parameter (maxn=1573,maxe=1200,pi=3.141592654)
c & character*72 title,subtitle,label,analysistype, datatype,header character*30 pchfile,neufile,header2 character*15 subcase,eigen character*8 icase,an,mn character*6 mode,cont character*5 solidtype,fluidtype character*1 flustr dimension px(maxn),py(maxn),pz(maxn),node(maxn), w(maxn),p(maxn),serror(maxn),ferror(maxn), nodefluid(maxn),nodesolid(maxn), x(maxn),y(maxn),z(maxn), junk(6),itrash(9) logical fluid c c c c c Begin program Choose mode shape of interest (m=x-dir,n=y-dir,k=z-dir) m=-2 n=2 k=0 c c c Define cubic geometry side=5.0 thick=0.0625 c c c FEM geometry ii=0 jj=0 fluidtype=HEX8 solidtype=QUAD4 c write(*,*)Fluid or structure mode? (f/s) read (*,1)flustr write(*,*)Enter desired mode (eigenvalue) number read (*,2)modenumber write(*,*)Enter punch (.pch) file name read (*,1)pchfile write(*,*)Enter neutral (.out) file name read (*,1)neufile format(a) if (flustr.EQ.f) then fluid=.TRUE.
85 c & c
Program plate.f
program plate c
1 c
74
elseif (flustr.EQ.s) then fluid=.FALSE. endif c c c c c write(*,*)Enter min read (*,2)nodeminf write(*,*)Enter max read (*,2)nodemaxf write(*,*)Enter min read (*,2)nodeminb write(*,*)Enter max read (*,2)nodemaxb format(i) structure grid ID for front plate structure grid ID for front plate structure grid ID for back plate structure grid ID for back plate Open punch file open (unit=10,file=pchfile,status=old) Open neutral file open (unit=20,file=neufile,status=old) Open error output data file open (unit=30,file=error.out,status=unknown)
2 c c Read displacements from punch file c 100 bigx=0.0 bigy=0.0 bigzf=0.0 bigzb=0.0 c read(10,1000)title,iline read(10,1000)subtitle,iline read(10,1000)label,iline read(10,1000)analysistype,iline read(10,1000)datatype,iline read(10,1005)subcase,icase,iline read(10,1010)eigen,freq,mode,inumber,iline c do 150 j=1,maxn c read(10,1015)cont,node(j),typevar,px(j),py(j),pz(j), & iline read(10,1020)cont,a4,a5,a6,iline c if (node(j).LT.nodeminb.OR.node(j).LT.nodeminf.OR. & node(j).GT.nodemaxb.OR.node(j).GT.nodemaxf) then if (ABS(px(j)).GT.ABS(bigx)) bigx=px(j) endif c if (ABS(py(j)).GT.ABS(bigy)) bigy=py(j) c if (node(j).LE.nodemaxb.AND.node(j).GE.nodeminb) then if (ABS(pz(j)).GT.ABS(bigzb)) bigzb=pz(j) elseif (node(j).LE.nodemaxf.AND.node(j).GE.nodeminf) then if (ABS(pz(j)).GT.ABS(bigzf)) bigzf=pz(j) endif c 150 continue c if (inumber.NE.modenumber) goto 100 c close(10) c if (bigx.EQ.0.0) bigx=1.0 if (bigy.EQ.0.0) bigy=1.0 if (bigzf.EQ.0.0) bigzf=1.0 if (bigzb.EQ.0.0) bigzb=1.0 c c Write to error.out file c write(30,1100)Analytic vs. Numeric Solutions write(30,1100)Cubic Fluid/Structure Geometry write(30,1105)maxe,solidtype,,,fluidtype,elements write(30,1110)maxn,nodes c if (fluid) then write(30,1130)Fluid analysis elseif (.NOT.fluid) then write(30,1130)Solid analysis endif c write(30,1115)bigx = ,bigx write(30,1115)bigy = ,bigy write(30,1115)bizgf= ,bigzf write(30,1115)bigzb= ,bigzb c c Normalize displacements c do 200 j=1,maxn px(j)=px(j)/ABS(bigx) py(j)=py(j)/ABS(bigy) if (node(j).LE.nodemaxb.AND.node(j).GE.nodeminb) then pz(j)=pz(j)/bigzb elseif(node(j).LE.nodemaxf.AND.node(j).GE.nodeminf)then
200 c c Read grid point locations from neutral file c read(20,1200)(itrash(i),i=1,9) read(20,1205)header read(20,1200)(itrash(i),i=1,9) read(20,1210)header2 c 300 read(20,1200)idpacket,idn,iv,kc,n1,n2,n3,n4,n5 c if (idpacket.EQ.99) then close(20) goto 350 c elseif (idpacket.EQ.1) then c read(20,1215)x(idn),y(idn),z(idn) read(20,1220)icf,za,ndf,ncnfig,ncid,(junk(i),i=1,6) c if (idn.LE.nodemaxb.AND.idn.GE.nodeminb) then c ii=ii+1 nodesolid(ii)=idn w(ii)=0.0 c serror(ii)=w(ii)-pz(idn) c elseif (idn.LE.nodemaxf.AND.idn.GE.nodeminf) then c ii=ii+1 nodesolid(ii)=idn ax=sin(m*pi*x(idn)/side) ay=sin(n*pi*y(idn)/side) w(ii)=ax*ay c serror(ii)=w(ii)-pz(idn) c else c jj=jj+1 nodefluid(jj)=idn ax=sin(m*pi*x(idn)/side) ay=sin(n*pi*y(idn)/side) az=cos(k*pi*z(idn)/side) p(jj)=ax*ay*az c ferror(jj)=p(jj)-px(idn) c endif c else write(*,*)WARNING: Invalid packet ID c endif c goto 300 c c Determine maximum errors in model c 350 bigerrorb=0.0 bigerrorf=0.0 c do 400 i=1,ii if (nodesolid(i).LE.nodemaxb.AND. & nodesolid(i).GE.nodeminb) then if (ABS(serror(i)).GT.ABS(bigerrorb)) then bigerrorb=serror(i) endif elseif (nodesolid(i).LE.nodemaxf.AND. & nodesolid(i).GE.nodeminf) then if (ABS(serror(i)).GT.ABS(bigerrorf)) then bigerrorf=serror(i) endif endif 400 continue c write(30,1120)Maximum error in front plate,bigerrorf write(30,1120)Maximum error in rear plate ,bigerrorb c bigerror=0.0 c do 450 i=1,jj if (ABS(ferror(i)).GT.ABS(bigerror)) then bigerror=ferror(i) endif 450 continue c write(30,1125)Maximum error in fluid,bigerror c
75
close(30) c c c eigen=$EIGENVALUE = defmax=1 nwidth=6 ndmax=INT(maxn/2) c if (.NOT.fluid) then subtitle=$SUBTITLE = STRUCTURE ERROR elseif (fluid) then subtitle=$SUBTITLE = FLUID ERROR endif c write(40,1300)eigen,freq write(40,1305)maxn,maxn,defmax,ndmax,nwidth write(40,1310)title write(40,1310)subtitle c if (.NOT.fluid) then c do 500 i=1,ii write(40,1315)nodesolid(i),0.0,0.0, serror(i),0.0,0.0,0.0 continue elseif (fluid) then c do 550 i=1,jj write(40,1315)nodefluid(i),ferror(i), 0.0,0.0,0.0,0.0,0.0 continue endif c close(40) c 1000 1005 1010 1015 1020 1100 1105 1110 1115 1120 1125 1130 1200 1205 1210 1215 1220 1300 1305 1310 1315 c format(a72,i8) format(a15,5x,a8,44x,i8) format(a15,e13.4,2x,a6,i8,28x,i8) format(a6,i8,a4,3(5x,e13.4),i8) format(a6,12x,3(5x,e13.4),i8) format(a30) format(i4,1x,a5,a1,1x,a5,1x,a8) format(i4,1x,a5) format(a7,f) format(a28,1x,f) format(a22,1x,f) format(a14) format(i2,8i8) format(a72) format(a30) format(3e16.9) format(i1,1a1,3i8,2x,6i1) format(a15,e13.4) format(2i9,e15.9,2i9) format(a72) format(i8,(5e13.7)) stop end c c c c c c c c c c c c c c Open error.dis file open (unit=40,file=error.dis.1,status=unknown) c
implicit real (a-h,o-y) implicit complex (z) parameter (nfreq=1000,step=5.0,pi=3.141592654) c & c logical once,print c c c Begin program once=.TRUE. print=.TRUE. c c c c c Fluid and structure material properties Two pi twopi=2.0*pi Length of a side (inches) A=5.0 Thickness of plates (inches) h=0.0625 Youngs Modulus for the plates (psi) E=10.3e6 Density of the plate (slugs/in**3) rhos=2.5383e-4 Damping coefficient eta=0.005 Amplitude of input force (lbs) F=5.0 Poission ratio for plate uu=0.334 Speed of sound in fluid (in/sec) co=13620.0 Density of the fluid (slugs/in**3) rhof=1.17e-7 Structure stiffness d=(E*h**3)/(12*(1-uu*uu)) Point of interest write(*,2)Enter x co-ordinate read(*,1)x write(*,*)Enter y co-ordinate read(*,1)y write(*,2)Enter z co-ordinate read(*,1)ez write(*,*)Entered: ,x,y,ez format(f4.2) format(a) freq=0.0 skip=step*twopi zo=(0.0,0.0) zi=(0.0,1.0) c open(unit=10,file=struct.eig,status=unknown) open(unit=20,file=sfreq.plt,status=unknown) open(unit=25,file=sphas.plt,status=unknown) open(unit=30,file=pfreq.plt,status=unknown) open(unit=35,file=pphas.plt,status=unknown) do 100 i=1,nfreq c freq=i*skip zdisp(i)=zo zpress(i)=zo c do 200 m=1,20 do 250 n=1,20 c wo=((pi*pi*(n*n+m*m))/(A*A))*SQRT(d/(rhos*h)) c if (print) then write(10,1000)Mode,m,,,n,and Frequency,wo/twopi endif zdenom=cmplx(wo*wo-freq*freq,2.0*eta*wo*freq) zqmn(m,n)=4.0*F*sin(m*pi/2.0)*sin(n*pi/2.0)/ (A*A*rhos*h*zdenom) zdisp(i)=zdisp(i)+zqmn(m,n)* sin(m*pi*x/A)*sin(n*pi*y/A) alf=-(freq/co)*(freq/co)+ (n*pi/A)*(n*pi/A)+ (m*pi/A)*(m*pi/A) if (alf.LT.0.0) then alf=SQRT(ABS(alf)) dimension zqmn(30,30), zdisp(nfreq), zqpress(30,30),zpress(nfreq)
& 500 c
& 550 c
1 2 c
Program forres.f
program forres c c c c c c c c c c c c c c c c c c c c c c c c Program to determine the analytic solution for the forced frequency response of a cubic fluid/structure geometry. Model consists of fluid cube with sides of length A having structrual plates located at z = -A/2,A/2. No input files required. Fluid and structure material properties must be programmed prior to compiling. Output consists of five files: struc.eig: Eigen values of the structure sfreq.plt: Disp. vs. freq. of the structure at a point sphas.plt: Phase angle vs. freq. of the struct at a point pfreq.plt: Pressure vs. freq. of a point in the fluid pphas.plt: Phase angle vs. freq. of the fluid at a point Output files are written in TECPLOT format. A non-coupled model is assumed. Structure obeys non-homogeneous plate equation of motion. Fluid obeys homogeneous wave equation. Written by C.M.Fernholz (48221) Declarations
& c
76
zalpha=cmplx(0.0,alf) else alf=SQRT(alf) zalpha=cmplx(alf,0.0) endif c zqpress(m,n)=-(rhof*freq*freq*zqmn(m,n))/zalpha zpress(i)=zpress(i)+zqpress(m,n)* sin(m*pi*x/A)* sin(n*pi*y/A)* (csin(zalpha*ez)+ (1+ccos(zalpha*A))*ccos(zalpha*ez)/ csin(zalpha*A)) continue continue call tecplot(freq,zpress(i),zdisp(i), frequency,pmag,ppha,dmag,dpha) if (once) then write(20,2000)TITLE write(25,2000)TITLE write(30,2000)TITLE write(35,2000)TITLE c write(20,2005)VARIABLES write(25,2010)VARIABLES write(30,2005)VARIABLES write(35,2010)VARIABLES c do 300 j=20,35,5 write(j,2015)ZONE T="Analytic Solution" continue once=.FALSE. endif c write(20,2020)frequency,dmag write(25,2020)frequency,dpha write(30,2020)frequency,pmag write(35,2020)frequency,ppha c 100 c print=.FALSE. continue close(10) do 305 j=20,35,5 close(j) continue format(a4,1x,i2,a1,i2,1x,a13,1x,f10.2) format(a34) format(a35) format(a31) format(a26) format(f10.2,1x,e13.5) stop end c c c c c c c ***************************************************************** subroutine tecplot(freq,zpres,zdisp,fre,pmag,ppha,dmag,dpha) = = = = "Frequency","Magnitude" "Frequency","Phase" "Frequency","Magnitude" "Frequency","Phase"
endif else ppha=ATAN(pimag/preal) endif c c c Displacement output dreal=real(zdisp) dimag=imag(zdisp) dmag=SQRT(dreal*dreal+dimag*dimag) c if (dreal.EQ.0.0) then if (dimag.GT.0.0) then dpha=(pi/2.0) elseif (dimag.LT.0.0) then dpha=-(pi/2.0) else dpha=0.0 endif else dpha=ATAN(dimag/dreal) endif c return end c c c c c c c ***************************************************************** complex function ccos(z) Function to return the cosine of a complex argument Declarations implicit real (a-h,o-y) implicit complex (z) c c c Begin function argr=real(z) argi=imag(z) c partone=cos(argr)*cosh(argi) parttwo=-1*sin(argr)*sinh(argi) c ccos=cmplx(partone,parttwo) c return end c c c c c c c ***************************************************************** complex function csin(z) Function to return the sine of a complex argument Declarations real argr,argi,partone,parttwo complex z c c c Begin function argr=real(z) argi=imag(z) c partone=sin(argr)*cosh(argi) parttwo=cos(argr)*sinh(argi) c csin=cmplx(partone,parttwo) c return end
= = = =
300 c
Subroutine to format data for use by TECPLOT Declarations implicit real (a-h,o-y) implicit complex (z)
c parameter (pi=3.141592654) c c c c c c c c Begin subroutine Frequency output fre=freq/(2*pi) Pressure output preal=real(zpres) pimag=imag(zpres) pmag=SQRT(preal*preal+pimag*pimag) c if (preal.EQ.0.0) then if (pimag.GT.0.0) then ppha=(pi/2.0) elseif (pimag.LT.0.0) then ppha=-(pi/2.0) else ppha=0.0 c c c c c c c c c c c c c c c c
Program compare.f
program compare Program to compare analytical and numerical displacement calculations of first normal mode for a cylinder-shaped geometry. Input files: PATRAN-generated neutral file: used to determine geometric location of each node in the model. Neutral file should contain only node location information. NASTRAN-generated punch file: used to determine the displacement of each node, as calculated by NASTRAN. It is necessary to specify the total number of nodes (maxn) and the number of elements (maxe) in the model prior to compiling. Output files: error.out: includes information about the maximum
77
c c c c c c c c c c
displacement error for the system. error.dis.1: PATRAN-readable displacement file that can be used to display the displacement errors for the model in fringe plot form. Written by C.M.Fernholz (48221) Declarations implicit real*8(a-h,o-z) parameter (maxn=6609, maxe=2440, pi=3.141592654)
rad=SQRT(x(idn)*x(idn)+y(idn)*y(idn)) axial=sin((pi*z(idn))/axis) radial=BESSJ0((rad*root)/radius) aprod(idn)=axial*radial c c Normalize grid point displacements from punch file px(idn)=px(idn)/bigx py(idn)=py(idn)/bigy pz(idn)=pz(idn)/bigz else write(*,*)Invalid packet ID stop endif c goto 100 c c c c do 250 m=1,maxn error(m)=aprod(m)-px(m) if (ABS(error(m)).GT.ABS(bigerror)) bigerror=error(m) continue write(30,1)Error: Analytic vs. Numeric Solutions write(30,1)Cylinder, fluid only, mode 1,0,1 write(30,*)bigx = ,bigx write(30,*)bigy = ,bigy write(30,*)bigz = ,bigz write(30,*)bigerror= ,bigerror c c c c c Dummy print write(*,*)Errors determined Write PATRAN input file eigen=$EIGENVALUE = freq=bigerror defmax=1 nwidth=6 ndmax=INT(maxn/2) c open(unit=40,file=error.dis.1,status=unknown) write(40,1100)eigen,freq write(40,1101)maxn,maxn,defmax,ndmax,nwidth write(40,1102)$TITLE GOES HERE write(40,1102)$SUBTITLE=LOAD_CASE_ONE c do 200 l=1,maxn write(40,1103)node(l),error(l),0.0,0.0,0.0,0.0,0.0 continue close(40) close(30) c 1100 1101 1102 1103 c 999 format(a15,e13.4) format(2i9,e15.9,2i9) format(a72) format(i8,(5e13.7)) stop end Calculate displacement error at each node, max error for system 500 bigerror=0.0
c character*15 zfile,pchfile,eigen character*8 count,typevar character za(maxn)*1 c dimension x(maxn),y(maxn),z(maxn), & ax(maxn),ay(maxn),az(maxn), & px(maxn),py(maxn),pz(maxn), & node(maxn),error(maxn),aprod(maxn), & ndf(maxn), junk(6) c c c Begin Program write(*,*)Enter Neutral File Name read(*,1)zfile write(*,*)Enter Punch File Name read(*,1)pchfile format(a) 250 c
1 c c Define Geometry axis=5.0 radius=1.0 c c Zero-order Bessel function, first root root=2.40482556 c c Open neutral file open(unit=10,file=zfile,status=old) c Open punch file open(unit=20,file=pchfile,status=old) c Open error data output file open(unit=30,file=error.out,status=unknown) c c Sort loop to determine maximum displacement in punch file c bigx=0.0 bigy=0.0 bigz=0.0 c do 50 j=1,maxn c read(20,1004) cont,node(j),typevar, & px(j),py(j),pz(j),iline read(20,1005) cont,a4,a5,a6,iline 1004 format(a6,i8,a4,3(5x,e13.4),i8) 1005 format(a6,12x,3(5x,e13.4),i8) c if (ABS(px(j)).GT.ABS(bigx)) bigx=px(j) if (ABS(py(j)).GT.ABS(bigy)) bigy=py(j) if (ABS(pz(j)).GT.ABS(bigz)) bigz=pz(j) c 50 continue c if (bigx.EQ.0.0) bigx=1.0 if (bigy.EQ.0.0) bigy=1.0 if (bigz.EQ.0.0) bigz=1.0 c c Dummy print write(*,*)Displacements read c c Read in data from neutral file c 100 read(10,1000)idpacket,idn,iv,kc,n1,n2,n3,n4,n5 1000 format(i2,8i8) c if (idpacket.EQ.99) then close(10) close(20) goto 500 c elseif (idpacket.EQ.1) then c c Determine location of grid point read(10,1001)x(idn),y(idn),z(idn) read(10,1002)icf,za(idn),ndf(idn),ncnfig,ncid, & (junk(i),i=1,6) 1001 format(3e16.9) 1002 format(i1,1a1,3i8,2x,6i1) c c Determine analytical displacement of grid point
200 c
Program card.f
program card c c c c c c c c c c c c c c c c c c c c c c c Program to producte NASTRAN ACMODL set cards for a cylindrical geometry as well as fluid/solid grid set. If grid point is determined to be a fluid point, grid co-ordinate ID remains "-1". If grid point is a solid, co-ordinate ID is changed to "0" (solid). Input data consists of original GRID data only from the NASTRAN bulk data file. Output files: "grids.out" contains fluid/solid grid points "set555" contains ACMODL set cards. SET1 555 = solid grids, SET1 666 = fluid grids on fluid/solid interface. Line continuation markers start with "AAAAAAA" Assumptions: program matches each structure grid point with its closest fluid grid point. Model can only represent a fluid volume surrounded by a structural shell. The shell only touches the fluid on one side. 2D elements must have nodal configurations compatible with 3D elements (eg QUAD4 2D elements with HEX8 3D elements). Program verifies that no fluid grid appears twice in the ACMODL
78
c c c c c c c c c
fluid set card. Structure grid points are assumed to be sequential (ie xxx THRU xxx). Written by: Christian M. Fernholz 4-8221
c read(30,1000)grid,nod,xx,yy,zz,fs c if (nod.LT.nodemin.OR.nod.GT.nodemax) then j=j+1 xf(j)=xx yf(j)=yy zf(j)=zz nodf(j)=nod radius=SQRT(xx*xx+yy*yy) if (radius.LT.(rad+tolr).AND.radius.GT.(rad-tolr)) then irad=irad+1 endif elseif (nod.GE.nodemin.OR.nod.LE.nodemax) then k=k+1 xs(k)=xx ys(k)=yy zs(k)=zz nods(k)=nod else write(*,*)ERROR: Grid type indeterminate goto 999 endif continue
Declarations Note: necessary to assign maxn=number of grids in model, implicit real*8(a-h,o-z) parameter (maxn=868)
c character*8 grid,set,thru,cont,con2 character*15 gridfile,yfile,zfile character*1 type(maxn) c logical repeat,test,check c & & & & c c c dimension node(maxn),m(8), yf(maxn),xf(maxn),zf(maxn),nodf(maxn), ys(maxn),xs(maxn),zs(maxn),nods(maxn), ytemp1(maxn),xtemp1(maxn),ntemp1(maxn), xtemp2(maxn),ntemp2(maxn)
Begin program write(*,*)Enter grid file name read(*,2)gridfile write(*,*)Enter minimum structure grid point ID read(*,1)nodemin write(*,*)Enter maximum structure grid point ID read(*,1)nodemax format(i) format(a) zfile=set555 yfile=grids.out
1 2 c
c c
Initialize node array do 10 i=1,maxn node(i)=9999 10 continue c c Open file containing grid information open (unit=10,file=gridfile,status=old) c Open file for ACMODL set cards open (unit=20,file=zfile,status=unknown) c Open file for solid/fluid grid output open (unit=30,file=yfile,status=unknown) c c Read grid file, determine fluid/solid grids, write new gridset c do 20 i=1,maxn c read(10,1000)grid,nod,xx,yy,zz,fs c if (nod.LT.nodemin.OR.nod.GT.nodemax) then fs=-1 write(30,1000)grid,nod,xx,yy,zz,fs elseif (nod.GE.nodemin.OR.nod.LE.nodemax) then fs=0 write(30,1000)grid,nod,xx,yy,zz,fs else write(*,*)WARNING: Grid type indeterminate endif 20 continue c close(10) rewind(unit=30) c c Write structure grid point ACMODL set card c isset=555 set=SET1 thru= THRU write(20,1005)set,isset,nodemin,thru,nodemax c c Read grid co-ordinates (x,y,z) from new grid file c j=0 k=0 irad=0 c do 50 i=1,maxn
50 c c Dummy print write(*,*)Grids successfully read write(*,*)Fluid grids total: ,j write(*,*)Structure grids total: ,k c Dummy print write(*,*)Number of surface structure nodes: ,k write(*,*)Number of surface fluid nodes: ,irad c c Verify that two fluid grid points do not occupy same location c repeat=.FALSE. n=0 c do 700 i=1,(j-1) do 710 ii=(i+1),j c if (xf(i).EQ.xf(ii).AND. & yf(i).EQ.yf(ii).AND. & zf(i).EQ.zf(ii)) then repeat=.TRUE. n=n+1 endif c 710 continue 700 continue c if (repeat) then write(*,*)WARNING: ,n, Fluid grids identical endif c c Match structure grid points to closest fluid grid point c do 500 i=1,k c c Find all fluid grids with same z coordinate c ll=1 do 505 l=1,j if (zf(l).GT.(zs(i)-tolz).AND. & zf(l).LT.(zs(i)+tolz)) then ytemp1(ll)=yf(l) xtemp1(ll)=xf(l) ntemp1(ll)=nodf(l) ll=ll+1 endif 505 continue c c Find fluid grids with same y coordinate c mm=1 do 510 mn=1,ll if (ytemp1(mn).LT.(ys(i)+toly).AND. & ytemp1(mn).GT.(ys(i)-toly)) then xtemp2(mm)=xtemp1(mn) ntemp2(mm)=ntemp1(mn) mm=mm+1 endif 510 continue c c Find fluid grid with closest x coordinate c err=1000000.0 do 515 n=1,mm error=ABS(xtemp2(n)-xs(i)) if (xtemp2(n).EQ.xs(i)) then node(i)=ntemp2(n) goto 500
79
515 c 500 continue c c Dummy print write(*,*)Structure/fluid grids matched c c Check to see if any fluid points are repeated c repeat=.FALSE. n=0 c do 600 i=1,(k-1) do 610 ii=(i+1),k if (node(i).EQ.node(ii)) then repeat=.TRUE. n=n+1 endif 610 continue 600 continue c if (repeat) then write(*,*)WARNING:,n, Nodes repeated in ACMODL card endif c c Write fluid grid point ACMODL set card c 55 ifset=666 m(1)=43 do 60 i=2,8 m(i)=65 60 continue c cont=char(m(1))//char(m(2))//char(m(3))//char(m(4))// & char(m(5))//char(m(6))//char(m(7))//char(m(8)) con2=cont c c Write first line of fluid grid points write(20,1010)set,ifset,(node(n),n=1,7),cont c c Write remaining fluid grid points, eight at a time c imax=INT((k-7)/8) c ithing=8 icount=1 check=.TRUE. c 100 if (check) then cont=con2 test=.TRUE. 80 if (test) then i=8 if (m(i).GE.90) then m(i)=65 m(i-1)=m(i-1)+1 if (m(i-1).LT.90) then test=.FALSE. else i=i-1 if (i.LT.2) then write(*,*)Too many grid points goto 999 endif endif else m(i)=m(i)+1 test=.FALSE. endif 85 goto 80 endif c con2=char(m(1))//char(m(2))//char(m(3))//char(m(4))// & char(m(5))//char(m(6))//char(m(7))//char(m(8)) c write(20,1015)cont,(node(n),n=ithing,ithing+7),con2 c ithing=ithing+8 icount=icount+1 if (icount.GT.imax) then check=.FALSE. endif goto 100 endif c c Write last line of file cont=con2 write(20,1020)cont,(node(n),n=ithing,k)
c close(30) close(20) c 1000 1001 1005 1010 1015 1020 c 999 format(a8,i8,8x,3f8.4,i8) format(a8,i8,8x,3f8.4) format(a8,2i8,a8,i8) format(a8,i8,7i8,a8) format(a8,8i8,a8) format(a8,8i8) stop end
Program modesm.f
program modesm c c c c c c c c c c c c c c c Program to calculate natural frequencies of vibration for a cylindrical shell. No input files required. Shell material properties and geometric dimensions must be programmed prior to compiling. Output file freq.out contains mode numbers and natural frequency. Uses Epstein-Kennard theory and solution outlined in Leissa: Vibration of Shells, NASA SP-288 Declarations implicit real (a-h,o-y) implicit complex (z) real l,nu,lam,k1,k2,k0 c parameter (pi=3.141592654) c c c c c c c c c c c c c open(unit=10,file=freq.out,status=unknown) write(10,1005)Cylindrical Shell Natural Frequencies write(10,1010)Epstein-Kennard Theory write(10,1015)Mode,m,n,Roots (Re,Im):, & Root 1 (Hz),Root 2 (Hz),Root 3 (Hz) c do 200 m=0,10 do 300 n=0,10 c if (m.EQ.0.AND.n.EQ.0) goto 300 c lam=(m*pi*a/l) c c c Define Donnel-Mustari constants k2=1.+.5*(3.-nu)*(n*n+lam*lam)+(h*h/(12.*a*a))* (n*n+lam*lam)*(n*n+lam*lam) k1=.5*(1-nu)*((3.+2.*nu)*lam*lam+n*n+(n*n+lam*lam)* (n*n+lam*lam)+((3.0-nu)/(1.0-nu))*(h*h/(12.*a*a))* (n*n+lam*lam)*(n*n+lam*lam)*(n*n+lam*lam)) k0=.5*(1.-nu)*((1.-nu*nu)*(lam*lam*lam*lam)+ (h*h/(12.*a*a))*(n*n+lam*lam)*(n*n+lam*lam)* (n*n+lam*lam)*(n*n+lam*lam)) Begin program Cylindrical shell, dimensions, material properties (Al) Length (in) l=5.0 Radius (in) a=1.0 Thickness (in) h=0.0625 Poissions ratio nu=0.334 Youngs Modulus (psi) E=10.3E6 Density (slugs/in**3) rho=2.5383E-4 Square root of -1 zi=cmplx(0.0,1.0)
Modifying constants for Epstein-Kennard theory delk2=(1+3*nu)/(1-nu)-(2-8*nu*nu+3*nu**3)*lam*lam/ (2*(1-nu)**2)-(19-37*nu+19*nu*nu+nu**3)/ (2*(1-nu)**2)-nu*nu*(n*n+lam*lam)/((1-nu)**2) delk1=(3+8*nu-5*nu*nu-nu**3)*lam*lam/(2*(1-nu))+ (2+nu)*n*n/2-(6+4*nu-8*nu*nu+3*nu**3)*lam**4/
80
c c
Begin program Cylindrical shell, dimensions, material properties (Al) Length (in) l=50.0 Radius (in) a=10.0 Thickness (in) h=0.0625 Poissions ratio nu=0.334 Youngs Modulus (psi) E=10.3E6 Density of the structure (slugs/in**3) rho=2.5383E-4 Density of the fluid (slugs/in**3) rhof=1.170e-7 Speed of sound in fluid (in/sec) co=13620.0 Damping coefficient eta=0.005 Applied force (lbs) Fo=-50.0 Square root of -1 zi=cmplx(0.0,1.0) Common coefficient (wave speed in structure) cl2=E/(a*a*rho*(1-nu*nu)) Frequency increment (Hz) step=5.0 Starting frequency frequency=5.0*(2.0*pi) Print natural frequencies once print=.FALSE. Determine location of interest rr=a/2 tt=0.0 yz=l/2
c c c c
Solve cubic equation for omega squared. Use method outlined in CRC Standard Mathematical Tables, 23rd ed. page 105 c=(1.0/3.0)*(3.0*c1-c2*c2) d=(1.0/27.0)*(-2.0*c2*c2*c2+9.0*c2*c1-27.0*c0)
c delta=(d*d/4.0)+(c*c*c/27.0) c if (delta.LT.0.0) then partone=-d/2.0 parttwo=SQRT(-1.0*delta) zP=cmplx(partone,parttwo) zQ=cmplx(partone,-parttwo) else partone=-d/2.0 parttwo=SQRT(delta) zP=cmplx((partone+parttwo),0.0) zQ=cmplx((partone-parttwo),0.0) endif c zP=zP**(1.0/3.0) zQ=zQ**(1.0/3.0) c zfirst=-.5*(zP+zQ) zsecnd=-.5*(zP-zQ)*SQRT(3.0)*zi c partone=real(zfirst)+real(zsecnd) parttwo=imag(zfirst)+imag(zsecnd) parttre=real(zfirst)-real(zsecnd) partfor=imag(zfirst)-imag(zsecnd) c zroot1=zP+zQ+c2/3.0 zroot2=cmplx((partone+c2/3.0),parttwo) zroot3=cmplx((parttre+c2/3.0),partfor) c zfreq1=SQRT(zroot1*E/(rho*(1-nu*nu)*a*a))/(2.0*pi) zfreq2=SQRT(zroot2*E/(rho*(1-nu*nu)*a*a))/(2.0*pi) zfreq3=SQRT(zroot3*E/(rho*(1-nu*nu)*a*a))/(2.0*pi) c & c 300 200 c c 1000 1005 1010 1015 c format(a4,1x,i2,a1,i2,1x,a15,1x,3(f12.4,1x,f3.1,1x)) format(a37) format(a22) format(a4,2x,a1,2x,a1,1x,a14,3(5x,a11)) stop end continue continue close(10) write(10,1000)Mode,m,,,n,and frequencies, zfreq1,zfreq2,zfreq3
c c c c c c c c c c c c c c c c
c 1 2 3 c c if (print) then open(unit=10,file=freq.out,status=unknown) write(10,1005)Cylindrical Shell Natural Frequencies write(10,1010)Donnell-Mustari Theory write(10,1015)Mode,m,n,Roots (Re,Im):, & Root 1 (Hz),Root 2 (Hz),Root 3 (Hz) endif c c c "Prep" tecplot output file open(unit=20,file=displace.out,status=unknown) write(20,1)TITLE = "FORCED FLUID/STRUCTURE CYLINDER RESP." write(20,1)VARIABLES = "FREQ","U","V","W","P" write(20,1)ZONE T="Analytic" c Program to calculate natural frequencies of vibration for a cylindrical shell and the forced response over a range of frequencies. No input files required. NASTRAN-generated punch file is optional if comparison to a numceric theory is desired. Shell material properties and geometric dimensions must be programmed prior to compiling. Output files: freq.out contains mode numbers and natural frequencies. displace.out contains displacement information written in TECPLOT form. do 100 k=1,maxf zu=cmplx(0.0,0.0) zv=cmplx(0.0,0.0) zw=cmplx(0.0,0.0) zp=cmplx(0.0,0.0) do 200 m=1,modes do 300 n=0,modes c if (m.EQ.0.AND.n.EQ.0) goto 300 c c c c c c Calculate natural frequency for mode lam=(m*pi*a/l) Define cubic equation constants c2=1.+.5*(3.-nu)*(n*n+lam*lam)+(h*h/(12.*a*a))* format(a) format(f) format(a13,f4.1,1x,f4.1,1x,f4.1) tt=tt*(pi/180.0)
Program forced2.f
program forced2 c c c c c c c c c c c c c c c c c c
Uses Donnell-Mustari theory and solution outlined in Leissa: Vibration of Shells, NASA SP-288
81
Solve cubic equation for omega squared. Use method outlined in CRC Standard Mathematical Tables, 23rd ed. page 105 c=(1.0/3.0)*(3.0*c1-c2*c2) d=(1.0/27.0)*(-2.0*c2*c2*c2+9.0*c2*c1-27.0*c0)
c delta=(d*d/4.0)+(c*c*c/27.0) c if (delta.LT.0.0) then partone=-d/2.0 parttwo=SQRT(-1.0*delta) zPP=cmplx(partone,parttwo) zQQ=cmplx(partone,-parttwo) else partone=-d/2.0 parttwo=SQRT(delta) zPP=cmplx((partone+parttwo),0.0) zQQ=cmplx((partone-parttwo),0.0) endif c zPP=zPP**(1.0/3.0) zQQ=zQQ**(1.0/3.0) c zfirst=-.5*(zPP+zQQ) zsecnd=-.5*(zPP-zQQ)*SQRT(3.0)*zi c partone=real(zfirst)+real(zsecnd) parttwo=imag(zfirst)+imag(zsecnd) parttre=real(zfirst)-real(zsecnd) partfor=imag(zfirst)-imag(zsecnd) c zroot1=zPP+zQQ+c2/3.0 zroot2=cmplx((partone+c2/3.0),parttwo) zroot3=cmplx((parttre+c2/3.0),partfor) c zfreq1=SQRT(zroot1*E/(rho*(1-nu*nu)*a*a)) zfreq2=SQRT(zroot2*E/(rho*(1-nu*nu)*a*a)) zfreq3=SQRT(zroot3*E/(rho*(1-nu*nu)*a*a)) c if (print) then write(10,1000)Mode,m,,,n,and frequencies, zfreq1/(2.*pi),zfreq2/(2.*pi),zfreq3/(2.*pi) if (m.EQ.modes) close(10) endif if (imag(zfreq1).NE.0.0.OR. imag(zfreq2).NE.0.0.OR. imag(zfreq3).NE.0.0) then write(*,*)Fatal error: natural frequency is , imaginary goto 9999 endif call magnitude(zfreq1,freq1) call magnitude(zfreq2,freq2) call magnitude(zfreq3,freq3) c c c c Fmn=a*(2.0/(pi*l))*Fo*sin(m*pi/2.0)*(1.0+cos(n*pi)) c & & freqA=-SQRT(-(Cl2/(2.0*a*a))*(nu-1.0)*(nu*lam*lam* a*a-n*n)/nu) freqB=-SQRT(-(Cl2/(2.0*a*a))*(nu-1.0)*(nu*lam*lam* a*a+2.0*lam*lam*a*a+n*n)) freqC1=SQRT((Cl2/a*a)*(lam*lam*a*a+n*n)) freqC2=SQRT(-(Cl2/(2.0*a*a))*(lam*lam*a*a+n*n)*(nu-1.0)) Calculate force coefficient lam=(m*pi/l)
c c c c
Solve for pressure coefficient alphsqr=(frequency*frequency)/(co*co)-(m*pi/l)*(m*pi/l) if (alphsqr.LT.0.0) then alph=SQRT(-1.0*alphsqr) call cofimag(a,alph,n,bottom) zDmn=(zCmn*rhof*frequency*frequency)/bottom call bessimag(rr,alph,n,press)
c elseif (alphsqr.GT.0.0) then alph=SQRT(alphsqr) call realcof(a,alph,n,bottom) zDmn=(zCmn*rhof*frequency*frequency)/bottom call bessreal(rr,alph,n,press) c elseif (alphsqr.EQ.0.0) then write(*,*)Alpha = 0.0 c endif c c c c 300 continue 200 continue c c Dummy print write(*,4)Complex data calculated for ,k 4 format(a28,i4) c c Convert complex displacements, pressure to magnitudes c call magnitude(zu,u(k)) call magnitude(zv,v(k)) call magnitude(zw,w(k)) call magnitude(zp,p(k)) c c Dummy print write(*,1105)zp c c Write to TECPLOT file c freq(k)=frequency/(2.0*pi) write(20,1100)freq(k),u(k),v(k),w(k),p(k) c c Increment frequency frequency=frequency+step*(2.0*pi) c 100 continue c close(20) c 1000 format(a4,1x,i2,a1,i2,1x,a15,1x,3(f12.4,1x,f3.1,1x)) 1005 format(a37) 1010 format(a22) 1015 format(a4,2x,a1,2x,a1,1x,a14,3(5x,a11)) 1100 format(f7.2,4(1x,e16.9)) 1105 format(2(e16.9,1x)) c 9999 stop end c c ***************************************************************** subroutine magnitude(z,x) c c Subroutine to return the magnitude x of a complex argument z c implicit real (a-h,o-y) implicit complex (z) c partone=real(z) parttwo=imag(z) c x=SQRT(partone*partone+parttwo*parttwo) Sum pressure zp=zp+zDmn*press*sin(m*pi*yz/l)*cos(n*tt)
&
c c c
Calculate cofactors for zAmn, zBmn, zCmn zdet=cmplx((frequency*frequency-freq3*freq3), 2.0*eta*frequency*freq3)* cmplx((frequency*frequency-freq2*freq2), 2.0*eta*frequency*freq2)* cmplx((frequency*frequency-freq1*freq1), 2.0*eta*frequency*freq1) zcofA=cmplx((frequency*frequency-freqA*freqA), 2.0*eta*frequency*freqA) zcofB=cmplx((frequency*frequency-freqB*freqB),
82
c return end c c c c c c c ***************************************************************** subroutine realcof(a,alph,n,out) Subroutine to return the denominator of the pressure coefficient term. Used when the argument of the n-th order bessel function is a real. implicit real (a-h,o-y) implicit complex (z) c c c x=alph*a c if (n.EQ.0) then term1=BESSJ0(x) term2=BESSJ1(x) elseif (n.eq.1) then term1=BESSJ1(x) term2=BESSJ(2,x) else term1=BESSJ(n,x) term2=BESSJ((n+1),x) endif c c c c return end c c c c c c c ***************************************************************** subroutine cofimag(a,alpha,n,out) Subroutine to return the denominator of the pressure coefficient term. Used when the argument of the n-th order bessel function is complex. implicit real (a-h,o-y) implicit complex (z) c x=alpha*a c if (n.EQ.0) then term1=BESSI0(x) term2=BESSI1(x) elseif (n.EQ.1) then term1=BESSI0(x) term2=BESSI(2,x) else term1=BESSI(n,x) Construct denominator out=(n/a)*term1-alph*term2 c c c c c c c Square root of -1 zi=cmplx(0.0,1.0) c c c c
term2=BESSI((n+1),x) endif Construct denominator out=alpha*term2+(n/a)*term1 return end c c c c c c ***************************************************************** subroutine bessreal(r,alpha,n,out) Subroutine to return the n-th order bessel function of a real argument. implicit real (a-h,o-y) implicit complex (z) zi=cmplx(0.0,1.0) x=r*alpha c if (n.EQ.0) then out=BESSJ0(x) elseif (n.EQ.1) then out=BESSJ1(x) else out=BESSJ(n,x) endif c return end ***************************************************************** subroutine bessimag(r,alpha,n,out) Subroutine to return the n-th order modified bessel function of a real argument implicit real (a-h,o-y) implicit complex (z) c x=r*alpha c if (n.EQ.0) then out=BESSI0(x) elseif (n.EQ.1) then out=BESSI1(x) else out=BESSI(n,x) endif c return end
83
Analysis Type SCRATCH 0.459 5.947 0.975 8.004 0.500 6.554 3.228 17.564 6.554 7.406 16.687 SOL 108 SOL 111 SOL 108 SOL 103
Calculated Eigenvalues 10 10 14 14 10 10 47 51 20 -
Nodes 1331 4961 1573 5644 1449 6609 1953 8097 5644 5644 1953
DBALL 4.686 19.759 6.660 27.394 5.890 24.478 14.025 61.538 23.400 24.396 48.931
Figure 31: MSC/NASTRAN le useage data for DBALL and SCRATCH les.
84