2016-04-18 16 views
0

Ich versuche, die Steifigkeit eines Befestigungselements in Abhängigkeit von einem Druck zu ändern. Ich nähere mich diesem Problem, indem ich Feldvariablen verwende und die Kräfte in einem Befestigungselement aus der Datei .fil extrahiere.Erhalten der Elementnummer bezogen auf einen Knoten eines Befestigungselements in Abaqus

Das Problem ist, dass ich die Knotennummer bereitgestellt beziehen von UFIELD zu Elementnummer des Befestigers in .fil Datei. Ich weiß, dass die .fil Datei diese Information in Datensatz nicht enthält. 1900 aber wenn ich If-Anweisung für diesen Datensatz setzen, wird es nie in meinem Unterprogramm getroffen. Obwohl, wenn ich meine .fil Datei in ASCII konvertiere, kann ich diese Information dort sehen.

Die Aufzeichnungen No. 1 und No. 495 richtig getroffen, und ich kann die Elementnummer und interne Kräfte in ihm erhalten.

Darüber hinaus habe ich versucht, GETPARTINFO sowohl auf dem Knoten, den ich habe und auf dem Element. Aber es gibt eine Zahl zurück, die nicht mit dem Knoten meines Befestigers oder dem Element selbst zusammenhängt.

Zusätzlich konnte ich keine Verbindungselemente CTF vom Knoten selbst oder dem Materialpunkt erhalten, da die Verbindungselemente keine materiellen Punkte haben.

Wenn ich davon ausgehe, dass die Knoten und das Verbindungselement in der gleichen Reihenfolge sind und nur übereinstimmen, funktioniert mein Code nur an wenigen Elementen in einem winzigen Modell. Aber in einem großen Modell mit vielen Befestigungselementen wird alles durcheinander gebracht.

Irgendwelche Ideen wie diese zu lösen oder vielleicht ein paar Bemerkungen darüber, warum ich kippe Zugang Schlüssel 1900 aus meinem Unterprogramm oder warum GETPARTINFO nicht zurück, was zu erwarten ist?

+0

Ich habe keine Ahnung, worum es geht (abgesehen davon, dass ich weiß, dass Abaqus ein FEM-Paket ist). Erwäge, einen spezielleren Ort für deine Frage zu finden. Warum ist dies Fortran markiert? Hast du einen Fortran-Code?Bei allen Fragen sollte es sich um ein Code- oder Codeproblem handeln. –

+0

Die Abaqus-Unterprogramme sind in Fortran geschrieben. Diese Frage dreht sich ausschließlich um Fortran und Abaqus Interaktion und Zugang zu den Ergebnissen und nicht über Mechanik oder Physik hinter FEM. Also ich dachte, es ist der richtige Ort, um es zu fragen. Irgendwie denke ich, dass ich es selbst herausgefunden habe. Ich werde die Antwort später veröffentlichen, damit andere Leute mit ähnlichen Problemen es finden können. – UN4

Antwort

2

Ok, das habe ich herausgefunden. Der Schlüssel 1900 in .fil Datei wird vor der Position des Befehls Standard Lesen gedruckt

call DBFILE(0,ARRAY,JRCD) 

Um die erforderliche Taste, um die Datei zu lesen Position

zurückgesetzt werden muss zu erhalten
call DBFILE(2,ARRAY,JRCD) 

Aber das Problem ist, dass die Schlüssel 1900, 1901, 1933 usw. werden für jedes Element im Modell generiert, unabhängig von Ihrem angegebenen elset. Also habe ich ein kleines Unterprogramm geschrieben, um eine Reihe von Verbindungselementen mit ihrer Elementnummer und der entsprechenden Knotennummer zu erzeugen.

 subroutine obtain_relation(REL) 
     INCLUDE 'ABA_PARAM.INC' 
     DIMENSION ARRAY(513),JRRAY(NPRECD,513),REL(500,3) 
     character*8 CVALUE 
     EQUIVALENCE (ARRAY(1),JRRAY(1,1)), (ARRAY(4),CVALUE)     
     !Rewinding the file 
     CALL DBFILE(2,ARRAY,JRCD) 
     i = 1 
     DO K1=1,999999 
      !Start reading output file 
      CALL DBFILE(0,ARRAY,JRCD) 
      !If the end of the end of pre-step records go to 120 
      IF (KEY .EQ. 2000) GO TO 120 
      !If the end of all records is reached go to position 120 
      IF (JRCD .NE. 0) GO TO 120 
      !The key of the output table is at second possition (first is length of 
      !the array)   
      KEY=JRRAY(1,2) 
      ! Record 1900 contains information about element conectivity 
      IF (KEY .EQ. 1900) THEN 
       IF(trim(CVALUE).eq."CONN3D2") then 
        Rel(i,1) = JRRAY (1,3) ! <- Element number 
        Rel(i,2) = JRRAY (1,5) ! <- First node number 
        i = i + 1 
       END IF 
      END IF 

     ENDDO   
120 Continue 
     Return 
     end 

Aufruf dieses Unterprogramm nur einmal zu Beginn der Analyse nach POSFIL innen URDFIL aufrufen und es wird eine doppelte Genauigkeit 3-dimensionale Matrix mit einem ersten Säule, die Verschlusselementnummer, zweiter Spalte zurück - ersten Knoten der entsprechenden Befestigungselement und der letzte ist leer. Ich habe die letzte Spalte benutzt, um die entsprechenden Kräfte zu speichern.

Ich hoffe, das war hilfreich für jemanden.