OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
donesec.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!|| donesec ../engine/source/output/anim/generate/donesec.F
25!||--- called by ------------------------------------------------------
26!|| genani ../engine/source/output/anim/generate/genani.F
27!||--- calls -----------------------------------------------------
28!|| spmd_glob_isum9 ../engine/source/mpi/interfaces/spmd_th.F
29!||====================================================================
30 SUBROUTINE donesec(ISECT,NESCT,NSTRF,IXS)
31C-----------------------------------------------
32C I m p l i c i t T y p e s
33C-----------------------------------------------
34#include "implicit_f.inc"
35C-----------------------------------------------
36C C o m m o n B l o c k s
37C-----------------------------------------------
38#include "task_c.inc"
39#include "com01_c.inc"
40C-----------------------------------------------
41C D u m m y A r g u m e n t s
42C-----------------------------------------------
43 INTEGER ISECT,NESCT,
44 . NSTRF(*),IXS(NIXS,*)
45C-----------------------------------------------
46C L o c a l V a r i a b l e s
47C-----------------------------------------------
48 INTEGER J, I, KK, K0, K1, K5, K9, NSEG, NSEGC, NSEGTG
49 INTEGER NSEGS, POWER2(8),IPACK,
50 . II(8), N1, N2, N3, N4, N5, N6, N7, N8, K3, N
51 DATA power2/1,2,4,8,16,32,64,128/
52 SAVE k1
53 SAVE k0
54C-----------------------------------------------
55 IF (isect==1) k0 = nstrf(25)
56 k5=k0+30+nstrf(k0+14)+nstrf(k0+6)
57 1 +2*nstrf(k0+7) +nstrf(k0+8)*2
58 nsegc = nstrf(k0+9)
59 DO j=1,nsegc
60 kk = k5+2*(j-1)+1
61 IF(nstrf(kk)/=0) nesct = nesct + 1
62 ENDDO
63 k9=k5+2*nstrf(k0+9) +2*nstrf(k0+10)
64 1 +2*nstrf(k0+11)+2*nstrf(k0+12)
65 nsegtg = nstrf(k0+13)
66 DO j=1,nsegtg
67 kk = k9+2*(j-1)+1
68 IF(nstrf(kk)/=0) nesct = nesct + 1
69 ENDDO
70 k3=k0+30+nstrf(k0+14)+nstrf(k0+6)
71 nsegs=nstrf(k0+7)
72
73 IF(nsegs/=0) nesct = nesct + 1
74
75 DO j=1,nsegs
76 kk=k3+2*(j-1)
77 ipack=nstrf(kk+1)
78 IF(ipack/=0)THEN
79 n =nstrf(kk)
80 ii(1)=ixs(2,n)
81 ii(2)=ixs(3,n)
82 ii(3)=ixs(4,n)
83 ii(4)=ixs(5,n)
84 ii(5)=ixs(6,n)
85 ii(6)=ixs(7,n)
86 ii(7)=ixs(8,n)
87 ii(8)=ixs(9,n)
88 IF( ii(2)==ii(1).AND.ii(4)==ii(3)
89 . .AND.ii(8)==ii(5).AND.ii(7)==ii(6))THEN
90C tetra4, tetra10
91 n1=mod(ipack/power2(1),2)
92 n2=mod(ipack/power2(3),2)
93 n3=mod(ipack/power2(5),2)
94 n4=mod(ipack/power2(6),2)
95 IF(n1/=0.AND.n2/=0.AND.n3/=0)
96 . nesct = nesct + 1
97 IF(n1/=0.AND.n2/=0.AND.n4/=0)
98 . nesct = nesct + 1
99 IF(n2/=0.AND.n3/=0.AND.n4/=0)
100 . nesct = nesct + 1
101 IF(n3/=0.AND.n1/=0.AND.n4/=0)
102 . nesct = nesct + 1
103 ELSE
104C brick, shell16, brick20
105 n1=mod(ipack/power2(1),2)
106 n2=mod(ipack/power2(2),2)
107 n3=mod(ipack/power2(3),2)
108 n4=mod(ipack/power2(4),2)
109 n5=mod(ipack/power2(5),2)
110 n6=mod(ipack/power2(6),2)
111 n7=mod(ipack/power2(7),2)
112 n8=mod(ipack/power2(8),2)
113 IF(n1/=0.AND.n2/=0.AND.n3/=0.AND.n4/=0)
114 . nesct = nesct + 1
115 IF(n5/=0.AND.n6/=0.AND.n7/=0.AND.n8/=0)
116 . nesct = nesct + 1
117 IF(n1/=0.AND.n5/=0.AND.n6/=0.AND.n2/=0)
118 . nesct = nesct + 1
119 IF(n4/=0.AND.n8/=0.AND.n7/=0.AND.n3/=0)
120 . nesct = nesct + 1
121 IF(n1/=0.AND.n4/=0.AND.n8/=0.AND.n5/=0)
122 . nesct = nesct + 1
123 IF(n2/=0.AND.n3/=0.AND.n7/=0.AND.n6/=0)
124 . nesct = nesct + 1
125 END IF
126 END IF
127 END DO
128 k0=nstrf(k0+24)
129 IF (nspmd > 1) THEN
130 CALL spmd_glob_isum9(nesct,1)
131 IF (ispmd/=0) nesct = 0
132 ENDIF
133C
134 RETURN
135 END
subroutine donesec(isect, nesct, nstrf, ixs)
Definition donesec.F:31
subroutine spmd_glob_isum9(v, len)
Definition spmd_th.F:523