Skip to content

Commit d12e44b

Browse files
committed
define Type MassProperties + SVectors etc
1 parent 583e71a commit d12e44b

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

src/Composition/massPropertiesComputation.jl

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ end
4444
# It sums up common mass, inertia tensor and center of mass.
4545
# The results are stored twice in actual root of super object:
4646
# massProperties: container for actual values
47-
function addMassPropertiesOfAllSuperObjChildsToRootSuperObj!(rootSuperObj::Object3D, actualMassSuperObject::Vector{Object3D{F}}) where F <: Modia3D.VarFloatType
47+
function addMassPropertiesOfAllSuperObjChildsToRootSuperObj!(rootSuperObj::Object3D{F}, actualMassSuperObject::Vector{Object3D{F}}) where F <: Modia3D.VarFloatType
4848
if length(actualMassSuperObject) > 0
4949
for i=1:length(actualMassSuperObject)
5050
obj = actualMassSuperObject[i]
@@ -75,41 +75,41 @@ end
7575
# function computeInertiaTensorForTwoBodies!(massPropParent, massPropObj, obj; add=true)
7676
function addOrSubtractMassPropertiesOfChildToRoot!(obj_root::Object3D{F}, obj_child::Object3D{F}; add=true)::Nothing where F <: Modia3D.VarFloatType
7777
solid::Shapes.Solid{F} = obj_child.feature
78-
massProperties_child = solid.massProperties
78+
massProperties_child::Shapes.MassProperties{F} = solid.massProperties
7979

80-
R_child::SMatrix{3,3,F,9}= obj_child.R_rel
81-
r_child::SVector{3,F} = obj_child.r_rel
82-
m_child::F = massProperties_child.m
83-
rCM_child::SVector{3,F} = massProperties_child.rCM
84-
I_child::SMatrix{3,3,F,9}= massProperties_child.I
80+
R_child = obj_child.R_rel
81+
r_child = obj_child.r_rel
82+
m_child::F = massProperties_child.m
83+
rCM_child::SVector{3,F} = massProperties_child.rCM
84+
I_child::SMatrix{3,3,F,9} = massProperties_child.I
8585

86-
m_root::F = obj_root.m
87-
rCM_root::SVector{3,F} = obj_root.r_CM
88-
I_root::SMatrix{3,3,F,9}= obj_root.I_CM
86+
m_root = obj_root.m
87+
rCM_root = obj_root.r_CM
88+
I_root = obj_root.I_CM
8989

9090
# transform childs center of mass to parents coordinate system
91-
rCM_child_new::SVector{3,F} = SVector{3,F}(r_child + R_child' * rCM_child)
91+
rCM_child_new = r_child + R_child' * rCM_child
9292

9393
# I_child_steiner: I_child needs to be transformed to parents coordinate system
9494
# I_root_steiner: I_root needs to be transformed to parents coordinate system
9595
# (no need of rotation matrices)
96-
I_child_steiner::SMatrix{3,3,F,9} = SMatrix{3,3,F,9}(Modia3D.NullRotation(F) * I_child * Modia3D.NullRotation(F)' +
97-
m_child * Modia3D.skew(rCM_child_new)' * Modia3D.skew(rCM_child_new) )
98-
I_root_steiner::SMatrix{3,3,F,9} = SMatrix{3,3,F,9}(I_root +
99-
m_root * Modia3D.skew(rCM_root)' * Modia3D.skew(rCM_root) )
96+
I_child_steiner = Modia3D.NullRotation(F) * I_child * Modia3D.NullRotation(F)' +
97+
m_child * Modia3D.skew(rCM_child_new)' * Modia3D.skew(rCM_child_new)
98+
I_root_steiner = I_root +
99+
m_root * Modia3D.skew(rCM_root)' * Modia3D.skew(rCM_root)
100100

101101
if add
102102
# ----------- adding mass properties (parent + child) ----------------------
103103
# common mass (parent + child)
104-
m = F(m_root + m_child)
104+
m = m_root + m_child
105105

106106
# common center of mass (parent + child)
107107
@assert(m > 0.0)
108-
rCM::SVector{3,F} = SVector{3,F}((m_root * rCM_root + m_child * rCM_child_new)/m)
108+
rCM = (m_root * rCM_root + m_child * rCM_child_new)/m
109109

110110
# I: substract new common mass multiplied with skew matrices of
111111
# center of mass from the sum of I_root_steiner and I_child_steiner
112-
I::SMatrix{3,3,F,9} = SMatrix{3,3,F,9}(I_root_steiner + I_child_steiner - m * Modia3D.skew(rCM)' * Modia3D.skew(rCM) )
112+
I =I_root_steiner + I_child_steiner - m * Modia3D.skew(rCM)' * Modia3D.skew(rCM)
113113

114114
# Assign to obj_root
115115
obj_root.m = m

0 commit comments

Comments
 (0)