SPEED
MAKE_MASS_MATRIX.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine make_mass_matrix (nn, xq, wq, dd, rho, aa11, aa12, aa13, aa21, aa22, aa23, aa31, aa32, aa33, bb11, bb12, bb13, bb21, bb22, bb23, bb31, bb32, bb33, gg1, gg2, gg3, dd1, dd2, dd3, mass)
 Makes mass matrix.
 

Function/Subroutine Documentation

◆ make_mass_matrix()

subroutine make_mass_matrix ( integer*4  nn,
real*8, dimension(nn)  xq,
real*8, dimension(nn)  wq,
real*8, dimension(nn,nn)  dd,
real*8, dimension(nn,nn,nn)  rho,
real*8  aa11,
real*8  aa12,
real*8  aa13,
real*8  aa21,
real*8  aa22,
real*8  aa23,
real*8  aa31,
real*8  aa32,
real*8  aa33,
real*8  bb11,
real*8  bb12,
real*8  bb13,
real*8  bb21,
real*8  bb22,
real*8  bb23,
real*8  bb31,
real*8  bb32,
real*8  bb33,
real*8  gg1,
real*8  gg2,
real*8  gg3,
real*8  dd1,
real*8  dd2,
real*8  dd3,
real*8, dimension(nn,nn,nn)  mass 
)

Makes mass matrix.

Author
Ilario Mazzieri
Date
September, 2013
Version
1.0
Parameters
[in]nnnumber of 1-D GLL nodes
[in]xqGLL nodes
[in]wqGLL weights
[in]ddspectral derivatives matrix
[in]rhomass density
[in]A11costant values for the bilinear map
[in]A12costant values for the bilinear map
[in]A13costant values for the bilinear map
[in]A21costant values for the bilinear map
[in]A22costant values for the bilinear map
[in]A23costant values for the bilinear map
[in]A31costant values for the bilinear map
[in]A32costant values for the bilinear map
[in]A33costant values for the bilinear map
[in]B11costant values for the bilinear map
[in]B12costant values for the bilinear map
[in]B13costant values for the bilinear map
[in]B21costant values for the bilinear map
[in]B22costant values for the bilinear map
[in]B23costant values for the bilinear map
[in]B31costant values for the bilinear map
[in]B32costant values for the bilinear map
[in]B33costant values for the bilinear map
[in]GG1costant values for the bilinear map
[in]GG2costant values for the bilinear map
[in]GG3costant values for the bilinear map
[in]DD1costant values for the bilinear map
[in]DD2costant values for the bilinear map
[in]DD3costant values for the bilinear map
[out]massdiagonal mass matrix

Definition at line 54 of file MAKE_MASS_MATRIX.f90.

60
61
62 implicit none
63
64 integer*4 :: nn
65 integer*4 :: i,j,k
66
67 real*8 :: aa11,aa12,aa13,aa21,aa22,aa23,aa31,aa32,aa33
68 real*8 :: bb11,bb12,bb13,bb21,bb22,bb23,bb31,bb32,bb33
69 real*8 :: gg1,gg2,gg3,dd1,dd2,dd3
70 real*8 :: dxdx,dxdy,dxdz,dydx,dydy,dydz,dzdx,dzdy,dzdz,det_j
71
72 real*8, dimension(nn) :: xq, wq
73
74 real*8, dimension(nn,nn) :: dd
75
76 real*8, dimension(nn,nn,nn) :: rho
77 real*8, dimension(nn,nn,nn) :: mass
78
79
80! ELEMENT NODAL MASS CALCULATION
81
82 do k = 1,nn
83 do j = 1,nn
84 do i = 1,nn
85 dxdx = aa11 + bb12*xq(k) + bb13*xq(j) + gg1*xq(j)*xq(k)
86 dydx = aa21 + bb22*xq(k) + bb23*xq(j) + gg2*xq(j)*xq(k)
87 dzdx = aa31 + bb32*xq(k) + bb33*xq(j) + gg3*xq(j)*xq(k)
88
89 dxdy = aa12 + bb11*xq(k) + bb13*xq(i) + gg1*xq(k)*xq(i)
90 dydy = aa22 + bb21*xq(k) + bb23*xq(i) + gg2*xq(k)*xq(i)
91 dzdy = aa32 + bb31*xq(k) + bb33*xq(i) + gg3*xq(k)*xq(i)
92
93 dxdz = aa13 + bb11*xq(j) + bb12*xq(i) + gg1*xq(i)*xq(j)
94 dydz = aa23 + bb21*xq(j) + bb22*xq(i) + gg2*xq(i)*xq(j)
95 dzdz = aa33 + bb31*xq(j) + bb32*xq(i) + gg3*xq(i)*xq(j)
96
97 det_j = dxdz * (dydx*dzdy - dzdx*dydy) &
98 - dydz * (dxdx*dzdy - dzdx*dxdy) &
99 + dzdz * (dxdx*dydy - dydx*dxdy)
100
101 mass(i,j,k) = rho(i,j,k) * det_j * wq(i)*wq(j)*wq(k)
102 enddo
103 enddo
104 enddo
105
106 return
107