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!||====================================================================
33 SUBROUTINE m1law(
34 1 PM, OFF, SIG, EINT,
35 2 RHO, QOLD, VOL, STIFN,
36 3 DT2T, NELTST, ITYPTST, OFFG,
37 4 GEO, PID, MUMAX, MAT,
38 5 NGL, SSP, DVOL, AIRE,
39 6 VNEW, VD2, DELTAX, VIS,
40 7 D1, D2, D3, D4,
41 8 D5, D6, PNEW, PSH,
42 9 QNEW, SSP_EQ, SOLD1, SOLD2,
43 A SOLD3, SOLD4, SOLD5, SOLD6,
44 B MSSA, DMELS, CONDE, AMU,
45 C VOL_AVG, DTEL, G_DT, NEL,
46 D IPM, RHOREF, RHOSP, ITY,
47 E JTUR, JTHE, JSPH, ISMSTR,
48 F JSMS, NPG , glob_therm)
49C-----------------------------------------------
50C M o d u l e s
51C-----------------------------------------------
52 use glob_therm_mod
53C-----------------------------------------------
54C I m p l i c i t T y p e s
55C-----------------------------------------------
56#include "implicit_f.inc"
57C-----------------------------------------------
58C G l o b a l P a r a m e t e r s
59C-----------------------------------------------
60#include "mvsiz_p.inc"
61C-----------------------------------------------
62C C o m m o n B l o c k s
63C-----------------------------------------------
64#include "com08_c.inc"
65#include "param_c.inc"
66C-----------------------------------------------
67C D u m m y A r g u m e n t s
68C-----------------------------------------------
69 INTEGER, INTENT(IN) :: ISMSTR
70 INTEGER, INTENT(IN) :: JSMS
71 INTEGER, INTENT(IN) :: ITY
72 INTEGER, INTENT(IN) :: JTUR
73 INTEGER, INTENT(IN) :: JTHE
74 INTEGER, INTENT(IN) :: JSPH,NPG
75C
76 INTEGER NELTST,ITYPTST,PID(*),G_DT,NEL
77 INTEGER MAT(*),NGL(*), IPM(NPROPMI,*)
78 my_real
79 . DT2T
80 my_real
81 . PM(NPROPM,*), OFF(*), SIG(NEL,6), EINT(*), RHO(*), QOLD(*),
82 . VOL(*),STIFN(*), OFFG(*),GEO(NPROPG,*),MUMAX(*)
83 my_real
84 . vnew(*), vd2(*), deltax(*), ssp(*), aire(*), vis(*),
85 . psh(*), pnew(*),qnew(*) ,ssp_eq(*), dvol(*),
86 . sold1(*), sold2(*), sold3(*), sold4(*), sold5(*), sold6(*),
87 . d1(*), d2(*), d3(*), d4(*), d5(*), d6(*),
88 . mssa(*), dmels(*),conde(*),amu(*),vol_avg(*),dtel(*), rhoref(*), rhosp(*)
89 type (glob_therm_) ,intent(inout) :: glob_therm
90C-----------------------------------------------
91C L o c a l V a r i a b l e s
92C-----------------------------------------------
93 INTEGER I, MX, J,IBID
94 my_real
95 . rho0(mvsiz),
96 . g(mvsiz), g1(mvsiz), g2(mvsiz),
97 . c1(mvsiz),
98 . df,dav, dpdm, p,
99 . e1, e2, e3, e4, e5, e6, einc, p2,
100 . bid1, bid2, bid3, dta, ym, dpdmp,facq0,
101 . rho0_1,c1_1
102C-----------------------------------------------
103 facq0 = one
104 mx = mat(1)
105 rho0_1 =pm( 1,mx)
106 c1_1 =pm(32,mx)
107 DO 10 i=1,nel
108 rho0(i) =rho0_1
109 g(i) =pm(22,mx)*off(i)
110 c1(i) =c1_1
111 10 CONTINUE
112C
113 DO i=1,nel
114 g1(i)=dt1*g(i)
115 g2(i)=two*g1(i)
116 !-----------------------
117 ! CALCUL DE DP/DRHO
118 !-----------------------
119 ! P = C1 mu, mu = rho/rho0-1 (cf Hydrodynamic pressure)
120 ! d(rho)/d(mu) = rho0
121 !-----------------------
122 ssp(i) =sqrt((onep333*g(i)+c1(i))/rho0(i))
123 rhosp(i)=rho0(i)
124 !-------------------------------
125 ! CONTRAINTES DEVIATORIQUES
126 !-------------------------------
127 p =-third*(sig(i,1)+sig(i,2)+sig(i,3))
128 dav=-third*(d1(i)+d2(i)+d3(i))
129 sig(i,1)=sig(i,1)+p+g2(i)*(d1(i)+dav)
130 sig(i,2)=sig(i,2)+p+g2(i)*(d2(i)+dav)
131 sig(i,3)=sig(i,3)+p+g2(i)*(d3(i)+dav)
132 sig(i,4)=sig(i,4)+g1(i)*d4(i)
133 sig(i,5)=sig(i,5)+g1(i)*d5(i)
134 sig(i,6)=sig(i,6)+g1(i)*d6(i)
135 ENDDO
136
137 IF (jsph==0)THEN
138 CALL mqviscb(
139 1 pm, off, rho, bid1,
140 2 bid2, ssp, bid3, stifn,
141 3 dt2t, neltst, ityptst, aire,
142 4 offg, geo, pid, vnew,
143 5 vd2, deltax, vis, d1,
144 6 d2, d3, pnew, psh,
145 7 mat, ngl, qnew, ssp_eq,
146 8 vol, mssa, dmels, ibid,
147 9 facq0, conde, dtel, g_dt,
148 a ipm, rhoref, rhosp, nel,
149 b ity, ismstr, jtur, jthe,
150 c jsms, npg , glob_therm)
151 ELSE
152 CALL mdtsph(
153 1 pm, off, rho, bid1,
154 2 bid2, bid3, stifn, dt2t,
155 3 neltst, ityptst, offg, geo,
156 4 pid, mumax, ssp, vnew,
157 5 vd2, deltax, vis, d1,
158 6 d2, d3, pnew, psh,
159 7 mat, ngl, qnew, ssp_eq,
160 8 g_dt, dtel, nel, ity,
161 9 jtur, jthe)
162 ENDIF
163
164 dta =half*dt1
165
166 DO i=1,nel
167 pnew(i)=c1(i)*amu(i)
168 sig(i,1)=(sig(i,1)-pnew(i))*off(i)
169 sig(i,2)=(sig(i,2)-pnew(i))*off(i)
170 sig(i,3)=(sig(i,3)-pnew(i))*off(i)
171 sig(i,4)=sig(i,4)*off(i)
172 sig(i,5)=sig(i,5)*off(i)
173 sig(i,6)=sig(i,6)*off(i)
174 p2 = -(sold1(i)+sig(i,1)+sold2(i)+sig(i,2)+sold3(i)+sig(i,3))* third
175 e1=d1(i)*(sold1(i)+sig(i,1)+p2)
176 e2=d2(i)*(sold2(i)+sig(i,2)+p2)
177 e3=d3(i)*(sold3(i)+sig(i,3)+p2)
178 e4=d4(i)*(sold4(i)+sig(i,4))
179 e5=d5(i)*(sold5(i)+sig(i,5))
180 e6=d6(i)*(sold6(i)+sig(i,6))
181 einc= vol_avg(i)*(e1+e2+e3+e4+e5+e6)*dta - half*dvol(i)*(qold(i)+qnew(i)+p2)
182 eint(i)=(eint(i)+einc*off(i)) / max(em15,vol(i))
183 qold(i)=qnew(i)
184 ENDDO
185
186 RETURN
187 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)
Definition m1law.F:49
#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 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