OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i25sti_edg.F File Reference
#include "implicit_f.inc"
#include "param_c.inc"
#include "com04_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine i25sti_edg (nedge, ledge, stfe, stfm, igap, gape, gap_e_l, gap_m, gap_m_l, gap_s_l, bgapemx, intfric, ipartfric_e, ipartfricm, ipartsm, bgapemx_l, nsn, nsv)

Function/Subroutine Documentation

◆ i25sti_edg()

subroutine i25sti_edg ( integer nedge,
integer, dimension(nledge,*) ledge,
stfe,
stfm,
integer igap,
gape,
gap_e_l,
gap_m,
gap_m_l,
gap_s_l,
bgapemx,
integer intfric,
integer, dimension(*) ipartfric_e,
integer, dimension(*) ipartfricm,
integer, dimension(*) ipartsm,
bgapemx_l,
integer, intent(in) nsn,
integer, dimension(nsn), intent(in) nsv )

Definition at line 29 of file i25sti_edg.F.

34C-----------------------------------------------
35 USE intbuf_fric_mod
36C-----------------------------------------------
37C I m p l i c i t T y p e s
38C-----------------------------------------------
39#include "implicit_f.inc"
40C-----------------------------------------------
41C C o m m o n B l o c k s
42C-----------------------------------------------
43#include "param_c.inc"
44#include "com04_c.inc"
45C-----------------------------------------------
46C D u m m y A r g u m e n t s
47C-----------------------------------------------
48 INTEGER NEDGE,IGAP,INTFRIC,
49 . LEDGE(NLEDGE,*),IPARTFRIC_E(*) ,IPARTFRICM(*), IPARTSM(*)
50 INTEGER , INTENT(IN) :: NSN
51 INTEGER , INTENT(IN) :: NSV(NSN)
53 . stfe(*), gape(*), gap_e_l(*), stfm(*), gap_m(*), gap_m_l(*), gap_s_l(*), bgapemx,
54 . bgapemx_l
55C-----------------------------------------------
56C L o c a l V a r i a b l e s
57C-----------------------------------------------
58 INTEGER I, A, B, N1, N2, IPRTA, IPRTB, IPRTGA, IPRTGB
60 . stfa,stfb,gapa,gapb
61 INTEGER, DIMENSION(:),ALLOCATABLE :: TAGSLAV
62C-----------------------------------------------
63 DO i=1,nedge
64
65 stfa=zero
66 stfb=zero
67
68 a=ledge(1,i)
69 IF(a/=0) stfa=stfm(a)
70 b=ledge(3,i)
71 IF(b/=0) stfb=stfm(b)
72 IF(stfa/=zero.AND.stfb/=zero)THEN
73 IF(stfa + stfb < zero) THEN
74 stfe(i)= zero
75 ELSE
76 stfe(i)=two*stfa*stfb/max(zero,stfa+stfb)
77 END IF
78 ELSE
79 stfe(i)=max(stfa,stfb)
80 END IF
81 END DO
82C
83 bgapemx=zero
84 DO i=1,nedge
85
86 gapa=zero
87 gapb=zero
88
89 a=ledge(1,i)
90 IF(a/=0) gapa=gap_m(a)
91 b=ledge(3,i)
92 IF(b/=0) gapb=gap_m(b)
93 gape(i)=max(gapa,gapb)
94
95 bgapemx = max(bgapemx,gape(i)) ! BGAPEMX overall the model
96
97 END DO
98
99 bgapemx_l=zero
100 IF(igap==3)THEN
101 ALLOCATE(tagslav(numnod))
102 tagslav(1:numnod) = 0
103 DO i=1,nsn
104 tagslav(nsv(i)) = i
105 ENDDO
106 DO i=1,nedge
107 n1=ledge(5,i)
108 n2=ledge(6,i) ! 4-node segment
109 gap_e_l(i)=min(gap_s_l(tagslav(n1)),gap_s_l(tagslav(n2))) ! O-----------------O
110 ! Edge1 Edge2
111
112 bgapemx_l = max(bgapemx_l,gap_e_l(i)) ! BGAPEMX_L overall the model
113 END DO
114 DEALLOCATE(tagslav)
115 END IF
116
117 IF(intfric > 0) THEN
118 DO i=1,nedge
119 iprta=0
120 iprtb=0
121
122 iprtga=0
123 iprtgb=0
124
125 a=ledge(1,i)
126 IF(a/=0) iprtga=ipartsm(a)
127 IF(a/=0) iprta=ipartfricm(a)
128
129 b=ledge(3,i)
130 IF(b/=0) iprtgb=ipartsm(b)
131 IF(b/=0) iprtb=ipartfricm(b)
132
133 IF(iprta == iprtb) THEN
134 ipartfric_e(i) = iprta
135 ELSE
136 IF(iprtga > iprtgb ) THEN ! bigger part id is taken
137 ipartfric_e(i) = iprta
138 ELSE
139 ipartfric_e(i) = iprtb
140 ENDIF
141 ENDIF
142 END DO
143 ENDIF
144C
145 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21