SPEED
MAKE_SPX_CON_LOC.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine make_spx_con_loc (nel_loc, nel, el_dom, nnz, cs, nnz_loc, cs_loc, nm, tag_mat, sdeg_mat, mpi_id)
 Makes local connectivity vector.
 

Function/Subroutine Documentation

◆ make_spx_con_loc()

subroutine make_spx_con_loc ( integer*4  nel_loc,
integer*4  nel,
integer*4, dimension(nel)  el_dom,
integer*4  nnz,
integer*4, dimension(0:nnz)  cs,
integer*4  nnz_loc,
integer*4, dimension(0:nnz_loc)  cs_loc,
integer*4  nm,
integer*4, dimension(nm)  tag_mat,
integer*4, dimension(nm)  sdeg_mat,
integer*4  mpi_id 
)

Makes local connectivity vector.

Author
Ilario Mazzieri
Date
September, 2013
Version
1.0
Parameters
[in]nel_locnumber of local elements
[in]nelnumber of total elements
[in]el_dommetis output (el_dom(i) = k --> element i belongs to mpi process k)
[in]tag_matmaterial label
[in]sdeg_matpolynomial degree vector
[in]mpi_idmpi process id
[out]cs_loclocal spectral connectivity vector

Definition at line 31 of file MAKE_SPX_CON_LOC.f90.

34
35
36 implicit none
37
38 integer*4 :: j,k,ie,nm, nn
39 integer*4 :: nel_loc, nel, nnz, mpi_id
40 integer*4 :: nnz_loc
41
42 integer*4, dimension(0:nnz) :: cs
43 integer*4, dimension(nel) :: el_dom
44 integer*4, dimension(nm) :: tag_mat, sdeg_mat
45 integer*4, dimension(0:nnz_loc) :: cs_loc
46
47
48 cs_loc = 0
49 cs_loc(0) = nel_loc+1
50 k = 0
51 do ie = 1, nel
52 do j = 1, nm
53 if (( tag_mat(j).eq. cs(cs(ie-1)) ) .and. (el_dom(ie) .eq. mpi_id)) then
54 nn = sdeg_mat(j) +1
55 k = k + 1
56 cs_loc(k) = cs_loc(k-1) + nn*nn*nn +1
57 cs_loc(cs_loc(k-1)) = tag_mat(j)
58 cs_loc(cs_loc(k-1) + 1 : cs_loc(k)-1) = cs(cs(ie-1)+1 : cs(ie)-1)
59 endif
60 enddo
61 enddo
62
63