FrontISTR 5.2.0
Large-scale structural analysis program with finit element method
Loading...
Searching...
No Matches
precheck_LIB_shell.f90
Go to the documentation of this file.
1!-------------------------------------------------------------------------------
2! Copyright (c) 2019 FrontISTR Commons
3! This software is released under the MIT License, see LICENSE.txt
4!-------------------------------------------------------------------------------
7contains
8 !***********************************************************************
9 ! SHELL Element:
10 ! PRE_731( XX,YY,ZZ,thick,vol,almax,almin )
11 ! PRE_741( XX,YY,ZZ,thick,vol,almax,almin )
12 !----------------------------------------------------------------------*
13 subroutine pre_731( XX,YY,ZZ,thick,vol,almax,almin )
14 !----------------------------------------------------------------------*
15 !**
16 !** Precheck for 3nodes SHELL
17 !**
18 use hecmw
20 implicit none
21 ! I/F VARIABLES
22 real(kind=kreal) xx(*),yy(*),zz(*),thick,vol,almax,almin
23 ! LOCAL VARIABLES
24 real(kind=kreal) v1x,v1y,v1z
25 real(kind=kreal) v2x,v2y,v2z
26 real(kind=kreal) v3x,v3y,v3z
27 real(kind=kreal) area,a1,a2,a3
28 area = 0.0
29 vol = 0.0
30 !** FACE 1-2-3
31 v1x=xx(2)-xx(1)
32 v1y=yy(2)-yy(1)
33 v1z=zz(2)-zz(1)
34 v2x=xx(3)-xx(1)
35 v2y=yy(3)-yy(1)
36 v2z=zz(3)-zz(1)
37 v3x= v1y*v2z-v1z*v2y
38 v3y=-v1x*v2z+v1z*v2x
39 v3z= v1x*v2y-v1y*v2x
40 area=sqrt( v3x*v3x + v3y*v3y + v3z*v3z )*0.5
41 vol = area * thick
42 a1 = sqrt( (xx(2)-xx(1))**2+(yy(2)-yy(1))**2+(zz(2)-zz(1))**2 )
43 a2 = sqrt( (xx(3)-xx(2))**2+(yy(3)-yy(2))**2+(zz(3)-zz(2))**2 )
44 a3 = sqrt( (xx(1)-xx(3))**2+(yy(1)-yy(3))**2+(zz(1)-zz(3))**2 )
45 almax = dmax1( a1,a2,a3 )
46 almin = dmin1( a1,a2,a3 )
47
48 end subroutine pre_731
49 !----------------------------------------------------------------------*
50 subroutine pre_741( XX,YY,ZZ,thick,vol,almax,almin )
51 !----------------------------------------------------------------------*
52 !**
53 !** Precheck for 3nodes SHELL
54 !**
55 use hecmw
57 implicit none
58 ! I/F VARIABLES
59 real(kind=kreal) xx(*),yy(*),zz(*),thick,vol,almax,almin
60 ! LOCAL VARIABLES
61 integer(kind=kint) NN
62 integer(kind=kint) NG
63 parameter(nn=8,ng=2)
64 real(kind=kreal) h(nn),hr(nn),hs(nn),ht(nn)
65 real(kind=kreal) ri,si,ti,rp,sp,tp,rm,sm,tm
66 real(kind=kreal) xj11,xj21,xj31,xj12,xj22,xj32,xj13,xj23,xj33,det,wg
67 integer(kind=kint) IG1,IG2,LX,LY,LZ,I
68 real(kind=kreal) vx,vy,vz,xcod,ycod,zcod
69 real(kind=kreal) ax,ay,az,rx,ry,rz,hx,hy,hz,val
70 real(kind=kreal) phx,phy,phz
71 real(kind=kreal) g1x,g1y,g1z
72 real(kind=kreal) g2x,g2y,g2z
73 real(kind=kreal) g3x,g3y,g3z
74 real(kind=kreal) xsum,coefx,coefy,coefz
75 real(kind=kreal) area,a1,a2,a3,a4
76 !
77 area = 0.0
78 vol = 0.0
79 ! INTEGRATION OVER SURFACE
80 do ig2=1,ng
81 si=xg(ng,ig2)
82 do ig1=1,ng
83 ri=xg(ng,ig1)
84 h(1)=0.25*(1.0-ri)*(1.0-si)
85 h(2)=0.25*(1.0+ri)*(1.0-si)
86 h(3)=0.25*(1.0+ri)*(1.0+si)
87 h(4)=0.25*(1.0-ri)*(1.0+si)
88 hr(1)=-.25*(1.0-si)
89 hr(2)= .25*(1.0-si)
90 hr(3)= .25*(1.0+si)
91 hr(4)=-.25*(1.0+si)
92 hs(1)=-.25*(1.0-ri)
93 hs(2)=-.25*(1.0+ri)
94 hs(3)= .25*(1.0+ri)
95 hs(4)= .25*(1.0-ri)
96 g1x=0.0
97 g1y=0.0
98 g1z=0.0
99 g2x=0.0
100 g2y=0.0
101 g2z=0.0
102 do i=1,nn
103 g1x=g1x+hr(i)*xx(i)
104 g1y=g1y+hr(i)*yy(i)
105 g1z=g1z+hr(i)*zz(i)
106 g2x=g2x+hs(i)*xx(i)
107 g2y=g2y+hs(i)*yy(i)
108 g2z=g2z+hs(i)*zz(i)
109 enddo
110 g3x=g1y*g2z-g1z*g2y
111 g3y=g1z*g2x-g1x*g2z
112 g3z=g1x*g2y-g1y*g2x
113 xsum=dsqrt(g3x**2+g3y**2+g3z**2)
114 g3x=g3x/xsum
115 g3y=g3y/xsum
116 g3z=g3z/xsum
117 !JACOBI MATRIX
118 xj11=g1x
119 xj12=g1y
120 xj13=g1z
121 xj21=g2x
122 xj22=g2y
123 xj23=g2z
124 xj31=g3x
125 xj32=g3y
126 xj33=g3z
127 !DETERMINANT OF JACOBIAN
128 det=xj11*xj22*xj33 &
129 +xj12*xj23*xj31 &
130 +xj13*xj21*xj32 &
131 -xj13*xj22*xj31 &
132 -xj12*xj21*xj33 &
133 -xj11*xj23*xj32
134 wg=wgt(ng,ig1)*wgt(ng,ig2)*det
135 do i = 1, nn
136 area = area + h(i)*wg
137 enddo
138 enddo
139 enddo
140
141 vol = area*thick
142 a1 = sqrt( (xx(2)-xx(1))**2+(yy(2)-yy(1))**2+(zz(2)-zz(1))**2 )
143 a2 = sqrt( (xx(3)-xx(2))**2+(yy(3)-yy(2))**2+(zz(3)-zz(2))**2 )
144 a3 = sqrt( (xx(4)-xx(3))**2+(yy(4)-yy(3))**2+(zz(4)-zz(3))**2 )
145 a4 = sqrt( (xx(1)-xx(4))**2+(yy(1)-yy(4))**2+(zz(1)-zz(4))**2 )
146 almax = dmax1( a1,a2,a3,a4 )
147 almin = dmin1( a1,a2,a3,a4 )
148
149 end subroutine pre_741
150end module m_precheck_lib_shell
This module provides data for gauss quadrature.
Definition: GaussM.f90:6
real(kind=kreal), dimension(3, 3) wgt
wieght of gauss points
Definition: GaussM.f90:10
real(kind=kreal), dimension(3, 3) xg
abscissa of gauss points
Definition: GaussM.f90:9
Definition: hecmw.f90:6
This module provides function to check input data of shell elements.
subroutine pre_731(xx, yy, zz, thick, vol, almax, almin)
subroutine pre_741(xx, yy, zz, thick, vol, almax, almin)