3
$\begingroup$

The three-dimensional stress state of a point in the solid after rotation is as follows:

EulerMatrix[{α,β,γ}]\[Transpose].{{10, 0, 
   0}, {0, 20, 0}, {0, 0, 
   25}}.EulerMatrix[{α,β,γ}]

The three-dimensional Mohr circle represented by this state is as follows:

ContourPlot3D[
 Evaluate[((x - #[[1]])^2 + y^2 + 
       z^2 == #[[2]]^2) & /@ (SortBy[({Mean[#], Abs[#[[2]] - #[[1]]]/
         2} & /@ Subsets[Sort[{10, 20, 25}], {2}]), Last])], {x, 0, 
  30}, {y, -10, 10}, {z, -10, 10}, BoxRatios -> Automatic, 
 ContourStyle -> 
  Directive[Orange, Opacity[0.4], Specularity[White, 30]], 
 Mesh -> None, PlotPoints -> 50, ViewVertical -> {0, 0, 1}, 
 ViewPoint -> {Pi, Pi/2, 2}, AxesOrigin -> {0, 0, 0}, 
 AxesLabel -> {"x", "y", "z"}]

Now we know that the stress in one direction is {12,2,2}

((x - #[[1]])^2 + y^2 + z^2 <= #[[
      2]]^2 & /@ ({Mean[#], Abs[#[[2]] - #[[1]]]/2} & /@ 
     Subsets[Sort[{10, 20, 25}], {2}])) /. {x -> 12, y -> 2, 
  z -> 2}(*The x-axis represents the principal stress,the Y-axis and 
the z-axis represents the shear stress*)

How to determine the possible direction angle ({α,β,γ}) of the stress.

The answer of MikeY is very good. I want to modify this code to get faster speed:

em[α_, β_, γ_] := EulerMatrix[{α, β, γ}]\[Transpose].
                  {{10, 0, 0}, {0, 20, 0}, {0, 0, 25}}.
                  EulerMatrix[{α, β, γ}]

res = NMinimize[Norm[{12, 2, 2} - Transpose[em[a, b, c]][[1]]], {a, b, c}]
(* {0.876894, {a -> -1.19281, b -> -0.785398, c -> 1.5708}} *)
$\endgroup$

1 Answer 1

3
+100
$\begingroup$

Not 100% sure of the math on this, as I last took a course in this stuff in 1979, so go easy on me, but...

I think the goal is to find a set of rotations {α,β,γ} such that with principal matrix

$$ P =\left( \begin{array}{ccc} 10 & 0 & 0 \\ 0 & 20 & 0 \\ 0 & 0 & 25 \\ \end{array} \right) $$

and Euler matrix $E$, a column of $E^{T}PE$ is {12,2,2}. This leaves degrees of freedom.

Casting as a minimization problem, arbitrarily choosing the first column...

em[α_, β_, γ_] := EulerMatrix[{α, β, γ}]\[Transpose].
                  {{10, 0, 0}, {0, 20, 0}, {0, 0, 25}}.
                  EulerMatrix[{α, β, γ}]

res = NMinimize[Norm[{12, 2, 2} - Transpose[em[a, b, c]][[1]]], {a, b, c}]
(* {0.876894, {a -> -1.19281, b -> -0.785398, c -> 1.5708}} *)

Assuming I have the math right, it is interesting that there wasn't a set {α, β, γ} that drives the norm to zero. Maybe a local minima?

$\endgroup$
2
  • $\begingroup$ Thank you very much. But the result em[a, b, c] /. res[[2]] is different from {12, 2, 2} obviously. It is probably impossible to get this stress by rotation transformation.But the values of em[Pi/4, 0, 0] and NMinimize[Norm[{15, 5, 0} - Transpose[em[a, b, c]][[1]]], {a, b, c}] agree very well. $\endgroup$ Commented Feb 11, 2020 at 0:00
  • 1
    $\begingroup$ Yup, there were two distinct min answers for the norm, depending on which column you chose. I didn’t dig any further, as I wasn’t sure I had cast the problem correctly, but thought it might kick-start some answers for you. $\endgroup$
    – MikeY
    Commented Feb 11, 2020 at 1:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.