1!$Id:$ 2 subroutine shp1dn(s,shp,nel) 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! Purpose: Compute shape functions and natural derivatives 11! at natural coordinate s. 12! Linear (2 nodes) or quadratic (3 nodes) element. 13 14! Inputs: 15! s : natural coordinate 16! nel : number of nodes of element 17 18! Outputs: 19! shp(2,nel): shape functions and derivatives at s 20! shp(1,1 to nel): derivatives of shape functions 21! shp(2,1 to nel): shape functions 22!-----[--.----+----.----+----.-----------------------------------------] 23 implicit none 24 25 integer nel 26 real*8 s,shp(2,nel) 27 28 save 29 30! Linear element 31 32 if(nel.eq.2) then 33 34 shp(1,1) = -0.5d0 35 shp(1,2) = 0.5d0 36 37 shp(2,1) = 0.5d0 - 0.5d0*s 38 shp(2,2) = 0.5d0 + 0.5d0*s 39 40! Quadratic element 41 42 elseif(nel.eq.3) then 43 44 shp(1,1) = s - 0.5d0 45 shp(1,2) = s + 0.5d0 46 shp(1,3) = -2.d0*s 47 48 shp(2,1) = s*(s - 1.d0)*0.5d0 49 shp(2,2) = s*(s + 1.d0)*0.5d0 50 shp(2,3) = 1.d0 - s*s 51 52! Cubic element 53 54 elseif(nel.eq.4) then 55 56 shp(1,1) = 0.0625d0*( 1.d0 + 18.d0*s - 27.d0*s*s) 57 shp(1,2) = 0.0625d0*(-1.d0 + 18.d0*s + 27.d0*s*s) 58 shp(1,3) = 0.5625d0*(-3.d0 - 2.d0*s + 9.d0*s*s) 59 shp(1,4) = 0.5625d0*( 3.d0 - 2.d0*s - 9.d0*s*s) 60 61 shp(2,1) = 0.0625d0*(9.d0*s*s - 1.d0)*(1.d0 - 3.d0*s) 62 shp(2,2) = 0.0625d0*(9.d0*s*s - 1.d0)*(1.d0 + 3.d0*s) 63 shp(2,3) = 0.5625d0*(1.d0 - s*s)*(1.d0 - 3.d0*s) 64 shp(2,4) = 0.5625d0*(1.d0 - s*s)*(1.d0 + 3.d0*s) 65 66 endif 67 68 end 69