I would like to know how to solve the following problem. I am new here, so if I do something wrong let me know. I have different Mooney-Rivlin parameters in two different domains and I have to compute the first Piola-Kirchoff tensor. Is it correct to proceed in this way? Or is it wrong because I use the command diff on a discontinuous quantity? Is there a better way to do so? If I try with close values between the domains I do not find problem, otherwise the non linear solver I use later does not converge in 50 iterations.
(Do not focus on the way it is computed the Piola-Kirchoff tensor, my problem is quite complicated and I tried to simplify it, maybe in a wrong way).
Thank you in advance.
def Pk(u, p, mu1, mu2):
F = DeformationGradient(u)
J = Jacobian(u)
I = SecondOrderIdentity(u)
C_e = F.T*F
Ice, IIce, IIIce = Invariants(C_e)
#Strain energy: Mooney-Rivlin
psi = (mu1/2)*(Ice - 3) + (mu2/2)*(IIce - 3)
gamma1 = diff(psi, Ice) + Ice*diff(psi, IIce)
gamma2 = -diff(psi, IIce)
P_s = 2*J*F*(gamma1*I + gamma2*C_e)*inv(F).T
return variable(P_s - J*p*inv(F).T)
DGe = FiniteElement("Discontinuous Lagrange", mesh.ufl_cell(), 0)
mu1t = Constant(-3.59e-03)
mu2t = Constant(5.52e-03)
mu1h = Constant(-8.96e-03)
mu2h = Constant(1e-02)
mu1= Expression(" pow((x[0]-203),2) + pow((x[1]-287),2) + pow((x[2]-29.5),2) - 25 >= 0 ? mu1h:
mu1t", mu1h=mu1h, mu1t=mu1t, element = DGe)
mu2= Expression(" pow((x[0]-203),2) + pow((x[1]-287),2) + pow((x[2]-29.5),2) - 25 >= 0 ? mu2h :
mu2t", mu2h=mu2h, mu2t=mu2t, element = DGe)
P = Pk(u, p, mu1, mu2)