CalculiX  2.13
A Free Software Three-Dimensional Structural Finite Element Program
onedint.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine onedint (XE, YE, NE, XA, YA, NA, IART, IEXP, IER)
 

Function/Subroutine Documentation

◆ onedint()

subroutine onedint ( real*8, dimension(ne)  XE,
real*8, dimension(ne)  YE,
integer  NE,
real*8, dimension(na)  XA,
real*8, dimension(na)  YA,
integer  NA,
integer  IART,
integer  IEXP,
integer  IER 
)
67  implicit none
68  INTEGER ne,na,na1,ne1,ig,ier,ia,iart,ie2,i,iexp,ie1,l
69  REAL*8 xe(ne),ye(ne),xa(na),ya(na),zw1,zw2,xo,yo,rab,xd,yd,
70  & xz,yz,xu,yu,eq,eqd,x
71 C
72 C INTERPOLATION FUNCTION
73 C ------------------------
74  eq(x) = yu + yu * (x-xu) / xu +
75  1 ((yz-yu)/(xz-xu) - yu/xu) * (x-xu) * x / xz
76  eqd(x) = yz * x / xz +
77  1 (yd / xd - yz / xz) * x * (x - xz) / (xd - xz)
78 C
79 C INPUT/DATA TEST,INTERPOLATION DIVERGENCE,EXTRAPOLATION LIMIT
80 C----------------------------------------------------------------
81  na1 = na - 1
82  IF (na .LE. 0) GO TO 900
83  ne1 = ne - 1
84  IF (ne1.lt.0) then
85  go to 900
86  elseif(ne1.eq.0) then
87  go to 22
88  else
89  go to 18
90  endif
91  18 DO 20 l = 1,ne1
92  20 IF ((xe(l+1)-xe(l)) .LE. 0) GO TO 900
93  22 ie1 = iexp / 10
94  ie2 = iexp - 10*ie1
95  ia = iart
96  IF (ne1 .LT. ia) ia = ne1
97  IF (ia .LT. ie1) ie1 = ia
98  IF (ia .LT. ie2) ie2 = ia
99 C
100 C SUCCESSIVE PROCESSING THE INTERPOLATION EXIGENCES
101 C-------------------------------------------------------
102 C
103 C ZUR ERHOEHUNG DER NUMERISCHEN GENAUIGKEIT WIRD EINE
104 C TRANSLATION VON (XO,YO) IN (0,0) DURCHGEFUEHRT. DIES
105 C BEWIRKT AUSSERDEM EINE BESCHLEUNIGUNG DES VERFAHRENS.
106 C
107  DO 100 i = 1,na
108  DO 24 l = 1,ne
109  IF (xa(i) .LT. xe(l)) GO TO 30
110  24 CONTINUE
111  l = ne
112  IF ((ie2 - 1).lt.0) then
113  go to 50
114  elseif((ie2-1).eq.0) then
115  go to 35
116  else
117  go to 70
118  endif
119  30 IF (l .GT. 1) GO TO 40
120  IF ((ie1 - 1).lt.0) then
121  go to 50
122  elseif((ie1-1).eq.0) then
123  go to 25
124  else
125  go to 70
126  endif
127  40 IF ((ia-1).lt.0) then
128  go to 45
129  elseif((ia-1).eq.0) then
130  go to 60
131  else
132  go to 70
133  endif
134 C
135 C CONSTANT INTERPOLATION
136 C -----------------------
137  45 l = l - 1
138  50 ya(i) = ye(l)
139  GO TO 100
140 C
141 C LINEAR EXTRAPOLATION
142 C ------------------------------
143  25 IF (ia .EQ. 1) GO TO 60
144  xo = xe(2)
145  xu = xe(1) - xo
146  yo = ye(2)
147  yu = ye(1) - yo
148  xz = xe(3) - xo
149  yz = ye(3) - yo
150  GO TO 38
151  35 IF (ia .EQ. 1) GO TO 60
152  xo = xe(ne1)
153  xz = xe(ne1-1) - xo
154  xu = xe(ne) - xo
155  yo = ye(ne1)
156  yz = ye(ne1-1) - yo
157  yu = ye(ne) - yo
158 C
159 C LINEAR EXTRAPOLATION WITH QUADRATIC INTERPOLATION
160 C -----------------------------------------------------
161  38 rab = yu / xu + xu * ((yz-yu) / (xz-xu) - yu/xu) / xz
162  ya(i) = yu + yo + (xa(i) -xu-xo)*rab
163  GO TO 100
164 C
165 C LINEAR INTERPOLATION
166 C ---------------------
167  60 ig = l - 1
168  IF (ig .LT. 1) ig = 1
169  ya(i) = ye(ig) + (xa(i)-xe(ig))*(ye(ig+1)-ye(ig))
170  1 / (xe(ig+1)-xe(ig))
171  GO TO 100
172  70 IF (l .GT. 2) GO TO 80
173  xo = xe(2)
174  xu = xe(1) - xo
175  yo = ye(2)
176  yu = ye(1) - yo
177  xz = xe(3) - xo
178  yz = ye(3) - yo
179  GO TO 85
180  80 IF (l .LT. ne) GO TO 90
181  xo = xe(ne1)
182  xu = xe(ne1-1) - xo
183  xz = xe(ne) - xo
184  yo = ye(ne1)
185  yu = ye(ne1-1) - yo
186  yz = ye(ne) - yo
187  85 ya(i) = eq(xa(i)-xo) + yo
188  GO TO 100
189 C
190 C DOUBLE QUADRATIC INTERPOLATION
191 C ----------------------------------
192  90 xo = xe(l-1)
193  xu = xe(l-2) - xo
194  xz = xe(l) - xo
195  xd = xe(l+1) - xo
196  yo = ye(l-1)
197  yu = ye(l-2) - yo
198  yz = ye(l) - yo
199  yd = ye(l+1) - yo
200  zw1 = eq(xa(i)-xo)
201  zw2 = eqd(xa(i)-xo)
202  ya(i) = zw1 + (zw2 - zw1) * (xa(i) - xo)/xz + yo
203  100 CONTINUE
204 C
205 C RETURN BY NORMAL PROCEEDING
206 C -------------------------------
207  ier = 0
208  RETURN
209 C
210 C ERROR RETURN
211 C ------------
212  900 ier = -1
213  RETURN
static ITG * ne1
Definition: biosav.c:27
Hosted by OpenAircraft.com, (Michigan UAV, LLC)