OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
xfem_crk_dir.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!|| xfem_crk_dir ../engine/source/elements/xfem/xfem_crk_dir.F
25!||--- called by ------------------------------------------------------
26!|| mulawc ../engine/source/materials/mat_share/mulawc.F90
27!|| usermat_shell ../engine/source/materials/mat_share/usermat_shell.F
28!||====================================================================
29 SUBROUTINE xfem_crk_dir(NEL ,ILAY ,IXFEM ,ELCRKINI,
30 . DIR_A ,TENS ,DIR1_CRK,DIR2_CRK,IROT)
31C-----------------------------------------------
32C I m p l i c i t T y p e s
33C-----------------------------------------------
34#include "implicit_f.inc"
35#include "com_xfem1.inc"
36C-----------------------------------------------
37C I N P U T A r g u m e n t s
38C-----------------------------------------------
39 INTEGER NEL,ILAY,IXFEM,IROT
40 INTEGER ELCRKINI(NXLAYMAX,*)
41 my_real dir_a(nel,2),tens(nel,5),dir1_crk(nxlaymax,nel),
42 . dir2_crk(nxlaymax,nel)
43C-----------------------------------------------
44C L o c a l V a r i a b l e s
45C-----------------------------------------------
46 INTEGER JCT(NEL)
47 INTEGER I,IR,NEWCRK
48 my_real cc,bb,cr,orm,ss1,ss2,s1,s2,s3,s4,s5
49C=======================================================================
50 newcrk = 0
51 DO i=1,nel
52 jct(i) = 0
53 IF (abs(elcrkini(ilay,i)) == 1) THEN ! new crack (init or adv)
54 newcrk = newcrk + 1
55 jct(newcrk) = i
56 ENDIF
57 ENDDO
58 IF (newcrk == 0) RETURN
59c------------------------------------------
60c crack directions dans le repere coque
61c------------------------------------------
62 IF (irot > 0) THEN
63 DO ir=1,newcrk
64 i = jct(ir)
65 s1 = dir_a(i,1)*dir_a(i,1)*tens(i,1)
66 . + dir_a(i,2)*dir_a(i,2)*tens(i,2)
67 . - two*dir_a(i,1)*dir_a(i,2)*tens(i,3)
68 s2 = dir_a(i,2)*dir_a(i,2)*tens(i,1)
69 . + dir_a(i,1)*dir_a(i,1)*tens(i,2)
70 . + two*dir_a(i,2)*dir_a(i,1)*tens(i,3)
71 s3 = dir_a(i,1)*dir_a(i,2)*tens(i,1)
72 . - dir_a(i,2)*dir_a(i,1)*tens(i,2)
73 . +(dir_a(i,1)*dir_a(i,1)-dir_a(i,2)*dir_a(i,2))*tens(i,3)
74 s4 = dir_a(i,2)*tens(i,5)+dir_a(i,1)*tens(i,4)
75 s5 = dir_a(i,1)*tens(i,5)-dir_a(i,2)*tens(i,4)
76 tens(i,1) = s1
77 tens(i,2) = s2
78 tens(i,3) = s3
79 tens(i,4) = s4
80 tens(i,5) = s5
81 ENDDO
82 ENDIF
83c
84 DO ir=1,newcrk
85 i = jct(ir)
86 cc = (tens(i,1)+tens(i,2))*half
87 bb = (tens(i,1)-tens(i,2))*half
88 cr = sqrt(bb*bb+tens(i,3)*tens(i,3))
89 ss1 = cc+cr
90 ss2 = cc-cr
91 dir1_crk(ilay,i) = tens(i,3)
92 dir2_crk(ilay,i) = ss1-tens(i,1)
93 orm = dir1_crk(ilay,i)*dir1_crk(ilay,i)+
94 . dir2_crk(ilay,i)*dir2_crk(ilay,i)
95 orm = sqrt(orm)
96 IF (orm < em8) THEN
97 dir1_crk(ilay,i)=one
98 dir2_crk(ilay,i)=zero
99 ELSE
100 dir1_crk(ilay,i)=dir1_crk(ilay,i)/orm
101 dir2_crk(ilay,i)=dir2_crk(ilay,i)/orm
102 ENDIF
103 ENDDO
104C-----------
105 RETURN
106 END
#define my_real
Definition cppsort.cpp:32
subroutine xfem_crk_dir(nel, ilay, ixfem, elcrkini, dir_a, tens, dir1_crk, dir2_crk, irot)