OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
intfop8.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!|| intfop8 ../engine/source/interfaces/interf/intfop8.F
25!||--- called by ------------------------------------------------------
26!|| resol ../engine/source/engine/resol.F
27!||--- calls -----------------------------------------------------
28!|| intvo8 ../engine/source/interfaces/inter3d/intvo8.F
29!|| spmd_i8_reduce ../engine/source/mpi/interfaces/spmd_i8tool.F
30!||--- uses -----------------------------------------------------
31!|| h3d_mod ../engine/share/modules/h3d_mod.F
32!|| int8_mod ../common_source/modules/interfaces/int8_mod.F90
33!|| intbufdef_mod ../common_source/modules/interfaces/intbufdef_mod.F90
34!|| sensor_mod ../common_source/modules/sensor_mod.F90
35!||====================================================================
36 SUBROUTINE intfop8(
37 1 IPARI ,X ,A ,
38 2 ICODT ,FSAV ,WA ,V ,MS ,
39 3 DT2T ,NELTST ,ITYPTST ,ITAB ,STIFN,
40 4 NPC ,TF ,FSKYI ,ISKY ,VR ,
41 5 FCONT ,IN ,BUFSF ,FNCONT ,NSENSOR,
42 6 FTCONT,ICONTACT,RCONTACT,NUM_IMP,NS_IMP,
43 7 NE_IMP ,NT_IMP ,SENSOR_TAB,INTBUF_TAB ,
44 8 H3D_DATA,PSKIDS,TAGNCONT,KLOADPINTER,LOADPINTER,
45 9 LOADP_HYD_INTER)
46C-----------------------------------------------
47C M o d u l e s
48C-----------------------------------------------
49 USE intbufdef_mod
50 USE int8_mod
51 USE h3d_mod
52 USE sensor_mod
53C-----------------------------------------------
54C I m p l i c i t T y p e s
55C-----------------------------------------------
56#include "implicit_f.inc"
57#include "comlock.inc"
58C-----------------------------------------------
59C C o m m o n B l o c k s
60C-----------------------------------------------
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"
67C-----------------------------------------------
68C D u m m y A r g u m e n t s
69C-----------------------------------------------
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),LOADPINTER(NINTER*NLOADP_HYD),
77 . LOADP_HYD_INTER(NLOADP_HYD)
78
79C REAL
80 my_real dt2t,
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
89C-----------------------------------------------
90C L o c a l V a r i a b l e s
91C-----------------------------------------------
92 INTEGER N, IAD,IDUM, ISENS,I
93 my_real TS,STARTT,STOPT
94 INTEGER NSLV,SIZ,NBT8
95 my_real, DIMENSION(:,:), ALLOCATABLE :: ftsav_buf
96 INTEGER :: NTY
97C-----------------------------------------------
98 !CALL STARTIME(TIMERS,96)
99 NBT8 = 0
100
101
102 IF (impl_s==1) iad = 1
103C
104 DO 200 n=1,ninter
105 nty =ipari(7,n)
106 ! used to identify the communication
107 ! Will be replace by MPI_Request with
108 ! MPI 3.0 support
109c IF(ISPMD/=0) GOTO 200 !TO REMOVE
110 IF(nty==8) THEN
111 nbt8 = nbt8 + 1
112 IF(ipari(16,n)==ncycle)THEN
113 ELSE
114 ipari(16,n) = ncycle
115C
116 isens = 0 ! ???
117
118 IF (isens > 0) THEN ! IF INTERFACE IS ACTIVATED BY SENSOR
119 ts = sensor_tab(isens)%TSTART
120 ELSE
121 ts = tt
122 ENDIF
123C
124 IF(n2d==0)THEN
125 IF(impl_s/=1)THEN
126 IF(tt>=ts) THEN
127 CALL intvo8(
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
139 CALL intvo8(
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 !N2D
153 ENDIF !IPARI(16)
154 ENDIF !NTY==8
155 200 CONTINUE
156C
157
158 IF(nspmd > 1) THEN
159 nbt8 = 0
160 DO n=1,ninter
161 nty =ipari(7,n)
162c IF(ISPMD/=0) GOTO 200 !TO REMOVE
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
178 CALL spmd_i8_reduce(ftsav_buf,siz,nbt8)
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 !CALL STOPTIME(TIMERS,96)
193
194C
195 RETURN
196 END
197C
#define my_real
Definition cppsort.cpp:32
subroutine intfop8(ipari, x, a, icodt, fsav, wa, v, ms, dt2t, neltst, ityptst, itab, stifn, npc, tf, fskyi, isky, vr, fcont, in, bufsf, fncont, nsensor, ftcont, icontact, rcontact, num_imp, ns_imp, ne_imp, nt_imp, sensor_tab, intbuf_tab, h3d_data, pskids, tagncont, kloadpinter, loadpinter, loadp_hyd_inter)
Definition intfop8.F:46
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)
Definition intvo8.F:52
subroutine spmd_i8_reduce(tab, n, num)