Implementation of only minor symmetry permeability tangent

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • joewang
    Junior Member
    • Feb 2019
    • 11

    Implementation of only minor symmetry permeability tangent

    Hello,

    I'm trying to develop a material with tangent of permeability with respect to strain is a 4th order tensor with only minor symmetry. I found there is a previous post (https://forums.febio.org/showthread....e-tens4d-class) discussing a similar topic in the forum. After reading that post and the replies, I still have some questions about the details of how to implement such non-major-symmetric tangent.

    First of all, the non-major-symmetry of my permeability tangent (let's mark as C) is introduced by a dyadic of two matrices (2nd order tensor): M and I, where M is a symmetric matrix and I is identity matrix:
    C_ijkl = (some_scalars) * M_ij * I_kl.
    According to Prof. Ateshian's suggestion in the previous post, I'd like to first try to still use tens4ds for my tangent. Then what should I use to replace this dyadic result? For example, the operation "dyad1s" is defined as:
    dyad1s(a) : (a dyad1s a)_ijkl = a_ij * a_kl;
    dyad1s(a,b) : (a dyad1s b)_ijkl = a_ij * b_kl + b_ij * a_kl.
    Can I simply say:
    C_ijkl = (some_scalars) * dyad1s(M,I);
    or,
    C_ijkl = (some_scalars) * dyad1s(M,I)/2?

    Later, if unfortunately, the convergence doesn't agree with the tens4ds tangent. I have to use the more general 4th order tensor class: tens4d. I noticed that in "FEBioMix/FEHydraulicPermeability.h" line 18, it declare the tangent of permeability as a tens4ds:
    virtual tens4ds Tangent_Permeability_Strain(FEMaterialPoint& mp) = 0;
    If I'm going to use tens4d instead of tens4ds as the tangent, would the parent class "FEHydraulicPermeability" work along well with that? Or do I have to create a new FEHydraulicPermeability-like class with tens4d tangent?

    Best,
    Joe
  • ateshian
    Developer
    • Dec 2007
    • 1830

    #2
    Hi Joe,
    Can I simply say:
    C_ijkl = (some_scalars) * dyad1s(M,I);
    or,
    C_ijkl = (some_scalars) * dyad1s(M,I)/2?
    The second form would seem more consistent with what you want.
    If I'm going to use tens4d instead of tens4ds as the tangent, would the parent class "FEHydraulicPermeability" work along well with that? Or do I have to create a new FEHydraulicPermeability-like class with tens4d tangent?
    You would need to redefine FEHydraulicPermeability to use your new class of 4-th order tensor with minor symmetry, then you would have to create a method for recasting tens4ds into this new class to accommodate the existing material models (or else define a new material class for this type of permeability tensor and define a new class of biphasic/multiphasic materials that use this new material instead of the existing FEHydraulicPermeability). You would also need to define a suite of operations using this 4-th order tensor, such as its double dot product with 2nd-order tensors and whichever operations occur when employing this tangent permeability tensor (e.g., its dot product with vectors). Honestly I don't think it is worth the effort to do all this. If you try using the existing tens4ds class and find you have poor convergence, I would first check to see that no errors were made in the implementation, instead of assuming that the poor convergence is due to the major symmetry of this tensor.

    Best,

    Gerard

    Comment

    Working...
    X
    😀
    😂
    🥰
    😘
    🤢
    😎
    😞
    😡
    👍
    👎