45
46
47
48
49
50
51
54 USE intbufdef_mod
55
56
57
58#include "implicit_f.inc"
59
60
61
62 INTEGER IPARI(*),ITAB(*),TEST,ISKWN(*)
64
65 TYPE(INTBUF_STRUCT_)
66 TYPE(t_segvar) :: SEGVAR
67
68
69
70#include "param_c.inc"
71#include "scr06_c.inc"
72#include "units_c.inc"
73#include "mvsiz_p.inc"
74
75
76
77
78 INTEGER ITIED,NOINT,NGROUS,NGROUM,NG,
79 . L1 ,L2 ,L3 ,L4,L5,L6
80 INTEGER JCODV(ALE%GLOBAL%LCONV),CODTOT,I,ITEST,ILEV,IREF,ICEN
81 INTEGER, DIMENSION(MVSIZ) :: IX1,IX2,IX3,IX4
82 my_real
83 . GAP
84 my_real, DIMENSION(MVSIZ) :: X1,X2,X3,X4,XI
85 my_real, DIMENSION(MVSIZ) :: Y1,Y2,Y3,Y4,YI
86 my_real, DIMENSION(MVSIZ) :: Z1,Z2,Z3,Z4,ZI
87 my_real, DIMENSION(MVSIZ) :: XFACE,N1,N2,N3
88 my_real, DIMENSION(MVSIZ) :: SSC,TTC,AREA,THK,ALP
89 my_real, DIMENSION(MVSIZ) :: X0,Y0,Z0,ANS
90 my_real, DIMENSION(MVSIZ) :: XX1,XX2,XX3,XX4
91 my_real, DIMENSION(MVSIZ) :: YY1,YY2,YY3,YY4
92 my_real, DIMENSION(MVSIZ) :: ZZ1,ZZ2,ZZ3,ZZ4
93 my_real, DIMENSION(MVSIZ) :: XI1,XI2,XI3,XI4
94 my_real, DIMENSION(MVSIZ) :: YI1,YI2,YI3,YI4
95 my_real, DIMENSION(MVSIZ) :: ZI1,ZI2,ZI3,ZI4
96 my_real, DIMENSION(MVSIZ) :: XN1,XN2,XN3,XN4
97 my_real, DIMENSION(MVSIZ) :: YN1,YN2,YN3,YN4
98 my_real, DIMENSION(MVSIZ) :: ZN1,ZN2,ZN3,ZN4
99 my_real, DIMENSION(MVSIZ) :: XP,YP,ZP
100 my_real, DIMENSION(MVSIZ) :: H1,H2,H3,H4
101 INTEGER :: NRTS, NRTM, NSN, NMN, NST, MST
102 INTEGER :: LFT, LLT, NFT
103
104 ITEST =0
105
106 NRTS =IPARI(3)
107 NRTM =IPARI(4)
108 NSN =IPARI(5)
109 NMN =IPARI(6)
110 NST =IPARI(8)
111 MST =IPARI(9)
112 NOINT =IPARI(15)
113 ILEV=IPARI(20)
114 IREF=IPARI(21)
115 ICEN=IPARI(22)
116 CALL VARCONDEC(JCODV,IPARI(30),CODTOT)
117
118 NGROUS=1+(NSN-1)/NVSIZ
119 NGROUM=1+(NMN-1)/NVSIZ
120
121 ITIED=INT(INTBUF_TAB%VARIABLES(1))
122 GAP =INTBUF_TAB%VARIABLES(2)
123.OR. IF(ITIED==0 ITIED==3)THEN
124 L1=1
125 L2=L1+3*NSN
126 L3=L2+3*NMN
127 CALL I12GATHCOR(X,WA(L1),WA(L2),NSN,NMN,INTBUF_TAB%NSV,INTBUF_TAB%MSR)
128
129 DO NG=1,NGROUS
130 NFT=(NG-1)*NVSIZ
131 LFT=1
132 LLT=MIN0(NVSIZ,NSN-NFT)
133 !----------------------------------------------!
134 ! FIND NEAREST NODE !
135 !----------------------------------------------!
136 CALL I12LOC3(
137 1 WA(L1), WA(L2), INTBUF_TAB%IRECTM,INTBUF_TAB%LMSR,
138 2 INTBUF_TAB%MSR, INTBUF_TAB%NSV, INTBUF_TAB%ILOCS, INTBUF_TAB%NSEGM,
139 3 LFT, LLT, NFT)
140
141 !----------------------------------------------!
142 ! FIND MAIN SEGMENT
143 !----------------------------------------------!
144 CALL I12MSR3(
145 1 WA(L1), WA(L2), INTBUF_TAB%IRECTM,INTBUF_TAB%LMSR,
146 2 INTBUF_TAB%MSR, INTBUF_TAB%NSV, INTBUF_TAB%ILOCS, INTBUF_TAB%IRTLM,
147 3 INTBUF_TAB%NSEGM, LFT, LLT, NFT)
148 ENDDO
149
150 IF(ILEV>0)
151 & CALL I12ROT3(WA(L1),WA(L2),X,SKEW,ISKWN,ILEV,IREF,ICEN,NSN,NMN,
152 & INTBUF_TAB%STFNS,INTBUF_TAB%STFNM)
153
154 DO NG=1,NGROUS
155 NFT=(NG-1)*NVSIZ
156 LFT=1
157 LLT=MIN0(NVSIZ,NSN-NFT)
158 CALL I12COR3(
159 1 WA(L1), WA(L2), INTBUF_TAB%IRECTM,INTBUF_TAB%MSR,
160 2 INTBUF_TAB%IRTLM, ILEV, X, INTBUF_TAB%STFNS,
161 3 IX1, IX2, IX3, IX4,
162 4 X1, X2, X3, X4,
163 5 XI, Y1, Y2, Y3,
164 6 Y4, YI, Z1, Z2,
165 7 Z3, Z4, ZI, XFACE,
166 8 LFT, LLT, NFT)
167 !-----------------------------------------------------------!
168 ! CALCUL COORDONNEES ISOPARAMETRIQUES S & T NOEUD SECONDARY !
169 !-----------------------------------------------------------!
170 CALL I3CST3(
171 1 X1, X2, X3, X4,
172 2 XI, Y1, Y2, Y3,
173 3 Y4, YI, Z1, Z2,
174 4 Z3, Z4, ZI, XFACE,
175 5 N1, N2, N3, SSC,
176 6 TTC, X0, Y0, Z0,
177 7 XX1, XX2, XX3, XX4,
178 8 YY1, YY2, YY3, YY4,
179 9 ZZ1, ZZ2, ZZ3, ZZ4,
180 A XI1, XI2, XI3, XI4,
181 B YI1, YI2, YI3, YI4,
182 C ZI1, ZI2, ZI3, ZI4,
183 D XN1, XN2, XN3, XN4,
184 E YN1, YN2, YN3, YN4,
185 F ZN1, ZN2, ZN3, ZN4,
186 G AREA, LFT, LLT)
187 !-----------------------------------------------------------!
188 ! VERIFIE QUE LE NOEUD EST SUR LA FACETTE ET STOCKE S & T !
189 !-----------------------------------------------------------!
190 CALL I12DIS3(
191 1 INTBUF_TAB%CSTS, INTBUF_TAB%NSV, ITAB, GAP,
192 2 NOINT, ITEST, INTBUF_TAB%FCOUNT,SSC,
193 3 TTC, LFT, LLT, NFT)
194 ENDDO
195 IF(ITEST>0)THEN
196 WRITE(IOUT,'(A,I8,A,I8,A)')
197 . ' *** WARNING INTERFACE',NOINT,' : ',
198 . ITEST,' SECONDARY NODES LIE OUTSIDE OF MAIN SEGMENT'
199 TEST=1
200 ENDIF
201.OR. ENDIF !(ITIED==0 ITIED==3)
202
203.AND..AND. IF(CODTOT/=0 ALE%GLOBAL%INCOMP==0 ITIED/=3)THEN
204 L1=1
205 L2=L1+NSN*ALE%GLOBAL%NVCONV
206 L3=L2+NSN*ALE%GLOBAL%NVCONV
207 L4=L3+NRTM
208 L5=L4+NMN*ALE%GLOBAL%NVCONV
209 L6=L5+NMN
210 !-----------------------------------------------------------------!
211 ! ECHANGE DES INFORMATIONS ENTRE LES TWO FACES DE l'INTERFACE !
212 !-----------------------------------------------------------------!
213 ! 1- Transforme Valeurs elementaires en valeurs nodales cote second.
214 !-----------------------------------------------------------------!
215 CALL I12NOD3(NRTS,INTBUF_TAB%IELES,INTBUF_TAB%IRECTS,SEGVAR,JCODV,
216 . WA(L1),INTBUF_TAB%FCOUNT,NSN)
217 ! 2- Valeurs MAIN -> SECONDARY
218 !-----------------------------------------------------------------!
219 CALL I12M2S(NSN ,INTBUF_TAB%IRECTS,INTBUF_TAB%IRTLM,WA(L2),NRTM,NRTS,
220 . INTBUF_TAB%IELEM,INTBUF_TAB%IELES,SEGVAR,JCODV)
221 ! 3- Valeurs Nodales SECONDARY -> MAIN
222 !-----------------------------------------------------------------!
223 CALL I12S2M(NSN,INTBUF_TAB%IRTLM,NRTM,JCODV,WA(L1),WA(L3),
224 . NMN,WA(L4),INTBUF_TAB%IRECTM,WA(L5),INTBUF_TAB%MSR,
225 . SEGVAR,INTBUF_TAB%IELEM,NOINT)
226 ENDIF
227
228 RETURN