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

Go to the source code of this file.

Functions/Subroutines

subroutine twodint (T, LSP, IART, XA, YA, ZA, NA, IEXP, IER)
 

Function/Subroutine Documentation

◆ twodint()

subroutine twodint ( real*8, dimension(lsp,1)  T,
integer  LSP,
integer  IART,
real*8, dimension(1)  XA,
real*8, dimension(1)  YA,
real*8, dimension(1)  ZA,
integer  NA,
integer, dimension(2)  IEXP,
integer  IER 
)
84  implicit none
85  INTEGER iexp(2),iyu,iyo,ixu,ixo,idx,idy,ll,inpy,iexpx1,iexpxn,
86  & iexpy1,iexpyn,lx,ly,inpx,iart,lsp,ier,nx,ny,l,na,one
87  REAL*8 t(lsp,1),xa(1),ya(1),za(1)
88  REAL*8 z1(4),z2(4)
89 C ENTRY ZWEINT (T,LSP,IART,XA,YA,ZA,NA,IEXP,IER)
90  ier = 0
91  one=1
92  nx = t(1,1)
93  ny = (t(1,1)-nx)*1000 + 0.1
94 C
95 C TESTING INPUT
96 C--------------
97  IF ((nx-2).lt.0) then
98  go to 900
99  elseif((nx-2).eq.0) then
100  go to 30
101  else
102  go to 10
103  endif
104  10 DO 20 l = 3,nx
105  20 IF ((t(l,1)-t(l-1,1)) .LE. 0) GO TO 900
106  30 IF ((ny-2).lt.0) then
107  go to 900
108  elseif((ny-2).eq.0) then
109  go to 60
110  else
111  go to 40
112  endif
113  40 DO 50 l = 3,ny
114  50 IF ((t(1,l)-t(1,l-1)) .LE. 0) GO TO 900
115  60 IF (na .LE. 0) GO TO 900
116 C
117 C DEFINING THE CONTROL VALUES
118 C---------------------------
119  inpx = iart/10
120  inpy = iart - inpx*10 + 0.1
121  iexpx1 = iexp(1)/10
122  iexpxn = iexp(1) - iexpx1*10
123  iexpy1 = iexp(2)/10
124  iexpyn = iexp(2) - iexpy1*10
125  IF (nx-2 .LT. inpx) inpx = nx - 2
126  IF (ny-2 .LT. inpy) inpy = ny - 2
127  IF (iexpx1 .GT. inpx) iexpx1 = inpx
128  IF (iexpxn .GT. inpx) iexpxn = inpx
129  IF (iexpy1 .GT. inpy) iexpy1 = inpy
130  IF (iexpyn .GT. inpy) iexpyn = inpy
131 C
132 C SUCCESSIVE PROCESSING THE INTERPOLATION EXIGENCES
133 C-------------------------------------------------------
134  DO 400 l = 1,na
135  lx = 2
136 C
137 C SETTING REFERENCE POINTS (LX,LY)
138 C---------------------------------
139  200 IF (xa(l) .LT. t(lx,1)) GO TO 220
140  lx = lx + 1
141  IF ((lx-nx).le.0) then
142  go to 200
143  else
144  go to 210
145  endif
146  210 lx = nx
147  220 DO 230 ly = 2,ny
148  230 IF (ya(l) .LT. t(1,ly)) GO TO 235
149  ly = ny
150  235 iyu = ly - inpy
151  iyo = ly + inpy - 1
152  IF (iyu .GE. 2) GO TO 240
153  iyu = 2
154  iyo = iyu + inpy
155  240 IF (iyo .GT. ny) iyo = ny
156  ixu = lx - inpx
157  ixo = lx + inpx - 1
158  IF (ixu .GE. 2) GO TO 245
159  ixu = 2
160  ixo = ixu + inpx
161  245 IF (ixo .GT. nx) ixo = nx
162  idx = ixo - ixu + 1
163  IF (ixu .LT. ixo) GO TO 270
164  IF (iyu .LT. iyo) GO TO 250
165 C
166 C CONSTANT INTERPOLATION
167 C------------------------
168  IF (lx .GT. 2 .AND. xa(l) .LT. t(nx,1)) lx = lx - 1
169  IF (ly .GT. 2 .AND. ya(l) .LT. t(1,ny)) ly = ly - 1
170  za(l) = t(lx,ly)
171  GO TO 400
172 C
173 C LINEAR AND QUADRATIC INTERPOLATION USING ONEDINT (ONEDIMENSIONAL)
174 C---------------------------------------------------------------------
175 C
176 C INTERPOLATION ONLY IN Y-DIRECTION
177 C
178  250 idy = 0
179  DO 260 ll = iyu,iyo
180  idy = idy + 1
181  z1(idy) = t(1,ll)
182  260 z2(idy) = t(lx,ll)
183  GO TO 300
184 C
185 C INTERPOLATION ONLY IN X-DIRECTION
186 C
187  270 IF (iyu .LT. iyo) GO TO 280
188  CALL onedint(t(ixu,1),t(ixu,ly),idx,xa(l),za(l),one,inpx,iexp(1),
189  1 ier)
190  IF (ier.eq.0) then
191  go to 400
192  else
193  go to 900
194  endif
195 C
196 C 1.INTERPOLATION STEP IN X-DIRECTION
197 C
198  280 idy = 0
199  DO 290 ll = iyu,iyo
200  idy = idy + 1
201  z1(idy) = t(1,ll)
202  CALL onedint (t(ixu,1),t(ixu,ll),idx,xa(l),z2(idy),one,inpx,
203  1 iexp(1),ier)
204  IF (ier.eq.0) then
205  go to 290
206  else
207  go to 900
208  endif
209  290 CONTINUE
210 C
211 C 1.OR 2.INTERPOLATION STEP IN Y-DIRECTION
212 C
213  300 CALL onedint (z1,z2,idy,ya(l),za(l),one,inpy,iexp(2),ier)
214  IF (ier.eq.0) then
215  go to 400
216  else
217  go to 900
218  endif
219 C
220 C RETURN BY NORMAL PROCEEDING
221 C--------------------------------
222  400 CONTINUE
223  ier = 0
224  RETURN
225 C
226 C ERROR RETURN
227 C-------------
228  900 ier = -1
229  RETURN
static double * z1
Definition: filtermain.c:48
subroutine onedint(XE, YE, NE, XA, YA, NA, IART, IEXP, IER)
Definition: onedint.f:67
Hosted by OpenAircraft.com, (Michigan UAV, LLC)