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

Go to the source code of this file.

Functions/Subroutines

subroutine c_idglob (numel, numels_l, numelq_l, numeltg_l, numels_g, numelq_g, numeltg_g, proc, cel, cep, iparg, ale_connectivity, ixs, ixq, ixtg, idglob_l, uidglob_l, n2d, ngroup, nparg)
subroutine c_fasolfr (fasolfr, cep, p, cel, nfasolfr_l)

Function/Subroutine Documentation

◆ c_fasolfr()

subroutine c_fasolfr ( integer, dimension(2,*) fasolfr,
integer, dimension(*) cep,
integer p,
integer, dimension(*) cel,
integer nfasolfr_l )

Definition at line 168 of file c_idglob.F.

169C-----------------------------------------------
170C I m p l i c i t T y p e s
171C-----------------------------------------------
172#include "implicit_f.inc"
173C-----------------------------------------------
174C C o m m o n B l o c k s
175C-----------------------------------------------
176#include "com01_c.inc"
177C-----------------------------------------------
178C D u m m y A r g u m e n t s
179C-----------------------------------------------
180 INTEGER FASOLFR(2,*), CEP(*),CEL(*),P, NFASOLFR_L
181C-----------------------------------------------
182C L o c a l V a r i a b l e s
183C-----------------------------------------------
184 INTEGER N, NN
185C
186 DO n=1,nfasolfr
187 nn=fasolfr(1,n)
188 IF(cep(nn)==p)nfasolfr_l=nfasolfr_l+1
189 ENDDO
190C
191 RETURN

◆ c_idglob()

subroutine c_idglob ( integer, intent(in) numel,
integer, intent(in) numels_l,
integer, intent(in) numelq_l,
integer, intent(in) numeltg_l,
integer, intent(in) numels_g,
integer, intent(in) numelq_g,
integer, intent(in) numeltg_g,
integer, intent(in) proc,
integer, dimension(*), intent(in) cel,
integer, dimension(*), intent(in) cep,
integer, dimension(nparg, ngroup), intent(in) iparg,
type(t_ale_connectivity), intent(inout) ale_connectivity,
integer, dimension(nixs, numels_g), intent(in) ixs,
integer, dimension(nixq, numelq_g), intent(in) ixq,
integer, dimension(nixtg, numeltg_g), intent(in) ixtg,
integer, dimension(*), intent(inout) idglob_l,
integer, dimension(*), intent(inout) uidglob_l,
integer, intent(in) n2d,
integer, intent(in) ngroup,
integer, intent(in) nparg )
Parameters
[in]n2d2d / 3d flag
[in]npargsizes of array IPARG
[in]numeltg_llocal number of elems (current domain)
[in]numeltg_gglobal number of elems (all domains)

Definition at line 31 of file c_idglob.F.

33C-----------------------------------------------
34C M o d u l e s
35C-----------------------------------------------
36 USE reorder_mod
38C-----------------------------------------------
39C I m p l i c i t T y p e s
40C-----------------------------------------------
41#include "implicit_f.inc"
42C-----------------------------------------------
43C D u m m y A r g u m e n t s
44C-----------------------------------------------
45 INTEGER, INTENT(IN) :: N2D !< 2d / 3d flag
46 INTEGER, INTENT(IN) :: NGROUP, NPARG !< sizes of array IPARG
47 INTEGER, INTENT(IN) :: PROC, NUMEL
48 INTEGER, INTENT(IN) :: NUMELS_L, NUMELQ_L, NUMELTG_L !< local number of elems (current domain)
49 INTEGER, INTENT(IN) :: NUMELS_G, NUMELQ_G, NUMELTG_G !< global number of elems (all domains)
50 INTEGER, INTENT(IN) :: CEL(*), CEP(*)
51 INTEGER, INTENT(IN) :: IXS(NIXS, NUMELS_G), IXQ(NIXQ, NUMELQ_G), IXTG(NIXTG, NUMELTG_G)
52 INTEGER, INTENT(IN) :: IPARG(NPARG, NGROUP)
53 INTEGER, INTENT(INOUT) :: IDGLOB_L(*), UIDGLOB_L(*)
54 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
55C-----------------------------------------------
56C L o c a l V a r i a b l e s
57C-----------------------------------------------
58 INTEGER :: PROCI, II, JJ, I, J, I_LOC, NEL, ITY, NFT, ICOUNT,NG, PROCJ, IAD1, LGTH
59 INTEGER :: NELEM_L
60 INTEGER, DIMENSION(:), ALLOCATABLE :: TAG
61C-----------------------------------------------
62C S o u r c e L i n e s
63C-----------------------------------------------
64 ALLOCATE(tag(numel))
65 tag(1:numel) = 0
66
67 icount = 0
68 nelem_l = 0
69 DO ng = 1, ngroup
70 nel = iparg(2, ng)
71 nft = iparg(3, ng)
72 ity = iparg(5, ng)
73 IF (ity == 1) THEN
74 ! bricks
75 nelem_l = numels_l
76 DO ii = 1, nel
77 i = ii + nft
78 iad1 = ale_connectivity%ee_connect%iad_connect(i)
79 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
80 proci = cep(i)
81 IF (proci == proc) THEN
82 i_loc = cel(i)
83 idglob_l(i_loc) = permutation%SOLID(i)
84 uidglob_l(i_loc) = ixs(nixs, i)
85 DO jj = 1, lgth
86 j = ale_connectivity%ee_connect%connected(iad1 + jj - 1)
87 IF (j > 0) THEN
88 procj = cep(j)
89 IF (procj /= proc .AND. tag(j) == 0) THEN
90 icount = icount + 1
91 idglob_l(nelem_l + icount) = permutation%SOLID(j)
92 uidglob_l(nelem_l + icount) = ixs(nixs, j)
93 tag(j) = 1
94 ENDIF
95 ENDIF
96 ENDDO
97 ENDIF
98 ENDDO
99
100 ELSEIF( ity == 2)THEN
101 ! quads
102 nelem_l = numelq_l
103 DO ii = 1, nel
104 i = ii + nft
105 iad1 = ale_connectivity%ee_connect%iad_connect(i)
106 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
107 proci = cep(i)
108 IF (proci == proc) THEN
109 i_loc = cel(i)
110 idglob_l(i_loc) = permutation%SOLID(i)
111 uidglob_l(i_loc) = ixq(nixq, i)
112 DO jj = 1, lgth
113 j = ale_connectivity%ee_connect%connected(iad1 + jj - 1)
114 IF (j > 0) THEN
115 procj = cep(j)
116 IF (procj /= proc .AND. tag(j) == 0) THEN
117 icount = icount + 1
118 idglob_l(nelem_l + icount) = permutation%SOLID(j)
119 uidglob_l(nelem_l + icount) = ixq(nixq, j)
120 tag(j) = 1
121 ENDIF
122 ENDIF
123 ENDDO
124 ENDIF
125 ENDDO
126
127 ELSEIF(ity == 7 .AND. n2d >= 0)THEN
128 ! trias
129 nelem_l = numeltg_l
130 DO ii = 1, nel
131 i = ii + nft
132 iad1 = ale_connectivity%ee_connect%iad_connect(i)
133 lgth = ale_connectivity%ee_connect%iad_connect(i+1)-ale_connectivity%ee_connect%iad_connect(i)
134 proci = cep(i)
135 IF (proci == proc) THEN
136 i_loc = cel(i)
137 idglob_l(i_loc) = permutation%SOLID(i)
138 uidglob_l(i_loc) = ixtg(nixtg, i)
139 DO jj = 1, lgth
140 j = ale_connectivity%ee_connect%connected(iad1 + jj - 1)
141 IF (j > 0) THEN
142 procj = cep(j)
143 IF (procj /= proc .AND. tag(j) == 0) THEN
144 icount = icount + 1
145 idglob_l(nelem_l + icount) = permutation%SOLID(j)
146 uidglob_l(nelem_l + icount) = ixtg(nixtg , j)
147 tag(j) = 1
148 ENDIF
149 ENDIF
150 ENDDO
151 ENDIF
152 ENDDO
153 ELSE
154 ! not a group of solid elems
155 cycle
156 ENDIF
157
158 ENDDO
159
160 DEALLOCATE(tag)
type(reorder_struct_) permutation
Definition reorder_mod.F:54