-
Notifications
You must be signed in to change notification settings - Fork 0
/
UMAT_F_3D_CRITERION_Z.f
81 lines (68 loc) · 2.45 KB
/
UMAT_F_3D_CRITERION_Z.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
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!! !!!
!!! 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_Z_HOOKE.f'
#include 'DAMAGE/DAMAGE_3D_Z_FORCES.f'
C
C ABAQUS UMAT_3D_CRITERION_Z 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 STRANI(NTENS), E1, E2, E3, nu12, nu13, nu23,
1 G12, G13, G23, sigmac3, d3, dmax
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
sigmac3 = PROPS(10)
C
d3 = STATEV(1)
C
CALL DAMAGE_Z_HOOKE(DDSDDE, E1, E2, E3, nu12, nu13, nu23,
1 G12, G13, G23, d3)
CALL ADD_VEC(STRANI, STRAN, DSTRAN, NTENS)
CALL PROD_MAT_VEC(STRESS, DDSDDE, STRANI, NTENS)
C
dmax = 1. - 1e-6
IF ((d3 < dmax) .AND. (STRESS(3) > sigmac3)) THEN
d3 = dmax
STATEV(1) = d3
CALL DAMAGE_Z_HOOKE(DDSDDE, E1, E2, E3, nu12, nu13, nu23,
1 G12, G13, G23, d3)
CALL PROD_MAT_VEC(STRESS, DDSDDE, STRANI, NTENS)
ENDIF
C
RETURN
END