OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps19c.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!|| sigeps19c ../engine/source/materials/mat/mat019/sigeps19c.f
25!||--- called by ------------------------------------------------------
26!|| mulawc ../engine/source/materials/mat_share/mulawc.f90
27!||--- uses -----------------------------------------------------
28!|| sensor_mod ../common_source/modules/sensor_mod.F90
29!||====================================================================
30 SUBROUTINE sigeps19c(
31 . NEL ,NUPARAM,NIPARAM,FLAG_ZCFAC,ZCFAC ,SHF ,
32 . UPARAM ,IPARAM ,NPTTOT ,SSP ,NSENSOR,
33 . EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
34 . SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
35 . SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
36 . SIGI ,SENSOR_TAB)
37C-----------------------------------------------
38C M o d u l e s
39C-----------------------------------------------
40 USE sensor_mod
41C-----------------------------------------------
42C I m p l i c i t T y p e s
43C-----------------------------------------------
44#include "implicit_f.inc"
45C-----------------------------------------------
46C G l o b a l P a r a m e t e r s
47C-----------------------------------------------
48#include "mvsiz_p.inc"
49C-----------------------------------------------
50C C o m m o n B l o c k s
51C-----------------------------------------------
52#include "com04_c.inc"
53#include "com08_c.inc"
54C-----------------------------------------------
55C D u m m y A r g u m e n t s
56C-----------------------------------------------
57 INTEGER ,INTENT(IN) :: NEL
58 INTEGER ,INTENT(IN) :: NPTTOT
59 INTEGER ,INTENT(IN) :: NUPARAM
60 INTEGER ,INTENT(IN) :: NIPARAM
61 INTEGER ,INTENT(IN) :: NSENSOR
62 LOGICAL ,INTENT(IN) :: FLAG_ZCFAC
63 my_real ,DIMENSION(MVSIZ,2) ,INTENT(INOUT) :: zcfac
64 INTEGER ,DIMENSION(NIPARAM) ,INTENT(IN) :: IPARAM
65 my_real ,DIMENSION(NUPARAM) ,INTENT(IN) :: uparam
66 my_real ,DIMENSION(NEL) ,INTENT(IN) :: shf,
67 . epsxx,epsyy,epsxy,epsyz,epszx,sigoxx,sigoyy,sigoxy,sigoyz,sigozx
68 my_real ,DIMENSION(NEL) ,INTENT(OUT) :: ssp,
69 . signxx,signyy,signxy,signyz,signzx
70 my_real ,DIMENSION(NEL,3) ,INTENT(INOUT) :: sigi
71 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
72C-----------------------------------------------
73C L o c a l V a r i a b l e s
74C-----------------------------------------------
75 INTEGER :: I,II,ISENS
76 my_real :: e11,e22,nu12,nu21,g12,g23,g31,a11,a12,a22,rcomp,
77 . s,d,t,p1,p2,r,beta,zerostress,tstart,dsig
78 my_real ,DIMENSION(NEL) :: et
79C=======================================================================
80 isens = iparam(1)
81 e11 = uparam(1)
82 e22 = uparam(2)
83 nu12 = uparam(3)
84 nu21 = uparam(4)
85 g12 = uparam(5)
86 g23 = uparam(6)
87 g31 = uparam(7)
88 rcomp = uparam(8)
89 a11 = uparam(10)
90 a22 = uparam(11)
91 a12 = uparam(12)
92 zerostress = uparam(14)
93 ssp(1:nel) = uparam(9)
94 tstart = zero
95c-------------------------
96 DO i=1,nel
97 signxx(i) = a11*epsxx(i) + a12*epsyy(i)
98 signyy(i) = a12*epsxx(i) + a22*epsyy(i)
99 signxy(i) = g12*epsxy(i)
100 signyz(i) = g23*epsyz(i)*shf(i)
101 signzx(i) = g31*epszx(i)*shf(i)
102 ENDDO
103C-----------------------------
104C CONTRAINTES reduites en compression
105C-----------------------------
106 DO i=1,nel
107 s = half*(signxx(i) + signyy(i))
108 d = half*(signxx(i) - signyy(i))
109 r = sqrt(signxy(i)**2 + d*d)
110 p1 = s - r
111 et(i) = one
112 IF (p1 < zero) THEN
113 p2 = s + r
114 IF (p2 > zero) THEN
115 beta = half*((one-rcomp)*s/r + one+rcomp)
116 signxx(i) = beta*(signxx(i)-p2) + p2
117 signyy(i) = beta*(signyy(i)-p2) + p2
118 signxy(i) = beta*signxy(i)
119 ELSE
120 beta = rcomp
121 signxx(i) = beta*signxx(i)
122 signyy(i) = beta*signyy(i)
123 signxy(i) = beta*signxy(i)
124 ENDIF
125 et(i) = beta
126 ENDIF
127 ENDDO
128c-----------------------------------------------------------
129c REF-STATE ZEROSTRESS OPTION
130c-----------------------------------------------------------
131 IF (zerostress /= zero) THEN
132 IF (isens > 0) tstart = sensor_tab(isens)%TSTART
133c
134 IF (tt <= tstart) THEN
135 DO i=1,nel
136 sigi(i,1) = signxx(i)
137 sigi(i,2) = signyy(i)
138 sigi(i,3) = signxy(i)
139 signxx(i) = zero
140 signyy(i) = zero
141 signxy(i) = zero
142 END DO
143 ELSE
144 DO i=1,nel
145 dsig = signxx(i) - sigoxx(i) - sigi(i,1)
146 IF (sigi(i,1) > zero .AND. dsig < zero) THEN
147 sigi(i,1) = max(zero,sigi(i,1) + zerostress*dsig)
148 ELSEIF (sigi(i,1) < zero .AND. dsig > zero) THEN
149 sigi(i,1) = min(zero,sigi(i,1) + zerostress*dsig)
150 ENDIF
151 dsig = signyy(i) - sigoyy(i) - sigi(i,2)
152 IF (sigi(i,2) > zero .AND. dsig < zero) THEN
153 sigi(i,2) = max(zero,sigi(i,2) + zerostress*dsig)
154 ELSEIF (sigi(i,2) < zero .AND. dsig > zero) THEN
155 sigi(i,2) = min(zero,sigi(i,2) + zerostress*dsig)
156 ENDIF
157 dsig = signxy(i) - sigoxy(i) - sigi(i,3)
158 IF (sigi(i,3) > zero .AND. dsig < zero) THEN
159 sigi(i,3) = max(zero,sigi(i,3)+zerostress*dsig)
160 ELSEIF (sigi(i,3) < zero .AND. dsig > zero) THEN
161 sigi(i,3) = min(zero,sigi(i,3) + zerostress*dsig)
162 ENDIF
163 signxx(i) = signxx(i) - sigi(i,1)
164 signyy(i) = signyy(i) - sigi(i,2)
165 signxy(i) = signxy(i) - sigi(i,3)
166 ENDDO
167 ENDIF
168 ENDIF
169c
170C------for QEPH-------
171 IF (flag_zcfac) THEN
172 DO i=1,nel
173 zcfac(i,1) = zcfac(i,1) + et(i) / npttot
174 zcfac(i,2) = min(et(i),zcfac(i,2))
175 ENDDO
176 ENDIF
177c--------------------------------------------------------
178 RETURN
179 END
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine sigeps19c(nel, nuparam, niparam, flag_zcfac, zcfac, shf, uparam, iparam, npttot, ssp, nsensor, epsxx, epsyy, epsxy, epsyz, epszx, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, sigi, sensor_tab)
Definition sigeps19c.F:37