def save_strain_and_params(self, iteration: int) -> None:
     strain_vec = fenics.project(fenics.sym(fenics.grad(self.fields.u_new)),
                                 V=self.tensor_space).vector()[:]
     strain_tens = np.reshape(strain_vec,
                              newshape=(self.number_of_vertices, 2, 2))
     parameters = fenics.project(
         self.fields.new_constitutive_relation_multiplicative_parameters,
         V=self.fields.new_constitutive_relation_multiplicative_parameters.
         function_space()).vector()[:]
     if self.fields.new_constitutive_relation_multiplicative_parameters.function_space(
     ).dim() == self.fields.tensor_space.dim():
         parameters = np.reshape(parameters,
                                 newshape=(self.number_of_vertices, 2, 2))
     self.np_files.write(prefix='strain',
                         iteration=iteration,
                         array=strain_tens)
     self.np_files.write(prefix='params',
                         iteration=iteration,
                         array=parameters)
Ejemplo n.º 2
0
def strain(v):
    return fn.sym(fn.grad(v))
Ejemplo n.º 3
0
def k(u, v):
    return inner(sigma(u), sym(grad(v))) * dx
Ejemplo n.º 4
0
def epsilon(u):
    return fs.sym(fs.nabla_grad(u))
Ejemplo n.º 5
0
 def get_new_value(self, r: fenics.Function) -> fenics.Expression:
     return fenics.elem_mult(
         self.fields.new_constitutive_relation_multiplicative_parameters,
         fenics.sym(fenics.grad(r)))
Ejemplo n.º 6
0
def strain(u):
    return fn.sym(fn.grad(u))
Ejemplo n.º 7
0
def eps(u):
    return fn.sym(fn.grad(u))
 def k(self, u: fenics.Function, w: fenics.Function,
       constitutive_relation_function: Callable[[fenics.Function], fenics.Expression]) -> fenics.Expression:
     return fenics.inner(constitutive_relation_function(u), fenics.sym(fenics.grad(w))) * fenics.dx
Ejemplo n.º 9
0
 def get_new_value(self, r: fenics.Function) -> fenics.Expression:
     return 2.0*self.lame_mu*fenics.sym(fenics.grad(r)) \
            + self.lame_lambda*fenics.tr(fenics.sym(fenics.grad(r)))*fenics.Identity(len(r))
Ejemplo n.º 10
0
def k(u, w):
    return fnc.inner(sigma(u), fnc.sym(fnc.grad(w))) * fnc.dx
Ejemplo n.º 11
0
def sigma(r):
    return 2.0 * mu * fnc.sym(fnc.grad(r)) + lmbda * fnc.tr(
        fnc.sym(fnc.grad(r))) * fnc.Identity(len(r))
Ejemplo n.º 12
0
def eps(v):
    return fnc.sym(fnc.grad(v))
Ejemplo n.º 13
0
 def create_strain_tensor(self, u):
     strain_vec = fenics.project(fenics.sym(fenics.grad((u))),
                                 V=self.fields.tensor_space).vector()[:]
     return np.reshape(strain_vec,
                       newshape=(self.fields.function_space.dim(), 2, 2))