Damping Coupling Multirotor - #1427
Open
murilloabs wants to merge 12 commits into
Open
murilloabs wants to merge 12 commits into
murilloabs wants to merge 12 commits into
Conversation
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1427 +/- ##
==========================================
+ Coverage 82.59% 82.81% +0.22%
==========================================
Files 173 173
Lines 27549 27561 +12
==========================================
+ Hits 22754 22826 +72
+ Misses 4795 4735 -60
... and 1 file with indirect coverage changes Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
jguarato
self-requested a review
September 30, 2026 17:37
jguarato
reviewed
Sep 30, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This pull request implements linear gear-mesh damping in
MultiRotormodels and refactors the gear coupling representation so that the same geometric coupling matrix is used for both mesh stiffness and mesh damping.PR #1426 already include
damping_ratioinMultiRotor.__init__(). In this PR the default value is swithced to 0 and now thisdamping_ratiois used for the linear mesh coupling when backlash is disabled.The mesh-damping coefficient is calculated according to Yi et al. (2019):
where:
The stiffness and damping contributions are assembled using the same geometric coupling matrix:
This approach makes the damping coupling analogous to the stiffness coupling and preserves the same interaction pattern between the driving and driven rotors.
Theoretical reference
The mesh-damping formulation follows:
The implementation uses the damping expression from this reference and assembles the resulting coefficient into the global damping matrix using the same
coupling_matrixused by the mesh stiffness.The geometric coupling-matrix formulation used by ROSS is based on the existing rotor-dynamics formulation described by Kaplan et al. (2013). The corresponding bibliography entry is:
A complementary reference for the geared-rotor formulation is Visnadi (2022). This thesis is included here as supporting literature for the use of the gear-coupling formulation in the assembly of mesh-related stiffness and damping contributions. In the present implementation, the same dimensionless geometric
coupling_matrixis therefore reused for both terms, while the physical scalar coefficients remain distinct:New damping-ratio parameter
The
MultiRotorclass now accepts adamping_ratioparameter:The default value is:
This preserves the previous linear numerical behavior because linear mesh damping is disabled when the damping ratio is zero.
The parameter is propagated through the model as follows:
The same damping ratio is therefore available to both the linear mesh-damping matrix and the nonlinear backlash-force formulation.
Equivalent mass
The equivalent gear-pair mass is now calculated by
Meshand stored asMesh.M_eq. It is available whether or not backlash is enabled.The equivalent mass is calculated as:
where$I_{p1}$ and $I_{p2}$ are the polar moments of inertia and $R_{b1}$ and $R_{b2}$ are the base-circle radii of the two gears.
When backlash is enabled, the same value is passed from
MeshtoBacklash:This avoids duplicating the equivalent-mass calculation and ensures that the linear and nonlinear formulations use the same physical parameter.
Code execution flow
The main initialization flow is:
When a
MultiRotorobject is created:Meshobject is created.Meshstores the mesh stiffness and damping ratio.Mesh.M_eqis calculated.M_eqanddamping_ratioare passed toBacklash.coupling_matrixis calculated.Coupling-matrix refactor
The previous attribute:
was renamed to:
The matrix itself was not changed.
coupling_matrixpreserves exactly the same formulation, equations, entries, and numerical structure previously used byK_coupling. This is the existing dimensionless geometric coupling matrix implemented incompute_coupling_matrix(), following the Kaplan et al. (2013) rotor-dynamics formulation already used by ROSS. Only the property name was changed to reflect that the matrix is now used by both stiffness and damping.Therefore, this pull request does not modify the coupling-matrix formulation. It only reuses the existing matrix for the damping contribution in addition to the stiffness contribution.
The same unchanged matrix defines the diagonal and cross-rotor interaction terms:
Stiffness-matrix flow
When
MultiRotor.K()is called, the sequence is:For the linear model, the mesh-stiffness contribution is:
It is added to the gear degrees of freedom as:
Damping-matrix flow
When
MultiRotor.C()is called, the sequence is:The coefficient is calculated as:
The damping contribution is then assembled analogously to stiffness:
The implementation is conceptually:
When
damping_ratio=0.0,c_mis zero and no additional cross-rotor damping is added.Linear and backlash coupling selection
The coupling functions are selected according to the backlash configuration:
When backlash is disabled:
When backlash is enabled:
This prevents the linear mesh contributions from being added on top of the nonlinear backlash formulation.
Time-varying stiffness and damping
When time-varying mesh stiffness is enabled,
Mesh.stiffnessis updated before both global matrices are assembled:The damping coefficient always uses the current mesh stiffness:
Backlash flow
When backlash is active, the gear interaction is calculated through the nonlinear contact-force model:
The
damping_ratiois passed toBacklashand used in the nonlinear force formulation. The linearK_meshandC_meshmatrices are not added separately when backlash is active.This separates the two formulations:
This avoids double counting of mesh stiffness and damping.
Rebuild behavior
The
damping_ratiovalue is preserved whenever theMultiRotormodel is rebuilt. This applies to operations such as adding nodes, adding elements, and reconstructing the internal rotor model.Main code changes
damping_ratiotoMultiRotor.damping_ratiofromMultiRotortoMesh.damping_ratiofromMeshtoBacklash.Mesh.M_eq, available with or without backlash.BacklashtoMesh.K_couplingtocoupling_matrix.C_mesh()method.K_mesh()to usecoupling_matrix.C()andK()to apply the selected coupling behavior.damping_ratioduring rebuild operations.MultiRotor,Mesh,Backlash, andC_mesh()docstrings.Compatibility notes
This change introduces a breaking API rename:
was replaced by:
No compatibility alias was added.
The default value is:
This disables linear mesh damping and preserves the previous linear numerical behavior.