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