OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m27elas.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!|| m27elas ../engine/source/materials/mat/mat027/m27elas.F
25!||--- called by ------------------------------------------------------
26!|| sigeps27c ../engine/source/materials/mat/mat027/sigeps27c.F
27!||====================================================================
28 SUBROUTINE m27elas(JFT ,JLT ,PM ,SIG ,IMAT ,
29 2 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX,
30 3 DAMT ,CRAK ,SHF ,NEL )
31C-----------------------------------------------
32C I m p l i c i t T y p e s
33C-----------------------------------------------
34#include "implicit_f.inc"
35C-----------------------------------------------
36C G l o b a l P a r a m e t e r s
37C-----------------------------------------------
38#include "mvsiz_p.inc"
39C-----------------------------------------------
40C C o m m o n B l o c k s
41C-----------------------------------------------
42#include "param_c.inc"
43C-----------------------------------------------
44C D u m m y A r g u m e n t s
45C-----------------------------------------------
46 INTEGER JFT, JLT,IMAT,NEL
47C REAL
49 . pm(npropm,*),damt(nel,2),crak(nel,2),shf(*),
50 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
51 . depszx(mvsiz)
52 my_real, INTENT(INOUT) :: sig(nel,5)
53C-----------------------------------------------
54C L o c a l V a r i a b l e s
55C-----------------------------------------------
56 INTEGER I
57C REAL
59 . e(mvsiz),nu(mvsiz),g(mvsiz),de1(mvsiz),de2(mvsiz),
60 . eel1(mvsiz),eel2(mvsiz),eel3(mvsiz),eel4(mvsiz),eel5(mvsiz),
61 . a11(mvsiz),a22(mvsiz),a12(mvsiz),epst1(mvsiz),epst2(mvsiz),
62 . epsm1(mvsiz),epsm2(mvsiz),dmax1(mvsiz),dmax2(mvsiz),
63 . scale1,scale2
64C-----------------------------------------------
65#include "vectorize.inc"
66 DO i=jft,jlt
67 e(i) = pm(20,imat)
68 nu(i) = pm(21,imat)
69 g(i) = pm(22,imat)
70 epst1(i) = pm(60,imat)
71 epst2(i) = pm(61,imat)
72 epsm1(i) = pm(62,imat)
73 epsm2(i) = pm(63,imat)
74 dmax1(i) = pm(64,imat)
75 dmax2(i) = pm(65,imat)
76 ENDDO
77C--------------------------------------
78C ANCIENNES DEFORMATIONS ELASTIQUES
79C ANCIEN DOMMAGE EFFECTIF:
80C SIG>0 => DE =1-D
81C SIG<0 => DE =1
82C--------------------------------------
83#include "vectorize.inc"
84 DO i=jft,jlt
85 de1(i) = one - max(zero,sign(damt(i,1),sig(i,1)))
86 de2(i) = one - max(zero,sign(damt(i,2),sig(i,2)))
87 scale1 =(half
88 . +sign(half,de1(i)-one))*(half+sign(half,de2(i)-one))
89 eel1(i) = (sig(i,1)/de1(i)-nu(i)*sig(i,2)*scale1)/e(i)
90 eel2(i) = (sig(i,2)/de2(i)-nu(i)*sig(i,1)*scale1)/e(i)
91 eel3(i) = sig(i,3)/de1(i)/de2(i)/g(i)
92 eel4(i) = sig(i,4)/max(de2(i)*g(i)*shf(i),em30)
93 eel5(i) = sig(i,5)/max(de1(i)*g(i)*shf(i),em30)
94 ENDDO
95C----------------------------------------
96C NOUVELLES DEFORMATIONS "ELASTIQUES"
97C----------------------------------------
98 DO i=jft,jlt
99 eel1(i) = eel1(i)+depsxx(i)
100 eel2(i) = eel2(i)+depsyy(i)
101 eel3(i) = eel3(i)+depsxy(i)
102 eel4(i) = eel4(i)+depsyz(i)
103 eel5(i) = eel5(i)+depszx(i)
104 ENDDO
105C----------------------------------------
106C NOUVEAU DOMMAGE DES ELEMENTS CASSES
107C----------------------------------------
108 DO i=jft,jlt
109 IF (damt(i,1) /= zero) THEN
110 crak(i,1) = crak(i,1) + depsxx(i)
111 damt(i,1) = max(damt(i,1),crak(i,1)/(epsm1(i)-epst1(i)))
112 damt(i,1) = min(damt(i,1),dmax1(i))
113 ENDIF
114 ENDDO
115C
116 DO i=jft,jlt
117 IF (damt(i,2) /= zero) THEN
118 crak(i,2) = crak(i,2) + depsyy(i)
119 damt(i,2) = max(damt(i,2),crak(i,2)/(epsm2(i)-epst2(i)))
120 damt(i,2) = min(damt(i,2),dmax2(i))
121 ENDIF
122 ENDDO
123C-----------------------------
124C CONTRAINTES "ELASTIQUES"
125C-----------------------------
126 DO i=jft,jlt
127 de1(i) = one - max(zero,sign(damt(i,1),sig(i,1)))
128 de2(i) = one - max(zero,sign(damt(i,2),sig(i,2)))
129 scale1 =(half
130 . +sign(half,de1(i)-one))*(half+sign(half,de2(i)-one))
131 scale2 = one-nu(i)*nu(i)*scale1
132 a11(i) = e(i)*de1(i)/scale2
133 a22(i) = e(i)*de2(i)/scale2
134 a12(i) = nu(i)*a11(i)*scale1
135 ENDDO
136C
137 DO i=jft,jlt
138 sig(i,1) = a11(i)*eel1(i)+a12(i)*eel2(i)
139 sig(i,2) = a12(i)*eel1(i)+a22(i)*eel2(i)
140 sig(i,3) = de1(i)*de2(i)*g(i)*eel3(i)
141 sig(i,4) = de2(i)*g(i)*shf(i)*eel4(i)
142 sig(i,5) = de1(i)*g(i)*shf(i)*eel5(i)
143 ENDDO
144C
145 RETURN
146 END
147
#define my_real
Definition cppsort.cpp:32
subroutine m27elas(jft, jlt, pm, sig, imat, depsxx, depsyy, depsxy, depsyz, depszx, damt, crak, shf, nel)
Definition m27elas.F:31
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21