Platform: All Platforms Applies to: MEMS Module, Structural Mechanics Module Versions: All versions


This article contains guidance for solving models that include structural contact, and the procedures that should be followed to achieve a converged solution.


Structural contact modeling is a highly non-linear problem. As surfaces come in and out of contact, load paths and stress states will abruptly change. The numerical solvers within COMSOL Multiphysics expect some degree of smoothness to the solution, so solving such models is inherently challenging. Most contact models will require some changes to the default model settings to solve efficiently.

Guidelines for Contact Modeling


If your geometry contains parts that are adjacent to each other, that have mating boundaries, the finalization method should be set to Form Assembly with the Create Pairs of pair type Contact Pair selected. This will automatically create Contact Pairs between mating boundaries of objects. For more details on the usage of Form Assembly, see Knowledgebase Article 1216. For boundaries which are not initially in contact, but which will come into contact during the simulation, you will need to manually create Contact Pairs between these sets of boundaries.

If you anticipate contact between any sharp corners and surfaces in the model, you should modify the geometry such that the sharp corner is replaced with a rounded boundary, a fillet. The fillet radius can be very small, and that surface will need to be meshed quite finely.


All contact pairs, both manually and automatically created, are defined at: Component > Definitions > Contact Pairs.

Within the Contact Pair definition, choose the stiffer part as the source. If the parts have a similar stiffness, set concave parts as source and convex parts as destination. Use the Swap source and destination button for this. For efficiency, include in each contact pair only those boundaries that have the possibility of coming into contact.

If it is expected that there will be little sliding between the contacting boundaries (such as in a shrink fit or when two parts are bolted together) then go to the Contact Pair > Advanced settings, and change the Mapping method to Initial Configuration. The mapping between the source and destination boundaries will be computed only once, based upon the initial positions of the domains, which leads to faster and more stable convergence.

Solid Mechanics

Add a Contact feature within the Solid Mechanics interface. A single Contact feature can be applied to all Contact Pair definitions at once.

Within the Contact feature, select either the augmented Lagrangian or Penalty as the Contact Pressure Method. The augmented Lagrangian method is more accurate, but has higher computational cost, and will require more fine-tuning to converge. The Penalty method is relatively less accurate, but more robust and will require less solver tuning, making it preferable for multiphysics problems and time-dependent models. The Penalty method must be used when modeling adhesion.

When using the augmented Lagrangian formulation there is a Penalty Factor that controls how “hard” the interface surface is during the iterations, but does not directly affect the converged results. The default Penalty Factor contains two preset tuning options: Stability(default) or Speed. If the contacting parts are in contact at the start of the simulation, then Speed is the preferred setting. Guidance of manual tuning of the Penalty Factor is in Knowledge Base entry However, manual tuning of the Penalty Factor should only be done after all of the other recommendations in this Knowledgebase.

Contact Settings

If one part is significantly stiffer than the others, its deflections will be relatively negligible, and it can often be considered as rigid. This is a simplifying assumption which will make the problem easier to solve. To apply this assumption, add a Prescribed Displacement condition to the rigid domain. The rigid domains can have a very coarse mesh on any planar boundaries, however any curved contact boundaries will still need to be finely meshed. The rigid part should be the source in the Contact Pair. The mesh on the boundaries of the deformable domains will need to be fine enough to give a good resolution of the contact patch and stress state.

It is better to have a Prescribed Displacement constraint on all domains that will come into contact in the model. This will be easier to solve than the case of domains with only applied loads, forces, and Contact conditions, but that are otherwise unconstrained. If it is possible to reformulate your problem such that there is some initial constraint on all domains, do so.

If you must model a domain that is initially unconstrained, add a Spring Foundation feature to these unconstrained, deformable, domains (or to the boundaries of these domains.) The magnitude of this spring constant is initially set at a very high value, high enough such that the deformations are negligible due to the initially applied loads. As this spring constant is reduced to zero, the domain will gradually relax into its deformed state due to contact and applied loads.

If you are solving a stationary (steady-state) model, you will want to ramp the prescribed displacements, loads, and stiffnesses of any spring foundations during the solution. Introduce a new Global Parameter (name it, for example: RampFactor ) and multiply all loads, displacements, and stiffnesses by this factor. The ramping of this parameter will be defined within the study settings.

If you are solving a time dependent (transient) model, make sure that all prescribed displacements, loads, and stiffnesses of any spring foundations are time-dependent and ramped over a physically reasonable timespans, not just for the solid mechanics physics, but for all other physics that are included if it is a multiphysics model. For more information on this, see Knowledge Base entry 905.

If you are solving a transient model but do not want to consider inertial effects (if you do not want to model the vibrations of the structure) then go to the Solid Mechanics interface, Structural Transient Behavior settings, and select Quasi-static, which will solve much more quickly.


It is important to mesh the contacting boundaries sufficiently finely. Manual meshing will need to be used. The contacting boundaries should be meshed finely enough to give good resolution of the contacting area. The destination boundary of the contact pair must be meshed finer than the source boundary, by at least a factor of two. Curved surfaces will need to be meshed more finely than flat surfaces.

Study Settings

When solving a Stationary study, you will want to ramp up the prescribed displacements, loads, or spring foundations on unconstrained domains. Introduce first a Global Parameter, such as RampFactor that multiplies all displacements, loads and stiffnesses. Ramp this parameter via the Auxilliary Sweep option within the Stationary Study Step Settings.

The ramping of applied loads and displacements should begin from a value very close to zero, at which there is negligible, or even no, contact and should ramp up linearly to the maximum value. For example, the screenshot below shows RampFactor starting at a value of 0.001 and then increasing from 0.1 to 1 in increments of 0.1. By default, the Continuation Method will be used, which uses the solution from the previously solved step as the initial condition for the next step, thereby easing convergence. The number of increments may need to be quite large, and you will want to monitor at what values of the ramping factor there is slow convergence of the solver. Use more increments when the convergence is slow. Auxiliary Sweep Settings

The ramping of spring constants used for spring foundations on unconstrained domains should begin at the peak value of spring stiffness and then down to zero. In this case, a nonlinear decrease of spring stiffness is recommended. Using the parameter RampFactor that ranges linearly from 0 to 1, a spring foundation with spring constant kz in the Z-direction can be introduced where

kz = k0*(1-RampFactor)*2^(-RampFactor*10)

and similarly in any other directions that need to be restrained. The peak value of spring stiffness, k0, should be chosen such that the displacement due to the full applied load is about equal to the element size of the contacting boundaries.

When spring foundations and applied loads are in a single model, the applied loads should be ramped up linearly at the same time as the spring constants for the spring foundations are ramped down nonlinearly using the above expression, and shown in the plot below. Spring Stiffness

Solver Settings

Use the default suggested direct solver rather than the iterative solver whenever possible. The iterative solver will require less memory, but convergence is usually much slower.

For stationary models with an Auxiliary Sweep over a ramping parameter, the default behavior is to use the Continuation method. Within the Parametric settings, changing the Predictor to Constant will make the convergence more robust, but slower. This setting is shown in the screenshot below.

Parametric Settings

When using the augmented Lagrangian formulation, the default solver configuration uses a segregated approach where the contact pressures (and friction forces, if friction is included) are solved in a separate Lumped step. This should not be changed. If you have to modify the solver sequence, this separate segregated group should still be kept, and solved for after the displacements.

When using the augmented Lagrangian formulation, it is necessary to manually scale the variables in a contact problem. If you cannot estimate the contact pressure before the solution, you may need to do the analysis in two passes, where you first compute an estimate of the contact pressure using the Penalty formulation. The scaling of the contact pressure is used when checking the convergence, so if a too high value is used, there is a risk that the results are not correct.


Modeling of Contact with Friction

Modeling friction is will often increase the computation time significantly, so if you can reasonably ignore friction, do so. Friction usually only causes minor local effects, and friction coefficients are difficult to obtain with any accuracy, so this simplification is practically justified. If, however, there are significant shear stresses on contact boundaries, or if frictional dissipation is important, friction must be included.

If your contact simulation does involve friction, set up and solve the problem without friction first. Once the appropriate solver settings have been found, add friction and re-solve. Contact problems with friction should always be solved incrementally using a parametric or time dependent solver since the development of friction forces is history dependent.

Other resources

The Structural Mechanics Module User's Guide > Structural Mechanics Modeling > Contact Modeling section.