Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

General contact problems

Status
Not open for further replies.

edumalta

Mechanical
Jul 6, 2011
17
0
0
BR
Good Afternoon fellow colleagues

Recently, I've been running a few tests with contacts in abaqus. The last one (a beam-solid contact) failed. It is basically a polymer pipe with four wires of helicoidal tensile armor inside. The contact seems to be ignoring the polymer layer and the wires are passing through. When I checked the status file, I found the following warning:

"Some nodes involved in general contact have penetrated their
tracked faces by more than 50.000 percent of the typical element
dimension in the general contact domain, 4.5263. Please check the
node set "InfoNodeDeepPenetFirst" in Abaqus/Viewer for more
information. Please make sure that these nodes and their
contacting faces have sufficient mass to allow the code to
calculate realistic contact penalties for enforcing the contact
constraint."

How can I fix that?

I basically used penalty-hard contact properties and the default general contact setup. It is relevant to say that it worked with contact pairs.

Thanks in advance

PS.:

THE CONTACT SETUP SCRIPT

#Contacts#######################################################################

mdb.models['Model-1'].ContactProperty('IntProp-1')

mdb.models['Model-1'].interactionProperties['IntProp-1'].TangentialBehavior(
dependencies=0, directionality=ISOTROPIC, elasticSlipStiffness=None,
formulation=PENALTY, fraction=0.005, maximumElasticSlip=FRACTION,
pressureDependency=OFF, shearStressLimit=None, slipRateDependency=OFF,
table=((0.2, ), ), temperatureDependency=OFF)

mdb.models['Model-1'].interactionProperties['IntProp-1'].NormalBehavior(
allowSeparation=ON, constraintEnforcementMethod=DEFAULT,
pressureOverclosure=HARD)

mdb.models['Model-1'].ContactExp(createStepName='carga', name='Int-1')

mdb.models['Model-1'].interactions['Int-1'].includedPairs.setValuesInStep(
stepName='carga', useAllstar=ON)

mdb.models['Model-1'].interactions['Int-1'].contactPropertyAssignments.appendInStep(
assignments=((GLOBAL, SELF, 'IntProp-1'), ), stepName='carga')

 
Replies continue below

Recommended for you

Hi,

You do not have to worry about the warning.
In many cases the results are still valid.
General contact use penalty formulation so it is almost impossible to avoid contact penetration during simulation.

Basically it means penalty force was not sufficient to remove contact penetration.
But if you did not see problem with contact on animation (one body going into another) your results should be fine.

If you want to fix the warning I see following options:
1. cut down your time step
2. use higher contact forces (scale them by one order up)
3. instead general contact use contact pair with kinematic formulation.
4. disable writing this warning into *.sta file with following keyword:
*DIAGNOSTICS, DEEP PENETRATION FACTOR=100.0

Point 4 works always :)

Regards,
Bartosz
 
Firstly, thanks for you reply Bartosz!

Its not only the warning message, but I saw the parts passing through each other in the results. I suspect the reason for that is the initial condition of the two bodies (initially bonded). When I put a small gap between them, the contact works fine.

I will try the penalty force ajustment, like you said.

If you know how to do it without adding this gap, I would be grateful.

Regards

Eduardo

 
Hello Eduardo,

One short question, are You using Abaqus/Standart or Abaqus/Explicit.
I am asking since general contact behave in different ways for these two solvers.

Regards,
Bartosz
 
Hi Edumalta,

I'm having the exact same problem. Did you find a solution? I'm am going to try the contact pair method instead of general contact but I find it difficult to get right.

My problem has a strange aspect to it. I am running the contact problem with a user defined material model, which I know is identical to the holzapfel model included in abaqus. When I use the subroutine I get the horrible contact problem, but when I use the internal model, I don't....

Does anybody know why this would be? Does abaqus include something on contact behaviour in it's internal models that I would be missing in m subroutine? I've validated the subroutine against the internal model for non-contact problems and they're identical.

Thanks,

Aisling
 
Hi Aisling,

I found a temporary solution for my problem, but its not really what I wanted. I put a small gap between the contact parts and the model runs fine.

I have a few questions for you, regarding your problem:

Have you tried the following combinations?

-User defined material with general contact;
-User defined material with contact pairs;
-Internal model with general contact;
-Internal model with contact pairs;

Are you using penalty method?

Are you using UMAT or VMAT?

Are you using Abaqus/Explicit?

You see, this will help me to narrow the possibilities of error in your model.

Regards

Eduardo

 
Hello Eduardo,

As I understand the root of the problem is initial penetration between parts in contact.
The best way is to remove all penetration manually before submit the analysis.
If for some reason this is difficult or impossible to do the penetrations in general contact are removed automatically by Abaqus/Explicit.
Perhaps your penetration is too big to be removed with default settings.
Please take a look for following chapters in Abaqus documentation:
34.4.4 Controlling initial contact status for general contact in Abaqus/Explicit
37.2.1 Contact diagnostics in an Abaqus/Explicit analysis

Regards,
Bartosz
 
Bartosz,

Thanks to your tip, I was able to find some interesting information in the Abaqus manual.

"The terminology “contact edges” refers to feature edges of surface facets (on both shells and solids) as well as to segments representing beam and truss elements. The contact edges representing beam and truss elements have a circular cross-section, regardless of the actual cross-section of the beam or truss element. The radius of a contact edge representing a truss element is derived from the cross-sectional area specified on the truss section definition (it is equal to the radius of a solid circular section with an equivalent cross-sectional area). For beams with circular cross-sections, the radius of the contact edge is equivalent to the section radius. For beams with non-circular cross-sections, the radius of the contact edge is equal to the radius of a circumscribed circle around the section. If connected edges have different radii, a nodal radius is first computed as the minimum radius of the adjacent contact edges, and the radius of the edge cross-section is interpolated linearly over the length of the contact edge from the nodal values. Shell element edges reflect the shell thickness in the normal direction and do not extend past the perimeter (similar to shell nodes and facets). Some numerical rounding of features occurs for both node-to-facet and edge-to-edge contact."

I guess this is it. The beam elements have a contact surface with a defined radius. Whe modeling a contact between a beam and a certain surface, a small distance between them is needed (this distance varies depending on the cross-section).

Regards

Eduardo
 
Hi Eduardo,

so the main issue for me seems to be the user-defined material V abaqus material rather than the general contact V contact pair.

I'm using the vuanisohyper subroutine. I tried the following combinations

1) vuanisohyper + contact pair (kinematic)
2) vuanisohyper + general contact
3) Abaqus Holzapfel model + contact pair (kinematic)
4) Abaqus Holzapfel model + general contact

I get different results for 3&4 but the big problem is with 1&2. I have a submodel boundary condition driving the edges of the model as shown in the picture, but the top surface isn't displaced by the rigid body at all. (i realise the mesh is very coarse but that's just so I can debug faster for now)

I've attached image of 2) and 4) to illustrate the problem. There is very little difference in the code between these two models, only the material definition...

2)
*anisotropic hyperelastic,user,formulation=invariant, local directions=2,type=compressible,properties=6, dependencies=2
<C10>, <D>, <K1>, <K2>, <Kappa>, <FS>
*DEPVAR, delete=2
2
1,USVM,"User stressVM"
2, damage, "damage flag"
*USER DEFINED FIELD
......
......
*FIELD, Variable=1
Set

4)
*anisotropic hyperelastic,holzapfel, local directions=2
<C10>, <D>, <K1>, <K2>, <Kappa>

I'm no longer sure if this is a contact problem or a problem implementing the user material!

Thanks,

Aisling
 
 http://files.engineering.com/getfile.aspx?folder=c34a0855-f088-4664-923a-e68b2d2a6a66&file=2.bmp
Aisling,

Since you are using solid elements, the general contact should work fine. I guess your problem is with the user defined material. I am not used to work with subroutines, so I can't help you much.

My suggestion is:

If you modified another subroutine to do yours, you should run the original one first. See if it runs...

Another option is to try a functioning subroutine (there are plenty on the web).

If you started yours from zero, I say you should debug your code using visual studio and similars to see what happens to your internal variables.

These measures are for you to guarantee that your problem is in the subroutine and not the contact.

Well, good luck to you. I'm still here if you need.

Regards

Eduardo
 
Status
Not open for further replies.
Back
Top