OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
nodalzvol.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!|| nodalzvol ../engine/source/output/anim/generate/nodalzvol.F
25!||--- called by ------------------------------------------------------
26!|| genani ../engine/source/output/anim/generate/genani.F
27!||--- uses -----------------------------------------------------
28!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
29!|| i22bufbric_mod ../common_source/modules/interfaces/cut-cell-search_mod.F
30!|| i22edge_mod ../common_source/modules/interfaces/cut-cell-buffer_mod.F
31!|| i22tri_mod ../common_source/modules/interfaces/cut-cell-search_mod.F
32!|| initbuf_mod ../engine/share/resol/initbuf.F
33!||====================================================================
34 SUBROUTINE nodalzvol (IFUNC , WA4, IFLOW, RFLOW, IPARG,
35 . ELBUF_TAB, IX , NIX , ITAB , NV46 )
36C-----------------------------------------------
37C D e s c r i p t i o n
38C-----------------------------------------------
39C This suroutine display polyhedra volume (old & new)
40C using free node as marker (inter22 only, see input card for grnod_id)
41C-----------------------------------------------
42C P r e - C o n d i t i o n s
43C-----------------------------------------------
44C Tested below during NG LOOP : IALEL > 0
45C where IALEL =IPARG(7,NG)+IPARG(11,NG)
46C-----------------------------------------------
47C M o d u l e s
48C-----------------------------------------------
49 USE initbuf_mod
50 USE elbufdef_mod
52 USE i22edge_mod
53 USE i22tri_mod
54C-----------------------------------------------
55C I m p l i c i t T y p e s
56C-----------------------------------------------
57#include "implicit_f.inc"
58C-----------------------------------------------
59C C o m m o n B l o c k s
60C-----------------------------------------------
61#include "com01_c.inc"
62#include "vect01_c.inc"
63#include "param_c.inc"
64#include "inter22.inc"
65C-----------------------------------------------
66C D u m m y A r g u m e n t s
67C-----------------------------------------------
68 INTEGER,INTENT(IN) :: IFUNC, IFLOW(*),IPARG(NPARG,*),IX(NIX,*),ITAB(*),NIX,NV46
69 my_real,INTENT(IN) :: rflow(*)
70 REAL,INTENT(INOUT) :: WA4(*)
71
72 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
73C-----------------------------------------------
74C L o c a l V a r i a b l e s
75C-----------------------------------------------
76 INTEGER :: IADI, IADR, I, ITYP, NINOUT, NNO, NEL, II1, II2,K1,K,
77 . ir1, ir2, j, jj, nno_l, nni_l, ii3, ii4, jjj, nni,
78 . ialel,nnod,ipos,iv,ngv,j1,j2,ibv, mlw,numnodcell,
79 . ng, kcvt, ii, nbf, nbl, ib, icell, nin, mcell,ncell,
80 . iphase,node_id,inew
81 TYPE(g_bufel_) ,POINTER :: GBUF,GBUFv
82 my_real, ALLOCATABLE, DIMENSION(:) :: count_vol
83 my_real :: p,vf,d,v
84 INTEGER,DIMENSION(:,:), POINTER :: pAdjBRICK
85C-----------------------------------------------
86C D e s c r i p t i o n
87C-----------------------------------------------
88C This subroutine writes nodal VFRAC
89C /INTER/TYPE22 (only).
90C-----------------------------------------------
91C P r e c o n d i t i o n s
92C-----------------------------------------------
93 IF(int22==0)RETURN
94C-----------------------------------------------
95C S o u r c e L i n e s
96C-----------------------------------------------
97
98 nnod = nix-3 !8-node brick or 4-node quad
99 inew = 29-ifunc ! 1: new cell volume, 0:old
100
101 !---------------------------------------------------------!
102 ! /INTER/TYPE22 !
103 !---------------------------------------------------------!
104 ! CELL CENTROIDS ARE MARKED IN CUT CELL BUFFER !
105 ! PURPOSE IS TO DISPLAY CELL SCALR USING FREE NODE !
106 !---------------------------------------------------------!
107 !---1. TAG FOR INTERSECTED BRICKS---!
108 nbf = 1
109 nbl = nb
110 nin = 1
111 !---1. COMPUTE NODAL PRESSURE---!
112 DO ng = 1, ngroup
113 mlw = iparg(1,ng)
114 nel = iparg(2,ng)
115 nft = iparg(3,ng)
116 ityp = iparg(5,ng)
117 ialel = iparg(7,ng)+iparg(11,ng)
118 IF(ityp/=1 .AND. ityp/=2)cycle
119 IF(ialel==0)cycle
120 IF(mlw/=6 .AND. mlw/=11 .AND. mlw/=37.AND.mlw/=51)cycle
121 gbuf => elbuf_tab(ng)%GBUF
122 nin = 1
123 DO i=1,nel
124 ib = nint(gbuf%TAG22(i))
125 !---------------------------!
126 ! NOT A CUT CELL !
127 !---------------------------!
128 IF(ib==0)cycle
129 !---------------------------!
130 ! CUT CELL !
131 !---------------------------!
132 icell = 0
133 ncell = brick_list(nin,ib)%NBCUT
134 DO WHILE (icell<=ncell) ! loop on polyhedron {1:NCELL} U {9}
135 icell = icell +1
136 IF (icell>ncell .AND. ncell/=0)icell=9
137 node_id = brick_list(nin,ib)%POLY(icell)%ID_FREE_NODE
138 IF(node_id<=0)EXIT ! no enough nodes in the group or debug option not compatible with smp
139 IF(inew == 1)THEN
140 wa4(node_id) = brick_list(nin,ib)%POLY(icell)%VNEW
141 ELSE
142 wa4(node_id) = brick_list(nin,ib)%POLY(icell)%VOLD
143 ENDIF
144 ENDDO
145 enddo!next I
146 enddo!next NG
147
148
149C-----------------------------------------------
150 RETURN
151 END
#define my_real
Definition cppsort.cpp:32
type(brick_entity), dimension(:,:), allocatable, target brick_list
subroutine nodalzvol(ifunc, wa4, iflow, rflow, iparg, elbuf_tab, ix, nix, itab, nv46)
Definition nodalzvol.F:36