4th order tensor class with only minor symmetry, and the tens4d class

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • ekmoo
    Junior Member
    • Jul 2014
    • 5

    4th order tensor class with only minor symmetry, and the tens4d class

    Hi,

    I am trying to develop a material plugin for permeability.
    For that, I need a fourth order tensor class with only minor symmetry. I am wondering if anyone has developed the code for this class? I will appreciate if you can share that with me.
    Also, I found that the operations of tens4d class described in the website (http://febiodoc.sci.utah.edu/doxygen...d.html#details) do not match the tens4d.h and tens4d.hpp files in the febio_sdk_lnx64_2.6.4.
    I would appreciate if someone can fix this problem.

    Thank you very much.

    Cheers,
    Eng Kuan
  • ekmoo
    Junior Member
    • Jul 2014
    • 5

    #2
    Hi everyone,

    Does anyone has the chance to look at this problem? Any help is much appreciated.

    Thanks,
    Eng Kuan

    Comment

    • maas
      Lead Code Developer
      • Nov 2007
      • 3458

      #3
      Hi Eng,

      There is no 4-th order tensor class with only minor symmetries in FEBio. However, there is a general 4-th order tensor class that you should be able to use (tens4d).

      It looks like the developer's documentation has not been update for a while. I'll see if we can get a newer version uploaded soon.

      Cheers,

      Steve
      Department of Bioengineering, University of Utah
      Scientific Computing and Imaging institute, University of Utah

      Comment

      • ekmoo
        Junior Member
        • Jul 2014
        • 5

        #4
        Hi Steve,

        Thanks for the reply.
        The 'tens4d.hpp' file in the sdk folder of febiosource-2.6.2 (the latest version on the website) has the following code written. I believe this code is incomplete as it does not match the description on the doxygen site?

        "...
        inline double& tens4d:perator () (int i, int j, int k, int l)
        {
        const int m[3][3] = {{0,3,5},{6,1,4},{8,7,2}};
        tens4d& T = (*this);
        return T(m[i][j], m[k][l]);
        }

        inline double tens4d:perator () (int i, int j, int k, int l) const
        {
        const int m[3][3] = {{0,3,5},{6,1,4},{8,7,2}};
        const tens4d& T = (*this);
        return T(m[i][j], m[k][l]);
        }

        inline double& tens4d:perator () (int i, int j)
        {
        const int m[9] = {0, 9, 18, 27, 36, 45, 54, 63, 72};
        return d[m[j]+i];
        }

        inline double tens4d:perator () (int i, int j) const
        {
        const int m[9] = {0, 9, 18, 27, 36, 45, 54, 63, 72};
        return d[m[j]+i];
        }

        ..."

        Cheers,
        Eng Kuan

        Comment

        • maas
          Lead Code Developer
          • Nov 2007
          • 3458

          #5
          Hi Eng,

          The tensor classes have undergone some restructuring and many common operations are now implemented in the base class tensor_base. That's where you will find some of the operations that are mentioned on the doxygen website. Like I said, we will update the online documentation, but since this may take some time, let us know if you have any specific questions regarding these tensor classes.

          Cheers,

          Steve
          Department of Bioengineering, University of Utah
          Scientific Computing and Imaging institute, University of Utah

          Comment

          • ekmoo
            Junior Member
            • Jul 2014
            • 5

            #6
            Hi Steve,

            Thanks for the reply.
            Yes. I would like to implement the permeability model defined in Tomic et al. IMA Journal of Applied Mathematics 2014 (which is based on Federico&Grillo Mechanics of Materials 2012). The tangent of permeability strain should be minor symmetry at most. Since febio does not have 4d tensor with minor symmetry, I am thinking about using the general tens4d class to build the tangent of permeability strain of this model. However, I am not sure how to access the common operations that is now defined in tensor_base instead of tens4d (I got error trying to use the basic operations like + and * for tens4d tensor in my user-material code). Any help will be appreciated.

            One more question, in Ateshian&Weiss J Biomech Eng 2010, it states that the tangent of permeability (rate of change of permeability tensor with strain in the material frame) should have only minor symmetry, but i found that the permeability models in febio (e.g., FEPermRefIso, FEPermRefOrtho, FEPermRefTransIso) have the tangent of permeability defined as having major and minor symmetry (tens4ds class). I am wondering if you are aware of this, and have verified that tens4ds class is suitable for these permeability models?

            Thanks,
            Eng Kuan

            Comment

            • maas
              Lead Code Developer
              • Nov 2007
              • 3458

              #7
              Hi Eng,

              Can you please send me your code that is generating the errors. You can send it to me via email if you prefer (steve dot maas at Utah dot edu).

              Regarding the other question, I hope that Gerard can chime in here since I'm not sure how to respond.

              Cheers,

              Steve
              Department of Bioengineering, University of Utah
              Scientific Computing and Imaging institute, University of Utah

              Comment

              • ateshian
                Developer
                • Dec 2007
                • 1839

                #8
                Hi Eng,

                I was the developer who originally created the class for 4th-order tensors with major and minor symmetries (tens4ds, 21 distinct entries). This was primarily intended to facilitate the calculation of elasticity tensors. When Jeff Weiss and I wrote the 2010 paper on anisotropic permeability tensors, we showed indeed that these tensors only satisfy minor symmetries but not major symmetry (36 distinct entries). However, when it came time to implement the code for these models in FEBio, I decided it was too much hassle to create an entire class for these types of tensors, so I first tried using the symmetric class and the results showed good convergence of the models, so I left it at that.

                Later, other FEBio users/developers wrote additional classes for more general 4th-order tensors (as well as 3rd and 5th order tensors). I am not familiar with the details of those implementations, so I am unable to give advice on those functions.

                My recommendation is that you first try using tens4ds in your implementation of the model by Tomic et al. If you encounter serious convergence issues, then it would be necessary to construct a tensor class with only minor symmetries. If I had to do it myself, I would start by using tens4ds as a template, enlarging the d array from d[21] to d[36]. Of course, then one would have to modify all the class functions (operators and other associated functions) to perform the calculations correctly with these 36 components instead of 21.

                Best,

                Gerard

                Comment

                • ekmoo
                  Junior Member
                  • Jul 2014
                  • 5

                  #9
                  Hi Gerard,

                  Thank you very much for your reply. I will heed your advice and use tens4ds for the model for now.
                  Happy New Year 2018!

                  Cheers,
                  Eng Kuan

                  Comment

                  Working...
                  X