Hallo zusammen,
für meine Semesterarbeit an der Uni soll ich einen 3D-Druck prozess nachsimulieren. Das Grundmodell steht schon nur habe ich aber große Schwierigkeiten beim Lösen des Modells. Bei jedem Lastschritt wird ein Volumenelement aktivieren und gelöst, das Ergebnis aus dieser Berechnung soll für den weiteren Lastschritt verwendet werden.
Ein "Multiframe restart" soll dafür gut geeignet sein, so ich dachte mir ich kann mit RESCONTROL,,LAST immer den letzten Substep eines Loadsteps speichern und später mit ANTYPE,,RESTART,LetzteLastschritt,Letzte Substep,CONTINUE die Berechnung forsetzen.
Jedoch und wie auf dem Bilder zu sehen, ist die Temperaturverteilung beim letzen Substep im Lastschritt 1 nicht diesselbe wie im ersten Substep im Lastschritt 2. Mir ist auch aufgefallen, dass die Anzahl der Lastschritt immer gleich bleibt und zwar 1 und sie nicht hochgezählt.
Hat jemand eine Idee woran das liegen kann. Vielen Dank im Voraus
Als code habe ich folgendes vewendet:
!!ANFANGSBEDINGUNGEN DEFINIEREN
/SOLU
!Ueberschrift
/title,Versuch_APDL--Transient Thermal (A5)
!Bestimmung der Elementenanzahl
XYactElemY = XElementen*YSchicht
!Parameter fuer Schleifen
Elem1 =2
YSchicht =1
ZSchicht =1
iLastschritt = 1 !Aktueller Lastschritt
iZahlWuerfel = 1
iMaxLastschritt = (XYZELE) !Dieser ist gleich der Wuerfelanzahl in Modell und dient fuer die Berechnung alle Wuerfelelementen
/SOLU !Wechsel in Solution
!!RANDBEDIGUNGEN
!Code aus ANSYS uebernommen
ALLSEL
TUNIF,TO !Anfangstemperatur festlegen
!BERECHNUNGSMETHODE UND MERKMALE AUSWAEHLEN
/SOLU
ANTYPE,4 !transient analysis
!NROPT,FULL
KBC,1 !früher1 !stepped BC's - 1: Treppenstufeannaehrung, Lastwert wird fuer alle Substeps eines Lastschritt gleich behalten
! - 2: Interpolation zwischen vorheriger Lastschritt und aktueller
!!TINTP,,,,1
CNTR,PRINT,1 !print out contact info and also make no initial contact an error
RESC,,LAST !Do not keep any restart files
RSTSUPPRESS,CONT !Don't write contact results
THOPT,QUASI,5.e-002 !Specifies nonlinear transient thermal solution options. 0.05 ist ein Standardwert
!SOLVER EINSTELLEN
EQSLV,ICCG !SPARSE
NLHIST,NSOL,MAX_TEMP,TEMP,MAX
NLHIST,NSOL,MIN_TEMP,TEMP,MIN
!STARTEN DER BERECHNUNG
*DO,iLastschritt,1,iMaxLastschritt,1 ! iMaxLastschritt statt zweite Zahl
/SOLU
*IF,iLastschritt,GT1,THEN
ANTYPE,,RESTART,iLastschritt-1,NumSS,CONTINUE
PARRES,NEW,Variable
iLastschritt = iZahlWuerfel
*ENDIF
AUTOTS,ON !Automatisches Time Stepping
NSUB,NoStp,MaxNoStp,MinNoStp
*IF,TimeStepAuto,EQ,1, THEN !Ueberpruefung falls manuell oder automatische Berechnung
DELTIM,IniTimeStep,MinTimeStep,MaxTimeStep
*ENDIF
TIME,Timeinte*Tinkre
TIMINT,ON ! Turn on time integration effects
OUTRES,ALL,LAST !davor Last
OUTRES,NSOL,ALL
OUTRES,RSOL,ALL
OUTRES,FFLUX,ALL
*IF,iLastschritt,EQ,1, THEN
/NOPR
ESEL,S,MAT,,EConRef
*DO,Zahl,(EConRef+1),EConRefEnd,1
ESEL,A,MAT,,Zahl
*ENDDO
CM,_elmisc,ELEM
ESEL,ALL
/GOPR
*ENDIF
OUTRES,MISC,ALL,_elmisc
CNVTOL,HEAT,,.001,,1.e-006 ! Program Controlled. Set MINREF equivalent of 1e-6 Watts
!!CODE UM: WUERFEL WIEDERZUAKTIVIEREN,TEMPERATURZWANG ZU LOESCHEN,CONTACT UND TARGETS ZU AKTIVIEREN,INTERNE KONVEKTIONEN ZU AKTIVIEREN / DEAKTIVIEREN
*IF,iZahlWuerfel,LE,XYZELE,THEN
!TEILPROZESS AKTIVIERUNG DER KONVEKTIONEN
/INPUT,INPUT_SOLVE_KONVEKTION_AKTIVIEREN.mac,,Adresse(1),0,0 !Auslesen der Befehlecode aus INPUT_SOLVE_KONVEKTION_AKTIVIEREN fuer das Aktivieren von Konvektionen (interne und aeussere)
*IF,iZahlWuerfel,GE,2,THEN
!*IF,iZahlWuerfel,LE,XYZELE,THEN
!SCHLEIFE UM ALLE VORHERIGE ELEMENTE VOR DEN RESTART ZU AKTIVIEREN
*DO,ZahlWuerfel,2,iZahlwuerfel,1
CMSEL,S,WUERFEL%ZahlWuerfel%
EALIVE,ALL
CMSEL,S,SSA%ZahlWuerfel%
DDELE,ALL
*ENDDO
!DEAKTIVIERUNG DER ZWANGSTEMPERATUR VON 700 UND AKTIVIERUNG DER WUERFEL
CMSEL,S,Wuerfel%iZahlWuerfel%
EALIVE,ALL
CMSEL,S,SSA%iZahlWuerfel%
DDELE,ALL
*ENDIF
*ENDIF
ALLSEL
SOLVE
!RESC,,LAST !Do not keep any restart files
*GET,NumSS,ACTIVE,0,SOLU,NCMSS !Getting the #of substeps for active load step
!*GET,NumSS,ACTIVE,0,SOLU,NCMSS !Getting the #of substeps for active load step
iLastschritt = iZahlwuerfel
iZahlWuerfel = iZahlWuerfel +1
Timeinte=Timeinte+1
PARSAV,ALL,Variable
*ENDDO
------------------
Student
Technische Universität München
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP