OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
genstat.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!|| genstat ../engine/source/output/sta/genstat.F
25!||--- called by ------------------------------------------------------
26!|| sortie_main ../engine/source/output/sortie_main.f
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../engine/source/output/message/message.F
29!|| arret ../engine/source/system/arret.F
30!|| close_c ../common_source/tools/input_output/write_routines.c
31!|| cur_fil_c ../common_source/tools/input_output/write_routines.c
32!|| open_c ../common_source/tools/input_output/write_routines.c
33!|| spmd_outpitab ../engine/source/mpi/interfaces/spmd_outp.F
34!|| stat_beam_mp ../engine/source/output/sta/stat_beam_mp.F
35!|| stat_beam_spmd ../engine/source/output/sta/stat_beam_spmd.F
36!|| stat_brick_mp ../engine/source/output/sta/stat_brick_mp.F
37!|| stat_brick_spmd ../engine/source/output/sta/stat_brick_spmd.F
38!|| stat_c_auxf ../engine/source/output/sta/stat_c_auxf.F
39!|| stat_c_epspf ../engine/source/output/sta/stat_c_epspf.F
40!|| stat_c_fail ../engine/source/output/sta/stat_c_fail.F
41!|| stat_c_off ../engine/source/output/sta/stat_c_off.F
42!|| stat_c_orth_loc ../engine/source/output/sta/stat_c_orth_loc.F
43!|| stat_c_straf ../engine/source/output/sta/stat_c_straf.F
44!|| stat_c_strafg ../engine/source/output/sta/stat_c_strafg.F
45!|| stat_c_strsf ../engine/source/output/sta/stat_c_strsf.F
46!|| stat_c_strsfg ../engine/source/output/sta/stat_c_strsfg.F
47!|| stat_c_thk ../engine/source/output/sta/stat_c_thk.F
48!|| stat_inimap1d_file_spmd ../engine/source/output/sta/stat_inimap1d_file_spmd.F
49!|| stat_inimap1d_spmd ../engine/source/output/sta/stat_inimap1d_spmd.F
50!|| stat_inimap2d_file_spmd ../engine/source/output/sta/stat_inimap2d_file_spmd.F
51!|| stat_inimap2d_spmd ../engine/source/output/sta/stat_inimap2d_spmd.F
52!|| stat_n_bcs ../engine/source/output/sta/stat_n_bcs.F
53!|| stat_n_temp ../engine/source/output/sta/stat_n_temp.F
54!|| stat_n_vel ../engine/source/output/sta/state_n_vel.f
55!|| stat_node ../engine/source/output/sta/stat_node.F
56!|| stat_p_aux ../engine/source/output/sta/stat_p_aux.F
57!|| stat_p_full ../engine/source/output/sta/stat_p_full.F
58!|| stat_quad_mp ../engine/source/output/sta/stat_quad_mp.F
59!|| stat_quad_spmd ../engine/source/output/sta/stat_quad_spmd.F
60!|| stat_r_full ../engine/source/output/sta/stat_r_full.F
61!|| stat_s_auxf ../engine/source/output/sta/stat_s_auxf.F
62!|| stat_s_eref ../engine/source/output/sta/stat_s_eref.F
63!|| stat_s_fail ../engine/source/output/sta/stat_s_fail.F
64!|| stat_s_ortho ../engine/source/output/sta/stat_s_ortho.F
65!|| stat_s_straf ../engine/source/output/sta/stat_s_straf.F
66!|| stat_s_strsf ../engine/source/output/sta/stat_s_strsf.F
67!|| stat_shel_mp ../engine/source/output/sta/stat_shel_mp.F
68!|| stat_shel_spmd ../engine/source/output/sta/stat_shel_spmd.F
69!|| stat_size_c ../engine/source/output/sta/stat_size.F
70!|| stat_sphcel_full ../engine/source/output/sta/stat_sphcel_full.F90
71!|| stat_sphcel_mp ../engine/source/output/sta/stat_sphcel_mp.F90
72!|| stat_sphcel_spmd ../engine/source/output/sta/stat_sphcel_spmd.F90
73!|| stat_spring_mp ../engine/source/output/sta/stat_spring_mp.F
74!|| stat_spring_spmd ../engine/source/output/sta/stat_spring_spmd.F
75!|| stat_t_full ../engine/source/output/sta/stat_t_full.F
76!|| stat_truss_mp ../engine/source/output/sta/stat_truss_mp.F
77!|| stat_truss_spmd ../engine/source/output/sta/stat_truss_spmd.F
78!|| strs_txt50 ../engine/source/output/sta/sta_txt.F
79!||--- uses -----------------------------------------------------
80!|| drape_mod ../engine/share/modules/drape_mod.F
81!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
82!|| element_mod ../common_source/modules/elements/element_mod.F90
83!|| inoutfile_mod ../common_source/modules/inoutfile_mod.F
84!|| mat_elem_mod ../common_source/modules/mat_elem/mat_elem_mod.F90
85!|| message_mod ../engine/share/message_module/message_mod.F
86!|| multi_fvm_mod ../common_source/modules/ale/multi_fvm_mod.F90
87!|| my_alloc_mod ../common_source/tools/memory/my_alloc.F90
88!|| output_mod ../common_source/modules/output/output_mod.F90
89!|| stack_mod ../engine/share/modules/stack_mod.F
90!|| stat_sphcel_full_mod ../engine/source/output/sta/stat_sphcel_full.F90
91!|| stat_sphcel_mp_mod ../engine/source/output/sta/stat_sphcel_mp.F90
92!|| stat_sphcel_spmd_mod ../engine/source/output/sta/stat_sphcel_spmd.F90
93!|| state_inimap_mod ../engine/share/modules/state_inimap_mod.F
94!||====================================================================
95 SUBROUTINE genstat(X ,MS ,ELBUF_TAB,BUFEL ,SPBUF ,
96 2 IXS ,IXQ ,IXC ,IXT ,IXP ,
97 3 IXR ,IXTG ,KXSP ,IPARG ,IPM ,
98 4 IGEO ,ITAB ,IPART ,PM ,GEO ,
99 5 IPARTS ,IPARTQ ,IPARTC ,IPARTT ,IPARTP ,
100 6 IPARTR ,IPARTUR ,IPARTTG ,IPARTX ,IPARTSP ,
101 7 DD_IAD ,WEIGHT ,NODGLOB ,LENG,IPART_STATE ,
102 8 LENGC ,LENGTG ,SH4TREE ,SH3TREE ,LENGS ,
103 9 SH4TRIM ,SH3TRIM ,TEMP ,IXS10 ,THKE ,
104 A IXS16 ,IXS20 ,ICODE ,LENGR ,LENGP ,
105 B LENGT ,ISKEW ,V ,VR ,LENGQ ,
106 C MULTI_FVM,BUFMAT ,NPBY ,LPBY ,STACK ,
107 D DRAPE_SH4N ,DRAPE_SH3N,DR,DRAPEG,MAT_PARAM ,
108 E IPARTSPH , OUTPUT ,LENGSPH ,NUMSPHG ,ITHERM_FE)
109C-----------------------------------------------
110C M o d u l e s
111C-----------------------------------------------
112 USE mat_elem_mod
113 USE elbufdef_mod
114 USE message_mod
115 USE inoutfile_mod
116 USE multi_fvm_mod
118 USE stack_mod
119 USE drape_mod
120 USE output_mod
121 USE stat_sphcel_mp_mod
122 USE stat_sphcel_spmd_mod
123 USE stat_sphcel_full_mod
124 USE my_alloc_mod
125 use element_mod , only : nixs,nixq,nixc,nixp,nixr,nixt,nixtg
126C-----------------------------------------------
127C I m p l i c i t T y p e s
128C-----------------------------------------------
129#include "implicit_f.inc"
130C-----------------------------------------------
131C C o m m o n B l o c k s
132C-----------------------------------------------
133#include "com01_c.inc"
134#include "com04_c.inc"
135#include "com09_c.inc"
136#include "param_c.inc"
137#include "units_c.inc"
138#include "scr03_c.inc"
139#include "scr14_c.inc"
140#include "scr16_c.inc"
141#include "scr17_c.inc"
142#include "chara_c.inc"
143#include "task_c.inc"
144#include "sphcom.inc"
145#include "state_c.inc"
146#include "sysunit.inc"
147#include "tabsiz_c.inc"
148C-----------------------------------------------
149C D u m m y A r g u m e n t s
150C-----------------------------------------------
151 INTEGER IPARG(*),
152 . IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),IXC(NIXC,NUMELC),IXTG(NIXTG,NUMELTG),
153 . IXT(NIXT,NUMELT),IXP(NIXP,NUMELP),IXR(NIXR,NUMELR),KXSP(NISP,*),
154 . ITAB(*),IPART(LIPART1,*),IPM(*),IGEO(*),
155 . IPARTS(*),IPARTQ(*) ,IPARTC(*) ,IPARTT(*),IPARTP(*) ,
156 . IPARTR(*),IPARTUR(*),IPARTTG(*),IPARTX(*),IPARTSP(*),
157 . WEIGHT(*), DD_IAD(*), NODGLOB(*), IPART_STATE(*),
158 . SH4TREE(*), SH3TREE(*),
159 . SH4TRIM(*), SH3TRIM(*),IXS10(*),IXS16(*),IXS20(*),ICODE(*),
160 . ISKEW(*), NPBY(NNPBY,*), LPBY(*)
161 INTEGER LENG,LENGC,LENGTG,LENGS,LENGR,LENGP,LENGT,LENGQ
162 INTEGER ,intent(in) :: ITHERM_FE
163 my_real
164 . x(*), ms(*), bufel(*), spbuf(*),
165 . pm(npropm,*), geo(npropg,*) ,temp(*),thke(*),
166 . v(3,*),vr(3,*),dr(sdr)
167 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
168 TYPE(MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
169 TYPE (STACK_PLY) :: STACK
170 TYPE (DRAPE_) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
171 TYPE(DRAPEG_) :: DRAPEG
172 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
173 INTEGER, DIMENSION(NUMSPH), INTENT(IN) :: IPARTSPH
174 my_real bufmat(*)
175 TYPE(output_),INTENT(INOUT) :: OUTPUT
176 INTEGER, INTENT(IN) :: LENGSPH
177 INTEGER, INTENT(IN) :: NUMSPHG
178C-----------------------------------------------
179C L o c a l V a r i a b l e s
180C-----------------------------------------------
181 CHARACTER CHSTAT*4, FILNAM*100, T10*10, MES*40
182 INTEGER FILEN, I, IERR, J, N
183 INTEGER SIZLOC, SIZP0
184
185 INTEGER,DIMENSION(:),ALLOCATABLE :: ITABG
186 INTEGER,DIMENSION(:),ALLOCATABLE :: NODTAG
187 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXC
188 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXTG
189 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXQ
190 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXS
191 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXR
192 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXP
193
194 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXT
195 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXSPH
196
197 INTEGER CTEXT(2149)
198 double precision
199 . , DIMENSION(:),ALLOCATABLE :: wa,wap0
200
201 INTEGER :: LEN_TMP_NAME
202 CHARACTER(len=2148) :: TMP_NAME
203 LOGICAL IS_FILE_TO_BE_WRITTEN
204 CHARACTER*100 LINE
205C-----------------------------------------------
206C S o u r c e L i n e s
207C-----------------------------------------------
208 CALL my_alloc(itabg,leng)
209 CALL my_alloc(nodtag,numnod)
210 CALL my_alloc(stat_indxc,2*lengc)
211 CALL my_alloc(stat_indxtg,2*lengtg)
212 CALL my_alloc(stat_indxq,2*lengq)
213 CALL my_alloc(stat_indxs,2*lengs)
214 CALL my_alloc(stat_indxr,2*lengr)
215 CALL my_alloc(stat_indxp,2*lengp)
216 CALL my_alloc(stat_indxt,2*lengt)
217 CALL my_alloc(stat_indxsph,2*lengsph)
218C-----------------------------------------------
219 is_file_to_be_written = ((ispmd == 0) .AND. (.NOT.is_stat_inimap_single)) !/STATE/INIMAP* is using an independent state file
220C===============================================|
221C OPEN FILE
222C-----------------------------------------------
223 IF(istatf>=10000)istatf=1
224 WRITE(chstat,'(I4.4)')istatf
225 filnam=rootnam(1:rootlen)//'_'//chstat//'.sta'
226 filen = rootlen + 9
227 len_tmp_name = outfile_name_len + filen
228 tmp_name=outfile_name(1:outfile_name_len)//filnam(1:filen)
229
230 IF(is_file_to_be_written) THEN
231 OPEN(unit=iugeo,file=tmp_name(1:len_tmp_name),access='SEQUENTIAL',form='FORMATTED',status='UNKNOWN')
232 WRITE(iugeo,'(2A)')'#RADIOSS STATE FILE ',filnam(1:filen)
233 ! OPEN STRS FILE
234 IF(izipstrs/=0) THEN
235 filnam=rootnam(1:rootlen)//'_'//chstat//'.str'
236 len_tmp_name = outfile_name_len + filen
237 tmp_name=outfile_name(1:outfile_name_len)//filnam(1:filen)
238 DO i=1,len_tmp_name
239 ctext(i)=ichar(tmp_name(i:i))
240 CALL cur_fil_c(0)
241 ENDDO
242 ENDIF
243 IF(izipstrs==1)THEN
244 CALL open_c(ctext,len_tmp_name,0)
245 ELSEIF(izipstrs==2)THEN
246 CALL open_c(ctext,len_tmp_name,6)
247 ENDIF
248 END IF
249C-----------------------------------------------
250C /BEGIN + UNITS
251C-----------------------------------------------
252 IF(is_file_to_be_written) THEN
253 WRITE(iugeo,'(A)')'/BEGIN'
254 WRITE(iugeo,'(a)') ROOTNAM(1:ROOTLEN)
255 WRITE(IUGEO,'(i10,i10)') ST_INVERS, 0
256 WRITE(IUGEO,'(1p3e20.13)') FAC_MASS,FAC_LENGTH,FAC_TIME
257 WRITE(IUGEO,'(1p3e20.13)') FAC_MASS,FAC_LENGTH,FAC_TIME
258 IF(IZIPSTRS > 0) THEN
259 WRITE(LINE,'(a)')'/begin'
260 CALL STRS_TXT50(LINE,100)
261 WRITE(LINE,'(a)') ROOTNAM(1:ROOTLEN)
262 CALL STRS_TXT50(LINE,100)
263 WRITE(LINE,'(i10,i10)') ST_INVERS, 0
264 CALL STRS_TXT50(LINE,100)
265 WRITE(LINE,'(1p3e20.13)') FAC_MASS,FAC_LENGTH,FAC_TIME
266 CALL STRS_TXT50(LINE,100)
267 WRITE(LINE,'(1p3e20.13)') FAC_MASS,FAC_LENGTH,FAC_TIME
268 CALL STRS_TXT50(LINE,100)
269 ENDIF
270 ENDIF
271C-----------------------------------------------
272C CONNECTIVITIES + NODAL COORDINATES
273C-----------------------------------------------
274c
275 IF (NSPMD > 1)CALL SPMD_OUTPITAB(ITAB,WEIGHT,NODGLOB,ITABG)
276
277 NODTAG=0
278
279 STAT_NUMELC =0
280 STAT_NUMELTG =0
281 STAT_NUMELS =0
282 STAT_NUMELQ =0
283 STAT_NUMELR =0
284 STAT_NUMELP =0
285 STAT_NUMELT =0
286 OUTPUT%STATE%STAT_NUMELSPH = 0
287
288 IF(NSPMD == 1)THEN
289 ! - shells -
290 CALL STAT_SHEL_MP(
291 . ITAB,ITABG,LENG,IPART,IGEO,
292 . IXC,IXTG,IPARTC,IPARTTG,IPART_STATE,
293 . NODTAG,STAT_INDXC,STAT_INDXTG,SH4TREE,SH3TREE,
294 . IPARG ,SH4TRIM ,SH3TRIM ,ELBUF_TAB,THKE,
295 . STAT_C(9))
296 STAT_NUMELC_G =STAT_NUMELC
297 STAT_NUMELTG_G =STAT_NUMELTG
298 ! - quads - (only taging nodes, quads are currently not exported in state files : 3d only)
299 CALL STAT_QUAD_MP(
300 . ITAB,IPART,IGEO,IXQ,IPARTQ,
301 . IPART_STATE,NODTAG,STAT_INDXQ,
302 . IPARG ,ELBUF_TAB)
303 STAT_NUMELQ_G =STAT_NUMELQ
304 ! - solids -
305 CALL STAT_BRICK_MP(
306 . ITAB,IPART,IGEO,IXS,IPARTS,
307 . IPART_STATE,NODTAG,STAT_INDXS,
308 . IPARG ,IXS10,IXS16,IXS20,ELBUF_TAB,
309 . STAT_S(12))
310 STAT_NUMELS_G =STAT_NUMELS
311 ! - springs -
312 CALL STAT_SPRING_MP(
313 . ITAB ,IPART ,IXR ,IPARTR ,IPART_STATE,
314 . NODTAG ,STAT_INDXR,IPARG ,ELBUF_TAB,STAT_R(2) )
315 STAT_NUMELR_G =STAT_NUMELR
316 ! - beams -
317 CALL STAT_BEAM_MP(
318 . ITAB ,IPART ,IXP ,IPARTP ,IPART_STATE,
319 . NODTAG ,STAT_INDXP,IPARG ,ELBUF_TAB,STAT_P(2) )
320 STAT_NUMELP_G =STAT_NUMELP
321 ! - trusses -
322 CALL STAT_TRUSS_MP(
323 . ITAB ,IPART ,IXT ,IPARTT ,IPART_STATE,
324 . NODTAG ,STAT_INDXT,IPARG ,ELBUF_TAB,STAT_T(2) )
325 STAT_NUMELT_G =STAT_NUMELT
326 ! - sphcels -
327 CALL STAT_SPHCEL_MP( NUMNOD , NUMSPH ,NISP ,NPART ,NGROUP ,
328 . NPARG , LIPART1 ,OUTPUT%STATE%STAT_NUMELSPH ,ITAB ,IPART ,
329 . KXSP , IPARTSPH ,IPART_STATE,NODTAG ,STAT_INDXSPH,
330 . IPARG ,ELBUF_TAB ,OUTPUT%STATE%STAT_SPH(2) )
331
332 OUTPUT%STATE%STAT_NUMELSPH_G = OUTPUT%STATE%STAT_NUMELSPH
333
334 ELSE
335 ! - shells -
336 CALL STAT_SHEL_SPMD(
337 . ITAB,ITABG,LENG,IPART,IGEO,
338 . IXC,IXTG,IPARTC,IPARTTG,IPART_STATE,
339 . NODTAG,STAT_INDXC,STAT_INDXTG,LENGC,LENGTG,
340 . IPARG ,ELBUF_TAB,THKE,STAT_C(9))
341 ! - solids -
342 CALL STAT_BRICK_SPMD(
343 . ITAB,IPART,IGEO,IXS,IPARTS,
344 . IPART_STATE,NODTAG,STAT_INDXS,
345 . IPARG, LENGS,IXS10,IXS16,IXS20,
346 . ELBUF_TAB, STAT_S(12))
347 ! - quads - (only taging nodes, quads are currently not exported in state files : 3d only)
348 CALL STAT_QUAD_SPMD(
349 . ITAB,IPART,IGEO,IXQ,IPARTQ,
350 . IPART_STATE,NODTAG,STAT_INDXQ,
351 . IPARG, LENGQ, ELBUF_TAB)
352
353 ! - springs -
354 CALL STAT_SPRING_SPMD(
355 . ITAB ,IPART ,IXR ,IPARTR,IPART_STATE,
356 . NODTAG ,STAT_INDXR,LENGR ,IPARG ,ELBUF_TAB ,
357 . STAT_R(2) )
358 ! - beams -
359 CALL STAT_BEAM_SPMD(
360 . ITAB ,IPART ,IXP ,IPARTP,IPART_STATE,
361 . NODTAG ,STAT_INDXP,LENGP ,IPARG ,ELBUF_TAB ,
362 . STAT_P(2) )
363 ! - trusses -
364 CALL STAT_TRUSS_SPMD(
365 . ITAB ,IPART ,IXT ,IPARTT,IPART_STATE,
366 . NODTAG ,STAT_INDXT,LENGT ,IPARG ,ELBUF_TAB ,
367 . STAT_T(2) )
368 ! - sphcels -
369 CALL STAT_SPHCEL_SPMD(
370 . NUMNOD ,NUMSPH ,NUMSPHG ,NISP ,NPART ,
371 . NGROUP ,NPARG ,LIPART1 ,OUTPUT%STATE%STAT_NUMELSPH ,OUTPUT%STATE%STAT_NUMELSPH_G ,
372 . LENGSPH ,NSPMD ,ITAB ,IPART ,KXSP ,
373 . IPARTSPH ,IPART_STATE ,NODTAG ,STAT_INDXSPH,IPARG ,
374 . ELBUF_TAB ,OUTPUT%STATE%STAT_SPH(2) )
375 END IF
376
377 ! - inimap1d - (generic subroutine : SMP or SPMD)
378 IF(IS_STAT_INIMAP1D)THEN
379 IF(IS_STAT_INIMAP_FILE)THEN
380 CALL STAT_INIMAP1D_FILE_SPMD(
381 . X , V , ITAB , IPART_STATE, NODTAG ,
382 . IPART , IPARTS , IPARTQ, IPARTTG , MAT_PARAM,
383 . IGEO , IPARG , IXS , IXQ , IXTG ,
384 . ELBUF_TAB, MULTI_FVM, BUFMAT, IPM)
385 ELSE
386 CALL STAT_INIMAP1D_SPMD(
387 . X , V , ITAB , IPART_STATE, NODTAG ,
388 . IPART , IPARTS , IPARTQ, IPARTTG , MAT_PARAM,
389 . IGEO , IPARG , IXS , IXQ , IXTG ,
390 . ELBUF_TAB, MULTI_FVM, BUFMAT, IPM)
391 ENDIF
392 ! - inimap2d - (generic subroutine : SMP or SPMD)
393 ELSEIF(IS_STAT_INIMAP2D)THEN
394 IF(IS_STAT_INIMAP_FILE)THEN
395 CALL STAT_INIMAP2D_FILE_SPMD(
396 . X , V , ITAB , IPART_STATE, NODTAG ,
397 . IPART , IPARTS , IPARTQ, IPARTTG , MAT_PARAM,
398 . IGEO , IPARG , IXS , IXQ , IXTG ,
399 . ELBUF_TAB, MULTI_FVM, BUFMAT, IPM)
400 ELSE
401 CALL STAT_INIMAP2D_SPMD(
402 . X , V , ITAB , IPART_STATE, NODTAG ,
403 . IPART , IPARTS , IPARTQ, IPARTTG , MAT_PARAM,
404 . IGEO , IPARG , IXS , IXQ , IXTG ,
405 . ELBUF_TAB, MULTI_FVM, BUFMAT, IPM)
406 ENDIF
407 ENDIF
408
409C-----------------------------------------------
410C IF OPTION IS STATE/NODE/ALL
411C-----------------------------------------------
412 IF(NSTATALL /= 0) THEN
413 DO I=1,NUMNOD
414 NODTAG(I) = 1
415 ENDDO
416 ELSE
417C-----------------------------------------------
418C RIGID BODY'S PRIMARY NODE IS OUTPUTTED IF ONE OF ITS SECONDARY NODES ARE
419C-----------------------------------------------
420 DO I=1,NRBODY
421 DO J=1,NPBY(2,I)
422 N=LPBY(NPBY(11,I)+J)
423 IF (NODTAG(N)/=0) THEN
424 NODTAG(NPBY(1,I)) = 1
425 EXIT
426 END IF
427 ENDDO
428 ENDDO
429 ENDIF
430C-----------------------------------------------
431 CALL STAT_NODE(X,NUMNOD,ITAB,ITABG,LENG,NODGLOB,WEIGHT,NODTAG)
432
433.AND. IF(IZIPSTRS /= 0 IS_FILE_TO_BE_WRITTEN)THEN
434 WRITE(IUGEO,'(a)')'/state/str_file'
435 WRITE(IUGEO,'(a)')'# gzip (no:0: yes:1)'
436 WRITE(iugeo,'(i10)')IZIPSTRS-1
437 WRITE(IUGEO,'(a)')'# file name'
438 IF (IZIPSTRS == 1) WRITE(IUGEO,'(a)')FILNAM(1:FILEN)
439 IF (IZIPSTRS == 2) WRITE(IUGEO,'(a)')FILNAM(1:FILEN)//'.gz'
440 ENDIF
441C-----------------------------------------------
442C NODE SCALAR
443C-----------------------------------------------
444 IF(STAT_N(1)==1)
445 . CALL STAT_N_TEMP(X,NUMNOD,ITAB,ITABG,LENG,
446 . NODGLOB,WEIGHT,NODTAG,TEMP,ITHERM_FE)
447
448 IF(STAT_N(2)==1)
449 . CALL STAT_N_BCS(ICODE,NUMNOD,ITAB,ITABG,LENG,
450 . NODGLOB,ISKEW,NODTAG)
451! translation/rotation velocity
452 IF(STAT_N(3)==1)
453 . CALL STAT_N_VEL(NUMNOD ,ITAB ,ITABG ,LENG ,NODGLOB,
454 . WEIGHT ,NODTAG ,V ,VR )
455C-----------------------------------------------
456 CALL STAT_SIZE_C(IPARG ,IXC ,IXTG ,IGEO ,IPM ,
457 . SIZP0 ,SIZLOC ,IXS ,GEO ,ELBUF_TAB,
458 . IXR ,IXP ,IXT ,OUTPUT,LIPART1 ,
459 . NPART ,IPART ,NUMSPH,IPARTSP )
460C-----------------------------------------------
461C ALLOCATION OF TABLES
462C-----------------------------------------------
463 IERR = 0
464 IF(SIZLOC >= 1) THEN
465 ALLOCATE(WA(SIZLOC),STAT=IERR)
466 ELSE
467 ALLOCATE(WA(1))
468 ENDIF
469 IF(IERR/=0)THEN
470 CALL ANCMSG(MSGID=252,ANMODE=ANINFO,
471 . I1=IERR)
472 CALL ARRET(2)
473 END IF
474
475 IERR = 0
476 SIZP0 = MAX(1,SIZP0)
477 ALLOCATE(WAP0(SIZP0),STAT=IERR)
478 IF(IERR/=0)THEN
479 CALL ANCMSG(MSGID=252,ANMODE=ANINFO,
480 . I1=IERR)
481 CALL ARRET(2)
482 END IF
483C-----------------------------------------------
484C SHELL SCALAR
485C-----------------------------------------------
486 IF(STAT_C(1)==1) CALL STAT_C_OFF(
487 . ELBUF_TAB,IPARG ,IPM ,IGEO ,IXC ,
488 . IXTG ,WA,WAP0,IPARTC,IPARTTG,
489 . IPART_STATE,STAT_INDXC,STAT_INDXTG,SIZP0)
490
491C option non documentee (not a public option) ::
492 IF(STAT_C(2)==1) CALL STAT_C_THK(
493 . ELBUF_TAB,IPARG ,IPM ,IGEO,IXC ,
494 . IXTG ,WA,WAP0 ,IPARTC,IPARTTG,
495 . IPART_STATE,STAT_INDXC,STAT_INDXTG,
496 . THKE ,SIZP0)
497
498 IF(STAT_C(3)==1) CALL STAT_C_EPSPF(
499 . ELBUF_TAB,IPARG ,IPM ,IGEO,IXC ,
500 . IXTG ,WA,WAP0 ,IPARTC,IPARTTG,
501 . IPART_STATE,STAT_INDXC,STAT_INDXTG,
502 . THKE ,SIZP0)
503
504 IF(STAT_C(4)==1) CALL STAT_C_STRSF(
505 . ELBUF_TAB,IPARG ,IPM ,IGEO,IXC ,
506 . IXTG ,WA,WAP0 ,IPARTC,IPARTTG,
507 . IPART_STATE,STAT_INDXC,STAT_INDXTG,
508 . THKE ,SIZP0)
509
510 IF(STAT_C(10)==1) CALL STAT_C_STRSFG(
511 . ELBUF_TAB,X,IPARG ,IPM ,IGEO,IXC ,
512 . IXTG ,WA,WAP0 ,IPARTC,IPARTTG,
513 . IPART_STATE,STAT_INDXC,STAT_INDXTG,
514 . THKE ,SIZP0,GEO ,STACK,DRAPE_SH4N,DRAPE_SH3N,DRAPEG)
515
516 IF(STAT_C(5)==1) CALL STAT_C_STRAF(
517 . ELBUF_TAB,IPARG ,IPM ,IGEO,IXC ,
518 . IXTG ,WA,WAP0 ,IPARTC,IPARTTG,
519 . IPART_STATE,STAT_INDXC,STAT_INDXTG,
520 . THKE ,SIZP0)
521
522 IF(STAT_C(11)==1) CALL STAT_C_STRAFG(
523 . ELBUF_TAB,X,IPARG ,IPM ,IGEO,IXC ,
524 . IXTG ,WA,WAP0 ,IPARTC,IPARTTG,
525 . IPART_STATE,STAT_INDXC,STAT_INDXTG,
526 . THKE ,SIZP0,GEO ,STACK,DRAPE_SH4N,DRAPE_SH3N,DRAPEG)
527
528 IF(STAT_C(6)==1) CALL STAT_C_AUXF(
529 . ELBUF_TAB,IPARG ,IPM ,IGEO,IXC ,
530 . IXTG ,WA,WAP0 ,IPARTC,IPARTTG,
531 . IPART_STATE,STAT_INDXC,STAT_INDXTG,SIZP0)
532
533C
534 IF(STAT_C(7)==1) CALL STAT_C_ORTH_LOC(
535 . ELBUF_TAB,IPARG ,IPM ,IGEO,IXC,
536 . IXTG ,WA,WAP0 ,IPARTC,IPARTTG,
537 . IPART_STATE,STAT_INDXC,STAT_INDXTG,X,STAT_C(9),SIZP0)
538C
539 IF(STAT_C(8)==1) CALL STAT_C_FAIL(
540 . ELBUF_TAB,IPARG ,IPM ,IGEO,IXC ,
541 . IXTG ,WA,WAP0 ,IPARTC,IPARTTG,
542 . IPART_STATE,STAT_INDXC,STAT_INDXTG,SIZP0,
543 . NUMMAT,MAT_PARAM)
544C-----------------------------------------------
545C BRICK TENSOR
546C-----------------------------------------------
547 IF(STAT_S(4)==1) CALL STAT_S_STRSF( ! /INIBRI/STRESS/FULL
548 1 ELBUF_TAB ,IPARG ,IPM ,IGEO ,IXS ,
549 2 WA,WAP0 ,IPARTS, IPART_STATE,
550 3 STAT_INDXS,X,0,IPART,SIZP0)
551
552 IF(STAT_S(5)==1) CALL STAT_S_STRAF( ! /INIBRI/STRAIN/FULL
553 1 ELBUF_TAB ,IPARG ,IPM ,IGEO ,IXS ,
554 2 WA,WAP0 ,IPARTS, IPART_STATE,
555 3 STAT_INDXS,X,0,IPART,SIZP0)
556
557 IF(STAT_S(6)==1) CALL STAT_S_AUXF( ! /INIBRI/AUX
558 1 ELBUF_TAB ,IPARG ,IPM ,IGEO ,IXS ,
559 2 WA,WAP0 ,IPARTS, IPART_STATE,
560 3 STAT_INDXS,IPART,SIZP0)
561 IF(STAT_S(7)==1) CALL STAT_S_ORTHO( ! /INIBRI/ORTHO
562 1 ELBUF_TAB ,IPARG ,IPM ,IGEO ,IXS ,
563 2 WA,WAP0 ,IPARTS, IPART_STATE,
564 3 STAT_INDXS,X,0,IPART,STAT_S(12),SIZP0)
565 IF(STAT_S(8)==1) CALL STAT_S_STRSF( ! /INIBRI/STRESS/GLOBF
566 1 ELBUF_TAB ,IPARG ,IPM ,IGEO ,IXS ,
567 2 WA,WAP0 ,IPARTS, IPART_STATE,
568 3 STAT_INDXS,X,1,IPART,SIZP0)
569
570 IF(STAT_S(9)==1) CALL STAT_S_STRAF( ! /INIBRI/STRAIN/GLOBF
571 1 ELBUF_TAB ,IPARG ,IPM ,IGEO ,IXS ,
572 2 WA,WAP0 ,IPARTS, IPART_STATE,
573 3 STAT_INDXS,X,1,IPART,SIZP0)
574 IF(STAT_S(10)==1) CALL STAT_S_ORTHO( ! /INIBRI/ORTHO/GLOBF
575 1 ELBUF_TAB ,IPARG ,IPM ,IGEO ,IXS ,
576 2 WA,WAP0 ,IPARTS, IPART_STATE,
577 3 STAT_INDXS,X,1,IPART,STAT_S(12),SIZP0)
578 IF(STAT_S(11)==1) CALL STAT_S_FAIL(
579 1 ELBUF_TAB ,IPARG ,IPM ,IGEO ,IXS ,
580 2 WA,WAP0 ,IPARTS, IPART_STATE,
581 3 STAT_INDXS,IPART,SIZP0,NUMMAT,MAT_PARAM)
582 IF(STAT_S(13)==1) CALL STAT_S_EREF(
583 1 ELBUF_TAB ,IPARG ,IPM ,IGEO ,
584 2 IXS ,IXS10,IXS16,IXS20,X ,
585 3 DR ,WA,WAP0 ,IPARTS, IPART_STATE,
586 4 STAT_INDXS,IPART,SIZP0)
587C
588C-----------------------------------------------
589C - 1D - spring elems (FULL)
590C-----------------------------------------------
591 IF(STAT_R(1) == 1) CALL STAT_R_FULL(
592 1 ELBUF_TAB ,IPARG ,GEO ,IGEO ,IXR ,
593 2 WA ,WAP0 ,IPARTR ,IPART_STATE ,STAT_INDXR,
594 3 SIZP0 )
595C-----------------------------------------------
596C - 1D - beam elems (FULL + AUX)
597C-----------------------------------------------
598! - FULL -
599 IF(STAT_P(1) == 1) CALL STAT_P_FULL(
600 1 ELBUF_TAB ,IPARG ,GEO ,IGEO ,IXP ,
601 2 WA ,WAP0 ,IPARTP ,IPART_STATE ,STAT_INDXP,
602 3 SIZP0 )
603! - AUX -
604 IF(STAT_P(3)==1) CALL STAT_P_AUX(
605 1 ELBUF_TAB ,IPARG ,IPM ,IGEO ,IXP ,
606 2 WA ,WAP0 ,IPARTP ,IPART_STATE,STAT_INDXP,
607 3 SIZP0 )
608C-----------------------------------------------
609C - 1D - truss elems (FULL)
610C-----------------------------------------------
611! - FULL -
612 IF(STAT_T(1) == 1) CALL STAT_T_FULL(
613 1 ELBUF_TAB ,IPARG ,GEO ,IGEO ,IXT ,
614 2 WA ,WAP0 ,IPARTT ,IPART_STATE ,STAT_INDXT,
615 3 SIZP0 )
616C-----------------------------------------------
617C - SPHCEL elems (FULL)
618C-----------------------------------------------
619! - FULL -
620 IF(OUTPUT%STATE%STAT_SPH(3) == 1) CALL STAT_SPHCEL_FULL(
621 1 NUMSPH ,NISP ,NGROUP ,NPARG ,SIZLOC ,
622 2 NPART ,SIZP0 ,NSPMD ,OUTPUT%STATE%STAT_NUMELSPH ,OUTPUT%STATE%STAT_NUMELSPH_G ,
623 2 NSPBUF ,NUMNOD ,NPROPMI ,NUMMAT ,LIPART1 ,
624 4 KXSP ,IPARTSPH ,IPART_STATE ,STAT_INDXSPH ,IPARG ,
625 5 ELBUF_TAB ,WA ,WAP0 ,SPBUF ,ITAB ,
626 6 IPM ,OUTPUT%STATE%STAT_SPH(2),IPART )
627C-----------------------------------------------
628 IF(SIZLOC >= 1) DEALLOCATE(WA)
629 IF(SIZP0 >= 1) DEALLOCATE(WAP0)
630C-----------------------------------------------
631C END
632C-----------------------------------------------
633 IF(IS_FILE_TO_BE_WRITTEN) THEN
634 WRITE(IUGEO,'(a)')'#ENDDATA '
635 CLOSE(unit=iugeo)
636 IF(izipstrs /= 0)THEN
637 CALL strs_txt50('#ENDDATA ',11)
638 CALL close_c()
639 ENDIF
640 WRITE (iout,1000) filnam(1:filen)
641 WRITE (istdo,1000) filnam(1:filen)
642 ENDIF
643C-----------------------------------------------
644 DEALLOCATE(itabg)
645 DEALLOCATE(nodtag)
646 DEALLOCATE(stat_indxc)
647 DEALLOCATE(stat_indxtg)
648 DEALLOCATE(stat_indxq)
649 DEALLOCATE(stat_indxs)
650 DEALLOCATE(stat_indxr)
651 DEALLOCATE(stat_indxp)
652 DEALLOCATE(stat_indxt)
653 DEALLOCATE(stat_indxsph)
654
655 1000 FORMAT (4x,' STATE FILE:',1x,a,' WRITTEN')
656C
657 RETURN
658 END
subroutine genstat(x, ms, elbuf_tab, bufel, spbuf, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, kxsp, iparg, ipm, igeo, itab, ipart, pm, geo, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, ipartur, iparttg, ipartx, ipartsp, dd_iad, weight, nodglob, leng, ipart_state, lengc, lengtg, sh4tree, sh3tree, lengs, sh4trim, sh3trim, temp, ixs10, thke, ixs16, ixs20, icode, lengr, lengp, lengt, iskew, v, vr, lengq, multi_fvm, bufmat, npby, lpby, stack, drape_sh4n, drape_sh3n, dr, drapeg, mat_param, ipartsph, output, lengsph, numsphg, itherm_fe)
Definition genstat.F:109
character(len=outfile_char_len) outfile_name
integer outfile_name_len
logical is_stat_inimap_single
subroutine sortie_main(timers, pm, d, v, ale_connect, w, elbuf, iparg, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, wa, itab, x, geo, ms, a, partsav, icut, xcut, lpby, npby, nstrf, rwbuf, nprw, ebcs_tab, tani, inoise, bufnois, rby, neflsw, nnflsw, crflsw, flsw, lout, nodes, fsav, skew, elbuf_tab, cluster, vr, in, weight, fcluster, mcluster, dd_iad, dmas, accelm, gauge, ipari, eani, ipart, mat_param, igrnod, subset, nom_opt, ar, igrsurf, bufsf, idata, rdata, kxx, ixx, bufmat, bufgeo, kxsp, ixsp, nod2sp, spbuf, dr, fsavd, ixri, rivet, iskwn, iframe, xframe, ixs10, ixs20, ixs16, ndma, monvol, volmon, ipm, igeo, nodglob, iad_elem, fr_elem, fr_rby2, iad_rby2, fr_wall, fr_sec, fxbipm, fxbrpm, ndin, fxbdep, fxbvit, fxbacc, iflow, rflow, ipartl, npartl, iaccp, naccp, fasolfr, iparth, fr_mv, ipart_state, sh4tree, sh3tree, temp, thke, err_thk_sh4, err_thk_sh3, inod_pxfem, fthreac, nodreac, gresav, diag_sms, sh4trim, sh3trim, xmom_sms, irbe2, irbe3, lrbe2, lrbe3, fr_rbe2, fr_rbe3m, iad_rbe2, dxancg, iel_pxfem, zi_ply, vgaz, fcontg, fncontg, ftcontg, fanreac, inod_crk, iel_crk, elcutc, iadc_crk, res_sms, sensors, qfricint, igaup, ngaup, weight_md, ncont, indexcont, nodglobxfe, nodedge, xfem_tab, nv46, rthbuf, kxig3d, ixig3d, knot, wige, nercvois, nesdvois, lercvois, lesdvois, crkedge, stack, isphio, vsphio, icode, indx_crk, xedge4n, xedge3n, sph2sol, stifn, stifr, drape_sh4n, drape_sh3n, ms_2d, multi_fvm, segquadfr, h3d_data, iskew, pskids, iskwp, knotlocpc, knotlocel, pinch_data, tag_skins6, irunn_bis, tf, npc, dynain_data, fcont_max, mds_matid, ibcl, iloadp, lloadp, loadp, tagncont, loadp_hyd_inter, forc, drapeg, user_windows, output, dt, fsavsurf, table, loads, sfani, iparit, x_c, sz_npcont2, npcont2, glob_therm, pblast, wfext, mass0_start)
subroutine strs_txt50(text, length)
Definition sta_txt.F:87
subroutine stat_n_vel(numnod, itab, itabg, leng, nodglob, weight, nodtag, v, vr)
Definition state_n_vel.F:35
void close_c()
void cur_fil_c(int *nf)
void open_c(int *ifil, int *len, int *mod)