OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
dprag51.F File Reference
#include "implicit_f.inc"
#include "com08_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine dprag51 (nel, sigd, vol, epseq, vfrac, deps, uparam, volume, eint, plas, pfrac, pold, pext, de)

Function/Subroutine Documentation

◆ dprag51()

subroutine dprag51 ( integer, intent(in) nel,
dimension(6,nel), intent(inout) sigd,
dimension(nel), intent(in) vol,
dimension(nel), intent(inout) epseq,
dimension(nel), intent(in) vfrac,
dimension(6,nel), intent(in) deps,
dimension(*), intent(in) uparam,
dimension(nel), intent(in) volume,
dimension(nel), intent(inout) eint,
dimension(nel), intent(inout) plas,
intent(in) pfrac,
dimension(nel), intent(inout) pold,
intent(in) pext,
dimension(nel), intent(in) de )

Definition at line 28 of file dprag51.F.

33
34
35!common points with M10LAW()
36 !SIGD = deviatoric stress
37 !T = SIGD copy
38 !G*DEPSXX = G * DT1*D1
39
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C-----------------------------------------------
45C C o m m o n B l o c k s
46C-----------------------------------------------
47#include "com08_c.inc"
48C-----------------------------------------------
49C I N P U T O U T P U T A r g u m e n t s
50C-----------------------------------------------
51 INTEGER,INTENT(IN) :: NEL
52 my_real, INTENT(IN) :: pfrac,deps(6,nel),vol(nel),uparam(*),volume(nel),pext,de(nel)
53 my_real,INTENT(INOUT) :: sigd(6,nel),pold(nel),eint(nel),epseq(nel),plas(nel)
54C-----------------------------------------------
55C L o c a l V a r i a b l e s
56C-----------------------------------------------
57 INTEGER :: I,KK
58 my_real :: gg,a0,a1,a2,amax,tmelt,thetl,amumx,sigmx
59 my_real :: t0,fact
60 my_real :: ptot
61 my_real, intent(in) :: vfrac(nel)
62 my_real :: young, nu
63 my_real :: t1(nel), t2(nel), t3(nel), t4(nel), t5(nel), t6(nel)
64 my_real :: r
65 my_real :: bulk(nel), bulk2(nel), g(nel), g43(nel), g0(nel), g2(nel)
66 my_real :: j2(nel),yield2(nel)
67 my_real :: pstar,sigdo(6,nel)
68 my_real :: einc, vm, vol_avg
69 my_real :: dpla
70C-----------------------------------------------
71C S o u r c e L i n e s
72C-----------------------------------------------
73 a0 = uparam(16)
74 a1 = uparam(17)
75 a2 = uparam(18)
76 amax = uparam(19)
77 young = uparam(02)
78 nu = uparam(22)
79 pstar = uparam(23)
80 tmelt = uparam(08)
81 thetl = uparam(09)
82 amumx = uparam(20)
83 sigmx = uparam(11)
84 t0 = uparam(13)
85 gg = uparam(01)
86 bulk(1:nel) = uparam(21)
87 bulk2(1:nel) = uparam(21)
88
89 DO i=1,nel
90 g(i) = gg !* DT1
91 g2(i) = two * g(i)
92 g43(i) = onep333*gg
93
94 t1(i)=sigd(1,i)
95 t2(i)=sigd(2,i)
96 t3(i)=sigd(3,i)
97 t4(i)=sigd(4,i)
98 t5(i)=sigd(5,i)
99 t6(i)=sigd(6,i)
100
101 sigdo(1:6,i) = sigd(1:6,i)
102 fact = vfrac(i)
103 IF(vfrac(i) > two*em02)THEN
104 t1(i) = t1(i) + g2(i)* (deps(1,i)-de(i))*fact
105 t2(i) = t2(i) + g2(i)* (deps(2,i)-de(i))*fact
106 t3(i) = t3(i) + g2(i)* (deps(3,i)-de(i))*fact
107 t4(i) = t4(i) + g(i) * deps(4,i)*fact
108 t5(i) = t5(i) + g(i) * deps(5,i)*fact
109 t6(i) = t6(i) + g(i) * deps(6,i)*fact
110 ENDIF
111
112 j2(i)=half*(t1(i)**2+t2(i)**2+t3(i)**2)+t4(i)**2+t5(i)**2+t6(i)**2
113 vm=sqrt(three*j2(i))
114 ptot = pold(i)+pext
115 g0(i) =a0+a1*ptot+a2*ptot*ptot
116 g0(i)= min(amax,g0(i))
117 g0(i)= max(zero,g0(i))
118 IF(ptot <= pstar)g0(i)=zero
119 IF(pold(i) < pfrac)g0(i)=zero
120 yield2(i)=j2(i)-g0(i)
121
122
123 if(vfrac(i) > two*em02) then
124
125 r = zero
126 IF(g0(i) > zero)THEN
127 IF(yield2(i) > zero)THEN
128 r = sqrt(three*g0(i))/(vm+ em14)
129 dpla = (one - r)*vm /max(three*g(i),em15)
130 plas(i) = plas(i) + dpla
131 epseq(i) = epseq(i)+ dpla
132 ELSE
133 r = one-em02 ! 1-epsilon
134 ENDIF
135 ENDIF
136
137 ! deviatoric stress
138 sigd(1,i) = t1(i) * r
139 sigd(2,i) = t2(i) * r
140 sigd(3,i) = t3(i) * r
141 sigd(4,i) = t4(i) * r
142 sigd(5,i) = t5(i) * r
143 sigd(6,i) = t6(i) * r
144 !plastic work
145 vol_avg = half*(vfrac(i)*volume(i)+vol(i))
146 einc = half*vol_avg*
147 . ( (sigdo(1,i)+sigd(1,i)) * deps(1,i)
148 . + (sigdo(2,i)+sigd(2,i)) * deps(2,i)
149 . + (sigdo(3,i)+sigd(3,i)) * deps(3,i)
150 . + (sigdo(4,i)+sigd(4,i)) * deps(4,i)
151 . + (sigdo(5,i)+sigd(5,i)) * deps(5,i)
152 . + (sigdo(6,i)+sigd(6,i)) * deps(6,i))
153 eint(i) = eint(i) + einc
154 elseif(vfrac(i) < em02)then
155 plas(i) = zero
156 sigd(1,i) = zero
157 sigd(2,i) = zero
158 sigd(3,i) = zero
159 sigd(4,i) = zero
160 sigd(5,i) = zero
161 sigd(6,i) = zero
162 else
163 !smooth transition vfrac \in [0.01 0.02]
164 r = (vfrac(i)-em02)*hundred
165 plas(i) = r * plas(i)
166 if(yield2(i) > zero)then
167 r = r * sqrt(three*g0(i))/(vm+ em14)
168 end if
169 if(g0(i) == zero) r = zero
170 !--------------
171 ! projection
172 !--------------
173 sigd(1,i) = sigd(1,i) * r
174 sigd(2,i) = sigd(2,i) * r
175 sigd(3,i) = sigd(3,i) * r
176 sigd(4,i) = sigd(4,i) * r
177 sigd(5,i) = sigd(5,i) * r
178 sigd(6,i) = sigd(6,i) * r
179 end if
180
181 ENDDO !next I
182
183
184 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21