OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m46law.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!|| m46law ../engine/source/materials/mat/mat046/m46law.F
25!||--- called by ------------------------------------------------------
26!|| mmain ../engine/source/materials/mat_share/mmain.F90
27!||--- calls -----------------------------------------------------
28!|| mqviscb ../engine/source/materials/mat_share/mqviscb.F
29!|| sigeps46 ../engine/source/materials/mat/mat046/sigeps46.F
30!||--- uses -----------------------------------------------------
31!|| ale_mod ../common_source/modules/ale/ale_mod.F
32!|| glob_therm_mod ../common_source/modules/mat_elem/glob_therm_mod.F90
33!||====================================================================
34 SUBROUTINE m46law(
35 1 LFT, LLT, NFT, MTN,
36 2 PM, OFF, SIG, EINT,
37 3 RHO, QOLD, VOL, UVAR,
38 4 BUFMAT, STIFN, MAT, NGL,
39 5 NUVAR, DT2T, NELTST, RHO0,
40 6 ITYPTST, OFFG, JLAG, GEO,
41 7 PID, SSP, AIRE, VOLN,
42 8 VD2, DELTAX, VIS, D1,
43 9 D2, D3, PNEW, PSH,
44 A Q, SSP_EQ, WXX, WYY,
45 B WZZ, IPM, MSSA, DMELS,
46 C DVOL, SOLD1, SOLD2, SOLD3,
47 D SOLD4, SOLD5, SOLD6, CONDE,
48 E VOL_AVG, DTEL, G_DT, NEL,
49 F D4, D5, D6, RHOREF,
50 G RHOSP, ISMSTR, ITY, JSMS,
51 H JTUR, JTHE , NPG , SVIS, glob_therm)
52C-----------------------------------------------
53C I m p l i c i t T y p e s
54C-----------------------------------------------
55 USE ale_mod
56 use glob_therm_mod
57C-----------------------------------------------
58C I m p l i c i t T y p e s
59C-----------------------------------------------
60#include "implicit_f.inc"
61C-----------------------------------------------
62C G l o b a l P a r a m e t e r s
63C-----------------------------------------------
64#include "mvsiz_p.inc"
65C-----------------------------------------------
66C C o m m o n B l o c k s
67C-----------------------------------------------
68#include "param_c.inc"
69#include "com04_c.inc"
70#include "com08_c.inc"
71#include "scr06_c.inc"
72C-----------------------------------------------
73C D u m m y A r g u m e n t s
74C-----------------------------------------------
75 INTEGER, INTENT(IN) :: ISMSTR
76 INTEGER, INTENT(IN) :: ITY
77 INTEGER, INTENT(IN) :: JSMS
78 INTEGER, INTENT(IN) :: JTUR
79 INTEGER, INTENT(IN) :: JTHE,NPG
80 INTEGER LFT,LLT,NFT,MTN, NUVAR,MAT(MVSIZ),NGL(MVSIZ),PID(MVSIZ),IPM(NPROPMI,NUMMAT),G_DT,NEL
81 INTEGER NELTST, ITYPTST,JLAG
82 my_real DT2T
83 my_real PM(NPROPM,NUMMAT),OFF(*), SIG(NEL,6), EINT(*),
84 . RHO(*),QOLD(*), VOL(*), UVAR(*), BUFMAT(*),
85 . OFFG(*),STIFN(*),GEO(*) ,SSP(*) ,
86 . AIRE(*) ,VOLN(*) ,VD2(*) ,DELTAX(*) ,VIS(*) , D1(*) ,
87 . D2(*) ,D3(*) ,PNEW(*) ,PSH(*) ,Q(*) ,SSP_EQ(*) ,
88 . WXX(MVSIZ), WYY(MVSIZ), WZZ(MVSIZ),RHO0(MVSIZ),
89 . MSSA(*), DMELS(*),SOLD1(*) ,SOLD2(*) ,SOLD3(*) ,
90 . SOLD4(*) ,SOLD5(*) ,SOLD6(*), DVOL(MVSIZ),CONDE(*),
91 . VOL_AVG(*),DTEL(*),D4(MVSIZ),D5(MVSIZ),D6(MVSIZ),
92 . rhoref(*) ,rhosp(*)
93 my_real, DIMENSION(MVSIZ,6), INTENT(INOUT) :: svis
94 type (glob_therm_) ,intent(inout) :: glob_therm
95C-----------------------------------------------
96C L o c a l V a r i a b l e s
97C-----------------------------------------------
98 my_real
99 . e1,e2,e3,e4,e5,e6,p2,bid1,bid2,bid3,c1(mvsiz),
100 . ep1(mvsiz),ep2(mvsiz),ep3(mvsiz),ep4(mvsiz),ep5(mvsiz),ep6(mvsiz),
101 . s1(mvsiz) ,s2(mvsiz) ,s3(mvsiz) ,s4(mvsiz) ,s5(mvsiz) ,s6(mvsiz),
102 . de1(mvsiz),de2(mvsiz),de3(mvsiz),de4(mvsiz),de5(mvsiz),de6(mvsiz),
103 . sv1(mvsiz),sv2(mvsiz),sv3(mvsiz),sv4(mvsiz),sv5(mvsiz),sv6(mvsiz),
104 . so1(mvsiz),so2(mvsiz),so3(mvsiz),so4(mvsiz),so5(mvsiz),so6(mvsiz)
105 INTEGER NPAR,IADBUF,I,IBID,MX
106 my_real FACQ0
107C-----------------------------------------------
108C S o u r c e L i n e s
109C-----------------------------------------------
110 mx = mat(1)
111 npar = ipm(9,mx)
112 iadbuf = ipm(7,mx)
113 facq0 = one
114
115C
116 DO i=lft,llt
117 vis(i) = zero
118 ep1(i) = d1(i)*off(i)
119 ep2(i) = d2(i)*off(i)
120 ep3(i) = d3(i)*off(i)
121 ep4(i) = d4(i)*off(i)
122 ep5(i) = d5(i)*off(i)
123 ep6(i) = d6(i)*off(i)
124 de1(i) = ep1(i)*dt1
125 de2(i) = ep2(i)*dt1
126 de3(i) = ep3(i)*dt1
127 de4(i) = ep4(i)*dt1
128 de5(i) = ep5(i)*dt1
129 de6(i) = ep6(i)*dt1
130 ENDDO
131 DO i=lft,llt
132 so1(i) = sig(i,1)
133 so2(i) = sig(i,2)
134 so3(i) = sig(i,3)
135 so4(i) = sig(i,4)
136 so5(i) = sig(i,5)
137 so6(i) = sig(i,6)
138 ENDDO
139C
140 CALL sigeps46(llt ,npar,nuvar,
141 . tt,dt1,bufmat,
142 . rho0,rho ,voln,eint,
143 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
144 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
145 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
146 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
147 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
148 . ssp ,vis ,uvar,off ,ngl ,0 ,
149 . ipm ,mat ,wxx,wyy,wzz,mtn,deltax,
150 . aire)
151 DO i=lft,llt
152 sig(i,1) = s1(i)*off(i)
153 sig(i,2) = s2(i)*off(i)
154 sig(i,3) = s3(i)*off(i)
155 sig(i,4) = s4(i)*off(i)
156 sig(i,5) = s5(i)*off(i)
157 sig(i,6) = s6(i)*off(i)
158 svis(i,1)= sv1(i)*off(i)
159 svis(i,2)= sv2(i)*off(i)
160 svis(i,3)= sv3(i)*off(i)
161 svis(i,4)= sv4(i)*off(i)
162 svis(i,5)= sv5(i)*off(i)
163 svis(i,6)= sv6(i)*off(i)
164 ENDDO
165C-------------------------------------------
166C BULK VISCOSITY AND TIME STEP COMPUTATION
167C THIS SUBROUTINE RETURN THE NEW BULK VISCOSITY Q
168C-----------------------
169 CALL mqviscb(
170 1 pm, off, rho, bid1,
171 2 bid2, ssp, bid3, stifn,
172 3 dt2t, neltst, ityptst, aire,
173 4 offg, geo, pid, voln,
174 5 vd2, deltax, vis, d1,
175 6 d2, d3, pnew, psh,
176 7 mat, ngl, q, ssp_eq,
177 8 vol, mssa, dmels, ibid,
178 9 facq0, conde, dtel, g_dt,
179 a ipm, rhoref, rhosp, nel,
180 b ity, ismstr, jtur, jthe,
181 c jsms, npg , glob_therm)
182C
183 DO i=lft,llt
184 p2 = -(sold1(i)+sig(i,1)+sold2(i)+sig(i,2)+sold3(i)+sig(i,3))/three
185 eint(i)=eint(i)-(q(i)+qold(i)+p2)*dvol(i)*half
186 qold(i)=q(i)
187 ENDDO
188 IF(ale%GLOBAL%INCOMP==0 .OR. jlag==1)THEN
189 DO i=lft,llt
190 e1=d1(i)*svis(i,1)
191 e2=d2(i)*svis(i,2)
192 e3=d3(i)*svis(i,3)
193 e4=d4(i)*svis(i,4)
194 e5=d5(i)*svis(i,5)
195 e6=d6(i)*svis(i,6)
196 eint(i)=eint(i)+(e1+e2+e3+e4+e5+e6)*vol_avg(i)*dt1
197 ENDDO
198 ENDIF
199 DO i=lft,llt
200 eint(i)=eint(i)/vol(i)
201 ENDDO
202
203C In case of quasi incompressible flow ALE & EULER, Enrgie is not convected.
204C no cumulation of viscous terms
205c IF(INCOMP==1.AND. JLAG==0)THEN
206c DO I=LFT,LLT
207c E1=D1(I)*(SOLD1(I)+SIG(1,I))
208c E2=D2(I)*(SOLD2(I)+SIG(2,I))
209c E3=D3(I)*(SOLD3(I)+SIG(3,I))
210c E4=D4(I)*(SOLD4(I)+SIG(4,I))
211c E5=D5(I)*(SOLD5(I)+SIG(5,I))
212c E6=D6(I)*(SOLD6(I)+SIG(6,I))
213c EINT(I)=EINT(I)+(E1+E2+E3+E4+E5+E6)*(VOLN(I)-0.5*DVOL(I))*DT1*0.5
214c EINT(I)=EINT(I)/VOL(I)
215c QOLD(I)=Q(I)
216c ENDDO
217c RETURN
218c ENDIF
219cC
220c DO I=LFT,LLT
221c E1=D1(I)*(SOLD1(I)+SIG(1,I))
222c E2=D2(I)*(SOLD2(I)+SIG(2,I))
223c E3=D3(I)*(SOLD3(I)+SIG(3,I))
224c E4=D4(I)*(SOLD4(I)+SIG(4,I))
225c E5=D5(I)*(SOLD5(I)+SIG(5,I))
226c E6=D6(I)*(SOLD6(I)+SIG(6,I))
227c EINT(I)=EINT(I)-(Q(I)+QOLD(I))*DVOL(I)*0.5+(E1+E2+E3+E4+E5+E6)*(VOLN(I)-0.5*DVOL(I))*DT1*0.5
228c EINT(I)=EINT(I)/VOL(I)
229c QOLD(I)=Q(I)
230c ENDDO
231
232C------------------------------------------
233 RETURN
234 END
subroutine m46law(lft, llt, nft, mtn, pm, off, sig, eint, rho, qold, vol, uvar, bufmat, stifn, mat, ngl, nuvar, dt2t, neltst, rho0, ityptst, offg, jlag, geo, pid, ssp, aire, voln, vd2, deltax, vis, d1, d2, d3, pnew, psh, q, ssp_eq, wxx, wyy, wzz, ipm, mssa, dmels, dvol, sold1, sold2, sold3, sold4, sold5, sold6, conde, vol_avg, dtel, g_dt, nel, d4, d5, d6, rhoref, rhosp, ismstr, ity, jsms, jtur, jthe, npg, svis, glob_therm)
Definition m46law.F:52
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
type(ale_) ale
Definition ale_mod.F:249
subroutine sigeps46(nel, nuparam, nuvar, time, timestep, uparam, rho0, rho, volume, eint, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, viscmax, uvar, off, ngl, ipt, ipm, mat, wxx, wyy, wzz, mtn, deltax, aire)
Definition sigeps46.F:42