32 . CEL ,CEP ,PROC ,IXS ,
33 . IXC ,IXTG ,NUMELS_L ,NUMELC_L ,
40 use element_mod ,
only : nixs,nixc,nixtg
44#include "implicit_f.inc"
51 INTEGER ,
INTENT(IN) :: NUMNOD_L, CEL(*), CEP(*),
52 . IXS(NIXS,*),PROC,IXC(NIXC,*),
53 . IXTG(NIXTG,*),NUMELS_L,NUMELC_L,
55 INTEGER ,
DIMENSION(NUMNOD_L) ,
INTENT(IN) :: NODGLOB
56 INTEGER ,
DIMENSION(NUMNOD) ,
INTENT(IN) :: NODLOC
57 TYPE (NLOCAL_STR_) :: NLOC_DMG
61 INTEGER I,ILOC,NNOD,NNOD_L,NG,NL,NN, LNLOC_L,ND,NP,N1,
62 . N2,CC,CC_L,NUMG,NUML,PROC_L,K,SHFT,TESTVAL,
63 . L_NLOC,NDDMAX_L,LCNENL_L,MATSIZE
64 INTEGER,
DIMENSION(:),
ALLOCATABLE :: , NDDL, IDXI_L
65 INTEGER,
DIMENSION(:),
ALLOCATABLE :: POSI
66 my_real,
DIMENSION(NLOC_DMG%L_NLOC) :: MASS,UNL,MASS0
67 my_real,
DIMENSION(:),
ALLOCATABLE :: zero_vec
68 INTEGER,
DIMENSION(8) :: HEAD
69 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ADDCNE_L,SOLTAG,SHTAG,TGTAG,
71 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IADS,IADC,IADTG
73 CALL my_alloc(indx_l,numnod_l)
74 CALL my_alloc(nddl,numnod_l)
75 CALL my_alloc(idxi_l,numnod_l)
76 CALL my_alloc(posi,numnod_l+1)
90 ! non-local global variables
92 l_nloc = nloc_dmg%L_NLOC
97 indx_l(1:numnod_l) = 0
98 idxi_l(1:numnod_l) = 0
100 posi(1:numnod_l+1) = 0
101 mass(1:nloc_dmg%L_NLOC) = zero
102 mass0(1:nloc_dmg%L_NLOC) = zero
103 unl(1:nloc_dmg%L_NLOC) = zero
108 nn = nloc_dmg%IDXI(ng)
110 np = nloc_dmg%POSI(nn)
111 nd = nloc_dmg%POSI(nn+1) - np
116 posi(nnod_l) = lnloc_l + 1 ! local table posi
117 mass(lnloc_l+1:lnloc_l+nd) = nloc_dmg%MASS(np:np+nd-1)
118 mass0(lnloc_l+1:lnloc_l+nd) = nloc_dmg%MASS0(np:np+nd-1)
119 unl(lnloc_l+1:lnloc_l+nd) = nloc_dmg%UNL(np:np+nd-1)
120 lnloc_l = lnloc_l + nd
123 posi(nnod_l + 1) = lnloc_l + 1
125 nddmax_l = maxval(nddl(1:nnod_l))
128 IF (ipari0 == 1)
THEN
135 nn = nloc_dmg%IDXI(ng)
136 n1 = nloc_dmg%ADDCNE(nn)
137 n2 = nloc_dmg%ADDCNE(nn+1)
138 lcnenl_l = lcnenl_l + n2-n1
142 ALLOCATE(addcne_l(nnod_l + 1))
143 addcne_l(1:nnod_l + 1) = 0
144 ALLOCATE(procne_l(lcnenl_l))
145 procne_l(1:lcnenl_l) = 0
146 ALLOCATE(iads(8,numels_l))
147 iads(1:8,1:numels_l) = 0
148 ALLOCATE(iadc(4,numelc_l))
149 iadc(1:4,1:numelc_l) = 0
150 ALLOCATE(iadtg(3,numeltg_l))
151 iadtg(1:3,1:numeltg_l) = 0
152 ALLOCATE(soltag(numels))
154 ALLOCATE(shtag(numelc))
156 ALLOCATE(tgtag(numeltg))
167 nn = nloc_dmg%IDXI(ng)
168 n1 = nloc_dmg%ADDCNE(nn)
169 n2 = nloc_dmg%ADDCNE(nn+1) ! number of
the following position in
the fsky vector
170 addcne_l(i+1) = addcne_l(i) + n2-n1
172 numg = nloc_dmg%CNE(cc)
176 procne_l(cc_l) = proc_l
177 IF (proc==proc_l)
THEN
178 IF (numg<=numels)
THEN
181 testval = iand(soltag(numg),shft)
182 IF (ixs(k+1,numg)==ng.AND.testval==0)
THEN
184 soltag(numg) = soltag(numg)+shft
188 ELSEIF (numg<=numels+numelq)
THEN
190 WRITE(*,*)
"Error in non-local decomp"
191 WRITE(*,*)
"Quad element error"
193 ELSEIF (numg<=numels+numelq+numelc)
THEN
194 numg = numg - (numels+numelq)
197 testval = iand(shtag(numg),shft)
199 IF (ixc(k+1,numg)==ng.AND.testval==0)
THEN
201 shtag(numg) = shtag(numg)+shft
205 ELSEIF (numg<=numels+numelq+numelc+numelt)
THEN
207 WRITE(*,*)
"Error in non-local decomp"
208 WRITE(*,*)
"Truss element error"
210 ELSEIF (numg<=numels+numelq+numelc+numelt+numelp)
THEN
212 WRITE(*,*)
"Error in non-local decomp"
213 WRITE(*,*)
"Poutre element error"
215 ELSEIF (numg<=numels+numelq+numelc+numelt+numelp+numelr)
THEN
217 WRITE(*,*)
"Error in non-local decomp"
218 WRITE(*,*)
"Ressort element error"
220 ELSEIF (numg<=numels+numelq+numelc+numelt+numelp+
221 . numelr+numeltg)
THEN
222 numg = numg - (numels+numelq+numelc+numelt+numelp+numelr)
225 testval = iand(tgtag(numg),shft)
226 IF (ixtg(k+1,numg)==ng.AND.testval==0)
THEN
228 tgtag(numg) = tgtag(numg)+shft
234 WRITE(*,*)
"Error in non-local decomp"
252 IF (nsubdom > 0)
THEN
261 CALL write_db(nloc_dmg%DENS,matsize)
263 CALL write_db(nloc_dmg%DAMP,matsize)
267 CALL write_db(nloc_dmg%LE_MAX,matsize)
269 CALL write_db(nloc_dmg%SSPNL,matsize)
278 IF (ipari0 == 1)
THEN
296 IF (.NOT.
ALLOCATED(zero_vec))
ALLOCATE(zero_vec(4*lnloc_l))
297 zero_vec(1:4*lnloc_l) = zero
303 IF (
ALLOCATED(soltag))
DEALLOCATE(soltag)
304 IF (
ALLOCATED(shtag))
DEALLOCATE(shtag)
305 IF (
ALLOCATED(tgtag))
DEALLOCATE(tgtag)
306 IF (
ALLOCATED(addcne_l))
DEALLOCATE(addcne_l)
307 IF (
ALLOCATED(procne_l))
DEALLOCATE(procne_l)
308 IF (
ALLOCATED(iads))
DEALLOCATE(iads)
309 IF (
ALLOCATED(iadc))
DEALLOCATE(iadc)
310 IF (
ALLOCATED(iadtg))
DEALLOCATE(iadtg)
311 IF (
ALLOCATED(zero_vec))
DEALLOCATE(zero_vec)