OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
w_bufbric_22.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!|| w_bufbric_22 ../engine/source/interfaces/int22/w_bufbric_22.F
25!||--- called by ------------------------------------------------------
26!|| wrrestp ../engine/source/output/restart/wrrestp.F
27!||--- calls -----------------------------------------------------
28!|| write_db ../common_source/tools/input_output/write_db.F
29!|| write_i_c ../common_source/tools/input_output/write_routtines.c
30!||--- uses -----------------------------------------------------
31!|| i22bufbric_mod ../common_source/modules/interfaces/cut-cell-search_mod.F
32!|| i22tri_mod ../common_source/modules/interfaces/cut-cell-search_mod.F
33!||====================================================================
34 SUBROUTINE w_bufbric_22()
35C-----------------------------------------------
36C D e s c r i p t i o n
37C-----------------------------------------------
38C Interface Type22 (/INTER/TYPE22) is an FSI coupling method based on cut cell method.
39C This experimental cut cell method is not completed, abandoned, and is not an official option.
40C
41C This subroutine is writing buffer in RESTART file.
42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
46 USE i22tri_mod
47C-----------------------------------------------
48C I m p l i c i t T y p e s
49C-----------------------------------------------
50#include "implicit_f.inc"
51C-----------------------------------------------
52C C o m m o n B l o c k s
53C-----------------------------------------------
54#include "inter22.inc"
55C-----------------------------------------------
56C L o c a l V a r i a b l e s
57C-----------------------------------------------
58 INTEGER :: NIN, I, J, K, ISIZ
59 INTEGER :: Isectype(14)
60 CHARACTER*14 :: string
61C-----------------------------------------------
62C S o u r c e L i n e s
63C-----------------------------------------------
64
65 !temporary arg copy is needed while calling READ_* subroutine (ifort & -check arg_temp_created)
66 ! readability is better but this is only for restart file and also not a performance issue.
67
68 DO nin=1,int22
69 !=====general data
70 CALL write_i_c( nbold(nin) , 1)
71 CALL write_i_c( list_b_old(nin,1:i22len) , i22len)
72 !=====cartesian cell data - INTEGER
73 CALL write_i_c( brick_list(nin,1:i22len)%ID , i22len)
74 CALL write_i_c( brick_list(nin,1:i22len)%NG , i22len)
75 CALL write_i_c( brick_list(nin,1:i22len)%IDLOC , i22len)
76 CALL write_i_c( brick_list(nin,1:i22len)%ICODE , i22len)
77 CALL write_i_c( brick_list(nin,1:i22len)%OLD_ICODE , i22len)
78 CALL write_i_c( brick_list(nin,1:i22len)%IDBLE , i22len)
79 CALL write_i_c( brick_list(nin,1:i22len)%NBITS , i22len)
80 CALL write_i_c( brick_list(nin,1:i22len)%NPQTS , i22len)
81 CALL write_i_c( brick_list(nin,1:i22len)%NBCUT , i22len)
82 CALL write_i_c( brick_list(nin,1:i22len)%MainID , i22len)
83 CALL write_i_c( brick_list(nin,1:i22len)%WasCut , i22len)
84 CALL write_i_c( brick_list(nin,1:i22len)%NewInBuffer , i22len)
85 CALL write_i_c( brick_list(nin,1:i22len)%OldMainStrongNode , i22len)
86 CALL write_i_c( brick_list(nin,1:i22len)%MLW , i22len)
87 CALL write_i_c( brick_list(nin,1:i22len)%ITASK , i22len)
88 DO j=1,8 ; CALL write_i_c( brick_list(nin,1:i22len)%SecID_Cell(j) , i22len) ; ENDDO
89 CALL write_i_c( brick_list(nin,1:i22len)%Seg_add_LFT , i22len)
90 CALL write_i_c( brick_list(nin,1:i22len)%Seg_add_LLT , i22len)
91 DO i=1,5
92 DO j=1,6 ; CALL write_i_c( brick_list(nin,1:i22len)%Adjacent_Brick(j,i) , i22len) ; ENDDO
93 ENDDO
94 DO i=1,3
95 DO j=1,5 ; CALL write_i_c ( brick_list(nin,1:i22len)%MergeTarget(i,j) , i22len) ; ENDDO
96 ENDDO
97 CALL write_i_c( brick_list(nin,1:i22len)%NTarget , i22len)
98 DO i=1,6 ; CALL write_i_c ( brick_list(nin,1:i22len)%ClosedSurf(i) , i22len) ; ENDDO
99 CALL write_i_c( brick_list(nin,1:i22len)%IsMErgeTarget , i22len)
100 !=====cartesian cell data - REAL
101 DO i=1,6
102 DO j=1,3 ; CALL write_db ( brick_list(nin,1:i22len)%N(i,j) , i22len) ; ENDDO
103 ENDDO
104 CALL write_db ( brick_list(nin,1:i22len)%Vnew_SCell , i22len)
105 CALL write_db ( brick_list(nin,1:i22len)%Vold_SCell , i22len)
106 DO i=1,3 ; CALL write_db ( brick_list(nin,1:i22len)%SCellCenter(i) , i22len) ; ENDDO
107 DO j=1,6 ; CALL write_db ( brick_list(nin,1:i22len)%Face_Brick(j) , i22len) ; ENDDO
108 CALL write_db ( brick_list(nin,1:i22len)%UncutVol , i22len)
109 DO j=1,3 ; CALL write_db ( brick_list(nin,1:i22len)%FCELL(j) , i22len) ; ENDDO
110 DO j=1,3 ; CALL write_db ( brick_list(nin,1:i22len)%FEXT_CELL(j) , i22len) ; ENDDO
111 DO j=0,6 ; CALL write_db ( brick_list(nin,1:i22len)%SIG(j) , i22len) ; ENDDO
112 CALL write_db ( brick_list(nin,1:i22len)%RHOC , i22len)
113 CALL write_db ( brick_list(nin,1:i22len)%MACH , i22len)
114 CALL write_db ( brick_list(nin,1:i22len)%DVOL , i22len)
115 DO j=1,2
116 DO i=1,6 ; CALL write_db ( brick_list(nin,1:i22len)%Poly9woNodes(i,j) , i22len) ; ENDDO
117 ENDDO
118 !=====%POLY(1:9) - INTEGER
119 DO j=1,9 ; CALL write_i_c( brick_list(nin,1:i22len)%POLY(j)%NumNOD , i22len) ; ENDDO
120 DO j=1,9 ; CALL write_i_c( brick_list(nin,1:i22len)%POLY(j)%NumPOINT , i22len) ; ENDDO
121 DO i=1,8
122 DO j=1,9 ; CALL write_i_c ( brick_list(nin,1:i22len)%POLY(j)%ListNodID(i) , i22len) ; ENDDO
123 ENDDO
124 DO j=1,9 ; CALL write_i_c ( brick_list(nin,1:i22len)%POLY(j)%IsMain , i22len) ; ENDDO
125 DO i=1,4
126 DO j=1,9 ; CALL write_i_c ( brick_list(nin,1:i22len)%POLY(j)%WhereIsMain(i) , i22len) ; ENDDO
127 ENDDO
128 DO j=1,9 ; CALL write_i_c ( brick_list(nin,1:i22len)%POLY(j)%ID_FREE_NODE , i22len) ; ENDDO
129 !=====%POLY(1:9) - REAL
130 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%Adjacent_FLU1 , i22len) ; ENDDO
131 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%DDVOL , i22len) ; ENDDO
132 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%PHI , i22len) ; ENDDO
133 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%dPHI , i22len) ; ENDDO
134 DO j=1,9
135 DO i=1,4 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%VFRACm(i) , i22len) ; ENDDO
136 ENDDO
137 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%Vnew , i22len) ; ENDDO
138 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%Vold , i22len) ; ENDDO
139 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%OLD_Vnew , i22len) ; ENDDO
140 DO i=1,3
141 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%CellCenter(i) , i22len) ; ENDDO
142 ENDDO
143 DO i=0,2
144 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%DVOL(i) , i22len) ; ENDDO
145 ENDDO
146 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%cutFace , i22len) ; ENDDO
147 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%DM , i22len) ; ENDDO
148 !=====%POLY(1:9)%FACE0
149 DO j=1,9 ; CALL write_i_c ( brick_list(nin,1:i22len)%POLY(j)%FACE0%NumPOINT , i22len) ; ENDDO
150 DO j=1,9 ; CALL write_i_c ( brick_list(nin,1:i22len)%POLY(j)%FACE0%NAdjCell , i22len) ; ENDDO
151 DO i=1,3
152 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%FACE0%Center(i) , i22len) ; ENDDO
153 ENDDO
154 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%FACE0%Surf , i22len) ; ENDDO
155 DO i=1,3
156 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%FACE0%F_FACE(i) , i22len) ; ENDDO
157 ENDDO
158 DO i=1,9
159 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%FACE0%U_N(i) , i22len) ; ENDDO
160 ENDDO
161 !=====%POLY(1:9)%FACE(1:6)
162 DO k=1,6
163 DO j=1,9 ; CALL write_i_c ( brick_list(nin,1:i22len)%POLY(j)%FACE(k)%NumPOINT , i22len) ; ENDDO
164 DO j=1,9 ; CALL write_i_c ( brick_list(nin,1:i22len)%POLY(j)%FACE(k)%NAdjCell , i22len) ; ENDDO
165 DO i=1,5
166 DO j=1,9 ; CALL write_i_c ( brick_list(nin,1:i22len)%POLY(j)%FACE(k)%Adjacent_Cell(i) , i22len) ; ENDDO
167 ENDDO
168 DO i=1,5
169 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%FACE(k)%Adjacent_FLUX(i) , i22len) ; ENDDO
170 ENDDO
171 DO i=1,5
172 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%FACE(k)%Adjacent_upwFLUX(i), i22len) ; ENDDO
173 ENDDO
174 DO i=1,3
175 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%FACE(k)%Center(i) , i22len) ; ENDDO
176 ENDDO
177 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%FACE(k)%Surf , i22len) ; ENDDO
178 DO i=1,3
179 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%FACE(k)%Vel(i) , i22len) ; ENDDO
180 ENDDO
181 DO i=1,3
182 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%FACE(k)%F_FACE(i) , i22len) ; ENDDO
183 ENDDO
184 DO j=1,9 ; CALL write_db ( brick_list(nin,1:i22len)%POLY(j)%FACE(k)%U_N , i22len) ; ENDDO
185 enddo!next K
186 !=====%NODE
187 DO j=1,8 ; CALL write_i_c( brick_list(nin,1:i22len)%NODE(j)%OLD_WhichCell , i22len) ; ENDDO
188 DO j=1,8 ; CALL write_i_c( brick_list(nin,1:i22len)%NODE(j)%WhichCell , i22len) ; ENDDO
189 DO j=1,8 ; CALL write_i_c( brick_list(nin,1:i22len)%NODE(j)%NodWasMain , i22len) ; ENDDO
190 DO i=1,8 ; CALL write_i_c( brick_list(nin,1:i22len)%NODE(i)%WhereWasMain , i22len) ; ENDDO
191 !=====%ADJ_ELEMS
192 CALL write_i_c ( brick_list(nin,1:i22len)%ADJ_ELEMS%Num , i22len)
193 DO j=1,48
194 CALL write_i_c ( brick_list(nin,1:i22len)%ADJ_ELEMS%Num_inv(j) , i22len)
195 CALL write_i_c ( brick_list(nin,1:i22len)%ADJ_ELEMS%IV(j) , i22len)
196 CALL write_i_c ( brick_list(nin,1:i22len)%ADJ_ELEMS%IB(j) , i22len)
197 CALL write_i_c ( brick_list(nin,1:i22len)%ADJ_ELEMS%ICELL(j) , i22len)
198 CALL write_i_c ( brick_list(nin,1:i22len)%ADJ_ELEMS%SecndFACE(j) , i22len)
199 ENDDO !next J
200 !=====%PCUT
201 DO i=1,16
202 CALL write_i_c ( brick_list(nin,1:i22len)%PCUT(i)%NP , i22len)
203 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%N(1) , i22len)
204 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%N(2) , i22len)
205 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%N(3) , i22len)
206 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%B(1) , i22len)
207 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%B(2) , i22len)
208 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%B(3) , i22len)
209 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%SCUT(1) , i22len)
210 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%SEFF(1) , i22len)
211 DO j=1,8
212 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%P(1,j) , i22len)
213 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%P(2,j) , i22len)
214 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%P(3,j) , i22len)
215 ENDDO !next J
216 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%Vel(1) , i22len)
217 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%Vel(2) , i22len)
218 CALL write_db ( brick_list(nin,1:i22len)%PCUT(i)%Vel(3) , i22len)
219 ENDDO !next J
220 !=====%SecndList
221 CALL write_db ( brick_list(nin,1:i22len)%SecndList%VOL_Unmerged , i22len)
222 CALL write_i_c ( brick_list(nin,1:i22len)%SecndList%Num , i22len)
223 CALL write_i_c ( brick_list(nin,1:i22len)%SecndList%NumSecndNodes , i22len)
224 DO j=1,24
225 CALL write_i_c ( brick_list(nin,1:i22len)%SecndList%FM(j) , i22len)
226 CALL write_i_c ( brick_list(nin,1:i22len)%SecndList%FV(j) , i22len)
227 CALL write_i_c ( brick_list(nin,1:i22len)%SecndList%IV(j) , i22len)
228 CALL write_i_c ( brick_list(nin,1:i22len)%SecndList%IBV(j) , i22len)
229 CALL write_i_c ( brick_list(nin,1:i22len)%SecndList%ICELLv(j) , i22len)
230 CALL write_db ( brick_list(nin,1:i22len)%SecndList%VOL(j) , i22len)
231 CALL write_db ( brick_list(nin,1:i22len)%SecndList%SURF_v(j) , i22len)
232 CALL write_i_c ( brick_list(nin,1:i22len)%SecndList%NumNOD_Cell(j) , i22len)
233 DO k=1,8
234 CALL write_i_c ( brick_list(nin,1:i22len)%SecndList%ListNodID(j,k) , i22len)
235 ENDDO
236 ENDDO !next J
237 !=====%Edge
238 DO j=1,12
239 CALL write_i_c ( brick_list(nin,1:i22len)%Edge(j)%NODE(1) , i22len)
240 CALL write_i_c ( brick_list(nin,1:i22len)%Edge(j)%NODE(2) , i22len)
241 CALL write_i_c ( brick_list(nin,1:i22len)%Edge(j)%NBCUT , i22len)
242 CALL write_i_c ( brick_list(nin,1:i22len)%Edge(j)%CUTSHELL(1) , i22len)
243 CALL write_i_c ( brick_list(nin,1:i22len)%Edge(j)%CUTSHELL(2) , i22len)
244 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTCOOR(1) , i22len)
245 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTCOOR(2) , i22len)
246 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTPOINT(1,1) , i22len)
247 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTPOINT(2,1) , i22len)
248 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTPOINT(3,1) , i22len)
249 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTPOINT(1,2) , i22len)
250 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTPOINT(2,2) , i22len)
251 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTPOINT(3,2) , i22len)
252 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTVEL(1,1) , i22len)
253 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTVEL(2,1) , i22len)
254 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTVEL(3,1) , i22len)
255 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTVEL(1,2) , i22len)
256 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTVEL(2,2) , i22len)
257 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%CUTVEL(3,2) , i22len)
258 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%VECTOR(1) , i22len)
259 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%VECTOR(2) , i22len)
260 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%VECTOR(3) , i22len)
261 CALL write_db ( brick_list(nin,1:i22len)%Edge(j)%LEN , i22len)
262 ENDDO
263 !=====%SECTYPE
264 DO j=1,8
265 DO i=1,i22len
266 string = brick_list(nin,i)%SECTYPE(j)
267 do k=1,14
268 CALL write_i_c( ichar(string(k:k)), 1)
269 enddo
270 ENDDO
271 ENDDO
272 !=====%bakMAT
273 CALL write_db ( brick_list(nin,1:i22len)%bakMAT%rho , i22len)
274 CALL write_db ( brick_list(nin,1:i22len)%bakMAT%rhoE , i22len)
275 DO i=1,3 ; CALL write_db ( brick_list(nin,1:i22len)%bakMAT%rhoU(i) , i22len) ; ENDDO
276 DO i=1,6 ; CALL write_db ( brick_list(nin,1:i22len)%bakMAT%sig(i) , i22len) ; ENDDO
277 CALL write_db ( brick_list(nin,1:i22len)%bakMAT%ssp , i22len)
278 isiz = max(i22law37, i22law51)
279 IF(isiz/=0)THEN
280 DO k=1,i22len
281 DO i=1,isiz
282 CALL write_db ( brick_list(nin,k)%bakMAT%UVAR(i) , 1)
283 ENDDO
284 ENDDO
285 ENDIF
286
287 !=====%OLD_SecndList(NIN,1:I22LEN)
288 CALL write_db (old_secndlist(nin,1:i22len)%VOL_Unmerged , i22len)
289 CALL write_i_c (old_secndlist(nin,1:i22len)%Num , i22len)
290 CALL write_i_c (old_secndlist(nin,1:i22len)%NumSecndNodes , i22len)
291 DO j=1,24
292 CALL write_i_c ( old_secndlist(nin,1:i22len)%FM(j) , i22len)
293 CALL write_i_c ( old_secndlist(nin,1:i22len)%FV(j) , i22len)
294 CALL write_i_c ( old_secndlist(nin,1:i22len)%IV(j) , i22len)
295 CALL write_i_c ( old_secndlist(nin,1:i22len)%IBV(j) , i22len)
296 CALL write_i_c ( old_secndlist(nin,1:i22len)%ICELLv(j) , i22len)
297 CALL write_db ( old_secndlist(nin,1:i22len)%VOL(j) , i22len)
298 CALL write_db ( old_secndlist(nin,1:i22len)%SURF_v(j) , i22len)
299 CALL write_i_c ( old_secndlist(nin,1:i22len)%NumNOD_Cell(j) , i22len)
300 DO k=1,8
301 CALL write_i_c ( old_secndlist(nin,1:i22len)%ListNodID(j,k) , i22len)
302 ENDDO
303 ENDDO !next J
304
305
306 ENDDO !next NIN
307
308C-----------------------------------------------
309 END SUBROUTINE
subroutine w_bufbric_22()
#define max(a, b)
Definition macros.h:21
type(brick_entity), dimension(:,:), allocatable, target brick_list
subroutine write_db(a, n)
Definition write_db.F:140
void write_i_c(int *w, int *len)