Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Subroutine- Uvarm

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Subroutine- Uvarm (3255 mal gelesen)
Ahmetoglu
Mitglied
Student


Sehen Sie sich das Profil von Ahmetoglu an!   Senden Sie eine Private Message an Ahmetoglu  Schreiben Sie einen Gästebucheintrag für Ahmetoglu

Beiträge: 24
Registriert: 20.06.2008

erstellt am: 08. Jul. 2010 14:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,
habe folgendes Problem.

ich habe eine Uvarm geschrieben, der nur dazu da ist mir einen bestimmten Wert (nennen wir den A) für die Knoten zu berechnen und diese im Viewer anzuzeigen.
Klappt egtl. soweit so gut.....
Den Wert A übergebe ich zusätzlich noch in eine IF-Schleife innerhalb der selben UVARM und soll mir noch zusätzlich den Wert B bestimmen:

IF (A.GT.0.D0) THEN
      B=0
      ELSE
B=1
ENDIF

Normalerweise müßte der Wert B jetzt nur 1 oder 0 zurückgeben. Tut er aber nicht.

Bspw. NODE545 spuckt mir den Wert -0.86659 heraus, was ja nicht sein kann..

Jetzt habe ich mir auch mal alle A-Werte für die Knoten zu dem zugehörigen Element (d.h. 8 Knoten) herausgeschrieben:

-dann analytisch (in MS Excel) meine IF-Schleife durchlaufen,
- und dann jedem Knoten eine Gewichtung ermittelt, damit ich den Wert -0.86659 erhalte:

die Gewichtungen:
NODE545 (betrachteter Knoten)= 1,853029722

Nachbarknoten 2-8
2=-0,000376537
3=-0,50514826
4=-0,50514826
5=0,672545324
6=-0,69560604
7=0,009955651
8=0,157451994


Um die Gewichtungen zu überprüfen, habe ich jetzt die zuzuweisenden B-Werte in der IF schleife geändert (bspw. 3.8 und -2.5 (statt 1 und 0)
und ich erhalte mit den gleichen Gewichtungen analytisch dasselbe heraus, was ABAQUS mir rausspuckt.

Ich möchte jedoch in der IF-schleife für den jeweiligen Knoten auch nur den zugehörigen Knoten betrachten und nicht die Nachbarknoten oder die Knoten vom selben Element).
Weiß jmd. wie oder ob das in einer Fortran-Subroutine geht???

Vielen Dank im Voraus.


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten1983
Mitglied
Doktorand


Sehen Sie sich das Profil von carsten1983 an!   Senden Sie eine Private Message an carsten1983  Schreiben Sie einen Gästebucheintrag für carsten1983

Beiträge: 125
Registriert: 11.10.2007

erstellt am: 08. Jul. 2010 14:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ahmetoglu 10 Unities + Antwort hilfreich

Deine Schlussfolgerung aus der If Bedingung ist nicht richtig. Es sollte B =1 oder B=0 herauskommen aber nur solang wie A größer Null ist. Was ist wenn A nicht größer Null ist? Dieser Fall wird zumindest in diesem Ausschnitt nicht behandelt. Die Konsequens wie Fortran das handhabt: entweder gibts nen Fehler: meiner Erfahrung nach provoziert dass  Error 144 oder es wird irgendwelcher Müll der zufällig noch im Speicher steht zur Variablenbelegung genommen.

Dein Beispiel illustriert doch sehr gut, dass Knoten Nummer 2,3,4 und 6 überhaupt nicht von deiner Bedingung betroffen sind (da A<0). An diesen Stellen kommt dann auch für B nur Humbug raus, weil nichts zugewiesen wurde.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ahmetoglu
Mitglied
Student


Sehen Sie sich das Profil von Ahmetoglu an!   Senden Sie eine Private Message an Ahmetoglu  Schreiben Sie einen Gästebucheintrag für Ahmetoglu

Beiträge: 24
Registriert: 20.06.2008

erstellt am: 08. Jul. 2010 15:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hi,

meiner Meinung nach ist auch in der IF-Schleife A<0 abgedeckt (weist B=1 zu).

Zu den von mir dargestellten Knotenwerten, die ich wahrscheinlich unverständlich formuliert habe :

das sind nicht die A-Werte!!! ich habe aus den A-werten händisch (oder in MS-Excel) die IF-Schleife durchlaufen, d.h B= 1 oder 0 den Knoten zugewiesen.)
Wenn ich jetzt diese B-Werte mit den dargestellten Gewichtungen jeweils multipliziere, und dann aufsummiere erhalte ich den B-Wert den ABaqus mir zuweist (-0.86659).

Diese Gewichtungen habe ich für andere Zahlenbeispiele (z.B. wenn A>0, dann B=3.8, sonst B=-2.5) durchgerechnet und auch hier stimmen die Gewichtungen.

Meine Vermutung ist, dass er für jeden Knoten auch die Nachbarknoten, bzw. die Knoten in dem selben Element berücksichtigt und die Gewichtungen entsprechend des Abstandes/Kantenlänge ermittelt.

Ich möchte aber, dass er nur den A-Wert von Knoten 1 berücksichtigt, wenn er den B-Wert von Knoten 1 ermittelt.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten1983
Mitglied
Doktorand


Sehen Sie sich das Profil von carsten1983 an!   Senden Sie eine Private Message an carsten1983  Schreiben Sie einen Gästebucheintrag für carsten1983

Beiträge: 125
Registriert: 11.10.2007

erstellt am: 09. Jul. 2010 07:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ahmetoglu 10 Unities + Antwort hilfreich

Ups, du hast natürlich recht. Irgendwie war ich nicht so ganz aufmerksam beim lesen 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ahmetoglu
Mitglied
Student


Sehen Sie sich das Profil von Ahmetoglu an!   Senden Sie eine Private Message an Ahmetoglu  Schreiben Sie einen Gästebucheintrag für Ahmetoglu

Beiträge: 24
Registriert: 20.06.2008

erstellt am: 09. Jul. 2010 10:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

No problem,

ich bin glaube ich jetzt ein Schritt weiter, und habe eine Vermutung was die Fehlerursache ist, wobei ich nicht weiß wie ich diese aufhebe.

Ich glaube, die UVARM verwendet die die Integrationspunkte als A-Werte und berechnet B an den Integrationspunkten, zeigt aber im Viewer die B-Werte für die Knoten an, sprich: er extrapoliert wieder zu den Knoten.

D.h: ich müßte für die Berechnung von A nach B entweder die Knotenwerte von A verwenden oder er müßte mir die Integrationspunkte von B im Viewer anzeigen.

Hat jmd. eine Idee wie man das bewerkstelligen kann??

Vielen Dank im Voraus.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

stoepselkid
Mitglied
Student


Sehen Sie sich das Profil von stoepselkid an!   Senden Sie eine Private Message an stoepselkid  Schreiben Sie einen Gästebucheintrag für stoepselkid

Beiträge: 29
Registriert: 03.04.2009

erstellt am: 16. Jul. 2010 11:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Ahmetoglu 10 Unities + Antwort hilfreich

Hallo Ahmetoglu,

ich würde Dir generell empfehlen zu Debuggingzwecken if-Schleifen immer mit "elseif" auszulegen und den "else"-Fall für nicht vorhergesehene Fälle zu lassen...
also z.B.

IF (A .GT. 0.0D0) THEN
        B=0.0D0
ELSEIF (A .LE. 0.0D0) THEN
        B=1.0D0
ELSE
        write(*,*) 'DEBUG'
ENDIF

Und Du solltest, wenn Du im Code Zahlen und keine Zeiger benutzt immer eine eindeutige Schreibweise wählen, also nicht B=0 sondern B=0.0D0 -
meiner Erfahrung nach macht das je nach Compiler einen Unterschied, vor allem, wenn Du eine implizite Typvereinbarung hast...

Viel Erfolg
Stephan

------------------
Wissen ist Macht, nichts wissen macht auch nichts.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz