Hi zusammen !
Ich habe mir die Subroutine USFLD geschrieben um die ElasticStrain Komponenten in SDVs zu bekommen. Das klappt auch soweit ganz gut. Doch jetzt stehe ich vor dem Problem, dass ich wenn die SDVs eine bestimmte Dehnung erreichen/überschreiten, die betroffenen Elemente "gelöscht" werden sollen. In Foren hab ich gelesen, dass es möglich sei bei den betroffenen Elementen die Steifigkeit auf 0 zu setzten und diese somit aus dem Modell zu entfernen.?
Hat jemand Erfahrung mit einer solchen modifizierung von der subroutine? ich habe leider keine Erfahrung mit Programmieren... Ich könnte mir aber Vorstellen, dass dies mittels einer IF Schleife in der Subroutine zu bewerkstelligen ist!?!
Vielen Dank für die Hilfe
Hier meine Subroutine:
SUBROUTINE USDFLD(FIELD,STATEV,PNEWDT,DIRECT,T,CELENT,
1 TIME,DTIME,CMNAME,ORNAME,NFIELD,NSTATV,NOEL,NPT,LAYER,
2 KSPT,KSTEP,KINC,NDI,NSHR,COORD,JMAC,JMATYP,MATLAYO,
3 LACCFLA)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME,ORNAME
CHARACTER*3 FLGRAY(15)
DIMENSION FIELD(NFIELD),STATEV(NSTATV),DIRECT(3,3),
1 T(3,3),TIME(2)
DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),
1 COORD(*)
C
C Absolute value of current strain:
CALL GETVRM('E',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
$ MATLAYO,LACCFLA)
EP1 = abs ( ARRAY(1) )
EP2 = abs ( ARRAY(2) )
EP3 = abs ( ARRAY(3) )
C
C Maximum value of strain up to this point in time:
C
CALL GETVRM('SDV',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP,
$ MATLAYO,LACCFLA)
EP1MAX = ARRAY(1)
EP2MAX = ARRAY(2)
EP3MAX = ARRAY(3)
C
C Use the maximum strain as a field variable
C
FIELD(1) = MAX ( EP1, EPMAX1 )
FIELD(2) = MAX ( EP2, EPMAX2 )
FIELD(3) = MAX ( EP3, EPMAX3 )
C Store the maximum strain as a solution dependent state
C variable
C
STATEV(1) = FIELD(1)
STATEV(2) = FIELD(2)
STATEV(3) = FIELD(3)
C
C If error, write comment to .DAT file:
IF(JRCD.NE.0)THEN
WRITE(6,*) 'REQUEST ERROR IN USDFLD FOR ELEMENT NUMBER ',
1 NOEL,'INTEGRATION POINT NUMBER ',NPT
ENDIF
C
RETURN
END
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP