35
36
37
38#include "implicit_f.inc"
39#include "scr05_c.inc"
40
41
42
43 INTEGER L
47
48
49
50 INTEGER I, J, K, IPIV2(2), IPIV3(3), INFO
51 my_real triax_1_lin, triax_2_lin, triax_3_lin,
52 . triax_4_lin, triax_5_lin
53 my_real triax_1_quad, triax_2_quad,
54 . triax_3_quad, triax_4_quad, triax_5_quad
57 DATA triax_1_lin, triax_2_lin, triax_3_lin, triax_4_lin,
58 . triax_5_lin
59 . / -0.33333333, 0.0, 0.33333333, 0.57735, 0.66666667 /
60 DATA triax_1_quad, triax_2_quad, triax_3_quad,
61 . triax_4_quad, triax_5_quad
62 . / 0.111111, 0.0, 0.111111, 0.333333, 0.444444 /
63#ifndef WITHOUT_LINALG
64
65
66
67
68
69
70 IF (l/=0)THEN
71 IF (l == 1) THEN
72 c1 = 3.5 * c3
73 c2 = 1.6 * c3
74 c4 = 0.6 * c3
75 c5 = 1.5 * c3
76 ELSEIF (l == 2) THEN
77 c1 = 4.3 * c3
78 c2 = 1.4 * c3
79 c4 = 0.6 * c3
80 c5 = 1.6 * c3
81 ELSEIF (l == 3) THEN
82 c1 = 5.2 * c3
83 c2 = 3.1 * c3
84 c4 = 0.8 * c3
85 c5 = 3.5 * c3
86 ELSEIF (l == 4) THEN
87 c1 = 5.0 * c3
88 c2 = 1.0 * c3
89 c4 = 0.4 * c3
90 c5 = 0.8 * c3
91 ELSEIF (l == 5) THEN
92 c1 = 7.8 * c3
93 c2 = 3.5 * c3
94 c4 = 0.6 * c3
95 c5 = 2.8 * c3
96 ELSEIF (l == 6) THEN
97 c1 = 3.6 * c3
98 c2 = 0.6 * c3
99 c4 = 0.5 * c3
100 c5 = 0.6 * c3
101 ELSEIF (l == 7) THEN
102 c1 = 10.0 * c3
103 c2 = 2.7 * c3
104 c4 = 0.6 * c3
105 c5 = 0.7 * c3
106 ELSEIF (l == 99) THEN
107 c1 = e1 * c3
108 c2 = e2 * c3
109 c4 = e3 * c3
110 c5 = e4 * c3
111 ELSE
112 c1 = 3.5 * c3
113 c2 = 1.6 * c3
114 c4 = 0.6 * c3
115 c5 = 1.5 * c3
116 ENDIF
117 ELSEIF(c1 == zero .AND. c2 == zero .AND. c4 == zero .AND. c5 == zero) THEN
118 c1 = 3.5 * c3
119 c2 = 1.6 * c3
120 c4 = 0.6 * c3
121 c5 = 1.5 * c3
122 ENDIF
123
124
125
126
127
128 a_1(1,1) = triax_1_lin
129 a_1(1,2) = triax_1_quad
130 a_1(2,1) = triax_3_lin
131 a_1(2,2) = triax_3_quad
132 b_1(1) = c1 - c2
133 b_1(2) = c3 - c2
134
135
136 IF (iresp == 0) THEN
137 CALL dgesv(2, 1, a_1, 2, ipiv2, b_1, 2, info)
138 ELSE
139 CALL sgesv(2, 1, a_1, 2, ipiv2, b_1, 2, info)
140 ENDIF
141 x_1(1:2) = b_1(1:2)
142
143
144
145
146
147
148
149 a_2(1,1) = 1.0
150 a_2(1,2) = triax_3_lin
151 a_2(1,3) = triax_3_quad
152 a_2(2,1) = 1.0
153 a_2(2,2) = triax_4_lin
154 a_2(2,3) = triax_4_quad
155 a_2(3,1) = 1.0
156 a_2(3,2) = triax_5_lin
157 a_2(3,3) = triax_5_quad
158 b_2(1) = c3
159 b_2(2) = c4
160 b_2(3) = c5
161
162
163 IF (iresp == 0) THEN
164 CALL dgesv(3, 1, a_2, 3, ipiv3, b_2, 3, info)
165 ELSE
166 CALL sgesv(3, 1, a_2, 3, ipiv3, b_2, 3, info)
167 ENDIF
168 x_2(1:3) = b_2(1:3)
169#else
170 WRITE(6,*) "Error: Blas/Lapack required for /FAIL/BIQUAD"
171#endif
172
173
174 RETURN
subroutine dgesv(n, nrhs, a, lda, ipiv, b, ldb, info)
DGESV computes the solution to system of linear equations A * X = B for GE matrices
subroutine sgesv(n, nrhs, a, lda, ipiv, b, ldb, info)
SGESV computes the solution to system of linear equations A * X = B for GE matrices (simple driver)