OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m1law.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!|| m1law ../engine/source/materials/mat/mat001/m1law.F
25!||--- called by ------------------------------------------------------
26!|| mmain ../engine/source/materials/mat_share/mmain.f90
27!||--- calls -----------------------------------------------------
28!|| mdtsph ../engine/source/materials/mat_share/mdtsph.F
29!|| mqviscb ../engine/source/materials/mat_share/mqviscb.F
30!||--- uses -----------------------------------------------------
31!|| glob_therm_mod ../common_source/modules/mat_elem/glob_therm_mod.F90
32!|| prop_param_mod ../common_source/modules/mat_elem/prop_param_mod.F90
33!||====================================================================
34 SUBROUTINE m1law(
35 1 PM, OFF, SIG, EINT,
36 2 RHO, QOLD, VOL, STIFN,
37 3 DT2T, NELTST, ITYPTST, OFFG,
38 4 GEO, PID, MUMAX, MAT,
39 5 NGL, SSP, DVOL, AIRE,
40 6 VNEW, VD2, DELTAX, VIS,
41 7 D1, D2, D3, D4,
42 8 D5, D6, PNEW, PSH,
43 9 QNEW, SSP_EQ, SOLD1, SOLD2,
44 A SOLD3, SOLD4, SOLD5, SOLD6,
45 B MSSA, DMELS, CONDE, AMU,
46 C VOL_AVG, DTEL, G_DT, NEL,
47 D IPM, RHOREF, RHOSP, ITY,
48 E JTUR, JTHE, JSPH, ISMSTR,
49 F JSMS, NPG , glob_therm,
50 G NUMGEO, IGEO)
51C-----------------------------------------------
52C M o d u l e s
53C-----------------------------------------------
54 use glob_therm_mod
55 USE prop_param_mod , only : n_var_igeo
56C-----------------------------------------------
57C I m p l i c i t T y p e s
58C-----------------------------------------------
59#include "implicit_f.inc"
60C-----------------------------------------------
61C G l o b a l P a r a m e t e r s
62C-----------------------------------------------
63#include "mvsiz_p.inc"
64C-----------------------------------------------
65C C o m m o n B l o c k s
66C-----------------------------------------------
67#include "com08_c.inc"
68#include "param_c.inc"
69C-----------------------------------------------
70C D u m m y A r g u m e n t s
71C-----------------------------------------------
72 INTEGER, INTENT(IN) :: ISMSTR
73 INTEGER, INTENT(IN) :: JSMS
74 INTEGER, INTENT(IN) :: ITY
75 INTEGER, INTENT(IN) :: JTUR
76 INTEGER, INTENT(IN) :: JTHE
77 INTEGER, INTENT(IN) :: JSPH,NPG
78 INTEGER,INTENT(IN) :: NUMGEO
79C
80 INTEGER NELTST,ITYPTST,PID(*),G_DT,NEL
81 INTEGER MAT(*),NGL(*), IPM(NPROPMI,*)
82 my_real
83 . DT2T
84 my_real
85 . PM(NPROPM,*), OFF(*), SIG(NEL,6), EINT(*), RHO(*), QOLD(*),
86 . VOL(*),STIFN(*), OFFG(*),GEO(NPROPG,*),MUMAX(*)
87 my_real
88 . vnew(*), vd2(*), deltax(*), ssp(*), aire(*), vis(*),
89 . psh(*), pnew(*),qnew(*) ,ssp_eq(*), dvol(*),
90 . sold1(*), sold2(*), sold3(*), sold4(*), sold5(*), sold6(*),
91 . d1(*), d2(*), d3(*), d4(*), d5(*), d6(*),
92 . mssa(*), dmels(*),conde(*),amu(*),vol_avg(*),dtel(*), rhoref(*), rhosp(*)
93 type (glob_therm_) ,intent(inout) :: glob_therm
94 integer,dimension(n_var_igeo,numgeo),intent(in) :: igeo
95C-----------------------------------------------
96C L o c a l V a r i a b l e s
97C-----------------------------------------------
98 INTEGER I, MX
99 my_real
100 . rho0(mvsiz),
101 . g(mvsiz), g1(mvsiz), g2(mvsiz),
102 . c1(mvsiz),
103 . dav, p,
104 . e1, e2, e3, e4, e5, e6, einc, p2,
105 . bid1, bid2, bid3, dta,facq0,
106 . rho0_1,c1_1
107C-----------------------------------------------
108 facq0 = one
109 mx = mat(1)
110 rho0_1 =pm( 1,mx)
111 c1_1 =pm(32,mx)
112 DO 10 i=1,nel
113 rho0(i) =rho0_1
114 g(i) =pm(22,mx)*off(i)
115 c1(i) =c1_1
116 10 CONTINUE
117C
118 DO i=1,nel
119 g1(i)=dt1*g(i)
120 g2(i)=two*g1(i)
121 !-----------------------
122 ! calculation of dp/drho
123 !-----------------------
124 ! P = C1 mu, mu = rho/rho0-1 (cf Hydrodynamic pressure)
125 ! d(rho)/d(mu) = rho0
126 !-----------------------
127 ssp(i) =sqrt((onep333*g(i)+c1(i))/rho0(i))
128 rhosp(i)=rho0(i)
129 !-------------------------------
130 ! DEVIATORIC STRESSES
131 !-------------------------------
132 p =-third*(sig(i,1)+sig(i,2)+sig(i,3))
133 dav=-third*(d1(i)+d2(i)+d3(i))
134 sig(i,1)=sig(i,1)+p+g2(i)*(d1(i)+dav)
135 sig(i,2)=sig(i,2)+p+g2(i)*(d2(i)+dav)
136 sig(i,3)=sig(i,3)+p+g2(i)*(d3(i)+dav)
137 sig(i,4)=sig(i,4)+g1(i)*d4(i)
138 sig(i,5)=sig(i,5)+g1(i)*d5(i)
139 sig(i,6)=sig(i,6)+g1(i)*d6(i)
140 ENDDO
141
142 IF (jsph==0)THEN
143 CALL mqviscb(
144 1 pm, off, rho, bid1,
145 2 bid2, ssp, bid3, stifn,
146 3 dt2t, neltst, ityptst, aire,
147 4 offg, geo, pid, vnew,
148 5 vd2, deltax, vis, d1,
149 6 d2, d3, pnew, psh,
150 7 mat, ngl, qnew, ssp_eq,
151 8 vol, mssa, dmels, igeo,
152 9 facq0, conde, dtel, g_dt,
153 a ipm, rhoref, rhosp, nel,
154 b ity, ismstr, jtur, jthe,
155 c jsms, npg , glob_therm)
156 ELSE
157 CALL mdtsph(
158 1 pm, off, rho, bid1,
159 2 bid2, bid3, stifn, dt2t,
160 3 neltst, ityptst, offg, geo,
161 4 pid, mumax, ssp, vnew,
162 5 vd2, deltax, vis, d1,
163 6 d2, d3, pnew, psh,
164 7 mat, ngl, qnew, ssp_eq,
165 8 g_dt, dtel, nel, ity,
166 9 jtur, jthe)
167 ENDIF
168
169 dta =half*dt1
170
171 DO i=1,nel
172 pnew(i)=c1(i)*amu(i)
173 sig(i,1)=(sig(i,1)-pnew(i))*off(i)
174 sig(i,2)=(sig(i,2)-pnew(i))*off(i)
175 sig(i,3)=(sig(i,3)-pnew(i))*off(i)
176 sig(i,4)=sig(i,4)*off(i)
177 sig(i,5)=sig(i,5)*off(i)
178 sig(i,6)=sig(i,6)*off(i)
179 p2 = -(sold1(i)+sig(i,1)+sold2(i)+sig(i,2)+sold3(i)+sig(i,3))* third
180 e1=d1(i)*(sold1(i)+sig(i,1)+p2)
181 e2=d2(i)*(sold2(i)+sig(i,2)+p2)
182 e3=d3(i)*(sold3(i)+sig(i,3)+p2)
183 e4=d4(i)*(sold4(i)+sig(i,4))
184 e5=d5(i)*(sold5(i)+sig(i,5))
185 e6=d6(i)*(sold6(i)+sig(i,6))
186 einc= vol_avg(i)*(e1+e2+e3+e4+e5+e6)*dta - half*dvol(i)*(qold(i)+qnew(i)+p2)
187 eint(i)=(eint(i)+einc*off(i)) / max(em15,vol(i))
188 qold(i)=qnew(i)
189 ENDDO
190
191 RETURN
192 END
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)
Definition dtel.F:46
subroutine m1law(pm, off, sig, eint, rho, qold, vol, stifn, dt2t, neltst, ityptst, offg, geo, pid, mumax, mat, ngl, ssp, dvol, aire, vnew, vd2, deltax, vis, d1, d2, d3, d4, d5, d6, pnew, psh, qnew, ssp_eq, sold1, sold2, sold3, sold4, sold5, sold6, mssa, dmels, conde, amu, vol_avg, dtel, g_dt, nel, ipm, rhoref, rhosp, ity, jtur, jthe, jsph, ismstr, jsms, npg, glob_therm, numgeo, igeo)
Definition m1law.F:51
#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 mmain(pm, elbuf_str, ix, nix, x, geo, iparg, nel, skew, bufmat, ipart, ipartel, nummat, matparam, imat, ipm, ngl, pid, npf, tf, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, rx, ry, rz, sx, sy, sz, gama, voln, dvol, s1, s2, s3, s4, s5, s6, dxx, dyy, dzz, d4, d5, d6, wxx, wyy, wzz)
Definition mmain.F:43
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