c********************************************************************************** c* * c* * c* * c********************************************************************************** c ****Beginn des Standard UVARM Headers**** SUBROUTINE UVARM(UVAR,DIRECT,T,TIME,DTIME,CMNAME,ORNAME, 1 NUVARM,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,NDI,NSHR,COORD, 2 JMAC,JMATYP,MATLAYO,LACCFLA) INCLUDE 'ABA_PARAM.INC' c CHARACTER*80 CMNAME,ORNAME CHARACTER*3 FLGRAY(15) DIMENSION UVAR(NUVARM),DIRECT(3,3),T(3,3),TIME(2) DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*) c ****Ende des Headers**** c c-----DEFINITION DER VARIABLEN--------------------------------------------------------------------- DOUBLE PRECISION BI1, BI2, BI1PS, BI2PS, BI1BIAX, BI1UNI DOUBLE PRECISION BI2UNI1, TR, TR2 DOUBLE PRECISION BZ, BI1UNI1, BI1BIAX1, BI2BIAX1, BZ2, BZ1 DOUBLE COMPLEX, PARAMETER :: i =(0.0D0,1.0D0) DOUBLE COMPLEX :: BI1UNIC, BI1BIAXC, WURZEL, BI2BIAXC, WURZEL2 DOUBLE COMPLEX :: BI2UNIC c c c-----AUFSTELLEN DES DEFORMATIONSTENSORS----------------------------------------------------------- c c ****Einlesen der Verstreckgrade ('DG')**** CALL GETVRM('DGP',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP, 1 MATLAYO,LACCFLA) c c ****Zuweisung der Verstreckgrade in allen Raumrichtungen**** DGP1 = ARRAY(1) DGP2 = ARRAY(2) DGP3 = ARRAY(3) c c-----BERECHNUNG DER REINEN BEANSPRUCHUNGSZUSTÄNDE------------------------------------------------- c c ****Berechnung der ersten und zweiten Invarianten aus den Hauptverstreckgraden**** c BI1 = ARRAY(1)**(2.D0)+ARRAY(2)**(2.D0)+ ARRAY(3)**(2.D0) BI2 = ARRAY(1)**(-2.D0)+ARRAY(2)**(-2.D0)+ ARRAY(3)**(-2.D0) c c ****Berechnen der ersten Invariaten abhängig von der zweiten Invariaten c für reine Beanspruchungszustände (analytisch)**** c c WURZEL = (-81.0D0+3.0D0*BI2**3.0D0)**(1.0D0/2.0D0) WURZEL2 = (-81.0D0+3.0D0*BI1**3.0D0)**(1.0D0/2.0D0) c BI1UNIC = 1.0D0/24.0D0*(-27.0D0*BI2 1*(-27.0D0+3.0D0*i*WURZEL)**(1.0D0/3.0D0) 2+BI2*(-27.0D0+3.0D0*i*WURZEL)**(1.0D0/3.0D0)*i*WURZEL 3+2.0D0*BI2**2.0D0*(-27.0D0+3.0D0*i*WURZEL)**(2.0D0/3.0D0) 4+27.0D0*i*3.0D0**(1.0D0/2.0D0) 5*(-27.0D0+3.0D0*i*WURZEL)**(1.0D0/3.0D0)*BI2 6-i*3.0D0**(1.0D0/2.0D0)*(-27.0D0+3.0D0*i*WURZEL)**(1.0D0/3.0D0) 7*BI2*i*WURZEL+3.0D0*BI2**3.0D0+3.0D0 8*i*3.0D0**(1.0D0/2.0D0)*BI2**3.0D0 9+162.0D0-18.0D0*i*WURZEL+162.0D0*i*3.0D0**(1.0D0/2.0D0) 1-18.0D0*i*3.0D0**(1.0D0/2.0D0)*i*WURZEL) 2/(-27.0D0+3.0D0*i*WURZEL)**(2.0D0/3.0D0) c BI1PS = BI2 c c BI1BIAXC = 9.0D0*(81.0D0-9.0D0*i*WURZEL 1 -18.0D0*(-27.0D0+3.0D0*i*WURZEL)**(1.0D0/3.0D0)*BI2 2 +2.0D0*(-27.0D0+3.0D0*i*WURZEL)**(1.0D0/3.0D0)*BI2*i*WURZEL 3 +2.0D0*(-27.0D0+3.0D0*i*WURZEL)**(2.0D0/3.0D0)*BI2**2.0D0) 5 /(-27.0D0+3.0D0*i*WURZEL)**(1.0D0/3.0D0) 6 /((-27.0D0+3.0D0*i*WURZEL)**(2.0D0/3.0D0)+3.0D0*BI2)**2.0D0 c c c ****Berechnen der zweiten Invariaten abhängig von der ersten Invariaten c für reine Beanspruchungszustände (analytisch)**** c BI2BIAXC = 1.0D0/36.0D0/(-54.0D0+BI1**3.0D0+6.0D0*i*WURZ 1EL2)**(2.0D0/3.0D0)*((-54.0D0+BI1**3.0D0 2+6.0D0*i*WURZEL2)**(2.0D0/3.0D0)+BI1**2.0D 30+BI1*(-54.0D0+BI1**3.0D0+6.0D0*i*WURZEL2)**(1.0 4D0/3.0D0))**2.0D0+12.0D0*(-54.0D0+BI1**3.0D0+6.0D0*i*WUR 5ZEL2)**(1.0D0/3.0D0)/((-54.0D0+BI1**3.0D0+ 66.0D0*i*WURZEL2)**(2.0D0/3.0D0)+BI1 7**2.0D0+BI1*(-54.0D0+BI1**3.0D0+6.0D0*i*WURZEL2) 8**(1.0D0/3.0D0)) c BI2PS = BI1 c BI2UNIC = -3.D0*(-1.D0/12.D0*(-54.D0+BI1**3.D0+6.D0*i*WURZ #EL2)**(1.D0/3.D0)-1.D0/12.D0*BI1**2.D0/(-54.D0+BI1**3.D #0+6.D0*i*WURZEL2)**(1.D0/3.D0)+1.D0/6.D0*BI1-1.D0/2 #.D0*i*3.D0**(1.D0/2.D0)*(1.D0/6.D0*(-54.D0+BI1**3.D0+6.D0 #*i*WURZEL2)**(1.D0/3.D0)-1.D0/6.D0*BI1**2.D0/(-54.D0+BI1 #**3.D0+6.D0*i*WURZEL2)**(1.D0/3.D0)))**2.D0+2.D0*BI1*(-1 #.D0/12.D0*(-54.D0+BI1**3.D0+6.D0*i*WURZEL2)**(1.D0/3.D0) #-1.D0/12.D0*BI1**2.D0/(-54.D0+BI1**3.D0+6.D0*i*WURZEL2)**( #1.D0/3.D0)+1.D0/6.D0*BI1-1.D0/2.D0*i*3.D0**(1.D0/2.D0)*(1 #.D0/6.D0*(-54.D0+BI1**3.D0+6.D0*i*WURZEL2)**(1.D0/3.D0) #-1.D0/6.D0*BI1**2.D0/(-54.D0+BI1**3.D0+6.D0*i*WURZEL2)** #(1.D0/3.D0))) c c ****Nur der Realteil ist relevant!**** BI1UNI1 = real(BI1UNIC) BI1BIAX1 = real(BI1BIAXC) BI2BIAX1 = real(BI2BIAXC) BI2UNI1 = real(BI2UNIC) c c-----INTERPOLATION ZWISCHEN DEN REINEN BEANSPRUCHUNGSZUSTÄNDEN------------------------------------ c c ****Vergleich der tatsächlichen ersten Invarianten mit der ersten Invarianten für c Pure-Shear. Interpolation zur Berechnung des Beanspruchungszustandes**** IF (BI1.LT.BI1PS) THEN BZ1=(BI1-BI1PS)/(BI1PS-BI1BIAX1) ELSE IF (BI1.GT.BI1PS) THEN BZ1=(BI1-BI1PS)/(BI1UNI1-BI1PS) ELSE BZ1=0 ENDIF c c ****Vergleich der tatsächlichen zweiten Invarianten mit der zweiten Invarianten für c Pure-Shear. Interpolation zur Berechnung des Beanspruchungszustandes**** c IF (BI2.LT.BI2PS) THEN BZ2=(BI2PS-BI2)/(BI2PS-BI2UNI1) ELSE IF (BI2.GT.BI2PS) THEN BZ2=(BI2-BI2PS)/(BI2BIAX1-BI2PS)*(-1.D0) ELSE BZ2=0 ENDIF c c ****Mittelwertbildung aus den beiden BZ**** BZ = (BZ1+BZ2)/2.D0 IF (BZ.LT.-1.D0) THEN BZ=-1.D0 ELSE IF (BZ.GT.1.D0) THEN BZ=1.D0 ENDIF IF (BI1.LT. 3.0001D0) THEN BZ=1.0001D0 ENDIF c c-----AUSGABE DER PARAMETER ALS UVAR--------------------------------------------------------------- UVAR(1) = BZ UVAR(2) = BI1 UVAR(3) = BI2 c RETURN END