OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s10_icp.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!|| s10_icp ../engine/source/elements/solid/solide4_sfem/s10_icp.f
25!||--- called by ------------------------------------------------------
26!|| s10forc3 ../engine/source/elements/solid/solide10/s10forc3.F
27!||--- calls -----------------------------------------------------
28!|| jacob_j33 ../engine/source/elements/solid/solide8e/jacob_j33.F
29!||====================================================================
30 SUBROUTINE s10_icp(
31 1 OFFG, JACG, FACP, NU,
32 2 DXX, DXY, DXZ, DYX,
33 3 DYY, DYZ, DZX, DZY,
34 4 DZZ, VOL0, VOLN, VOL0DP,
35 5 VOLDP, NEL, ISMSTR)
36C-----------------------------------------------
37C I m p l i c i t T y p e s
38C-----------------------------------------------
39#include "implicit_f.inc"
40C-----------------------------------------------
41C G l o b a l P a r a m e t e r s
42C-----------------------------------------------
43#include "mvsiz_p.inc"
44C-----------------------------------------------
45C D u m m y A r g u m e n t s
46C-----------------------------------------------
47 INTEGER, INTENT(IN) :: ISMSTR
48 INTEGER NEL
49C REAL
50 my_real ,DIMENSION(NEL) ,INTENT(IN) :: OFFG,VOL0
51 DOUBLE PRECISION , DIMENSION(NEL) ,INTENT(IN) :: VOL0DP
52 my_real ,DIMENSION(MVSIZ) ,INTENT(IN) :: jacg,facp,nu
53 my_real ,DIMENSION(MVSIZ) ,INTENT(INOUT) :: voln,
54 . dxx, dxy, dxz,
55 . dyx, dyy, dyz,
56 . dzx, dzy, dzz
57 DOUBLE PRECISION , DIMENSION(NEL) ,INTENT(INOUT) :: VOLDP
58C-----------------------------------------------
59C C o m m o n B l o c k s
60C-----------------------------------------------
61#include "scr05_c.inc"
62C-----------------------------------------------
63C L o c a l V a r i a b l e s
64C-----------------------------------------------
65 INTEGER I, K
66 my_real
67 . JAC(MVSIZ),FAC,BASE,JFAC
68
69C----------------------------
70 IF(ismstr==1.OR.ismstr>=10)THEN
71 IF (ismstr==10) THEN
72 CALL jacob_j33(
73 1 jac, dxx, dxy, dxz,
74 2 dyx, dyy, dyz, dzx,
75 3 dzy, dzz, nel)
76 DO i=1,nel
77 IF(offg(i)==zero.OR.abs(offg(i))>one) cycle
78 fac=two_third*nu(i)
79 base = jacg(i)/max(em20,jac(i))
80 jfac =exp(fac*log(max(em20,base)))
81 dxx(i) = jfac*dxx(i)+jfac-one
82 dyy(i) = jfac*dyy(i)+jfac-one
83 dzz(i) = jfac*dzz(i)+jfac-one
84 dxy(i) = jfac*dxy(i)
85 dyx(i) = jfac*dyx(i)
86 dzx(i) = jfac*dzx(i)
87 dxz(i) = jfac*dxz(i)
88 dyz(i) = jfac*dyz(i)
89 dzy(i) = jfac*dzy(i)
90 voln(i) = jfac*voln(i)
91 ENDDO
92 END IF
93 ELSE
94c-------------------------------------------------------------------------
95 IF(iresp==1)THEN
96 DO i=1,nel
97 IF(offg(i)==zero.OR.abs(offg(i))>one) cycle
98 voldp(i) = (one-facp(i))*voldp(i)+facp(i)*jacg(i)*vol0dp(i)
99 voln(i) = voldp(i)
100 ENDDO
101 ELSE
102 DO i=1,nel
103 IF(offg(i)==zero.OR.abs(offg(i))>one) cycle
104 voln(i) = (one-facp(i))*voln(i)+facp(i)*jacg(i)*vol0(i)
105 ENDDO
106 ENDIF
107 END IF !(ISMSTR==1.OR.ISMSTR>=10)THEN
108C
109 RETURN
110 END SUBROUTINE s10_icp
subroutine jacob_j33(det, aj1, aj2, aj3, aj4, aj5, aj6, aj7, aj8, aj9, nel)
Definition jacob_j33.F:37
#define max(a, b)
Definition macros.h:21
subroutine s10_icp(offg, jacg, facp, nu, dxx, dxy, dxz, dyx, dyy, dyz, dzx, dzy, dzz, vol0, voln, vol0dp, voldp, nel, ismstr)
Definition s10_icp.F:36