<div>What is stiff matrix?&nbsp; Is there any reference?&nbsp; I googled and check wikipedia.&nbsp; I am not sure if the implementation in the deformableMesh3D is correct.&nbsp; </div>
<div>In ComputeDT(), the following code appears to calculate the internal force on each node in a triangular element through deformation, and sum them up, and check the external force and subtract the internal force, if there is remaining force left, that will drive the node further.&nbsp; Appear to make sense.&nbsp; However, 
</div>
<div>first of all, why the stiffness matrix is applied in this way???&nbsp; deformation from node 1 is simply scaled by m_K[i][0][0]???&nbsp;&nbsp; I know there are m_K[i][1][0] used, but those code also don&#39;t make sense to me.&nbsp; </div>

<div>I am wondering if we can just assume linear elastic model so that each node is associated with a scalar k, then the internal deformation force will be the displacement relative to the other two node then multiply with that k.&nbsp; 
</div>
<div>It just my experience that the current filter relies heavly on the external force, the stiffness never behaved correctly.&nbsp; Often, I saw sharp spikes rise out from my mesh surface, that should never happen.</div>
<div>&nbsp;</div>
<div>Another improvement suggestion:&nbsp; the SetDefaultStiffnessMatrix() only set the component for m_StiffnessMatrix[0].&nbsp; I suggest to set the same value for all 10 components.&nbsp; The code can allow people to apply different stiffness matrix on different nodes depending on their&nbsp;cell value.&nbsp; However, people may mistakenly set their cell value other than 0.&nbsp; Then they will find that the stiffness setting never have effect.&nbsp; I met that situation before.&nbsp; I use a &quot;
MeshUtilNew.h&quot; file shared by someone in this maillist.&nbsp; Its PolyDataToMesh function set the cell value to 3 in the code.&nbsp; I am sure other people may also&nbsp;encountered this issue. And it is hard to notice because it will just set&nbsp;my stiffness to 0 and it still works.
</div>
<div>Also, in the current design SetMeshStiffness function allocates the stiffness mesh for each cell, not sure that is a good approach, since you only can have 10 different stiffness mesh.&nbsp;Why can&#39;t we put the check of celldata value in ComputeDT?&nbsp; And what if the cell value is greater than 10?&nbsp; Maybe need to use % or some warning to make sure it doesn&#39;t cause crash.
</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>code in the ComputeDT():</div>
<div>&nbsp;</div>
<div>.....</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp; m_Displacements-&gt;GetPoint (tp[0], v1_pt); <br>&nbsp;&nbsp;&nbsp; m_Displacements-&gt;GetPoint (tp[1], v2_pt); <br>&nbsp;&nbsp;&nbsp; m_Displacements-&gt;GetPoint (tp[2], v3_pt); </div>
<div>&nbsp;&nbsp;&nbsp; v1[0] *= m_K[i]-&gt;get(0, 0)*p; <br>&nbsp;&nbsp;&nbsp; v1[1] *= m_K[i]-&gt;get(0, 0)*p; <br>&nbsp;&nbsp;&nbsp; v1[2] *= m_K[i]-&gt;get(0, 0)*p; <br>&nbsp;&nbsp;&nbsp; v2[0] *= m_K[i]-&gt;get(0, 1)*p; <br>&nbsp;&nbsp;&nbsp; v2[1] *= m_K[i]-&gt;get(0, 1)*p; <br>&nbsp;&nbsp;&nbsp; v2[2] *= m_K[i]-&gt;get(0, 1)*p; 
<br>&nbsp;&nbsp;&nbsp; v3[0] *= m_K[i]-&gt;get(0, 2)*p; <br>&nbsp;&nbsp;&nbsp; v3[1] *= m_K[i]-&gt;get(0, 2)*p; <br>&nbsp;&nbsp;&nbsp; v3[2] *= m_K[i]-&gt;get(0, 2)*p; <br>&nbsp;&nbsp;&nbsp; v1[0] += v2[0]+v3[0]; <br>&nbsp;&nbsp;&nbsp; v1[1] += v2[1]+v3[1]; <br>&nbsp;&nbsp;&nbsp; v1[2] += v2[2]+v3[2]; <br>&nbsp;&nbsp;&nbsp; m_Forces-&gt;GetPoint (tp[0], v2_pt);
</div>
<div>&nbsp;&nbsp; v2[0] -= v1[0]; <br>&nbsp;&nbsp;&nbsp; v2[1] -= v1[1]; <br>&nbsp;&nbsp;&nbsp; v2[2] -= v1[2];</div>
<div>&nbsp;&nbsp;&nbsp; m_Forces-&gt;SetPoint (tp[0], v2); </div>
<div>&nbsp;</div>
<div>&nbsp;</div>