OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
mulaw_ib.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!|| mulaw_ib ../engine/source/elements/beam/mulaw_ib.F
25!||--- called by ------------------------------------------------------
26!|| main_beam18 ../engine/source/elements/beam/main_beam18.F
27!||--- calls -----------------------------------------------------
28!|| sigeps34pi ../engine/source/materials/mat/mat034/sigeps34pi.F
29!|| sigeps36pi ../engine/source/materials/mat/mat036/sigeps36pi.F
30!|| sigeps44pi ../engine/source/materials/mat/mat044/sigeps44pi.F
31!|| sigeps71pi ../engine/source/materials/mat/mat071/sigeps71pi.F
32!||--- uses -----------------------------------------------------
33!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
34!||====================================================================
35 SUBROUTINE mulaw_ib(ELBUF_STR,
36 1 NEL ,NPT ,MTN ,IMAT ,
37 2 PID ,NGL ,IPM ,
38 3 GEO ,OFF ,
39 4 EPSP ,BUFMAT ,NPF ,TF ,
40 5 EXX ,EXY ,EXZ ,KXX ,
41 6 KYY ,KZZ ,JTHE ,TEMPEL ,SIGY )
42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE elbufdef_mod
46C-----------------------------------------------
47C I m p l i c i t T y p e s
48C-----------------------------------------------
49#include "implicit_f.inc"
50#include "comlock.inc"
51C-----------------------------------------------
52C C o m m o n B l o c k s
53C-----------------------------------------------
54#include "param_c.inc"
55#include "com08_c.inc"
56C-----------------------------------------------
57C D u m m y A r g u m e n t s
58C-----------------------------------------------
59 INTEGER NEL,MTN,IMAT,NPT,JTHE
60 INTEGER IPM(NPROPMI,*),PID(*),NPF(*),NGL(*)
61 my_real
62 . GEO(NPROPG,*),EPSP(*),BUFMAT(*),
63 . OFF(*),TF(*),
64 . EXX(NEL),EXY(NEL),EXZ(NEL),KXX(NEL),KYY(NEL),KZZ(NEL)
65 my_real , INTENT(INOUT) :: tempel(nel)
66 my_real , INTENT(INOUT) :: sigy(nel,npt)
67C
68 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
69 TARGET :: BUFMAT
70C-----------------------------------------------
71C L o c a l V a r i a b l e s
72C-----------------------------------------------
73 INTEGER IFUNC(100)
74 INTEGER I,K,J1,IADBUF,IPT,JPLA,NFUNC,IPY,IPZ,IPA,NUVAR,NVARTMP,
75 . ir,is,ii(3),ilayer,nuparam
76 my_real
77 . ypt(nel),zpt(nel),apt(nel),g(nel),e(nel),etse(nel),
78 . depsxx(nel),depsxy(nel),depsxz(nel),
79 . sigoxx(nel),sigoxy(nel),sigoxz(nel),
80 . signxx(nel),signxy(nel),signxz(nel),
81 . sigy_ipt(nel)
82 my_real :: shfact,dfxx,dfxy,dfxz
83 my_real ,DIMENSION(NEL) :: epsxx,epsxy,epsxz,dpla
84C
85 TYPE(buf_lay_) ,POINTER :: BUFLY
86 TYPE(L_BUFEL_) ,POINTER :: LBUF
87 TYPE(G_BUFEL_) ,POINTER :: GBUF
88 my_real, DIMENSION(:) ,POINTER :: uvar
89 INTEGER, DIMENSION(:), POINTER :: VARTMP
90C=======================================================================
91 ipy = 200
92 ipz = 300
93 ipa = 400
94 shfact = five_over_6
95C--------------------------------------
96 iadbuf = ipm(7,imat)
97 nuparam= ipm(9,imat)
98 nfunc = ipm(10,imat)
99 DO i=1,nfunc
100 ifunc(i)=ipm(10+i,imat)
101 ENDDO
102C
103 DO i=1,3
104 ii(i) = nel*(i-1)
105 ENDDO
106C-------------------------------------
107C DEBUT DE BOUCLE SUR POINTS INTEGRATION
108C--------------------------------------
109 DO ipt=1,npt
110 ilayer=1
111 ir = 1
112 is = 1
113 bufly => elbuf_str%BUFLY(ilayer)
114 lbuf => bufly%LBUF(ir,is,ipt)
115 gbuf => elbuf_str%GBUF
116 uvar => bufly%MAT(ir,is,ipt)%VAR
117 vartmp=> bufly%MAT(ir,is,ipt)%VARTMP
118 nuvar = bufly%NVAR_MAT
119 nvartmp= bufly%NVARTMP
120
121C--- Coordonnees du point d'integration
122 DO i=1,nel
123 ypt(i) = geo(ipy+ipt,pid(i))
124 zpt(i) = geo(ipz+ipt,pid(i))
125 apt(i) = geo(ipa+ipt,pid(i))
126 ENDDO
127C
128 DO i=1,nel
129 signxx(i) = zero
130 signxy(i) = zero
131 signxz(i) = zero
132C
133 sigoxx(i) = lbuf%SIG(ii(1)+i)
134 sigoxy(i) = lbuf%SIG(ii(2)+i)
135 sigoxz(i) = lbuf%SIG(ii(3)+i)
136 sigy_ipt(i) = sigy(i,ipt)
137 ENDDO
138c--- Deformations Incrementales
139 DO i = 1,nel
140 depsxx(i) = exx(i) - ypt(i)*kzz(i) + zpt(i)*kyy(i)
141 depsxy(i) = exy(i) + zpt(i)*kxx(i)
142 depsxz(i) = exz(i) - ypt(i)*kxx(i)
143 depsxy(i) = depsxy(i) / shfact
144 depsxz(i) = depsxz(i) / shfact
145 ENDDO
146c--- Total strain
147 IF (bufly%L_STRA > 0) THEN
148 DO i = 1,nel
149 lbuf%STRA(ii(1)+i) = lbuf%STRA(ii(1)+i) + depsxx(i)
150 lbuf%STRA(ii(2)+i) = lbuf%STRA(ii(2)+i) + depsxy(i)
151 lbuf%STRA(ii(3)+i) = lbuf%STRA(ii(3)+i) + depsxz(i)
152 ENDDO
153 DO i = 1,nel
154 epsxx(i) = lbuf%STRA(ii(1)+i)
155 epsxy(i) = lbuf%STRA(ii(2)+i)
156 epsxz(i) = lbuf%STRA(ii(3)+i)
157 END DO
158 ENDIF
159C
160C----------------------------------------------------------------
161C CONTRAINTES ELASTO-PLASTIQUES (LOIS DE COMPORTEMENT)
162C------------------------------------------
163 SELECT CASE(mtn)
164C---
165 CASE (34)
166 CALL sigeps34pi(
167 1 nel ,nuparam ,bufmat ,ipm ,imat ,
168 2 nuvar ,uvar ,depsxx ,depsxy ,depsxz ,
169 3 epsxx ,sigoxx ,sigoxy ,sigoxz ,
170 4 signxx ,signxy ,signxz ,dt1 ,
171 5 epsxy ,epsxz )
172C---
173 CASE (36)
174 CALL sigeps36pi(
175 1 nel ,ifunc ,ipt ,npf ,tf ,
176 2 ngl ,tt ,dt1 ,bufmat ,ipm ,
177 3 imat ,e ,g ,off ,depsxx ,
178 4 depsxy ,depsxz ,sigoxx ,sigoxy ,sigoxz ,
179 5 signxx ,signxy ,signxz ,etse ,lbuf%PLA,
180 6 epsp ,nvartmp ,vartmp ,sigy_ipt)
181C---
182 CASE (44)
183 CALL sigeps44pi(
184 1 nel ,nuparam ,bufmat ,ipm ,imat ,
185 2 off ,lbuf%PLA ,depsxx ,depsxy ,depsxz ,
186 3 sigoxx ,sigoxy ,sigoxz ,epsxx ,epsp ,
187 4 signxx ,signxy ,signxz ,etse ,nuvar ,
188 5 uvar ,ifunc ,nvartmp ,vartmp ,npf ,
189 6 tf ,nfunc ,sigy_ipt)
190C---
191 CASE (71)
192 CALL sigeps71pi(
193 1 nel ,nuparam ,bufmat ,ipm ,imat ,
194 2 off ,depsxx ,depsxy ,depsxz ,
195 3 sigoxx ,sigoxy ,sigoxz ,epsxx ,epsxy ,
196 4 epsxz ,signxx ,signxy ,signxz ,etse ,
197 5 nuvar ,uvar ,jthe ,tempel ,lbuf%FRAC,
198 7 lbuf%PLA) ! transformation strain is stored in PLA
199
200 DO i = 1,nel
201 gbuf%MAXFRAC(i) = max(gbuf%MAXFRAC(i) , lbuf%FRAC(i) )
202 gbuf%MAXEPS(ii(1)+i) = max(gbuf%MAXEPS(ii(1)+i) , abs(epsxx(i)))
203 gbuf%MAXEPS(ii(2)+i) = max(gbuf%MAXEPS(ii(2)+i) , abs(epsxy(i)))
204 gbuf%MAXEPS(ii(3)+i) = max(gbuf%MAXEPS(ii(3)+i) , abs(epsxz(i)))
205 ENDDO
206
207 CASE DEFAULT
208C---
209 END SELECT
210C----------------------------------------------------------------
211C--- Save stress components
212 DO i=1,nel
213 lbuf%SIG(ii(1)+i) = signxx(i)
214 lbuf%SIG(ii(2)+i) = signxy(i)
215 lbuf%SIG(ii(3)+i) = signxz(i)
216 sigy(i,ipt) = sigy_ipt(i)
217 ENDDO
218C-------------------------------------
219C FIN DE BOUCLE SUR POINT INTEGRATION
220C-------------------------------------
221 ENDDO
222C------------------------------------------
223 RETURN
224 END SUBROUTINE mulaw_ib
#define max(a, b)
Definition macros.h:21
subroutine mulaw_ib(elbuf_str, nel, npt, mtn, imat, pid, ngl, ipm, geo, off, epsp, bufmat, npf, tf, exx, exy, exz, kxx, kyy, kzz, jthe, tempel, sigy)
Definition mulaw_ib.F:42
subroutine sigeps34pi(nel, nuparam, uparam, ipm, imat, nuvar, uvar, depsxx, depsxy, depsxz, epsxx, sigoxx, sigoxy, sigoxz, signxx, signxy, signxz, timestep, epsxy, epsxz)
Definition sigeps34pi.F:34
subroutine sigeps36pi(nel, kfunc, ipt, npf, tf, ngl, time, timestep, uparam, ipm, imat, e, g, off, depsxx, depsxy, depsxz, sigoxx, sigoxy, sigoxz, signxx, signxy, signxz, etse, pla, epsp, nvartmp, vartmp, sigy)
Definition sigeps36pi.F:38
subroutine sigeps44pi(nel, nuparam, uparam, ipm, imat, off, pla, depsxx, depsxy, depsxz, sigoxx, sigoxy, sigoxz, epst, epsp, signxx, signxy, signxz, etse, nuvar, uvar, ifunc, nvartmp, vartmp, npf, tf, nfunc, sigy)
Definition sigeps44pi.F:37
subroutine sigeps71pi(nel, nuparam, uparam, ipm, imat, off, depsxx, depsxy, depsxz, sigoxx, sigoxy, sigoxz, epsxx, epsxy, epsxz, signxx, signxy, signxz, etse, nuvar, uvar, jthe, temp, fm, treps)
Definition sigeps71pi.F:35