Author Topic: Question: Implementation of a user contact material model  (Read 3935 times)

fheinrich

  • Jr. Member
  • **
  • Posts: 27
Question: Implementation of a user contact material model
« on: September 07, 2015, 05:07:01 AM »
Dear all,

although I know that you do not support user developments in general, I would like to discuss a rather conceptual question.
Sharing your thoughts would be highly appreciated and I hope this thread helps others in the future as well.

My goal:
I want to model the interface between a block of plastics and a very thin layer of metal (i.e. a coating). In particular, I am
interested in the break-up of the plastics-metal-interface when a maximum shear- or normal-stress is reached.

My approach:
I try to model the plastics and the metal layer as separate 3d blocks with 3d elements. I connect both of them using a lagrange
multiplier contact model. The next step would be to define a user material model that tells FEAP to break up the contact
when the stresses reach a certain limit.

My question:
I am looking for a way to implement my contact material model.

What I tried so far:
In the programmer manual (chapter 4.2 - User Material Models - FEAP version 8.2) I found that the description deals with the "[...] mesh MATErial command [...]", i.e. the one that is used in the mesh section of the input deck. In contrast, I am looking for a way to modify the MATErial command in the CONTact section of the input deck. Further, I read in the user manual (Appendix C, p. 338 - FEAP version 8.2) that SOLM LAGM can have the parameters k-norm and k-tang. For the penalty method I understand that these parameters correlate to the virtual spring stiffnesses. In the lagrange multiplier method I am not sure whether these parameters can help me to solve the problem.
I also dug through the code to find where data is provided in case one enters "USER" as a "MATErial" option. In continit.f I found the comment: "User defined material: type data in cm0", so it seems to me I have modify the cm0 array.

What I am going to try next:
I will use the SOLM LAGM without the parameters k-norm, k-tang. Instead I will use SOLM LAGM with the option USER and try to modify the cm0 array in the source code. I will try this as the prepared user routines for material models seem to handle only material models in the mesh section of the input-deck, but I might be wrong.
I will write an update in case I get it running.

Please let me know in case you can think of a smarter way to model the break-up of a plastics-metal interface.
Thank you.

Best regards

fheinrich

  • Jr. Member
  • **
  • Posts: 27
Re: Question: Implementation of a user contact material model
« Reply #1 on: September 15, 2015, 01:54:43 AM »
Update 1:

I figured out that when I enter something like:

CONTact
...
MATE 2
  NLFR
    FRIC COUL 0.5
...

to the input-deck, the routine crmat02.f is being called. In the next steps I have to verify
that the friction-model works for 3d geometries. If this is the case, I can modify the friction-
related arrays in crmat02.f.

Prof. R.L. Taylor

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 2649
Re: Question: Implementation of a user contact material model
« Reply #2 on: September 15, 2015, 05:59:35 AM »
You should also consult the contact manual for programming suggestions.

fheinrich

  • Jr. Member
  • **
  • Posts: 27
Re: Question: Implementation of a user contact material model
« Reply #3 on: September 21, 2015, 02:11:38 AM »
Dear Professor, dear all,

many thanks for your response.

I read the user-, the programming- and the contact manuals and found the information that the routine CELMT#
is the equivalent to the routine ELMT#. According to the documentation it seems to me that the CELMT#-routines
are the right routines to add own contact models.

However, I am not sure how to address a particular CELMT#-routine. For example, when I want to address a
user-element, I can write something like this in the mesh section of the input-file:

Code: [Select]
MATErial 1
  USER,02

and in the FEAP program-window it is displayed:

Code: [Select]
Elmt 2: *WARNING* Dummy subroutine called.
This means, the ELMT02-routine is called.

In contrast, I added an output-line:

Code: [Select]
write(*,*) 'hello world celmt01'

to the file celmt01.f and another line:

Code: [Select]
write(*,*) 'hello world celmt02'

to the file celmt02.f.
Then I tried to call celmt02 by stating this in the contact part of the input-file:

Code: [Select]
CONTact

SURFace 1
  QUADrilateral
  BLOCK SEGMent
  1 0. 0. h1
  2 0. b h1
  3 l b h1
  4 l 0. h1

SURFace 2
  QUADrilateral
  BLOCK SEGMent
  1 0. 0. h
  2 l 0. h
  3 l b h
  4 0. b h

MATE 1
  USER,02

PAIR 1
  NTOS 1 2
  SOLM LAGM 2e9
  MATE, ,1

END contact

The output in the FEAP program-window is then

Code: [Select]
hello world celmt01
hello world celmt02
hello world celmt01
hello world celmt02

which means that every CELMT# routine is called, but not the particular one I want (i.e. CELMT02).

Any idea on how to address a particular CELMT#-routine from the input-file is highly appreciated!
Many thanks in advance!

Best regards
« Last Edit: September 21, 2015, 05:02:27 AM by fheinrich »

fheinrich

  • Jr. Member
  • **
  • Posts: 27
Re: Question: Implementation of a user contact material model
« Reply #4 on: September 21, 2015, 06:06:24 AM »
[Partially solved]

Dear all,

I just figured out how to address the CELM#-routines. The routines can be called
by adding an option

Code: [Select]
PAIR 1
  CEL2

to the "PAIR" command. This is briefly described in table 1.1 "COMMAND Options"
in the Contact Manual of Ver 8.2.

Best regards

Prof. R.L. Taylor

  • Administrator
  • FEAP Guru
  • *****
  • Posts: 2649
Re: Question: Implementation of a user contact material model
« Reply #5 on: September 22, 2015, 12:19:00 PM »
Sorry for delay, you figured out the first part.  What remains to be answered for your questions?

fheinrich

  • Jr. Member
  • **
  • Posts: 27
Re: Question: Implementation of a user contact material model
« Reply #6 on: September 24, 2015, 05:32:24 AM »
Dear Professor,

many thanks for your answer.

As I stated in my last post, I now know where to implement an own contact-model. I currently
implement such a model but further questions related to this have more a physical background,
not so much a programming background (and would therefore be a bit off-topic in this thread).

I leave this thread open in case other questions occur during the implementation process and to
give a short feedback in a few weeks - after I have managed to implement an on algorithm.

Best regards