Hi everyone

I have a time-dependent linear elasticity solver which is different from 
step-17 in which I assume small-deformation all the time. Due to the time 
discretization, I have a -K*u^n term at the rhs of the system where u^n is 
the known displacement (at previous time step) and K is the stiffness 
matrix. I tried two different approaches to deal with this term:

1. The first approach is simple: I assemble the system_rhs as if there is 
no such term, and then explicitly compute 
system_stiffness.vmult(previous_displacement), and
subtract the result from the system_rhs. It worked out nicely and I got my 
time-dependent results.

2. In the second approach I deal with this term in the assembly, namely I 
add this term to the local_rhs at cell level

Loop over cells:
  local_matrix = 0; // this is stiffness + mass term
  local_stiffness = 0;
  local_rhs = 0;
  Loop over quadrature points:
      compute local_matrix
      compute local_stiffness
      compute local_rhs // here I compute the rhs due to external load
  end of quadrature loop

  // Now compute the rhs due to time-discretization
  cell->get_dof_indices(local_dof_indices);
  for (unsigned int i = 0; i < dofs_per_cell; ++i)
  {
    for (unsigned int j = 0; j < dofs_per_cell; ++j)
    {
       local_rhs[i] -= local_stiffness[i][j] * dt * 
previous_displacement[local_dof_indices[j]];
    }
  }  
  constraints.distribute_local_to_global(local_matrix, local_rhs, 
local_dof_indices, system_matrix, system_rhs);
end of cell loop

Because the global stiffness matrix is the sum of local matrices, ideally 
this approach should work as the first one. But the solution turned out to 
be garbage. Could anybody see why the second approach is wrong?

Thank you
Jie




      
      

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to