OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
mmats.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!|| mmats ../engine/source/elements/solid/solide8z/mmats.F
25!||--- called by ------------------------------------------------------
26!|| q4ke2 ../engine/source/elements/solid_2d/quad4/q4ke2.F
27!|| s10ke3 ../engine/source/elements/solid/solide10/s10ke3.F
28!|| s20ke3 ../engine/source/elements/solid/solide20/s20ke3.F
29!|| s4ke3 ../engine/source/elements/solid/solide4/s4ke3.F
30!|| s6cke3 ../engine/source/elements/thickshell/solide6c/s6cke3.F
31!|| s8cke3 ../engine/source/elements/thickshell/solide8c/s8cke3.F
32!|| s8zke3 ../engine/source/elements/solid/solide8z/s8zke3.F
33!||--- calls -----------------------------------------------------
34!|| get_etfac_s ../engine/source/elements/solid/solide8z/get_etfac_s.f
35!|| gettrans ../engine/source/elements/solid/solide8z/gettrans.f
36!|| mstiforth ../engine/source/elements/solid/solide8z/mstiforth.F
37!||--- uses -----------------------------------------------------
38!|| imp_ktan ../engine/share/modules/impbufdef_mod.F
39!|| imp_ktan_def ../engine/share/modules/impbufdef_mod.F
40!||====================================================================
41 SUBROUTINE mmats(JFT ,JLT ,PM ,MAT ,HH ,
42 . MTN ,IORTH ,IPM ,IGEO ,GAMA ,
43 . UPARAM ,CC ,CG ,G33 ,JHBE ,
44 . SIG ,EPS ,NPPT ,NEL )
45C-----------------------------------------------
46C M o d u l e s
47C-----------------------------------------------
48 USE imp_ktan
49 USE imp_ktan_def
50C-----------------------------------------------
51C I m p l i c i t T y p e s
52C-----------------------------------------------
53#include "implicit_f.inc"
54C-----------------------------------------------
55C G l o b a l P a r a m e t e r s
56C-----------------------------------------------
57#include "mvsiz_p.inc"
58C-----------------------------------------------
59C C o m m o n B l o c k s
60C-----------------------------------------------
61#include "param_c.inc"
62#include "impl1_c.inc"
63C-----------------------------------------------
64C D u m m y A r g u m e n t s
65C-----------------------------------------------
66 INTEGER JFT, JLT ,IORTH ,JHBE,MTN,NPPT,NEL
67 INTEGER MAT(*),IPM(NPROPMI,*),IGEO(NPROPGI,*)
68C REAL
70 . pm(npropm,*),hh(2,*),cc(3,3,*),uparam(*),
71 . gama(mvsiz,6),cg(3,3,*),g33(3,3,*),sig(nel,6),eps(*)
72C-----------------------------------------------
73C L o c a l V a r i a b l e s
74C-----------------------------------------------
75 INTEGER I,MX,IAD,J,K,IPLAST
76C REAL
77 my_real
78 . nu,lamda,gg,c1,qc(9,mvsiz),qcg(9,mvsiz),qg(9,mvsiz),
79 . qgc(9,mvsiz),g3(3,mvsiz),tt,tv,ca,cb,cn,g(mvsiz),qh(mvsiz),
80 . fac(mvsiz),smin,s1,nu12,nu21,efac
81C-----------------------------------------------
82 CALL get_etfac_s(nel,fac,mtn)
83 IF (iorth>0) THEN
84 CALL gettrans(jft,jlt,gama,qc,qcg,qgc,qg)
85 IF (mtn==14.OR.mtn==12) THEN
86 DO i=jft,jlt
87 mx =mat(i)
88 cc(1,1,i) =pm(40,mx)
89 cc(2,2,i) =pm(43,mx)
90 cc(3,3,i) =pm(45,mx)
91 cc(1,2,i) =pm(41,mx)
92 cc(2,3,i) =pm(44,mx)
93 cc(1,3,i) =pm(42,mx)
94 g3(1,i) =pm(46,mx)
95 g3(2,i) =pm(47,mx)
96 g3(3,i) =pm(48,mx)
97 ENDDO
98 CALL mstiforth(jft ,jlt ,qc ,qcg ,qgc ,
99 . qg ,cc ,g3 ,g33 ,cg )
100 ELSEIF (mtn==25) THEN
101 DO i=jft,jlt
102 mx =mat(i)
103 nu12 =pm(35,mx)
104 nu21 =pm(36,mx)
105 s1 = one-nu12*nu21
106 cc(1,1,i) =pm(33,mx)/max(em20,s1)
107 cc(2,2,i) =pm(34,mx)/max(em20,s1)
108 cc(3,3,i) =pm(186,mx)
109 cc(1,2,i) =half*(nu21*cc(1,1,i)+nu12*cc(2,2,i))
110 cc(2,3,i) =zero
111 cc(1,3,i) =zero
112 g3(1,i) =pm(37,mx)
113 g3(2,i) =pm(38,mx)
114 g3(3,i) =pm(39,mx)
115 ENDDO
116 CALL mstiforth(jft ,jlt ,qc ,qcg ,qgc ,
117 . qg ,cc ,g3 ,g33 ,cg )
118 ELSEIF (mtn==28.OR.mtn==50.OR.mtn==68) THEN
119 DO i=jft,jlt
120 mx =mat(i)
121 cc(1,1,i) = uparam(1)
122 cc(2,2,i) = uparam(2)
123 cc(3,3,i) = uparam(3)
124 cc(1,2,i) = zero
125 cc(2,3,i) = zero
126 cc(1,3,i) = zero
127 g3(1,i) = uparam(4)
128 g3(2,i) = uparam(5)
129 g3(3,i) = uparam(6)
130 ENDDO
131 CALL mstiforth(jft ,jlt ,qc ,qcg ,qgc ,
132 . qg ,cc ,g3 ,g33 ,cg )
133 ELSEIF (mtn==53) THEN
134 DO i=jft,jlt
135 mx =mat(i)
136 cc(1,1,i) = uparam(1)
137 cc(2,2,i) = uparam(2)
138 cc(3,3,i) = cc(2,2,i)
139 cc(1,2,i) = zero
140 cc(2,3,i) = zero
141 cc(1,3,i) = zero
142 g3(1,i) = uparam(3)
143 g3(2,i) = uparam(4)
144 g3(3,i) = g3(1,i)
145 ENDDO
146 CALL mstiforth(jft ,jlt ,qc ,qcg ,qgc ,
147 . qg ,cc ,g3 ,g33 ,cg )
148 ELSE
149C----------isotrope effective
150 iorth = 0
151 DO i=jft,jlt
152 mx =mat(i)
153 nu =pm(21,mx)
154 c1 =three*pm(32,mx)/(one+nu)
155 lamda=c1*nu
156C-------GG:2G---HH(2,I):G-------
157 gg =c1*(one-two*nu)
158 hh(1,i)=lamda
159 hh(2,i)=gg*half
160 ENDDO
161 ENDIF
162 ELSE
163C-------iso------
164C------hyperelastic------
165 IF (mtn==42) THEN
166 efac=twop5
167 DO i=jft,jlt
168 mx =mat(i)
169 lamda=efac*fac(i)*pm(100,mx)
170C-------GG:2G---HH(2,I):G-------
171 gg =efac*fac(i)*pm(32,mx)
172 hh(1,i)=lamda
173 hh(2,i)=gg*half
174 ENDDO
175 ELSEIF (mtn==62.OR.mtn==62.OR.mtn==69.OR.mtn==82) THEN
176 efac=twop5
177 DO i=jft,jlt
178 mx =mat(i)
179 nu =pm(21,mx)
180 c1 =three*pm(32,mx)/(one+nu)
181 lamda=c1*nu*fac(i)
182C-------GG:2G---HH(2,I):G-------
183 gg =c1*(one-two*nu)*fac(i)
184 hh(1,i)=lamda
185 hh(2,i)=gg*half
186 ENDDO
187 ELSE
188 DO i=jft,jlt
189 mx =mat(i)
190 nu =pm(21,mx)
191 c1 =three*pm(32,mx)/(one+nu)
192 lamda=c1*nu
193C-------GG:2G---HH(2,I):G-------
194 gg =c1*(one-two*nu)
195 hh(1,i)=lamda
196 hh(2,i)=gg*half
197 ENDDO
198 ENDIF
199 ENDIF ! IF (IORTH>0) THEN
200C-------------KT Condinuum---sig:mean value-------------
201 IF (ikt==2) THEN
202C-------------KT Condinuum---sig:per ip------------
203 ELSEIF (ikt==3) THEN
204 SELECT CASE (mtn)
205 CASE(1)
206 CASE(2,36)
207 iplast =0
208 DO i=jft,jlt
209 mx =mat(i)
210candr ---- make the 0-th iteration always elastic
211 IF(fac(i)<one.AND.iter_nl>0) THEN
212C QH(I)= FAC(I)*TWO*HH(2,I)
213 iplast =1
214C ELSE
215C QH(I)=ZERO
216 ENDIF
217 ENDDO
218C IF (IPLAST>0) THEN
219C DO I=JFT,JLT
220C G33(1,1,I)=QH(I)
221C ENDDO
222C ENDIF
223 IF (iorth==0.AND.iplast==1) iorth=1
224 CASE(10)
225 END SELECT
226C-------------KT Consistent--sig: per ip-------------
227 ELSEIF (ikt==4) THEN
228 s1=one*nppt
229 SELECT CASE (mtn)
230 CASE(1)
231 CASE(2,36)
232 iplast =0
233 DO i=jft,jlt
234candr --- make the 0-th iteration always elastic
235 IF(fac(i)<one.AND.iter_nl>0) iplast =1
236 ENDDO
237 IF (iorth==0.AND.iplast==1) iorth=1
238 CASE(10)
239 END SELECT
240 ENDIF !IF (IKT==2) THEN
241
242C
243 RETURN
244 END
subroutine cg(dim, mat, rhs, sol, max_iter, tol)
#define my_real
Definition cppsort.cpp:32
subroutine get_etfac_s(nel, sfac, mtn)
Definition get_etfac_s.F:36
subroutine gettrans(jft, jlt, gama, qc, qcg, qgc, qg)
Definition gettrans.F:30
#define max(a, b)
Definition macros.h:21
subroutine mmats(jft, jlt, pm, mat, hh, mtn, iorth, ipm, igeo, gama, uparam, cc, cg, g33, jhbe, sig, eps, nppt, nel)
Definition mmats.F:45
subroutine mstiforth(jft, jlt, qc, qcg, qgc, qg, cc, g3, g33, cg)
Definition mstiforth.F:32