Stress analysis of rotor with periodic BCs

Numerical methods and mathematical models of Elmer
tpgillam
Posts: 12
Joined: 06 Dec 2022, 13:35
Antispam: Yes

Stress analysis of rotor with periodic BCs

Post by tpgillam »

Hello,

I'm quite new to Elmer. I am trying to use it to model centrifugal stresses in a thin 3D slice of a rotor.

If I use a mesh of the whole rotor I am getting sesible results, however if I try to take advantage of symmetries using periodic boundaries, I am not. I suspect that I am providing an incorrect setting somewhere. The natures of the failure seems to be that:

* the "radial projector" seems to make displacements anti-symmetric, rather than symmetric
* the radial displacement on the shaft boundary seems pinned to zero.

I'm also not entirely sure whether the "Normal-Tangential Displacement" line(s) on the periodic boundaries should be required when not specifying an explicit displacement constraint - i.e. I'm not sure how they interact with the radial projector.

The attached image shows the solution I get from this SIF file, when viewed in paraview with a rotational filter, and a displacement warping filter (exaggerated 400x).

Can anyone spot what I'm doing wrong please? Here's my SIF file, and I'm attaching a zip of my mesh.

Many thanks,
Tom
slice_displacement.png
(238.7 KiB) Not downloaded yet

Code: Select all

! Specify the RPM of the rotor here, and then we compute the angular velocity below.
$ rpm = 15000
$ omega = 2 * pi * rpm / 60

Header
    CHECK KEYWORDS Warn
    Mesh DB "srm_slice/"
    Include Path "."
    Results Directory "out_slice/"
End

Simulation
    Max Output level = 10
    Coordinate System = Cartesian
    Coordinate Mapping(3) = 1 2 3
    Coordinate Scaling = 0.001  ! The mesh is in mm, but we work with SI units internally
    Simulation Type = Steady State
    Timestepping Method = BDF
    BDF Order = 1
    Steady State Max Iterations = 1
    Use Mesh Names = Logical True
End

! Materials
Material 1
    Name = "RotorMaterial"
	Heat Conductivity = 16.27  ! [W/(m K)]
	Density = 7850.0  ! [kg/m^3]
	Heat Capacity  = 466  ! [J/(kg K)]
	Poisson ratio = 0.285
	Mesh Poisson ratio = 0.285
	Youngs modulus = 200.0e9  ! [Pa]
End

! Bodies

Body 1
    Name = "Lamination"
    Target Bodies(1) = 1
    Material = 1
    Body Force = 1
    Equation = 1
End

! Body forces
Body Force 1
    Stress Bodyforce 1 = Variable Coordinate 1
        Real MATC "7850 * omega^2*tx"
    Stress Bodyforce 2 = Variable Coordinate 2
        Real MATC "7850 * omega^2*tx"
End

! Equations & solvers
Equation 1
    Name = "Rotor equation"
    Active Solvers(2) = 1 2
End

Solver 1
    Equation = "MooStress"
    Procedure = "StressSolve" "StressSolver"
    Variable = -dofs 3 Displacement
    Exec Solver = Always

    Calculate Stresses = Logical True
    Displace Mesh = Logical False
    Optimize Bandwidth = True

    Bubbles = False
    Lumped Mass Matrix = False
    Steady State Convergence Tolerance = 1.0

    Apply Mortar BCs = Logical True
End

Solver 2
	Exec Solver = After Timestep
	Procedure = "ResultOutputSolve" "ResultOutputSolver"
	Output File Name = "step"
	Vtu Format = True
	Binary Output = False
	Single Precision = True
	Save Geometry Ids = True
	Show Variables = True
End

! Boundaries

Boundary Condition 1
    Name = "boundary_lam_shaft"
    Target Boundaries(1) = 1
    ! Set the tangential component of displacement to 0. The radial component should be free.
    Normal-Tangential Displacement = Logical True
    Displacement 2 = 0.0  # theta-axis
    ! Displacement 3 = 0.0  # z-axis  ! Probably don't want this, as we want to allow the rotor to expand.
End

Boundary Condition 2
    Name = "boundary_rotor_independent"
    Target Boundaries(1) = 2
    Normal-Tangential Displacement = Logical True

    Mortar BC = Integer 3
    Mortar BC Static = Logical True
    Radial Projector = Logical True
    Galerkin Projector = Logical True  ! If not present, get singular matrix

    ! Periodic BC results in floating point errors - presumably because mesh isn't conformal on boundary.
    ! Periodic BC = Integer 3
    ! Periodic BC Displacement 1 = True  ! Normal
    ! Periodic BC Displacement 2 = True  ! Tangential (?? this is what pyleecan does, but seems weird)
    ! ! TODO Need z axis too?
    ! Periodic BC Displacement 3 = True  ! Tangential (?? this is what pyleecan does, but seems weird)
    ! Periodic BC Pressure = False
End

Boundary Condition 3
    Name = "boundary_rotor_dependent"
    Target Boundaries(1) = 3
    Normal-Tangential Displacement = Logical True
End
Attachments
srm_slice.zip
(439.33 KiB) Downloaded 31 times
kevinarden
Posts: 2237
Joined: 25 Jan 2019, 01:28
Antispam: Yes

Re: Stress analysis of rotor with periodic BCs

Post by kevinarden »

Your model is in a Cartesian system

" Coordinate System = Cartesian"

Your load appears to be in the Cartesian system

You appear to be treating the BCs in a radial system

Displacement 2 = 0.0 # theta-axis

Displacement 2 is not theta in a Cartesian system, it is displacement along the y axis
tpgillam
Posts: 12
Joined: 06 Dec 2022, 13:35
Antispam: Yes

Re: Stress analysis of rotor with periodic BCs

Post by tpgillam »

Thanks for your reply!

So for the rotor-shaft boundary, I'd also set the `Normal-Tangential Displacement = Logical True` option, which I thought should mean that `Displacement 2` now refers to the direction locally tangential to the boundary?

Interestingly, this boundary condition works as intended if I model the whole rotor -- the SIF file in that case is identical except for i) pointing to a mesh of the whole rotor, not a slice, ii) boundaries 2 & 3 do not exist. So I had thought (but naturally could be wrong) that only boundaries 2 & 3 were problematic.
kevinarden
Posts: 2237
Joined: 25 Jan 2019, 01:28
Antispam: Yes

Re: Stress analysis of rotor with periodic BCs

Post by kevinarden »

No
Normal-Tangential Displacement = Logical True
is a condition for how mortar surface detect and interact with each other, it does not change global variables from Cartesian to polar.
BC 1 is not a mortar condition, so the Normal-Tangential Displacement = Logical True is ignored.
Not sure why you would mortar BC 2 to BC 3. Mortar is for two surfaces that interact with each other and defines the interaction.
Surface 2 and 3 should be independent.

I think you should be working in a polar coordinate system and specify loads and BCs in terms of radial and theta. No mortar conditions are required.
bodyforce 1 would be radial, and 2 theta

In polar 1 becomes radial and 2 becomes theta, BC 1 would be your shaft condition in terms of radial, displacement 1, and theta, displacement 2
same for surface 2 and 3 which could be done together like

Boundary Condition 1
Target Boundaries (1) = 1
Displacement 1 = 0 ! held to shaft Radial
Displacement 2 = 0 ! held to shaft Theta
Displacement 3 = 0 ! held to shaft Z
End
Boundary Condition 2
Target Boundaries(2) = 2 3
Displacement 2 = 0.0 ! theta if using Polar, no movement in theta but radial and Z free.
End
kevinarden
Posts: 2237
Joined: 25 Jan 2019, 01:28
Antispam: Yes

Re: Stress analysis of rotor with periodic BCs

Post by kevinarden »

FYI you mesh is linear tetrahedrons which are not accurate elements for stress solver. When you get the coordinate system, load and restraints worked out you will want to switch to higher order elements for accuracy when using tetrahedrons.
kevinarden
Posts: 2237
Joined: 25 Jan 2019, 01:28
Antispam: Yes

Re: Stress analysis of rotor with periodic BCs

Post by kevinarden »

You are correct, I re-checked the manual, Normal-Tangential can be used to specify conditions normal to and tangential to the surface. However I do not see a need for mortar conditions in your problem

Boundary Condition bc id
The boundary condition section holds the parameter values for various boundary condition types.
Dirichlet boundary conditions may be set for all the primary field variables. The one related to Navier
equations are
Displacement i Real
Dirichlet boundary condition for each displacement component i= 1, 2, 3.
Normal-Tangential Displacement Logical
The Dirichlet conditions for the vector variables may be given in normal-tangential coordinate
system instead of the coordinate axis directed system. The first component will in this case be
the normal component and the components 2, 3 two orthogonal tangent directions.


These BCs worked as expected

Boundary Condition 1
Name = "boundary_lam_shaft"
Target Boundaries(1) = 1
Displacement 1 = 0.0 ! Fixed
Displacement 2 = 0.0 ! to
Displacement 3 = 0.0 ! Shaft
End

Boundary Condition 2
Name = "symmetry"
Target Boundaries(1) = 2
Displacement 1 = 0.0 ! Normal to plane
Normal-Tangential Displacement = Logical True
End

Boundary Condition 3
Name = "symmetry"
Target Boundaries(1) = 3
Displacement 1 = 0.0 ! Normal to plane
Normal-Tangential Displacement = Logical True
End
tpgillam
Posts: 12
Joined: 06 Dec 2022, 13:35
Antispam: Yes

Re: Stress analysis of rotor with periodic BCs

Post by tpgillam »

Thanks very much for your time here, kevinarden.

So - in my case at the shaft I only want to fix the angular displacement of the rotor, so that it's free to expand radially. My colleague advises that this is necessary to get a better stress estimate.

If I follow your suggestions, but then relax the displacement conditions on boundary 1 to only do this, then I get something odd - it seems like, at the seams, the radial displacement is still constrained to zero at the shaft boundary. See attached exaggerated displacement plot. The original mesh is overlaid.

Image

Also attached is what I get in a reference case with a 360 degree rotor model, where these anomalies aren't visible.

Image

(I agree that in this case I can avoid the mortar BC by fixing the angular displacement on boundaries 2 & 3 explicitly. However I was hoping to achieve the same result with the mortar boundary mechanism - in the future I'd like to also consider stresses arising from electromagnetic forces on rotors. At this point I won't be able to say that the angular displacement is zero any more.)
Attachments
displacement_bc_fixed.png
colour: von-mises. diplacement exaggerated 400x. 90-degree slice modelled, visualised with angularperiodic filter. slice mesh included as reference.
(323.85 KiB) Not downloaded yet
displacement_360.png
colour: von-mises. diplacement exaggerated 400x. full rotor modelled. slice mesh included as reference.
(361.4 KiB) Not downloaded yet
kevinarden
Posts: 2237
Joined: 25 Jan 2019, 01:28
Antispam: Yes

Re: Stress analysis of rotor with periodic BCs

Post by kevinarden »

Where the shaft surface and the slice surface comes together the nodes have restraint in both the x and y direction, since the load is also defined as x and y no motion occurs. Since the slice is held from rotation on both faces holding the shaft in rotation is not necessary.
deformed.png
deformed.png (84.65 KiB) Viewed 638 times
! Boundaries

Boundary Condition 1
Name = "symmetry"
Target Boundaries(1) = 2
Displacement 1 = 0.0 ! Normal to plane
Normal-Tangential Displacement = Logical True
End

Boundary Condition 2
Name = "symmetry"
Target Boundaries(1) = 3
Displacement 1 = 0.0 ! Normal to plane
Normal-Tangential Displacement = Logical True
End
tpgillam
Posts: 12
Joined: 06 Dec 2022, 13:35
Antispam: Yes

Re: Stress analysis of rotor with periodic BCs

Post by tpgillam »

This is interesting...

I can reproduce your result. However, counterintuitively, if I leave in a section:

Code: Select all

Boundary Condition 1
    Name = "boundary_lam_shaft"
    Target Boundaries(1) = 1
    Normal-Tangential Displacement = Logical True
End
i.e. leaving the BC in, but removing the displacement constraint, then I again get the strange pinning-to-zero-radial effect at the segment edges. The `Normal-Tangential Displacement` option is clearly responsible -- if I remove it then I get what you see. Do you know why this is?
nt_true.png
nt_true.png (189.04 KiB) Viewed 632 times

Also, unfortunately, I don't think the model is equivalent once the angular displacement constraint is removed. I agree that there won't be any overall rotation in this case, however this now allows the rotor to "pinch" near the middle of the segment - see difference wrt. reference 360 solution in my previous post.

---
Just to clarify, my overall objective in studying this toy problem is to get a solution using the mortar / periodic BCs, since these will be necessary when applying a torque. Or, if it's not possible to achieve this, then I'd like to figure that out for sure :) In this case boundaries 2 & 3 do interact insofar as the displacements should match (and so I had thought it should be soluble using a `Radial Projector`). But, I suspect understanding & fixing the Normal-Tangential issues above are a pre-requisite to getting the mortar conditions working...
kevinarden
Posts: 2237
Joined: 25 Jan 2019, 01:28
Antispam: Yes

Re: Stress analysis of rotor with periodic BCs

Post by kevinarden »

I can't answer the questions why. However, using Cartesian BCs on the symmetry boundaries and Normal-Tangent on the shaft works.
displacement2.png
displacement2.png (357.91 KiB) Viewed 604 times
! Boundaries

Boundary Condition 1
Name = "symmetry"
Target Boundaries(1) = 2
Displacement 2 = 0 ! Normal in Cartesian
End

Boundary Condition 2
Name = "symmetry"
Target Boundaries(1) = 3
Displacement 1 = 0 ! Normal in Cartesian
End

Boundary Condition 3
Name = "shaft"
Target boundaries (1) = 1
Displacement 2 = 0
Normal-Tangential Displacement = Logical True
End
Post Reply