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_routtines.c
31!|| cur_fil_c ../common_source/tools/input_output/write_routtines.c
32!|| open_c ../common_source/tools/input_output/write_routtines.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!|| inoutfile_mod ../common_source/modules/inoutfile_mod.F
83!|| mat_elem_mod ../common_source/modules/mat_elem/mat_elem_mod.f90
84!|| message_mod ../engine/share/message_module/message_mod.F
85!|| multi_fvm_mod ../common_source/modules/ale/multi_fvm_mod.F90
86!|| my_alloc_mod ../common_source/tools/memory/my_alloc.F90
87!|| output_mod ../common_source/modules/output/output_mod.F90
88!|| stack_mod ../engine/share/modules/stack_mod.F
89!|| stat_sphcel_full_mod ../engine/source/output/sta/stat_sphcel_full.F90
90!|| stat_sphcel_mp_mod ../engine/source/output/sta/stat_sphcel_mp.F90
91!|| stat_sphcel_spmd_mod ../engine/source/output/sta/stat_sphcel_spmd.F90
92!|| state_inimap_mod ../engine/share/modules/state_inimap_mod.F
93!||====================================================================
94 SUBROUTINE genstat(X ,MS ,ELBUF_TAB,BUFEL ,SPBUF ,
95 2 IXS ,IXQ ,IXC ,IXT ,IXP ,
96 3 IXR ,IXTG ,KXSP ,IPARG ,IPM ,
97 4 IGEO ,ITAB ,IPART ,PM ,GEO ,
98 5 IPARTS ,IPARTQ ,IPARTC ,IPARTT ,IPARTP ,
99 6 IPARTR ,IPARTUR ,IPARTTG ,IPARTX ,IPARTSP ,
100 7 DD_IAD ,WEIGHT ,NODGLOB ,LENG,IPART_STATE ,
101 8 LENGC ,LENGTG ,SH4TREE ,SH3TREE ,LENGS ,
102 9 SH4TRIM ,SH3TRIM ,TEMP ,IXS10 ,THKE ,
103 A IXS16 ,IXS20 ,ICODE ,LENGR ,LENGP ,
104 B LENGT ,ISKEW ,V ,VR ,LENGQ ,
105 C MULTI_FVM,BUFMAT ,NPBY ,LPBY ,STACK ,
106 D DRAPE_SH4N ,DRAPE_SH3N,DR,DRAPEG,MAT_PARAM ,
107 E IPARTSPH , OUTPUT ,LENGSPH ,NUMSPHG ,ITHERM_FE)
108C-----------------------------------------------
109C M o d u l e s
110C-----------------------------------------------
111 USE mat_elem_mod
112 USE elbufdef_mod
113 USE message_mod
114 USE inoutfile_mod
115 USE multi_fvm_mod
117 USE stack_mod
118 USE drape_mod
119 USE output_mod
120 USE stat_sphcel_mp_mod
121 USE stat_sphcel_spmd_mod
122 USE stat_sphcel_full_mod
123 USE my_alloc_mod
124C-----------------------------------------------
125C I m p l i c i t T y p e s
126C-----------------------------------------------
127#include "implicit_f.inc"
128C-----------------------------------------------
129C C o m m o n B l o c k s
130C-----------------------------------------------
131#include "com01_c.inc"
132#include "com04_c.inc"
133#include "com09_c.inc"
134#include "param_c.inc"
135#include "units_c.inc"
136#include "scr03_c.inc"
137#include "scr14_c.inc"
138#include "scr16_c.inc"
139#include "scr17_c.inc"
140#include "chara_c.inc"
141#include "task_c.inc"
142#include "sphcom.inc"
143#include "state_c.inc"
144#include "sysunit.inc"
145#include "tabsiz_c.inc"
146C-----------------------------------------------
147C D u m m y A r g u m e n t s
148C-----------------------------------------------
149 INTEGER IPARG(*),
150 . IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),IXC(NIXC,NUMELC),IXTG(NIXTG,NUMELTG),
151 . IXT(NIXT,NUMELT),IXP(NIXP,NUMELP),IXR(NIXR,NUMELR),KXSP(NISP,*),
152 . ITAB(*),IPART(LIPART1,*),IPM(*),IGEO(*),
153 . IPARTS(*),IPARTQ(*) ,IPARTC(*) ,IPARTT(*),IPARTP(*) ,
154 . IPARTR(*),IPARTUR(*),IPARTTG(*),IPARTX(*),IPARTSP(*),
155 . WEIGHT(*), DD_IAD(*), NODGLOB(*), IPART_STATE(*),
156 . SH4TREE(*), SH3TREE(*),
157 . SH4TRIM(*), SH3TRIM(*),IXS10(*),IXS16(*),IXS20(*),ICODE(*),
158 . ISKEW(*), NPBY(NNPBY,*), LPBY(*)
159 INTEGER LENG,LENGC,LENGTG,LENGS,LENGR,LENGP,LENGT,LENGQ
160 INTEGER ,intent(in) :: ITHERM_FE
161 my_real
162 . x(*), ms(*), bufel(*), spbuf(*),
163 . pm(npropm,*), geo(npropg,*) ,temp(*),thke(*),
164 . v(3,*),vr(3,*),dr(sdr)
165 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
166 TYPE(MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
167 TYPE (STACK_PLY) :: STACK
168 TYPE (DRAPE_) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
169 TYPE(DRAPEG_) :: DRAPEG
170 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
171 INTEGER, DIMENSION(NUMSPH), INTENT(IN) :: IPARTSPH
172 my_real bufmat(*)
173 TYPE(output_),INTENT(INOUT) :: OUTPUT
174 INTEGER, INTENT(IN) :: LENGSPH
175 INTEGER, INTENT(IN) :: NUMSPHG
176C-----------------------------------------------
177C L o c a l V a r i a b l e s
178C-----------------------------------------------
179 CHARACTER CHSTAT*4,FILNAM*100,T10*10,MES*40
180 INTEGER FILEN,I,INNODA,IERR,J,N
181 INTEGER LENR,SIZLOC,SIZP0
182 INTEGER I161,I16A,I16B,I16C,I16D,I16E,I16F,I16G,I16H,I16I
183 INTEGER,DIMENSION(:),ALLOCATABLE :: ITABG
184 INTEGER,DIMENSION(:),ALLOCATABLE :: NODTAG
185 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXC
186 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXTG
187 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXQ
188 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXS
189 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXR
190 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXP
191 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDX
192 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXT
193 INTEGER,DIMENSION(:),ALLOCATABLE :: STAT_INDXSPH
194
195 INTEGER CTEXT(2149)
196 double precision
197 . , DIMENSION(:),ALLOCATABLE :: wa,wap0
198
199 INTEGER :: LEN_TMP_NAME
200 CHARACTER(len=2148) :: TMP_NAME
201 LOGICAL IS_FILE_TO_BE_WRITTEN
202 CHARACTER*100 LINE
203C-----------------------------------------------
204C S o u r c e L i n e s
205C-----------------------------------------------
206 CALL my_alloc(itabg,leng)
207 CALL my_alloc(nodtag,numnod)
208 CALL my_alloc(stat_indxc,2*lengc)
209 CALL my_alloc(stat_indxtg,2*lengtg)
210 CALL my_alloc(stat_indxq,2*lengq)
211 CALL my_alloc(stat_indxs,2*lengs)
212 CALL my_alloc(stat_indxr,2*lengr)
213 CALL my_alloc(stat_indxp,2*lengp)
214 CALL my_alloc(stat_indxt,2*lengt)
215 CALL my_alloc(stat_indxsph,2*lengsph)
216C-----------------------------------------------
217 is_file_to_be_written = ((ispmd == 0) .AND. (.NOT.is_stat_inimap_single)) !/STATE/INIMAP* is using an independent state file
218C===============================================|
219C OPEN FILE
220C-----------------------------------------------
221 IF(istatf>=10000)istatf=1
222 WRITE(chstat,'(I4.4)')istatf
223 filnam=rootnam(1:rootlen)//'_'//chstat//'.sta'
224 filen = rootlen + 9
225 len_tmp_name = outfile_name_len + filen
226 tmp_name=outfile_name(1:outfile_name_len)//filnam(1:filen)
227
228 IF(is_file_to_be_written) THEN
229 OPEN(unit=iugeo,file=tmp_name(1:len_tmp_name),access='SEQUENTIAL',form='FORMATTED',status='UNKNOWN')
230 WRITE(iugeo,'(2A)')'#RADIOSS STATE FILE ',filnam(1:filen)
231 ! OPEN STRS FILE
232 IF(izipstrs/=0) THEN
233 filnam=rootnam(1:rootlen)//'_'//chstat//'.str'
234 len_tmp_name = outfile_name_len + filen
235 tmp_name=outfile_name(1:outfile_name_len)//filnam(1:filen)
236 DO i=1,len_tmp_name
237 ctext(i)=ichar(tmp_name(i:i))
238 CALL cur_fil_c(0)
239 ENDDO
240 ENDIF
241 IF(izipstrs==1)THEN
242 CALL open_c(ctext,len_tmp_name,0)
243 ELSEIF(izipstrs==2)THEN
244 CALL open_c(ctext,len_tmp_name,6)
245 ENDIF
246 END IF
247C-----------------------------------------------
248C /BEGIN + UNITS
249C-----------------------------------------------
250 IF(is_file_to_be_written) THEN
251 WRITE(iugeo,'(A)')'/BEGIN'
252 WRITE(iugeo,'(A)') rootnam(1:rootlen)
253 WRITE(iugeo,'(I10,I10)') st_invers, 0
254 WRITE(iugeo,'(1P3E20.13)') fac_mass,fac_length,fac_time
255 WRITE(iugeo,'(1P3E20.13)') fac_mass,fac_length,fac_time
256 IF(izipstrs > 0) THEN
257 WRITE(line,'(A)')'/BEGIN'
258 CALL strs_txt50(line,100)
259 WRITE(line,'(A)') rootnam(1:rootlen)
260 CALL strs_txt50(line,100)
261 WRITE(line,'(I10,I10)') st_invers, 0
262 CALL strs_txt50(line,100)
263 WRITE(line,'(1P3E20.13)') fac_mass,fac_length,fac_time
264 CALL strs_txt50(line,100)
265 WRITE(line,'(1P3E20.13)') fac_mass,fac_length,fac_time
266 CALL strs_txt50(line,100)
267 ENDIF
268 ENDIF
269C-----------------------------------------------
270C CONNECTIVITIES + NODAL COORDINATES
271C-----------------------------------------------
272c
273 IF (nspmd > 1)CALL spmd_outpitab(itab,weight,nodglob,itabg)
274
275 nodtag=0
276
277 stat_numelc =0
278 stat_numeltg =0
279 stat_numels =0
280 stat_numelq =0
281 stat_numelr =0
282 stat_numelp =0
283 stat_numelt =0
284 output%STATE%STAT_NUMELSPH = 0
285
286 IF(nspmd == 1)THEN
287 ! - shells -
288 CALL stat_shel_mp(
289 . itab,itabg,leng,ipart,igeo,
290 . ixc,ixtg,ipartc,iparttg,ipart_state,
291 . nodtag,stat_indxc,stat_indxtg,sh4tree,sh3tree,
292 . iparg ,sh4trim ,sh3trim ,elbuf_tab,thke,
293 . stat_c(9))
294 stat_numelc_g =stat_numelc
295 stat_numeltg_g =stat_numeltg
296 ! - quads - (only taging nodes, quads are currently not exported in state files : 3d only)
297 CALL stat_quad_mp(
298 . itab,ipart,igeo,ixq,ipartq,
299 . ipart_state,nodtag,stat_indxq,
300 . iparg ,elbuf_tab)
301 stat_numelq_g =stat_numelq
302 ! - solids -
303 CALL stat_brick_mp(
304 . itab,ipart,igeo,ixs,iparts,
305 . ipart_state,nodtag,stat_indxs,
306 . iparg ,ixs10,ixs16,ixs20,elbuf_tab,
307 . stat_s(12))
308 stat_numels_g =stat_numels
309 ! - springs -
310 CALL stat_spring_mp(
311 . itab ,ipart ,ixr ,ipartr ,ipart_state,
312 . nodtag ,stat_indxr,iparg ,elbuf_tab,stat_r(2) )
313 stat_numelr_g =stat_numelr
314 ! - beams -
315 CALL stat_beam_mp(
316 . itab ,ipart ,ixp ,ipartp ,ipart_state,
317 . nodtag ,stat_indxp,iparg ,elbuf_tab,stat_p(2) )
318 stat_numelp_g =stat_numelp
319 ! - trusses -
320 CALL stat_truss_mp(
321 . itab ,ipart ,ixt ,ipartt ,ipart_state,
322 . nodtag ,stat_indxt,iparg ,elbuf_tab,stat_t(2) )
323 stat_numelt_g =stat_numelt
324 ! - sphcels -
325 CALL stat_sphcel_mp( numnod , numsph ,nisp ,npart ,ngroup ,
326 . nparg , lipart1 ,output%STATE%STAT_NUMELSPH ,itab ,ipart ,
327 . kxsp , ipartsph ,ipart_state,nodtag ,stat_indxsph,
328 . iparg ,elbuf_tab ,output%STATE%STAT_SPH(2) )
329
330 output%STATE%STAT_NUMELSPH_G = output%STATE%STAT_NUMELSPH
331
332 ELSE
333 ! - shells -
334 CALL stat_shel_spmd(
335 . itab,itabg,leng,ipart,igeo,
336 . ixc,ixtg,ipartc,iparttg,ipart_state,
337 . nodtag,stat_indxc,stat_indxtg,lengc,lengtg,
338 . iparg ,elbuf_tab,thke,stat_c(9))
339 ! - solids -
340 CALL stat_brick_spmd(
341 . itab,ipart,igeo,ixs,iparts,
342 . ipart_state,nodtag,stat_indxs,
343 . iparg, lengs,ixs10,ixs16,ixs20,
344 . elbuf_tab, stat_s(12))
345 ! - quads - (only taging nodes, quads are currently not exported in state files : 3d only)
346 CALL stat_quad_spmd(
347 . itab,ipart,igeo,ixq,ipartq,
348 . ipart_state,nodtag,stat_indxq,
349 . iparg, lengq, elbuf_tab)
350
351 ! - springs -
352 CALL stat_spring_spmd(
353 . itab ,ipart ,ixr ,ipartr,ipart_state,
354 . nodtag ,stat_indxr,lengr ,iparg ,elbuf_tab ,
355 . stat_r(2) )
356 ! - beams -
357 CALL stat_beam_spmd(
358 . itab ,ipart ,ixp ,ipartp,ipart_state,
359 . nodtag ,stat_indxp,lengp ,iparg ,elbuf_tab ,
360 . stat_p(2) )
361 ! - trusses -
362 CALL stat_truss_spmd(
363 . itab ,ipart ,ixt ,ipartt,ipart_state,
364 . nodtag ,stat_indxt,lengt ,iparg ,elbuf_tab ,
365 . stat_t(2) )
366 ! - sphcels -
367 CALL stat_sphcel_spmd(
368 . numnod ,numsph ,numsphg ,nisp ,npart ,
369 . ngroup ,nparg ,lipart1 ,output%STATE%STAT_NUMELSPH ,output%STATE%STAT_NUMELSPH_G ,
370 . lengsph ,nspmd ,itab ,ipart ,kxsp ,
371 . ipartsph ,ipart_state ,nodtag ,stat_indxsph,iparg ,
372 . elbuf_tab ,output%STATE%STAT_SPH(2) )
373 END IF
374
375 ! - inimap1d - (generic subroutine : SMP or SPMD)
376 IF(is_stat_inimap1d)THEN
377 IF(is_stat_inimap_file)THEN
379 . x , v , itab , ipart_state, nodtag ,
380 . ipart , iparts , ipartq, iparttg , mat_param,
381 . igeo , iparg , ixs , ixq , ixtg ,
382 . elbuf_tab, multi_fvm, bufmat, ipm)
383 ELSE
385 . x , v , itab , ipart_state, nodtag ,
386 . ipart , iparts , ipartq, iparttg , mat_param,
387 . igeo , iparg , ixs , ixq , ixtg ,
388 . elbuf_tab, multi_fvm, bufmat, ipm)
389 ENDIF
390 ! - inimap2d - (generic subroutine : SMP or SPMD)
391 ELSEIF(is_stat_inimap2d)THEN
392 IF(is_stat_inimap_file)THEN
394 . x , v , itab , ipart_state, nodtag ,
395 . ipart , iparts , ipartq, iparttg , mat_param,
396 . igeo , iparg , ixs , ixq , ixtg ,
397 . elbuf_tab, multi_fvm, bufmat, ipm)
398 ELSE
400 . x , v , itab , ipart_state, nodtag ,
401 . ipart , iparts , ipartq, iparttg , mat_param,
402 . igeo , iparg , ixs , ixq , ixtg ,
403 . elbuf_tab, multi_fvm, bufmat, ipm)
404 ENDIF
405 ENDIF
406
407C-----------------------------------------------
408C IF OPTION IS STATE/NODE/ALL
409C-----------------------------------------------
410 IF(nstatall /= 0) THEN
411 DO i=1,numnod
412 nodtag(i) = 1
413 ENDDO
414 ELSE
415C-----------------------------------------------
416C RIGID BODY'S PRIMARY NODE IS OUTPUTTED IF ONE OF ITS SECONDARY NODES ARE
417C-----------------------------------------------
418 DO i=1,nrbody
419 DO j=1,npby(2,i)
420 n=lpby(npby(11,i)+j)
421 IF (nodtag(n)/=0) THEN
422 nodtag(npby(1,i)) = 1
423 EXIT
424 END IF
425 ENDDO
426 ENDDO
427 ENDIF
428C-----------------------------------------------
429 CALL stat_node(x,numnod,itab,itabg,leng,nodglob,weight,nodtag)
430
431 IF(izipstrs /= 0 .AND. is_file_to_be_written)THEN
432 WRITE(iugeo,'(A)')'/STATE/STR_FILE'
433 WRITE(iugeo,'(A)')'# gzip (no:0: yes:1)'
434 WRITE(iugeo,'(I10)')izipstrs-1
435 WRITE(iugeo,'(A)')'# file name'
436 IF (izipstrs == 1) WRITE(iugeo,'(A)')filnam(1:filen)
437 IF (izipstrs == 2) WRITE(iugeo,'(A)')filnam(1:filen)//'.gz'
438 ENDIF
439C-----------------------------------------------
440C NODE SCALAR
441C-----------------------------------------------
442 IF(stat_n(1)==1)
443 . CALL stat_n_temp(x,numnod,itab,itabg,leng,
444 . nodglob,weight,nodtag,temp,itherm_fe)
445
446 IF(stat_n(2)==1)
447 . CALL stat_n_bcs(icode,numnod,itab,itabg,leng,
448 . nodglob,iskew,nodtag)
449! translation/rotation velocity
450 IF(stat_n(3)==1)
451 . CALL stat_n_vel(numnod ,itab ,itabg ,leng ,nodglob,
452 . weight ,nodtag ,v ,vr )
453C-----------------------------------------------
454 CALL stat_size_c(iparg ,ixc ,ixtg ,igeo ,ipm ,
455 . sizp0 ,sizloc ,ixs ,geo ,elbuf_tab,
456 . ixr ,ixp ,ixt ,output,lipart1 ,
457 . npart ,ipart ,numsph,ipartsp )
458C-----------------------------------------------
459C ALLOCATION OF TABLES
460C-----------------------------------------------
461 ierr = 0
462 IF(sizloc >= 1) THEN
463 ALLOCATE(wa(sizloc),stat=ierr)
464 ELSE
465 ALLOCATE(wa(1))
466 ENDIF
467 IF(ierr/=0)THEN
468 CALL ancmsg(msgid=252,anmode=aninfo,
469 . i1=ierr)
470 CALL arret(2)
471 END IF
472
473 ierr = 0
474 sizp0 = max(1,sizp0)
475 ALLOCATE(wap0(sizp0),stat=ierr)
476 IF(ierr/=0)THEN
477 CALL ancmsg(msgid=252,anmode=aninfo,
478 . i1=ierr)
479 CALL arret(2)
480 END IF
481C-----------------------------------------------
482C SHELL SCALAR
483C-----------------------------------------------
484 IF(stat_c(1)==1) CALL stat_c_off(
485 . elbuf_tab,iparg ,ipm ,igeo ,ixc ,
486 . ixtg ,wa,wap0,ipartc,iparttg,
487 . ipart_state,stat_indxc,stat_indxtg,sizp0)
488
489C option non documentee (not a public option) ::
490 IF(stat_c(2)==1) CALL stat_c_thk(
491 . elbuf_tab,iparg ,ipm ,igeo,ixc ,
492 . ixtg ,wa,wap0 ,ipartc,iparttg,
493 . ipart_state,stat_indxc,stat_indxtg,
494 . thke ,sizp0)
495
496 IF(stat_c(3)==1) CALL stat_c_epspf(
497 . elbuf_tab,iparg ,ipm ,igeo,ixc ,
498 . ixtg ,wa,wap0 ,ipartc,iparttg,
499 . ipart_state,stat_indxc,stat_indxtg,
500 . thke ,sizp0)
501
502 IF(stat_c(4)==1) CALL stat_c_strsf(
503 . elbuf_tab,iparg ,ipm ,igeo,ixc ,
504 . ixtg ,wa,wap0 ,ipartc,iparttg,
505 . ipart_state,stat_indxc,stat_indxtg,
506 . thke ,sizp0)
507
508 IF(stat_c(10)==1) CALL stat_c_strsfg(
509 . elbuf_tab,x,iparg ,ipm ,igeo,ixc ,
510 . ixtg ,wa,wap0 ,ipartc,iparttg,
511 . ipart_state,stat_indxc,stat_indxtg,
512 . thke ,sizp0,geo ,stack,drape_sh4n,drape_sh3n,drapeg)
513
514 IF(stat_c(5)==1) CALL stat_c_straf(
515 . elbuf_tab,iparg ,ipm ,igeo,ixc ,
516 . ixtg ,wa,wap0 ,ipartc,iparttg,
517 . ipart_state,stat_indxc,stat_indxtg,
518 . thke ,sizp0)
519
520 IF(stat_c(11)==1) CALL stat_c_strafg(
521 . elbuf_tab,x,iparg ,ipm ,igeo,ixc ,
522 . ixtg ,wa,wap0 ,ipartc,iparttg,
523 . ipart_state,stat_indxc,stat_indxtg,
524 . thke ,sizp0,geo ,stack,drape_sh4n,drape_sh3n,drapeg)
525
526 IF(stat_c(6)==1) CALL stat_c_auxf(
527 . elbuf_tab,iparg ,ipm ,igeo,ixc ,
528 . ixtg ,wa,wap0 ,ipartc,iparttg,
529 . ipart_state,stat_indxc,stat_indxtg,sizp0)
530
531C
532 IF(stat_c(7)==1) CALL stat_c_orth_loc(
533 . elbuf_tab,iparg ,ipm ,igeo,ixc,
534 . ixtg ,wa,wap0 ,ipartc,iparttg,
535 . ipart_state,stat_indxc,stat_indxtg,x,stat_c(9),sizp0)
536C
537 IF(stat_c(8)==1) CALL stat_c_fail(
538 . elbuf_tab,iparg ,ipm ,igeo,ixc ,
539 . ixtg ,wa,wap0 ,ipartc,iparttg,
540 . ipart_state,stat_indxc,stat_indxtg,sizp0,
541 . nummat,mat_param)
542C-----------------------------------------------
543C BRICK TENSOR
544C-----------------------------------------------
545 IF(stat_s(4)==1) CALL stat_s_strsf( ! /INIBRI/STRESS/FULL
546 1 elbuf_tab ,iparg ,ipm ,igeo ,ixs ,
547 2 wa,wap0 ,iparts, ipart_state,
548 3 stat_indxs,x,0,ipart,sizp0)
549
550 IF(stat_s(5)==1) CALL stat_s_straf( ! /INIBRI/STRAIN/FULL
551 1 elbuf_tab ,iparg ,ipm ,igeo ,ixs ,
552 2 wa,wap0 ,iparts, ipart_state,
553 3 stat_indxs,x,0,ipart,sizp0)
554
555 IF(stat_s(6)==1) CALL stat_s_auxf( ! /INIBRI/AUX
556 1 elbuf_tab ,iparg ,ipm ,igeo ,ixs ,
557 2 wa,wap0 ,iparts, ipart_state,
558 3 stat_indxs,ipart,sizp0)
559 IF(stat_s(7)==1) CALL stat_s_ortho( ! /INIBRI/ORTHO
560 1 elbuf_tab ,iparg ,ipm ,igeo ,ixs ,
561 2 wa,wap0 ,iparts, ipart_state,
562 3 stat_indxs,x,0,ipart,stat_s(12),sizp0)
563 IF(stat_s(8)==1) CALL stat_s_strsf( ! /INIBRI/STRESS/GLOBF
564 1 elbuf_tab ,iparg ,ipm ,igeo ,ixs ,
565 2 wa,wap0 ,iparts, ipart_state,
566 3 stat_indxs,x,1,ipart,sizp0)
567
568 IF(stat_s(9)==1) CALL stat_s_straf( ! /INIBRI/STRAIN/GLOBF
569 1 elbuf_tab ,iparg ,ipm ,igeo ,ixs ,
570 2 wa,wap0 ,iparts, ipart_state,
571 3 stat_indxs,x,1,ipart,sizp0)
572 IF(stat_s(10)==1) CALL stat_s_ortho( ! /INIBRI/ORTHO/GLOBF
573 1 elbuf_tab ,iparg ,ipm ,igeo ,ixs ,
574 2 wa,wap0 ,iparts, ipart_state,
575 3 stat_indxs,x,1,ipart,stat_s(12),sizp0)
576 IF(stat_s(11)==1) CALL stat_s_fail(
577 1 elbuf_tab ,iparg ,ipm ,igeo ,ixs ,
578 2 wa,wap0 ,iparts, ipart_state,
579 3 stat_indxs,ipart,sizp0,nummat,mat_param)
580 IF(stat_s(13)==1) CALL stat_s_eref(
581 1 elbuf_tab ,iparg ,ipm ,igeo ,
582 2 ixs ,ixs10,ixs16,ixs20,x ,
583 3 dr ,wa,wap0 ,iparts, ipart_state,
584 4 stat_indxs,ipart,sizp0)
585C
586C-----------------------------------------------
587C - 1D - spring elems (FULL)
588C-----------------------------------------------
589 IF(stat_r(1) == 1) CALL stat_r_full(
590 1 elbuf_tab ,iparg ,geo ,igeo ,ixr ,
591 2 wa ,wap0 ,ipartr ,ipart_state ,stat_indxr,
592 3 sizp0 )
593C-----------------------------------------------
594C - 1D - beam elems (FULL + AUX)
595C-----------------------------------------------
596! - FULL -
597 IF(stat_p(1) == 1) CALL stat_p_full(
598 1 elbuf_tab ,iparg ,geo ,igeo ,ixp ,
599 2 wa ,wap0 ,ipartp ,ipart_state ,stat_indxp,
600 3 sizp0 )
601! - AUX -
602 IF(stat_p(3)==1) CALL stat_p_aux(
603 1 elbuf_tab ,iparg ,ipm ,igeo ,ixp ,
604 2 wa ,wap0 ,ipartp ,ipart_state,stat_indxp,
605 3 sizp0 )
606C-----------------------------------------------
607C - 1D - truss elems (FULL)
608C-----------------------------------------------
609! - FULL -
610 IF(stat_t(1) == 1) CALL stat_t_full(
611 1 elbuf_tab ,iparg ,geo ,igeo ,ixt ,
612 2 wa ,wap0 ,ipartt ,ipart_state ,stat_indxt,
613 3 sizp0 )
614C-----------------------------------------------
615C - SPHCEL elems (FULL)
616C-----------------------------------------------
617! - FULL -
618 IF(output%STATE%STAT_SPH(3) == 1) CALL stat_sphcel_full(
619 1 numsph ,nisp ,ngroup ,nparg ,sizloc ,
620 2 npart ,sizp0 ,nspmd ,output%STATE%STAT_NUMELSPH ,output%STATE%STAT_NUMELSPH_G ,
621 2 nspbuf ,numnod ,npropmi ,nummat ,lipart1 ,
622 4 kxsp ,ipartsph ,ipart_state ,stat_indxsph ,iparg ,
623 5 elbuf_tab ,wa ,wap0 ,spbuf ,itab ,
624 6 ipm ,output%STATE%STAT_SPH(2),ipart )
625C-----------------------------------------------
626 IF(sizloc >= 1) DEALLOCATE(wa)
627 IF(sizp0 >= 1) DEALLOCATE(wap0)
628C-----------------------------------------------
629C END
630C-----------------------------------------------
631 IF(is_file_to_be_written) THEN
632 WRITE(iugeo,'(A)')'#ENDDATA '
633 CLOSE(unit=iugeo)
634 IF(izipstrs /= 0)THEN
635 CALL strs_txt50('#ENDDATA ',11)
636 CALL close_c()
637 ENDIF
638 WRITE (iout,1000) filnam(1:filen)
639 WRITE (istdo,1000) filnam(1:filen)
640 ENDIF
641C-----------------------------------------------
642 DEALLOCATE(itabg)
643 DEALLOCATE(nodtag)
644 DEALLOCATE(stat_indxc)
645 DEALLOCATE(stat_indxtg)
646 DEALLOCATE(stat_indxq)
647 DEALLOCATE(stat_indxs)
648 DEALLOCATE(stat_indxr)
649 DEALLOCATE(stat_indxp)
650 DEALLOCATE(stat_indxt)
651 DEALLOCATE(stat_indxsph)
652
653 1000 FORMAT (4x,' STATE FILE:',1x,a,' WRITTEN')
654C
655 RETURN
656 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:108
#define max(a, b)
Definition macros.h:21
character(len=outfile_char_len) outfile_name
integer outfile_name_len
logical is_stat_inimap_single
subroutine spmd_outpitab(v, weight, nodglob, vglob)
Definition spmd_outp.F:1077
subroutine strs_txt50(text, length)
Definition sta_txt.F:87
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
subroutine arret(nn)
Definition arret.F:87
subroutine stat_beam_mp(itab, ipart, ixp, ipartp, ipart_state, nodtag, stat_indxp, iparg, elbuf_tab, idel)
subroutine stat_beam_spmd(itab, ipart, ixp, ipartp, ipart_state, nodtag, stat_indxp, lengp, iparg, elbuf_tab, idel)
subroutine stat_brick_mp(itab, ipart, igeo, ixs, iparts, ipart_state, nodtag, stat_indxs, iparg, ixs10, ixs16, ixs20, elbuf_tab, idel)
subroutine stat_brick_spmd(itab, ipart, igeo, ixs, iparts, ipart_state, nodtag, stat_indxs, iparg, lengs, ixs10, ixs16, ixs20, elbuf_tab, idel)
subroutine stat_c_auxf(elbuf_tab, iparg, ipm, igeo, ixc, ixtg, wa, wap0, ipartc, iparttg, ipart_state, stat_indxc, stat_indxtg, sizp0)
Definition stat_c_auxf.F:39
subroutine stat_c_epspf(elbuf_tab, iparg, ipm, igeo, ixc, ixtg, wa, wap0, ipartc, iparttg, ipart_state, stat_indxc, stat_indxtg, thke, sizp0)
subroutine stat_c_fail(elbuf_tab, iparg, ipm, igeo, ixc, ixtg, wa, wap0, ipartc, iparttg, ipart_state, stat_indxc, stat_indxtg, sizp0, nummat, mat_param)
Definition stat_c_fail.F:40
subroutine stat_c_off(elbuf_tab, iparg, ipm, igeo, ixc, ixtg, wa, wap0, ipartc, iparttg, ipart_state, stat_indxc, stat_indxtg, sizp0)
Definition stat_c_off.F:36
subroutine stat_c_orth_loc(elbuf_tab, iparg, ipm, igeo, ixc, ixtg, wa, wap0, ipartc, iparttg, ipart_state, stat_indxc, stat_indxtg, x, idel, sizp0)
subroutine stat_c_straf(elbuf_tab, iparg, ipm, igeo, ixc, ixtg, wa, wap0, ipartc, iparttg, ipart_state, stat_indxc, stat_indxtg, thke, sizp0)
subroutine stat_c_strafg(elbuf_tab, x, iparg, ipm, igeo, ixc, ixtg, wa, wap0, ipartc, iparttg, ipart_state, stat_indxc, stat_indxtg, thke, sizp0, geo, stack, drape_sh4n, drape_sh3n, drapeg)
subroutine stat_c_strsf(elbuf_tab, iparg, ipm, igeo, ixc, ixtg, wa, wap0, ipartc, iparttg, ipart_state, stat_indxc, stat_indxtg, thke, sizp0)
subroutine stat_c_strsfg(elbuf_tab, x, iparg, ipm, igeo, ixc, ixtg, wa, wap0, ipartc, iparttg, ipart_state, stat_indxc, stat_indxtg, thke, sizp0, geo, stack, drape_sh4n, drape_sh3n, drapeg)
subroutine stat_c_thk(elbuf_tab, iparg, ipm, igeo, ixc, ixtg, wa, wap0, ipartc, iparttg, ipart_state, stat_indxc, stat_indxtg, thke, sizp0)
Definition stat_c_thk.F:37
subroutine stat_inimap1d_file_spmd(x, v, itab, ipart_state, nodtag, ipart, iparts, ipartq, iparttg, mat_param, igeo, iparg, ixs, ixq, ixtg, elbuf_tab, multi_fvm, bufmat, ipm)
subroutine stat_inimap1d_spmd(x, v, itab, ipart_state, nodtag, ipart, iparts, ipartq, iparttg, mat_param, igeo, iparg, ixs, ixq, ixtg, elbuf_tab, multi_fvm, bufmat, ipm)
subroutine stat_inimap2d_file_spmd(x, v, itab, ipart_state, nodtag, ipart, iparts, ipartq, iparttg, mat_param, igeo, iparg, ixs, ixq, ixtg, elbuf_tab, multi_fvm, bufmat, ipm)
subroutine stat_inimap2d_spmd(x, v, itab, ipart_state, nodtag, ipart, iparts, ipartq, iparttg, mat_param, igeo, iparg, ixs, ixq, ixtg, elbuf_tab, multi_fvm, bufmat, ipm)
subroutine stat_n_bcs(icode, numnod, itab, itabg, leng, nodglob, iskew, nodtag)
Definition stat_n_bcs.F:35
subroutine stat_n_temp(x, numnod, itab, itabg, leng, nodglob, weight, nodtag, temp, itherm_fe)
Definition stat_n_temp.F:35
subroutine stat_node(x, numnod, itab, itabg, leng, nodglob, weight, nodtag)
Definition stat_node.F:34
subroutine stat_p_aux(elbuf_tab, iparg, ipm, igeo, ixp, wa, wap0, ipartp, ipart_state, stat_indxp, sizp0)
Definition stat_p_aux.F:40
subroutine stat_p_full(elbuf_tab, iparg, geo, igeo, ixp, wa, wap0, ipartp, ipart_state, stat_indxp, sizp0)
Definition stat_p_full.F:38
subroutine stat_quad_mp(itab, ipart, igeo, ixq, ipartq, ipart_state, nodtag, stat_indxq, iparg, elbuf_tab)
subroutine stat_quad_spmd(itab, ipart, igeo, ixq, ipartq, ipart_state, nodtag, stat_indxq, iparg, lengq, elbuf_tab)
subroutine stat_r_full(elbuf_tab, iparg, geo, igeo, ixr, wa, wap0, ipartr, ipart_state, stat_indxr, sizp0)
Definition stat_r_full.F:37
subroutine stat_s_auxf(elbuf_tab, iparg, ipm, igeo, ixs, wa, wap0, iparts, ipart_state, stat_indxs, ipart, sizp0)
Definition stat_s_auxf.F:41
subroutine stat_s_eref(elbuf_tab, iparg, ipm, igeo, ixs, ixs10, ixs16, ixs20, x, dr, wa, wap0, iparts, ipart_state, stat_indxs, ipart, sizp0)
Definition stat_s_eref.F:43
subroutine stat_s_fail(elbuf_tab, iparg, ipm, igeo, ixs, wa, wap0, iparts, ipart_state, stat_indxs, ipart, sizp0, nummat, mat_param)
Definition stat_s_fail.F:42
subroutine stat_s_ortho(elbuf_tab, iparg, ipm, igeo, ixs, wa, wap0, iparts, ipart_state, stat_indxs, x, iglob, ipart, idel, sizp0)
subroutine stat_s_straf(elbuf_tab, iparg, ipm, igeo, ixs, wa, wap0, iparts, ipart_state, stat_indxs, x, iglob, ipart, sizp0)
subroutine stat_s_strsf(elbuf_tab, iparg, ipm, igeo, ixs, wa, wap0, iparts, ipart_state, stat_indxs, x, iglob, ipart, sizp0)
subroutine stat_shel_mp(itab, itabg, leng, ipart, igeo, ixc, ixtg, ipartc, iparttg, ipart_state, nodtag, stat_indxc, stat_indxtg, sh4tree, sh3tree, iparg, sh4trim, sh3trim, elbuf_tab, thke, idel)
subroutine stat_shel_spmd(itab, itabg, leng, ipart, igeo, ixc, ixtg, ipartc, iparttg, ipart_state, nodtag, stat_indxc, stat_indxtg, lengc, lengtg, iparg, elbuf_tab, thke, idel)
subroutine stat_size_c(iparg, ixc, ixtg, igeo, ipm, p0ars, wasz, ixs, geo, elbuf_tab, ixr, ixp, ixt, output, lipart1, npart, ipart, numsph, ipartsp)
Definition stat_size.F:37
subroutine stat_spring_mp(itab, ipart, ixr, ipartr, ipart_state, nodtag, stat_indxr, iparg, elbuf_tab, idel)
subroutine stat_spring_spmd(itab, ipart, ixr, ipartr, ipart_state, nodtag, stat_indxr, lengr, iparg, elbuf_tab, idel)
subroutine stat_t_full(elbuf_tab, iparg, geo, igeo, ixt, wa, wap0, ipartt, ipart_state, stat_indxt, sizp0)
Definition stat_t_full.F:38
subroutine stat_truss_mp(itab, ipart, ixt, ipartt, ipart_state, nodtag, stat_indxt, iparg, elbuf_tab, idel)
subroutine stat_truss_spmd(itab, ipart, ixt, ipartt, ipart_state, nodtag, stat_indxt, lengt, iparg, elbuf_tab, idel)
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)