OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m24law.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| m24law ../engine/source/materials/mat/mat024/m24law.f
25!||--- called by ------------------------------------------------------
26!|| mmain ../engine/source/materials/mat_share/mmain.F90
27!||--- calls -----------------------------------------------------
28!|| conc24 ../engine/source/materials/mat/mat024/conc24.F
29!|| m24anim ../engine/source/materials/mat/mat024/m24anim.F
30!|| m24dmax ../engine/source/materials/mat/mat024/m24dmax.F
31!|| mdtsph ../engine/source/materials/mat_share/mdtsph.F
32!|| mnsvis ../engine/source/materials/mat_share/mnsvis.F
33!|| mqviscb ../engine/source/materials/mat_share/mqviscb.F
34!||--- uses -----------------------------------------------------
35!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
36!|| glob_therm_mod ../common_source/modules/mat_elem/glob_therm_mod.F90
37!||====================================================================
38 SUBROUTINE m24law(
39 1 LBUF, PM, OFF, SIG,
40 2 EINT, RHO, QOLD, VOL,
41 3 STIFN, DT2T, NELTST, ITYPTST,
42 4 OFFSET, NEL, OFFG, GEO,
43 5 PID, MAT, NGL, SSP,
44 6 AIRE, VOLN, VD2, DELTAX,
45 7 VIS, D1, D2, D3,
46 8 PNEW, PSH, Q, SSP_EQ,
47 9 DVOL, D4, D5, D6,
48 A MUMAX, GAMA, MSSA, DMELS,
49 B D_MAX, SOLD1, SOLD2, SOLD3,
50 C SOLD4, SOLD5, SOLD6, RX,
51 D RY, RZ, SX, SY,
52 E SZ, CONDE, VOL_AVG, DTEL,
53 F G_DT, IPM, RHOREF, RHOSP,
54 G EPSD, ITY, JTUR, JTHE,
55 H JHBE, JCVT, JSPH, ISMSTR,
56 I JSMS, NPG , SVIS, glob_therm)
57C-----------------------------------------------
58C M o d u l e s
59C-----------------------------------------------
60 USE elbufdef_mod
61 use glob_therm_mod
62C-----------------------------------------------
63C I m p l i c i t T y p e s
64C-----------------------------------------------
65#include "implicit_f.inc"
66C-----------------------------------------------
67C G l o b a l P a r a m e t e r s
68C-----------------------------------------------
69#include "mvsiz_p.inc"
70C-----------------------------------------------
71C C o m m o n B l o c k s
72C-----------------------------------------------
73#include "com08_c.inc"
74#include "param_c.inc"
75C-----------------------------------------------
76C D u m m y A r g u m e n t s
77C-----------------------------------------------
78 INTEGER, INTENT(IN) :: ISMSTR
79 INTEGER, INTENT(IN) :: JSMS
80 INTEGER, INTENT(IN) :: ITY
81 INTEGER, INTENT(IN) :: JTUR
82 INTEGER, INTENT(IN) :: JTHE
83 INTEGER, INTENT(IN) :: JHBE
84 INTEGER, INTENT(IN) :: JCVT
85 INTEGER, INTENT(IN) :: JSPH,NPG
86 INTEGER MAT(NEL),NGL(NEL),PID(NEL),G_DT, IPM(NPROPMI,*)
87 INTEGER NELTST,ITYPTST,OFFSET,NEL
88 my_real DT2T
89 my_real
90 . PM(NPROPM,*), OFF(NEL), SIG(NEL,6), EINT(NEL), RHO(NEL), QOLD(NEL),
91 . VOL(NEL), STIFN(NEL),OFFG(NEL),GEO(NPROPG,*), GAMA(MVSIZ,6),
92 . VOLN(NEL), VD2(NEL), DELTAX(NEL), SSP(NEL), AIRE(NEL), VIS(NEL),
93 . PSH(NEL), PNEW(MVSIZ),Q(NEL) ,SSP_EQ(NEL), DVOL(NEL),MUMAX(NEL),
94 . D1(NEL), D2(NEL), D3(NEL), D4(NEL), D5(NEL), D6(NEL),
95 . MSSA(NEL), DMELS(NEL),D_MAX(NEL),EPSD(NEL),
96 . rx(nel),ry(nel),rz(nel),sx(nel),sy(nel),sz(nel),
97 . sold1(nel),sold2(nel),sold3(nel),sold4(nel),
98 . sold5(nel), sold6(nel), conde(nel), vol_avg(nel),dtel(nel),
99 . rhoref(*) ,rhosp(*)
100 my_real, DIMENSION(MVSIZ,6), INTENT(INOUT) :: svis
101 TYPE(l_bufel_) :: LBUF
102 type (glob_therm_) ,intent(inout) :: glob_therm
103C-----------------------------------------------
104C L o c a l V a r i a b l e s
105C-----------------------------------------------
106 INTEGER I, IMAT,IBID,ISVIS
107 my_real e1, e2, e3, e4, e5, e6,bid1,bid2,bid3,facq0
108 my_real, DIMENSION(NEL) :: r11,r12,r13,r21,r22,r23,r31,r32,r33,volg
109C=======================================================================
110 isvis = 0
111 facq0 = one
112 imat = mat(1)
113c
114c strain rate calculation (for output only)
115c
116 DO i=1,nel
117 epsd(i) = max( abs(d1(i)), abs(d2(i)), abs(d3(i)),
118 . half*abs(d4(i)),half*abs(d5(i)),half*abs(d6(i)))
119 ENDDO
120c
121 CALL conc24(
122 1 pm(1,imat),off, sig, eint,
123 2 lbuf%SIGA, lbuf%EPSA, gama, lbuf%DAM,
124 3 lbuf%ANG, lbuf%SF, lbuf%VK, lbuf%STRA,
125 4 lbuf%CRAK, lbuf%DSUM, lbuf%ROB, lbuf%SIGC,
126 5 lbuf%RK, lbuf%PLA, ngl, d1,
127 6 d2, d3, d4, d5,
128 7 d6, rx, ry, rz,
129 8 sx, sy, sz, lbuf%SEQ,
130 9 rho, lbuf%EPE, nel, r11,
131 a r12, r13, r21, r22,
132 b r23, r31, r32, r33,
133 c jcvt, jsph)
134C----------------------------------------
135C CRACKS DANS REPERE GLOBAL POUR ANIM
136C----------------------------------------
137 IF (pm(56,mat(1)) == one)
138 . CALL m24anim(lbuf%DAM,lbuf%ANG,lbuf%DGLO,nel,
139 . r11,r12,r13,r21,r22,
140 . r23,r31,r32,r33)
141c
142 IF (jhbe == 24) CALL m24dmax(lbuf%DAM,d_max,nel)
143C------------
144 DO i=1,nel
145 ssp(i)=sqrt(pm(24,imat)/pm(1,imat))
146 vis(i)=zero
147 ENDDO
148C
149 IF(jsph==0)THEN
150 CALL mqviscb(
151 1 pm, off, rho, bid1,
152 2 bid2, ssp, bid3, stifn,
153 3 dt2t, neltst, ityptst, aire,
154 4 offg, geo, pid, voln,
155 5 vd2, deltax, vis, d1,
156 6 d2, d3, pnew, psh,
157 7 mat, ngl, q, ssp_eq,
158 8 vol, mssa, dmels, ibid,
159 9 facq0, conde, dtel, g_dt,
160 a ipm, rhoref, rhosp, nel,
161 b ity, ismstr, jtur, jthe,
162 c jsms, npg , glob_therm)
163C
164 volg(1:nel)=npg*voln(1:nel)
165 CALL mnsvis(
166 1 pm, off, rho, geo,
167 2 pid, ssp, aire, volg,
168 3 d1, d2, d3, d4,
169 4 d5, d6, mat, isvis,
170 5 rhoref, nel, svis)
171C . . . . . . . . . . . . . . . . . . . . . . . . . .
172C L'ENERGIE INTERNE COMPREND L ENERGIE DE FISSURATION
173C . . . . . . . . . . . . . . . . . . . . . . . . . .
174 DO 500 i=1,nel
175 e1=d1(i)*(sold1(i)+sig(i,1)+svis(i,1))
176 e2=d2(i)*(sold2(i)+sig(i,2)+svis(i,2))
177 e3=d3(i)*(sold3(i)+sig(i,3)+svis(i,3))
178 e4=d4(i)*(sold4(i)+sig(i,4)+svis(i,4))
179 e5=d5(i)*(sold5(i)+sig(i,5)+svis(i,5))
180 e6=d6(i)*(sold6(i)+sig(i,6)+svis(i,6))
181 eint(i)=eint(i)
182 . -(q(i)+qold(i))*dvol(i)*half
183 . +(e1+e2+e3+e4+e5+e6)*vol_avg(i)*dt1*half
184C
185 eint(i)=eint(i)/vol(i)
186 qold(i)=q(i)
187 500 CONTINUE
188 ELSE
189 CALL mdtsph(
190 1 pm, off, rho, bid1,
191 2 bid2, bid3, stifn, dt2t,
192 3 neltst, ityptst, offg, geo,
193 4 pid, mumax, ssp, voln,
194 5 vd2, deltax, vis, d1,
195 6 d2, d3, pnew, psh,
196 7 mat, ngl, q, ssp_eq,
197 8 g_dt, dtel, nel, ity,
198 9 jtur, jthe)
199
200 CALL mnsvis(
201 1 pm, off, rho, geo,
202 2 pid, ssp, aire, voln,
203 3 d1, d2, d3, d4,
204 4 d5, d6, mat, isvis,
205 5 rhoref, nel, svis)
206C . . . . . . . . . . . . . . . . . . . . . . . . . .
207C L'ENERGIE INTERNE COMPREND L ENERGIE DE FISSURATION
208C . . . . . . . . . . . . . . . . . . . . . . . . . .
209 DO 510 i=1,nel
210 e1=d1(i)*(sold1(i)+sig(i,1)+svis(i,1))
211 e2=d2(i)*(sold2(i)+sig(i,2)+svis(i,2))
212 e3=d3(i)*(sold3(i)+sig(i,3)+svis(i,3))
213 e4=d4(i)*(sold4(i)+sig(i,4)+svis(i,4))
214 e5=d5(i)*(sold5(i)+sig(i,5)+svis(i,5))
215 e6=d6(i)*(sold6(i)+sig(i,6)+svis(i,6))
216 eint(i)=eint(i)+(e1+e2+e3+e4+e5+e6)*vol_avg(i)*dt1*half
217 eint(i)=eint(i)/vol(i)
218 510 CONTINUE
219 ENDIF
220c-----------
221 RETURN
222 END
subroutine conc24(pm, off, sig, eint, siga, epxa, gama, dam, ang, eps_f, vk0, strain, crak, damsum, rob, sigc, vk, pla, ngl, d1, d2, d3, d4, d5, d6, rx, ry, rz, sx, sy, sz, seq, rho, epsvp, nel, r11, r12, r13, r21, r22, r23, r31, r32, r33, jcvt, jsph)
Definition conc24.F:52
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)
Definition dtel.F:46
subroutine m24anim(dam, ang, damglo, nel, r11, r12, r13, r21, r22, r23, r31, r32, r33)
Definition m24anim.F:35
subroutine m24dmax(d, dmax, nel)
Definition m24dmax.F:30
subroutine m24law(lbuf, pm, off, sig, eint, rho, qold, vol, stifn, dt2t, neltst, ityptst, offset, nel, offg, geo, pid, mat, ngl, ssp, aire, voln, vd2, deltax, vis, d1, d2, d3, pnew, psh, q, ssp_eq, dvol, d4, d5, d6, mumax, gama, mssa, dmels, d_max, sold1, sold2, sold3, sold4, sold5, sold6, rx, ry, rz, sx, sy, sz, conde, vol_avg, dtel, g_dt, ipm, rhoref, rhosp, epsd, ity, jtur, jthe, jhbe, jcvt, jsph, ismstr, jsms, npg, svis, glob_therm)
Definition m24law.F:57
#define max(a, b)
Definition macros.h:21
subroutine mdtsph(pm, off, rho, rk, t, re, sti, dt2t, neltst, ityptst, offg, geo, pid, mumax, ssp, vol, vd2, deltax, vis, d1, d2, d3, pnew, psh, mat, ngl, qvis, ssp_eq, g_dt, dtsph, nel, ity, jtur, jthe)
Definition mdtsph.F:47
subroutine mnsvis(pm, off, rho, geo, pid, ssp, aire, vol, d1, d2, d3, d4, d5, d6, mat, isvis, rhoref, nel, svis)
Definition mnsvis.F:35
subroutine mqviscb(pm, off, rho, rk, temp, ssp, re, sti, dt2t, neltst, ityptst, aire, offg, geo, pid, vol, vd2, deltax, vis, d1, d2, d3, pnew, psh, mat, ngl, qvis, ssp_eq, vol0, mssa, dmels, igeo, facq0, conde, dtel, g_dt, ipm, rhoref, rhosp, nel, ity, ismstr, jtur, jthe, jsms, npg, glob_therm)
Definition mqviscb.F:56