Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

Contact not Working on Nastran 2017 1

Status
Not open for further replies.

Emi.Cor

New member
Jun 24, 2022
8
0
0
FR
Hello everybody,

I come to your help because I have tried everything and I cannot make a simple contact work on Nastran.
As it is my first doing contacts, I thought about making a simple model, two thin plates. One fixed and the other with a pressure and fixed at the edges. The idea is to make them enter in contact, only to understand how to set contacts in MSC Nastran (because there are too many cards : BCONTACT, BCTABL1, BCONECT, BCBODY, etc).

I am using HyperMesh as pre-processor. I leave an image attached of the model as well as the .bdf file.
The model is quite simple, two plates with 25 elements each one. Material alu (E=78000MPa and nu=0.33), thickness = 0.1mm and the plates are separated 0.15mm. Uniform pressure applied of 5MPa.

model_fjih7i.png



The problem is that even if the model runs, I see the plate with the pressure penetrating the fixed one, and no contact is observed (cf. figure below).

results_a05qwg.png


I would really apreciate if someone figures out what the problem might be.
The bdf file is attached and I also leave it next :

$$------------------------------------------------------------------------------$
$$ $
$$ NASTRAN Input Deck Generated by HyperMesh Version :2021.2.0.31
$$ Generated using HyperMesh-Nastran Template Version : 2021.2.0.31
$$ $
$$ Template: NastranMSC general $
$$ $
$$------------------------------------------------------------------------------$
$$------------------------------------------------------------------------------$
$$ Executive Control Cards $
$$------------------------------------------------------------------------------$
SOL 101
CEND
$$------------------------------------------------------------------------------$
$$ Case Control Cards $
$$------------------------------------------------------------------------------$
BCONTACT = 0
BOUTPUT(SORT1,PLOT) = ALL
DISPLACEMENT(SORT1,PRINT,REAL) = ALL
SPCFORCES(SORT1,PRINT,REAL) = ALL
STRESS(SORT1,PRINT,REAL,VONMISES,BILIN) = ALL

$
$HMNAME LOADSTEP 1"PRESSURE"
SUBCASE 1
SUBTITLE = PRESSURE
LABEL= PRESSURE
SPC = 2
LOAD = 4
ANALYSIS = STATICS
BCONTACT = 1
$$------------------------------------------------------------------------------$
$$ Bulk Data Cards $
$$------------------------------------------------------------------------------$
BEGIN BULK
PARAM,POST,1
PARAM,PRTMAXIM,YES
$$
$$ GRID Data
$$
GRID 1 1.5 1.5 0.0
GRID 2 1.5 0.5 0.0
GRID 3 1.5 -0.5 0.0
GRID 4 1.5 -1.5 0.0
GRID 5 0.5 1.5 0.0
GRID 6 0.5 0.5 0.0
GRID 7 0.5 -0.5 0.0
GRID 8 0.5 -1.5 0.0
GRID 9 -0.5 1.5 0.0
GRID 10 -0.5 0.5 0.0
GRID 11 -0.5 -0.5 0.0
GRID 12 -0.5 -1.5 0.0
GRID 13 -1.5 1.5 0.0
GRID 14 -1.5 0.5 0.0
GRID 15 -1.5 -0.5 0.0
GRID 16 -1.5 -1.5 0.0
GRID 17 2.5 1.5 0.0
GRID 18 2.5 0.5 0.0
GRID 19 2.5 -0.5 0.0
GRID 20 2.5 -1.5 0.0
GRID 21 -2.5 1.5 0.0
GRID 22 -2.5 0.5 0.0
GRID 23 -2.5 -0.5 0.0
GRID 24 -2.5 -1.5 0.0
GRID 25 2.5 2.5 0.0
GRID 26 2.5 -2.5 0.0
GRID 27 1.5 2.5 0.0
GRID 28 1.5 -2.5 0.0
GRID 29 0.5 2.5 0.0
GRID 30 0.5 -2.5 0.0
GRID 31 -0.5 2.5 0.0
GRID 32 -0.5 -2.5 0.0
GRID 33 -1.5 2.5 0.0
GRID 34 -1.5 -2.5 0.0
GRID 35 -2.5 2.5 0.0
GRID 36 -2.5 -2.5 0.0
GRID 37 1.5 1.5 -0.15
GRID 38 1.5 0.5 -0.15
GRID 39 1.5 -0.5 -0.15
GRID 40 1.5 -1.5 -0.15
GRID 41 0.5 1.5 -0.15
GRID 42 0.5 0.5 -0.15
GRID 43 0.5 -0.5 -0.15
GRID 44 0.5 -1.5 -0.15
GRID 45 -0.5 1.5 -0.15
GRID 46 -0.5 0.5 -0.15
GRID 47 -0.5 -0.5 -0.15
GRID 48 -0.5 -1.5 -0.15
GRID 49 -1.5 1.5 -0.15
GRID 50 -1.5 0.5 -0.15
GRID 51 -1.5 -0.5 -0.15
GRID 52 -1.5 -1.5 -0.15
GRID 53 2.5 1.5 -0.15
GRID 54 2.5 0.5 -0.15
GRID 55 2.5 -0.5 -0.15
GRID 56 2.5 -1.5 -0.15
GRID 57 -2.5 1.5 -0.15
GRID 58 -2.5 0.5 -0.15
GRID 59 -2.5 -0.5 -0.15
GRID 60 -2.5 -1.5 -0.15
GRID 61 2.5 2.5 -0.15
GRID 62 2.5 -2.5 -0.15
GRID 63 1.5 2.5 -0.15
GRID 64 1.5 -2.5 -0.15
GRID 65 0.5 2.5 -0.15
GRID 66 0.5 -2.5 -0.15
GRID 67 -0.5 2.5 -0.15
GRID 68 -0.5 -2.5 -0.15
GRID 69 -1.5 2.5 -0.15
GRID 70 -1.5 -2.5 -0.15
GRID 71 -2.5 2.5 -0.15
GRID 72 -2.5 -2.5 -0.15
$$
$$------------------------------------------------------------------------------$
$$ Group Definitions $
$$------------------------------------------------------------------------------$
$$
$$ CQUAD4 Elements
$$
$HMCOMP ID 1 1 4
CQUAD4 1 1 25 17 1 27
CQUAD4 2 1 17 18 2 1
CQUAD4 3 1 18 19 3 2
CQUAD4 4 1 19 20 4 3
CQUAD4 5 1 20 26 28 4
CQUAD4 6 1 27 1 5 29
CQUAD4 7 1 1 2 6 5
CQUAD4 8 1 2 3 7 6
CQUAD4 9 1 3 4 8 7
CQUAD4 10 1 4 28 30 8
CQUAD4 11 1 29 5 9 31
CQUAD4 12 1 5 6 10 9
CQUAD4 13 1 6 7 11 10
CQUAD4 14 1 7 8 12 11
CQUAD4 15 1 8 30 32 12
CQUAD4 16 1 31 9 13 33
CQUAD4 17 1 9 10 14 13
CQUAD4 18 1 10 11 15 14
CQUAD4 19 1 11 12 16 15
CQUAD4 20 1 12 32 34 16
CQUAD4 21 1 33 13 21 35
CQUAD4 22 1 13 14 22 21
CQUAD4 23 1 14 15 23 22
CQUAD4 24 1 15 16 24 23
CQUAD4 25 1 16 34 36 24
$HMCOMP ID 2 1 4
CQUAD4 26 1 61 53 37 63
CQUAD4 27 1 53 54 38 37
CQUAD4 28 1 54 55 39 38
CQUAD4 29 1 55 56 40 39
CQUAD4 30 1 56 62 64 40
CQUAD4 31 1 63 37 41 65
CQUAD4 32 1 37 38 42 41
CQUAD4 33 1 38 39 43 42
CQUAD4 34 1 39 40 44 43
CQUAD4 35 1 40 64 66 44
CQUAD4 36 1 65 41 45 67
CQUAD4 37 1 41 42 46 45
CQUAD4 38 1 42 43 47 46
CQUAD4 39 1 43 44 48 47
CQUAD4 40 1 44 66 68 48
CQUAD4 41 1 67 45 49 69
CQUAD4 42 1 45 46 50 49
CQUAD4 43 1 46 47 51 50
CQUAD4 44 1 47 48 52 51
CQUAD4 45 1 48 68 70 52
CQUAD4 46 1 69 49 57 71
CQUAD4 47 1 49 50 58 57
CQUAD4 48 1 50 51 59 58
CQUAD4 49 1 51 52 60 59
CQUAD4 50 1 52 70 72 60
$
$HMSET 1 2 "Top_Slave" 27
$HMSETTYPE 1 "regular" 27
BSURF 1 1 2 3 4 5 6 7
+ 8 9 10 11 12 13 14 15
+ 16 17 18 19 20 21 22 23
+ 24 25
$
$HMSET 2 2 "Down_Master" 27
$HMSETTYPE 2 "regular" 27
BSURF 2 50 49 48 47 46 45 44
+ 43 42 41 40 39 38 37 36
+ 35 34 33 32 31 30 29 28
+ 27 26
$$
$$------------------------------------------------------------------------------$
$$ HyperMesh name information for generic property collectors $
$$------------------------------------------------------------------------------$
$$
$$------------------------------------------------------------------------------$
$$ Property Definition for 1-D Elements $
$$------------------------------------------------------------------------------$
$$
$HMNAME GROUP 100"BCONECT" "BCONECT"
$HWCOLOR GROUP 100 29
BCONECT 100 2 1 2
$$
$$------------------------------------------------------------------------------$
$$ HyperMesh name and color information for generic components $
$$------------------------------------------------------------------------------$
$HMNAME COMP 1"Up_Slave" 1 "Plaque" 4
$HWCOLOR COMP 1 55
$
$HMNAME COMP 2"Down_Master" 1 "Plaque" 4
$HWCOLOR COMP 2 5
$
$$
$$------------------------------------------------------------------------------$
$$ Property Definition for Surface and Volume Elements $
$$------------------------------------------------------------------------------$
$$
$$ BCONPRG Data
$
$HMNAME PROP 2"BCONPRG_Geometric_Props" 6
$HWCOLOR PROP 2 24
BCONPRG 2 COPTM 11011COPTS 11011ICOORD 1
+ ISEARCH 1
$$
$$ PSHELL Data
$
$HMNAME PROP 1"Plaque" 4
$HWCOLOR PROP 1 7
PSHELL 1 1 0.1 1 1

$$
BCTABL1 1 100
$$
$$
BCBODY1 1 3D DEFORM 1
$$
BCBODY1 2 3D DEFORM 2
$$--------------------------------------------------------------
$$ HYPERMESH TAGS
$$--------------------------------------------------------------
$$BEGIN TAGS
$$END TAGS
$$
$$------------------------------------------------------------------------------$
$$ HyperMesh name information for generic materials $
$$------------------------------------------------------------------------------$
$$
$$------------------------------------------------------------------------------$
$$ Material Definition Cards $
$$------------------------------------------------------------------------------$
$$
$$ MAT1 Data
$
$HMNAME MAT 1"Alu" "MAT1"
$HWCOLOR MAT 1 6
MAT1 178000.0 0.33
$$
$$------------------------------------------------------------------------------$
$$ Loads and Boundary Conditions $
$$------------------------------------------------------------------------------$
$$
$$HyperMesh name and color information for generic loadcollectors
$$
$HMNAME LOADCOL 3"PRESSURE"
$HWCOLOR LOADCOL 3 20
$
$$
$$ SPC Data
$$
SPC 1 72 123456 0.0
SPC 1 71 123456 0.0
SPC 1 70 123456 0.0
SPC 1 69 123456 0.0
SPC 1 68 123456 0.0
SPC 1 67 123456 0.0
SPC 1 66 123456 0.0
SPC 1 65 123456 0.0
SPC 1 64 123456 0.0
SPC 1 63 123456 0.0
SPC 1 62 123456 0.0
SPC 1 61 123456 0.0
SPC 1 60 123456 0.0
SPC 1 59 123456 0.0
SPC 1 58 123456 0.0
SPC 1 57 123456 0.0
SPC 1 56 123456 0.0
SPC 1 55 123456 0.0
SPC 1 54 123456 0.0
SPC 1 53 123456 0.0
SPC 1 52 123456 0.0
SPC 1 51 123456 0.0
SPC 1 50 123456 0.0
SPC 1 49 123456 0.0
SPC 1 48 123456 0.0
SPC 1 47 123456 0.0
SPC 1 46 123456 0.0
SPC 1 45 123456 0.0
SPC 1 44 123456 0.0
SPC 1 43 123456 0.0
SPC 1 42 123456 0.0
SPC 1 41 123456 0.0
SPC 1 40 123456 0.0
SPC 1 39 123456 0.0
SPC 1 38 123456 0.0
SPC 1 37 123456 0.0
SPC 1 17 123456 0.0
SPC 1 18 123456 0.0
SPC 1 19 123456 0.0
SPC 1 20 123456 0.0
SPC 1 21 123456 0.0
SPC 1 22 123456 0.0
SPC 1 23 123456 0.0
SPC 1 24 123456 0.0
SPC 1 25 123456 0.0
SPC 1 26 123456 0.0
SPC 1 27 123456 0.0
SPC 1 28 123456 0.0
SPC 1 29 123456 0.0
SPC 1 30 123456 0.0
SPC 1 31 123456 0.0
SPC 1 32 123456 0.0
SPC 1 33 123456 0.0
SPC 1 34 123456 0.0
SPC 1 35 123456 0.0
SPC 1 36 123456 0.0
$$
$$ PLOAD4 Data
$$
PLOAD4 3 7 1.0
PLOAD4 3 8 1.0
PLOAD4 3 9 1.0
PLOAD4 3 12 1.0
PLOAD4 3 13 1.0
PLOAD4 3 14 1.0
PLOAD4 3 17 1.0
PLOAD4 3 18 1.0
PLOAD4 3 19 1.0
$$
$$ LOAD cards
$$
$HMNAME LOADCOL 4"LOAD"
$HWCOLOR LOADCOL 4 21
$$
LOAD 4 1.0 5.0 3
$
$$
$$ BCPARA cards
$$
$HMNAME LOADCOL 5"BCPARA"
$HWCOLOR LOADCOL 5 33
BCPARA 0LINCNT 1METHOD NODESURF
$$
$$
$$ SPCADD cards
$$
$HMNAME LOADCOL 2"SPCADD"
$HWCOLOR LOADCOL 2 17
$$
SPCADD 2 1
$
ENDDATA






Thanks in advance !

Sincerely,
EC

 
Replies continue below

Recommended for you

The plates in your model are separated by a distance which is larger than the sum of half their thicknesses
which means there is a gap between the plates in the unloaded configuration.

At the same time, you have defined the BCPARA,0 entry with the LINCNT parameter defined as 1 – this means any
contact forces will be based on the undeformed geometry. However, your undeformed geometry means the plates
are not in contact, so no contact force can develop. Contact in an otherwise linear solution should be confined
to small displacements.

You have 3 possibilities.
1. Move the plates so they are initially just touching (within initial contact tolerance), or
2. Remove the LINCNT parameter from the BCPARA,0 list, or
3. If 2. yields a solution where static equilibrium is violated beyond acceptable limits
(i.e. OLOAD resultant does not equal the sign reversed SPCFORCE resultant to more than an acceptable delta),
then you will need to use the full nonlinear solution SOL 400 (still without LINCNT=1 defined).

DG

 
Thank you very much DG !
It was super useful what you said !
I have tried both methods and they work [smile].

I have a question concerning the case without LINCNT. I have contact from the beginning, it does not matter how much I separate the plates,
from the very beginning, when the loaded one starts deforming, the other one enters into contact and starts deforming too (i.e. I have contact forces from the beginning).

I have read about the contact detection and I have played with the ERROR, BIAS, ISEARCH, etc parameters (both in BCPARA & BCONPRG cards) but I cannot make the contact start
when it should (when a slave element's node enters the contact tolerance zone of the master surface/shell elements).

Thanks in advance if you can help me with this problem too.

Sincerely,
EC
 
You are welcome.
Are we still in the context of SOL 101, or did you move to SOL 400? If yes, I am not sure I understand what you mean by "from the very beginning".
Please post another example of the behaviour you don't understand and I will take a look.
DG
 
Hello DG,

Thanks again for your help.
We are still in the context of SOL 101.
I will add some pictures below of what I tried to explain. I separated a considerably distance the plates to verify when the contact started (cf. image below, distance from midplane to midplane = 1.5mm).

img_epam8k.png


I repeat briefly the characteristics of the model :
Two plates with 25 elements each one. Material alu (E=78000MPa and nu=0.33), thickness = 0.1mm and the plates are separated 1.5 mm. The lower plate (master) has a 100 times stiffer material to simulate the contact as if it was with the ground.
Small modification, I changed the pressure for forces.
In BCPARA, I put ERROR 0.01 and BIAS = 0.9 as I read in MSC documents that this is a good value for BIAS. I changed ISEARCH parameter to 0 but then I switched it back to 1.

I tried to schematize the problem in the image below, depicting frame by frame the deformation.
As you can see, once the top plate starts deforming (frame 1) is like it triggers the contact and the bottom plate deforms too.
I tried separating even further the plates, but the same behavior is observed. Maybe I am making a conceptual mistake of how contacts work, but as far as I have read and understood, there is a contact tolerance zone where once
a node from the slave is within, the contact is considered.

results_itiz1b.png


I hope I could explain properly my problem.
I'll leave attached the .bdf file as well as the .op2 file if you desire to check the behaviour for yourself.

Thank you very much in advance.

Cordially,
EC
 
As you are in the context of SOL 101, all behaviour (except the contact) is linear. If/when 2 parts touch, due to the linear displacements,
forces will be generated between the parts, the load vector updated and the static analysis recomputed using the same, linear, stiffness but
different loads. The solution iterates until convergence.

When the load is applied to the top panel, by default (i.e. in the absence of an NLSTEP entry, which is your case), the procedure applies the
load in 10 equal increments. You can see this occurring in the f06 file. However, the response from these intermediate load applications is
not output, only the result when the full load is applied. What you are seeing must mean the top plate deforms enough under the full load to
touch the bottom plate. How can we demonstrate this? If I remove the contact between the 2 plates and apply the same load, I should be able
to see how far the top plate deforms to know if it deforms enough to touch the bottom one.

When I do this, the centre of the top plate displaces in Z by -5.216673E+01. The plates are separated by a distance of 1.5, and each have a
thickness of 0.1, so the top plate only needs to move downwards (-Z) by 1.4 before it touches the bottom plate. Clearly, the load is more than
enough to make the plates touch.

Now, remember this is linear analysis. This means we can scale the load linearly in order to obtain a displacement in -Z which is just below
1.4 and the plate should not touch, right? Scaling the load by 1.4/5.216673E+01 = 0.02684, so define the LOAD entry with 0.0268 (slightly
less than 0.02684) for S instead of 1.0, reactivate the contact, and sure enough the top plate doesn’t displace under the full (now much lower)
load enough to touch the bottom plate. If I now increase the load slightly, enough to displace the top plate under full load just enough, it
will touch the bottom plate and start to deform it. You might think increasing the load scale factor S to 0.02685 would be enough to do this,
but as you noticed, there are tolerances associated with the detection of the contact, and the load has to be increased to 0.0271 to have the
top plate touch the bottom one.

By the way, I never saw the point of using a default of 10 increments to apply the piecewise linear load. When I am doing this type of
analysis, I always start with the definition of an NLSTEP entry in the SUBCASE which points to a bulk data NLSTEP entry like this:

NLSTEP=1
BEGIN BULK
NLSTEP,1
,LCNT,1

The LCNT parameter on the continuation entry allows definition of how many increments to use for the analysis in field NINCC; here it is set to
1 to apply the full load in one go.

I hardly EVER play with ERROR or BIAS. If I have to resort to this, it usually means my contact is poorly defined. Default value for BIAS is
0.9 for touching contact and that for ERROR is computed from the size of the elements of the contact bodies.

DG
 
Thank you very much again dmapguru !

Your answer was very helpful and I could check the model with both S values that you provided.
However, I still have a question. Why do we see, for instance, the contact forces since the first frame ?
I mean I thought that we would start seeing the contact forces on the touched plate once the touching plate has deformed enough to enter in contact.

That is what I tried to explain before. We do not see the contact when we should. Instead, we observe the contact from the beginning, even
when the top plate has not deformed enough to enter in contact with the bottom plate.
I do not know if I explain myself properly, but what I try to say is that, for the S = 0.0271 case, I expected to start seeing contact forces on
the latest frames, and not from the first one, when the top plate has not deformed more than 1.4 mm.

Thanks in advance !

Cordially,
EC
 
With the applied load S value (on the LOAD entry) set to 0.0271, there is just enough load to deform the upper plate at full load so that
contact is detected with the lower plate (GRID 6 for example has a displacement of -1.409100E+00, closing the 1.4 gap between the plates).
We see contact forces between the 2 plates, but they are small. The SPCFORCEs of the GRIDs restraining the upper plate are of the order
of E+01 whereas those restraining the lower plate are of the order of E-02, so the upper plate is taking the lion’s share of the load.

At S=0.0270, the displacement of GRID 6 is -1.408502E+00, but no contact is established with the lower plate at full load, so no contact
forces. There are zero SPCFORCEs associated with the lower plate.

This all appears normal.

You wrote “I mean I thought that we would start seeing the contact forces on the touched plate once the touching plate has deformed enough
to enter in contact.” – this is what we observe.

But you also wrote “we observe the contact from the beginning, even when the top plate has not deformed enough to enter in contact with the
bottom plate.” – where? I mean, when S=0.0271 (i.e. enough to deform at full load to touch the bottom plate), where are you seeing the
plates touching at 10% or 20% or whatever of the load?

You go on to write “I expected to start seeing contact forces on the latest frames, and not from the first one, when the top plate has not
deformed more than 1.4 mm.” – I suspect you are looking at results in your post processor which is simply taking the single output
displacement vector (that for S=0.0271) and animating it in multiple steps in a piecewise manner. There is only ONE displacement vector
in the results op2 file, that which corresponds to S=0.0271. I think you are seeking to see at 10%*0.0271, no contact, at 20%*0.0271, no
contact,…until 100%*0.0271 where you start to see contact forces; if this is the case, you need to run a nonlinear analysis in SOL 400
where you can ask for output at each increment, because each increment is NOT just a piecewise linear decomposition of the total load, it
will be a fully nonlinear problem.

An alternative (to remain in the linear domain) would be to define as many SUBCASEs as you want increments and in each SUBCASE, define a
load with a proportionally larger load than the previous one, until the last SUBCASE where you apply the full load. Then in the post
processor, animate the displaced shape across the SUBCASE results.

DG
 
Thank you very much dmapguru.

You solved my doubt in this paragraph :

<< I suspect you are looking at results in your post processor which is simply taking the single output
displacement vector (that for S=0.0271) and animating it in multiple steps in a piecewise manner. There is only ONE displacement vector
in the results op2 file, that which corresponds to S=0.0271. I think you are seeking to see at 10%*0.0271, no contact, at 20%*0.0271, no
contact,…until 100%*0.0271 where you start to see contact forces; if this is the case, you need to run a nonlinear analysis in SOL 400
where you can ask for output at each increment, because each increment is NOT just a piecewise linear decomposition of the total load, it
will be a fully nonlinear problem. >>

I do not possess a SOL 400 license, so I decomposed the load into many subcases, as you suggeted, and it worked perfectly !

Thanks for all your answers and the time you took to understand and help me with my problem.

Cordially,
EC

 
Status
Not open for further replies.
Back
Top