You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.9 KiB
74 lines
1.9 KiB
C Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
C NTESS, the U.S. Government retains certain rights in this software.
|
|
C
|
|
C See packages/seacas/LICENSE for details
|
|
C=======================================================================
|
|
SUBROUTINE SELBLK (NUMSEL, IXSEL, NELBLK, LISBLK, NUMELB, NUMLNK,
|
|
* LINK, ISCR, NUMNP, EBTYPE)
|
|
C=======================================================================
|
|
|
|
include 'exodusII.inc'
|
|
|
|
INTEGER IXSEL(*)
|
|
INTEGER LISBLK(0:*)
|
|
INTEGER NUMELB(*)
|
|
INTEGER NUMLNK(*)
|
|
INTEGER LINK(*)
|
|
INTEGER ISCR(*)
|
|
LOGICAL SELECT
|
|
CHARACTER*(MXSTLN) EBTYPE(*)
|
|
CHARACTER*40 STRA
|
|
CHARACTER*132 MSG
|
|
|
|
do 80 i=1, numnp
|
|
iscr(i) = 0
|
|
80 continue
|
|
|
|
islnk = 1
|
|
do 100 ielb = 1, nelblk
|
|
select = .false.
|
|
do 90 ix = 1, lisblk(0)
|
|
if (ielb .eq. lisblk(ix)) then
|
|
select = .true.
|
|
end if
|
|
90 continue
|
|
if (ebtype(ielb) .eq. 'nsided' .or.
|
|
* ebtype(ielb) .eq. 'NSIDED') THEN
|
|
numnod = numlnk(ielb)
|
|
else
|
|
numnod = numlnk(ielb) * numelb(ielb)
|
|
end if
|
|
if (select) then
|
|
call selblk1(ielb, numnod, link(islnk), iscr)
|
|
end if
|
|
ISLNK = ISLNK + numnod
|
|
100 CONTINUE
|
|
|
|
numsel = 0
|
|
do 120 i=1, numnp
|
|
if (iscr(i) .gt. 0) then
|
|
numsel = numsel + 1
|
|
ixsel(numsel) = i
|
|
end if
|
|
120 continue
|
|
|
|
write (stra, 10000) numsel
|
|
call pckstr(1, stra)
|
|
MSG = STRA(:lenstr(stra)) // ' nodes selected'
|
|
call prterr('CMDSPEC', MSG)
|
|
10000 format(I12)
|
|
return
|
|
end
|
|
|
|
subroutine selblk1(ielb, numnod, link, iscr)
|
|
|
|
integer link(*)
|
|
integer iscr(*)
|
|
|
|
do i=1, numnod
|
|
node = link(i)
|
|
iscr(node) = iscr(node) + 1
|
|
end do
|
|
return
|
|
end
|
|
|