33 . IFIEND,IRECT,NSV,I_STOK,CAND_E,
34 . CAND_N,DGAPLOAD,GAP_S,GAP_M,X,INTER_CAND,
35 . INTER_KIND,INTBUF_TAB,IEDGE,NLEDGE)
54#include "implicit_f.inc"
58 INTEGER,
INTENT(inout) :: NELEMINT
59 INTEGER,
INTENT(in) :: INTERFACE_ID
60 INTEGER,
INTENT(in) :: NSN
61 INTEGER,
INTENT(in) :: NRTM
62 INTEGER,
INTENT(inout) :: IFIEND
63 INTEGER,
DIMENSION(4,NRTM) :: IRECT
64 INTEGER,
DIMENSION(NSN) :: NSV
65 INTEGER,
INTENT(in) :: I_STOK
66 INTEGER,
INTENT(in) :: NUMNOD
67 INTEGER,
DIMENSION(I_STOK),
INTENT(in) :: CAND_E
68 INTEGER,
DIMENSION(I_STOK),
INTENT(in) :: CAND_N
69 INTEGER,
INTENT(in) :: INTER_KIND
70 INTEGER,
INTENT(in) :: IEDGE
71 INTEGER,
INTENT(in) :: NLEDGE
74 my_real,
DIMENSION(NSN) :: gap_s
75 my_real,
DIMENSION(NRTM) :: gap_m
76 my_real,
DIMENSION(3,NUMNOD),
INTENT(in) :: x
78 TYPE(intbuf_struct_),
INTENT(in) :: INTBUF_TAB
83 INTEGER :: S_EDGE_ID,M_EDGE_ID
85 INTEGER :: SEGMENT_ID_TYPE24
86 INTEGER :: NODE_ID_1,NODE_ID_2
88 INTEGER :: IX1,IX2,IX3,IX4
90 . xmin,xmax,ymin,
ymax,zmin,zmax,threshold,
91 . xi,x1,x2,x3,x4,yi,y1,y2,y3,y4,zi,z1,z2,z3,z4
93 inter_cand%IXINT(1:inter_cand%S_IXINT_1,nelemint+1:nelemint+i_stok) = 0
94 inter_cand%ADDRESS(interface_id) = nelemint
96 ! loop over
the s candidates
99 s_node_id = nsv(cand_n(i))
100 segment_id = cand_e(i)
105 IF (s_node_id >numnod.AND.inter_kind==24)
THEN
106 s_node_id = s_node_id - numnod
107 CALL i24fic_getn(s_node_id,intbuf_tab%IRTSE,intbuf_tab%IS2SE,segment_id_type24,node_id_1,node_id_2)
108 s_node_id = node_id_1
114 ix1=irect(1,segment_id)
115 ix2=irect(2,segment_id)
116 ix3=irect(3,segment_id)
117 ix4=irect(4,segment_id)
119 inter_cand%IXINT(1,nelemint+ii) = ix1
120 inter_cand%IXINT(2,nelemint+ii) = ix2
121 inter_cand%IXINT(3,nelemint+ii) = ix3
122 inter_cand%IXINT(4,nelemint+ii) = ix4
123 inter_cand%IXINT(5,nelemint+ii) = s_node_id
124 inter_cand%IXINT(6,nelemint+ii) = inter_kind
125 inter_cand%IXINT(7,nelemint+ii) = segment_id
126 inter_cand%IXINT(8,nelemint+ii) = interface_id
133 threshold=gap_s(cand_n(i))+gap_m(cand_e(i))+dgapload
134 zmin =
min(z1,z2,z3,z4)-threshold
135 zmax =
max(z1,z2,z3,z4)+threshold
136 IF (zmin<=zi.AND.zmax>=zi)
THEN
142 ymin =
min(y1,y2,y3,y4)-threshold
143 ymax =
max(y1,y2,y3,y4)+threshold
144 IF (ymin<=yi.AND.
ymax>=yi)
THEN
150 xmin =
min(x1,x2,x3,x4)-threshold
151 xmax =
max(x1,x2,x3,x4)+threshold
152 IF (xmin<=xi.AND.xmax>=xi)
THEN
153 inter_cand%IXINT(6,nelemint+ii)=-inter_kind
161 IF(inter_kind==25.AND.iedge>0)
THEN
164 DO i = 1, intbuf_tab%I_STOK_E(1)
168 s_edge_id = intbuf_tab%CANDS_E2E(i)
169 m_edge_id = intbuf_tab%CANDM_E2E(i)
172 s_node_id = intbuf_tab%LEDGE((s_edge_id-1)*nledge+5)
177 ix1=intbuf_tab%LEDGE((m_edge_id-1)*nledge+5)
178 ix2=intbuf_tab%LEDGE((m_edge_id-1)*nledge+6)
183 inter_cand%IXINT(1,nelemint+ii) = ix1
184 inter_cand%IXINT(2,nelemint+ii) = ix2
185 inter_cand%IXINT(3,nelemint+ii) = ix3
186 inter_cand%IXINT(4,nelemint+ii) = ix4
187 inter_cand%IXINT(5,nelemint+ii) = s_node_id
188 inter_cand%IXINT(6,nelemint+ii) = inter_kind
189 inter_cand%IXINT(7,nelemint+ii) = m_edge_id
190 inter_cand%IXINT(8,nelemint+ii) = interface_id
196 DO i = 1, intbuf_tab%I_STOK_E(2)
200 s_edge_id = intbuf_tab%CANDS_E2S(i)
201 segment_id = intbuf_tab%CANDM_E2S(i)
204 s_node_id = intbuf_tab%LEDGE((s_edge_id-1)*nledge+5)
209 ix1=irect(1,segment_id)
210 ix2=irect(2,segment_id)
211 ix3=irect(3,segment_id)
212 ix4=irect(4,segment_id)
215 inter_cand%IXINT(1,nelemint+ii) = ix1
216 inter_cand%IXINT(2,nelemint+ii) = ix2
217 inter_cand%IXINT(3,nelemint+ii) = ix3
218 inter_cand%IXINT(4,nelemint+ii) = ix4
219 inter_cand%IXINT(5,nelemint+ii) = s_node_id
220 inter_cand%IXINT(6,nelemint+ii) = inter_kind
221 inter_cand%IXINT(7,nelemint+ii) = segment_id
222 inter_cand%IXINT(8,nelemint+ii) = interface_id
229 nelemint = nelemint + ii
230 inter_cand%ADDRESS(interface_id+1) = nelemint
subroutine update_weight_inter_type_24_25(numnod, nelemint, interface_id, nsn, nrtm, ifiend, irect, nsv, i_stok, cand_e, cand_n, dgapload, gap_s, gap_m, x, inter_cand, inter_kind, intbuf_tab, iedge, nledge)