Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Nachbildung einer gepulsten Strahlungsquelle

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:  Nachbildung einer gepulsten Strahlungsquelle (379 mal gelesen)
thephile
Mitglied



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

Beiträge: 30
Registriert: 23.03.2010

erstellt am: 30. Mrz. 2010 22:19    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,

ich möchte eine Bestrahlung eines Werkstoffs mit einem gepulsten Laser nachstellen. Zur Vereinfachung nehme ich an, dass der Laser kurz angeschaltet wird (z.B. für 0,0004 Sekunden), dann anschließend ausgeschaltet und um eine bestimmte Strecke weiterbewegt wird. Dann wird der Laser wieder angeschaltet und so weiter.

Da der Laser einen kreisförmigen Fokusdurchmesser auf dem werkstück hinterlässt, kann man sich das Ergebnis anschaulich einer solchen Bestrahlung als einander überlappende Kreise, wie z.B. beim Audi-Emblem, vorstellen.

Dabei dachte ich das ganze mittels der Subroutine DFLUX umzusetzen. Nämlich mit dem Parameter TIME(1). Dort habe ich gesagt, dass immer zu vielfachen Ganzen der Zeiteinheit der Laser angeschaltet wird. trifft das nicht zu, bleibt es eben ausgeschaltet. Sinngemäß habe ich die Rechnung ohne Rest mit der Modulo-Funktion programmiert:

Code:
pulsdauer=0.0004
if(mod(TIME(1),pulsdauer).eq.0)then
FLUX(1)=1000
else
FLUX(1)=0
endif

Das ganze funktioniert leider nicht so wie ich es gern hätte. In der Simulation fängt die Bestrahlung zwar erst nach den ersten 0,0004 Sekunden an, dann stellt aber FLUX nicht auf Null. Der Laser schaltet nicht aus, sondern erwärmt bis in alle Ewigkeit das Werkstück. Habe schon gehört, dass die Bedingung ISTGLEICH NULL zu hart ist, da die Double-Zahlen eine Nachkommastelle haben können und somit nicht exakt NULL sind. Habe deshalb versucht die Bedingung weicher zu legen, somit <1. Auch das hat nicht hingehauen.

Hat jemand noch weisen Rat wie man das Problem vielleicht allgemein lösen könnte? Vielleicht mit *AMPLITUDE oder einer STEP-Definition? Die Idee ist ja: Licht an, Licht aus und das ungefähr 2500 mal pro Sekunde.

Besten Dank!

[Diese Nachricht wurde von thephile am 30. Mrz. 2010 editiert.]

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: 31. Mrz. 2010 08:43    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 thephile 10 Unities + Antwort hilfreich

Was meinst du mit "kleiner 1"? Ich denke es ist definitiv ungünstig eine real Zahl auf Gleichheit mit einer anderen Zahl zu prüfen. Du solltest unbedingt ein Limit festlegen, ab welchem Wert dein Ergebnis von mod gleich Null ist. Falls das die "kleiner 1" ausdrücken sollte, solltest du den Wert deutlich kleiner als 1 wählen, da der Rest der übrig bleibt ja ebenfalls in der Größenordnung der Pulsdauer liegt.

z.B.:

Code:
if(mod(TIME(1),pulsdauer).LT.0.00000001)then

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

thephile
Mitglied



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

Beiträge: 30
Registriert: 23.03.2010

erstellt am: 31. Mrz. 2010 13:35    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 carsten,

klingt einleuchtend. Habe dies probiert. Leider bleibt der Laser bei diesen Einstellungen ständig ausgeschaltet. Auch wenn ich die Bedingung sehr nah an die Null lege z.B. ....lt.1.0E-18). Gibt es eine Möglichkeit, den Wert dieser Berechnung auszugeben? Funktionieren diese Fortran-Befehle wie "write" oder "print"? Wenn ja, in welche Datei wird ausgegeben oder muss ich selber eine Datei öffnen und dies dort reinschreiben?

Tausend Dank!

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: 31. Mrz. 2010 13:43    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 thephile 10 Unities + Antwort hilfreich

rechnest du mit fixen Inkrementen? Wenn du das nicht tust, müsste nämlich schon ein großer Zufall her, damit der Laser mit deiner Bedingung überhaupt angeschaltet wird.
Die Ausgabe mit write funktioniert z.B. so:
Code:
open(unit=11,File='C:\Umatkrams\ausg.out',
    &status='unknown')
x=mod(TIME(1),pulsdauer)
if (NOEL.EQ.1 .and.NPT.EQ.1 ) write(11,*)'Inkrement anfang',x

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

thephile
Mitglied



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

Beiträge: 30
Registriert: 23.03.2010

erstellt am: 31. Mrz. 2010 14:43    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

Aha, da liegt also der Hund begraben. Flugs auf Fixed umgestellt. Das bedeutet aber auch, dass ich die Inkremente kleiner als die Zeit (0,0004s) stellten muss, um eine gescheite Auflösung zu bekommen?

Hah! Es geht! An und aus und wieder an und wieder aus... Wunderbar. So wie ich es wollte. Tausend Dank!

Da ich unter Linux arbeite, musste ich die Pfadangabe etwas abändern sowie die if-Bedingung, sonst hat er nichts in die Datei geschrieben. Der Teil meiner Subroutine lautet nun:

Code:

      open(unit=11,File='/home/zb/tester.out',
     & status='unknown')
      x=mod(TIME(1),pulsdauer)
      write(11,*)'Inkrement anfang',x
 
   
      if(mod(TIME(1),pulsdauer).lt.1.0E-7)then
      FLUX(1) = gaussintensitaet
      else
      FLUX(1) = 0

Was wäre  eigentlich, wenn Abaqus mit dem FIXED INTERVAL nicht zurecht kommt und die Berechnung ständig abbricht? Dann wäre ich aufgeschmissen...

Die Ausgabe der tester.out liefert Werte der Modulo-Funktion zwischen 1.0E-4 und 1.0E-11. Somit sollte ich mindestens lt.1.0E-12 angeben.

[Diese Nachricht wurde von thephile am 31. Mrz. 2010 editiert.]

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