7.3. Example: Modal Analysis of Turbomachinery Stage Modeled as 2 Radial Stages with Offset Cyclic Edge Starting Points

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

7.3.1. Problem Description

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.

Figure 7.14: Turbomachinery Stage Modeled using Two Cyclic Stages

Turbomachinery Stage Modeled using Two Cyclic Stages

7.3.2. Analysis Steps

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,…

CECYCMS

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).

7.3.3. Input for the Analysis

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

7.3.4. Analysis Results

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.

Figure 7.15: Displacements for Inner Stage, HI = 2

Displacements for Inner Stage, HI = 2

Figure 7.16: Equivalent Stress for Inner Stage, HI = 2

Equivalent Stress for Inner Stage, HI = 2

Figure 7.17: Displacements for Outer Stage, HI = 2

Displacements for Outer Stage, HI = 2

Figure 7.18: Equivalent Stress for Outer Stage, HI = 2

Equivalent Stress for Outer Stage, HI = 2

Figure 7.19: Displacements for Multistage (A) and Reference Full 360° Analysis (B), HI = 2

Displacements for Multistage (A) and Reference Full 360° Analysis (B), HI = 2

Figure 7.20: Equivalent Stress for Multistage (A) and Reference Full 360° Analysis (B), HI = 2

Equivalent Stress for Multistage (A) and Reference Full 360° Analysis (B), HI = 2