On 11/17/2014 11:04 AM, Ronghai Wu wrote:
Hi Robert,
Thank you very much. But I do not understand what you mean by "Note that you still need to specify some boundary conditions so that the matrix is not singular". Because it seems no boundary condition is constrained in the modified codes, but it still runs, and the result looks correct. Would you please explain more about your saying?
Regards Ronghai
sfepy: nls: iter: 0, residual: 7.497687e+01 (rel: 1.000000e+00) /usr/local/lib/python/dist-packages/scikits/umfpack/umfpack.py:720: UmfpackWarning: (almost) singular matrix! (estimated cond. number: 5.91e+15) warnings.warn(msg, UmfpackWarning) sfepy: rezidual: 0.00 [s] sfepy: solve: 0.01 [s] sfepy: matrix: 0.00 [s] sfepy: nls: iter: 1, residual: 4.099472e-14 (rel: 5.467649e-16)
Yes, it is solved, because the direct solver somehow deals with the singular matrix (see the warning above). But without any boundary conditions the matrix coming from the linear elasticity is singular - in 2D, it has three zero eigenvalues for the two rigid body displacements and one rotation. These need to be fixed to have a unique solution. So, for example, fix the bottom left corner vertex completely ({'u.all' : 0.0}), and fix the 'y' displacement component of the bottom right vertex ({'u.1' : 0.0}). See [1], where two ways (a constant and by a function) of specifying the Dirichlet boundary conditions (EssentialBC) are shown for the interactive use. Let us know if you need more help.
r. [1] http://sfepy.org/doc-devel/examples/standalone/interactive/linear_elasticity...