Contact Mechanics - Friction Test
Re: Contact Mechanics - Friction Test
I am now trying to apply a Force or a Surface Traction to achieve the side motion instead of Displacement, I'll get back to you when I have some results.
Re: Contact Mechanics - Friction Test
Ok.. so I've tried Force 2 and Normal Force at the back side of the cube and Surface Traction 2 and Normal Surface Traction at the front side of the cube. The cube starts rotating and does not only move in y-direction. I tried to put Displacement 1 = Real 0.0 for every side of the cube but then the cube does not move at all. I also tried "Normal-Tangential Displacement Rotate = Logical False", but then I get memory errors..
The contact is still well-recognized though..
The contact is still well-recognized though..
Re: Contact Mechanics - Friction Test
Turned out it works, but the force I applied was too low. I applied the static friction force (~0,03) as Surface Traction and because of it being too low nothing happened. Then I randomly put Normal Surface Traction = Real 300.0 at the front side of the cube (+Displacement 1 = Real 0.0 for the whole cube) and it moves correctly! I takes alot of time for one timestep though so I'm waiting to see if the outputted forces are correct.
I also started the one with 0.03 again, maybe it just takes some time until the cube starts moving. I'll let it run over the weekend.
I also started the one with 0.03 again, maybe it just takes some time until the cube starts moving. I'll let it run over the weekend.
-
- Posts: 2301
- Joined: 25 Jan 2019, 01:28
- Antispam: Yes
Re: Contact Mechanics - Friction Test
From the solver manual the mortar bc condition is applied to the slave surface and points to the master. It also says the master had to be bigger then or the same size as the slave surface. So I had to change my BCs around. The friction.sif produced the avi video. The normal contact load and displacement look good, but the slip load is too high (nearly equals the normal load).
https://github.com/mrkearden/platecontact_elmer
https://github.com/mrkearden/platecontact_elmer
Re: Contact Mechanics - Friction Test
When I run friction.sif, somehow the plate does not move at all.
Shouldn't the slip load correspond to the force you apply on the cube? So in your friction.sif, 300000?
Shouldn't the slip load correspond to the force you apply on the cube? So in your friction.sif, 300000?
-
- Posts: 2301
- Joined: 25 Jan 2019, 01:28
- Antispam: Yes
Re: Contact Mechanics - Friction Test
I assume the slip load would be equal to the friction force which is the friction coefficient times the normal load. 0.003 x 100000. = 300. However the slip load is so high it takes 300000 to move the plate. I do not have deformed mesh on so you have to use warp vector in paraview to scale the displacements to make them visible.
The code calculate the slip load as
SlipForce = SQRT( SUM( NodalForce**2 ) - NormalForce**2 )
which is not the normal load times the coefficient of friction.
The code calculate the slip load as
SlipForce = SQRT( SUM( NodalForce**2 ) - NormalForce**2 )
which is not the normal load times the coefficient of friction.
Re: Contact Mechanics - Friction Test
Right, the Slipload is the Force that is applied to the cube in tangential direction. The formula is correct, and I also traced "NodalForce" back to the ElasticSolver and it is really the value that you can set as BC as either Force/Surface Traction 1,2,3 or Normal Force/Surface Traction. Somehow the values do not reach this part of the Code correctly though and I could not find out why yet.
Normal Load times static/dynamic coefficient of friction would be static/dynamic friction force, which is the force that operates in the opposite direction of where the cube moves. So to get the cube moving, you first have to apply a tangential force greater than the static friction force. Once the cube is moving, it is enough to apply a force as big as the dynamic friction force to keep it moving. This corresponds to the slipload.
Normal Load times static/dynamic coefficient of friction would be static/dynamic friction force, which is the force that operates in the opposite direction of where the cube moves. So to get the cube moving, you first have to apply a tangential force greater than the static friction force. Once the cube is moving, it is enough to apply a force as big as the dynamic friction force to keep it moving. This corresponds to the slipload.
Re: Contact Mechanics - Friction Test
SlipForce = SQRT( SUM( NodalForce**2 ) - NormalForce**2 )
I am a little confused about this now that I looked at it closer.
In my understanding NodalForce is a matrix with *number of dimensions* rows and *number of elements* columns, because this is how it is saved in ElasticSolver:
LoadVector(1,1:n) = GetReal( BC, 'Surface Traction 1', GotIt )
IF (.NOT. GotIt) LoadVector(1,1:n) = GetReal( BC, 'Force 1', GotIt )
GotForceBC = GotForceBC .OR. GotIt
LoadVector(2,1:n) = GetReal( BC, 'Surface Traction 2', GotIt )
IF (.NOT. GotIt) LoadVector(2,1:n) = GetReal( BC, 'Force 2', GotIt )
GotForceBC = GotForceBC .OR. GotIt
LoadVector(3,1:n) = GetReal( BC, 'Surface Traction 3', GotIt )
IF (.NOT. GotIt) LoadVector(3,1:n) = GetReal( BC, 'Force 3', GotIt )
GotForceBC = GotForceBC .OR. GotIt
(LoadVector being handed over a couple times and eventually becoming NodalForce).
And now SUM(NodalForce**2)) would be the sum of every entry of the matrix NodalForce*NodalForce?
I think what they want is the resulting force of all nodal forces in all directions and I think that would be NodalForce = SQRT( (SUM(NodalForce(1,:))² + (SUM(NodalForce(2,:))² + (SUM(NodalForce(3,:))² ). Do you kind of agree?
I am a little confused about this now that I looked at it closer.
In my understanding NodalForce is a matrix with *number of dimensions* rows and *number of elements* columns, because this is how it is saved in ElasticSolver:
LoadVector(1,1:n) = GetReal( BC, 'Surface Traction 1', GotIt )
IF (.NOT. GotIt) LoadVector(1,1:n) = GetReal( BC, 'Force 1', GotIt )
GotForceBC = GotForceBC .OR. GotIt
LoadVector(2,1:n) = GetReal( BC, 'Surface Traction 2', GotIt )
IF (.NOT. GotIt) LoadVector(2,1:n) = GetReal( BC, 'Force 2', GotIt )
GotForceBC = GotForceBC .OR. GotIt
LoadVector(3,1:n) = GetReal( BC, 'Surface Traction 3', GotIt )
IF (.NOT. GotIt) LoadVector(3,1:n) = GetReal( BC, 'Force 3', GotIt )
GotForceBC = GotForceBC .OR. GotIt
(LoadVector being handed over a couple times and eventually becoming NodalForce).
And now SUM(NodalForce**2)) would be the sum of every entry of the matrix NodalForce*NodalForce?
I think what they want is the resulting force of all nodal forces in all directions and I think that would be NodalForce = SQRT( (SUM(NodalForce(1,:))² + (SUM(NodalForce(2,:))² + (SUM(NodalForce(3,:))² ). Do you kind of agree?
-
- Posts: 2301
- Joined: 25 Jan 2019, 01:28
- Antispam: Yes
Re: Contact Mechanics - Friction Test
This case work well borrowed from the blunt 2d slide test
The normal load makes sense and the slip load is F=mu*N Modified the sif to the 3d plate model and it works fairly well F=mu*N in the fa.dat file
They both diverge if a force is applied to the cube instead of an enforced displacement.
used with the plates mesh
The normal load makes sense and the slip load is F=mu*N Modified the sif to the 3d plate model and it works fairly well F=mu*N in the fa.dat file
They both diverge if a force is applied to the cube instead of an enforced displacement.
used with the plates mesh
Re: Contact Mechanics - Friction Test
That does work well! Thank you! So I guess the friction contact just does not work yet.