FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
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 !-------------------------------------------------------------------------------
7 contains
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
150 end module m_precheck_lib_shell
gauss_integration
This module provides data for gauss quadrature.
Definition: GaussM.f90:6
m_precheck_lib_shell::pre_741
subroutine pre_741(XX, YY, ZZ, thick, vol, almax, almin)
Definition: precheck_LIB_shell.f90:51
hecmw
Definition: hecmw.f90:6
gauss_integration::xg
real(kind=kreal), dimension(3, 3) xg
abscissa of gauss points
Definition: GaussM.f90:9
m_precheck_lib_shell
This module provides function to check input data of shell elements.
Definition: precheck_LIB_shell.f90:6
gauss_integration::wgt
real(kind=kreal), dimension(3, 3) wgt
weight of gauss points
Definition: GaussM.f90:10
m_precheck_lib_shell::pre_731
subroutine pre_731(XX, YY, ZZ, thick, vol, almax, almin)
Definition: precheck_LIB_shell.f90:14