46
47
48
49 USE intbufdef_mod
50 USE int8_mod
52 USE sensor_mod
53
54
55
56#include "implicit_f.inc"
57#include "comlock.inc"
58
59
60
61#include "com01_c.inc"
62#include "com04_c.inc"
63#include "com08_c.inc"
64#include "param_c.inc"
65#include "parit_c.inc"
66#include "impl1_c.inc"
67
68
69
70 INTEGER ,INTENT(IN) :: NSENSOR
71 INTEGER NELTST,ITYPTST
72 INTEGER NUM_IMP(*),NS_IMP(*),NE_IMP(*),NT_IMP
73 INTEGER IPARI(NPARI,*), ICODT(*),ITAB(*),
74 . NPC(*), ISKY(*),
75 . ICONTACT(*),TAGNCONT(NLOADP_HYD_INTER,NUMNOD),
76 . KLOADPINTER(NINTER+1),(NINTER*NLOADP_HYD),
77 . LOADP_HYD_INTER(NLOADP_HYD)
78
79
81 . x(*), a(*), fsav(nthvki,*) , wa(*), v(*),ms(*),
82 . stifn(*), tf(*),fskyi(lsky,nfskyi),vr(3,*),fcont(3,*),in(*),
83 . bufsf(*), fncont(3,*),ftcont(3,*),rcontact(*),pskids(*)
84
85 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
86 TYPE(H3D_DATABASE) :: H3D_DATA
87 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) :: SENSOR_TAB
88
89
90
91
92 INTEGER
93
94 INTEGER NSLV,SIZ,NBT8
95 my_real,
DIMENSION(:,:),
ALLOCATABLE :: ftsav_buf
96 INTEGER :: NTY
97
98
99 nbt8 = 0
100
101
102 IF (impl_s==1) iad = 1
103
104 DO 200 n=1,ninter
105 nty =ipari(7,n)
106
107
108
109
110 IF(nty==8) THEN
111 nbt8 = nbt8 + 1
112 IF(ipari(16,n)==ncycle)THEN
113 ELSE
114 ipari(16,n) = ncycle
115
116 isens = 0
117
118 IF (isens > 0) THEN
119 ts = sensor_tab(isens)%TSTART
120 ELSE
121 ts = tt
122 ENDIF
123
124 IF(n2d==0)THEN
125 IF(impl_s/=1)THEN
126 IF(tt>=ts) THEN
128 1 ipari(1,n) ,x,a ,
129 2 icodt ,fsav(1,n) ,v ,ms ,
130 3 fskyi ,isky ,fcont ,fncont ,ftcont ,
131 4 icontact ,rcontact,
132 5 stifn ,itab,intbuf_tab(n),intbuf_tab(n)%T8,h3d_data,
133 6 n ,pskids ,tagncont,kloadpinter,loadpinter,
134 7 loadp_hyd_inter)
135 ENDIF
136 ELSE
137 num_imp(n) =0
138 IF(tt>=ts) THEN
140 1 ipari(1,n) ,x ,a ,
141 2 icodt ,fsav(1,n) ,v ,ms ,
142 3 fskyi ,isky ,fcont ,fncont ,ftcont ,
143 4 icontact ,rcontact,
144 5 stifn ,itab,intbuf_tab(n),intbuf_tab(n)%T8,h3d_data,
145 6 n ,pskids ,tagncont,kloadpinter,loadpinter,
146 7 loadp_hyd_inter)
147 ENDIF
148 iad=iad+num_imp(n)
149 END IF
150 ELSE
151
152 ENDIF
153 ENDIF !ipari(16)
154 ENDIF
155 200 CONTINUE
156
157
158 IF(nspmd > 1) THEN
159 nbt8 = 0
160 DO n=1,ninter
161 nty =ipari(7,n)
162
163 IF(nty==8) THEN
164 nbt8 = nbt8+1
165 startt=intbuf_tab(n)%VARIABLES(3)
166 stopt=intbuf_tab(n)%VARIABLES(11)
167 IF(startt<=tt .AND. tt<= stopt) THEN
168 IF(ipari(48,n) == 2) THEN
169 nslv = ipari(5,n)
170 ALLOCATE(ftsav_buf(3,nslv))
171 ftsav_buf(1:3,1:nslv) = 0
172 DO i = 1, nslv
173 ftsav_buf(1,i) = intbuf_tab(n)%FTSAVX(i)
174 ftsav_buf(2,i) = intbuf_tab(n)%FTSAVY(i)
175 ftsav_buf(3,i) = intbuf_tab(n)%FTSAVZ(i)
176 ENDDO
177 siz = 3*nslv
179 DO i = 1, nslv
180 intbuf_tab(n)%FTSAVX(i) = ftsav_buf(1,i)
181 intbuf_tab(n)%FTSAVY(i) = ftsav_buf(2,i)
182 intbuf_tab(n)%FTSAVZ(i) = ftsav_buf(3,i)
183 ENDDO
184 DEALLOCATE(ftsav_buf)
185 ENDIF
186 ENDIF
187 ENDIF
188 ENDDO
189 ENDIF
190
191 IF (impl_s==1) nt_imp=iad-1
192
193
194
195 RETURN
subroutine intvo8(ipari, x, a, icodt, fsav, v, ms, fskyi, isky, fcont, fncont, ftcont, icontact, rcontact, stifn, itab, intbuf_tab, t8, h3d_data, nin, pskids, tagncont, kloadpinter, loadpinter, loadp_hyd_inter)