Wolfram Language™

Les valeurs et fonctions propres d'un vilebrequin

Calculez les valeurs et fonctions propres d'un vilebrequin serré.

Précisez un Graphics3D.

In[1]:=
In[2]:=
Needs["NDSolve`FEM`"] mesh = ToElementMesh[DiscretizeGraphics[gr], "MeshOrder" -> 1]
Out[2]=

Spécifiez l'opérateur de contrainte tridimensionnel.

Afficher l'entrée complète de Wolfram Language
In[3]:=
stressOperator[ Y_, \[Nu]_] := {Inactive[ Div][({{0, 0, -((Y \[Nu])/((1 - 2 \[Nu]) (1 + \[Nu])))}, {0, 0, 0}, {-(Y/(2 (1 + \[Nu]))), 0, 0}}.Inactive[Grad][ w[x, y, z], {x, y, z}]), {x, y, z}] + Inactive[ Div][({{0, -((Y \[Nu])/((1 - 2 \[Nu]) (1 + \[Nu]))), 0}, {-(Y/(2 (1 + \[Nu]))), 0, 0}, {0, 0, 0}}.Inactive[Grad][ v[x, y, z], {x, y, z}]), {x, y, z}] + Inactive[ Div][({{-((Y (1 - \[Nu]))/((1 - 2 \[Nu]) (1 + \[Nu]))), 0, 0}, {0, -(Y/(2 (1 + \[Nu]))), 0}, {0, 0, -(Y/(2 (1 + \[Nu])))}}.Inactive[Grad][ u[x, y, z], {x, y, z}]), {x, y, z}], Inactive[Div][({{0, 0, 0}, {0, 0, -((Y \[Nu])/((1 - 2 \[Nu]) (1 + \[Nu])))}, {0, -(Y/( 2 (1 + \[Nu]))), 0}}.Inactive[Grad][ w[x, y, z], {x, y, z}]), {x, y, z}] + Inactive[ Div][({{0, -(Y/(2 (1 + \[Nu]))), 0}, {-((Y \[Nu])/((1 - 2 \[Nu]) (1 + \[Nu]))), 0, 0}, {0, 0, 0}}.Inactive[Grad][u[x, y, z], {x, y, z}]), {x, y, z}] + Inactive[ Div][({{-(Y/(2 (1 + \[Nu]))), 0, 0}, {0, -((Y (1 - \[Nu]))/((1 - 2 \[Nu]) (1 + \[Nu]))), 0}, {0, 0, -(Y/(2 (1 + \[Nu])))}}.Inactive[Grad][ v[x, y, z], {x, y, z}]), {x, y, z}], Inactive[Div][({{0, 0, 0}, {0, 0, -(Y/(2 (1 + \[Nu])))}, {0, -(( Y \[Nu])/((1 - 2 \[Nu]) (1 + \[Nu]))), 0}}.Inactive[Grad][ v[x, y, z], {x, y, z}]), {x, y, z}] + Inactive[ Div][({{0, 0, -(Y/(2 (1 + \[Nu])))}, {0, 0, 0}, {-((Y \[Nu])/((1 - 2 \[Nu]) (1 + \[Nu]))), 0, 0}}.Inactive[Grad][u[x, y, z], {x, y, z}]), {x, y, z}] + Inactive[ Div][({{-(Y/(2 (1 + \[Nu]))), 0, 0}, {0, -(Y/(2 (1 + \[Nu]))), 0}, {0, 0, -(( Y (1 - \[Nu]))/((1 - 2 \[Nu]) (1 + \[Nu])))}}.Inactive[Grad][ w[x, y, z], {x, y, z}]), {x, y, z}]}

Précisez les contraintes de manière à ce que la limite du vilebrequin soit maintenue fixe à ces positions.

In[4]:=
Subscript[\[CapitalGamma], D] = DirichletCondition[#, {y <= 0.1, y >= 890}] & /@ {u[x, y, z] == 0., v[x, y, z] == 0., w[x, y, z] == 0.};

Trouvez cinq valeurs et fonctions propres.

In[5]:=
{vals, funs} = NDEigensystem[ Join[stressOperator[10^9, 33/100], Subscript[\[CapitalGamma], D]], {u, v, w}, {x, y, z} \[Element] mesh, 5];

Inspectez les valeurs propres.

In[6]:=
vals
Out[6]=

Visualisez la cinquième fonction propre du vilebrequin par rapport à sa position au repos en utilisant le progiciel d'éléments finis.

Afficher l'entrée complète de Wolfram Language
In[7]:=
Show[ ToBoundaryMesh[mesh][ "Wireframe"[ "MeshElementStyle" -> {Directive[Opacity[0.15], EdgeForm[], FaceForm[Gray]]}]], ElementMeshDeformation[mesh, funs[[5]], "ScalingFactor" -> 100000][ "Wireframe"[AspectRatio -> Automatic, "MeshElementStyle" -> Directive[EdgeForm[], FaceForm[Gray]]]], ImageSize -> 600, ViewPoint -> Left ]
Out[7]=