OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m1lawi.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!|| m1lawi ../engine/source/materials/mat/mat001/m1lawi.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 m1lawi(
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
85 my_real
86 . PM(NPROPM,*), OFF(*), SIG(NEL,6), EINT(*), RHO(*), QOLD(*),
87 . VOL(*),STIFN(*), OFFG(*),GEO(NPROPG,*),MUMAX(*)
88 my_real
89 . vnew(*), vd2(*), deltax(*), ssp(*), aire(*), vis(*),
90 . psh(*), pnew(*),qnew(*) ,ssp_eq(*), dvol(*),
91 . sold1(*), sold2(*), sold3(*), sold4(*), sold5(*), sold6(*),
92 . d1(*), d2(*), d3(*), d4(*), d5(*), d6(*),
93 . mssa(*), dmels(*),conde(*),amu(*),vol_avg(*),dtel(*), rhoref(*), rhosp(*)
94 type (glob_therm_) ,intent(inout) :: glob_therm
95 integer,dimension(n_var_igeo,numgeo),intent(in) :: igeo
96C-----------------------------------------------
97C L o c a l V a r i a b l e s
98C-----------------------------------------------
99 INTEGER I, MX
100 my_real
101 . rho0(mvsiz),
102 . g(mvsiz), g1(mvsiz), g2(mvsiz),
103 . c1(mvsiz),
104 . dav, p,
105 . e1, e2, e3, e4, e5, e6, einc, p2,
106 . bid1, bid2, bid3, dta,facq0,
107 . rho0_1,c1_1
108 my_real
109 . lmb(mvsiz),epsm
110C-----------------------------------------------
111 facq0 = one
112 mx = mat(1)
113 rho0_1 =pm( 1,mx)
114 c1_1 =pm(32,mx)
115 DO 10 i=1,nel
116 rho0(i) =rho0_1
117 g(i) =pm(22,mx)*off(i)
118 c1(i) =c1_1
119 lmb(i) =(three*c1(i)-two*g(i))
120 10 CONTINUE
121C
122
123 DO i=1,nel
124 g1(i)=dt1*g(i)
125 g2(i)=two*g1(i)
126 !-----------------------
127 ! CALCULATION OF DP/DRHO
128 !-----------------------
129 ! P = C1 mu, mu = rho/rho0-1
130 ! d(rho)/d(mu) = rho0
131 !-----------------------
132 ssp(i)=sqrt((onep333*g(i)+c1(i))/rho0(i))
133 rhosp(i)=rho0(i)
134 !-------------------------------
135 ! DEVIATORIC STRESSES
136 !-------------------------------
137 p =-third*(sig(i,1)+sig(i,2)+sig(i,3))
138 dav=-third*(d1(i)+d2(i)+d3(i))
139 ENDDO
140
141 IF (jsph==0)THEN
142 CALL mqviscb(
143 1 pm, off, rho, bid1,
144 2 bid2, ssp, bid3, stifn,
145 3 dt2t, neltst, ityptst, aire,
146 4 offg, geo, pid, vnew,
147 5 vd2, deltax, vis, d1,
148 6 d2, d3, pnew, psh,
149 7 mat, ngl, qnew, ssp_eq,
150 8 vol, mssa, dmels, igeo,
151 9 facq0, conde, dtel, g_dt,
152 a ipm, rhoref, rhosp, nel,
153 b ity, ismstr, jtur, jthe,
154 c jsms, npg , glob_therm)
155 ELSE
156 CALL mdtsph(
157 1 pm, off, rho, bid1,
158 2 bid2, bid3, stifn, dt2t,
159 3 neltst, ityptst, offg, geo,
160 4 pid, mumax, ssp, vnew,
161 5 vd2, deltax, vis, d1,
162 6 d2, d3, pnew, psh,
163 7 mat, ngl, qnew, ssp_eq,
164 8 g_dt, dtel, nel, ity,
165 9 jtur, jthe)
166 ENDIF
167
168 dta =half*dt1
169
170 DO i=1,nel
171 epsm = third*(d1(i)+d2(i)+d3(i))
172 sig(i,1)=sig(i,1)+ (two*g(i)*d1(i)+lmb(i)*epsm) *dt1
173 sig(i,2)=sig(i,2)+ (two*g(i)*d2(i)+lmb(i)*epsm) *dt1
174 sig(i,3)=sig(i,3)+ (two*g(i)*d3(i)+lmb(i)*epsm) *dt1
175 sig(i,4)=sig(i,4)+ g(i)*d4(i) *dt1
176 sig(i,5)=sig(i,5)+ g(i)*d5(i) *dt1
177 sig(i,6)=sig(i,6)+ g(i)*d6(i) *dt1
178 pnew(i) =- (sig(i,1)+sig(i,2)+sig(i,3))
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
190 ENDDO
191
192 RETURN
193 END
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)
Definition dtel.F:46
subroutine m1lawi(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 m1lawi.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 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