Minimally constraining an FEA Model in Matlab

I am trying to model thermal expansion and the stresses this generates in a simple cuboid. How can I constrain this model such that artificial stress is not generated due to the fixed faces/vertices? I want this brick to be resting gently on a surface, and be able to freely expand in all directions.
Thanks!

 Réponse acceptée

John D'Errico
John D'Errico le 30 Avr 2026 à 14:14
Modifié(e) : John D'Errico le 1 Mai 2026 à 14:30

0 votes

If it is resting on a surface, it is not resting gently, in the sense that it CANNOT freely expand below the surface. In fact, you absolutely must constrain the displacement in that direction, as if you do not do so, then the solution will not be unique.
This is a classic mistake made by many. For example, consider a simple truss. If you do not constrain the truss in certain directions, then the system of equations will be indeterminate. They will allow infinitely many solutions, all of which solutions are equivalent except they will be freely translated. And a simple translation has no potential energy cost. Rotations also apply in this case.
FEA is a technique designed to minimize the potential energy of a system. IF the entire construct may be freely translated at no cost in energy, then infinitely many solutions will exist, all of which are equally valid.
For this reason, again, there is no such thing as "gently" resting on a surface. You will either need to enforce sufficient constraints to make the system solvable, or you will need to deal with the indeterminacy. How do you do that?
In fact, you can solve such an indeterminate problem, but this requires a linear algebra tool which can identify that indeterminacy, and you need to learn how to use it. In MATLAB, that tool is called NULL, a tool which effectively identifies the missing information in a set of linear equations, by computing the nullspace for that linear system. But you may not need to use it. Instead, again, you need to understand how an FEA works, and what the system of linear equations mean.
In your case, I think what you want to do is not to think of a brick sitting on a surface. Instead, visualize a brick that is floating in space. You could now model a set of thermal loads applied to your system. But recognize that pinning the system at one point in space does not impose any potential energy losses. All you are doing is fixing your coordinate system to have one node fixed in place. That does not cost any potential energy, as long as all you are doing is prevent free translational or rotational movement. No additional stresses will be generated at the fixed node, as long as all you do is prevent those free translations. Effectively, you can choose to define the center of your coordinate system and the axes of that coordintate system freely as you wish, and there cannot be an energy penalty for doing so.

1 commentaire

Anjitha
Anjitha le 2 Mai 2026 à 5:05
This makes a lot of sense, thank you! I am merely trying to prevent free translations and rotations.
I have already tried this by constraining VertexBC but when I fix a single node, my model skews and stretches in a bizarre manner.
What do you think is causing this? I assumed it was my lack of constraints, but since the solver compiled, I doubt this is the case. This also does not occur when I constrain an entire face, or multiple vertices. The problem does not lie in deformation scale factor.
Original Model Model post-solution
Thanks again for your help!

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Question posée :

le 30 Avr 2026 à 2:44

Commenté :

le 2 Mai 2026 à 5:05

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by