3

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}} *)

1 Answers1

3

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?

MikeY
  • 7,153
  • 18
  • 27
  • 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. – A little mouse on the pampas Feb 11 '20 at 00:00
  • 1
    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. – MikeY Feb 11 '20 at 01:34