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.
45 lines
1.5 KiB
45 lines
1.5 KiB
2 years ago
|
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 SMOGS3 (xscr, yscr, zscr, isbnd, x, y, z, numel,
|
||
|
$ link, nlink, numnp, nscr)
|
||
|
C=======================================================================
|
||
|
|
||
|
C***********************************************************************
|
||
|
|
||
|
C SUBROUTINE SMOGS = MESH SMOOTHING BY LAPLACE-S USING GAUSS-SEIDEL
|
||
|
|
||
|
C***********************************************************************
|
||
|
|
||
|
real x(*), y(*), z(*), xscr(*), yscr(*), zscr(*)
|
||
|
integer numel, nlink, link(nlink, *)
|
||
|
logical isbnd(*)
|
||
|
integer nscr(*)
|
||
|
integer map(3,8)
|
||
|
|
||
|
data map /2,4,5, 3,1,6, 4,2,7, 1,3,8,
|
||
|
$ 1,8,6, 2,5,7, 3,6,8, 4,7,5/
|
||
|
|
||
|
if (nlink .ne. 8) return
|
||
|
do 20 iel = 1, numel
|
||
|
do 10 ino = 1, nlink
|
||
|
|
||
|
ni = link(ino, iel)
|
||
|
if (.not. isbnd(ni)) then
|
||
|
n1 = link( map(1, ino), iel)
|
||
|
n2 = link( map(2, ino), iel)
|
||
|
n3 = link( map(3, ino), iel)
|
||
|
xscr(ni) = xscr(ni) + x(n1) + x(n2) + x(n3)
|
||
|
yscr(ni) = yscr(ni) + y(n1) + y(n2) + y(n3)
|
||
|
zscr(ni) = zscr(ni) + z(n1) + z(n2) + z(n3)
|
||
|
nscr(ni) = nscr(ni) + 3
|
||
|
end if
|
||
|
10 continue
|
||
|
20 continue
|
||
|
return
|
||
|
end
|