OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
donesec.F File Reference
#include "implicit_f.inc"
#include "task_c.inc"
#include "com01_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine donesec (isect, nesct, nstrf, ixs)

Function/Subroutine Documentation

◆ donesec()

subroutine donesec ( integer isect,
integer nesct,
integer, dimension(*) nstrf,
integer, dimension(nixs,*) ixs )

Definition at line 32 of file donesec.F.

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