Open qingchun2333 opened 2 years ago
A long held idea in the business is that moduli can be determined if orientations are known and orientations can be determined if moduli are known. If initial guesses for both are reasonably close to actual values, a joint inversion could be done. In my experience, orientations are typically known within uncertainties associated with the various mechanical steps between preparing samples and making measurements. These are typically less than say 10 degrees. In such cases, a successful workflow is to optimize for moduli using the initial orientations, then optimize for orientations using the previously determined moduli, then return to an optimization of moduli. The process can proceed as few more times to a converged results for both moduli and orientations.
The second issue you raise is important. There are several conventions for euler angle rotations. In this code, the Koch convention is assumed - the second rotation is about the transformed y-axis.
Another assumption in the code is that the laboratory z-axis is normal to the plane of the sample. Acoustic velocities are assumed to propagate in the laboratory x-y plane.
The important function that create rotation matrixes from euler angles is "eiler.m" The inverse process of finding euler angles from a calculated rotation matrix is inv_eiler. It is an easy modification to change the convention of rotations by modifying these functions.
Thanks for the detailed explanation, I'm going to try it.
I am using your Velocities2Cij code to invert Cij for monoclinic minerals, but I have some problems: I found that your code has to determine the crystal orientation of the crystal (i.e. Euler angles), I wonder if your code can invert both Euler angles and cij as objects of inversion together. Also, I used our own non-linear least squares method code to invert both Euler angles and Cij, and then starting the inversion with the obtained Euler angles as constants in your code didn't get a reasonable result. Therefore, I suspect that the order rules of the Euler angle rotation axes of our two codes are different, so I want to ask how your Euler angles are rotated and how to convert the crystal orientations and Euler angles in your code.