19 INTEGER,
INTENT(IN) :: n_w, l_G
20 REAL(KIND=8),
DIMENSION( n_w, l_G),
INTENT(OUT) :: w
21 REAL(KIND=8),
DIMENSION(2, n_w, l_G),
INTENT(OUT) :: d
22 REAL(KIND=8),
DIMENSION(l_G),
INTENT(OUT) :: p
23 REAL(KIND=8),
DIMENSION(l_G) :: xx, yy
25 REAL(KIND=8) :: zero = 0, half = 0.5, one = 1, &
26 two = 2, three = 3, four = 4, &
28 REAL(KIND=8) :: f1, f2, f3, f4, f5, f6, &
29 df1x, df2x, df3x, df4x, df5x, df6x, &
30 df1y, df2y, df3y, df4y, df5y, df6y, &
31 x, y, r, a, s1, s2, t1, t2, b1, b2, area, sq
33 f1(x, y) = (half - x - y) * (one - x - y) * two
34 f2(x, y) = x * (x - half) * two
35 f3(x, y) = y * (y - half) * two
36 f4(x, y) = x * y * four
37 f5(x, y) = y * (one - x - y) * four
38 f6(x, y) = x * (one - x - y) * four
40 df1x(x, y) = -three + four * (x + y)
41 df2x(x, y) = (two*x - half) * two
44 df5x(x, y) = -y * four
45 df6x(x, y) = (one - two*x - y) * four
47 df1y(x, y) = -three + four * (x + y)
49 df3y(x, y) = (two*y - half) * two
51 df5y(x, y) = (one - x - two*y) * four
52 df6y(x, y) = -x * four
57 r = one/three; a = area * nine/40
58 s1 = (6 - sq)/21; t1 = (9 + 2*sq)/21; b1 = area * (155 - sq)/1200
59 s2 = (6 + sq)/21; t2 = (9 - 2*sq)/21; b2 = area * (155 + sq)/1200
60 xx(1) = r; yy(1) = r; p(1) = a
61 xx(2) = s1; yy(2) = s1; p(2) = b1
62 xx(3) = s1; yy(3) = t1; p(3) = b1
63 xx(4) = t1; yy(4) = s1; p(4) = b1
64 xx(5) = s2; yy(5) = s2; p(5) = b2
65 xx(6) = s2; yy(6) = t2; p(6) = b2
66 xx(7) = t2; yy(7) = s2; p(7) = b2
69 w(1, j) = f1(xx(j), yy(j))
70 d(1, 1, j) = df1x(xx(j), yy(j))
71 d(2, 1, j) = df1y(xx(j), yy(j))
72 w(2, j) = f2(xx(j), yy(j))
73 d(1, 2, j) = df2x(xx(j), yy(j))
74 d(2, 2, j) = df2y(xx(j), yy(j))
75 w(3, j) = f3(xx(j), yy(j))
76 d(1, 3, j) = df3x(xx(j), yy(j))
77 d(2, 3, j) = df3y(xx(j), yy(j))
78 w(4, j) = f4(xx(j), yy(j))
79 d(1, 4, j) = df4x(xx(j), yy(j))
80 d(2, 4, j) = df4y(xx(j), yy(j))
81 w(5, j) = f5(xx(j), yy(j))
82 d(1, 5, j) = df5x(xx(j), yy(j))
83 d(2, 5, j) = df5y(xx(j), yy(j))
84 w(6, j) = f6(xx(j), yy(j))
85 d(1, 6, j) = df6x(xx(j), yy(j))
86 d(2, 6, j) = df6y(xx(j), yy(j))
100 INTEGER,
INTENT(IN) :: n_w, l_Gs
101 INTEGER,
INTENT(IN) :: face
102 REAL(KIND=8),
DIMENSION(2, n_w, l_Gs),
INTENT(OUT) :: d
103 REAL(KIND=8),
DIMENSION( n_w, l_Gs),
INTENT(OUT) :: w
104 REAL(KIND=8),
DIMENSION(l_Gs) :: xx, yy
106 REAL(KIND=8) :: zero = 0, half = 0.5d0, one = 1, &
107 two = 2, three = 3, four = 4, &
109 REAL(KIND=8) :: f1, f2, f3, f4, f5, f6, &
110 df1x, df2x, df3x, df4x, df5x, df6x, &
111 df1y, df2y, df3y, df4y, df5y, df6y, &
113 f1(x, y) = (half - x - y) * (one - x - y) * two
114 f2(x, y) = x * (x - half) * two
115 f3(x, y) = y * (y - half) * two
116 f4(x, y) = x * y * four
117 f5(x, y) = y * (one - x - y) * four
118 f6(x, y) = x * (one - x - y) * four
119 df1x(x, y) = -three + four * (x + y)
120 df2x(x, y) = (two*x - half) * two
122 df4x(x, y) = y * four
123 df5x(x, y) = -y * four
124 df6x(x, y) = (one - two*x - y) * four
125 df1y(x, y) = -three + four * (x + y)
127 df3y(x, y) = (two*y - half) * two
128 df4y(x, y) = x * four
129 df5y(x, y) = (one - x - two*y) * four
130 df6y(x, y) = -x * four
132 xx(1) = half + half*sqrt(three/five)
134 xx(3) = half - half*sqrt(three/five)
135 yy(1) = half - half*sqrt(three/five)
137 yy(3) = half + half*sqrt(three/five)
138 ELSE IF (face==2)
THEN 142 yy(1) = half - half*sqrt(three/five)
144 yy(3) = half + half*sqrt(three/five)
146 xx(1) = half - half*sqrt(three/five)
148 xx(3) = half + half*sqrt(three/five)
155 w(1, j) = f1(xx(j), yy(j))
156 d(1, 1, j) = df1x(xx(j), yy(j))
157 d(2, 1, j) = df1y(xx(j), yy(j))
158 w(2, j) = f2(xx(j), yy(j))
159 d(1, 2, j) = df2x(xx(j), yy(j))
160 d(2, 2, j) = df2y(xx(j), yy(j))
161 w(3, j) = f3(xx(j), yy(j))
162 d(1, 3, j) = df3x(xx(j), yy(j))
163 d(2, 3, j) = df3y(xx(j), yy(j))
164 w(4, j) = f4(xx(j), yy(j))
165 d(1, 4, j) = df4x(xx(j), yy(j))
166 d(2, 4, j) = df4y(xx(j), yy(j))
167 w(5, j) = f5(xx(j), yy(j))
168 d(1, 5, j) = df5x(xx(j), yy(j))
169 d(2, 5, j) = df5y(xx(j), yy(j))
170 w(6, j) = f6(xx(j), yy(j))
171 d(1, 6, j) = df6x(xx(j), yy(j))
172 d(2, 6, j) = df6y(xx(j), yy(j))
183 INTEGER,
INTENT(IN) :: n_ws, l_Gs
184 REAL(KIND=8),
DIMENSION( n_ws, l_Gs),
INTENT(OUT) :: w
185 REAL(KIND=8),
DIMENSION(1, n_ws, l_Gs),
INTENT(OUT) :: d
186 REAL(KIND=8),
DIMENSION(l_Gs),
INTENT(OUT) :: p
187 REAL(KIND=8),
DIMENSION(l_Gs) :: xx
189 REAL(KIND=8) :: zero = 0, one = 1, two = 2, three = 3, &
190 five = 5, eight= 8, nine = 9
191 REAL(KIND=8) :: f1, f2, f3, df1, df2, df3, x
192 f1(x) = (x - one)*x/two
193 f2(x) = (x + one)*x/two
194 f3(x) = (x + one)*(one - x)
195 df1(x) = (two*x - one)/two
196 df2(x) = (two*x + one)/two
198 xx(1) = -sqrt(three/five)
200 xx(3) = sqrt(three/five)
206 d(1, 1, j) = df1(xx(j))
208 d(1, 2, j) = df2(xx(j))
210 d(1, 3, j) = df3(xx(j))
subroutine, public element_2d_p2(w, d, p, n_w, l_G)
subroutine, public element_2d_p2_boundary(face, d, w, n_w, l_Gs)
subroutine, public element_1d_p2(w, d, p, n_ws, l_Gs)