On 1/13/23 05:59, 王昆 wrote:

  Happy new year! I am a DealII amateur from China and need your help! Recently, I want to perform the polar decomposition for a Tensor<2,dim> using DealII. I have searched all the methods provided in Tensor and Physics::Elasticity::Kinematics. But no method could directly perform such operation. It is known that the singular value decomposition could be used for such operation. However, I cannot find similar method for the Tensor, too. Could you give me some tips on how to solve this problem?

Dear K. Wang:
if I understand you right, for a given d x d tensor A, you want to find factors U and P so that
  A = UP
? That might indeed not be implemented so far, but it should not be very difficult to do. You will need to write something like this:

  // 1d case
  std::pair<Tensor<2,1>,Tensor<2,1>>
  polar_decomposition (const Tensor<2,1> &A) {
    const Tensor<2,1> U = {{ (A[0][0]>0 ? 1 : -1) }};
    const Tensor<2,1> P = {{ std::fabs(A[0][0]) }};
    return {U,P};
  }

  // 2d case
  std::pair<Tensor<2,2>,Tensor<2,2>>
  polar_decomposition (const Tensor<2,2> &A) {
    Tensor<2,2> U;
    Tensor<2,2> P;
    ...compute U, P...
    return {U,P};
  }

  // 3d case
  std::pair<Tensor<2,3>,Tensor<2,3>>
  polar_decomposition (const Tensor<2,3> &A) {
    Tensor<2,3> U;
    Tensor<2,3> P;
    ...compute U, P...
    return {U,P};
  }

I don't know what algorithms exist for the 2d and 3d cases, but I assume that there is literature.

If you were interested in implementing these functions above, we would be very happy to add them to the library!

Best
 Wolfgang

--
------------------------------------------------------------------------
Wolfgang Bangerth          email:                 bange...@colostate.edu
                           www: http://www.math.colostate.edu/~bangerth/


--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/3b390a5f-3736-f1fd-8ccc-661ed7b1e12d%40colostate.edu.

Reply via email to