OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
vinter_smooth.F File Reference
#include "implicit_f.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine vinter_smooth (tf, iad, ipos, ilen, nel0, x, dydx, y)

Function/Subroutine Documentation

◆ vinter_smooth()

subroutine vinter_smooth ( tf,
integer, dimension(*) iad,
integer, dimension(*) ipos,
integer, dimension(*) ilen,
integer nel0,
x,
dydx,
y )

Definition at line 29 of file vinter_smooth.F.

30C-----------------------------------------------
31C I m p l i c i t T y p e s
32C-----------------------------------------------
33#include "implicit_f.inc"
34C-----------------------------------------------
35 INTEGER ILEN(*),IPOS(*),IAD(*),NEL0
36 my_real x(*),dydx(*),y(*),tf(2,*)
37 INTEGER I,J1,J,ICONT,J2,J_FIRST,J_LAST
38 my_real dydx1,dydx2,dydx3,x_first,x_last
39C-----------------------------------------------
40 j = 0
41 icont = 1
42 DO WHILE (icont == 1)
43!
44 j = j+1
45 icont = 0
46 DO i=1,nel0
47 j1 = ipos(i)+iad(i)+1
48 IF (j <= ilen(i)-1 .AND. x(i) > tf(1,j1)) THEN
49 ipos(i) = ipos(i) + 1
50 icont = 1
51 ELSEIF (ipos(i) >= 1 .AND. x(i) < tf(1,j1-1)) THEN
52 ipos(i) = ipos(i) - 1
53 icont = 1
54 ENDIF
55 ENDDO
56!
57 ENDDO
58!
59! smooth interpolation
60C
61 DO i=1,nel0
62C
63 j_first = ipos(i)+iad(i)
64 j_last = j_first + 1
65 x_first = tf(1,j_first)
66 x_last = tf(1,j_last)
67C
68 IF (x(i) <= x_first) THEN
69 y(i) = tf(2,j_first)
70 ELSEIF (x(i) >= x_last) THEN
71 y(i) = tf(2,j_last)
72 ELSE
73! within interval
74 j1 =ipos(i)+iad(i)
75 j2 = j1+1
76 dydx(i)=(x(i)-tf(1,j1))/(tf(1,j2)-tf(1,j1))
77!
78 dydx1 = dydx(i)
79 dydx2 = dydx1*dydx1
80 dydx3 = dydx1*dydx2
81!
82 y(i) = tf(2,j1) + (tf(2,j2)-tf(2,j1))*dydx3*
83 . (10. - 15.*dydx1 + 6.*dydx2)
84!
85!! Y(I) = TF(2,J1) + (TF(2,J2)-TF(2,J1))*DYDX(I)**3*
86!! . (10. - 15.*DYDX(I) + 6.*DYDX(I)**2)
87 ENDIF ! IF (X <= X_FIRST)
88 ENDDO
89!---
90 RETURN
#define my_real
Definition cppsort.cpp:32