Welcome to the forums. Please post in English or French.

You are not logged in.

#1 2010-12-15 09:42:50

todd_alan_martin
Member
Registered: 2008-03-06
Posts: 131

How to model contact between a laminate, a solid, and a rigid surface?

Hi

I am trying to find a test case where a 3D solid is pressed against a rigid surface. What key words should I look for, apart from DEFI_CONTACT and STAT_NON_LINEAR.

Should I just set MODELISATION = 3D and use IMPO_FACE to fix all degrees of freedom on the surface? I know I have seen an example of this somewhere, but can't find it.

Thanks,
Todd

Last edited by todd_alan_martin (2011-02-08 23:42:31)

Offline

#2 2010-12-15 22:49:53

Claws
Member
From: Denmark
Registered: 2009-03-23
Posts: 375

Re: How to model contact between a laminate, a solid, and a rigid surface?

Why not have a go at 'contact' wink

In the meantime there's an example here http://www.code-aster.org/forum2/viewtopic.php?id=14528

Regards,

Claus


Opensuse 15
http://www.caelinux.org/wiki/index.php/Contrib:Claws/Code_Aster

Offline

#3 2010-12-16 11:25:20

Archibald Archambaud
Member
From: Clamart, France
Registered: 2007-12-03
Posts: 322

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi Todd.

In my view, the best practice is to model the rigid surface with surface elements, which are assigned a "3D" model (note that you will get a warning "some elements do not have stiffness"). Then, you must block their dof to the desired values (0, if the rigid surface does not move) ; this is economically done with the AFFE_CHAR_CINE command (it uses an elimination procedure rather than a dualization procedure).
You must take care to the orientation of the rigid surface ; it can be oriented with the ORIE_PEAU_3D.

Let us know about your progress.

AA

Offline

#4 2010-12-16 23:39:25

todd_alan_martin
Member
Registered: 2008-03-06
Posts: 131

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi Archibald

I have run out of time to test this before Christmas, but I will try your suggestion and let you know the outcome.

Thanks,
Todd.

Offline

#5 2011-01-07 07:29:57

todd_alan_martin
Member
Registered: 2008-03-06
Posts: 131

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi Archibald

I have attempted to run a model of a steel cylindrical shell connected to an aluminium solid spherical base pressed against a rigid curved surface, but I'm getting a strange error.

 
   !-----------------------------------------------------------------------------------------------------!
   ! <EXCEPTION> <JEVEUX1_13>                                                                            !
   !                                                                                                     !
   ! Le répertoire de noms &CATA.TM.NOMTM          $$XNUM contient 54 points d'entrée, la requête JENUNO !
   !  sur le numéro 2305843009213693952 est invalide.                                                    !
   !-----------------------------------------------------------------------------------------------------!
   

   Destruction du concept 'mesh'.
JDC.py : ERREUR INOPINEE - INTERRUPTION

The model is attached. Can anyone see the problem? Am I trying to do something too tricky by using LIAISON_MAIL with STAT_NON_LINEAR?

Last edited by todd_alan_martin (2011-01-07 07:30:21)


Attachments:
contact_example.tar.gz, Size: 83.48 KiB, Downloads: 448

Offline

#6 2011-01-07 11:43:06

Claws
Member
From: Denmark
Registered: 2009-03-23
Posts: 375

Re: How to model contact between a laminate, a solid, and a rigid surface?

Quickly glancing over the .mess file, I can see that you have orphan nodes - see if you can remove those before continuing - those can wreak havoc.
Removing the GROUP_MA_VOL from MODI_MAIL* lets the calculation run a little further, but stat_non_line has problems with applying the selected modelizations.

First: when using affe_modele, I usually start with 3D->TOUT and then subsequently applying POUTRE and/or DIS_TR (to use you example) - that ensures that all elements are affected by a 3D model, and the other groups you've selected to be modelized by e.g. POUTRE will be overwritten with that model. That leaves no elements un-modelized and debugging easier. IMO.

Second - are you entirely sure that all the modelizations are supported by COMP_ELAS in stat_non_line? COMP_ELAS is not the same as using COMP_INCR with RELATION=ELAS.

Regards,

Claus


Opensuse 15
http://www.caelinux.org/wiki/index.php/Contrib:Claws/Code_Aster

Offline

#7 2011-01-07 17:44:21

Thomas DE SOZA
Guru
From: EDF
Registered: 2007-11-23
Posts: 3,066

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi,

Thanks for the feedback. We'll try to fix this so that the user message is more friendly. In the meantime removing the GROUP_MA_VOLU should be the good solution since you likely don't need it as Claws points out.
Regarding the subsequent error (after removal of the GROUP_MA_VOLU keyword), you should create a point element with CREA_MAILLAGE/CREA_POI1 for applying the discrete element 'Pin'.

TdS

Offline

#8 2011-01-08 01:46:49

todd_alan_martin
Member
Registered: 2008-03-06
Posts: 131

Re: How to model contact between a laminate, a solid, and a rigid surface?

Thanks for the prompt reply guys.

Thomas, the model runs ok without creating a discrete element at point "Pin" for a linear static analysis MECA_STATIQUE. Why doesn't it work for the non-linear case?
Frankly, I find it strange that the DIS_TR modelisation is needed at all. The pin point is only used for applying a constraint.

I will try again with your recommened changes.

Todd.

Offline

#9 2011-01-08 17:38:55

Thomas DE SOZA
Guru
From: EDF
Registered: 2007-11-23
Posts: 3,066

Re: How to model contact between a laminate, a solid, and a rigid surface?

todd_alan_martin wrote:

Thomas, the model runs ok without creating a discrete element at point "Pin" for a linear static analysis MECA_STATIQUE. Why doesn't it work for the non-linear case?

This is indeed one of the non standard behavior of Code_Aster : it is OK to apply a discrete modelization on a GROUP_NO for a linear case (MECA_STATIQUE) but not for a non-linear case (STAT_NON_LINE). It is likely that in the future only the possibility to use a GROUP_NO will be removed and only the GROUP_MA will remain.
One can think of this as cumbersome but you have to remember that generally a FEM model as implied by its name applies to elements (GROUP_MA) not to nodes (GROUP_NO) and making an exception in a code often leads to complications.

TdS

Offline

#10 2011-01-10 01:25:34

todd_alan_martin
Member
Registered: 2008-03-06
Posts: 131

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi Thomas

I agree that creating exceptions causes problems and should be avoided.

In this case, the "Pin" node is connected to the cylindrical shell via LIAISON_SOLID. In Nastran this is achieved using a rigid element, so that the central node is not actually an orphan. Applying the same login (that a rigid connection is an element type) in code-aster would satisfy the condition that there must be no free nodes in the model, without having to introduce any ficticious discrete elements.

Or, perhaps LIAISON_SOLID should iterate through its node list and automatically create a discrete element for each free node, if that works better?

Todd.

Thomas DE SOZA wrote:
todd_alan_martin wrote:

Thomas, the model runs ok without creating a discrete element at point "Pin" for a linear static analysis MECA_STATIQUE. Why doesn't it work for the non-linear case?

This is indeed one of the non standard behavior of Code_Aster : it is OK to apply a discrete modelization on a GROUP_NO for a linear case (MECA_STATIQUE) but not for a non-linear case (STAT_NON_LINE). It is likely that in the future only the possibility to use a GROUP_NO will be removed and only the GROUP_MA will remain.
One can think of this as cumbersome but you have to remember that generally a FEM model as implied by its name applies to elements (GROUP_MA) not to nodes (GROUP_NO) and making an exception in a code often leads to complications.

TdS

Last edited by todd_alan_martin (2011-01-10 03:41:05)

Offline

#11 2011-01-10 08:59:35

todd_alan_martin
Member
Registered: 2008-03-06
Posts: 131

Re: How to model contact between a laminate, a solid, and a rigid surface?

I re-ran the model with the suggested changes, but now I'm getting another error. Am I supposed to assign plate characteristics to the rigid surface?
Harking back to my original question, does anyone have an EXAMPLE of how to model contact between a solid and a rigid surface?

!-------------------------------------------------------------------------------------!
   ! <A> <CALCULEL2_63>                                                                  !
   !                                                                                     !
   ! -> La maille M2 porte un élément fini de bord, mais elle ne borde                   !
   !      aucun élément ayant une "rigidité".                                            !
   !                                                                                     !
   !   -> Risque & Conseil :                                                             !
   !      Cela peut entrainer des problèmes de "pivot nul" lors de la résolution.        !
   !      Si la résolution des systèmes linéaires ne pose pas de problèmes, vous         !
   !      pouvez ignorer ce message.                                                     !
   !      Sinon, vérifier la définition du modèle (AFFE_MODELE) en évitant l'utilisation !
   !      de l'opérande TOUT='OUI'.                                                      !
   !                                                                                     !
   !                                                                                     !
   ! Ceci est une alarme. Si vous ne comprenez pas le sens de cette                      !
   ! alarme, vous pouvez obtenir des résultats inattendus !                              !
   !-------------------------------------------------------------------------------------!

The model etc is attached.


Attachments:
contact_example.tar.gz, Size: 90.03 KiB, Downloads: 400

Offline

#12 2011-01-10 13:46:04

Thomas DE SOZA
Guru
From: EDF
Registered: 2007-11-23
Posts: 3,066

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi,

When modelling a rigid surface using only its border, it is perfectly normal to encounter an alarm in AFFE_MODELE. Indeed a border element does not carry any stiffness (it can only be used to apply loads such as a pressure), so it will likely yield a singular global stiffness matrix. But this does not happen if we make sure that every dofs supported by this border is constrained : this is all the beauty of the approach, that is reducing the number of dofs and modelling only what is necessary.

To have an example, look at test SSNV506, case F.

TdS

Offline

#13 2011-01-11 03:10:03

todd_alan_martin
Member
Registered: 2008-03-06
Posts: 131

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi Thomas

Thomas DE SOZA wrote:

When modelling a rigid surface using only its border, it is perfectly normal to encounter an alarm in AFFE_MODELE. Indeed a border element does not carry any stiffness (it can only be used to apply loads such as a pressure), so it will likely yield a singular global stiffness matrix. But this does not happen if we make sure that every dofs supported by this border is constrained : this is all the beauty of the approach, that is reducing the number of dofs and modelling only what is necessary.

In fact I am modelling the rigid solid using only part of its surface, which has DX=0,DY=0,DZ=0, so it seems I can ignore the warning.

However, now I see this error.

<EXCEPTION> <CALCULEL_30>                                                                                 !
   !                                                                                                           !
   ! Erreur utilisateur :                                                                                      !
   !   -> Le TYPE_ELEMENT MEDSQU4  ne sait pas encore calculer l'OPTION:  RIGI_MECA_TANG.                      !
   !                                                                                                           !
   !   -> Risques & Conseils :                                                                                 !
   !    * Si vous utilisez une commande de "calcul" (THER_LINEAIRE, STAT_NON_LINE, ...), il n'y a pas          !
   !      moyen de contourner ce problème.Il faut changer de modélisation ou  émettre une demande d'évolution. !
   !                                                                                                           !
   !    * Si c'est un calcul de post-traitement, vous pouvez sans doute "éviter" le problème                   !
   !      en ne faisant le post-traitement que sur les mailles qui savent le faire.                            !
   !      Pour cela, il faut sans doute utiliser un mot clé de type "GROUP_MA".                                !
   !      S'il n'y en a pas, il faut faire une demande d'évolution.           
   

I seem to recall seeing this error when trying to solve a buckling problem with DKT/DST elements. I assume this means code-aster cannot solve a contact problem involving DKT/DST elements.

Last edited by todd_alan_martin (2011-01-11 09:42:10)

Offline

#14 2011-01-13 12:56:28

Johannes_ACKVA
Member
From: Ingenieurbüro für Mechanik, DE
Registered: 2009-11-04
Posts: 753
Website

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi Todd,
this works, I only eliminated the laminate Material.
Regards, Johannes Ackva

DEBUT();

mesh_pre=LIRE_MAILLAGE(UNITE=20,
                       FORMAT='MED',);

IMPR_RESU(RESU=_F(MAILLAGE=mesh_pre,),);

mesh_pre=MODI_MAILLAGE(reuse =mesh_pre,
                       MAILLAGE=mesh_pre,
                       ORIE_PEAU_3D=_F(GROUP_MA=('Base','Slave',),),);

mesh=CREA_MAILLAGE(MAILLAGE=mesh_pre,
                   CREA_POI1=_F(NOM_GROUP_MA='MPOINT',
                                GROUP_NO='Pin',),);

model=AFFE_MODELE(MAILLAGE=mesh,
                  AFFE=(_F(GROUP_MA='Shell',
                           PHENOMENE='MECANIQUE',
                           MODELISATION='DKT',),
                        _F(GROUP_MA='MPOINT',
                           PHENOMENE='MECANIQUE',
                           MODELISATION='DIS_TR',),
                        _F(GROUP_MA=('Nib','Slave','Weld','Base',),
                           PHENOMENE='MECANIQUE',
                           MODELISATION='3D',),),);

aluminum=DEFI_MATERIAU(ELAS=_F(E=75000,
                               NU=0.33,),);

steel=DEFI_MATERIAU(ELAS_ORTH=_F(E_L=210000.0,
                                 E_T=210000.0,
                                 NU_LT=0.3,
                                 G_LT=80769.2,),);

isotrop=DEFI_MATERIAU(ELAS=_F(E=210000,
                              NU=0.3,),);

laminate=DEFI_COQU_MULT(COUCHE=_F(EPAIS=10.0,
                                  MATER=steel,),);

mats=AFFE_MATERIAU(MAILLAGE=mesh,
                   MODELE=model,
                   AFFE=(_F(GROUP_MA='Nib',
                            MATER=aluminum,),
                         _F(GROUP_MA='Shell',
                            MATER=aluminum,),),);

# caracteristics for a free bodz

props=AFFE_CARA_ELEM(MODELE=model,
                     COQUE=_F(GROUP_MA='Shell',
                              EPAIS=10,
                              VECTEUR=(0.,1.,0.,),
                              COQUE_NCOU=1,
                              EXCENTREMENT=0,
                              INER_ROTA='OUI',),
                     DISCRET=_F(CARA='M_TR_D_N',
                                GROUP_MA='MPOINT',
                                VALE=(0,0,0,0,0,0,0,0,0,0,),),);

# caracteristics for a elastically supported body

props2=AFFE_CARA_ELEM(MODELE=model,
                      COQUE=_F(GROUP_MA='Shell',
                               EPAIS=10,
                               VECTEUR=(0.,1.,0.,),
                               COQUE_NCOU=1,
                               EXCENTREMENT=0,
                               INER_ROTA='OUI',),
                      DISCRET=_F(CARA='K_TR_D_N',
                                 GROUP_MA='MPOINT',
                                 VALE=(100,100,100,100,100,100,),),);

bcs=AFFE_CHAR_MECA(MODELE=model,
                   DDL_IMPO=_F(GROUP_NO='Pin',
                               DX=0,
                               DY=0,
                               DRX=0,
                               DRY=0,
                               DRZ=0,),
                   LIAISON_MAIL=_F(GROUP_MA_MAIT='Shell',
                                   GROUP_MA_ESCL='Weld',
                                   TYPE_RACCORD='MASSIF_COQUE',),
                   LIAISON_SOLIDE=_F(GROUP_NO=('Bulkhead','Pin',),),);

load=AFFE_CHAR_MECA(MODELE=model,
                    FORCE_NODALE=_F(GROUP_NO='Bulkhead',
                                    FZ=-10,),);

fixed=AFFE_CHAR_CINE(MODELE=model,
                     MECA_IMPO=_F(GROUP_MA='Base',
                                  DX=0,
                                  DY=0,
                                  DZ=0,),);

contact2=DEFI_CONTACT(MODELE=model,
                      FORMULATION='DISCRETE',
                      ZONE=_F(GROUP_MA_MAIT='Base',
                              GROUP_MA_ESCL='Slave',
                              ALGO_CONT='CONTRAINTE',),);

contact=DEFI_CONTACT(MODELE=model,
                     FORMULATION='CONTINUE',
                     ZONE=_F(GROUP_MA_MAIT='Base',
                             GROUP_MA_ESCL='Slave',
                             CONTACT_INIT='OUI',),);

ListIncr=DEFI_LIST_REEL(DEBUT=0,
                        INTERVALLE=_F(JUSQU_A=1,
                                      NOMBRE=10,),);

func=DEFI_FONCTION(NOM_PARA='INST',VALE=(0.0,0.0,
                         1.0,1.0,
                         ),PROL_DROITE='CONSTANT',PROL_GAUCHE='CONSTANT',);

sol2=STAT_NON_LINE(MODELE=model,
                   CHAM_MATER=mats,
                   CARA_ELEM=props2,
                   EXCIT=(_F(CHARGE=bcs,),
                          _F(CHARGE=fixed,),
                          _F(CHARGE=load,
                             FONC_MULT=func,),),
                   CONTACT=contact2,
                   COMP_INCR=_F(RELATION='ELAS',),
                   INCREMENT=_F(LIST_INST=ListIncr,),);

sol=STAT_NON_LINE(MODELE=model,
                  CHAM_MATER=mats,
                  CARA_ELEM=props,
                  EXCIT=(_F(CHARGE=bcs,),
                         _F(CHARGE=fixed,),
                         _F(CHARGE=load,
                            FONC_MULT=func,),),
                  CONTACT=contact,
                  COMP_INCR=_F(RELATION='ELAS',),
                  INCREMENT=_F(LIST_INST=ListIncr,),);

IMPR_RESU(FORMAT='MED',
          RESU=_F(RESULTAT=sol2,),);

IMPR_RESU(FORMAT='MED',
          RESU=_F(RESULTAT=sol,),);

FIN();


Ingenieurbüro für Mechanik
D 91717 Wassertrüdingen / Germany

www.code-aster.de                                                Training & Support for NASTRAN and CODE-ASTER

Offline

#15 2011-01-14 04:07:35

todd_alan_martin
Member
Registered: 2008-03-06
Posts: 131

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi Johannes

Thanks, but I included the laminate for a reason. This is a simplified test case. My real model uses a laminated plate. So, it seems code-aster cannot solve it.

Offline

#16 2011-01-14 08:29:56

Johannes_ACKVA
Member
From: Ingenieurbüro für Mechanik, DE
Registered: 2009-11-04
Posts: 753
Website

Re: How to model contact between a laminate, a solid, and a rigid surface?

I think You are not right !!! I just didn't try to include the laminate, because You always focused on the problem of rigid contact, never spoke about a laminate problem.

Regards Johannes Ackva


Ingenieurbüro für Mechanik
D 91717 Wassertrüdingen / Germany

www.code-aster.de                                                Training & Support for NASTRAN and CODE-ASTER

Offline

#17 2011-01-14 09:11:20

Thomas DE SOZA
Guru
From: EDF
Registered: 2007-11-23
Posts: 3,066

Re: How to model contact between a laminate, a solid, and a rigid surface?

todd_alan_martin wrote:

However, now I see this error.

<EXCEPTION> <CALCULEL_30>                                                                                 !
   !                                                                                                           !
   ! Erreur utilisateur :                                                                                      !
   !   -> Le TYPE_ELEMENT MEDSQU4  ne sait pas encore calculer l'OPTION:  RIGI_MECA_TANG.                      !
   !                                                                                                           !
   !   -> Risques & Conseils :                                                                                 !
   !    * Si vous utilisez une commande de "calcul" (THER_LINEAIRE, STAT_NON_LINE, ...), il n'y a pas          !
   !      moyen de contourner ce problème.Il faut changer de modélisation ou  émettre une demande d'évolution. !
   !                                                                                                           !
   !    * Si c'est un calcul de post-traitement, vous pouvez sans doute "éviter" le problème                   !
   !      en ne faisant le post-traitement que sur les mailles qui savent le faire.                            !
   !      Pour cela, il faut sans doute utiliser un mot clé de type "GROUP_MA".                                !
   !      S'il n'y en a pas, il faut faire une demande d'évolution.

In fact the DST element in Code_Aster only supports linear studies (e.g. MECA_STATIQUE). Supported plate/shells models for non-linear studies include DKT and COQUE_3D.

TdS

Offline

#18 2011-01-16 02:38:00

todd_alan_martin
Member
Registered: 2008-03-06
Posts: 131

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi Thomas

I changed the modelisation to DKT and COMP_ELAS to COMP_INCR, but now I am getting an obscure error. Can you shed some light on this please?
The updated model is attached.

INSTANT DE CALCUL :  1.000000000E-01

------------------------------------------------------------------------------------------------------------------------
|     CONTACT    |     CONTACT    |     CONTACT    |   ITERATIONS   |     RESIDU     |     RESIDU     |     OPTION     |
|                |    CONTINU     |    CONTINU     |     NEWTON     |     RELATIF    |     ABSOLU     |   ASSEMBLAGE   |
|   ITER. GEOM.  |   ITER. CONT.  | BCL. MAX. VAL. |                | RESI_GLOB_RELA | RESI_GLOB_MAXI |                |
------------------------------------------------------------------------------------------------------------------------
   
   !-------------------------------------!
   ! <EXCEPTION> <ALGORITH6_88>          !
   !                                     !
   ! erreur dans le type de comportement !
   !-------------------------------------!
   

   Validation du concept 'sol'.

   !-----------------------------------------------------------------------!
   !   Liste des alarmes émises lors de l'exécution du calcul.             !
   !                                                                       !
   !   Les alarmes que vous avez choisies d'ignorer sont précédées de (*). !
   !   Nombre d'occurrences pour chacune des alarmes :                     !
   !          CALCULEL2_63         émise 2180 fois                         !
   !          MODELISA4_6          émise    1 fois                         !
   !-----------------------------------------------------------------------!

Last edited by todd_alan_martin (2011-01-16 02:41:17)


Attachments:
contact_example.tar.gz, Size: 89.67 KiB, Downloads: 348

Offline

#19 2011-02-07 17:53:20

Thomas DE SOZA
Guru
From: EDF
Registered: 2007-11-23
Posts: 3,066

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi,

Late answer : I'm afraid multi-layer shells (DEFI_COQU_MULT) are only supported in linear studies (that is in MECA_STATIQUE but not in STAT_NON_LINE) hence the error.

TdS

Offline

#20 2011-02-08 23:03:52

todd_alan_martin
Member
Registered: 2008-03-06
Posts: 131

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi Thomas

Thomas DE SOZA wrote:

Late answer : I'm afraid multi-layer shells (DEFI_COQU_MULT) are only supported in linear studies (that is in MECA_STATIQUE but not in STAT_NON_LINE) hence the error.

This is absurd.

Johannes has already demonstrated that the model solves for DKT elements. Surely DEFI_COQU_MULT simply creates the stiffness matrices for a homogeneous plate. It cannot be a huge jump to fill in the missing link.

At least a contact solution should be available for small elastic strains.
COMP_ELAS=_F(RELATION='ELAS',
                               DEFORMATION='PETIT',),

Where should I look to find the fortran file that is generating this error?

Last edited by todd_alan_martin (2011-02-08 23:47:42)

Offline

#21 2011-02-09 09:51:48

Thomas DE SOZA
Guru
From: EDF
Registered: 2007-11-23
Posts: 3,066

Re: How to model contact between a laminate, a solid, and a rigid surface?

todd_alan_martin wrote:

Surely DEFI_COQU_MULT simply creates the stiffness matrices for a homogeneous plate. It cannot be a huge jump to fill in the missing link.

You may be very right but nonetheless it was never developed. The need for composites in non-linear studies has never emerged at EDF (for now).

TdS

Offline

#22 2011-02-21 00:56:21

todd_alan_martin
Member
Registered: 2008-03-06
Posts: 131

Re: How to model contact between a laminate, a solid, and a rigid surface?

Hi Thomas

I really need to solve this. What's the best way to locate the root of the problem? Should I search the code for this error?

Erreur utilisateur :                                                                                      !
   !   -> Le TYPE_ELEMENT MEDSQU4  ne sait pas encore calculer l'OPTION:  RIGI_MECA_TANG.

Is there a system for naming of the fortran files, that would help me pinpoint the missing algorithm?

Todd.

Offline