How are matrix updates controlled?
Since the stiffness matrix (in an elastic problem, say) depends on the shape and actual locations of mesh points, conceptually it should change on each time step. Yet, solving an elastodynamic problem and printing the intermediate M, C, K matrices, they don't seem to change - though there is code called to recompute them from the nls solver (td_solvers.py get_matrices() function).
What needs to happen for the matrices to update really? Is it assumed that the mesh doesn't change much, so that no updates are needed?
On 6/19/23 15:49, Yosef Meller wrote:
Since the stiffness matrix (in an elastic problem, say) depends on the shape and actual locations of mesh points, conceptually it should change on each time step. Yet, solving an elastodynamic problem and printing the intermediate M, C, K matrices, they don't seem to change - though there is code called to recompute them from the nls solver (td_solvers.py get_matrices() function).
What needs to happen for the matrices to update really? Is it assumed that the mesh doesn't change much, so that no updates are needed?
Yes, the included elastodynamics examples assume the linear elasticity and small strains. Then all the integrals (of the weak formulation) occur on the original (undeformed) mesh.
The matrices would change for a nonlinear and/or large deforming material, such as in the large deformation examples.
r.
I don't see any special instruction about that in the examples themselves. Did I miss it, or is there somewhere logic to decide how to classify the material as non-linear/large? If so, where can I find it?
On Mon, Jun 19, 2023 at 5:44 PM Robert Cimrman <cimrman3@ntc.zcu.cz> wrote:
Since the stiffness matrix (in an elastic problem, say) depends on the shape and actual locations of mesh points, conceptually it should change on each time step. Yet, solving an elastodynamic problem and printing the intermediate M, C, K matrices, they don't seem to change - though there is code called to recompute them from the nls solver (td_solvers.py get_matrices() function).
What needs to happen for the matrices to update really? Is it assumed
On 6/19/23 15:49, Yosef Meller wrote: that the mesh doesn't change much, so that no updates are needed?
Yes, the included elastodynamics examples assume the linear elasticity and small strains. Then all the integrals (of the weak formulation) occur on the original (undeformed) mesh.
The matrices would change for a nonlinear and/or large deforming material, such as in the large deformation examples.
r.
SfePy mailing list -- sfepy@python.org To unsubscribe send an email to sfepy-leave@python.org https://mail.python.org/mailman3/lists/sfepy.python.org/ Member address: yosefm@gmail.com
On 6/19/23 17:19, Yosef Meller wrote:
I don't see any special instruction about that in the examples themselves. Did I miss it, or is there somewhere logic to decide how to classify the material as non-linear/large? If so, where can I find it?
See the 'is_linear' time-stepping solver option.
On Mon, Jun 19, 2023 at 5:44 PM Robert Cimrman <cimrman3@ntc.zcu.cz> wrote:
Since the stiffness matrix (in an elastic problem, say) depends on the shape and actual locations of mesh points, conceptually it should change on each time step. Yet, solving an elastodynamic problem and printing the intermediate M, C, K matrices, they don't seem to change - though there is code called to recompute them from the nls solver (td_solvers.py get_matrices() function).
What needs to happen for the matrices to update really? Is it assumed
On 6/19/23 15:49, Yosef Meller wrote: that the mesh doesn't change much, so that no updates are needed?
Yes, the included elastodynamics examples assume the linear elasticity and small strains. Then all the integrals (of the weak formulation) occur on the original (undeformed) mesh.
The matrices would change for a nonlinear and/or large deforming material, such as in the large deformation examples.
r.
participants (2)
-
Robert Cimrman
-
Yosef Meller