-
Notifications
You must be signed in to change notification settings - Fork 0
/
UMAT_F_3D_DAMAGE_XY1_L3.f
executable file
·140 lines (127 loc) · 4.14 KB
/
UMAT_F_3D_DAMAGE_XY1_L3.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!! !!!
!!! Created by Martin Genet, 2008-2016 !!!
!!! !!!
!!! Laboratoire de Mécanique et de Technologie (LMT), Cachan, France !!!
!!! Lawrence Berkeley National Laboratory, California, USA !!!
!!! University of California at San Francisco, USA !!!
!!! Swiss Federal Institute of Technology (ETH), Zurich, Switzerland !!!
!!! École Polytechnique, Palaiseau, France !!!
!!! !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
C
C REQUESTED SUBROUTINES
C
#include '../ABAQUS_TOOLS/TOOLS.f'
C
#include 'DAMAGE/DAMAGE_3D_XY1_HOOKE.f'
! #include 'DAMAGE/DAMAGE_3D_XY1_HOOKE_DIRECT.f'
#include 'DAMAGE/DAMAGE_3D_XY1_FORCES.f'
C
#include 'DAMAGE_LAWS/DAMAGE_LAW3.f'
C
C ABAQUS UMAT_3D_DAMAGE_XY1 SUBROUTINE
C
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,RPL,DDSDDT,
1 DRPLDE,DRPLDT,STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,
2 CMNAME,NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,
3 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)
C
#include 'ABA_PARAM.INC'
C
CHARACTER CMNAME(80)
INTEGER NTENS, NSTATV, NPROPS, NOEL, NPT, KSTEP, KINC
DOUBLE PRECISION STRESS(NTENS),STATEV(NSTATV),DDSDDE(NTENS,NTENS),
1 DDSDDT(NTENS),DRPLDE(NTENS),STRAN(NTENS),DSTRAN(NTENS),TIME(2),
2 PREDEF,DPRED,PROPS(NPROPS),COORDS(3),DROT(3,3),PNEWDT,
3 DFGRD0(3,3),DFGRD1(3,3)
C
DOUBLE PRECISION TSTRAN(NTENS), E1, E2, E3, nu12,
1 nu13, nu23, G12, G13, G23, Y10, Y11, Y20, Y21, d1, d2, Y1, Y2
C
! PRINT *, "KINC (increment number) =", KINC
! PRINT *, "NOEL (element number) =", NOEL
! PRINT *, "NPT (integration point number) =", NPT
! PRINT *, "KSTEP (step number) =", KSTEP
! PRINT *, "NSTATV (number of state variables) =", NSTATV
! PRINT *, "STATEV (state variables)"
! DO I = 1, NSTATV
! PRINT *, STATEV(I)
! END DO
! PRINT *, "STRESS (stress at the begining of the increment)"
! DO I = 1, NTENS
! PRINT *, STRESS(I)
! END DO
! PRINT *, "STRAN (total strain at the begining of the increment)"
! DO I = 1, NTENS
! PRINT *, STRAN(I)
! END DO
! PRINT *, "DSTRAN (total strain increment for the iteration)"
! DO I = 1, NTENS
! PRINT *, DSTRAN(I)
! END DO
! PRINT *, "TSTRAN (total strain at the begining of the iteration)"
! CALL ADD_VEC(TSTRAN, STRAN, DSTRAN, NTENS)
! DO I = 1, NTENS
! PRINT *, TSTRAN(I)
! END DO
C
E1 = PROPS(1)
E2 = PROPS(2)
E3 = PROPS(3)
nu12 = PROPS(4)
nu13 = PROPS(5)
nu23 = PROPS(6)
G12 = PROPS(7)
G13 = PROPS(8)
G23 = PROPS(9)
C
Y10 = PROPS(10)
Y11 = PROPS(11)
Y20 = PROPS(12)
Y21 = PROPS(13)
C
d1 = STATEV(1)
d2 = STATEV(2)
C
! PRINT *, "d1 =", d1
! PRINT *, "d2 =", d2
C
CALL ADD_VEC(TSTRAN, STRAN, DSTRAN, NTENS)
CALL DAMAGE_3D_XY1_FORCES(Y1, Y2, TSTRAN, E1, E2, E3, nu12, nu13,
1 nu23, G12, G13, G23, d1, d2)
CALL DAMAGE_LAW3(d1, Y1, Y10, Y11)
CALL DAMAGE_LAW3(d2, Y2, Y20, Y21)
C
IF (d1 > STATEV(1)) THEN
STATEV(1) = d1
ELSE
d1 = STATEV(1)
ENDIF
IF (d2 > STATEV(2)) THEN
STATEV(2) = d2
ELSE
d2 = STATEV(2)
ENDIF
C
! PRINT *, "d1 =", d1
! PRINT *, "d2 =", d2
C
CALL DAMAGE_3D_XY1_HOOKE(DDSDDE, E1, E2, E3, nu12, nu13, nu23,
1 G12, G13, G23, d1, d2)
CALL PROD_MAT_VEC(STRESS, DDSDDE, TSTRAN, NTENS)
C
! PRINT *, "STRESS (stress at the end of the iteration)"
! DO I = 1, NTENS
! PRINT *, STRESS(I)
! END DO
C
! PRINT *, "DDSDDE"
! DO I = 1, 6
! DO J = 1, I
! PRINT *, 'K(', I, ' ,', J, ' ) =', DDSDDE(I, J)
! ENDDO
! ENDDO
C
RETURN
END