×

Notice

The forum is in read only mode.

Mehrere Teilkörper, Kontakt und Kraftrandbedingung

  • Tobias Vonstein
  • Tobias Vonstein's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
11 years 6 months ago #6931 by Tobias Vonstein
Hallo Zusammen,

dies ist mein erster Beitrag hier im Forum. Ich bin derzeit noch ein CodeAster-Neuling, der allerdings total begeistert ist. Die Möglichkeiten sind meiner Meinung nach für eine freie Software unglaublich! Was die FEM angeht habe ich schon ein paar Jahre Erfahrung mit ABAQUS. Nun aber zu meinem eigentlichen Problem.

Ich möchte ein Modell von einem Flansch erstellen. Er besteht aus drei Bauteilen, zwei Flanschhälften und einer Dichtung. Die Schraubenkräfte sollen (vorerst) als konstanter Druck über die Schraubenauflagefläche modelliert werden. Um Gleichungen zu sparen möchte ich die zyklische Symmetrie nutzen. Leider habe ich Probleme damit einen gezippten Ordner mit allen Files anzuhängen. Das Feld bei Attachments bleibt immer leer! Hat jemand einen Tip? Deswegen Poste ich das *.comm direkt unten im Text.

Nun zu meinem eigentlichen Problem. Wenn ich Verschiebungsrandbedingungen aufgebe läuft alles wunderbar! Sobald ich jedoch Kraftrandbedingungen (Druck auf Schraubenauflagefläche) aufgebe, bricht der Solver mit einem Error ab. Als Fehlermeldung weist der Solver mich auf eine Singularität in gerade die Richtung hin, in die die Kraft wirkt. Ich habe jetzt irgendwann in meiner ABAQUS-Zeit mal gelernt, dass das ein Zeichen dafür ist, dass der Kontakt nicht konvergiert. Bei ABAQUS habe ich mir dann immer so geholfen, dass ich in einem ersten Step mit einer Verschiebungsrandbedingung den Kontakt initialisiert habe. Im zweiten Step habe ich dann die Verschiebungsrandbedingung wieder entfernt und die Kraft aufgegeben. Das habe ich jetzt auch mal bei CodeAster probiert (siehe COMM-File). Ich definiere zwei STAT_NON_LINE. Aber das Problem besteht weiterhin! Ich habe mir jetzt schon einiges selbst beigebracht und dabei hier und in den verschiedenen anderen Foren gelesen. Aber bei diesem Fehler komme ich einfach nicht weiter! Hat jemand eine Idee, was ich falsch gemacht habe? Ich habe den Verdacht, dass sich die Kontaktfläche zwar im ersten STEP initialisiert, dann aber nicht in den zweiten STEP übertragen wird! Für Hilfe bin ich sehr dankbar!

Viele Grüße Tobi
DEBUT();

# Definition des Materialgesetzes
#      Einheitensystem Meter Elastizitaetsmodul E=2.1e11 (N/m²)
#                            Querkontraktionszahl NU=0.3 
MA = DEFI_MATERIAU(ELAS=_F(E=2.1e11,
                           NU=0.3,),);

# Importieren der Einzelkoerper (Netze) als *.med
#      Die Netze wurden vorher in Salome Meca erstellt
#      Die Zuordnung der Datei erfolgt über die in ASTK eingetragene LU-Nummer
#      sie entspricht der Variable UNITE
flanschA = LIRE_MAILLAGE(UNITE=20,
                         FORMAT='MED',);
flanschB = LIRE_MAILLAGE(UNITE=21,
                         FORMAT='MED',);
dichtung = LIRE_MAILLAGE(UNITE=22,
                         FORMAT='MED',);

# Zusammenbau der Einzelkoerper
#      Die Voraussetzung ist, dass die Einzelkoerper richtig im globalen
#      Koordinatensystem angeordnet sind.
#      Die Bedeutung des KEYWORDS SUPERPOSE muss noch geklaert werden.
#      Bei mehr als zwei Bauteilen wird der Befehl in anderen Beispielen
#      mehrfach ausgefuert!?
tmp = ASSE_MAILLAGE(MAILLAGE_1=flanschA,
                    MAILLAGE_2=dichtung,
                    OPERATION='SUPERPOSE',);
BGruppe = ASSE_MAILLAGE(MAILLAGE_1=tmp,
                        MAILLAGE_2=flanschB,
                        OPERATION='SUPERPOSE',);

# Auswahl der physikalischen Problemstellung / Erstellen eines Modells
#      Entspricht ungefaer der Step-Definition in ABAQUS
#      Die Freiheitsgrade und der Modellierungsraum werden festgelegt
#      In diesem Beispiel mechanisch und dreidimensional
#      Evtl. ist dieser Zwischenschritt unnoetig
mod=AFFE_MODELE(MAILLAGE=BGruppe,
                AFFE=_F(TOUT='OUI',
                        PHENOMENE='MECANIQUE',
                        MODELISATION='3D',),);

# Ausrichten der Normalenvektoren der einzelnen Flaechen
#      Betrifft die Flaechengruppen fuer Randbedingungen und Kontakt
BGruppe=MODI_MAILLAGE(reuse =BGruppe,
                    MAILLAGE=BGruppe,
                    ORIE_PEAU_3D=_F
                    (GROUP_MA=('schrA','symm0A','kontA','innendA','symmFA','kontB','innendB','symmFB',
                               'symm0B','schrB','DkontA','DkontB','Dsymm0','DsymmF','Dinnend','LagerZ',),),);

# Zuweisen des Materialgesetzes zum Netz
MATE=AFFE_MATERIAU(MAILLAGE=BGruppe,
                   AFFE=_F(TOUT='OUI',
                           MATER=MA,),);


# Festlegen der Randbedingungen 

#   Definition einer linearen Interpolationsfunktion für das kontinuierliche
#   Hochfahren der Last
LoadRamp=DEFI_FONCTION(NOM_PARA='INST', VALE=(0,0,2,2,),
                       PROL_DROITE='LINEAIRE',
                       PROL_GAUCHE='LINEAIRE',);

#   Festlegen der konstanten Randbedingungen am Boden des unteren Blockes
#   DDD_IMPO entspricht Verschiebungsrandbedingung
CHAR=AFFE_CHAR_MECA(MODELE=mod,
                    DDL_IMPO=(_F(GROUP_MA='symm0A',
                                 DX=0.0,),
                              _F(GROUP_MA='symm0B',
                                 DX=0.0,),
                              _F(GROUP_MA='Dsymm0',
                                 DX=0.0,),
                              _F(GROUP_MA='innendA',
                                 DY=0.0,),
                              _F(GROUP_MA='innendB',
                                 DY=0.0,),
                              _F(GROUP_MA='Dinnend',
                                 DY=0.0,
                                 DZ=0.0,),
                              _F(GROUP_MA='schrB',
                                 DZ=0.0,),
                              _F(GROUP_MA='schrA',
                                 DZ=-3e-5,),
),);

#   Festlegen der von der Interpolationsfunktion abhaengigen Randbedingungen
#   am Deckel des oberen Blocks, PRES_REP ist Druckrandbedingung
CHAR2=AFFE_CHAR_MECA(MODELE=mod,
                     DDL_IMPO=(_F(GROUP_MA='symm0A',
                                  DX=0.0,),
                               _F(GROUP_MA='symm0B',
                                  DX=0.0,),
                               _F(GROUP_MA='Dsymm0',
                                  DX=0.0,),
                               _F(GROUP_MA='innendA',
                                  DY=0.0,),
                               _F(GROUP_MA='innendB',
                                  DY=0.0,),
                               _F(GROUP_MA='Dinnend',
                                  DY=0.0,
                                  DZ=0.0,),
                               _F(GROUP_MA='schrB',
                                  DZ=0.0,),),
                      PRES_REP=_F(GROUP_MA='schrA',
                                  PRES=1e5,),
);

#   Kontaktdefinition
contact=DEFI_CONTACT(MODELE=mod,
                          FORMULATION='CONTINUE',
                          ALGO_RESO_CONT='POINT_FIXE',
                          ALGO_RESO_GEOM='POINT_FIXE',
                          ITER_GEOM_MAXI=4,
                          ITER_CONT_MAXI=30,
                          LISSAGE='NON',
                          INFO=2,
                          ZONE=(_F(GROUP_MA_MAIT='DkontA',
       		                   GROUP_MA_ESCL='kontA',
                                   ALGO_CONT='PENALISATION',
                                   COEF_PENA_CONT=100.,
                                   CONTACT_INIT='INTERPENETRE',
                                   INTEGRATION='AUTO',
),
                                _F(GROUP_MA_MAIT='DkontB',
       		                   GROUP_MA_ESCL='kontB',
                                   ALGO_CONT='PENALISATION',
                                   COEF_PENA_CONT=100.,
                                   CONTACT_INIT='INTERPENETRE',
                                   INTEGRATION='AUTO',
),
),);



# Festlegen der Simulationsdauer (JUSQU_A) regulaeren Zeitschritte (PAS)
ListReel=DEFI_LIST_REEL(DEBUT=0,
                        INTERVALLE=_F(JUSQU_A=2,
                                      PAS=1,),);

# Modifikationsschema der Zeitschritte fuer den Fall, dass die Rechnung nicht konvergiert
#ListInst=DEFI_LIST_INST(DEFI_LIST=_F(METHODE='MANUEL',
#                                     LIST_INST=ListReel,),
#                        ECHEC=_F(EVENEMENT='ERREUR',
#                                 SUBD_PAS=5,
#                                 SUBD_NIVEAU=4,
#                                 SUBD_METHODE='UNIFORME',),);


# Definition der Parameter fuer den nichtlinearen Solver
RESU=STAT_NON_LINE(MODELE=mod,
                   CHAM_MATER=MATE,
                   EXCIT=_F(CHARGE=CHAR, FONC_MULT=LoadRamp),
                   CONTACT=contact,
                   COMP_INCR=_F(RELATION='ELAS',),
                   INCREMENT=_F(LIST_INST=ListReel,
                                INST_FIN=1.0),
                   NEWTON=_F(MATRICE='ELASTIQUE',
                             REAC_ITER=1,),
                   CONVERGENCE=_F(RESI_GLOB_MAXI=1e-4,
                                  ITER_GLOB_MAXI=30,),);

RESU=STAT_NON_LINE(reuse=RESU,
                   ETAT_INIT=_F(EVOL_NOLI=RESU,
                                INST=1.0,),
                   MODELE=mod,
                   CHAM_MATER=MATE,
                   EXCIT=_F(CHARGE=CHAR2, FONC_MULT=LoadRamp),
                   CONTACT=contact,
                   COMP_INCR=_F(RELATION='ELAS',),
                   INCREMENT=_F(LIST_INST=ListReel,
                                INST_INIT=1.0,
                                INST_FIN=2.0),
                   NEWTON=_F(MATRICE='ELASTIQUE',
                             REAC_ITER=1,),
                   CONVERGENCE=_F(RESI_GLOB_MAXI=1e-4,
                                  ITER_GLOB_MAXI=30,),);

# Berechnen der Spannungen in den Elementen
RESU=CALC_CHAMP(reuse =RESU,
               MODELE=mod,
               CHAM_MATER=MATE,
               RESULTAT=RESU,
               CRITERES=('SIEQ_ELNO'),
               EXCIT=(
               _F(CHARGE=CHAR,),
               _F(CHARGE=CHAR2,),),);

# Berechnen der Spannungen in den Knoten
#RESU=CALC_NO(reuse =RESU,
#             RESULTAT=RESU,
#             OPTION=('SIEF_NOEU', 'SIEQ_NOEU',),);

# Ausgabe des Ergebnisse in Mesh-File (*.resu.med)
# Pro Einzelkoerper eine Datei
# Zuordnung zu ASTK über UNITE, wie beim Einlesen der Netze
IMPR_RESU(FORMAT='MED',
          RESTREINT=_F(GROUP_MA='volA',),
          RESU=_F(MAILLAGE=flanschA,
                  RESULTAT=RESU,
                  NOM_CHAM=('SIEF_NOEU','SIEQ_NOEU','DEPL',),),);

IMPR_RESU(FORMAT='MED',
          UNITE=81,
          RESTREINT=_F(GROUP_MA='volB',),
          RESU=_F(MAILLAGE=flanschB,
                  RESULTAT=RESU,
                  NOM_CHAM=('SIEF_NOEU','SIEQ_NOEU','DEPL',),),);

IMPR_RESU(FORMAT='MED',
          UNITE=82,
          RESTREINT=_F(GROUP_MA='volD',),
          RESU=_F(MAILLAGE=dichtung,
                  RESULTAT=RESU,
                  NOM_CHAM=('SIEF_NOEU','SIEQ_NOEU','DEPL',),),);




FIN();

Salome Meca 2013.1, Code Aster 11.3, Ubuntu 12.04
More
11 years 6 months ago #6934 by MGolbs
Hallo Tobi,

ich kenne mich mit Kontakt in CA auch noch nicht so aus (nutze es noch nicht wirlich aktiv), wichtig ist aber die *.mess Datei bzw. die im ./flasheur für die Fehlersuche - bitte anhängen. In den Solvermeldungen kann man sich dann Stück für Stück durcharbeiten.

In deiner *.comm sind etlich Definitionen für den Kontakt drin. Ich versuche immer mit einem Minimum zu arbeiten, der Rest ist dann erst einmal default.

In STAT_NON_LINE arbeite ich mit RELATION VMIS_ISOT_TRAC, DEFORMATION SIMO_MIEHE.

Gruß Markus

Dem Überflüssigen nachlaufen, heißt das Wesentliche verpassen.
Jules Saliège
The following user(s) said Thank You: Tobias Vonstein
  • Tobias Vonstein
  • Tobias Vonstein's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
11 years 6 months ago #6936 by Tobias Vonstein
Replied by Tobias Vonstein on topic Re: Mehrere Teilkörper, Kontakt und Kraftrandbedingung
Hallo Zusammen,
Hallo Markus,

danke für deine Antwort! Ich wollte gern den ganzen Ordner anhängen (gezippt), aber irgendwie funktioniert das bei mir nicht!? Weiß jemand warum? Auch die ganze *.mess kann ich nicht in den Text einfügen. Deswegen hab ich unten mal nur die Error-Meldung eingefügt.

Frei nach dem Motto "weniger ist mehr" habe ich gerade mal den Großteil meiner Definitionen aus dem Kontakt raus geschmissen. Leider hat das nicht geholfen! CA nimmt dann ja den DISCRETE-Kontakt und der läuft bei mir in diesem System wesentlich schlechter. Auch mit den Keyword "PENALISATION" und "INTERPENETRE" konnte ich das Verhalten von meinem Kontakt schon verbessern.

Ich arbeite bei COMP_INCR mit der RELATION ELAS weil ich der Meinung war, dass das der richtige Ansatz für linear elastische Berechnungen ist. Ich lasse mich aber gern eines besseren belehren! Ich hab es einfach probiert, mit deinen Keywords läuft es gar nicht mehr.

Meine letzte Idee wäre jetzt eine sehr weiche Feder in Richtung der Singularität einzubauen. Aber das ist ja irgendwie auch gefuckelt!? Muss doch auch so gehen! Vielleicht fällt euch ja beim durchgucken der *.mess was ein. Oder hat jemand ein Kontakt-Beispiel das er mir schicken kann?

Viele Grüße und dank im vorraus Tobi
JDC.py : ERREUR A L'EXECUTION - INTERRUPTION
>> JDC.py : DEBUT RAPPORT
CR d'execution de JDC en MIXTE
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   ! <S> Exception utilisateur levee mais pas interceptee.                            !
   ! Les bases sont fermees.                                                          !
   ! Type de l'exception : error                                                      !
   !                                                                                  !
   ! Problème : la matrice n'est pas factorisable :                                   !
   !   Lors de la factorisation de la matrice, on a rencontré un problème             !
   !   (pivot nul ou presque nul) à la ligne 211                                      !
   !   Le degré de liberté associé à cette ligne est de type : (A)                    !
   !   Le nombre de décimales "perdues" pour cette ligne est : 9.                     !
   !   Ce nombre de décimales perdues est lié au degré de singularité de la matrice.  !
   ! Plus il est grand,                                                               !
   !   plus le système est singulier. Quand il dépasse 8, on considère que l'on a     !
   ! perdu 50% de la précision                                                        !
   !   sur les nombres réels (qui ont 15 décimales environ).                          !
   !                                                                                  !
   !   Les différents types du degré de liberté sont :                                !
   !     * (A) : Degré liberté physique associé au noeud : N49 et à la composante :   !
   ! DZ.                                                                              !
   !     * (B) : Degré de liberté de Lagrange associé au blocage : (XXXX).            !
   !     * (C) : Degré de liberté de Lagrange associé à une relation linéaire entre   !
   ! plusieurs degrés de liberté.                                                     !
   !             La liste des noeuds impliqués dans cette relation linéaire est       !
   ! imprimée ci-dessus.                                                              !
   !     * (D) : Degré de liberté d'un système "généralisé".                          !
   !             Nom du noeud : XXXX                                                  !
   !             Composante   : XXXX                                                  !
   !             Information complémentaire (éventuellement)   : XXXX                 !
   !                                                                                  !
   ! Conventions :                                                                    !
   !   Ce message peut être émis dans des situations différentes pour lesquelles on   !
   ! ne connaît                                                                       !
   !   pas toutes les informations imprimées ci-dessus.                               !
   !   On adopte alors les conventions suivantes :                                    !
   !     * Si le numéro de la ligne est -999 :                                        !
   !         Soit la matrice est vraiment singulière et la factorisation n'a pu aller !
   ! jusqu'au bout.                                                                   !
   !         Soit on ne sait pas attribuer la singularité de la matrice à une ligne   !
   ! de la matrice.                                                                   !
   !     * Si le nombre de décimales perdues est -999 :                               !
   !         On ne sait pas déterminer la perte de décimales sur la ligne incriminée, !
   !                                                                                  !
   ! Risques et conseils :                                                            !
   !    * Si la ligne correspond a un degré de liberté physique (A), il s'agit        !
   ! probablement d'un mouvement                                                      !
   !      de corps rigide mal bloqué.                                                 !
   !      Vérifiez les conditions aux limites.                                        !
   !      Si vous faites du contact, il ne faut pas que la structure ne "tienne" que  !
   ! par le contact.                                                                  !
   !      Vérifiez également les caractéristiques matériaux (module d'Young, ...).    !
   !                                                                                  !
   !    * Si la ligne correspond a un degré de liberté de Lagrange (B) ou (C), il     !
   ! s'agit sans doute d'une condition                                                !
   !      limite redondante.                                                          !
   !      En particulier, il se peut que la relation linéaire surabondante provienne  !
   ! des conditions de contact.                                                       !
   !      Peut-être devriez vous exclure certains noeuds des conditions de contact    !
   !      (mots clés SANS_NOEUD et SANS_GROUP_NO).                                    !
   !                                                                                  !
   !    * Si le solveur utilisé est LDLT ou MULT_FRONT, vous pouvez utiliser le       !
   ! solveur MUMPS                                                                    !
   !      car celui-ci est le seul à pouvoir factoriser les matrices qui ne sont pas  !
   ! définies positives.                                                              !
   !                                                                                  !
   !    * Il se peut aussi que ce phénomène soit tout à fait normal avec X-FEM si la  !
   ! fissure passe                                                                    !
   !      très près d'un noeud.                                                       !
   !      Si le nombre de décimales perdues n'est pas trop grand (max 10 décimales),  !
   !      vous pouvez relancer le calcul en augmentant le nombre de décimales perdues !
   ! autorisé :                                                                       !
   !      mot-clé NPREC du mot clé facteur SOLVEUR.                                   !
   !      Sinon, contactez l'équipe de développement.                                 !
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
fin CR d'execution de JDC en MIXTE

>> JDC.py : FIN RAPPORT
EXECUTION_CODE_ASTER_EXIT_19631-C2=1

Salome Meca 2013.1, Code Aster 11.3, Ubuntu 12.04
More
11 years 6 months ago - 11 years 6 months ago #6945 by MGolbs
Hallo Tobi,

habe gerade gesehen, dass du mit Salome Meca 2013.1, Code Aster 11.3 arbeitetst. Hast du eine serielle CA 11 Installation mit openMPI oder eine parallele Installation?

Ich verwende die 10er Schiene von CA, derzeit 10.7. Hast du mal versucht mit 10.7 den Rechenlauf zu machen? Für mich ist die 11er CA noch die Entwicklungsschiene. Zwischen 10 und 11er CA hat sich so manches geändert.

* Si le solveur utilisé est LDLT ou MULT_FRONT, vous pouvez utiliser le !
! solveur MUMPS !
! car celui-ci est le seul à pouvoir factoriser les matrices qui ne sont pas !
! définies positives.


Ob da was dran hängt?

Leider kann ich bei der 11er noch weniger bezüglich Kontakt sagen, als beri der 10er CA Version.

Ich kann Anhänge als zip einfügen. Hast du mit insert bestätigt?


Gruß Markus

File Attachment:

File Name: 2013-05-27...tact.zip
File Size:1 KB

Dem Überflüssigen nachlaufen, heißt das Wesentliche verpassen.
Jules Saliège
Attachments:
Last edit: 11 years 6 months ago by MGolbs.
  • Tobias Vonstein
  • Tobias Vonstein's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
11 years 6 months ago #6947 by Tobias Vonstein
Replied by Tobias Vonstein on topic Re: Mehrere Teilkörper, Kontakt und Kraftrandbedingung
Hallo Markus,

begonnen habe ich mit CAELinux2011. Die Probleme mit meinem Modell waren bei der enthaltenen Version 10.5 die gleichen. Da ich im Netz gelesen habe, dass sich von 10 nach 11 was den Kontakt angeht Einiges getan hat, habe ich mir mal salome 2013 runter geladen. Darin habe ich zunächt mit Version 10.8 gearbeitet, weil ich eigentlich auch bei den Stable-Versions bleiben wollte. Aber das Problem ist überall gleich.

Auch mit dem MUMPS-Solver habe ich schon gearbeitet. Hat nicht geholfen.

Danke für dein Beispiel! Ich sehe, deine Definitionen unterscheiden sich doch erheblich von meinem. Ich werde das mal bei mir testen. Vielleicht hilft das schon. Arbeitest du zum Aufbringen der Last mit Verschiebungs- oder mit Kraftrandbedingungen? Ich Frage, weil deine Last movement heißt! Denn mein Problem tritt nur bei Kraftrandbedingungen auf! Ganz neu ist für mich
REAC_GEOM='SANS' und
SANS_GROUP_NO.

Ich werde das mal im Manual nachschlagen, aber wenn du mir kurz schreiben kannst was du damit machst wäre mir das eine große Hilfe!

Was das Anhängen von Dateien angeht klicke ich auf Add File und wähle die Datei aus. Nachdem sich das Ordner-Fenster wieder geschlossen hat, ist das Attachment-Feld immer noch leer!? Merkwürdig!

Vielen Dank, ich hoffe ich kann mich irgendwann mal revangieren!

Tobi

Salome Meca 2013.1, Code Aster 11.3, Ubuntu 12.04
More
11 years 6 months ago #6948 by RichardS
Hallo Tobi,
es scheint sich wohl im eine Starrkörperbewegungzu handeln, die nicht korrekt blockiert wurde.
Der Kontakt mittel CONTINUE Methode ermöglicht es im Gegensatz zur DISCRETE Methode
Starrkörperbewegungen zu blockieren.
Ohne das Netzt lässt sich aber nicht genau sagen wo der Fehler liegt.
Falls das Anhängen von Dateien nicht funktioniert könnte es sein das die DAteigröße überschritten ist.
Vielleicht kannst du versuchen mehrere Teile anzuhängen.

Gruß,
Richard

SimScale - Engineering Simulation in your browser!
Moderators: catux
Time to create page: 0.141 seconds
Powered by Kunena Forum