Modeling interference fit (shrink fit)

Hi,

does CalculiX have an option to model interference fit (shrink fit / press fit) in contact? So that I can place two parts with initial interference and it will be resolved by the solver with stress and strain generation (unlike slave adjustment in tie constraint). I haven’t seen any keyword for that but I came across some websites mentioning presfit option, however I’m not sure how to use it. Especially that I submit the job via preprocessor and I don’t use any commands for solver. Is there a way to model interference fit with just the keywords ?

Model your parts with the interference value, they will resolve the press fit. Make sure your mesh density is sufficient and your contact stiffness is high enough (you will know if it is not if you see your parts passing through each other).

Ok, but there are two possible approaches to initial interference in contact - the software might resolve them without generating stresses and strains or do it with stress and strain generation. The former is just a convenient slave surface adjustment while the latter is actual interference fit modeling. Isn’t the first option used by default in CalculiX ?

I am not sure, but I think the surface adjustment is for bonded contact (constraint equations), so that the CE’s don’t store load.
My experience with contact is that it works by default as I describe. Below is a small input sample, this should give you enough to get started.

You can also look at these YouTube videos. They use the Mecway preprocessor but they discuss topics that I think are relevant to you (contact, interference, contact stiffness, friction) and they can be run in the demo version of Mecway. Once you run an example, you can see the Calculix commands that were generated.

*** EXAMPLE INTERFERENCE FIT USING CONTACT
*NODE
1,0.005,0,0.01
2,0.009899999015033,0.004698017383809,0.009825071979314
3,0,0.005,0.005
4,0.005,0.005,0.01
5,0,0,0.01
6,0.009899999015033,0.0001980173838092,0.009825071979314
7,0.005,0,0.005
8,0.009899999015033,0.004698017383809,0.005325071979314
9,0,0.005,0.01
10,0,0,0.005
11,0.005,0.005,0.005
12,0.009899999015033,0.0001980173838092,0.005325071979314
13,0.004899999015033,0.0001980173838092,0.005325071979314
14,0.004899999015033,0.004698017383809,0.005325071979314
15,0.004899999015033,0.0001980173838092,0.009825071979314
16,0.004899999015033,0.004698017383809,0.009825071979314
*ELEMENT,TYPE=C3D8
1,13,12,8,14,15,6,2,16
2,10,7,11,3,5,1,4,9
*ELSET,ELSET=part2
2
*ELSET,ELSET=part1
1
*SURFACE,NAME=s1
2,S4
*SURFACE,NAME=s2
1,S6
*MATERIAL,NAME=Material
*ELASTIC,TYPE=ISOTROPIC
100000000000,0.3
*SOLID SECTION,ELSET=part2,MATERIAL=Material
*SOLID SECTION,ELSET=part1,MATERIAL=Material
*BOUNDARY
2,1,0
2,2,0
2,3,0
3,1,0
3,2,0
3,3,0
5,1,0
5,2,0
5,3,0
6,1,0
6,2,0
6,3,0
8,1,0
8,2,0
8,3,0
9,1,0
9,2,0
9,3,0
10,1,0
10,2,0
10,3,0
12,1,0
12,2,0
12,3,0
*CONTACT PAIR,INTERACTION=SI_1,TYPE=SURFACE TO SURFACE
s2,s1
*SURFACE INTERACTION,NAME=SI_1
*SURFACE BEHAVIOR,PRESSURE-OVERCLOSURE=LINEAR
2000000000000
*STEP,NLGEOM=YES,INC=100
*STATIC
0.05,1,0,0
*NODE FILE,GLOBAL=YES
U,RF
*EL FILE
S,E,ENER
*CONTACT FILE
CDIS,CSTR
*END STEP

In the past I have modeled (first in Abaqus and then CalculiX) lot of rubber bushes that before applying main loads, we need to press fit in assembly condition. In order to do that we made a preliminar assembly step were we define a cylindric coordinate system (*TRANSFORM card) for the nodes related to the faces that we need to press fit, then just apply a radial displacement (1st dof of the cylindrical coordinate system) to the nodes of the pressed fit faces. The main advantage of this method is that you don’t need to include the exterior part or use contacts, you directly decrease the diameter of the part to the exactly end dimention.

Attached an animation of a press fit operation of a rubber/metal bush, made with CCX/Mecway and with this procedure.

3 Likes

I got back to this topic and compared the results for the same model solved in Abaqus and CalculiX. First, short quotes from the documentation of each software to see how it resolves initial penetrations in contact by default:

1. Abaqus:

Interference fits in Abaqus/Standard:

• occur by default when the contact formulation computes overclosures between surfaces in the initial configuration of a model
• are resolved in the first increment of a step by default
• can be gradually resolved over multiple increments [*Contact Interference]
• result in stresses and strains in a model as overclosures are resolved
1. CalculiX:

Penetration is interpreted as a negative clearance and consequently all penetrating nodes are always adjusted, no matter how small the adjustment size (which must be nonnegative).

This quote from CalculuX’s documentation applies to the ADJUST parameter so I assume that this behavior occurs only when the ADJUST parameter is included. It’s not mentioned that it’s a strain-free adjustment but it should be when ADJUST is involved. The documentation doesn’t explain what happens when there are initial penetrations but the ADJUST parameter is not included.

Here are the results that I got for the same model and equivalent settings (disabled surface smoothing, no *Contact interference in Abaqus and so on):

• Abaqus:

• CalculiX:

Both simulations resulted in the interference being resolved in a single increment. But, as you can see, there’s a huge difference in CPRESS values. Output from Abaqus makes sense since the analytical result is around 53.5 MPa. Results from CalculiX are meaningless.

If I understand it correctly, CalculiX (unlike Abaqus) without the ADJUST parameter doesn’t treat the initial penetration as intended interference and just activates the contact elements showing large CPRESS values derived from the specified pressure-overclosure relationship. I just don’t understand why the penetration is resolved during analysis in this case and surfaces are brought in contact.

Can you confirm this ?

1 Like

This is an old thread, but similar to my question.

I would like to vary the interference fit between a bearing outer ring and a housing, so I am looking for the appropriate way to enter the overclosure numerically (rather than adjusting the node positions).
Which *SURFACE BEHAVIOR type is suitable?

@Calc_em could you share the ccx input file? I would like to take a closer look at this.

@jbr Sorry for the delay, I was on vacation without access to a computer. I uploaded the file here:

1 Like

After some tests and discussion with Guido it turned out that interference fit can be resolved using default contact settings (of course without the ADJUST parameter). I just uploaded a tutorial about this: PrePoMax (CalculiX FEA) - Tutorial 29 - Interference fit (press fit / shrink fit) - YouTube

1 Like