Hi, I was studying the variational formulation of static linear elasticity and I came across these 4 different methods of implementation from different published sources. However, I am not sure if am clearly able to make out the difference in implementation. Can some help?
** lmbda and mu are known constants, while u = trial func. and v = test func.
So, the question is why in the definition of sigma, some time they use the test function 'v' and sometimes 'u'?....and then in the main equation, once they use grad(v), in another one they used epsilon(v) and in another sym(grad(v))? Am I missing out on a basic concept here?
This is from page 69 of fenics documentation
def epsilon(v): \\ The strain tensor
return 0.5*(grad(v) + transp(grad(v)))
def sigma(v): \\ The stress tensor
return 2*mu*epsilon(v) + lmbda*mult(trace(epsilon(v)), Identity(len(v)))
a = dot(grad(v), sigma(u))*dx
L = dot(v, f)*dx
and this: from Page 100 of this thesis
def epsilon (v ):
return 0.5*( grad (v ) + grad (v ).T )
def sigma ( v):
return 2.0*mu*epsilon (v) + lmbda*tr( epsilon(v) )*Identity(v.cell ().d)
a = inner ( sigma (u) , epsilon (v))*dx
L = inner (f , v )*dx
and this from page 579 of Fenics Book
sigma = 2*mu*sym(grad(u)) + lmbda*tr(grad(u))*Identity(v.cell().d)
F = inner(sigma, grad(v))*dx - dot(b, v)*dx
and this from page 114 of Fenics Manual
def sigma(v):
return 2.0*mu*sym(grad(v)) + lmbda*tr(sym(grad(v)))*Identity(v.cell().d)
a = inner(sigma(u), sym(grad(v)))*dx
L = dot(f, v)*dx