CalculiX  2.13
A Free Software Three-Dimensional Structural Finite Element Program
umat_lin_iso_el.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine umat_lin_iso_el (amat, iel, iint, kode, elconloc, emec, emec0, beta, xokl, voj, xkl, vj, ithermal, t1l, dtime, time, ttime, icmd, ielas, mi, nstate_, xstateini, xstate, stre, stiff, iorien, pgauss, orab)
 

Function/Subroutine Documentation

◆ umat_lin_iso_el()

subroutine umat_lin_iso_el ( character*80  amat,
integer  iel,
integer  iint,
integer  kode,
real*8, dimension(21)  elconloc,
real*8, dimension(6)  emec,
real*8, dimension(6)  emec0,
real*8, dimension(6)  beta,
real*8, dimension(3,3)  xokl,
real*8  voj,
real*8, dimension(3,3)  xkl,
real*8  vj,
integer  ithermal,
real*8  t1l,
real*8  dtime,
real*8  time,
real*8  ttime,
integer  icmd,
integer  ielas,
integer, dimension(*)  mi,
integer  nstate_,
real*8, dimension(nstate_,mi(1),*)  xstateini,
real*8, dimension(nstate_,mi(1),*)  xstate,
real*8, dimension(6)  stre,
real*8, dimension(21)  stiff,
integer  iorien,
real*8, dimension(3)  pgauss,
real*8, dimension(7,*)  orab 
)
23 !
24 ! calculates stiffness and stresses for a user defined material
25 ! law
26 !
27 ! icmd=3: calcutates stress at mechanical strain
28 ! else: calculates stress at mechanical strain and the stiffness
29 ! matrix
30 !
31 ! INPUT:
32 !
33 ! amat material name
34 ! iel element number
35 ! iint integration point number
36 !
37 ! kode material type (-100-#of constants entered
38 ! under *USER MATERIAL): can be used for materials
39 ! with varying number of constants
40 !
41 ! elconloc(21) user defined constants defined by the keyword
42 ! card *USER MATERIAL (max. 21, actual # =
43 ! -kode-100), interpolated for the
44 ! actual temperature t1l
45 !
46 ! emec(6) Lagrange mechanical strain tensor (component order:
47 ! 11,22,33,12,13,23) at the end of the increment
48 ! (thermal strains are subtracted)
49 ! emec0(6) Lagrange mechanical strain tensor at the start of the
50 ! increment (thermal strains are subtracted)
51 ! beta(6) residual stress tensor (the stress entered under
52 ! the keyword *INITIAL CONDITIONS,TYPE=STRESS)
53 !
54 ! xokl(3,3) deformation gradient at the start of the increment
55 ! voj Jacobian at the start of the increment
56 ! xkl(3,3) deformation gradient at the end of the increment
57 ! vj Jacobian at the end of the increment
58 !
59 ! ithermal 0: no thermal effects are taken into account
60 ! >0: thermal effects are taken into account (triggered
61 ! by the keyword *INITIAL CONDITIONS,TYPE=TEMPERATURE)
62 ! t1l temperature at the end of the increment
63 ! dtime time length of the increment
64 ! time step time at the end of the current increment
65 ! ttime total time at the start of the current step
66 !
67 ! icmd not equal to 3: calculate stress and stiffness
68 ! 3: calculate only stress
69 ! ielas 0: no elastic iteration: irreversible effects
70 ! are allowed
71 ! 1: elastic iteration, i.e. no irreversible
72 ! deformation allowed
73 !
74 ! mi(1) max. # of integration points per element in the
75 ! model
76 ! nstate_ max. # of state variables in the model
77 !
78 ! xstateini(nstate_,mi(1),# of elements)
79 ! state variables at the start of the increment
80 ! xstate(nstate_,mi(1),# of elements)
81 ! state variables at the end of the increment
82 !
83 ! stre(6) Piola-Kirchhoff stress of the second kind
84 ! at the start of the increment
85 !
86 ! iorien number of the local coordinate axis system
87 ! in the integration point at stake (takes the value
88 ! 0 if no local system applies)
89 ! pgauss(3) global coordinates of the integration point
90 ! orab(7,*) description of all local coordinate systems.
91 ! If a local coordinate system applies the global
92 ! tensors can be obtained by premultiplying the local
93 ! tensors with skl(3,3). skl is determined by calling
94 ! the subroutine transformatrix:
95 ! call transformatrix(orab(1,iorien),pgauss,skl)
96 !
97 !
98 ! OUTPUT:
99 !
100 ! xstate(nstate_,mi(1),# of elements)
101 ! updated state variables at the end of the increment
102 ! stre(6) Piola-Kirchhoff stress of the second kind at the
103 ! end of the increment
104 ! stiff(21): consistent tangent stiffness matrix in the material
105 ! frame of reference at the end of the increment. In
106 ! other words: the derivative of the PK2 stress with
107 ! respect to the Lagrangian strain tensor. The matrix
108 ! is supposed to be symmetric, only the upper half is
109 ! to be given in the same order as for a fully
110 ! anisotropic elastic material (*ELASTIC,TYPE=ANISO).
111 ! Notice that the matrix is an integral part of the
112 ! fourth order material tensor, i.e. the Voigt notation
113 ! is not used.
114 !
115  implicit none
116 !
117  character*80 amat
118 !
119  integer ithermal,icmd,kode,ielas,iel,iint,nstate_,mi(*),iorien,i
120 !
121  real*8 elconloc(21),stiff(21),emec(6),emec0(6),beta(6),stre(6),
122  & vj,t1l,dtime,xkl(3,3),xokl(3,3),voj,pgauss(3),orab(7,*),
123  & time,ttime
124 !
125  real*8 xstate(nstate_,mi(1),*),xstateini(nstate_,mi(1),*)
126 !
127  real*8 e,un,al,um,am1,am2
128 !
129 ! insert here code to calculate the stresses
130 !
131  e=elconloc(1)
132  un=elconloc(2)
133  al=un*e/(1.d0+un)/(1.d0-2.d0*un)
134  um=e/2.d0/(1.d0+un)
135  am1=al+2.d0*um
136  am2=2.d0*um
137 !
138  stre(1)=am1*emec(1)+al*(emec(2)+emec(3))-beta(1)
139  stre(2)=am1*emec(2)+al*(emec(1)+emec(3))-beta(2)
140  stre(3)=am1*emec(3)+al*(emec(1)+emec(2))-beta(3)
141  stre(4)=am2*emec(4)-beta(4)
142  stre(5)=am2*emec(5)-beta(5)
143  stre(6)=am2*emec(6)-beta(6)
144 c write(*,*) 'stre',(stre(i),i=1,6)
145 !
146  if(icmd.ne.3) then
147 !
148 ! insert here code to calculate the stiffness matrix
149 !
150  stiff(1)=al+2.d0*um
151  stiff(2)=al
152  stiff(3)=al+2.d0*um
153  stiff(4)=al
154  stiff(5)=al
155  stiff(6)=al+2.d0*um
156  stiff(7)=0.d0
157  stiff(8)=0.d0
158  stiff(9)=0.d0
159  stiff(10)=um
160  stiff(11)=0.d0
161  stiff(12)=0.d0
162  stiff(13)=0.d0
163  stiff(14)=0.d0
164  stiff(15)=um
165  stiff(16)=0.d0
166  stiff(17)=0.d0
167  stiff(18)=0.d0
168  stiff(19)=0.d0
169  stiff(20)=0.d0
170  stiff(21)=um
171 c write(*,*) 'stiff',(stiff(i),i=1,21)
172  endif
173 !
174  return
Hosted by OpenAircraft.com, (Michigan UAV, LLC)