def blocks(self): dx = ufl.Measure("dx", self.mesh) u, p = self.uu_[0:2] v, q = self.vv_[0:2] aa = [[ ufl.inner(self.sigma(u), symgrad(v)) * dx, ufl.inner(p, v) * dx ], [ufl.inner(q, u) * dx, 0]] # Notice that dot(sigma(Eps), symgrad(v)) = dot(Eps, sigma(symgrad(v))) ff = [-ufl.inner(self.Eps, self.sigma(v)) * dx, 0] return [aa, ff]
def sigma_law(u): return lame[0] * ufl.nabla_div(u) * ufl.Identity( 2) + 2 * lame[1] * symgrad(u)
def sigma(u): return lamb * ufl.nabla_div(u) * df.Identity(2) + 2 * mu * symgrad(u)