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]
Beispiel #2
0
 def sigma_law(u):
     return lame[0] * ufl.nabla_div(u) * ufl.Identity(
         2) + 2 * lame[1] * symgrad(u)
Beispiel #3
0
def sigma(u):
    return lamb * ufl.nabla_div(u) * df.Identity(2) + 2 * mu * symgrad(u)