Summary for: CentrifugalStressProblem < handle

Class summary

CentrifugalStressProblem Class for simple centrifugal stress problems.

this = CentrifugalStressProblem(geometry) creates a problem for the given geometry. If the geometry is a MotorModelBase subclass, its first .rotor component is selected as the geometry instead. The geometry is passed to this.initialize, see documentation for details.

this = CentrifugalStressProblem() initializes an empty problem instead.

The problem can then be solved using the .solve method.

Properties

.CentrifugalStressProblem/consider_dirichlet_nodes is a property.

.CentrifugalStressProblem/formulation is a property.

.CentrifugalStressProblem/geometry is a property.

.ignored_domains Domains to ignore.

Domains to ignore from mechanical analysis. Ignored domains are implicitly modelled as free space.

.CentrifugalStressProblem/matrices is a property.

.CentrifugalStressProblem/mesh is a property.

Setting an array of Domains here specifies which domains to ‘lift’, when parsing shell edges, i.e. where to update element definitions.

If not set, the default ShellEdge.get_left_and_right_elements method is used to get the ‘left’ domains.

Methods

Class methods are listed below. Inherited methods are not included.

.assemble_boundary_matrices Assemble boundary matrices.

assemble_boundary_matrices(this) assembles the boundary matrix for handling the periodic and Dirichlet boundary conditions. For now, Dirichlet nodes of the magnetic problem are set as zero-displacement nodes.

The result is saved to this.matrices.P.

.assemble_load_vector Assembles the centrifugal stress load vector.

assemble_load_vector(this) assembles the centrifugal stress load vector, for a ** unit angular velocity.

.assemble_stiffness_matrices Assemble stiffness matrices.

assemble_stiffness_matrices(this) parses the material properties and assembles the stiffness matrices. The results are saved to this.matrices.

.initialize Initialize problem.

initialize(this, geometry) initializes the problem. If geometry is a subclass of MotorModelBase, geometry.rotor(1) is set as this.geometry. Otherwise, the given geometry is set.

initialize(this, geometry, ‘formulation’, formulation) to specify the formulation used. Options include

  • ‘plane-strain’ : default
  • ‘plane-stress’

initialize(this, geometry, ‘consider_dirichlet_nodes’, bool) specifies whether the Dirichlet nodes of the geometry object are included as zero-displacement nodes in the mechanics problem. The default is false, as this often introduces artificial stiffness into the problem. The Origin, if meshed, is always included as a zero-displacement node.

Next, this.mesh is set to MechMesh(this.geometry).

Finally, the following methods are called:

  • parse_shell_edges
  • assemble_stiffness_matrices
  • assemble_boundary_matrices
  • assemble_load_vector

.parse_shell_edges Parse shell edges

parse_shell_edges(this) tries to parse shell edges. In this context, shell edges are with duplicate nodes on their left and right sides, with empty space between. They are mainly intended for modelling thin gaps with no mechanical contact, or contact modelled by special means.

By default, named edges of this.geometry by the name ‘shell’ are then shellified. First, ShellEdge objects are created using MechUtil.get_shell_edges.

Next, for each object se, the get_left_and_right_elements is called. The returned ‘left’ elements are then set as se.elements_to_shellify. Additionally, se.skip_ends is set to true. Finally, se.shellify is called.

.solve Solve centrifugal stress problem.

solution = solve(rpm) solves the problem at given rpm.

solution = solve(results) instead uses results.rpm as the rpm.

A CentrifugalStressSolution is returned.