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.
52 lines
1.7 KiB
52 lines
1.7 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 BS(N,S,F,L,X)
|
||
|
|
||
|
C**********************************************************************
|
||
|
|
||
|
C Subroutine BS does the back substitution for the soultion of the
|
||
|
C local least squares extrapolation technique for element variables
|
||
|
C from their element centroid location to a nodal location.
|
||
|
C The least squares solution is started by a Gauss elimination in
|
||
|
C subroutine FRGE. The process is started in subroutines EXTQ for
|
||
|
C 4-node quads or EXTH for 8-node hexes.
|
||
|
|
||
|
C Called by EXTH, EXTQ
|
||
|
|
||
|
C**********************************************************************
|
||
|
|
||
|
C N INT number of equations - 1 + the number of dimensions
|
||
|
C S REAL the coefficient matrix - after forward gauss elimination
|
||
|
C F REAL the load vector
|
||
|
C L INT dummy array - placeholder for subscripts
|
||
|
C X REAL the solution vector - coefficients of the equation
|
||
|
C SUM REAL dummy variable - used in the solution scheme
|
||
|
|
||
|
C**********************************************************************
|
||
|
|
||
|
C subroutine written in double precision
|
||
|
|
||
|
DOUBLE PRECISION S(N,N),F(N),X(N),SUM
|
||
|
INTEGER L(N)
|
||
|
|
||
|
DO 3 K = 1,N-1
|
||
|
DO 2 I = K+1,N
|
||
|
F(L(I)) = F(L(I)) - S(L(I),K) * F(L(K))
|
||
|
2 CONTINUE
|
||
|
3 CONTINUE
|
||
|
X(N) = F(L(N)) / S(L(N),N)
|
||
|
DO 5 I = N-1,1,-1
|
||
|
SUM = F(L(I))
|
||
|
DO 4 J = I+1,N
|
||
|
SUM = SUM - S(L(I),J) * X(J)
|
||
|
4 CONTINUE
|
||
|
X(I) = SUM / S(L(I),I)
|
||
|
5 CONTINUE
|
||
|
RETURN
|
||
|
END
|