1!$Id:$ 2 subroutine pside1(nr,xs,tr,side,is,ns,ndm,shp,rt, x, styp) 3 4! * * F E A P * * A Finite Element Analysis Program 5 6!.... Copyright (c) 1984-2017: Regents of the University of California 7! All rights reserved 8 9!-----[--.----+----.----+----.-----------------------------------------] 10 11! Purpose: Construct one dimensional side interpolation for coords. 12 13! Inputs: 14! nr - Number of increments on side 15! xs(3,*) - Nodal values of interpolation function 16! side - side number (check sign) 17! is(*) - List of side nodes 18! ns - Order of Lagrange polynomial for side 19! ndm - Spatial dimension of mesh 20! shp(*) - Shape functions for nodal values 21! rt(3,*) - Temporary storage for polar coordinates 22! styp - Type of edge: 0 = Lagrange interpolation 23! 1 = Radius/angle interpolation 24 25! Outputs: 26! x(ndm,ip) - Coordinates of points 27 28!-----[--.----+----.----+----.-----------------------------------------] 29 30 implicit none 31 32 include 'cdata.h' 33 include 'pointer.h' 34 include 'comblk.h' 35 36 integer k,n, nr,ns,side,ndm, styp 37 38 integer is(*) 39 real*8 xs(3,*), shp(*), rt(3,*), x(ndm,*), xx(3), tr(3,4) 40 41 save 42 43! Lagrange interpolation 44 45 if(styp.eq.0) then 46 47 call interp1(nr,xs,side,is,ns,ndm,shp, x) 48 49! R/theta interpolation 50 51 elseif(styp.eq.1) then 52 53 call arcint1(nr,xs,side,is,ns,ndm,shp, x,rt) 54 55! R/theta interpolation 56 57 elseif(styp.eq.2) then 58 59 call segint1(xs,side,is,ns,ndm,shp, x) 60 61! Eliptical interpolation 62 63 elseif(styp.eq.3) then 64 65 call elpint1(nr,xs,side,is,ns,ndm,shp, x,rt) 66 67 endif 68 69! Transform to current frame 70 71 do n = 1,nr+1 72 do k = 1,ndm 73 xx(k) = x(k,n) 74 end do ! k 75 do k = 1,ndm 76 x(k,n) = tr(k,4)+tr(k,1)*xx(1)+tr(k,2)*xx(2)+tr(k,3)*xx(3) 77 end do ! k 78 end do ! n 79 80 end 81