This example demonstrates the modal analysis of a single turbomachinery stage modeled as two radially aligned cyclic stages. Specifically, it demonstrates the following key points:
Modal analysis of a multistage system
Radial multistage modeling
Mismatched interstage boundaries that require mapping
Offset cyclic edge starting points
Expansion, resetting of expansion, and adding to an expansion
The example problem is presented in the following sections:
The multistage system consists of two radially aligned cyclic stages merged at an interstage boundary. The inner stage consists of a rim and a web with a stress relief hole modeled using SOLID186 elements as shown in purple in Figure 7.14: Turbomachinery Stage Modeled using Two Cyclic Stages. The inner stage has 12 sectors. The outer stage is made up of blades on a platform and is modeled using SOLID187 elements. The outer stage has 36 sectors and is shown in light blue. Modal analysis is performed for both harmonic index 0 and harmonic index 2. A full 360° input is also shown for reference (see Input for the Analysis: Case 2) but will not be described further.
The following table describes the key steps and related commands used for the example analysis. See Input for the Analysis for the detailed command listing.
Step | Description | Mechanical APDL Commands |
1. | Create base and duplicate sector for each stage. | CDREAD,... |
2. | Create stage components for each stage. | CM,... |
3. | Create sector low/high edge components for each stage. | CM,... |
4. | Create stages and apply cyclic constraints for harmonic index 0. |
MSOPT,NEW,... CECYCMS,... |
5. | Set analysis type (modal). | ANTYPE,MODAL |
6. | Specify modal solve options. |
MODOPT,… MXPAND,… |
7. | Apply interstage constraints. | CEIMS,... |
8. | Apply other boundary conditions. | D,.... |
9. | Solve the modal analysis for HI = 0. | SOLVE,... |
10. | List the modal frequencies. |
/POST1
SET, List |
12. | Re-enter solution processor. | /SOLU |
12. | Set analysis type (modal). |
ANTYPE,MODAL |
13. | Specify modal solve options. |
MODOPT,… MXPAND,… |
14. | Modify stages to change harmonic index for modal solve. | MSOPT,MODIFY,… |
15. | Recreate interstage boundary constraints while reusing mapping. | CEIMS,... |
16. | Delete boundary conditions and reapply.[a] |
DDELE,… D,.. |
17. | Solve the modal analysis. | SOLVE |
18. | Enter POST1 postprocessor. | /POST1 |
19. | Set expansion parameters to expand all sectors of the inner stage only. | MSOPT,EXPA,InnerStage,ALL |
20. | Read results, expand database and expand results. | SET,... |
21. | Plot partially expanded displacements. | PLNSOL |
22. | Reset the expansion settings. | MSOPT,EXPA,ALL,0 |
23. | Set expansion parameters to expand all sectors of the outer stage only. | MSOPT,EXPA,OuterStage,ALL |
24. | Read results, expand database and expand results. | SET,... |
25. | Plot partially expanded displacements. | PLNSOL |
26. | Add to multistage expansion. | MSOPT,EXPA,ALL,ALL |
27. | Read additional results, expand database and expand results. | SET,... |
28. | Plot expanded displacements. | PLNSOL |
[a] Step 16, delete boundary conditions and reapply, is required because the duplicate sector nodes are internally constrained in the first modal analysis (harmonic index 0).
Download the zipped .cdb files used for this example problem.
/batch
/com ===================================================================
/com Multistage modal analysis - multiple HI solves
/com ===================================================================
! read in stages
!---------------
cdread,db,OuterStage,cdb
cdread,db,OuterStage,cdb
cdread,db,InnerStage,cdb
cdread,db,InnerStage,cdb
/prep7
! element type 2 and 3 = InnerStage Original
INNER_ELTYP = 2
INNER_ELTYP2 = 3
! element type 5 and 6 = InnerStage Duplicate
INNER_ELTYP_DUP = 5
INNER_ELTYP_DUP2 = 6
! element type 7 = OuterStage Original
OUTER_ELTYP = 7
! element type 10 = OuterStage Duplicate
OUTER_ELTYP_DUP = 10
NS1 = 12 ! inner number of sectors
THETA1 = 360/NS1
NS2 = 36 ! outer number of sectors
THETA2 = 360/NS2
csys,1
esel,,type,,INNER_ELTYP
esel,a,type,,INNER_ELTYP2
nsle
*get,RINTF,NODE,0,MXLOC,X ! MS interface radius
*get,RBC ,NODE,0,MNLOC,X ! BC radius
allsel
! create stage components
!-------------------------
! create components for inner stage
esel,s,type,,INNER_ELTYP
esel,a,type,,INNER_ELTYP2
cm,_InnerStage_base_elm,elem
nsle
cm,_InnerStage_base_nod,node
alls
esel,s,type,,INNER_ELTYP_DUP
esel,a,type,,INNER_ELTYP_DUP2
cm,_InnerStage_dupl_elm,elem
nsle
cm,_InnerStage_dupl_nod,node
alls
cmsel,s,stage1_low
cm,_InnerStage_cyclow_nod,node
cmsel,s,stage1_high
cm,_InnerStage_cychigh_nod,node
allsel
! create components for outer stage
esel,s,type,,OUTER_ELTYP
cm,_OuterStage_base_elm,elem
nsle
cm,_OuterStage_base_nod,node
alls
esel,s,type,,OUTER_ELTYP_DUP
cm,_OuterStage_dupl_elm,elem
nsle
cm,_OuterStage_dupl_nod,node
alls
cmsel,s,stage2_low
cm,_OuterStage_cyclow_nod,node
cmsel,s,stage2_high
cm,_OuterStage_cychigh_nod,node
allsel
! create stages
!--------------
/com **************************
/com *** First run - HI = 0 ***
/com **************************
KHI = 0
msopt,new,InnerStage,NS1,KHI
cecycms
msopt,new,OuterStage,NS2,KHI
cecycms
msopt,list,all
/solu
antype,modal
modopt,lanb,6
mxpand,all,,,yes
! interstage CEs
!--------------
esel,,type,,INNER_ELTYP
esel,a,type,,INNER_ELTYP2
nsle
seltol,RINTF*1e-3 ! tighten selection tolerance
nsel,r,loc,x,RINTF
seltol
cm,Inner_intf_nod,node
esel,s,type,,OUTER_ELTYP
nsle
seltol,1e-6
nsel,r,loc,x,RINTF
esln
cm,Outer_intf_elm,elem
allsel
cmsel,,Inner_intf_nod
cmsel,,Outer_intf_elm
CEIMS,,,InnerStage,OuterStage
allsel
! apply boundary conditions
!--------------------------
nsel,,loc,x,RBC
d,all,uy
d,all,uz
allsel
solve
finish
/post1
/com ----------------------------------------
/com MS results, HI = 0 Frequencies
/com ----------------------------------------
set,list
/com ---------> EXPANSION 1: InnerStage only
msopt,expa,InnerStage,all
set,1,2
/graphics,power
/contour,1,,0,,5.835
/show,png,rev,,,ms_Usum_Inner_HI0
plnsol,u,sum
*get,max_Usum_Inner,plnsol,,max
/show,close
/contour,1,,17589.5,,.213e7
/show,png,rev,,,ms_Seqv_Inner_HI0
plnsol,s,eqv
*get,max_Seqv_Inner,plnsol,,max
/show,close
/com ---------> EXPANSION 2: OuterStage only
msopt,expa,all,0 ! reset
msopt,expa,OuterStage,all
set,1,2
/contour,1,,0,,5.835
/show,png,rev,,,ms_Usum_Outer_HI0
plnsol,u,sum
*get,max_Usum_Outer,plnsol,,max
/show,close
/contour,1,,17589.5,,.213e7
/show,png,rev,,,ms_Seqv_Outer_HI0
plnsol,s,eqv
*get,max_Seqv_Outer,plnsol,,max
/show,close
/com ---------> EXPANSION 3: Both stages
msopt,expa,InnerStage,all ! add to previous expansion
set,1,2
/contour,1,,0,,5.835
/show,png,rev,,,ms_Usum_All_HI0
plnsol,u,sum
*get,max_Usum_All,plnsol,,max
/show,close
/contour,1,,17589.5,,.213e7
/show,png,rev,,,ms_Seqv_All_HI0
plnsol,s,eqv
*get,max_Seqv_All,plnsol,,max
/show,close
/com,----------------------------------------
/com, MS results, HI = 0
/com,----------------------------------------
*stat,max_Usum_Inner
*stat,max_Seqv_Inner
*stat,max_Usum_Outer
*stat,max_Seqv_Outer
*stat,max_Usum_All
*stat,max_Seqv_All
/com,----------------------------------------
finish
/com ***************************
/com *** Second run - HI = 2 ***
/com ***************************
KHI = 2
/solu
antype,modal
modopt,lanb,6
mxpand,all,,,yes
! modify stages : harmonic index
!-----------------------------------
msopt,modify,innerStage,KHI
cecycms
msopt,modify,outerStage,KHI
cecycms
! selection for interstage CEs
!------------------------------
esel,,type,,INNER_ELTYP
esel,a,type,,INNER_ELTYP2
nsle
seltol,RINTF*1e-3 ! tighten selection tolerance
nsel,r,loc,x,RINTF
seltol
cm,Inner_intf_nod,node
esel,s,type,,OUTER_ELTYP
nsle
seltol,1e-6
nsel,r,loc,x,RINTF
esln
cm,Outer_intf_elm,elem
allsel
! apply interstage CEs
!----------------------
cmsel,,Inner_intf_nod
cmsel,,Outer_intf_elm
CEIMS,,,InnerStage,OuterStage
allsel
! boundary conditions
! -------------------
ddele,all
nsel,,loc,x,RBC
d,all,uy
d,all,uz
allsel
solve
finish
/post1
/com ----------------------------------------
/com MS results, HI = 2 Frequencies
/com ----------------------------------------
set,list
/com ---------> EXPANSION 1: InnerStage only
msopt,expa,InnerStage,all
set,1,3
/graphics,power
/contour,1,,0,,8.42051
/show,png,rev,,,ms_Usum_Inner_HI2
plnsol,u,sum
*get,max_Usum_Inner_HI2,plnsol,,max
/show,close
/contour,1,,0,,.429e7
/show,png,rev,,,ms_Seqv_Inner_HI2
plnsol,s,eqv
*get,max_Seqv_Inner_HI2,plnsol,,max
/show,close
/com ---------> EXPANSION 2: OuterStage only
msopt,expa,all,0 ! reset
msopt,expa,OuterStage,all
set,1,3
/contour,1,,0,,8.42051
/show,png,rev,,,ms_Usum_Outer_HI2
plnsol,u,sum
*get,max_Usum_Outer_HI2,plnsol,,max
/show,close
/contour,1,,0,,.429e7
/show,png,rev,,,ms_Seqv_Outer_HI2
plnsol,s,eqv
*get,max_Seqv_Outer_HI2,plnsol,,max
/show,close
/com ---------> EXPANSION 3: Both stages
msopt,expa,InnerStage,all ! add to previous expansion
set,1,3
/contour,1,,0,,8.42051
/show,png,rev,,,ms_Usum_All_HI2
plnsol,u,sum
*get,max_Usum_All_HI2,plnsol,,max
/show,close
/contour,1,,0,,.429e7
/show,png,rev,,,ms_Seqv_All_HI2
plnsol,s,eqv
*get,max_Seqv_All_HI2,plnsol,,max
/show,close
finish
/com =====================================================================
/com Case 2: Full 360 analysis (REFERENCE)
/com ---------------------------------------------------------------------
/com
/clear,nostart
cdread,db,OuterStage,cdb
cdread,db,InnerStage,cdb
/prep7
! rotate nodes into cylindrical system
alls
csys,1
nrot,all
! element type 2 and 3 = InnerStage Original
INNER_ELTYP = 2
INNER_ELTYP2 = 3
! element type 4 = OuterStage Original
OUTER_ELTYP = 4
NS1 = 12 ! inner number of sectors
THETA1 = 360/NS1
NS2 = 36 ! outer number of sectors
THETA2 = 360/NS2
csys,1
esel,,type,,INNER_ELTYP
esel,a,type,,INNER_ELTYP2
nsle
*get,RINTF,NODE,0,MXLOC,X ! MS interface radius
*get,RBC ,NODE,0,MNLOC,X ! BC radius
allsel
! create components for inner stage
esel,s,type,,INNER_ELTYP
esel,a,type,,INNER_ELTYP2
cm,_InnerStage_base_elm,elem
nsle
cm,_InnerStage_base_nod,node
allsel
! create components for outer stage
esel,s,type,,OUTER_ELTYP
cm,_OuterStage_base_elm,elem
nsle
cm,_OuterStage_base_nod,node
alls
!Create the full 360 structure
*get,nnode,node,,count
!Inner stage
cmsel,s,_InnerStage_base_elm
cmsel,s,_InnerStage_base_nod
egen,NS1,nnode,all,,,,,,,,0,theta1
nummrg,node
!OuterStage
cmsel,s,_OuterStage_base_elm
cmsel,s,_OuterStage_base_nod
egen,NS2,nnode,all,,,,,,,,0,theta2
nummrg,node
alls
!Create component for full stage
esel,s,type,,INNER_ELTYP
esel,a,type,,INNER_ELTYP2
nsle
cm,stage1_nod,node
cm,stage1_elm,elem
esel,s,type,,OUTER_ELTYP
nsle
cm,stage2_nod,node
cm,stage2_elm,elem
alls
!Rotate nodes into cylindrical coord and tie interface together
csys,1
nrot,all
cmsel,s,stage1_nod
nsel,r,loc,x,RINTF
esln
cm,intf1_elm,elem
cmsel,s,stage2_nod
nsel,r,loc,x,RINTF
cm,intf1_nod,node
ceintf,,all
alls
! BC
nsel,,loc,x,RBC
d,all,uy
d,all,uz
allsel
finish
/solu
antype,modal
modopt,lanb,50,500,570
outres,erase
outres,all,none
outres,nsol,all
outres,etmp,all
outres,strs,all
mxpand,all,,,yes,,no ! expand requested element results, but not write them to file.mode
dmpoption,all,yes
allsel
solve
finish
/post1
/com, ----------------------------------------
/com, Full results, Frequencies
/com, ----------------------------------------
set,list
! For HI = 0 mode
set,1,1
/show,png,rev,,,full_Usum_HI0
plnsol,u,sum
*get,max_Usum_HI0,plnsol,,max
/show,close
/show,png,rev,,,full_Seqv_HI0
plnsol,s,eqv
*get,max_Seqv_HI0,plnsol,,max
/show,close
/com,----------------------------------------
/com, Full results: HI = 0
/com,----------------------------------------
*stat,max_Usum_HI0
*stat,max_Seqv_HI0
/com,----------------------------------------
! For HI = 2 mode
set,1,4
/show,png,rev,,,full_Usum_HI2
plnsol,u,sum
*get,max_Usum_HI2,plnsol,,max
/show,close
/show,png,rev,,,full_Seqv_HI2
plnsol,s,eqv
*get,max_Seqv_HI2,plnsol,,max
/show,close
/com,----------------------------------------
/com, Full results: HI = 2
/com,----------------------------------------
*stat,max_Usum_HI2
*stat,max_Seqv_HI2
/com,----------------------------------------
finish
Results are shown below. (HI = 0 results are omitted for brevity.) Multistage cyclic symmetry analysis offers significant time savings compared to analysis of the reference full 360° model. The results of these two different modeling approaches are compared in Figure 7.19: Displacements for Multistage (A) and Reference Full 360° Analysis (B), HI = 2 and Figure 7.20: Equivalent Stress for Multistage (A) and Reference Full 360° Analysis (B), HI = 2. These figures show that the results for the two models are quite similar and verifies the accuracy of the more efficient multistage cyclic symmetry approach.