Actual source code: ex69.c
1: static char help[] = "The variable-viscosity Stokes Problem in 2d with finite elements.\n\
2: We solve the Stokes problem in a square domain\n\
3: and compare against exact solutions from Mirko Velic.\n\n\n";
5: /* We discretize the variable-viscosity Stokes problem using the finite element method on an unstructured mesh. The weak form equations are
6: \begin{align*}
7: (\nabla v, \mu (\nabla u + {\nabla u}^T)) - (\nabla\cdot v, p) + (v, f) &= 0 \\
8: (q, \nabla\cdot u) &= 0
9: \end{align*}
10: Free slip conditions for velocity are enforced on every wall. The pressure is constrained to have zero integral over the domain.
12: To produce nice output, use
14: -dm_refine 3 -show_error -dm_view hdf5:sol1.h5 -error_vec_view hdf5:sol1.h5::append -sol_vec_view hdf5:sol1.h5::append -exact_vec_view hdf5:sol1.h5::append
15: */
17: #include <petscdmplex.h>
18: #include <petscsnes.h>
19: #include <petscds.h>
20: #include <petscbag.h>
22: typedef enum {
23: SOLKX,
24: SOLCX,
25: SOLZERO,
26: NUM_SOL_TYPES
27: } SolutionType;
29: const char *solTypes[NUM_SOL_TYPES + 1] = {"solkx", "solcx", "zero", "unknown"};
31: typedef struct {
32: PetscInt n, m; /* x- and y-wavelengths for variation across the domain */
33: /* SolKx */
34: PetscReal B; /* Exponential scale for viscosity variation */
35: /* SolCx */
36: PetscReal etaA, etaB; /* Two viscosities for discontinuous change */
37: PetscReal xc; /* The location of viscosity jump */
38: } Parameter;
40: typedef struct {
41: SolutionType solType; /* The type of exact solution */
42: PetscBag bag; /* Holds problem parameters */
43: } AppCtx;
45: static PetscErrorCode zero(PetscInt dim, PetscReal time, const PetscReal coords[], PetscInt Nc, PetscScalar *u, void *ctx)
46: {
47: PetscInt c;
48: for (c = 0; c < Nc; ++c) u[c] = 0.0;
49: return PETSC_SUCCESS;
50: }
52: static PetscErrorCode one(PetscInt dim, PetscReal time, const PetscReal coords[], PetscInt Nc, PetscScalar *u, void *ctx)
53: {
54: PetscInt c;
55: for (c = 0; c < Nc; ++c) u[c] = 1.0;
56: return PETSC_SUCCESS;
57: }
59: static void f0_u(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar f0[])
60: {
61: f0[0] = 0.0;
62: f0[1] = -PetscSinScalar(constants[1] * PETSC_PI * x[1]) * PetscCosScalar(constants[0] * PETSC_PI * x[0]);
63: }
65: static void f0_zero(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar f0[])
66: {
67: f0[0] = 0.0;
68: f0[1] = 0.0;
69: }
71: static void stokes_momentum_kx(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar f1[])
72: {
73: const PetscReal mu = PetscExpReal(2.0 * PetscRealPart(constants[2]) * x[0]);
74: PetscInt c, d;
76: for (c = 0; c < dim; ++c) {
77: for (d = 0; d < dim; ++d) f1[c * dim + d] = mu * (u_x[c * dim + d] + u_x[d * dim + c]);
78: f1[c * dim + c] -= u[dim];
79: }
80: }
82: static void stokes_momentum_cx(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar f1[])
83: {
84: const PetscReal mu = x[0] < PetscRealPart(constants[4]) ? PetscRealPart(constants[2]) : PetscRealPart(constants[3]);
85: PetscInt c, d;
87: for (c = 0; c < dim; ++c) {
88: for (d = 0; d < dim; ++d) f1[c * dim + d] = mu * (u_x[c * dim + d] + u_x[d * dim + c]);
89: f1[c * dim + c] -= u[dim];
90: }
91: }
93: static void stokes_mass(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar f0[])
94: {
95: PetscInt d;
96: f0[0] = 0.0;
97: for (d = 0; d < dim; ++d) f0[0] -= u_x[d * dim + d];
98: }
100: static void f1_zero(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar f1[])
101: {
102: PetscInt d;
103: for (d = 0; d < dim * dim; ++d) f1[d] = 0.0;
104: }
106: /* < q, \nabla\cdot u >, J_{pu} */
107: static void stokes_mass_J(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, PetscReal u_tShift, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar g1[])
108: {
109: PetscInt d;
110: for (d = 0; d < dim; ++d) g1[d * dim + d] = -1.0; /* \frac{\partial\phi^{u_d}}{\partial x_d} */
111: }
113: /* -< \nabla\cdot v, p >, J_{up} */
114: static void stokes_momentum_pres_J(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, PetscReal u_tShift, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar g2[])
115: {
116: PetscInt d;
117: for (d = 0; d < dim; ++d) g2[d * dim + d] = -1.0; /* \frac{\partial\psi^{u_d}}{\partial x_d} */
118: }
120: /* < \nabla v, \nabla u + {\nabla u}^T >, J_{uu}
121: This just gives \nabla u, give the perdiagonal for the transpose */
122: static void stokes_momentum_vel_J_kx(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, PetscReal u_tShift, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar g3[])
123: {
124: const PetscReal mu = PetscExpReal(2.0 * PetscRealPart(constants[2]) * x[0]);
125: PetscInt cI, d;
127: for (cI = 0; cI < dim; ++cI) {
128: for (d = 0; d < dim; ++d) {
129: g3[((cI * dim + cI) * dim + d) * dim + d] += mu; /*g3[cI, cI, d, d]*/
130: g3[((cI * dim + d) * dim + d) * dim + cI] += mu; /*g3[cI, d, d, cI]*/
131: }
132: }
133: }
134: static void stokes_momentum_vel_J_cx(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, PetscReal u_tShift, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar g3[])
135: {
136: const PetscReal mu = x[0] < PetscRealPart(constants[4]) ? PetscRealPart(constants[2]) : PetscRealPart(constants[3]);
137: PetscInt cI, d;
139: for (cI = 0; cI < dim; ++cI) {
140: for (d = 0; d < dim; ++d) {
141: g3[((cI * dim + cI) * dim + d) * dim + d] += mu; /*g3[cI, cI, d, d]*/
142: g3[((cI * dim + d) * dim + d) * dim + cI] += mu; /*g3[cI, d, d, cI]*/
143: }
144: }
145: }
147: /* 1/mu < q, I q >, Jp_{pp} */
148: static void stokes_identity_J_kx(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, PetscReal u_tShift, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar g0[])
149: {
150: const PetscReal mu = PetscExpReal(2.0 * PetscRealPart(constants[2]) * x[0]);
151: g0[0] = 1.0 / mu;
152: }
154: static void stokes_identity_J_cx(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, PetscReal u_tShift, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar g0[])
155: {
156: const PetscReal mu = x[0] < PetscRealPart(constants[4]) ? PetscRealPart(constants[2]) : PetscRealPart(constants[3]);
157: g0[0] = 1.0 / mu;
158: }
160: /*
161: SolKxSolution - Exact Stokes solutions for exponentially varying viscosity
163: Input Parameters:
164: + pos - The (x,z) coordinate at which to evaluate the solution
165: . n - The constant defining the x-dependence of the forcing function
166: . m - The constant defining the z-dependence of the forcing function
167: - B - The viscosity coefficient
169: Output Parameters:
170: + vel - The (x,z)-velocity at (x,z), or NULL
171: . p - The pressure at (x,z), or NULL
172: . s - The total stress (sigma_xx, sigma_xz, sigma_zz) at (x,z), or NULL
173: . gamma - The strain rate, or NULL
174: - mu - The viscosity at (x,z), or NULL
176: Note:
177: .vb
178: The domain is the square 0 <= x,z <= 1. We solve the Stokes equation for incompressible flow with free-slip boundary
179: conditions everywhere. The forcing term f is given by
181: fx = 0
182: fz = sigma*sin(km*z)*cos(kn*x)
184: where
186: km = m*Pi (m may be non-integral)
187: kn = n*Pi
189: meaning that the density rho is -sigma*sin(km*z)*cos(kn*x). Here we set sigma = 1.
190: The viscosity eta is exp(2*B*x).
191: .ve
193: */
194: static PetscErrorCode SolKxSolution(const PetscReal pos[], PetscReal m, PetscInt n, PetscReal B, PetscScalar vel[], PetscScalar *p, PetscScalar s[], PetscScalar gamma[], PetscScalar *mu)
195: {
196: PetscReal sigma = 1.0;
197: PetscReal Z;
198: PetscReal u1, u2, u3, u4, u5, u6;
199: PetscReal sum1, sum2, sum3, sum4, sum5, sum6;
200: PetscReal kn, km, x, z;
201: PetscReal _PC1, _PC2, _PC3, _PC4;
202: PetscReal Rp, UU, VV;
203: PetscReal a, b, r, _aa, _bb, AA, BB, Rm;
204: PetscReal num1, num2, num3, num4, den1;
206: PetscReal t1, t2, t3, t4, t5, t6, t7, t8, t9, t10;
207: PetscReal t11, t12, t13, t14, t15, t16, t17, t18, t19, t20;
208: PetscReal t21, t22, t23, t24, t25, t26, t27, t28, t29, t30;
209: PetscReal t31, t32, t33, t34, t35, t36, t37, t38, t39, t40;
210: PetscReal t41, t42, t43, t44, t45, t46, t47, t49, t51, t53;
211: PetscReal t56, t58, t61, t62, t63, t64, t65, t66, t67, t68;
212: PetscReal t69, t70, t71, t72, t73, t74, t75, t76, t77, t78;
213: PetscReal t79, t80, t81, t82, t83, t84, t85, t86, t87, t88;
214: PetscReal t89, t90, t91, t92, t93, t94, t95, t96, t97, t99;
215: PetscReal t100, t101, t103, t104, t105, t106, t107, t108, t109, t110;
216: PetscReal t111, t112, t113, t114, t115, t116, t117, t118, t119, t120;
217: PetscReal t121, t124, t125, t126, t127, t129, t130, t132, t133, t135;
218: PetscReal t136, t138, t140, t141, t142, t143, t152, t160, t162;
220: PetscFunctionBegin;
221: /*************************************************************************/
222: /*************************************************************************/
223: /* rho = -sin(km*z)*cos(kn*x) */
224: x = pos[0];
225: z = pos[1];
226: Z = PetscExpReal(2.0 * B * x);
227: km = m * PETSC_PI; /* solution valid for km not zero -- should get trivial solution if km=0 */
228: kn = (PetscReal)n * PETSC_PI;
229: /*************************************************************************/
230: /*************************************************************************/
231: a = B * B + km * km;
232: b = 2.0 * km * B;
233: r = PetscSqrtReal(a * a + b * b);
234: Rp = PetscSqrtReal((r + a) / 2.0);
235: Rm = PetscSqrtReal((r - a) / 2.0);
236: UU = Rp - B;
237: VV = Rp + B;
239: sum1 = 0.0;
240: sum2 = 0.0;
241: sum3 = 0.0;
242: sum4 = 0.0;
243: sum5 = 0.0;
244: sum6 = 0.0;
245: /*sum7=0.0;*/
247: /*******************************************/
248: /* calculate the constants */
249: /*******************************************/
251: t1 = kn * kn;
252: t4 = km * km;
253: t5 = t4 + t1;
254: t6 = t5 * t5;
255: t8 = pow(km + kn, 0.2e1);
256: t9 = B * B;
257: t16 = pow(km - kn, 0.2e1);
258: _aa = -0.4e1 * B * t1 * sigma * t5 / (t6 + 0.4e1 * t8 * t9) / (t6 + 0.4e1 * t16 * t9);
260: t2 = km * km;
261: t3 = kn * kn;
262: t5 = pow(t2 + t3, 0.2e1);
263: t6 = km - kn;
264: t7 = km + kn;
265: t9 = B * B;
266: t13 = t7 * t7;
267: t19 = t6 * t6;
268: _bb = sigma * kn * (t5 + 0.4e1 * t6 * t7 * t9) / (t5 + 0.4e1 * t13 * t9) / (t5 + 0.4e1 * t19 * t9);
270: AA = _aa;
271: BB = _bb;
273: /*******************************************/
274: /* calculate the velocities etc */
275: /*******************************************/
276: t1 = Rm * Rm;
277: t2 = B - Rp;
278: t4 = Rp + B;
279: t6 = UU * x;
280: t9 = PetscExpReal(t6 - 0.4e1 * Rp);
281: t13 = B * B;
282: t16 = Rp * t1;
283: t18 = Rp * Rp;
284: t19 = B * t18;
285: t20 = t13 * Rp;
286: t22 = kn * kn;
287: t24 = B * t1;
288: t32 = 0.8e1 * t13 * BB * kn * Rp;
289: t34 = 0.2e1 * Rm;
290: t35 = PetscCosReal(t34);
291: t37 = Rp * Rm;
292: t49 = PetscSinReal(t34);
293: t63 = PetscExpReal(t6 - 0.2e1 * Rp);
294: t65 = Rm * t2;
295: t67 = 0.2e1 * B * kn;
296: t68 = B * Rm;
297: t69 = t67 + t68 + t37;
298: t73 = 0.3e1 * t13;
299: t75 = 0.2e1 * B * Rp;
300: t76 = t73 - t75 + t1 - t22 - t18;
301: t78 = t65 * t76 * BB;
302: t80 = Rm - kn;
303: t81 = PetscCosReal(t80);
304: t83 = -t67 + t68 + t37;
305: t88 = Rm + kn;
306: t89 = PetscCosReal(t88);
307: t92 = t65 * t76 * AA;
308: t97 = PetscSinReal(t80);
309: t103 = PetscSinReal(t88);
310: t108 = PetscExpReal(t6 - 0.3e1 * Rp - B);
311: t110 = Rm * t4;
312: t111 = t67 + t68 - t37;
313: t115 = t73 + t75 + t1 - t22 - t18;
314: t117 = t110 * t115 * BB;
315: t120 = -t67 + t68 - t37;
316: t127 = t110 * t115 * AA;
317: t140 = PetscExpReal(t6 - Rp - B);
318: num1 = -0.4e1 * t1 * t2 * t4 * AA * t9 + ((0.2e1 * Rp * (0.3e1 * t13 * B - 0.2e1 * t16 - t19 - 0.2e1 * t20 - B * t22 - t24) * AA - t32) * t35 + (0.2e1 * t37 * (t1 + 0.5e1 * t13 - t22 - t18) * AA - 0.8e1 * B * BB * kn * Rm * Rp) * t49 - 0.2e1 * B * (0.3e1 * t20 - Rp * t22 - t18 * Rp - 0.2e1 * t19 - t16 - 0.2e1 * t24) * AA + t32) * t63 + ((0.2e1 * t65 * t69 * AA + t78) * t81 + (0.2e1 * t65 * t83 * AA - t78) * t89 + (t92 - 0.2e1 * t65 * t69 * BB) * t97 + (t92 + 0.2e1 * t65 * t83 * BB) * t103) * t108 + ((-0.2e1 * t110 * t111 * AA - t117) * t81 + (-0.2e1 * t110 * t120 * AA + t117) * t89 + (-t127 + 0.2e1 * t110 * t111 * BB) * t97 + (-t127 - 0.2e1 * t110 * t120 * BB) * t103) * t140;
320: t1 = Rp + B;
321: t2 = Rm * t1;
322: t3 = B * B;
323: t4 = 0.3e1 * t3;
324: t5 = B * Rp;
325: t7 = Rm * Rm;
326: t8 = kn * kn;
327: t9 = Rp * Rp;
328: t10 = t4 + 0.2e1 * t5 + t7 - t8 - t9;
329: t12 = t2 * t10 * AA;
330: t14 = B * Rm;
331: t20 = UU * x;
332: t23 = PetscExpReal(t20 - 0.4e1 * Rp);
333: t25 = Rp * Rm;
334: t32 = Rm * kn;
335: t37 = 0.2e1 * Rm;
336: t38 = PetscCosReal(t37);
337: t40 = t3 * B;
338: t44 = B * t9;
339: t45 = t3 * Rp;
340: t53 = t3 * BB;
341: t58 = PetscSinReal(t37);
342: t69 = PetscExpReal(t20 - 0.2e1 * Rp);
343: t72 = 0.3e1 * t40 * Rm;
344: t73 = t9 * Rp;
345: t74 = t73 * Rm;
346: t75 = t7 * Rm;
347: t76 = B * t75;
348: t77 = t14 * t8;
349: t78 = Rp * t75;
350: t80 = 0.8e1 * t45 * kn;
351: t81 = t25 * t8;
352: t83 = 0.5e1 * t45 * Rm;
353: t84 = t44 * Rm;
354: t85 = t72 - t74 + t76 - t77 + t78 + t80 - t81 + t83 + t84;
355: t88 = 0.2e1 * t9 * t3;
356: t90 = 0.3e1 * t40 * Rp;
357: t91 = t7 * t3;
358: t93 = 0.2e1 * t5 * t32;
359: t94 = t5 * t7;
360: t95 = t5 * t8;
361: t96 = B * t73;
362: t97 = t7 * t9;
363: t100 = 0.2e1 * t3 * Rm * kn;
364: t101 = -t88 + t90 - t91 - t93 - t94 - t95 - t96 - t97 - t100;
365: t105 = Rm - kn;
366: t106 = PetscCosReal(t105);
367: t108 = t72 - t80 + t83 + t76 + t84 - t81 - t74 + t78 - t77;
368: t110 = -t97 - t96 - t88 + t100 + t90 - t95 + t93 - t91 - t94;
369: t114 = Rm + kn;
370: t115 = PetscCosReal(t114);
371: t121 = PetscSinReal(t105);
372: t127 = PetscSinReal(t114);
373: t132 = PetscExpReal(t20 - 0.3e1 * Rp - B);
374: t135 = 0.2e1 * B * kn;
375: t136 = t135 + t14 - t25;
376: t142 = -t135 + t14 - t25;
377: t152 = t2 * t10 * BB;
378: t162 = PetscExpReal(t20 - Rp - B);
379: num2 = (0.2e1 * t12 - 0.8e1 * t14 * kn * t1 * BB) * t23 + ((-0.2e1 * t25 * (t7 + 0.5e1 * t3 - t8 - t9) * AA + 0.8e1 * B * BB * t32 * Rp) * t38 + (0.2e1 * Rp * (0.3e1 * t40 - 0.2e1 * Rp * t7 - t44 - 0.2e1 * t45 - B * t8 - B * t7) * AA - 0.8e1 * t53 * kn * Rp) * t58 - 0.2e1 * t14 * (-t8 + t9 + t4 + t7) * AA + 0.8e1 * t53 * t32) * t69 + ((-t85 * AA - 0.2e1 * t101 * BB) * t106 + (-t108 * AA + 0.2e1 * t110 * BB) * t115 + (-0.2e1 * t101 * AA + t85 * BB) * t121 + (-0.2e1 * t110 * AA - t108 * BB) * t127) * t132 + ((t12 - 0.2e1 * t2 * t136 * BB) * t106 + (t12 + 0.2e1 * t2 * t142 * BB) * t115 + (-0.2e1 * t2 * t136 * AA - t152) * t121 + (-0.2e1 * t2 * t142 * AA + t152) * t127) * t162;
381: t1 = Rm * Rm;
382: t2 = B - Rp;
383: t4 = Rp + B;
384: t6 = VV * x;
385: t7 = PetscExpReal(-t6);
386: t11 = kn * kn;
387: t13 = B * t1;
388: t14 = Rp * Rp;
389: t15 = B * t14;
390: t16 = B * B;
391: t17 = t16 * Rp;
392: t21 = Rp * t1;
393: t30 = 0.8e1 * t16 * BB * kn * Rp;
394: t32 = 0.2e1 * Rm;
395: t33 = PetscCosReal(t32);
396: t35 = Rp * Rm;
397: t47 = PetscSinReal(t32);
398: t61 = PetscExpReal(-t6 - 0.2e1 * Rp);
399: t63 = Rm * t2;
400: t65 = 0.2e1 * B * kn;
401: t66 = B * Rm;
402: t67 = t65 + t66 + t35;
403: t71 = 0.3e1 * t16;
404: t73 = 0.2e1 * B * Rp;
405: t74 = t71 - t73 + t1 - t11 - t14;
406: t76 = t63 * t74 * BB;
407: t78 = Rm - kn;
408: t79 = PetscCosReal(t78);
409: t81 = -t65 + t66 + t35;
410: t86 = Rm + kn;
411: t87 = PetscCosReal(t86);
412: t90 = t63 * t74 * AA;
413: t95 = PetscSinReal(t78);
414: t101 = PetscSinReal(t86);
415: t106 = PetscExpReal(-t6 - 0.3e1 * Rp - B);
416: t108 = Rm * t4;
417: t109 = t65 + t66 - t35;
418: t113 = t71 + t73 + t1 - t11 - t14;
419: t115 = t108 * t113 * BB;
420: t118 = -t65 + t66 - t35;
421: t125 = t108 * t113 * AA;
422: t138 = PetscExpReal(-t6 - Rp - B);
423: num3 = -0.4e1 * t1 * t2 * t4 * AA * t7 + ((-0.2e1 * Rp * (-B * t11 - t13 - t15 + 0.2e1 * t17 + 0.3e1 * t16 * B + 0.2e1 * t21) * AA + t30) * t33 + (-0.2e1 * t35 * (t1 + 0.5e1 * t16 - t11 - t14) * AA + 0.8e1 * B * BB * kn * Rm * Rp) * t47 + 0.2e1 * B * (0.3e1 * t17 - t21 + 0.2e1 * t15 + 0.2e1 * t13 - Rp * t11 - t14 * Rp) * AA - t30) * t61 + ((-0.2e1 * t63 * t67 * AA - t76) * t79 + (-0.2e1 * t63 * t81 * AA + t76) * t87 + (-t90 + 0.2e1 * t63 * t67 * BB) * t95 + (-t90 - 0.2e1 * t63 * t81 * BB) * t101) * t106 + ((0.2e1 * t108 * t109 * AA + t115) * t79 + (0.2e1 * t108 * t118 * AA - t115) * t87 + (t125 - 0.2e1 * t108 * t109 * BB) * t95 + (t125 + 0.2e1 * t108 * t118 * BB) * t101) * t138;
425: t1 = B - Rp;
426: t2 = Rm * t1;
427: t3 = B * B;
428: t4 = 0.3e1 * t3;
429: t5 = B * Rp;
430: t7 = Rm * Rm;
431: t8 = kn * kn;
432: t9 = Rp * Rp;
433: t10 = t4 - 0.2e1 * t5 + t7 - t8 - t9;
434: t12 = t2 * t10 * AA;
435: t14 = B * Rm;
436: t20 = VV * x;
437: t21 = PetscExpReal(-t20);
438: t23 = Rp * Rm;
439: t30 = Rm * kn;
440: t35 = 0.2e1 * Rm;
441: t36 = PetscCosReal(t35);
442: t40 = B * t9;
443: t41 = t3 * Rp;
444: t43 = t3 * B;
445: t51 = t3 * BB;
446: t56 = PetscSinReal(t35);
447: t67 = PetscExpReal(-t20 - 0.2e1 * Rp);
448: t70 = 0.2e1 * B * kn;
449: t71 = t70 + t14 + t23;
450: t76 = Rm - kn;
451: t77 = PetscCosReal(t76);
452: t79 = -t70 + t14 + t23;
453: t84 = Rm + kn;
454: t85 = PetscCosReal(t84);
455: t91 = t2 * t10 * BB;
456: t93 = PetscSinReal(t76);
457: t99 = PetscSinReal(t84);
458: t104 = PetscExpReal(-t20 - 0.3e1 * Rp - B);
459: t107 = 0.3e1 * t43 * Rm;
460: t108 = t9 * Rp;
461: t109 = t108 * Rm;
462: t110 = t7 * Rm;
463: t111 = B * t110;
464: t112 = t14 * t8;
465: t113 = Rp * t110;
466: t115 = 0.8e1 * t41 * kn;
467: t116 = t23 * t8;
468: t118 = 0.5e1 * t41 * Rm;
469: t119 = t40 * Rm;
470: t120 = t107 + t109 + t111 - t112 - t113 - t115 + t116 - t118 + t119;
471: t124 = 0.2e1 * t3 * Rm * kn;
472: t125 = t5 * t8;
473: t126 = B * t108;
474: t127 = t7 * t9;
475: t129 = 0.2e1 * t9 * t3;
476: t130 = t5 * t7;
477: t132 = 0.3e1 * t43 * Rp;
478: t133 = t7 * t3;
479: t135 = 0.2e1 * t5 * t30;
480: t136 = t124 - t125 - t126 + t127 + t129 - t130 + t132 + t133 - t135;
481: t141 = t107 + t115 - t118 + t111 + t119 + t116 + t109 - t113 - t112;
482: t143 = t132 + t129 - t125 + t133 + t127 - t124 - t130 - t126 + t135;
483: t160 = PetscExpReal(-t20 - Rp - B);
484: num4 = (0.2e1 * t12 - 0.8e1 * t14 * kn * t1 * BB) * t21 + ((0.2e1 * t23 * (t7 + 0.5e1 * t3 - t8 - t9) * AA - 0.8e1 * B * BB * t30 * Rp) * t36 + (-0.2e1 * Rp * (-B * t8 - B * t7 - t40 + 0.2e1 * t41 + 0.3e1 * t43 + 0.2e1 * Rp * t7) * AA + 0.8e1 * t51 * kn * Rp) * t56 - 0.2e1 * t14 * (-t8 + t9 + t4 + t7) * AA + 0.8e1 * t51 * t30) * t67 + ((t12 - 0.2e1 * t2 * t71 * BB) * t77 + (t12 + 0.2e1 * t2 * t79 * BB) * t85 + (-0.2e1 * t2 * t71 * AA - t91) * t93 + (-0.2e1 * t2 * t79 * AA + t91) * t99) * t104 + ((-t120 * AA + 0.2e1 * t136 * BB) * t77 + (-t141 * AA - 0.2e1 * t143 * BB) * t85 + (0.2e1 * t136 * AA + t120 * BB) * t93 + (0.2e1 * t143 * AA - t141 * BB) * t99) * t160;
486: t1 = Rm * Rm;
487: t2 = Rp * Rp;
488: t3 = t1 * t2;
489: t4 = B * B;
490: t5 = t1 * t4;
491: t9 = PetscExpReal(-0.4e1 * Rp);
492: t15 = PetscCosReal(0.2e1 * Rm);
493: t22 = PetscExpReal(-0.2e1 * Rp);
494: den1 = (-0.4e1 * t3 + 0.4e1 * t5) * t9 + ((0.8e1 * t1 + 0.8e1 * t4) * t2 * t15 - 0.8e1 * t5 - 0.8e1 * t2 * t4) * t22 - 0.4e1 * t3 + 0.4e1 * t5;
496: _PC1 = num1 / den1;
497: _PC2 = num2 / den1;
498: _PC3 = num3 / den1;
499: _PC4 = num4 / den1;
501: t1 = Rm * x;
502: t2 = PetscCosReal(t1);
503: t4 = PetscSinReal(t1);
504: t10 = PetscExpReal(-0.2e1 * x * B);
505: t12 = kn * x;
506: t13 = PetscCosReal(t12);
507: t16 = PetscSinReal(t12);
508: u1 = -km * (_PC1 * t2 + _PC2 * t4 + _PC3 * t2 + _PC4 * t4 + t10 * AA * t13 + t10 * BB * t16);
510: t2 = Rm * x;
511: t3 = PetscCosReal(t2);
512: t6 = PetscSinReal(t2);
513: t22 = PetscExpReal(-0.2e1 * x * B);
514: t23 = B * t22;
515: t24 = kn * x;
516: t25 = PetscCosReal(t24);
517: t29 = PetscSinReal(t24);
518: u2 = UU * _PC1 * t3 + UU * _PC2 * t6 - _PC1 * t6 * Rm + _PC2 * t3 * Rm - VV * _PC3 * t3 - VV * _PC4 * t6 - _PC3 * t6 * Rm + _PC4 * t3 * Rm - 0.2e1 * t23 * AA * t25 - 0.2e1 * t23 * BB * t29 - t22 * AA * t29 * kn + t22 * BB * t25 * kn;
520: t3 = PetscExpReal(0.2e1 * x * B);
521: t4 = t3 * B;
522: t8 = km * km;
523: t9 = t3 * t8;
524: t11 = 0.3e1 * t9 * Rm;
525: t12 = Rm * Rm;
526: t14 = t3 * t12 * Rm;
527: t15 = UU * UU;
528: t19 = 0.4e1 * t4 * UU * Rm - t11 - t14 + 0.3e1 * t3 * t15 * Rm;
529: t20 = Rm * x;
530: t21 = PetscSinReal(t20);
531: t27 = 0.2e1 * B * t9;
532: t33 = 0.2e1 * t4 * t12;
533: t36 = 0.3e1 * t3 * UU * t12 - t27 - 0.2e1 * t4 * t15 + 0.3e1 * t9 * UU + t33 - t3 * t15 * UU;
534: t37 = PetscCosReal(t20);
535: t49 = VV * VV;
536: t53 = -0.4e1 * t4 * VV * Rm - t11 + 0.3e1 * t3 * t49 * Rm - t14;
537: t64 = t3 * t49 * VV + t33 - 0.3e1 * t9 * VV - 0.2e1 * t4 * t49 - t27 - 0.3e1 * t3 * VV * t12;
538: t76 = B * t8;
539: t80 = kn * kn;
540: t83 = B * B;
541: t87 = t80 * kn;
542: t90 = kn * x;
543: t91 = PetscSinReal(t90);
544: t106 = PetscCosReal(t90);
545: u3 = -((t19 * t21 + t36 * t37) * _PC1 + (t36 * t21 - t19 * t37) * _PC2 + (t53 * t21 + t64 * t37) * _PC3 + (t64 * t21 - t53 * t37) * _PC4 + (-0.3e1 * t8 * AA * kn - 0.8e1 * t76 * BB - 0.4e1 * BB * B * t80 + 0.4e1 * AA * t83 * kn - AA * t87) * t91 + (-0.4e1 * AA * t80 * B - 0.4e1 * t83 * BB * kn + 0.3e1 * t8 * BB * kn - sigma + BB * t87 - 0.8e1 * t76 * AA) * t106) / km;
547: t3 = PetscExpReal(0.2e1 * x * B);
548: t4 = km * km;
549: t5 = t3 * t4;
550: t6 = Rm * x;
551: t7 = PetscCosReal(t6);
552: t8 = _PC1 * t7;
553: t10 = PetscSinReal(t6);
554: t11 = _PC2 * t10;
555: t13 = _PC3 * t7;
556: t15 = _PC4 * t10;
557: t18 = kn * x;
558: t19 = PetscCosReal(t18);
559: t22 = PetscSinReal(t18);
560: t24 = UU * UU;
561: t25 = t3 * t24;
562: t28 = t3 * UU;
563: t38 = Rm * Rm;
564: t39 = t7 * t38;
565: t42 = t10 * t38;
566: t44 = t5 * t8 + t5 * t11 + t5 * t13 + t5 * t15 + t4 * AA * t19 + t4 * BB * t22 + t25 * t8 + t25 * t11 - 0.2e1 * t28 * _PC1 * t10 * Rm + 0.2e1 * t28 * _PC2 * t7 * Rm - t3 * _PC1 * t39 - t3 * _PC2 * t42;
567: t45 = VV * VV;
568: t46 = t3 * t45;
569: t49 = t3 * VV;
570: t62 = B * B;
571: t78 = kn * kn;
572: t82 = t46 * t13 + t46 * t15 + 0.2e1 * t49 * _PC3 * t10 * Rm - 0.2e1 * t49 * _PC4 * t7 * Rm - t3 * _PC3 * t39 - t3 * _PC4 * t42 + 0.4e1 * t62 * AA * t19 + 0.4e1 * t62 * BB * t22 + 0.4e1 * B * AA * t22 * kn - 0.4e1 * B * BB * t19 * kn - AA * t19 * t78 - BB * t22 * t78;
573: u4 = t44 + t82;
575: t3 = PetscExpReal(0.2e1 * x * B);
576: t4 = t3 * B;
577: t8 = km * km;
578: t9 = t3 * t8;
579: t10 = t9 * Rm;
580: t11 = Rm * Rm;
581: t13 = t3 * t11 * Rm;
582: t14 = UU * UU;
583: t18 = 0.4e1 * t4 * UU * Rm - t10 - t13 + 0.3e1 * t3 * t14 * Rm;
584: t19 = Rm * x;
585: t20 = PetscSinReal(t19);
586: t26 = 0.2e1 * B * t9;
587: t31 = 0.2e1 * t4 * t11;
588: t34 = 0.3e1 * t3 * UU * t11 - t26 - 0.2e1 * t4 * t14 + t9 * UU + t31 - t3 * t14 * UU;
589: t35 = PetscCosReal(t19);
590: t47 = VV * VV;
591: t51 = -0.4e1 * t4 * VV * Rm - t10 + 0.3e1 * t3 * t47 * Rm - t13;
592: t61 = t3 * t47 * VV + t31 - t9 * VV - 0.2e1 * t4 * t47 - t26 - 0.3e1 * t3 * VV * t11;
593: t72 = B * t8;
594: t76 = kn * kn;
595: t79 = B * B;
596: t83 = t76 * kn;
597: t86 = kn * x;
598: t87 = PetscSinReal(t86);
599: t101 = PetscCosReal(t86);
600: u5 = ((t18 * t20 + t34 * t35) * _PC1 + (t34 * t20 - t18 * t35) * _PC2 + (t51 * t20 + t61 * t35) * _PC3 + (t61 * t20 - t51 * t35) * _PC4 + (-t8 * AA * kn - 0.4e1 * t72 * BB - 0.4e1 * BB * B * t76 + 0.4e1 * AA * t79 * kn - AA * t83) * t87 + (-0.4e1 * AA * t76 * B - 0.4e1 * t79 * BB * kn + t8 * BB * kn - sigma + BB * t83 - 0.4e1 * t72 * AA) * t101) / km;
602: t3 = PetscExpReal(0.2e1 * x * B);
603: t4 = UU * UU;
604: t8 = km * km;
605: t9 = t3 * t8;
606: t10 = t9 * Rm;
607: t11 = Rm * Rm;
608: t13 = t3 * t11 * Rm;
609: t14 = t3 * B;
610: t18 = 0.3e1 * t3 * t4 * Rm + t10 - t13 + 0.4e1 * t14 * UU * Rm;
611: t19 = Rm * x;
612: t20 = PetscSinReal(t19);
613: t28 = 0.2e1 * B * t9;
614: t33 = 0.2e1 * t14 * t11;
615: t34 = -0.2e1 * t4 * t14 + 0.3e1 * t3 * UU * t11 - t28 - t3 * t4 * UU - t9 * UU + t33;
616: t35 = PetscCosReal(t19);
617: t47 = VV * VV;
618: t51 = -0.4e1 * t14 * VV * Rm - t13 + t10 + 0.3e1 * t3 * t47 * Rm;
619: t61 = -0.3e1 * t3 * VV * t11 + t33 + t3 * t47 * VV + t9 * VV - 0.2e1 * t14 * t47 - t28;
620: t71 = kn * kn;
621: t74 = B * B;
622: t80 = t71 * kn;
623: t83 = kn * x;
624: t84 = PetscSinReal(t83);
625: t96 = PetscCosReal(t83);
626: u6 = -((t18 * t20 + t34 * t35) * _PC1 + (t34 * t20 - t18 * t35) * _PC2 + (t51 * t20 + t61 * t35) * _PC3 + (t61 * t20 - t51 * t35) * _PC4 + (-0.4e1 * BB * B * t71 + 0.4e1 * AA * t74 * kn + t8 * AA * kn - AA * t80) * t84 + (-0.4e1 * AA * t71 * B - t8 * BB * kn - 0.4e1 * t74 * BB * kn - sigma + BB * t80) * t96) / km;
628: /* SS = sin(km*z)*(exp(UU*x)*(_PC1*cos(Rm*x)+_PC2*sin(Rm*x)) + exp(-VV*x)*(_PC3*cos(Rm*x)+_PC4*sin(Rm*x)) + exp(-2*x*B)*(AA*cos(kn*x)+BB*sin(kn*x))); */
630: /* u1 = Vx, u2 = Vz, u3 = txx, u4 = tzx, u5 = pressure, u6 = tzz */
632: sum5 += u5 * PetscCosReal(km * z); /* pressure */
633: sum6 += u6 * PetscCosReal(km * z); /* zz total stress */
635: u1 *= PetscCosReal(km * z); /* x velocity */
636: sum1 += u1;
637: u2 *= PetscSinReal(km * z); /* z velocity */
638: sum2 += u2;
640: u3 *= PetscCosReal(km * z); /* xx total stress */
641: sum3 += u3;
642: u4 *= PetscSinReal(km * z); /* zx stress */
643: sum4 += u4;
645: /* rho = -sigma*sin(km*z)*cos(kn*x); */ /* density */
646: /* sum7 += rho; */
648: /* Output */
649: if (mu) *mu = Z;
650: if (vel) {
651: vel[0] = sum1;
652: vel[1] = sum2;
653: }
654: if (p) (*p) = sum5;
655: if (s) {
656: s[0] = sum3;
657: s[1] = sum4;
658: s[2] = sum6;
659: }
660: if (gamma) {
661: /* sigma = tau - p, tau = sigma + p, tau[] = 2*eta*gamma[] */
662: gamma[0] = (sum3 + sum5) / (2.0 * Z);
663: gamma[1] = (sum4) / (2.0 * Z);
664: gamma[2] = (sum6 + sum5) / (2.0 * Z);
665: }
666: PetscFunctionReturn(PETSC_SUCCESS);
667: }
669: static PetscErrorCode SolKxSolutionVelocity(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt Nf, PetscScalar v[], void *ctx)
670: {
671: Parameter *s = (Parameter *)ctx;
673: PetscFunctionBegin;
674: PetscCall(SolKxSolution(x, s->m, s->n, s->B, v, NULL, NULL, NULL, NULL));
675: PetscFunctionReturn(PETSC_SUCCESS);
676: }
678: static PetscErrorCode SolKxSolutionPressure(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt Nf, PetscScalar p[], void *ctx)
679: {
680: Parameter *s = (Parameter *)ctx;
682: PetscFunctionBegin;
683: PetscCall(SolKxSolution(x, s->m, s->n, s->B, NULL, p, NULL, NULL, NULL));
684: PetscFunctionReturn(PETSC_SUCCESS);
685: }
687: /*
688: SolCxSolution - Exact Stokes solutions for discontinuous viscosity
690: Input Parameters:
691: + pos - The (x,z) coordinate at which to evaluate the solution
692: . n - The constant defining the x-dependence of the forcing function
693: . m - The constant defining the z-dependence of the forcing function
694: . xc - The x coordinate at which the viscosity is discontinuous
695: . etaA - The viscosity coefficient for x < xc
696: - etaB - The viscosity coefficient for x > xc
698: Output Parameters:
699: + vel - The (x,z)-velocity at (x,z), or NULL
700: . p - The pressure at (x,z), or NULL
701: . s - The total stress (sigma_xx, sigma_xz, sigma_zz) at (x,z), or NULL
702: . gamma - The strain rate, or NULL
703: - mu - The viscosity at (x,z), or NULL
705: Note:
706: .vb
707: The domain is the square 0 <= x,z <= 1. We solve the Stokes equation for incompressible flow with free-slip boundary
708: conditions everywhere. The forcing term f is given by
710: fx = 0
711: fz = sigma*sin(km*z)*cos(kn*x)
713: where
715: km = m*Pi (m may be non-integral)
716: kn = n*Pi
718: meaning that the density rho is -sigma*sin(km*z)*cos(kn*x). Here we set sigma = 1.
719: The viscosity eta jumps from etaA to etaB at x = xc.
720: .ve
721: */
722: static PetscErrorCode SolCxSolution(const PetscReal pos[], PetscReal m, PetscInt n, PetscReal xc, PetscReal etaA, PetscReal etaB, PetscScalar vel[], PetscScalar *p, PetscScalar s[], PetscScalar gamma[], PetscScalar *mu)
723: {
724: PetscReal _PC1A, _PC2A, _PC3A, _PC4A, _PC1B, _PC2B, _PC3B, _PC4B, _PC1, _PC2, _PC3, _PC4;
725: PetscReal t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40;
726: PetscReal t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61, t62, t63, t64, t65, t66, t67, t68, t69, t70, t71, t72, t73, t74, t75, t76, t77, t78, t79, t80;
727: PetscReal t81, t82, t83, t84, t85, t86, t87, t88, t89, t90, t91, t92, t93, t94, t95, t96, t97, t98, t99, t100, t101, t102, t103, t104, t105, t106, t107, t108, t109, t110, t111, t112, t113, t115, t116, t117, t118, t119, t120;
728: PetscReal t121, t122, t123, t124, t125, t126, t127, t128, t129, t130, t131, t132, t133, t134, t135, t136, t137, t138, t139, t140, t141, t142, t143, t144, t145, t146, t147, t148, t149, t150, t151, t152, t153, t154, t155, t156, t157, t158, t159, t160;
729: PetscReal t161, t162, t163, t164, t165, t166, t167, t168, t169, t170, t171, t172, t173, t174, t175, t176, t177, t178, t179, t180, t181, t182, t183, t184, t186, t187, t188, t189, t190, t191, t192, t193, t194, t195, t196, t197, t198, t199;
730: PetscReal t201, t202, t203, t204, t206, t207, t208, t209, t210, t211, t212, t213, t215, t216, t217, t218, t219, t220, t221, t222, t223, t224, t225, t226, t227, t228, t229, t230, t231, t232, t233, t234, t235, t236, t237, t238, t239, t240;
731: PetscReal t241, t242, t243, t244, t245, t246, t247, t248, t249, t250, t251, t252, t253, t254, t255, t256, t257, t258, t259, t260, t261, t262, t263, t264, t265, t267, t268, t269, t270, t272, t273, t274, t275, t276, t277, t278, t279, t280;
732: PetscReal t281, t282, t283, t284, t285, t286, t288, t289, t290, t291, t292, t295, t296, t297, t298, t299, t300, t301, t303, t304, t305, t307, t308, t310, t311, t312, t313, t314, t315, t316, t317, t318, t319, t320;
733: PetscReal t321, t322, t323, t324, t325, t326, t327, t328, t329, t330, t331, t332, t334, t335, t336, t337, t338, t339, t340, t341, t342, t344, t345, t346, t347, t348, t349, t350, t351, t352, t353, t354, t355, t356, t358, t359, t360;
734: PetscReal t361, t362, t363, t364, t365, t366, t367, t368, t369, t370, t371, t372, t373, t374, t375, t376, t377, t378, t379, t380, t381, t382, t383, t384, t385, t386, t387, t389, t390, t391, t393, t394, t395, t396, t397, t398;
735: PetscReal t401, t402, t403, t404, t405, t406, t407, t408, t409, t410, t411, t412, t413, t414, t415, t416, t417, t418, t419, t421, t422, t423, t424, t425, t426, t427, t428, t429, t430, t431, t432, t433, t434, t436, t437, t438, t439, t440;
736: PetscReal t441, t442, t443, t444, t445, t446, t447, t448, t450, t451, t453, t454, t455, t456, t457, t458, t459, t461, t462, t463, t464, t465, t466, t468, t469, t470, t471, t474, t475, t478, t480;
737: PetscReal t482, t483, t484, t485, t488, t489, t490, t492, t493, t495, t497, t498, t499, t501, t502, t503, t504, t505, t507, t508, t509, t510, t511, t512, t513, t515, t518, t520;
738: PetscReal t522, t525, t527, t528, t529, t530, t532, t533, t534, t535, t536, t538, t539, t541, t542, t544, t545, t546, t547, t548, t549, t550, t551, t552, t553, t554, t555, t556, t557, t560;
739: PetscReal t561, t562, t563, t564, t567, t568, t571, t573, t575, t576, t578, t579, t583, t590, t591, t594, t595, t596, t597, t598, t600;
740: PetscReal t601, t602, t604, t606, t607, t608, t611, t613, t615, t616, t617, t619, t621, t623, t624, t625, t626, t627, t629, t630, t632, t633, t634, t638, t639, t640;
741: PetscReal t641, t642, t643, t644, t645, t647, t648, t649, t650, t651, t652, t653, t654, t655, t656, t657, t658, t659, t660, t662, t663, t665, t666, t667, t668, t670, t671, t672, t673, t674, t675, t676, t679, t680;
742: PetscReal t682, t683, t684, t685, t686, t688, t689, t690, t691, t693, t694, t695, t696, t697, t698, t699, t700, t701, t702, t704, t705, t708, t709, t711, t712, t713, t714, t717, t718, t719;
743: PetscReal t721, t722, t723, t726, t727, t728, t730, t733, t734, t735, t736, t737, t738, t739, t740, t741, t744, t745, t746, t749, t750, t752, t753, t754, t755, t757, t758, t759, t760;
744: PetscReal t761, t762, t763, t764, t766, t767, t768, t770, t771, t772, t773, t774, t775, t776, t777, t778, t780, t781, t782, t785, t786, t789, t790, t791, t792, t793, t794, t795, t796, t797, t798, t800;
745: PetscReal t801, t806, t807, t808, t809, t811, t812, t817, t818, t819, t821, t822, t824, t827, t828, t830, t834, t835, t837, t840;
746: PetscReal t842, t843, t844, t845, t846, t849, t850, t853, t854, t855, t857, t858, t859, t860, t863, t864, t867, t868, t869, t873, t874, t877, t878, t879, t880;
747: PetscReal t884, t888, t891, t894, t900, t901, t903, t904, t907, t908, t909, t911, t914, t915, t916, t919, t920;
748: PetscReal t923, t924, t925, t926, t927, t929, t932, t935, t937, t939, t942, t943, t944, t945, t947, t948, t949, t950, t952, t953, t954, t955, t956, t957;
749: PetscReal t961, t964, t965, t966, t967, t968, t969, t971, t972, t974, t977, t978, t981, t983, t987, t988, t992, t993, t994, t997, t998;
750: PetscReal t1001, t1003, t1005, t1006, t1009, t1010, t1012, t1013, t1015, t1016, t1017, t1018, t1020, t1021, t1029, t1031, t1032, t1033, t1040;
751: PetscReal t1041, t1042, t1044, t1047, t1050, t1054, t1055, t1057, t1058, t1063, t1068, t1069, t1070, t1079, t1080;
752: PetscReal t1088, t1089, t1091, t1092, t1094, t1096, t1101, t1102, t1103, t1104, t1105, t1108, t1112, t1113, t1118, t1119, t1120;
753: PetscReal t1121, t1122, t1123, t1124, t1125, t1126, t1127, t1128, t1129, t1130, t1132, t1133, t1134, t1135, t1138, t1139, t1140, t1141, t1142, t1145, t1146, t1148, t1149, t1150, t1153, t1154, t1156, t1157, t1158, t1159;
754: PetscReal t1161, t1162, t1165, t1166, t1170, t1171, t1172, t1173, t1175, t1176, t1178, t1180, t1181, t1182, t1185, t1189, t1192, t1193, t1195, t1196, t1199;
755: PetscReal t1201, t1203, t1209, t1210, t1211, t1213, t1214, t1218, t1221, t1224, t1225, t1226, t1228, t1233, t1234, t1235, t1236, t1237, t1240;
756: PetscReal t1241, t1242, t1243, t1244, t1245, t1248, t1251, t1252, t1257, t1258, t1259, t1260, t1263, t1268, t1269, t1272, t1280;
757: PetscReal t1282, t1283, t1284, t1285, t1287, t1288, t1289, t1292, t1293, t1296, t1297, t1300, t1304, t1307, t1310, t1311, t1312, t1316, t1317, t1320;
758: PetscReal t1321, t1323, t1328, t1330, t1331, t1332, t1333, t1336, t1338, t1343, t1344, t1346, t1349, t1350, t1354;
759: PetscReal t1366, t1369, t1370, t1371, t1376, t1378, t1380, t1383, t1386, t1387, t1388, t1391, t1393, t1399;
760: PetscReal t1411, t1412, t1420, t1427;
761: PetscReal t1450, t1456, t1468, t1472, t1474, t1478;
762: PetscReal t1504, t1511;
763: PetscReal t1545;
764: PetscReal t1564, t1583;
766: PetscReal sum1 = 0.0, sum2 = 0.0, sum3 = 0.0, sum4 = 0.0, sum5 = 0.0, sum6 = 0.0;
767: PetscReal ZA = etaA, ZB = etaB;
768: PetscInt nz = m, nx = n;
769: PetscReal u1, u2, u3, u4, u5, u6, Z, x = pos[0], z = pos[1];
771: PetscFunctionBegin;
772: /* Note that there is no Fourier sum here. */
773: /****************************************************************************************/
774: _PC1A = 0;
775: /****************************************************************************************/
776: t1 = nx * 0.3141592654e1;
777: t2 = PetscSinReal(t1);
778: t3 = nx * t2;
779: t4 = nz * nz;
780: t5 = t4 * t4;
781: t6 = 0.3141592654e1 * 0.3141592654e1;
782: t8 = t3 * t5 * t6;
783: t9 = ZA * xc;
784: t12 = PetscExpReal(xc * nz * 0.3141592654e1);
785: t13 = t12 * t12;
786: t15 = nz * 0.3141592654e1;
787: t16 = PetscExpReal(t15);
788: t17 = t16 * t16;
789: t18 = t17 * t16;
790: t19 = ZB * t13 * t18;
791: t20 = t9 * t19;
792: t23 = ZA * ZA;
793: t24 = nx * nx;
794: t25 = t24 * nx;
795: t26 = t23 * t25;
796: t28 = t13 * t13;
797: t29 = t28 * t13;
798: t33 = nx * ZB;
799: t34 = t1 * xc;
800: t35 = PetscSinReal(t34);
801: t36 = t4 * nz;
802: t37 = t35 * t36;
803: t38 = t33 * t37;
804: t39 = 0.3141592654e1 * ZA;
805: t40 = t13 * t12;
806: t41 = t17 * t40;
807: t45 = ZB * ZB;
808: t46 = t45 * t24;
809: t47 = t46 * t4;
810: t48 = 0.3141592654e1 * xc;
811: t49 = t13 * t17;
812: t53 = xc * xc;
813: t54 = t36 * t53;
814: t56 = t54 * t6 * t45;
815: t57 = PetscCosReal(t34);
816: t58 = t57 * t24;
817: t59 = t28 * t12;
818: t60 = t17 * t59;
819: t61 = t58 * t60;
820: t64 = t25 * t2;
821: t65 = t64 * t15;
822: t72 = nx * t23;
823: t74 = t72 * t2 * t5;
824: t75 = t6 * t53;
825: t76 = t16 * t29;
826: t80 = t23 * nz;
827: t81 = t80 * 0.3141592654e1;
828: t82 = t18 * t28;
829: t86 = nx * t5;
830: t87 = t23 * t6;
831: t89 = xc * t2;
832: t90 = t13 * t18;
833: t91 = t89 * t90;
834: t94 = t28 * t28;
835: t96 = t24 * nz;
836: t98 = t4 * t45;
837: t99 = t98 * 0.3141592654e1;
838: t100 = t58 * t41;
839: t104 = 0.3141592654e1 * t25;
840: t105 = ZA * nz * t104;
841: t106 = t2 * ZB;
842: t110 = t17 * t17;
843: t111 = ZA * t110;
844: t116 = nz * t28;
845: t122 = t64 * t4 * t6;
846: t126 = t23 * t29 * t4;
847: t128 = t24 * xc;
848: t132 = t36 * t23;
849: t133 = t6 * t57;
850: t135 = t128 * t41;
851: t138 = t6 * xc;
852: t142 = t72 * t2;
853: t147 = 0.4e1 * t8 * t20 - 0.2e1 * t26 * t2 * t16 * t29 - 0.8e1 * t38 * t39 * t41 + 0.4e1 * t47 * t48 * t49 - 0.8e1 * t56 * t61 - 0.4e1 * t65 * t20 + 0.2e1 * t26 * t2 * t18 * t28 - 0.4e1 * t74 * t75 * t76 - 0.2e1 * t81 * t64 * t82 - 0.4e1 * t86 * t87 * t91 - t23 * t94 * t96 + 0.8e1 * t99 * t100 - 0.2e1 * t105 * t106 * t82 - 0.4e1 * t38 * t48 * t111 * t12 + 0.2e1 * t116 * ZB * t111 * t24 + 0.4e1 * t122 * t20 + 0.4e1 * t126 * 0.3141592654e1 * t17 * t128 + 0.8e1 * t132 * t133 * t135 + 0.4e1 * t74 * t138 * t76 - 0.2e1 * t142 * t4 * t18 * t28;
854: t149 = ZA * t25 * t2;
855: t150 = ZB * t28;
856: t154 = t35 * t5;
857: t155 = t72 * t154;
858: t156 = t75 * t41;
859: t159 = nx * ZA;
860: t160 = t2 * t36;
861: t161 = t159 * t160;
862: t162 = 0.3141592654e1 * ZB;
863: t163 = t28 * t16;
864: t167 = t23 * t57;
865: t168 = t167 * t24;
866: t169 = nz * t110;
867: t170 = t169 * t40;
868: t173 = ZA * ZB;
869: t174 = t173 * t90;
870: t177 = t36 * 0.3141592654e1;
871: t181 = t80 * t104;
872: t184 = nz * t17;
873: t188 = t17 * t29;
874: t190 = t4 * 0.3141592654e1;
875: t191 = t190 * t24;
876: t206 = t138 * t60;
877: t209 = t23 * t4;
878: t211 = t209 * t6 * t25;
879: t212 = t89 * t76;
880: t216 = ZB * t16 * t29;
881: t217 = t9 * t216;
882: t220 = ZB * t110;
883: t221 = ZA * t24;
884: t222 = t221 * nz;
885: t225 = t132 * t75;
886: t232 = t45 * t28;
887: t233 = t110 * t24;
888: t234 = t233 * nz;
889: t236 = t209 * 0.3141592654e1;
890: t237 = t17 * xc;
891: t239 = t237 * t13 * t24;
892: t242 = -0.2e1 * t149 * t150 * t16 - 0.8e1 * t155 * t156 - 0.2e1 * t161 * t162 * t163 + 0.2e1 * t168 * t170 + 0.2e1 * t65 * t174 - 0.2e1 * t142 * t177 * t76 + 0.4e1 * t181 * t91 - 0.4e1 * t168 * t184 * t59 - 0.4e1 * t188 * t23 * t191 + 0.4e1 * t38 * t48 * ZA * t17 * t40 + 0.4e1 * t49 * t23 * t191 + 0.2e1 * t26 * t2 * t13 * t18 - 0.8e1 * t155 * t206 + 0.4e1 * t211 * t212 - 0.4e1 * t8 * t217 + 0.2e1 * t220 * t222 - 0.8e1 * t225 * t100 + 0.2e1 * t142 * t4 * t16 * t29 + t232 * t234 - 0.4e1 * t236 * t239;
893: t244 = nx * t45;
894: t245 = t244 * t37;
895: t246 = t110 * t40;
896: t251 = t237 * t59;
897: t256 = t64 * t90;
898: t260 = t36 * t45 * t133;
899: t263 = t45 * t57;
900: t264 = t263 * t24;
901: t265 = t169 * t12;
902: t269 = t6 * t36;
903: t270 = t17 * t24;
904: t274 = t110 * t13;
905: t276 = t190 * t128;
906: t279 = nx * t36;
907: t281 = t28 * t40;
908: t282 = t281 * t35;
909: t286 = t138 * t41;
910: t289 = t75 * t60;
911: t296 = t190 * t173;
912: t305 = t86 * t45 * t35;
913: t312 = t33 * t154;
914: t313 = t6 * ZA;
915: t324 = t232 * t270;
916: t327 = -0.2e1 * t245 * t48 * t246 + 0.4e1 * t159 * t37 * t162 * t251 + 0.4e1 * t209 * t75 * t256 + 0.8e1 * t260 * t135 + 0.2e1 * t264 * t265 + 0.32e2 * t9 * t150 * t269 * t270 + 0.4e1 * t274 * t23 * t276 + 0.2e1 * t279 * t45 * t282 * t48 + 0.8e1 * t155 * t286 + 0.8e1 * t155 * t289 - 0.8e1 * t150 * ZA * t96 * t17 + 0.8e1 * t296 * t61 - 0.2e1 * t105 * t106 * t163 - 0.2e1 * t81 * t256 - 0.8e1 * t305 * t156 - 0.4e1 * t33 * t282 * t177 * t9 - 0.16e2 * t312 * t313 * t237 * t40 - 0.4e1 * t168 * t184 * t40 + 0.2e1 * t168 * t265 + 0.16e2 * t269 * t53 * t324;
917: t328 = t3 * t4;
918: t331 = t72 * t37;
919: t332 = t48 * t60;
920: t335 = nz * t94;
921: t345 = t72 * t35;
922: t349 = t173 * t57;
923: t355 = t53 * t17;
924: t364 = t54 * t6 * ZB;
925: t365 = t28 * t17;
926: t369 = xc * ZB;
927: t370 = t269 * t369;
928: t371 = ZA * t57;
929: t373 = t371 * t270 * t40;
930: t385 = nx * t35;
931: t396 = t4 * xc;
932: t397 = t396 * t162;
933: t415 = t37 * t48;
934: t418 = -0.32e2 * t364 * t365 * t221 - 0.16e2 * t370 * t373 - 0.4e1 * t331 * t48 * t41 + 0.4e1 * t86 * t23 * t53 * t6 * t2 * t90 + 0.2e1 * t385 * t177 * t23 * xc * t246 + 0.16e2 * t132 * t53 * t6 * t28 * t270 - 0.4e1 * t397 * t371 * t233 * t12 - 0.12e2 * t173 * t58 * t190 * t251 + 0.2e1 * t385 * t36 * 0.3141592654e1 * t23 * xc * t59 - 0.8e1 * t99 * t61 - 0.2e1 * t244 * t59 * t415;
935: t427 = t371 * t270 * t59;
936: t439 = t209 * t48;
937: t440 = t110 * t12;
938: t441 = t58 * t440;
939: t447 = t36 * xc;
940: t455 = t48 * t440;
941: t471 = ZB * t17;
942: t492 = 0.12e2 * t397 * t373 - 0.4e1 * t122 * t217 + 0.16e2 * t364 * t427 + 0.16e2 * t312 * t313 * t355 * t40 - 0.8e1 * t279 * t39 * t35 * ZB * t60 + 0.2e1 * t439 * t441 - 0.2e1 * t81 * t64 * t163 + 0.8e1 * t447 * t87 * t61 + 0.2e1 * t23 * t59 * t57 * t276 + 0.2e1 * t245 * t455 - 0.4e1 * t349 * t96 * t440 - 0.16e2 * t370 * t427 + 0.4e1 * t181 * t212 - 0.16e2 * t365 * t23 * t269 * t128 + 0.16e2 * t86 * t138 * ZA * t35 * t471 * t59 + 0.8e1 * t305 * t289 - 0.4e1 * t439 * t100 + 0.2e1 * ZB * t25 * t2 * ZA * t18 * t28 + 0.2e1 * t142 * t4 * t28 * t16 - 0.8e1 * t56 * t100;
943: t499 = ZA * t53 * t19;
944: t505 = t396 * 0.3141592654e1;
945: t518 = t173 * t53 * t16 * t29;
946: t533 = t23 * t28;
947: t535 = t188 * t45;
948: t538 = t24 * t4;
949: t545 = t3 * t177;
950: t546 = t173 * t76;
951: t555 = t45 * t110;
952: t557 = t72 * t160;
953: t561 = -0.8e1 * t225 * t61 - 0.2e1 * t161 * t162 * t82 + t533 * t234 + 0.4e1 * t535 * t191 + 0.4e1 * t167 * t538 * t332 + 0.4e1 * t349 * t96 * t60 + 0.2e1 * t545 * t546 - 0.2e1 * t264 * t170 + 0.4e1 * t397 * t281 * ZA * t58 - t555 * t96 - 0.4e1 * t557 * t48 * t76;
954: t567 = t396 * 0.3141592654e1 * t45;
955: t568 = t58 * t246;
956: t597 = t58 * nz;
957: t615 = t13 * t45;
958: t616 = t615 * t233;
959: t619 = t94 * t45;
960: t621 = t45 * t59;
961: t625 = 0.2e1 * t149 * t216 + 0.2e1 * t567 * t568 - 0.16e2 * t269 * xc * t324 - 0.2e1 * t236 * xc * t281 * t58 - 0.2e1 * t142 * t177 * t90 - 0.8e1 * t567 * t100 + 0.2e1 * t65 * t546 - 0.8e1 * t305 * t206 + 0.2e1 * nz * t45 * t281 * t57 * t24 - t23 * t110 * t96 - 0.8e1 * t296 * t100 + 0.2e1 * t23 * t281 * t597 + 0.4e1 * t545 * t20 + 0.2e1 * t159 * t2 * t4 * ZB * t163 - 0.4e1 * t557 * t48 * t90 + 0.4e1 * t122 * t518 + 0.8e1 * t263 * t538 * t332 - 0.4e1 * t505 * t616 - t619 * t96 - 0.2e1 * t621 * t57 * t276;
962: t626 = t49 * t45;
963: t660 = t29 * t45;
964: t685 = 0.2e1 * t545 * t174 - 0.4e1 * t126 * 0.3141592654e1 * t24 * xc - 0.4e1 * t47 * t48 * t188 + 0.4e1 * t505 * t660 * t24 - 0.2e1 * t142 * t177 * t163 - 0.2e1 * t142 * t4 * t13 * t18 + 0.8e1 * t260 * t128 * t60 - 0.2e1 * t328 * t546 - 0.2e1 * t26 * t2 * t28 * t16 + 0.4e1 * t545 * t217 - 0.4e1 * t209 * t138 * t256;
965: t690 = t6 * 0.3141592654e1;
966: t691 = ZA * t690;
967: t693 = t24 * t24;
968: t694 = t693 * xc;
969: t695 = t188 * t694;
970: t698 = t23 * ZA;
971: t699 = t698 * t690;
972: t700 = t699 * t5;
973: t704 = t5 * t4;
974: t705 = t691 * t704;
975: t709 = t691 * t5;
976: t713 = t5 * nz;
977: t714 = t713 * ZB;
978: t718 = t698 * t6;
979: t719 = t713 * t28;
980: t722 = t699 * t704;
981: t726 = t713 * t94;
982: t733 = t713 * t45;
983: t736 = t87 * t36;
984: t740 = -0.4e1 * t691 * t98 * t695 + 0.8e1 * t700 * t270 * t13 + 0.4e1 * t705 * t660 * xc + 0.8e1 * t709 * t660 * t128 + 0.2e1 * t87 * t714 * t110 + t718 * t719 * t110 - 0.4e1 * t722 * t237 * t13 - t313 * t726 * t45 - 0.4e1 * t699 * t704 * xc * t29 + t313 * t733 * t28 + 0.4e1 * t736 * t150 * t233;
985: t746 = t313 * t36;
986: t752 = t6 * t6;
987: t753 = t23 * t752;
988: t759 = t698 * t752;
989: t760 = t759 * t36;
990: t761 = t17 * t693;
991: t762 = xc * t28;
992: t763 = t761 * t762;
993: t766 = t87 * t713;
994: t773 = t699 * t4;
995: t774 = t110 * t693;
996: t775 = xc * t13;
997: t785 = t704 * t17;
998: t789 = -0.16e2 * t736 * t150 * t270 + t718 * t116 * t693 - 0.2e1 * t746 * t555 * t24 + 0.4e1 * t705 * t535 + 0.64e2 * t753 * t713 * t17 * t150 * t128 - 0.16e2 * t760 * t763 + 0.2e1 * t766 * t150 * t110 + 0.4e1 * t722 * t274 * xc + 0.4e1 * t773 * t774 * t775 - 0.8e1 * t766 * t150 * t17 + 0.8e1 * t700 * t233 * t775 + 0.4e1 * t699 * t785 * t13;
999: t791 = t691 * t4;
1000: t792 = t45 * t693;
1001: t793 = t49 * t792;
1002: t796 = t759 * t713;
1003: t797 = t53 * t28;
1004: t798 = t270 * t797;
1005: t801 = t87 * nz;
1006: t818 = t5 * t36;
1007: t819 = t753 * t818;
1008: t827 = t753 * t36 * ZB;
1009: t830 = xc * t45;
1010: t834 = -0.4e1 * t791 * t793 + 0.32e2 * t796 * t798 + 0.2e1 * t801 * ZB * t693 * t110 + 0.2e1 * t718 * t36 * t28 * t24 - 0.8e1 * t700 * t128 * t29 - 0.8e1 * t700 * t239 - 0.8e1 * t801 * t150 * t761 + 0.32e2 * t819 * t365 * t369 - 0.64e2 * t753 * t714 * t798 + 0.32e2 * t827 * t763 + 0.4e1 * t705 * t830 * t49;
1011: t842 = xc * t29;
1012: t843 = t270 * t842;
1013: t849 = t759 * t818;
1014: t853 = t691 * t396;
1015: t857 = t691 * t5 * t45;
1016: t869 = t313 * nz;
1017: t874 = -0.2e1 * t718 * t36 * t94 * t24 - 0.4e1 * t773 * t761 * t29 + 0.8e1 * t700 * t843 + 0.2e1 * t87 * t726 * ZB + 0.16e2 * t849 * t797 * t17 + 0.4e1 * t853 * t793 + 0.8e1 * t857 * t239 + 0.2e1 * t801 * t150 * t693 - 0.8e1 * t700 * t270 * t29 - 0.8e1 * t709 * t49 * t46 - t869 * t619 * t693 + t869 * t232 * t693;
1018: t877 = ZA * t752;
1019: t878 = t877 * t818;
1020: t911 = 0.16e2 * t878 * t53 * t45 * t365 - 0.4e1 * t699 * t785 * t29 - 0.4e1 * t705 * t188 * t830 + 0.2e1 * t801 * t94 * t693 * ZB - 0.8e1 * t857 * t843 - t718 * t726 + 0.4e1 * t773 * t761 * t13 - 0.4e1 * t705 * t775 * t555 + 0.2e1 * t746 * t232 * t233 - 0.16e2 * t878 * t830 * t365 - 0.2e1 * t746 * t619 * t24;
1021: t916 = t110 * t28;
1022: t945 = t28 * t693 * t45 * t17;
1023: t948 = 0.32e2 * t877 * t733 * t798 + 0.2e1 * t718 * t36 * t916 * t24 - 0.4e1 * t705 * t626 + t718 * nz * t916 * t693 - t869 * t792 * t110 - 0.4e1 * t773 * t761 * t775 + t718 * t719 + 0.2e1 * t746 * t232 * t24 - 0.16e2 * t849 * t365 * xc - t718 * t713 * t110 - 0.4e1 * t773 * t694 * t29 + 0.16e2 * t877 * t54 * t945;
1024: t974 = t761 * t797;
1025: t987 = 0.4e1 * t773 * t695 + 0.4e1 * t736 * t150 * t24 + 0.4e1 * t722 * t842 * t17 - 0.16e2 * t877 * t447 * t945 + 0.2e1 * t87 * t714 * t28 + t313 * t713 * t916 * t45 - 0.4e1 * t853 * t615 * t774 - 0.32e2 * t877 * t713 * xc * t324 + 0.16e2 * t760 * t974 + 0.4e1 * t736 * t94 * t24 * ZB + t869 * t792 * t916 - 0.8e1 * t691 * t5 * xc * t616;
1026: t1021 = -t718 * t169 * t693 - 0.32e2 * t827 * t974 + 0.2e1 * t801 * t150 * t774 + 0.4e1 * t791 * t188 * t792 + 0.4e1 * t736 * t220 * t24 + 0.4e1 * t791 * t842 * t792 + 0.8e1 * t709 * t660 * t270 - t718 * t335 * t693 - 0.2e1 * t718 * t36 * t110 * t24 - 0.32e2 * t819 * t797 * t471 - t313 * t733 * t110 - 0.32e2 * t796 * t270 * t762;
1028: _PC2A = (t147 - 0.4e1 * t65 * t217 + t418 + 0.2e1 * t150 * t222 + t327 - 0.2e1 * t149 * t19 + 0.2e1 * t335 * ZB * t24 * ZA - 0.16e2 * t312 * t313 * t355 * t59 - 0.4e1 * t281 * ZB * ZA * t597 - 0.2e1 * t505 * t45 * t281 * t58 - 0.4e1 * t211 * t2 * t53 * t76 + 0.8e1 * t305 * t286 - 0.4e1 * t122 * t499 - 0.4e1 * t331 * t332 + 0.8e1 * t345 * t177 * t60 - 0.2e1 * t142 * t177 * t82 + 0.2e1 * t72 * t281 * t415 + 0.4e1 * t349 * t96 * t41 - 0.2e1 * t81 * t64 * t76 + 0.2e1 * t58 * t80 * t59 + 0.8e1 * t345 * t177 * t41 - 0.4e1 * t8 * t499 + t242 + 0.4e1 * t8 * t518 + t625 + t685 + 0.2e1 * t328 * t174 + 0.2e1 * t331 * t455 - 0.2e1 * t33 * t2 * t4 * ZA * t82 - 0.4e1 * t626 * t191 + 0.16e2 * t364 * t373 - 0.2e1 * t621 * t597 - 0.2e1 * t439 * t568 + t492 + t533 * t96 + t232 * t96 + 0.2e1 * t567 * t441 + t561) / (t740 + t789 + t834 + t874 + t911 + t948 + t987 + t1021);
1029: /****************************************************************************************/
1030: t1 = nz * nz;
1031: t2 = t1 * nz;
1032: t3 = t2 * 0.3141592654e1;
1033: t4 = t3 * xc;
1034: t5 = ZB * ZB;
1035: t7 = PetscExpReal(nz * 0.3141592654e1);
1036: t8 = t7 * t7;
1037: t9 = t5 * t8;
1038: t12 = PetscExpReal(xc * nz * 0.3141592654e1);
1039: t13 = t12 * t12;
1040: t14 = t13 * t13;
1041: t15 = t14 * t13;
1042: t19 = nx * nx;
1043: t21 = nx * 0.3141592654e1;
1044: t22 = PetscSinReal(t21);
1045: t23 = t19 * nx * t22;
1046: t24 = t23 * 0.3141592654e1;
1047: t25 = ZA * ZB;
1048: t26 = t7 * t15;
1049: t27 = t25 * t26;
1050: t30 = t21 * xc;
1051: t31 = PetscSinReal(t30);
1052: t32 = t31 * nx;
1053: t33 = t32 * nz;
1054: t34 = ZA * ZA;
1055: t35 = t8 * t8;
1056: t36 = t34 * t35;
1057: t40 = t2 * t34;
1058: t41 = 0.3141592654e1 * t8;
1059: t42 = t41 * t15;
1060: t45 = t1 * t5;
1061: t46 = t14 * t14;
1062: t49 = t19 * t5;
1063: t51 = t19 * t46;
1064: t53 = t19 * t34;
1065: t55 = t8 * t7;
1066: t56 = t13 * t55;
1067: t57 = t25 * t56;
1068: t60 = t2 * nx;
1069: t61 = 0.3141592654e1 * 0.3141592654e1;
1070: t63 = t60 * t31 * t61;
1071: t64 = xc * xc;
1072: t65 = ZA * t64;
1073: t66 = ZB * t8;
1074: t67 = t14 * t12;
1075: t68 = t66 * t67;
1076: t69 = t65 * t68;
1077: t72 = -0.4e1 * t4 * t9 * t15 + 0.4e1 * t24 * t27 + 0.4e1 * t33 * t36 * t12 - 0.4e1 * t40 * t42 - t45 * t46 + t45 * t14 - t49 * t14 + t51 * t5 - t53 * t14 + 0.4e1 * t24 * t57 + 0.32e2 * t63 * t69;
1078: t73 = t1 * nx;
1079: t75 = t73 * t31 * 0.3141592654e1;
1080: t76 = t8 * t67;
1081: t77 = t25 * t76;
1082: t80 = t1 * t1;
1083: t81 = t80 * t34;
1084: t83 = t61 * t14;
1085: t87 = t1 * t19;
1086: t88 = PetscCosReal(t30);
1087: t90 = t87 * t88 * t61;
1088: t91 = t5 * t64;
1089: t92 = t13 * t12;
1090: t93 = t8 * t92;
1091: t94 = t91 * t93;
1092: t100 = ZB * t64 * ZA * t8 * t92;
1093: t103 = nz * t19;
1094: t105 = t103 * t88 * 0.3141592654e1;
1095: t106 = ZA * xc;
1096: t107 = ZB * t35;
1097: t109 = t106 * t107 * t12;
1098: t112 = t34 * xc;
1099: t113 = t112 * t93;
1100: t116 = t35 * t14;
1101: t118 = t1 * ZA;
1102: t119 = ZB * t14;
1103: t122 = t1 * t46;
1104: t125 = t19 * ZB;
1105: t126 = t35 * ZA;
1106: t127 = t125 * t126;
1107: t129 = t1 * ZB;
1108: t132 = -0.16e2 * t75 * t77 + 0.16e2 * t81 * t64 * t83 * t8 + 0.16e2 * t90 * t94 - 0.32e2 * t90 * t100 + 0.8e1 * t105 * t109 - 0.8e1 * t75 * t113 + t45 * t116 + 0.2e1 * t118 * t119 + 0.2e1 * t122 * t25 - 0.2e1 * t127 + 0.2e1 * t129 * t126;
1109: t134 = t1 * t34;
1110: t136 = t34 * t64;
1111: t137 = t136 * t76;
1112: t141 = t91 * t76;
1113: t145 = t103 * t34;
1114: t146 = 0.3141592654e1 * xc;
1115: t147 = t8 * t13;
1116: t153 = t14 * ZA;
1117: t156 = xc * t5;
1118: t157 = t156 * t93;
1119: t160 = t103 * t5;
1120: t162 = t146 * t8 * t15;
1121: t166 = t34 * t7 * t15;
1122: t169 = t134 * t116 - 0.16e2 * t63 * t137 - t49 * t116 - 0.16e2 * t63 * t141 - t53 * t116 + 0.4e1 * t145 * t146 * t147 - 0.2e1 * t51 * t25 - 0.2e1 * t125 * t153 - 0.16e2 * t75 * t157 + 0.4e1 * t160 * t162 - 0.4e1 * t24 * t166;
1123: t170 = t106 * t68;
1124: t177 = t35 * t92;
1125: t178 = t112 * t177;
1126: t181 = t156 * t76;
1127: t186 = t35 * t12;
1128: t187 = t112 * t186;
1129: t193 = t5 * 0.3141592654e1;
1130: t206 = t34 * t14;
1131: t207 = t206 * t7;
1132: t210 = -0.32e2 * t63 * t170 + 0.32e2 * t90 * t170 + 0.8e1 * t75 * t109 + 0.4e1 * t105 * t178 - 0.16e2 * t75 * t181 - 0.16e2 * t90 * t113 - 0.4e1 * t75 * t187 + 0.16e2 * t90 * t141 - 0.4e1 * t103 * t15 * t193 * xc + 0.16e2 * t73 * t22 * t34 * t146 * t26 + 0.4e1 * t32 * nz * t34 * t67 + 0.4e1 * t24 * t207;
1133: t217 = t106 * t66 * t92;
1134: t226 = t88 * t19 * nz;
1135: t227 = 0.3141592654e1 * t34;
1136: t229 = t227 * xc * t67;
1137: t232 = t73 * t31;
1138: t234 = t146 * t5 * t67;
1139: t238 = t61 * ZB;
1140: t239 = t14 * t8;
1141: t240 = t238 * t239;
1142: t243 = t136 * t93;
1143: t246 = -0.8e1 * t33 * t25 * t186 + 0.32e2 * t90 * t217 - t45 * t35 + t53 * t35 - t134 * t35 - t134 * t46 + t134 * t14 - 0.4e1 * t226 * t229 + 0.4e1 * t232 * t234 + 0.32e2 * t87 * t65 * t240 + 0.16e2 * t63 * t243;
1144: t247 = t14 * t92;
1145: t249 = t227 * t247 * xc;
1146: t254 = t73 * t22;
1147: t259 = t60 * t22 * t61;
1148: t260 = t112 * t26;
1149: t264 = t146 * t247 * t5;
1150: t268 = xc * t14;
1151: t274 = t5 * t14;
1152: t275 = t274 * t8;
1153: t280 = nz * nx;
1154: t281 = t280 * t22;
1155: t282 = t55 * t14;
1156: t283 = t25 * t282;
1157: t290 = ZA * t247 * xc * ZB;
1158: t295 = t22 * nx * t1 * 0.3141592654e1;
1159: t298 = -0.4e1 * t232 * t249 + 0.8e1 * t105 * t217 - 0.4e1 * t254 * t227 * t26 - 0.8e1 * t259 * t260 - 0.4e1 * t232 * t264 - 0.16e2 * t81 * t61 * t268 * t8 + 0.16e2 * t80 * t64 * t61 * t275 - 0.4e1 * t232 * t229 + 0.8e1 * t281 * t283 - 0.4e1 * t105 * t187 + 0.8e1 * t75 * t290 + 0.4e1 * t295 * t27;
1160: t301 = t61 * t5;
1161: t307 = t87 * t34;
1162: t312 = t61 * xc;
1163: t313 = t312 * t239;
1164: t317 = t34 * t55 * t14;
1165: t329 = ZB * t13 * t55;
1166: t330 = t65 * t329;
1167: t337 = -0.16e2 * t87 * t64 * t301 * t239 - 0.32e2 * t90 * t69 - 0.16e2 * t307 * t64 * t61 * t239 + 0.16e2 * t307 * t313 + 0.4e1 * t24 * t317 + t53 * t46 + t49 * t35 - 0.32e2 * t63 * t100 - 0.4e1 * t280 * t31 * t34 * t247 + 0.8e1 * t259 * t330 - 0.4e1 * t280 * t31 * t247 * t5;
1168: t340 = t5 * t35;
1169: t344 = t25 * t93;
1170: t356 = t41 * t13;
1171: t360 = t23 * nz * t61;
1172: t363 = t25 * t64 * t7 * t15;
1173: t366 = t156 * t177;
1174: t369 = t14 * t7;
1175: t370 = t25 * t369;
1176: t373 = t156 * t186;
1177: t378 = 0.4e1 * t24 * t283 + 0.4e1 * t33 * t340 * t12 - 0.16e2 * t75 * t344 - 0.4e1 * t280 * t31 * t5 * t67 + 0.8e1 * t33 * t25 * t247 + 0.32e2 * t63 * t217 + 0.4e1 * t40 * t356 - 0.8e1 * t360 * t363 + 0.4e1 * t75 * t366 + 0.4e1 * t295 * t370 - 0.4e1 * t75 * t373 - 0.4e1 * t105 * t366;
1178: t382 = t112 * t76;
1179: t387 = t80 * t61;
1180: t391 = t136 * t26;
1181: t409 = 0.16e2 * t63 * t382 + 0.4e1 * t226 * t234 - 0.16e2 * t387 * xc * t275 + 0.8e1 * t259 * t391 - 0.16e2 * t105 * t344 + 0.4e1 * t226 * t264 - 0.8e1 * t105 * t170 + 0.16e2 * t232 * t193 * t76 + 0.8e1 * t360 * t330 - 0.8e1 * t105 * t290 + 0.16e2 * t90 * t243;
1182: t423 = t153 * t8;
1183: t426 = t34 * t13;
1184: t427 = t426 * t55;
1185: t430 = t34 * t8;
1186: t437 = t80 * ZA;
1187: t441 = 0.4e1 * t145 * t42 - 0.16e2 * t90 * t157 + 0.24e2 * t75 * t217 + 0.4e1 * t226 * t249 + 0.4e1 * t254 * t227 * t282 + 0.4e1 * t160 * t356 - 0.8e1 * t129 * t423 - 0.8e1 * t281 * t427 - 0.8e1 * t33 * t430 * t67 + 0.8e1 * t33 * t430 * t92 + 0.32e2 * t437 * ZB * t313;
1188: t453 = t106 * ZB * t7 * t15;
1189: t456 = t2 * t5;
1190: t459 = t112 * t56;
1191: t462 = t126 * t14;
1192: t474 = t40 * 0.3141592654e1;
1193: t475 = xc * t8;
1194: t480 = t146 * t13 * t35;
1195: t483 = -0.4e1 * t103 * xc * t193 * t147 + 0.16e2 * t87 * t61 * t156 * t239 + 0.8e1 * t259 * t453 - 0.4e1 * t456 * t356 + 0.8e1 * t259 * t459 - 0.2e1 * t125 * t462 - 0.8e1 * t281 * t207 + 0.16e2 * t295 * t459 - 0.8e1 * t60 * t22 * ZA * t312 * t329 + 0.4e1 * t474 * t475 * t15 + 0.4e1 * t160 * t480;
1196: t497 = t136 * t56;
1197: t504 = t9 * t13;
1198: t509 = t475 * t13;
1199: t512 = -0.8e1 * t105 * t113 - 0.4e1 * t254 * t227 * t56 + 0.8e1 * t281 * t57 + 0.4e1 * t295 * t283 + 0.2e1 * t129 * t462 + 0.4e1 * t24 * t370 - 0.8e1 * t360 * t497 - 0.4e1 * t24 * t427 - 0.4e1 * t145 * t162 + 0.4e1 * t4 * t504 - 0.8e1 * t281 * t370 - 0.4e1 * t474 * t509;
1200: t528 = t5 * t13;
1201: t529 = t528 * t35;
1202: t532 = t106 * t329;
1203: t542 = -0.16e2 * t295 * t453 - 0.32e2 * t437 * t64 * t240 + 0.8e1 * t281 * t317 + 0.24e2 * t75 * t170 - 0.4e1 * t75 * t178 + 0.8e1 * t360 * t453 - 0.4e1 * t4 * t529 - 0.16e2 * t295 * t532 - 0.8e1 * t33 * t344 - 0.16e2 * t90 * t181 + 0.4e1 * t33 * t340 * t92;
1204: t557 = t146 * t15;
1205: t562 = xc * t15;
1206: t563 = t562 * t5;
1207: t573 = 0.16e2 * t232 * t193 * t93 - 0.8e1 * t259 * t363 - 0.8e1 * t259 * t497 + 0.8e1 * t33 * t77 + 0.8e1 * t360 * t391 + 0.4e1 * t254 * t227 * t369 + 0.4e1 * t145 * t557 + 0.8e1 * t281 * t166 + 0.4e1 * t3 * t563 + 0.8e1 * t105 * t382 - 0.4e1 * t145 * t480 - 0.4e1 * t33 * t36 * t92;
1208: t600 = 0.4e1 * t456 * t42 - 0.8e1 * t360 * t260 - 0.4e1 * t40 * t557 - 0.4e1 * t105 * t373 + 0.16e2 * t226 * t227 * t93 - 0.16e2 * t90 * t382 - 0.4e1 * t145 * t356 - 0.16e2 * t63 * t157 - 0.32e2 * t87 * t25 * t313 - 0.16e2 * t226 * t227 * t76 - 0.16e2 * t63 * t113;
1209: t623 = xc * t13;
1210: t627 = 0.8e1 * t125 * t423 - 0.8e1 * t360 * t532 + 0.16e2 * t90 * t137 - 0.4e1 * t160 * t42 + 0.16e2 * t63 * t94 + 0.16e2 * t63 * t181 - 0.8e1 * t281 * t27 - 0.8e1 * t75 * t382 + 0.8e1 * t360 * t459 + 0.4e1 * t295 * t57 + 0.16e2 * t105 * t77 + 0.4e1 * t474 * t623 * t35;
1211: t632 = t61 * 0.3141592654e1;
1212: t633 = t632 * t8;
1213: t634 = t80 * nz;
1214: t638 = t632 * t634;
1215: t639 = t638 * xc;
1216: t642 = t61 * t34;
1217: t643 = t122 * t19;
1218: t649 = t61 * t61;
1219: t650 = t649 * t1;
1220: t652 = t19 * t19;
1221: t653 = t14 * t652;
1222: t654 = t653 * t9;
1223: t657 = t14 * t1;
1224: t658 = t657 * t19;
1225: t665 = t632 * t34;
1226: t666 = t665 * t2;
1227: t667 = t8 * t19;
1228: t668 = t667 * t623;
1229: t674 = t665 * nz;
1230: t675 = t652 * xc;
1231: t682 = 0.8e1 * t633 * t426 * t634 - 0.8e1 * t639 * t529 - 0.4e1 * t642 * t643 + 0.2e1 * t642 * t116 * t80 + 0.32e2 * t650 * t64 * t654 + 0.4e1 * t301 * t658 + 0.4e1 * t387 * t46 * ZA * ZB - 0.16e2 * t666 * t668 - 0.16e2 * t666 * t667 * t15 - 0.8e1 * t674 * t675 * t15 + 0.4e1 * t238 * t153 * t80;
1232: t683 = t46 * t652;
1233: t686 = t633 * t15;
1234: t691 = t35 * t80;
1235: t698 = t35 * t652;
1236: t705 = t14 * t80;
1237: t708 = t61 * t35;
1238: t717 = -0.2e1 * t642 * t683 - 0.8e1 * t686 * t5 * t634 * xc - 0.2e1 * t301 * t691 + 0.8e1 * t638 * t563 - 0.2e1 * t642 * t691 - 0.2e1 * t642 * t698 - 0.2e1 * t301 * t698 - 0.2e1 * t301 * t683 + 0.2e1 * t642 * t705 + 0.2e1 * t708 * t274 * t80 + 0.2e1 * t301 * t653 - 0.2e1 * t642 * t80 * t46;
1239: t727 = t61 * t46;
1240: t737 = t649 * t34;
1241: t738 = t737 * t1;
1242: t739 = t8 * t652;
1243: t740 = t739 * t268;
1244: t746 = t61 * ZA;
1245: t754 = t632 * nz * xc;
1246: t758 = 0.2e1 * t301 * t705 + 0.2e1 * t642 * t653 - 0.8e1 * t665 * xc * t634 * t15 - 0.2e1 * t727 * t5 * t80 - 0.32e2 * t650 * xc * t654 + 0.2e1 * t301 * t698 * t14 - 0.32e2 * t738 * t740 + 0.8e1 * t674 * t739 * t562 + 0.4e1 * t746 * t119 * t652 + 0.8e1 * t674 * t698 * t623 - 0.8e1 * t754 * t528 * t698;
1247: t762 = t633 * t13;
1248: t764 = t5 * nz * t652;
1249: t767 = t80 * t1;
1250: t768 = t649 * t767;
1251: t772 = t649 * ZA;
1252: t773 = t772 * t129;
1253: t777 = t35 * t1 * t19;
1254: t780 = t632 * t5;
1255: t781 = t780 * t15;
1256: t786 = t698 * ZA;
1257: t790 = t64 * t14;
1258: t800 = t649 * t8;
1259: t809 = 0.4e1 * t238 * t126 * t80 - 0.8e1 * t762 * t764 - 0.32e2 * t768 * xc * t275 + 0.64e2 * t773 * t740 - 0.4e1 * t301 * t777 - 0.8e1 * t781 * nz * t8 * t675 + 0.4e1 * t238 * t786 + 0.32e2 * t768 * t34 * t790 * t8 - 0.8e1 * t633 * t528 * t634 + 0.8e1 * t754 * t528 * t739 + 0.128e3 * t800 * t119 * t80 * t19 * t106 + 0.8e1 * t674 * t739 * t13;
1260: t812 = t649 * t80;
1261: t817 = t83 * ZB;
1262: t824 = t746 * ZB;
1263: t828 = t800 * t14;
1264: t855 = -0.64e2 * t812 * xc * t274 * t667 + 0.4e1 * t817 * t786 + 0.4e1 * t727 * ZA * t652 * ZB - 0.32e2 * t824 * t657 * t667 - 0.32e2 * t828 * t34 * t767 * xc - 0.8e1 * t633 * t15 * t34 * t634 - 0.8e1 * t674 * t739 * t15 + 0.32e2 * t768 * t64 * t275 + 0.4e1 * t708 * t14 * t307 + 0.2e1 * t708 * t206 * t652 + 0.8e1 * t632 * t35 * t13 * t34 * t634 * xc;
1265: t858 = t35 * t19;
1266: t873 = t2 * t8;
1267: t878 = t61 * t1;
1268: t901 = -0.16e2 * t632 * t2 * xc * t528 * t858 + 0.8e1 * t824 * t658 + 0.4e1 * t301 * t14 * t777 - 0.8e1 * t665 * t634 * t509 - 0.8e1 * t674 * t739 * t623 - 0.16e2 * t781 * t873 * t19 * xc + 0.8e1 * t878 * t14 * t127 + 0.8e1 * t878 * ZA * t51 * ZB + 0.8e1 * t686 * t764 + 0.8e1 * t665 * xc * t634 * t15 * t8 + 0.8e1 * t633 * t15 * t5 * t634 + 0.4e1 * t387 * t14 * t107 * ZA;
1269: t903 = t739 * t790;
1270: t923 = t737 * t80;
1271: t924 = t667 * t790;
1272: t927 = t780 * t2;
1273: t937 = t15 * t19 * xc;
1274: t943 = 0.32e2 * t738 * t903 + 0.16e2 * t781 * t873 * t19 + 0.8e1 * t754 * t15 * t652 * t5 + 0.16e2 * t666 * t858 * t623 + 0.64e2 * t828 * t25 * t767 * xc - 0.16e2 * t762 * t456 * t19 + 0.64e2 * t923 * t924 + 0.16e2 * t927 * t668 - 0.64e2 * t768 * ZA * t790 * t66 - 0.64e2 * t773 * t903 + 0.16e2 * t927 * t937 + 0.16e2 * t666 * t667 * t562;
1275: t977 = 0.64e2 * t812 * t5 * t924 + 0.8e1 * t639 * t504 + 0.8e1 * t238 * t35 * t118 * t19 + 0.4e1 * t642 * t658 - 0.16e2 * t817 * t437 * t8 - 0.128e3 * t772 * ZB * t80 * t924 + 0.16e2 * t666 * t667 * t13 - 0.4e1 * t301 * t643 - 0.16e2 * t824 * t653 * t8 - 0.4e1 * t642 * t777 - 0.64e2 * t923 * t667 * t268 - 0.16e2 * t666 * t937;
1277: _PC3A = (t72 + t132 + t169 + t210 + t246 + t298 + t337 + t378 + t409 + t441 + t483 + t512 + t542 + t573 + t600 + t627) / (t682 + t717 + t758 + t809 + t855 + t901 + t943 + t977);
1278: /****************************************************************************************/
1279: _PC4A = 0;
1280: /****************************************************************************************/
1281: t1 = nx * 0.3141592654e1;
1282: t2 = t1 * xc;
1283: t3 = PetscCosReal(t2);
1284: t4 = nx * nx;
1285: t6 = nz * 0.3141592654e1;
1286: t7 = t3 * t4 * t6;
1287: t8 = ZA * ZB;
1288: t9 = PetscExpReal(t6);
1289: t10 = t9 * t9;
1290: t11 = xc * nz;
1291: t13 = PetscExpReal(t11 * 0.3141592654e1);
1292: t14 = t13 * t13;
1293: t15 = t14 * t13;
1294: t16 = t14 * t14;
1295: t17 = t16 * t15;
1296: t18 = t10 * t17;
1297: t19 = t8 * t18;
1298: t22 = PetscSinReal(t2);
1299: t23 = nx * t22;
1300: t24 = t23 * nz;
1301: t25 = ZB * ZB;
1302: t30 = nz * nz;
1303: t31 = t30 * nz;
1304: t32 = t31 * nx;
1305: t33 = 0.3141592654e1 * 0.3141592654e1;
1306: t35 = t32 * t22 * t33;
1307: t36 = ZA * ZA;
1308: t37 = t36 * xc;
1309: t38 = t16 * t13;
1310: t39 = t10 * t38;
1311: t40 = t37 * t39;
1312: t43 = PetscSinReal(t1);
1313: t44 = nx * t43;
1314: t45 = t30 * 0.3141592654e1;
1315: t46 = t44 * t45;
1316: t47 = ZA * xc;
1317: t49 = ZB * t16 * t9;
1318: t54 = t4 * nx * t43;
1319: t55 = xc * xc;
1320: t57 = t54 * t30 * t55;
1321: t58 = t33 * 0.3141592654e1;
1322: t59 = t58 * t25;
1323: t60 = t16 * t9;
1324: t61 = t59 * t60;
1325: t64 = xc * t25;
1326: t65 = t14 * t9;
1327: t66 = t64 * t65;
1328: t70 = t44 * t31 * t33;
1329: t71 = t37 * t65;
1330: t74 = t10 * t15;
1331: t75 = t64 * t74;
1332: t78 = t25 * t10;
1333: t83 = t54 * nz * t33;
1334: t84 = t55 * t25;
1335: t85 = t10 * t9;
1336: t86 = t14 * t85;
1337: t87 = t84 * t86;
1338: t90 = t30 * t30;
1339: t92 = t44 * t90 * t58;
1340: t93 = t55 * xc;
1341: t94 = t93 * t25;
1342: t95 = t85 * t16;
1343: t96 = t94 * t95;
1344: t102 = t23 * t45;
1345: t103 = t10 * t10;
1346: t104 = ZB * t103;
1347: t106 = t47 * t104 * t15;
1348: t111 = t54 * 0.3141592654e1;
1349: t112 = t25 * t85;
1350: t113 = t112 * t16;
1351: t115 = t8 * t39;
1352: t118 = t16 * t14;
1353: t119 = t85 * t118;
1354: t120 = t37 * t119;
1355: t123 = t16 * t16;
1356: t124 = t36 * t123;
1357: t125 = t124 * t9;
1358: t127 = -0.8e1 * t7 * t19 + 0.2e1 * t24 * t25 * t13 * t10 - 0.16e2 * t35 * t40 - 0.16e2 * t46 * t47 * t49 - 0.8e1 * t57 * t61 + 0.4e1 * t46 * t66 + 0.2e1 * t70 * t71 - 0.16e2 * t35 * t75 + 0.6e1 * t24 * t78 * t38 - 0.2e1 * t83 * t87 - 0.8e1 * t92 * t96 - 0.8e1 * t46 * t37 * t95 - 0.12e2 * t102 * t106 + 0.2e1 * t83 * t71 + t111 * t113 + 0.8e1 * t7 * t115 + 0.2e1 * t83 * t120 + t111 * t125;
1359: t128 = t37 * t74;
1360: t131 = t44 * nz;
1361: t133 = t25 * t9 * t118;
1362: t136 = t36 * t14;
1363: t137 = t136 * t9;
1364: t140 = t30 * t4;
1365: t142 = t140 * t3 * t33;
1366: t143 = t64 * t39;
1367: t147 = t30 * nx * t43;
1368: t148 = 0.3141592654e1 * t36;
1369: t149 = t9 * t118;
1370: t153 = t44 * t31 * ZA;
1371: t154 = t33 * xc;
1372: t155 = t154 * t49;
1373: t160 = ZA * t17 * xc * ZB;
1374: t163 = t103 * t13;
1375: t164 = t64 * t163;
1376: t170 = t44 * t90 * t55;
1377: t171 = t58 * ZB;
1378: t172 = ZA * t16;
1379: t174 = t171 * t172 * t9;
1380: t177 = t36 * t55;
1381: t178 = t177 * t149;
1382: t181 = t54 * t11;
1383: t182 = t33 * t25;
1384: t186 = t25 * t14;
1385: t187 = t186 * t9;
1386: t193 = t186 * t85;
1387: t198 = ZB * t55;
1388: t199 = ZA * t103;
1389: t201 = t198 * t199 * t15;
1390: t204 = 0.2e1 * t7 * t128 - 0.2e1 * t131 * t133 - 0.2e1 * t131 * t137 + 0.16e2 * t142 * t143 - t147 * t148 * t149 + 0.8e1 * t153 * t155 - 0.4e1 * t7 * t160 + 0.2e1 * t7 * t164 + 0.10e2 * t102 * t40 + 0.16e2 * t170 * t174 + 0.2e1 * t83 * t178 - 0.2e1 * t181 * t182 * t65 - t111 * t187 - 0.2e1 * t70 * t87 + 0.4e1 * t102 * t160 - 0.2e1 * t131 * t193 - 0.16e2 * t142 * t75 + 0.16e2 * t35 * t201;
1391: t210 = t32 * t22;
1392: t211 = t33 * t55;
1393: t212 = t25 * t38;
1394: t213 = t211 * t212;
1395: t216 = nz * nx;
1396: t217 = t22 * t25;
1397: t222 = ZB * t85 * t16;
1398: t226 = t23 * t30;
1399: t227 = t13 * t10;
1400: t228 = t148 * t227;
1401: t233 = t37 * t163;
1402: t237 = nz * t4 * t3;
1403: t238 = t148 * t74;
1404: t241 = t64 * t86;
1405: t245 = t148 * xc * t15;
1406: t248 = t112 * t118;
1407: t250 = t22 * t36;
1408: t256 = 0.3141592654e1 * t25;
1409: t257 = t256 * t39;
1410: t262 = t38 * t103;
1411: t263 = t37 * t262;
1412: t267 = t148 * t17 * xc;
1413: t270 = -0.6e1 * t7 * t143 - 0.4e1 * t24 * t19 - 0.8e1 * t210 * t213 - 0.2e1 * t216 * t217 * t15 - 0.32e2 * t153 * t211 * t222 + 0.4e1 * t226 * t228 + 0.16e2 * t142 * t201 + 0.2e1 * t7 * t233 - 0.4e1 * t237 * t238 - 0.2e1 * t83 * t241 - 0.2e1 * t237 * t245 + t111 * t248 + 0.2e1 * t216 * t250 * t15 - 0.2e1 * t131 * t125 - 0.4e1 * t226 * t257 + t147 * t148 * t95 - 0.2e1 * t102 * t263 + 0.2e1 * t237 * t267;
1414: t273 = t37 * t149;
1415: t277 = t47 * t104 * t13;
1416: t285 = t31 * t36;
1417: t286 = t44 * t285;
1418: t291 = t25 * t123 * t9;
1419: t304 = 0.3141592654e1 * xc;
1420: t305 = t304 * t212;
1421: t312 = t256 * t18;
1422: t315 = t8 * t60;
1423: t319 = t54 * t30 * t58;
1424: t323 = t90 * t36;
1425: t324 = t44 * t323;
1426: t325 = t55 * t58;
1427: t326 = t325 * t60;
1428: t329 = 0.2e1 * t102 * t164 + 0.2e1 * t83 * t273 - 0.4e1 * t102 * t277 - 0.2e1 * t7 * t263 + 0.4e1 * t24 * t8 * t17 - 0.4e1 * t286 * t154 * t60 - 0.2e1 * t131 * t291 - t147 * t148 * t119 + 0.2e1 * t24 * t78 * t17 + 0.2e1 * t54 * t85 * 0.3141592654e1 * ZA * ZB - 0.4e1 * t226 * t305 - 0.2e1 * t70 * t66 + t147 * t256 * t95 + 0.4e1 * t237 * t312 + 0.2e1 * t111 * t315 - 0.8e1 * t319 * t96 - t111 * t193 - 0.8e1 * t324 * t326;
1429: t332 = t8 * t95;
1430: t335 = t136 * t85;
1431: t337 = t256 * t227;
1432: t340 = t177 * t119;
1433: t346 = t37 * t86;
1434: t351 = t103 * t15;
1435: t352 = t177 * t351;
1436: t355 = t64 * t119;
1437: t358 = t8 * t227;
1438: t361 = t85 * 0.3141592654e1;
1439: t365 = t84 * t39;
1440: t372 = ZB * t10;
1441: t373 = t372 * t38;
1442: t374 = t47 * t373;
1443: t379 = t177 * t39;
1444: t384 = -0.2e1 * t46 * t332 + t111 * t335 + 0.4e1 * t237 * t337 - 0.2e1 * t83 * t340 + 0.16e2 * t286 * t211 * t95 + 0.2e1 * t70 * t346 - 0.8e1 * t170 * t61 - 0.8e1 * t142 * t352 - 0.2e1 * t83 * t355 - 0.4e1 * t24 * t358 + 0.2e1 * t147 * t361 * t8 + 0.8e1 * t35 * t365 - 0.2e1 * t226 * t267 + 0.8e1 * t102 * t115 - 0.12e2 * t102 * t374 + 0.16e2 * t142 * t40 - 0.8e1 * t142 * t379 + 0.4e1 * t237 * t228;
1445: t386 = t54 * t30 * t93;
1446: t387 = ZA * t85;
1447: t389 = t171 * t387 * t16;
1448: t394 = t64 * t60;
1449: t398 = t304 * t25 * t15;
1450: t401 = t361 * t25;
1451: t405 = t84 * t65;
1452: t410 = t148 * t18;
1453: t414 = t25 * t16 * t9;
1454: t417 = t84 * t74;
1455: t422 = t177 * t86;
1456: t428 = ZB * t38;
1457: t429 = t47 * t428;
1458: t432 = t148 * t39;
1459: t439 = 0.16e2 * t386 * t389 - 0.16e2 * t386 * t174 + 0.8e1 * t46 * t394 + 0.2e1 * t237 * t398 - t147 * t401 + 0.4e1 * t7 * t374 + 0.2e1 * t83 * t405 - 0.4e1 * t46 * t241 - 0.4e1 * t226 * t410 + 0.2e1 * t131 * t414 + 0.8e1 * t35 * t417 - 0.8e1 * t142 * t365 + 0.2e1 * t70 * t422 - 0.4e1 * t181 * t182 * t60 + 0.12e2 * t102 * t429 - 0.4e1 * t226 * t432 + 0.32e2 * t35 * t374 - 0.4e1 * t7 * t106;
1460: t442 = t36 * t9 * t118;
1461: t444 = t123 * t9;
1462: t445 = t8 * t444;
1463: t448 = t361 * t36;
1464: t451 = t47 * t372 * t17;
1465: t454 = t94 * t60;
1466: t457 = t25 * t103;
1467: t465 = t47 * t372 * t15;
1468: t468 = t36 * t85;
1469: t469 = t468 * t16;
1470: t474 = t43 * t85;
1471: t478 = t8 * t74;
1472: t484 = t256 * t74;
1473: t489 = t198 * ZA * t10 * t15;
1474: t501 = -t111 * t442 + 0.4e1 * t131 * t445 - t147 * t448 + 0.4e1 * t7 * t451 + 0.8e1 * t92 * t454 - 0.2e1 * t24 * t457 * t13 - 0.2e1 * t286 * t211 * t65 + 0.4e1 * t7 * t465 + t111 * t469 - 0.2e1 * t216 * t250 * t17 - 0.2e1 * t216 * t474 * t25 - 0.4e1 * t24 * t478 + 0.4e1 * t24 * t8 * t38 + 0.4e1 * t226 * t484 - 0.16e2 * t142 * t489 - 0.2e1 * t24 * t212 * t103 - 0.2e1 * t216 * t22 * t17 * t25 + 0.2e1 * t70 * t120;
1475: t504 = t33 * t36 * t55 * t38;
1476: t507 = t37 * t18;
1477: t512 = t47 * ZB * t13 * t10;
1478: t518 = t59 * t95;
1479: t530 = t84 * t351;
1480: t534 = t37 * t227;
1481: t549 = -0.8e1 * t210 * t504 + 0.2e1 * t102 * t507 + 0.4e1 * t7 * t512 + t111 * t133 - 0.16e2 * t35 * t489 + 0.8e1 * t170 * t518 + 0.2e1 * t24 * t36 * t13 * t10 + 0.4e1 * t131 * t387 * ZB + 0.12e2 * t102 * t465 - 0.8e1 * t142 * t530 + t111 * t291 - 0.2e1 * t102 * t534 - 0.4e1 * t70 * t394 - 0.10e2 * t102 * t128 + 0.4e1 * t237 * t305 + 0.8e1 * t102 * t19 + 0.2e1 * t83 * t346 - 0.16e2 * t35 * t128;
1482: t557 = t468 * t118;
1483: t562 = t93 * t58;
1484: t563 = t562 * t60;
1485: t567 = t44 * t90 * t93;
1486: t575 = ZA * t55;
1487: t576 = t575 * t428;
1488: t583 = t37 * t60;
1489: t590 = t140 * t3;
1490: t601 = -0.2e1 * t226 * t398 - 0.2e1 * t70 * t340 - 0.2e1 * t131 * t557 - 0.4e1 * t24 * t115 + 0.8e1 * t324 * t563 + 0.16e2 * t567 * t389 + 0.16e2 * t70 * t84 * t95 + 0.2e1 * t70 * t178 - 0.16e2 * t142 * t576 - 0.4e1 * t237 * t257 - 0.4e1 * t226 * t312 + 0.8e1 * t46 * t583 + 0.2e1 * t24 * t36 * t38 * t103 + 0.8e1 * t590 * t213 + 0.2e1 * t102 * t143 - 0.16e2 * t35 * t143 + 0.2e1 * t131 * t248 + 0.4e1 * t46 * t346;
1491: t604 = nz * t36;
1492: t606 = t154 * t95;
1493: t625 = t36 * t103;
1494: t640 = t30 * t36;
1495: t641 = t54 * t640;
1496: t642 = t325 * t95;
1497: t647 = -0.4e1 * t131 * t315 - 0.4e1 * t54 * t604 * t606 - t147 * t148 * t60 + 0.16e2 * t35 * t576 - 0.8e1 * t102 * t478 + 0.32e2 * t142 * t465 - 0.4e1 * t237 * t484 - 0.2e1 * t70 * t355 + 0.2e1 * t70 * t273 + 0.2e1 * t102 * t233 - 0.2e1 * t24 * t625 * t13 - 0.8e1 * t7 * t358 - 0.2e1 * t111 * t445 - 0.4e1 * t7 * t429 + 0.16e2 * t46 * t47 * t222 + 0.2e1 * t131 * t113 + 0.8e1 * t641 * t642 - 0.2e1 * t7 * t534;
1498: t652 = t36 * t16;
1499: t653 = t652 * t9;
1500: t655 = t64 * t227;
1501: t658 = t182 * t95;
1502: t663 = t562 * t95;
1503: t684 = t64 * t351;
1504: t689 = t36 * t10;
1505: t695 = t154 * t222;
1506: t698 = -0.4e1 * t216 * t217 * t38 - t111 * t653 - 0.2e1 * t7 * t655 - 0.4e1 * t181 * t658 + 0.2e1 * t131 * t469 - 0.8e1 * t641 * t663 - 0.4e1 * t83 * t583 - 0.2e1 * t83 * t177 * t65 - 0.4e1 * t24 * t457 * t15 + 0.16e2 * t70 * t84 * t60 + 0.8e1 * t57 * t518 - 0.32e2 * t142 * t374 + 0.4e1 * t24 * t8 * t351 + 0.4e1 * t102 * t684 - t147 * t256 * t86 - 0.2e1 * t24 * t689 * t15 - 0.2e1 * t70 * t241 + 0.8e1 * t153 * t695;
1507: t711 = t575 * t373;
1508: t717 = t304 * t17 * t25;
1509: t736 = t177 * t74;
1510: t739 = 0.2e1 * t226 * t245 - 0.8e1 * t102 * t358 - 0.16e2 * t57 * t389 - 0.2e1 * t102 * t655 + 0.8e1 * t590 * t504 - 0.8e1 * t641 * t326 - 0.16e2 * t35 * t711 - t111 * t557 + t111 * t137 - 0.2e1 * t226 * t717 + 0.8e1 * t102 * t37 * t351 + 0.2e1 * t131 * t335 - 0.4e1 * t131 * t332 - 0.2e1 * t216 * t474 * t36 - 0.2e1 * t111 * t332 + 0.16e2 * t142 * t711 - t147 * t256 * t60 + 0.8e1 * t142 * t736;
1511: t750 = t64 * t262;
1512: t763 = t44 * t640;
1513: t770 = t84 * t119;
1514: t782 = 0.4e1 * t102 * t512 + 0.8e1 * t142 * t417 + 0.8e1 * t641 * t563 - 0.2e1 * t7 * t507 + 0.2e1 * t7 * t750 - 0.8e1 * t35 * t352 + 0.4e1 * t237 * t410 + 0.4e1 * t7 * t684 - 0.2e1 * t46 * t445 + t147 * t148 * t65 + 0.4e1 * t763 * t304 * t119 + 0.16e2 * t70 * t177 * t60 + 0.2e1 * t70 * t770 - t111 * t414 - 0.16e2 * t567 * t174 - 0.4e1 * t46 * t71 - 0.4e1 * t46 * t355 - 0.4e1 * t7 * t277;
1515: t797 = t64 * t149;
1516: t821 = -t54 * t448 + 0.2e1 * t131 * t442 + 0.8e1 * t7 * t478 + 0.8e1 * t35 * t379 - 0.2e1 * t181 * t182 * t149 + 0.2e1 * t70 * t405 + 0.2e1 * t83 * t770 - 0.2e1 * t70 * t797 - 0.6e1 * t7 * t75 - 0.4e1 * t286 * t606 - 0.4e1 * t237 * t432 + t147 * t256 * t149 - 0.4e1 * t763 * t304 * t149 - 0.2e1 * t102 * t75 + 0.2e1 * t237 * t717 + 0.8e1 * t324 * t642 - 0.16e2 * t170 * t389 + 0.2e1 * t83 * t422;
1517: t827 = t84 * t149;
1518: t846 = t54 * nz * ZA;
1519: t854 = t64 * t18;
1520: t867 = -0.16e2 * t142 * t128 + 0.32e2 * t35 * t465 - 0.2e1 * t83 * t827 + 0.2e1 * t46 * t315 + t147 * t148 * t86 - 0.4e1 * t102 * t451 - 0.8e1 * t226 * t148 * xc * t38 - 0.2e1 * t24 * t689 * t38 + 0.2e1 * t131 * t187 + 0.8e1 * t846 * t155 + 0.8e1 * t35 * t736 + 0.2e1 * t24 * t689 * t17 - 0.2e1 * t7 * t854 + t147 * t256 * t119 + 0.2e1 * t102 * t854 - 0.8e1 * t35 * t530 + 0.4e1 * t46 * t797 + 0.2e1 * t102 * t750;
1521: t909 = -0.8e1 * t324 * t663 + t147 * t256 * t444 - t147 * t256 * t65 + 0.4e1 * t226 * t238 + 0.2e1 * t7 * t40 - t54 * t401 + 0.16e2 * t57 * t174 + 0.4e1 * t226 * t337 + 0.4e1 * t24 * t8 * t163 + 0.8e1 * t846 * t695 + 0.8e1 * t319 * t454 + 0.2e1 * t131 * t653 - 0.8e1 * t46 * t64 * t95 + 0.6e1 * t24 * t78 * t15 - 0.4e1 * t44 * t31 * xc * t658 - 0.32e2 * t153 * t211 * t49 - 0.2e1 * t70 * t827 + t147 * t148 * t444;
1522: t914 = t25 * ZB;
1523: t915 = t33 * t914;
1524: t919 = t4 * t4;
1525: t920 = t16 * t919;
1526: t929 = t123 * t90;
1527: t932 = t919 * t103;
1528: t935 = t33 * ZB;
1529: t939 = t652 * t919;
1530: t942 = t16 * t30;
1531: t943 = t942 * t4;
1532: t949 = t103 * t16;
1533: t950 = t949 * t90;
1534: t953 = -0.2e1 * t915 * t103 * t90 + 0.2e1 * t915 * t920 - 0.2e1 * t915 * t123 * t919 + 0.2e1 * t915 * t16 * t90 - 0.2e1 * t915 * t929 - 0.2e1 * t915 * t932 - 0.2e1 * t935 * t323 * t123 + 0.2e1 * t935 * t939 + 0.4e1 * t915 * t943 + 0.4e1 * t182 * t172 * t90 + 0.2e1 * t915 * t950;
1535: t954 = t171 * t36;
1536: t955 = t90 * nz;
1537: t956 = xc * t955;
1538: t957 = t118 * t10;
1539: t964 = t33 * t33;
1540: t965 = t964 * ZB;
1541: t966 = t965 * t640;
1542: t967 = t10 * t919;
1543: t968 = t55 * t16;
1544: t969 = t967 * t968;
1545: t972 = t935 * t36;
1546: t974 = t103 * t30 * t4;
1547: t977 = xc * t16;
1548: t978 = t967 * t977;
1549: t981 = t90 * t30;
1550: t983 = t16 * t10;
1551: t987 = t182 * ZA;
1552: t988 = t4 * t10;
1553: t992 = t171 * t604;
1554: t993 = xc * t14;
1555: t994 = t932 * t993;
1556: t997 = t182 * t30;
1557: t1005 = t171 * t285;
1558: t1006 = t988 * t993;
1559: t1009 = t58 * t914;
1560: t1010 = t1009 * t31;
1561: t1013 = 0.8e1 * t954 * t956 * t957 + 0.2e1 * t915 * t932 * t16 + 0.32e2 * t966 * t969 - 0.4e1 * t972 * t974 - 0.32e2 * t966 * t978 + 0.32e2 * t965 * t981 * t177 * t983 - 0.32e2 * t987 * t942 * t988 + 0.8e1 * t992 * t994 + 0.8e1 * t997 * t949 * ZA * t4 - 0.2e1 * t935 * t124 * t919 - 0.16e2 * t1005 * t1006 + 0.16e2 * t1010 * t1006;
1562: t1015 = t964 * t25;
1563: t1016 = ZA * t30;
1564: t1017 = t1015 * t1016;
1565: t1020 = t967 * t993;
1566: t1031 = t1009 * t118;
1567: t1032 = t31 * t10;
1568: t1040 = t964 * t914;
1569: t1041 = t1040 * t90;
1570: t1044 = t55 * t10 * t4 * t16;
1571: t1047 = t1040 * t30;
1572: t1050 = t123 * ZA;
1573: t1054 = t977 * t988;
1574: t1057 = 0.64e2 * t1017 * t978 - 0.8e1 * t992 * t1020 + 0.2e1 * t972 * t950 + 0.4e1 * t182 * t929 * ZA + 0.4e1 * t182 * t199 * t90 - 0.16e2 * t1031 * t1032 * t4 * xc + 0.4e1 * t182 * t172 * t919 + 0.64e2 * t1041 * t1044 + 0.32e2 * t1047 * t969 + 0.4e1 * t182 * t1050 * t919 - 0.64e2 * t1041 * t1054;
1575: t1058 = t1009 * nz;
1576: t1063 = t932 * ZA;
1577: t1069 = t123 * t30 * t4;
1578: t1080 = t993 * t103 * t4;
1579: t1088 = t935 * t103;
1580: t1094 = -0.8e1 * t1058 * t994 - 0.32e2 * t1047 * t978 + 0.4e1 * t182 * t1063 - 0.4e1 * t915 * t974 - 0.4e1 * t915 * t1069 - 0.2e1 * t935 * t625 * t90 - 0.8e1 * t1009 * t10 * t14 * t955 - 0.16e2 * t1010 * t1080 - 0.2e1 * t935 * t625 * t919 - 0.64e2 * t1017 * t969 + 0.2e1 * t1088 * t939 + 0.8e1 * t1009 * t957 * t955;
1581: t1113 = t955 * t118 * xc;
1582: t1120 = t4 * t118;
1583: t1125 = t981 * xc;
1584: t1133 = nz * t10;
1585: t1140 = -0.8e1 * t954 * t955 * t10 * t993 + 0.2e1 * t935 * t652 * t90 - 0.64e2 * t1015 * t981 * t575 * t983 + 0.8e1 * t182 * t103 * t1016 * t4 + 0.8e1 * t1009 * t1113 + 0.16e2 * t954 * t1032 * t4 * t14 - 0.16e2 * t954 * t1032 * t1120 + 0.64e2 * t1015 * t10 * t172 * t1125 + 0.8e1 * t171 * t103 * t136 * t956 - 0.8e1 * t1031 * t1133 * t919 * xc + 0.8e1 * t1058 * t1020;
1586: t1153 = xc * t118;
1587: t1165 = t182 * t16;
1588: t1170 = t171 * t10;
1589: t1178 = ZA * t90;
1590: t1182 = 0.4e1 * t1088 * t652 * t140 + 0.8e1 * t954 * t1133 * t919 * t14 + 0.4e1 * t972 * t943 - 0.4e1 * t972 * t1069 - 0.16e2 * t954 * t31 * t4 * t1153 - 0.8e1 * t954 * nz * t919 * t1153 - 0.8e1 * t954 * t1133 * t919 * t118 + 0.4e1 * t1165 * t1063 + 0.16e2 * t1005 * t1080 - 0.8e1 * t1170 * t118 * t36 * t955 - 0.16e2 * t987 * t920 * t10 - 0.16e2 * t1165 * t1178 * t10;
1591: t1195 = t1040 * t981;
1592: t1199 = t1009 * t955;
1593: t1203 = t1009 * t10;
1594: t1211 = t965 * t323;
1595: t1225 = -0.32e2 * t965 * t10 * t652 * t1125 + 0.4e1 * t915 * t16 * t974 + 0.4e1 * t182 * t90 * t949 * ZA + 0.32e2 * t1195 * t968 * t10 - 0.8e1 * t1199 * t993 * t103 + 0.8e1 * t1203 * t118 * nz * t919 + 0.8e1 * t1170 * t136 * t955 + 0.64e2 * t1211 * t1044 + 0.16e2 * t1031 * t1032 * t4 + 0.8e1 * t987 * t943 + 0.8e1 * t1199 * t993 * t10 + 0.8e1 * t997 * t1050 * t4;
1596: t1263 = -0.128e3 * t1015 * t1178 * t1044 + 0.16e2 * t1005 * t988 * t1153 + 0.8e1 * t1058 * t1153 * t919 + 0.16e2 * t1010 * t1120 * xc - 0.8e1 * t954 * t1113 - 0.8e1 * t1203 * t14 * nz * t919 - 0.16e2 * t1203 * t14 * t31 * t4 - 0.8e1 * t1203 * t1113 - 0.32e2 * t1195 * t977 * t10 - 0.64e2 * t1211 * t1054 + 0.8e1 * t992 * t967 * t1153 + 0.128e3 * t1015 * t983 * t90 * t4 * t47;
1598: _PC1B = (t127 + t204 + t270 + t329 + t384 + t439 + t501 + t549 + t601 + t647 + t698 + t739 + t782 + t821 + t867 + t909) / (t953 + t1013 + t1057 + t1094 + t1140 + t1182 + t1225 + t1263);
1599: /****************************************************************************************/
1600: t1 = nz * nz;
1601: t2 = t1 * nz;
1602: t3 = nx * t2;
1603: t4 = 0.3141592654e1 * ZA;
1604: t5 = t3 * t4;
1605: t6 = nx * 0.3141592654e1;
1606: t7 = t6 * xc;
1607: t8 = PetscSinReal(t7);
1608: t9 = t8 * ZB;
1609: t10 = nz * 0.3141592654e1;
1610: t11 = PetscExpReal(t10);
1611: t12 = t11 * t11;
1612: t15 = PetscExpReal(xc * nz * 0.3141592654e1);
1613: t16 = t15 * t15;
1614: t17 = t16 * t16;
1615: t18 = t17 * t15;
1616: t19 = t12 * t18;
1617: t23 = t1 * t1;
1618: t24 = nx * t23;
1619: t25 = ZB * ZB;
1620: t27 = t18 * t8;
1621: t28 = 0.3141592654e1 * 0.3141592654e1;
1622: t29 = xc * xc;
1623: t30 = t28 * t29;
1624: t34 = t1 * xc;
1625: t35 = 0.3141592654e1 * ZB;
1626: t36 = t34 * t35;
1627: t37 = PetscCosReal(t7);
1628: t38 = ZA * t37;
1629: t39 = nx * nx;
1630: t40 = t39 * t12;
1631: t41 = t16 * t15;
1632: t43 = t38 * t40 * t41;
1633: t46 = t25 * nz;
1634: t47 = t46 * 0.3141592654e1;
1635: t48 = t39 * nx;
1636: t49 = PetscSinReal(t6);
1637: t50 = t48 * t49;
1638: t51 = t12 * t11;
1639: t52 = t51 * t17;
1640: t53 = t50 * t52;
1641: t56 = t34 * 0.3141592654e1 * t25;
1642: t57 = t37 * t39;
1643: t58 = t17 * t41;
1644: t59 = t12 * t58;
1645: t60 = t57 * t59;
1646: t63 = t25 * t18;
1647: t64 = t57 * nz;
1648: t67 = ZA * ZA;
1649: t68 = t67 * nz;
1650: t69 = 0.3141592654e1 * t48;
1651: t70 = t68 * t69;
1652: t71 = t49 * xc;
1653: t72 = t17 * t16;
1654: t73 = t11 * t72;
1655: t74 = t71 * t73;
1656: t77 = t1 * t67;
1657: t78 = t77 * 0.3141592654e1;
1658: t81 = nx * t25;
1659: t82 = t81 * t49;
1660: t83 = t17 * t17;
1661: t85 = t1 * t83 * t11;
1662: t87 = nx * ZB;
1663: t88 = t8 * t2;
1664: t89 = t87 * t88;
1665: t90 = 0.3141592654e1 * xc;
1666: t91 = t12 * t12;
1667: t92 = ZA * t91;
1668: t97 = ZB * ZA;
1669: t98 = t97 * t37;
1670: t99 = t39 * nz;
1671: t100 = t12 * t41;
1672: t104 = 0.8e1 * t5 * t9 * t19 + 0.8e1 * t24 * t25 * t27 * t30 + 0.12e2 * t36 * t43 - t47 * t53 - 0.2e1 * t56 * t60 - 0.4e1 * t63 * t64 + 0.6e1 * t70 * t74 + 0.4e1 * t78 * t60 - t82 * t85 + 0.4e1 * t89 * t90 * t92 * t41 + 0.4e1 * t98 * t99 * t100;
1673: t105 = t67 * t48;
1674: t106 = t49 * t51;
1675: t107 = t106 * t72;
1676: t109 = t1 * 0.3141592654e1;
1677: t110 = t109 * xc;
1678: t115 = nx * t67;
1679: t116 = t115 * t49;
1680: t117 = t1 * t16;
1681: t118 = t117 * t11;
1682: t120 = t2 * t25;
1683: t121 = t28 * 0.3141592654e1;
1684: t122 = t121 * t29;
1685: t123 = t120 * t122;
1686: t129 = t1 * ZB;
1687: t130 = t129 * t4;
1688: t131 = t57 * t100;
1689: t134 = t12 * t16;
1690: t136 = t109 * t39;
1691: t139 = ZB * t18;
1692: t141 = t39 * t1;
1693: t142 = t141 * t90;
1694: t145 = t77 * t90;
1695: t146 = t91 * t41;
1696: t147 = t57 * t146;
1697: t151 = t25 * t39 * t1;
1698: t152 = t72 * t12;
1699: t156 = t49 * t2;
1700: t158 = t83 * t11;
1701: t162 = -t105 * t107 + 0.8e1 * t110 * t72 * t25 * t39 - t116 * t118 + 0.8e1 * t123 * t53 + 0.8e1 * t5 * t9 * t59 - 0.8e1 * t130 * t131 - 0.8e1 * t134 * t25 * t136 - 0.12e2 * t139 * t38 * t142 - 0.8e1 * t145 * t147 - 0.8e1 * t151 * t90 * t152 - 0.2e1 * t87 * t156 * t4 * t158;
1702: t164 = t115 * t88;
1703: t165 = t90 * t19;
1704: t168 = t25 * t48;
1705: t169 = t49 * t16;
1706: t170 = t169 * t11;
1707: t174 = ZA * nz * t69;
1708: t175 = ZB * t51;
1709: t176 = t175 * t17;
1710: t177 = t71 * t176;
1711: t180 = t1 * t29;
1712: t181 = t28 * t25;
1713: t182 = t180 * t181;
1714: t183 = t50 * t73;
1715: t186 = ZA * t1;
1716: t187 = t28 * t48;
1717: t188 = t186 * t187;
1718: t189 = ZB * t17;
1719: t190 = t189 * t11;
1720: t191 = t71 * t190;
1721: t194 = t50 * t158;
1722: t196 = t115 * t156;
1723: t197 = t90 * t73;
1724: t201 = t49 * t17 * t11;
1725: t204 = t88 * t90;
1726: t207 = t68 * 0.3141592654e1;
1727: t208 = t17 * t11;
1728: t209 = t50 * t208;
1729: t211 = -0.2e1 * t164 * t165 - t168 * t170 + t168 * t107 + 0.8e1 * t174 * t177 + 0.2e1 * t182 * t183 + 0.8e1 * t188 * t191 + t47 * t194 - 0.6e1 * t196 * t197 - t168 * t201 - 0.4e1 * t81 * t18 * t204 - t207 * t209;
1730: t212 = t2 * 0.3141592654e1;
1731: t213 = t212 * t52;
1732: t215 = t81 * t8;
1733: t216 = t212 * t59;
1734: t219 = t3 * t90;
1735: t220 = t25 * t8;
1736: t221 = t18 * t91;
1737: t225 = t71 * t52;
1738: t231 = t16 * t51;
1739: t232 = t50 * t231;
1740: t237 = ZA * t12;
1741: t243 = t67 * t28;
1742: t244 = t24 * t243;
1743: t245 = t71 * t231;
1744: t249 = -t116 * t213 - 0.4e1 * t215 * t216 + 0.2e1 * t219 * t220 * t221 - 0.4e1 * t70 * t225 + 0.4e1 * t98 * t99 * t146 + t47 * t232 - 0.2e1 * t145 * t57 * t221 + 0.4e1 * t89 * t90 * t237 * t41 - t105 * t201 - 0.6e1 * t244 * t245 + t105 * t170;
1745: t252 = t25 * t37;
1746: t253 = t252 * t39;
1747: t255 = nz * t15 * t12;
1748: t258 = t2 * t29;
1749: t259 = ZB * t28;
1750: t260 = t258 * t259;
1751: t263 = t106 * t17;
1752: t265 = xc * t25;
1753: t269 = t25 * t49;
1754: t270 = t269 * t52;
1755: t273 = t1 * t25;
1756: t274 = t273 * 0.3141592654e1;
1757: t275 = t57 * t19;
1758: t278 = t24 * t30;
1759: t288 = t1 * t11 * t72;
1760: t290 = t212 * t208;
1761: t292 = t2 * xc;
1762: t296 = 0.2e1 * t253 * t255 + 0.16e2 * t260 * t43 + t105 * t263 - 0.4e1 * t10 * t265 * t53 + 0.4e1 * t219 * t270 - 0.12e2 * t274 * t275 + 0.8e1 * t278 * t270 - 0.2e1 * ZB * nz * t69 * t49 * ZA * t158 - t82 * t288 - t116 * t290 + 0.16e2 * t292 * t243 * t275;
1763: t301 = t50 * t176;
1764: t304 = t51 * t72;
1765: t305 = t71 * t304;
1766: t308 = t25 * t41;
1767: t311 = ZA * t48;
1768: t312 = t311 * t49;
1769: t317 = t91 * t15;
1770: t318 = t57 * t317;
1771: t321 = t81 * t88;
1772: t322 = t90 * t59;
1773: t325 = t212 * t231;
1774: t327 = t15 * t12;
1775: t328 = t57 * t327;
1776: t331 = t77 * t187;
1777: t334 = t2 * ZA;
1778: t335 = t334 * t122;
1779: t336 = t50 * t190;
1780: t339 = 0.8e1 * t151 * t90 * t134 + 0.16e2 * t186 * t30 * t301 - 0.2e1 * t70 * t305 + 0.2e1 * t308 * t64 - 0.2e1 * t312 * ZB * t83 * t11 + 0.2e1 * t56 * t318 + 0.2e1 * t321 * t322 - t116 * t325 - 0.4e1 * t274 * t328 + 0.2e1 * t331 * t305 - 0.16e2 * t335 * t336;
1781: t341 = t169 * t51;
1782: t344 = t49 * t11 * t72;
1783: t346 = t77 * t30;
1784: t347 = t50 * t304;
1785: t350 = t25 * t51;
1786: t352 = nx * ZA;
1787: t353 = t49 * t23;
1788: t354 = t352 * t353;
1789: t355 = t28 * xc;
1790: t362 = t25 * t91;
1791: t365 = t23 * nz;
1792: t366 = nx * t365;
1793: t367 = t366 * t122;
1794: t368 = ZB * t49;
1795: t369 = ZA * t51;
1796: t370 = t369 * t17;
1797: t371 = t368 * t370;
1798: t374 = t115 * t353;
1799: t375 = t355 * t73;
1800: t381 = t105 * t341 - t105 * t344 - 0.2e1 * t346 * t347 - t350 * t50 - 0.8e1 * t354 * t355 * t176 - 0.4e1 * t98 * t99 * t317 - 0.2e1 * t362 * t99 - 0.16e2 * t367 * t371 + 0.6e1 * t374 * t375 - 0.8e1 * t182 * t53 - t82 * t290;
1801: t382 = t71 * t208;
1802: t394 = t2 * t67;
1803: t395 = t394 * t122;
1804: t398 = t352 * t156;
1805: t402 = t17 * t12;
1806: t403 = t39 * ZA;
1807: t404 = t402 * t403;
1808: t407 = t269 * t208;
1809: t411 = t49 * t83 * t11;
1810: t413 = t46 * t69;
1811: t419 = -0.4e1 * t331 * t382 + 0.2e1 * t115 * t58 * t204 - 0.2e1 * t145 * t60 + 0.12e2 * t274 * t131 + 0.2e1 * t346 * t232 + 0.8e1 * t395 * t53 - 0.8e1 * t398 * t90 * t176 - 0.64e2 * t260 * t404 + 0.4e1 * t219 * t407 + t168 * t411 - 0.6e1 * t413 * t74 - 0.2e1 * t110 * t308 * t57;
1812: t424 = t16 * t11;
1813: t425 = t212 * t424;
1814: t427 = t258 * t181;
1815: t430 = t67 * t29;
1816: t431 = t366 * t430;
1817: t432 = t121 * t49;
1818: t433 = t432 * t52;
1819: t436 = nz * t12;
1820: t437 = t436 * t18;
1821: t440 = t29 * xc;
1822: t441 = t440 * t121;
1823: t442 = t394 * t441;
1824: t445 = t67 * t37;
1825: t446 = t445 * t39;
1826: t448 = nz * t18 * t91;
1827: t453 = t352 * t49;
1828: t458 = t8 * t23;
1829: t462 = t81 * t458;
1830: t463 = t30 * t19;
1831: t466 = -t47 * t209 + t116 * t425 - 0.8e1 * t427 * t275 + 0.8e1 * t431 * t433 - 0.2e1 * t253 * t437 - 0.8e1 * t442 * t53 - 0.2e1 * t446 * t448 + 0.2e1 * t175 * t312 + 0.6e1 * t453 * t129 * t208 + 0.8e1 * t115 * t18 * t458 * t30 + 0.8e1 * t462 * t463;
1832: t470 = t436 * t58;
1833: t475 = t2 * t121 * t440 * t25;
1834: t485 = t212 * t73;
1835: t488 = t67 * t72 * t1;
1836: t490 = t39 * xc;
1837: t501 = 0.4e1 * t374 * t355 * t52 + 0.2e1 * t446 * t470 - 0.8e1 * t475 * t53 - 0.2e1 * t446 * t437 - 0.4e1 * t36 * t38 * t39 * t15 * t12 - t116 * t485 + 0.8e1 * t488 * 0.3141592654e1 * t12 * t490 - t207 * t183 - 0.2e1 * t182 * t232 - 0.6e1 * t413 * t245 - 0.4e1 * t413 * t382;
1838: t503 = t115 * t8;
1839: t510 = t355 * t19;
1840: t513 = t432 * t208;
1841: t525 = t38 * t40 * t18;
1842: t533 = -0.4e1 * t503 * t216 - 0.4e1 * t89 * t90 * t92 * t15 - 0.16e2 * t462 * t510 + 0.8e1 * t431 * t513 - 0.4e1 * t78 * t131 + t47 * t183 - 0.2e1 * t67 * t83 * t99 + 0.4e1 * t331 * t225 + 0.16e2 * t260 * t525 - 0.4e1 * t89 * t90 * t237 * t58 - t207 * t53;
1843: t536 = t28 * t37;
1844: t538 = t490 * t100;
1845: t541 = t334 * t441;
1846: t547 = t394 * t30;
1847: t550 = t212 * t19;
1848: t553 = t366 * t441;
1849: t556 = nz * t17;
1850: t571 = -0.8e1 * t427 * t131 + 0.16e2 * t394 * t536 * t538 + 0.16e2 * t541 * t336 + 0.2e1 * t453 * t129 * t158 - 0.8e1 * t547 * t147 + 0.4e1 * t503 * t550 - 0.8e1 * t553 * t270 + 0.4e1 * t556 * ZB * t92 * t39 - 0.2e1 * t67 * t91 * t99 - t82 * t425 + 0.4e1 * t78 * t275 + 0.2e1 * t78 * xc * t41 * t57;
1851: t583 = t90 * t317;
1852: t594 = t212 * t158;
1853: t596 = t152 * t67;
1854: t602 = t67 * t17;
1855: t607 = 0.8e1 * t367 * t407 - 0.4e1 * t98 * t99 * t59 + 0.16e2 * t260 * t18 * ZA * t57 + 0.2e1 * t321 * t583 - 0.6e1 * t174 * t368 * t52 - 0.4e1 * t89 * t90 * ZA * t15 * t12 + t116 * t594 - 0.8e1 * t596 * t136 - 0.4e1 * t98 * t99 * t327 + 0.2e1 * t602 * t99 + 0.2e1 * t164 * t583;
1856: t613 = t83 * t25;
1857: t616 = t81 * t156;
1858: t627 = t90 * t231;
1859: t630 = t91 * t16;
1860: t638 = 0.4e1 * t196 * t90 * t208 - 0.8e1 * t130 * t60 - 0.2e1 * t613 * t99 + 0.6e1 * t616 * t197 - 0.8e1 * t547 * t131 + 0.8e1 * t67 * t18 * t37 * t142 + 0.2e1 * t145 * t328 - 0.6e1 * t196 * t627 + 0.8e1 * t630 * t67 * t142 - 0.8e1 * t547 * t275 + 0.8e1 * t395 * t209;
1861: t643 = t77 * t355;
1862: t648 = t115 * t458;
1863: t651 = t134 * t67;
1864: t657 = t30 * t304;
1865: t660 = t30 * t146;
1866: t665 = t25 * t17;
1867: t668 = t50 * t424;
1868: t671 = -0.4e1 * t321 * t90 * t146 - 0.6e1 * t643 * t232 + 0.8e1 * t182 * t209 - 0.16e2 * t648 * t510 + 0.8e1 * t651 * t136 + 0.8e1 * t89 * t4 * t100 - 0.2e1 * t374 * t657 - 0.8e1 * t648 * t660 + 0.8e1 * t130 * t328 + 0.2e1 * t665 * t99 + 0.2e1 * t346 * t668;
1869: t672 = t90 * t424;
1870: t676 = t120 * t536;
1871: t680 = t436 * t41;
1872: t688 = t366 * t67 * t440;
1873: t696 = xc * t12;
1874: t697 = t696 * t18;
1875: t701 = t252 * t141;
1876: t702 = t90 * t221;
1877: t705 = 0.2e1 * t196 * t672 - t47 * t347 + 0.16e2 * t676 * t538 - t116 * t85 - 0.2e1 * t253 * t680 + t207 * t194 + 0.4e1 * t98 * t99 * t19 - 0.8e1 * t688 * t433 + 0.16e2 * t541 * t301 - 0.6e1 * t312 * t190 + 0.4e1 * t352 * t88 * t35 * t697 + 0.2e1 * t701 * t702;
1878: t712 = t24 * t430;
1879: t713 = t28 * t49;
1880: t721 = t1 * t17 * t11;
1881: t726 = ZB * xc;
1882: t737 = nz * t91;
1883: t741 = 0.8e1 * t346 * t209 + 0.2e1 * t712 * t713 * t424 + 0.8e1 * t130 * t275 - t47 * t668 + t116 * t721 - 0.8e1 * t688 * t513 + 0.4e1 * t352 * t27 * t212 * t726 + 0.8e1 * t648 * t463 + 0.4e1 * t274 * t60 - 0.4e1 * t374 * t355 * t208 - 0.4e1 * t253 * t737 * t41;
1884: t745 = t269 * t231;
1885: t749 = t1 * t28 * t265;
1886: t757 = t16 * t39;
1887: t758 = t696 * t757;
1888: t762 = t69 * t49;
1889: t772 = t355 * t100;
1890: t775 = t81 * t353;
1891: t778 = -0.8e1 * t398 * t90 * t190 - 0.2e1 * t278 * t745 + 0.4e1 * t749 * t53 + 0.32e2 * t394 * t29 * t28 * t17 * t40 - 0.8e1 * t78 * t758 + t350 * nz * t762 - 0.6e1 * t87 * t49 * t186 * t52 - 0.8e1 * t553 * t407 - 0.4e1 * t749 * t209 + 0.16e2 * t648 * t772 - 0.6e1 * t775 * t375;
1892: t790 = t212 * t304;
1893: t793 = t156 * 0.3141592654e1;
1894: t795 = t355 * t304;
1895: t800 = t91 * t39;
1896: t801 = t800 * nz;
1897: t807 = t2 * t28;
1898: t808 = t807 * t726;
1899: t811 = -0.2e1 * t616 * t672 - 0.2e1 * t446 * t680 - 0.2e1 * t78 * xc * t58 * t57 + 0.8e1 * t367 * t270 - t82 * t790 + t115 * t51 * t793 - 0.2e1 * t775 * t795 + 0.8e1 * t123 * t209 + 0.2e1 * t665 * t801 - 0.2e1 * t67 * t41 * t64 - 0.32e2 * t808 * t43;
1900: t812 = t117 * t51;
1901: t821 = t24 * t355;
1902: t827 = t90 * t304;
1903: t840 = t800 * t41;
1904: t844 = -t116 * t812 - 0.2e1 * t110 * t25 * t58 * t57 - 0.4e1 * t78 * t328 + t82 * t485 - 0.4e1 * t821 * t407 + 0.4e1 * t196 * t90 * t52 + 0.2e1 * t196 * t827 + t82 * t325 + 0.2e1 * t253 * t448 - 0.32e2 * t402 * t67 * t807 * t490 - t207 * t232 + 0.12e2 * t186 * t90 * ZB * t37 * t840;
1905: t849 = t1 * t51;
1906: t850 = t849 * t17;
1907: t860 = t269 * t424;
1908: t863 = t273 * t187;
1909: t874 = 0.16e2 * t462 * t772 - t116 * t850 + 0.16e2 * t553 * t371 + t116 * t288 - 0.12e2 * t97 * t57 * t109 * t697 + t82 * t594 - 0.2e1 * t278 * t860 - 0.2e1 * t863 * t305 - 0.16e2 * t180 * t259 * t311 * t201 - 0.6e1 * t863 * t74 + 0.8e1 * t174 * t191;
1910: t879 = xc * ZA;
1911: t888 = t67 * t51;
1912: t901 = ZA * t17;
1913: t903 = t368 * t901 * t11;
1914: t908 = -0.2e1 * t352 * t51 * t156 * t35 + 0.64e2 * t879 * t189 * t807 * t40 + 0.2e1 * t46 * t58 * t37 * t39 - t888 * t50 + t105 * t411 - 0.16e2 * t335 * t301 + 0.8e1 * t152 * t25 * t136 - 0.8e1 * t278 * t407 + 0.2e1 * t712 * t713 * t231 - 0.16e2 * t367 * t903 + 0.2e1 * t145 * t318;
1915: t923 = t71 * t424;
1916: t926 = t87 * t458;
1917: t927 = t28 * ZA;
1918: t944 = 0.8e1 * t354 * t355 * t190 - 0.8e1 * t110 * t16 * t25 * t800 - 0.2e1 * t374 * t30 * t73 - 0.16e2 * t354 * t30 * t176 - 0.2e1 * t244 * t923 - 0.32e2 * t926 * t927 * t696 * t41 - 0.32e2 * t808 * t525 + 0.6e1 * t749 * t232 - 0.8e1 * t188 * t177 + 0.4e1 * t36 * t58 * ZA * t57 + 0.4e1 * t821 * t270;
1919: t948 = t90 * t327;
1920: t961 = t30 * t100;
1921: t964 = t29 * t49;
1922: t981 = t106 * t1;
1923: t983 = -0.2e1 * t219 * t220 * t100 + 0.2e1 * t321 * t948 - 0.16e2 * t189 * ZA * t99 * t12 - 0.2e1 * t369 * nz * t69 * t368 + 0.2e1 * t374 * t795 - 0.8e1 * t462 * t961 - 0.8e1 * t244 * t964 * t208 + 0.2e1 * t413 * t923 + 0.4e1 * t36 * t38 * t40 * t58 - 0.2e1 * t87 * t51 * t49 * t1 * ZA + t888 * nz * t762 + t115 * t981;
1924: t1012 = 0.6e1 * t616 * t627 - t82 * t213 + 0.2e1 * t775 * t657 - 0.12e2 * t215 * t550 - 0.6e1 * t145 * t131 + 0.2e1 * t81 * t41 * t204 + 0.6e1 * ZB * t48 * t49 * t370 - 0.4e1 * t70 * t382 + 0.2e1 * t446 * t255 + 0.8e1 * t89 * t4 * t327 - 0.4e1 * t56 * t147;
1925: t1018 = t212 * t100;
1926: t1029 = t212 * t327;
1927: t1040 = 0.6e1 * t70 * t245 + 0.2e1 * t56 * t328 + t207 * t668 + 0.4e1 * t503 * t1018 + 0.2e1 * t253 * t470 - 0.6e1 * t398 * t35 * t208 - 0.8e1 * t331 * t964 * t52 - 0.4e1 * t503 * t1029 + 0.6e1 * t821 * t745 + 0.4e1 * t63 * t37 * t142 + 0.16e2 * t260 * t38 * t840;
1928: t1068 = t207 * t347 - 0.2e1 * t164 * t702 - 0.2e1 * t331 * t964 * t73 + 0.8e1 * t374 * t30 * t52 + 0.16e2 * t278 * t903 + 0.2e1 * t863 * t923 + 0.6e1 * t445 * t141 * t165 - 0.2e1 * t164 * t90 * t100 + 0.6e1 * t331 * t74 - 0.2e1 * t182 * t668 - 0.2e1 * t115 * t41 * t204;
1929: t1079 = t58 * t8;
1930: t1091 = t807 * t29;
1931: t1092 = t665 * t40;
1932: t1101 = ZB * t91;
1933: t1102 = t403 * nz;
1934: t1105 = -0.4e1 * t58 * ZB * ZA * t64 - t82 * t850 + 0.2e1 * t821 * t860 + t81 * t51 * t793 + 0.2e1 * t3 * t25 * t1079 * t90 + t82 * t721 - 0.2e1 * t643 * t668 + 0.16e2 * t926 * t927 * t29 * t91 * t41 + 0.32e2 * t1091 * t1092 - 0.2e1 * t219 * t220 * t19 + 0.4e1 * t139 * ZA * t64 + 0.4e1 * t1101 * t1102;
1935: t1108 = t849 * t72;
1936: t1121 = t737 * t15;
1937: t1124 = t29 * t12;
1938: t1133 = t116 * t1108 - 0.8e1 * t475 * t209 - 0.32e2 * t807 * xc * t1092 + 0.2e1 * t278 * t269 * t73 + t82 * t812 - 0.6e1 * t56 * t131 + 0.2e1 * t253 * t1121 + 0.16e2 * t926 * t927 * t1124 * t41 + t168 * t263 - 0.2e1 * t616 * t827 + t81 * t981;
1939: t1134 = t394 * t28;
1940: t1159 = -0.8e1 * t1134 * t29 * t18 * t57 + t82 * t118 - 0.12e2 * t215 * t1018 + 0.2e1 * t602 * t801 - t168 * t341 + 0.2e1 * t67 * t58 * t64 + t168 * t344 - 0.6e1 * t174 * t368 * t208 + 0.16e2 * t553 * t903 + t116 * t790 - 0.4e1 * t36 * t38 * t800 * t15;
1941: t1161 = nz * t83;
1942: t1173 = ZB * t12;
1943: t1196 = 0.4e1 * t1161 * ZB * t39 * ZA - 0.4e1 * t215 * t1029 - 0.8e1 * t488 * 0.3141592654e1 * t39 * xc + 0.32e2 * t821 * ZA * t8 * t1173 * t18 - 0.8e1 * t427 * t147 + 0.6e1 * t701 * t165 - 0.16e2 * t926 * t927 * t1124 * t18 - 0.8e1 * t1091 * t63 * t57 - 0.8e1 * t442 * t209 - 0.8e1 * t462 * t660 - 0.6e1 * t398 * t35 * t52;
1944: t1228 = 0.2e1 * t413 * t305 - 0.8e1 * t648 * t961 - 0.16e2 * t87 * t27 * t23 * t28 * ZA * t29 + 0.4e1 * t189 * t1102 - 0.4e1 * t87 * t1079 * t212 * t879 + 0.2e1 * t164 * t948 - 0.2e1 * t70 * t923 + 0.2e1 * t164 * t322 + 0.2e1 * t446 * t1121 + 0.2e1 * t863 * t964 * t304 - t82 * t1108 + 0.16e2 * t676 * t490 * t19;
1945: t1234 = t25 * ZB;
1946: t1235 = t1234 * t28;
1947: t1236 = t365 * t91;
1948: t1240 = ZB * t121;
1949: t1241 = t1240 * t77;
1950: t1242 = t39 * t39;
1951: t1243 = t12 * t1242;
1952: t1244 = xc * t72;
1953: t1245 = t1243 * t1244;
1954: t1248 = t365 * t25;
1955: t1252 = t243 * nz;
1956: t1257 = t23 * t1;
1957: t1258 = t1240 * t1257;
1958: t1259 = t67 * t12;
1959: t1260 = xc * t16;
1960: t1268 = t1234 * t121;
1961: t1269 = t1268 * t23;
1962: t1272 = t1242 * t91;
1963: t1280 = t67 * xc;
1964: t1284 = t28 * t28;
1965: t1285 = t67 * t1284;
1966: t1287 = t1285 * t2 * ZB;
1967: t1288 = t17 * xc;
1968: t1289 = t1243 * t1288;
1969: t1292 = 0.2e1 * t1235 * t1236 * t17 + 0.8e1 * t1241 * t1245 + 0.4e1 * t927 * t1248 * t91 - 0.2e1 * t1252 * ZB * t1242 * t91 - 0.8e1 * t1258 * t1259 * t1260 - 0.4e1 * t1235 * t2 * t83 * t39 + 0.16e2 * t1269 * t758 + 0.2e1 * t1252 * t189 * t1272 - 0.2e1 * t1252 * t83 * t1242 * ZB + 0.8e1 * t1258 * t630 * t1280 - 0.32e2 * t1287 * t1289;
1970: t1293 = t365 * t83;
1971: t1300 = ZA * t1284;
1972: t1304 = t17 * t1242 * t25 * t12;
1973: t1307 = t927 * t2;
1974: t1311 = t23 * t2;
1975: t1312 = t1300 * t1311;
1976: t1316 = t1234 * t1284;
1977: t1317 = t1316 * t1311;
1978: t1321 = t1240 * t23;
1979: t1331 = t1240 * t23 * t67;
1980: t1332 = t40 * t1244;
1981: t1338 = t1243 * t1260;
1982: t1344 = -0.2e1 * t1235 * t1293 - 0.16e2 * t181 * t365 * t901 * t12 - 0.64e2 * t1300 * t258 * t1304 + 0.8e1 * t1307 * t613 * t39 + 0.64e2 * t1312 * t265 * t402 - 0.32e2 * t1317 * t1288 * t12 - 0.16e2 * t1321 * t67 * t39 * t1244 + 0.2e1 * t1235 * nz * t1272 * t17 + 0.16e2 * t1331 * t1332 + 0.64e2 * t1300 * t292 * t1304 - 0.8e1 * t1241 * t1338 - 0.2e1 * t243 * t1293 * ZB;
1983: t1346 = t1316 * t2;
1984: t1349 = t927 * nz;
1985: t1350 = t25 * t1242;
1986: t1354 = t1268 * t1257;
1987: t1366 = t1268 * t1;
1988: t1370 = t29 * t17;
1989: t1371 = t1243 * t1370;
1990: t1386 = -0.32e2 * t1346 * t1289 + 0.4e1 * t1349 * t1350 * t91 + 0.8e1 * t1354 * t1260 * t12 - 0.16e2 * t181 * nz * t901 * t1243 - 0.4e1 * t1235 * t2 * t91 * t39 + 0.8e1 * t1366 * t152 * t1242 + 0.32e2 * t1287 * t1371 + 0.8e1 * t1258 * t1280 * t152 - 0.8e1 * t1354 * t1260 * t91 + 0.128e3 * t1300 * t365 * xc * t1092 + 0.8e1 * t1366 * t1338;
1991: t1387 = t1257 * t12;
1992: t1391 = t1240 * t1;
1993: t1399 = t1272 * t1260;
1994: t1412 = t1285 * t1311;
1995: t1427 = -0.8e1 * t1268 * t1387 * t16 - 0.8e1 * t1391 * t67 * t1242 * t1244 - 0.4e1 * t1134 * t1101 * t39 + 0.8e1 * t1241 * t1399 - 0.8e1 * t1258 * t596 + 0.4e1 * t927 * t1293 * t25 - 0.16e2 * t1331 * t758 + 0.8e1 * t1307 * t665 * t39 + 0.32e2 * t1412 * t1370 * t1173 + 0.8e1 * t1307 * t665 * t800 + 0.8e1 * t1391 * t1259 * t1242 * t16 - 0.8e1 * t1391 * t1259 * t1242 * t72;
1996: t1456 = t365 * ZB;
1997: t1468 = 0.4e1 * t927 * t1248 * t17 - 0.2e1 * t1235 * nz * t1242 * t91 + 0.8e1 * t1366 * t1244 * t1242 - 0.16e2 * t1269 * t134 * t39 + 0.8e1 * t1268 * t1257 * t72 * xc + 0.16e2 * t1321 * t1259 * t757 + 0.32e2 * t1317 * t1370 * t12 + 0.4e1 * t1349 * t613 * t1242 + 0.2e1 * t243 * t1456 * t17 - 0.64e2 * t1285 * t365 * t12 * t189 * t490 - 0.8e1 * t1354 * t152 * xc;
1998: t1472 = t1316 * t365;
1999: t1474 = t1124 * t39 * t17;
2000: t1478 = t17 * t91;
2001: t1504 = t72 * t39;
2002: t1511 = 0.4e1 * t1134 * t189 * t800 + 0.64e2 * t1472 * t1474 + 0.4e1 * t1235 * t2 * t1478 * t39 + 0.4e1 * t1349 * t665 * t1242 - 0.8e1 * t1258 * t1280 * t72 + 0.2e1 * t1252 * t189 * t1242 + 0.2e1 * t243 * t365 * t189 * t91 + 0.4e1 * t927 * t365 * t1478 * t25 - 0.128e3 * t1300 * t1248 * t1474 - 0.2e1 * t1235 * t1236 + 0.16e2 * t1269 * t1504 * xc + 0.2e1 * t1235 * t365 * t17;
2003: t1545 = -0.2e1 * t1235 * t1161 * t1242 + 0.4e1 * t1349 * t1350 * t1478 - 0.8e1 * t1366 * t1245 + 0.2e1 * t1235 * t556 * t1242 - 0.32e2 * t1412 * t402 * t726 - 0.8e1 * t1366 * t1399 + 0.8e1 * t1258 * t651 - 0.2e1 * t243 * t1456 * t91 + 0.8e1 * t1268 * t1387 * t72 - 0.16e2 * t1269 * t1332 + 0.4e1 * t1134 * t189 * t39 + 0.16e2 * t1269 * t152 * t39;
2004: t1564 = t1260 * t800;
2005: t1583 = 0.64e2 * t1285 * t1456 * t1474 - 0.64e2 * t1472 * t1288 * t40 - 0.8e1 * t1366 * t134 * t1242 + 0.8e1 * t1307 * t362 * t39 + 0.4e1 * t1235 * t2 * t17 * t39 + 0.32e2 * t1346 * t1371 - 0.16e2 * t1269 * t1564 - 0.16e2 * t1321 * t1259 * t1504 + 0.16e2 * t1331 * t1564 - 0.64e2 * t1312 * t29 * t25 * t402 - 0.4e1 * t1134 * t83 * t39 * ZB - 0.32e2 * t181 * t2 * t404;
2007: _PC2B = (t1133 + t1196 + t1068 + t811 + t466 + t1012 + t381 + t162 + t249 + t533 + t844 + t104 + t1159 + t571 + t211 + t874 + t607 + t339 + t296 + t638 + t908 + t671 + t419 + t983 + t705 + t1105 + t501 + t778 + t1040 + t1228 + t741 + t944) / (t1292 + t1344 + t1386 + t1427 + t1468 + t1511 + t1545 + t1583);
2008: /****************************************************************************************/
2009: t1 = nz * nz;
2010: t2 = t1 * nz;
2011: t3 = t2 * nx;
2012: t4 = nx * 0.3141592654e1;
2013: t5 = t4 * xc;
2014: t6 = PetscSinReal(t5);
2015: t7 = 0.3141592654e1 * 0.3141592654e1;
2016: t9 = t3 * t6 * t7;
2017: t10 = xc * xc;
2018: t11 = ZA * ZA;
2019: t12 = t10 * t11;
2020: t13 = nz * 0.3141592654e1;
2021: t14 = PetscExpReal(t13);
2022: t15 = t14 * t14;
2023: t16 = xc * nz;
2024: t18 = PetscExpReal(t16 * 0.3141592654e1);
2025: t19 = t18 * t18;
2026: t20 = t19 * t18;
2027: t21 = t15 * t20;
2028: t22 = t12 * t21;
2029: t25 = nx * t6;
2030: t26 = t1 * 0.3141592654e1;
2031: t27 = t25 * t26;
2032: t28 = ZA * ZB;
2033: t29 = t18 * t15;
2034: t30 = t28 * t29;
2035: t33 = t25 * nz;
2036: t34 = t11 * t15;
2037: t35 = t19 * t19;
2038: t36 = t35 * t18;
2039: t40 = t25 * t1;
2040: t41 = 0.3141592654e1 * t11;
2041: t42 = t15 * t36;
2042: t43 = t41 * t42;
2043: t46 = nx * nx;
2044: t47 = t1 * t46;
2045: t48 = t47 * t11;
2046: t49 = t7 * xc;
2047: t50 = t35 * t15;
2048: t51 = t49 * t50;
2049: t55 = PetscSinReal(t4);
2050: t56 = t46 * nx * t55;
2051: t58 = t56 * nz * t7;
2052: t59 = ZB * ZB;
2053: t60 = t10 * t59;
2054: t61 = t15 * t14;
2055: t62 = t19 * t61;
2056: t63 = t60 * t62;
2057: t66 = t19 * t14;
2058: t67 = t60 * t66;
2059: t70 = t28 * t42;
2060: t73 = PetscCosReal(t5);
2061: t74 = t47 * t73;
2062: t75 = t7 * t11;
2063: t77 = t75 * t10 * t36;
2064: t80 = t73 * t46;
2065: t81 = t80 * nz;
2066: t82 = 0.3141592654e1 * t59;
2067: t83 = t82 * t42;
2068: t87 = xc * t11;
2069: t88 = t87 * t62;
2070: t91 = nz * nx;
2071: t92 = t55 * t61;
2072: t96 = nx * t55;
2073: t98 = t96 * t2 * t7;
2074: t101 = xc * t59;
2075: t102 = t101 * t62;
2076: t108 = t1 * t1;
2077: t109 = t108 * t7;
2078: t111 = t59 * t35;
2079: t112 = t111 * t15;
2080: t115 = t35 * t20;
2081: t123 = t1 * nx * t55;
2082: t124 = t61 * t35;
2083: t127 = t35 * t19;
2084: t128 = t61 * t127;
2085: t129 = t60 * t128;
2086: t132 = t56 * t16;
2087: t133 = t7 * t59;
2088: t134 = t133 * t124;
2089: t137 = 0.6e1 * t58 * t88 - 0.2e1 * t91 * t92 * t11 + 0.2e1 * t98 * t63 - 0.6e1 * t58 * t102 - 0.2e1 * t91 * t92 * t59 - 0.16e2 * t109 * xc * t112 - 0.2e1 * t91 * t6 * t115 * t59 + 0.12e2 * t40 * t83 + t123 * t41 * t124 - 0.2e1 * t58 * t129 + 0.4e1 * t132 * t134;
2090: t139 = t56 * 0.3141592654e1;
2091: t140 = t111 * t14;
2092: t144 = t49 * t124;
2093: t147 = t91 * t55;
2094: t148 = t61 * ZA;
2095: t154 = ZA * t115 * xc * ZB;
2096: t157 = t7 * 0.3141592654e1;
2097: t159 = t96 * t108 * t157;
2098: t160 = t10 * xc;
2099: t161 = t160 * t59;
2100: t162 = t35 * t14;
2101: t163 = t161 * t162;
2102: t166 = t28 * t162;
2103: t169 = t80 * t13;
2104: t170 = t101 * t42;
2105: t173 = t2 * t11;
2106: t174 = t96 * t173;
2107: t175 = t7 * t10;
2108: t179 = t59 * t15;
2109: t184 = t15 * t15;
2110: t193 = t139 * t140 + 0.4e1 * t56 * nz * t11 * t144 + 0.4e1 * t147 * t148 * ZB + 0.4e1 * t27 * t154 + 0.8e1 * t159 * t163 - 0.12e2 * t147 * t166 + 0.2e1 * t169 * t170 - 0.16e2 * t174 * t175 * t124 + 0.2e1 * t33 * t179 * t20 - 0.2e1 * t33 * t11 * t36 * t184 + 0.2e1 * t56 * t61 * 0.3141592654e1 * ZA * ZB;
2111: t194 = t173 * 0.3141592654e1;
2112: t195 = xc * t15;
2113: t196 = t195 * t19;
2114: t202 = t15 * t115;
2115: t203 = t28 * t202;
2116: t206 = t96 * t26;
2117: t207 = t14 * t127;
2118: t208 = t101 * t207;
2119: t211 = t12 * t128;
2120: t218 = t11 * t61;
2121: t219 = t218 * t35;
2122: t221 = t108 * ZA;
2123: t223 = t7 * ZB;
2124: t224 = t223 * t50;
2125: t227 = ZA * xc;
2126: t228 = ZB * t15;
2127: t229 = t228 * t36;
2128: t230 = t227 * t229;
2129: t233 = t87 * t207;
2130: t236 = t6 * t11;
2131: t240 = -0.4e1 * t194 * t196 + 0.4e1 * t194 * t195 * t127 + 0.4e1 * t33 * t203 - 0.12e2 * t206 * t208 + 0.2e1 * t58 * t211 - 0.16e2 * t47 * t10 * t133 * t50 + t139 * t219 - 0.32e2 * t221 * t10 * t224 - 0.4e1 * t169 * t230 - 0.6e1 * t98 * t233 + 0.2e1 * t91 * t236 * t20;
2132: t244 = t227 * t228 * t20;
2133: t252 = t184 * t18;
2134: t253 = t101 * t252;
2135: t256 = t35 * t35;
2136: t257 = t256 * t14;
2137: t258 = t28 * t257;
2138: t261 = t108 * t11;
2139: t263 = t7 * t35;
2140: t268 = ZB * t61 * t35;
2141: t273 = t96 * t108 * t160;
2142: t274 = t157 * ZB;
2143: t276 = t274 * t148 * t35;
2144: t279 = t101 * t21;
2145: t282 = 0.3141592654e1 * xc;
2146: t283 = t59 * t36;
2147: t284 = t282 * t283;
2148: t289 = 0.4e1 * t169 * t244 - 0.4e1 * t132 * t133 * t162 - 0.2e1 * t147 * t140 - 0.2e1 * t27 * t253 + 0.2e1 * t139 * t258 + 0.16e2 * t261 * t10 * t263 * t15 - 0.16e2 * t206 * t227 * t268 - 0.16e2 * t273 * t276 - 0.6e1 * t27 * t279 - 0.4e1 * t40 * t284 - 0.32e2 * t9 * t230;
2149: t290 = t1 * t11;
2150: t291 = t96 * t290;
2151: t297 = t59 * t61;
2152: t298 = t297 * t127;
2153: t300 = ZB * t36;
2154: t301 = t227 * t300;
2155: t304 = t1 * t59;
2156: t305 = t184 * t35;
2157: t310 = t46 * ZB;
2158: t311 = t184 * ZA;
2159: t312 = t310 * t311;
2160: t314 = t60 * t21;
2161: t317 = t1 * ZA;
2162: t318 = ZB * t35;
2163: t321 = t1 * t256;
2164: t324 = t96 * t261;
2165: t325 = t10 * t157;
2166: t326 = t325 * t124;
2167: t329 = -0.4e1 * t291 * t282 * t128 + t123 * t82 * t62 - t139 * t298 + 0.12e2 * t27 * t301 + t304 * t305 - 0.2e1 * t58 * t12 * t66 - 0.2e1 * t312 + 0.8e1 * t9 * t314 + 0.2e1 * t317 * t318 + 0.2e1 * t321 * t28 - 0.8e1 * t324 * t326;
2168: t331 = t28 * t124;
2169: t334 = 0.3141592654e1 * t15;
2170: t335 = t334 * t127;
2171: t338 = t35 * ZA;
2172: t341 = t46 * t256;
2173: t344 = t46 * t11;
2174: t346 = t46 * t59;
2175: t348 = t297 * t35;
2176: t351 = ZA * t10;
2177: t352 = t351 * t300;
2178: t355 = t1 * ZB;
2179: t362 = 0.12e2 * t147 * t331 - 0.4e1 * t173 * t335 - 0.2e1 * t310 * t338 - 0.2e1 * t341 * t28 - t344 * t305 - t346 * t305 + 0.2e1 * t147 * t348 + 0.16e2 * t9 * t352 + 0.2e1 * t355 * t311 + t290 * t305 + 0.2e1 * t33 * t34 * t20;
2180: t363 = t36 * t184;
2181: t364 = t87 * t363;
2182: t368 = t47 * t73 * t7;
2183: t373 = t160 * t157;
2184: t374 = t373 * t124;
2185: t377 = t311 * t35;
2186: t380 = t12 * t62;
2187: t386 = ZB * t10 * ZA * t15 * t20;
2188: t389 = t87 * t66;
2189: t393 = t56 * t1 * t10;
2190: t401 = 0.2e1 * t27 * t364 - 0.16e2 * t368 * t279 - t123 * t41 * t257 + 0.8e1 * t324 * t374 + 0.2e1 * t355 * t377 - 0.2e1 * t98 * t380 - 0.16e2 * t9 * t386 + 0.2e1 * t58 * t389 + 0.16e2 * t393 * t276 + t123 * t82 * t162 - 0.2e1 * t33 * t179 * t36;
2191: t412 = t11 * t14 * t127;
2192: t416 = t11 * t19;
2193: t417 = t416 * t61;
2194: t421 = t96 * t2 * ZA;
2195: t426 = t56 * nz * ZA;
2196: t427 = t318 * t14;
2197: t428 = t49 * t427;
2198: t431 = t82 * t29;
2199: t434 = t87 * t21;
2200: t442 = 0.2e1 * t33 * t11 * t184 * t18 + 0.4e1 * t81 * t284 - t139 * t412 + 0.2e1 * t147 * t219 - 0.2e1 * t147 * t417 + 0.32e2 * t421 * t175 * t268 + 0.8e1 * t426 * t428 + 0.4e1 * t81 * t431 - 0.2e1 * t169 * t434 - 0.2e1 * t98 * t129 - 0.32e2 * t47 * t28 * t51;
2201: t443 = t184 * t20;
2202: t447 = t61 * 0.3141592654e1;
2203: t448 = t447 * t11;
2204: t450 = t49 * t268;
2205: t453 = t60 * t42;
2206: t456 = t41 * t202;
2207: t463 = t101 * t443;
2208: t469 = t41 * xc * t20;
2209: t474 = -0.8e1 * t27 * t87 * t443 - t56 * t448 - 0.8e1 * t426 * t450 + 0.8e1 * t368 * t453 + 0.4e1 * t40 * t456 + 0.4e1 * t40 * t431 - 0.4e1 * t81 * t456 - 0.4e1 * t27 * t463 + 0.6e1 * t139 * t331 + 0.2e1 * t40 * t469 - 0.16e2 * t9 * t434;
2210: t482 = t108 * t10;
2211: t492 = nz * t46;
2212: t493 = t492 * t11;
2213: t495 = t282 * t19 * t184;
2214: t498 = t56 * t290;
2215: t499 = t325 * t162;
2216: t502 = t416 * t14;
2217: t504 = t60 * t207;
2218: t507 = -t123 * t82 * t257 - 0.4e1 * t169 * t301 + t123 * t41 * t162 + 0.16e2 * t482 * t7 * t112 - 0.12e2 * t206 * t102 - t123 * t82 * t66 - 0.4e1 * t147 * t258 - 0.4e1 * t493 * t495 - 0.8e1 * t498 * t499 + t139 * t502 - 0.2e1 * t98 * t504;
2219: t508 = t101 * t162;
2220: t512 = t41 * t115 * xc;
2221: t515 = t87 * t42;
2222: t520 = ZB * t184;
2223: t522 = t227 * t520 * t18;
2224: t525 = t492 * t59;
2225: t528 = t6 * t59;
2226: t532 = t520 * t20;
2227: t533 = t351 * t532;
2228: t539 = t447 * t59;
2229: t544 = 0.8e1 * t206 * t508 - 0.2e1 * t40 * t512 - 0.16e2 * t368 * t515 + 0.12e2 * t206 * t88 + 0.4e1 * t27 * t522 + 0.4e1 * t525 * t495 - 0.4e1 * t91 * t528 * t36 - 0.16e2 * t368 * t533 - 0.16e2 * t206 * t227 * t427 - t56 * t539 - 0.2e1 * t132 * t133 * t66;
2230: t551 = t87 * t162;
2231: t554 = t351 * t229;
2232: t560 = t59 * t19;
2233: t561 = t560 * t14;
2234: t564 = t101 * t202;
2235: t567 = t87 * t252;
2236: t573 = t227 * t228 * t115;
2237: t578 = 0.4e1 * t33 * t70 + 0.4e1 * t493 * t335 - 0.4e1 * t58 * t551 + 0.16e2 * t9 * t554 - 0.4e1 * t33 * t28 * t252 + 0.2e1 * t147 * t561 + 0.2e1 * t169 * t564 - 0.2e1 * t27 * t567 - 0.8e1 * t324 * t499 - 0.4e1 * t169 * t573 + 0.12e2 * t27 * t244;
2238: t579 = t82 * t202;
2239: t591 = t282 * t115 * t59;
2240: t598 = t101 * t66;
2241: t606 = -0.4e1 * t81 * t579 - 0.2e1 * t169 * t567 - 0.6e1 * t27 * t170 + 0.8e1 * t169 * t203 + 0.2e1 * t98 * t67 + 0.2e1 * t81 * t591 + 0.32e2 * t368 * t244 - 0.2e1 * t27 * t564 + 0.4e1 * t206 * t598 + 0.16e2 * t9 * t170 + 0.2e1 * t33 * t283 * t184;
2242: t608 = t373 * t162;
2243: t611 = t59 * t184;
2244: t617 = t101 * t29;
2245: t624 = t227 * ZB * t18 * t15;
2246: t629 = t157 * t59;
2247: t630 = t629 * t124;
2248: t633 = t3 * t6;
2249: t634 = t175 * t283;
2250: t644 = 0.8e1 * t498 * t608 + 0.2e1 * t33 * t611 * t18 - 0.4e1 * t206 * t389 - 0.2e1 * t27 * t617 - 0.4e1 * t169 * t154 + 0.4e1 * t27 * t624 + 0.12e2 * t27 * t230 - 0.8e1 * t393 * t630 - 0.8e1 * t633 * t634 + 0.16e2 * t47 * t7 * t101 * t50 + 0.2e1 * t123 * t447 * t28;
2251: t645 = t41 * t29;
2252: t648 = t2 * 0.3141592654e1;
2253: t649 = t648 * xc;
2254: t650 = t560 * t184;
2255: t656 = t56 * t1 * t157;
2256: t659 = t87 * t128;
2257: t662 = t96 * t482;
2258: t663 = t629 * t162;
2259: t671 = t161 * t124;
2260: t674 = t218 * t127;
2261: t679 = 0.4e1 * t81 * t645 - 0.4e1 * t649 * t650 - 0.8e1 * t169 * t70 + 0.8e1 * t656 * t163 - 0.2e1 * t98 * t659 - 0.8e1 * t662 * t663 - 0.32e2 * t421 * t175 * t427 - 0.2e1 * t147 * t502 + 0.8e1 * t656 * t671 + 0.2e1 * t147 * t674 - 0.16e2 * t368 * t386;
2262: t714 = t334 * t19;
2263: t719 = t12 * t42;
2264: t722 = t304 * t35 - t346 * t35 + t341 * t59 - t344 * t35 + t344 * t256 + t346 * t184 - 0.16e2 * t368 * t554 - 0.16e2 * t48 * t175 * t50 + 0.4e1 * t525 * t714 - 0.2e1 * t58 * t659 + 0.8e1 * t368 * t719;
2265: t730 = xc * t19;
2266: t735 = t59 * t256 * t14;
2267: t752 = 0.4e1 * t173 * t714 - 0.6e1 * t27 * t515 - 0.16e2 * t9 * t279 + 0.4e1 * t194 * t730 * t184 - t139 * t735 - 0.4e1 * t492 * t127 * t82 * xc - 0.4e1 * t98 * t508 - t123 * t41 * t207 - 0.2e1 * t147 * t298 + 0.8e1 * t368 * t314 + 0.6e1 * t132 * t133 * t207;
2268: t755 = t28 * t21;
2269: t759 = t274 * t338 * t14;
2270: t767 = t11 * t35;
2271: t768 = t767 * t14;
2272: t778 = t560 * t61;
2273: t781 = -0.2e1 * t58 * t504 - 0.8e1 * t27 * t755 + 0.16e2 * t662 * t759 + 0.12e2 * t291 * t282 * t207 - 0.6e1 * t27 * t434 + t139 * t768 - 0.8e1 * t498 * t326 + 0.4e1 * t33 * t611 * t20 + 0.2e1 * t81 * t512 - t139 * t561 + 0.2e1 * t147 * t778;
2274: t786 = t12 * t443;
2275: t790 = t282 * t59 * t20;
2276: t796 = t59 * t14 * t127;
2277: t806 = t41 * t21;
2278: t811 = -0.8e1 * t393 * t663 + 0.8e1 * t368 * t786 + 0.2e1 * t81 * t790 + 0.4e1 * t169 * t624 + t139 * t796 + 0.2e1 * t206 * t258 - 0.2e1 * t40 * t591 - 0.8e1 * t662 * t630 - 0.4e1 * t33 * t30 - 0.4e1 * t40 * t806 + 0.8e1 * t9 * t786;
2279: t819 = t282 * t15 * t127;
2280: t822 = t101 * t363;
2281: t830 = t11 * t256 * t14;
2282: t835 = t227 * t532;
2283: t842 = 0.2e1 * t33 * t11 * t18 * t15 + t123 * t41 * t66 - 0.4e1 * t493 * t819 - 0.2e1 * t27 * t822 - 0.16e2 * t368 * t170 - 0.4e1 * t169 * t463 - t139 * t830 - 0.4e1 * t649 * t179 * t127 + 0.12e2 * t27 * t835 - 0.16e2 * t368 * t434 - 0.2e1 * t40 * t790;
2284: t845 = t87 * t202;
2285: t854 = t338 * t15;
2286: t859 = t12 * t207;
2287: t868 = t139 * t348 - 0.2e1 * t27 * t845 + 0.8e1 * t169 * t755 - 0.2e1 * t58 * t380 + 0.6e1 * t206 * t331 + 0.8e1 * t310 * t854 - 0.2e1 * t169 * t822 + 0.2e1 * t98 * t859 + 0.8e1 * t159 * t671 + 0.8e1 * t74 * t634 - 0.2e1 * t169 * t253;
2288: t880 = t60 * t443;
2289: t891 = t101 * t128;
2290: t894 = -t123 * t539 - 0.2e1 * t147 * t796 + 0.32e2 * t368 * t230 + t139 * t674 - 0.16e2 * t98 * t60 * t124 + 0.32e2 * t9 * t244 + 0.8e1 * t368 * t880 - 0.8e1 * t40 * t41 * xc * t36 - t123 * t82 * t128 - 0.6e1 * t58 * t233 + 0.2e1 * t58 * t891;
2291: t903 = t179 * t19;
2292: t920 = t56 * t1 * t160;
2293: t925 = -0.2e1 * t174 * t175 * t66 - 0.4e1 * t493 * t714 + 0.4e1 * t649 * t903 - 0.4e1 * t81 * t43 + t123 * t82 * t207 + 0.4e1 * t206 * t891 - 0.16e2 * t273 * t759 - 0.8e1 * t27 * t203 + 0.32e2 * t221 * ZB * t51 - 0.16e2 * t920 * t759 - 0.8e1 * t9 * t453;
2294: t932 = t87 * t29;
2295: t945 = t82 * t21;
2296: t953 = -0.16e2 * t920 * t276 - 0.8e1 * t169 * t30 - 0.8e1 * t633 * t77 - 0.2e1 * t27 * t932 - 0.4e1 * t174 * t49 * t162 + 0.8e1 * t206 * t87 * t124 - 0.2e1 * t147 * t768 + 0.4e1 * t169 * t522 - 0.12e2 * t81 * t945 + 0.4e1 * t33 * t28 * t115 + 0.4e1 * t525 * t819;
2297: t971 = t282 * t127;
2298: t978 = -0.6e1 * t98 * t102 + 0.2e1 * t169 * t515 - 0.2e1 * t310 * t377 + 0.2e1 * t147 * t830 + 0.8e1 * t368 * t22 - 0.2e1 * t169 * t617 + 0.16e2 * t662 * t276 - 0.8e1 * t355 * t854 + 0.4e1 * t493 * t971 - 0.16e2 * t9 * t533 - 0.2e1 * t169 * t279;
2299: t997 = xc * t127;
2300: t998 = t997 * t59;
2301: t1003 = 0.4e1 * t40 * t579 + 0.2e1 * t169 * t845 + 0.16e2 * t9 * t515 + 0.8e1 * t206 * t551 + t123 * t41 * t128 + 0.16e2 * t98 * t60 * t162 + 0.2e1 * t169 * t364 - 0.2e1 * t169 * t932 + t139 * t778 + 0.4e1 * t648 * t998 + 0.2e1 * t147 * t412;
2302: t1006 = t2 * t59;
2303: t1017 = xc * t35;
2304: t1033 = 0.4e1 * t1006 * t335 + 0.4e1 * t81 * t806 - 0.2e1 * t33 * t34 * t115 + 0.8e1 * t498 * t374 - 0.16e2 * t261 * t7 * t1017 * t15 + 0.8e1 * t206 * t101 * t124 - t123 * t448 + 0.2e1 * t147 * t735 + 0.6e1 * t98 * t208 + 0.6e1 * t98 * t88 - 0.4e1 * t33 * t755;
2305: t1055 = -0.4e1 * t173 * t971 + 0.2e1 * t98 * t891 + 0.8e1 * t9 * t880 + 0.4e1 * t169 * t835 - t304 * t184 + t344 * t184 - t123 * t41 * t62 - 0.2e1 * t98 * t598 + 0.2e1 * t58 * t859 + 0.32e2 * t47 * t351 * t224 + 0.2e1 * t98 * t389;
2306: t1070 = t15 * t19;
2307: t1089 = -0.16e2 * t368 * t352 - 0.8e1 * t9 * t719 + 0.4e1 * t96 * t2 * xc * t134 - 0.2e1 * t91 * t236 * t115 + 0.4e1 * t27 * t573 + 0.4e1 * t493 * t282 * t1070 + 0.2e1 * t33 * t59 * t18 * t15 + 0.12e2 * t40 * t945 - 0.4e1 * t492 * xc * t82 * t1070 - 0.2e1 * t91 * t528 * t20 + 0.8e1 * t324 * t608;
2308: t1113 = t123 * t82 * t124 + 0.8e1 * t421 * t428 - t139 * t417 + 0.4e1 * t40 * t645 + 0.16e2 * t393 * t759 - 0.2e1 * t33 * t179 * t115 - 0.4e1 * t525 * t335 + 0.4e1 * t33 * t28 * t36 - 0.4e1 * t1006 * t714 + 0.6e1 * t206 * t166 - 0.8e1 * t421 * t450;
2309: t1119 = t321 * t46;
2310: t1122 = t157 * t11;
2311: t1123 = t1122 * t2;
2312: t1124 = t184 * t46;
2313: t1128 = t108 * nz;
2314: t1132 = t7 * t7;
2315: t1133 = t1132 * t11;
2316: t1134 = t1133 * t108;
2317: t1135 = t15 * t46;
2318: t1139 = t7 * ZA;
2319: t1140 = t1139 * ZB;
2320: t1141 = t1 * t35;
2321: t1145 = t629 * t2;
2322: t1146 = t1135 * t730;
2323: t1149 = t157 * t1128;
2324: t1150 = t1149 * xc;
2325: t1153 = t46 * xc;
2326: t1154 = t1153 * t127;
2327: t1158 = t184 * t1 * t46;
2328: t1161 = t46 * t46;
2329: t1162 = t35 * t1161;
2330: t1166 = t7 * t1;
2331: t1170 = -0.4e1 * t133 * t1119 + 0.16e2 * t1123 * t1124 * t730 - 0.8e1 * t1122 * t1128 * t196 - 0.64e2 * t1134 * t1135 * t1017 - 0.32e2 * t1140 * t1141 * t1135 + 0.16e2 * t1145 * t1146 - 0.8e1 * t1150 * t650 - 0.16e2 * t1123 * t1154 - 0.4e1 * t133 * t1158 - 0.16e2 * t1140 * t1162 * t15 + 0.8e1 * t1166 * t35 * t312;
2332: t1171 = t1161 * t184;
2333: t1175 = t1122 * nz;
2334: t1176 = t15 * t1161;
2335: t1180 = t1132 * ZA;
2336: t1181 = t1180 * t355;
2337: t1182 = t1176 * t1017;
2338: t1185 = t1161 * xc;
2339: t1189 = t1133 * t1;
2340: t1192 = t108 * t1;
2341: t1193 = t1132 * t1192;
2342: t1195 = t10 * t35;
2343: t1199 = t157 * t15;
2344: t1203 = t1141 * t46;
2345: t1211 = t184 * t108;
2346: t1218 = 0.2e1 * t133 * t1171 * t35 + 0.8e1 * t1175 * t1176 * t997 + 0.64e2 * t1181 * t1182 - 0.8e1 * t1175 * t1185 * t127 - 0.32e2 * t1189 * t1182 - 0.64e2 * t1193 * ZA * t1195 * t228 + 0.8e1 * t1199 * t416 * t1128 + 0.8e1 * t1140 * t1203 - 0.4e1 * t75 * t1158 - 0.8e1 * t1199 * t560 * t1128 - 0.2e1 * t133 * t1211 - 0.8e1 * t1199 * t127 * t11 * t1128;
2347: t1221 = t256 * t1161;
2348: t1224 = t35 * t108;
2349: t1233 = t7 * t256;
2350: t1236 = -t75 * t1211 - t75 * t1221 - t133 * t1221 + t75 * t1224 - t75 * t1171 - t133 * t1171 + t133 * t1224 + t75 * t1162 - t75 * t108 * t256 + t133 * t1162 - t1233 * t59 * t108;
2351: t1240 = t1135 * t1195;
2352: t1252 = t629 * t127;
2353: t1263 = t1171 * ZA;
2354: t1280 = -0.128e3 * t1180 * ZB * t108 * t1240 + 0.32e2 * t1193 * t10 * t112 + 0.4e1 * t133 * t1203 + 0.4e1 * t109 * t256 * ZA * ZB - 0.8e1 * t1252 * nz * t15 * t1185 + 0.8e1 * t1175 * t1171 * t730 - 0.8e1 * t1175 * t1176 * t127 + 0.4e1 * t223 * t1263 - 0.8e1 * t1175 * t1176 * t730 + 0.8e1 * t1166 * ZA * t341 * ZB + 0.64e2 * t1134 * t1240 + 0.8e1 * t1122 * xc * t1128 * t127 * t15;
2355: t1283 = t1199 * t19;
2356: t1287 = t1199 * t127;
2357: t1289 = t59 * nz * t1161;
2358: t1293 = t157 * nz * xc;
2359: t1304 = t1132 * t108;
2360: t1310 = t263 * ZB;
2361: t1316 = t2 * t15;
2362: t1323 = -0.16e2 * t1283 * t1006 * t46 + 0.8e1 * t1287 * t1289 + 0.8e1 * t1293 * t127 * t1161 * t59 + 0.16e2 * t1123 * t1135 * t19 + 0.8e1 * t1293 * t560 * t1176 + 0.64e2 * t1304 * t59 * t1240 + 0.4e1 * t75 * t1203 + 0.4e1 * t1310 * t1263 + 0.4e1 * t223 * t338 * t108 - 0.16e2 * t1252 * t1316 * t1153 - 0.16e2 * t1310 * t221 * t15;
2363: t1330 = t1132 * t15;
2364: t1336 = t1132 * t1;
2365: t1338 = t1162 * t179;
2366: t1370 = 0.8e1 * t1175 * t1176 * t19 + 0.4e1 * t1139 * t318 * t1161 + 0.128e3 * t1330 * t318 * t108 * t46 * t227 - 0.32e2 * t1336 * xc * t1338 + 0.4e1 * t1233 * ZA * t1161 * ZB - 0.8e1 * t1287 * t59 * t1128 * xc + 0.2e1 * t75 * t305 * t108 + 0.8e1 * t1199 * t127 * t59 * t1128 - 0.8e1 * t1283 * t1289 - 0.8e1 * t1293 * t560 * t1171 + 0.4e1 * t133 * t35 * t1158 + 0.8e1 * t157 * t184 * t19 * t11 * t1128 * xc;
2367: t1376 = t7 * t184;
2368: t1380 = t1176 * t1195;
2369: t1393 = t1330 * t35;
2370: t1411 = 0.16e2 * t1145 * t1154 + 0.8e1 * t1149 * t998 + 0.4e1 * t1376 * t35 * t48 + 0.32e2 * t1189 * t1380 + 0.32e2 * t1193 * t11 * t1195 * t15 - 0.64e2 * t1304 * xc * t111 * t1135 - 0.16e2 * t1123 * t1146 + 0.64e2 * t1393 * t28 * t1192 * xc - 0.16e2 * t1123 * t1135 * t127 - 0.8e1 * t1122 * xc * t1128 * t127 - 0.32e2 * t1193 * xc * t112 + 0.16e2 * t1252 * t1316 * t46;
2371: t1450 = 0.2e1 * t1376 * t767 * t1161 + 0.2e1 * t1376 * t111 * t108 + 0.4e1 * t223 * t311 * t108 + 0.4e1 * t109 * t35 * t520 * ZA + 0.16e2 * t1123 * t1135 * t997 - 0.64e2 * t1181 * t1380 + 0.8e1 * t1150 * t903 - 0.32e2 * t1393 * t11 * t1192 * xc - 0.16e2 * t157 * t2 * xc * t560 * t1124 + 0.8e1 * t223 * t184 * t317 * t46 + 0.32e2 * t1336 * t10 * t1338 - 0.4e1 * t75 * t1119;
2372: _PC3B = (t606 + t722 + t1089 + t781 + 0.16e2 * t48 * t51 + t978 + t868 + t507 - t304 * t256 + 0.8e1 * t9 * t22 + t752 + 0.4e1 * t174 * t144 - 0.2e1 * t81 * t469 + 0.6e1 * t139 * t166 + t362 + 0.2e1 * t98 * t211 + t925 + t137 - t290 * t184 + 0.12e2 * t81 * t83 + t842 + 0.8e1 * t74 * t77 + 0.16e2 * t98 * t12 * t162 - 0.4e1 * t33 * t28 * t443 - 0.8e1 * t27 * t70 - 0.2e1 * t33 * t34 * t36 - 0.8e1 * t27 * t30 + 0.2e1 * t58 * t67 - 0.4e1 * t40 * t43 + 0.2e1 * t58 * t63 + t1033 - t290 * t256 + t290 * t35 + t193 + t1113 + t578 + t442 + t474 + t544 + t329 + t679 + t401 + t953 + t811 + t644 + t894 + t289 + t240 + t1055 + t1003) / (t1170 + t1218 + 0.2e1 * t1236 + t1280 + t1323 + t1370 + t1411 + t1450);
2373: /****************************************************************************************/
2374: t1 = nz * nz;
2375: t2 = t1 * xc;
2376: t3 = ZB * ZB;
2377: t5 = t2 * 0.3141592654e1 * t3;
2378: t6 = nx * 0.3141592654e1;
2379: t7 = t6 * xc;
2380: t8 = PetscCosReal(t7);
2381: t9 = nx * nx;
2382: t10 = t8 * t9;
2383: t11 = nz * 0.3141592654e1;
2384: t12 = PetscExpReal(t11);
2385: t13 = t12 * t12;
2386: t16 = PetscExpReal(xc * nz * 0.3141592654e1);
2387: t17 = t16 * t16;
2388: t18 = t17 * t16;
2389: t19 = t17 * t17;
2390: t20 = t19 * t18;
2391: t21 = t13 * t20;
2392: t22 = t10 * t21;
2393: t25 = ZA * ZA;
2394: t26 = t1 * t25;
2395: t27 = xc * 0.3141592654e1;
2396: t28 = t26 * t27;
2397: t29 = t19 * t16;
2398: t30 = t13 * t13;
2399: t31 = t29 * t30;
2400: t35 = t9 * nx;
2401: t36 = t3 * t35;
2402: t37 = PetscSinReal(t6);
2403: t38 = t13 * t12;
2404: t39 = t37 * t38;
2405: t40 = t39 * t19;
2406: t42 = t1 * t1;
2407: t43 = nx * t42;
2408: t44 = xc * xc;
2409: t45 = t25 * t44;
2410: t46 = t43 * t45;
2411: t47 = 0.3141592654e1 * 0.3141592654e1;
2412: t48 = t47 * t37;
2413: t49 = t17 * t38;
2414: t54 = 0.3141592654e1 * t35;
2415: t55 = ZA * nz * t54;
2416: t56 = t37 * ZB;
2417: t57 = t19 * t12;
2418: t61 = t25 * t8;
2419: t62 = t61 * t9;
2420: t63 = nz * t30;
2421: t64 = t63 * t16;
2422: t67 = t1 * nz;
2423: t69 = t47 * ZB;
2424: t70 = t67 * t44 * t69;
2425: t75 = nx * t3;
2426: t76 = t75 * t37;
2427: t77 = t67 * 0.3141592654e1;
2428: t78 = t19 * t19;
2429: t79 = t78 * t12;
2430: t80 = t77 * t79;
2431: t82 = t3 * t38;
2432: t84 = t54 * t37;
2433: t87 = PetscSinReal(t7);
2434: t88 = t29 * t87;
2435: t89 = t47 * t44;
2436: t93 = nx * t25;
2437: t94 = t87 * t42;
2438: t95 = t93 * t94;
2439: t96 = t47 * xc;
2440: t97 = t13 * t29;
2441: t98 = t96 * t97;
2442: t101 = t87 * t67;
2443: t102 = t93 * t101;
2444: t103 = t13 * t18;
2445: t107 = t47 * t35;
2446: t108 = t26 * t107;
2447: t109 = t37 * t44;
2448: t110 = t19 * t17;
2449: t111 = t12 * t110;
2450: t116 = t37 * t19 * t12;
2451: t118 = t37 * xc;
2452: t119 = ZB * t19;
2453: t120 = t119 * t12;
2454: t121 = t118 * t120;
2455: t125 = xc * t3;
2456: t126 = t1 * t47 * t125;
2457: t127 = t35 * t37;
2458: t128 = t38 * t19;
2459: t129 = t127 * t128;
2460: t132 = t26 * 0.3141592654e1;
2461: t133 = t16 * t13;
2462: t134 = t10 * t133;
2463: t137 = 0.3141592654e1 * ZB;
2464: t138 = t2 * t137;
2465: t139 = ZA * t8;
2466: t140 = t9 * t13;
2467: t145 = t30 * t18;
2468: t146 = t10 * t145;
2469: t149 = t3 * t8;
2470: t150 = t149 * t9;
2471: t153 = 0.2e1 * t5 * t22 + 0.2e1 * t28 * t10 * t31 + t36 * t40 - 0.2e1 * t46 * t48 * t49 - 0.2e1 * t55 * t56 * t57 - 0.2e1 * t62 * t64 + 0.16e2 * t70 * t29 * ZA * t10 - t76 * t80 + t82 * nz * t84 + 0.8e1 * t43 * t3 * t88 * t89 + 0.16e2 * t95 * t98 + 0.2e1 * t102 * t27 * t103 - 0.2e1 * t108 * t109 * t111 + t36 * t116 + 0.8e1 * t55 * t121 - 0.4e1 * t126 * t129 - 0.4e1 * t132 * t134 - 0.4e1 * t138 * t139 * t140 * t20 + 0.8e1 * t28 * t146 - 0.2e1 * t150 * t64;
2472: t154 = t42 * nz;
2473: t155 = nx * t154;
2474: t156 = t44 * xc;
2475: t157 = t47 * 0.3141592654e1;
2476: t158 = t156 * t157;
2477: t159 = t155 * t158;
2478: t162 = t56 * ZA * t19 * t12;
2479: t165 = t77 * t49;
2480: t167 = t1 * t3;
2481: t168 = t167 * t89;
2482: t169 = t127 * t49;
2483: t172 = t37 * t67;
2484: t173 = t75 * t172;
2485: t174 = t38 * t110;
2486: t175 = t27 * t174;
2487: t179 = t47 * t25;
2488: t181 = t10 * t97;
2489: t184 = t27 * t31;
2490: t187 = t67 * t47;
2491: t188 = t44 * t3;
2492: t189 = t187 * t188;
2493: t192 = t25 * t35;
2494: t193 = t37 * t17;
2495: t194 = t193 * t12;
2496: t196 = nx * ZA;
2497: t197 = t196 * t172;
2498: t198 = ZB * t38;
2499: t199 = t198 * t19;
2500: t204 = t1 * t12 * t110;
2501: t207 = nx * ZB;
2502: t209 = t1 * ZA;
2503: t215 = t67 * t3;
2504: t216 = t47 * t8;
2505: t217 = t215 * t216;
2506: t218 = t9 * xc;
2507: t222 = nx * t67;
2508: t223 = t222 * t27;
2509: t224 = t3 * t87;
2510: t228 = t167 * t107;
2511: t232 = t26 * t96;
2512: t235 = t207 * t94;
2513: t236 = t47 * ZA;
2514: t243 = xc * t13;
2515: t244 = t243 * t29;
2516: t248 = t25 * nz;
2517: t249 = t248 * 0.3141592654e1;
2518: t253 = ZB * ZA;
2519: t254 = t253 * t8;
2520: t255 = t9 * nz;
2521: t256 = t30 * t16;
2522: t260 = 0.2e1 * t207 * t37 * t209 * t128 + 0.2e1 * t5 * t134 - 0.16e2 * t217 * t218 * t97 - 0.2e1 * t223 * t224 * t31 - 0.2e1 * t228 * t109 * t174 - 0.2e1 * t232 * t169 - 0.16e2 * t235 * t236 * t44 * t30 * t18 - 0.4e1 * t196 * t101 * t137 * t244 + t249 * t169 + 0.8e1 * t168 * t129 + 0.4e1 * t254 * t255 * t256;
2523: t263 = t43 * t179;
2524: t267 = t3 * nz;
2525: t268 = t267 * t54;
2526: t269 = t118 * t57;
2527: t272 = t39 * t1;
2528: t274 = t67 * t25;
2529: t275 = t274 * t158;
2530: t278 = t75 * t87;
2531: t279 = t77 * t103;
2532: t282 = t25 * t38;
2533: t285 = ZA * t38;
2534: t290 = t267 * 0.3141592654e1;
2535: t296 = t77 * t111;
2536: t298 = t196 * t37;
2537: t299 = t1 * ZB;
2538: t303 = t37 * t42;
2539: t304 = t196 * t303;
2540: t308 = t77 * t57;
2541: t310 = t26 * t89;
2542: t313 = t77 * t128;
2543: t316 = t101 * t27;
2544: t319 = t93 * t87;
2545: t320 = t77 * t97;
2546: t323 = t127 * t57;
2547: t326 = t10 * nz;
2548: t329 = t118 * t174;
2549: t332 = -0.8e1 * t263 * t109 * t57 - 0.4e1 * t268 * t269 + t93 * t272 + 0.8e1 * t275 * t129 - 0.4e1 * t278 * t279 + t282 * nz * t84 - 0.2e1 * t285 * nz * t54 * t56 - t290 * t169 - 0.2e1 * t196 * t38 * t172 * t137 + t76 * t296 - 0.2e1 * t298 * t299 * t79 + 0.8e1 * t304 * t96 * t120 + t76 * t308 - 0.2e1 * t310 * t169 - t76 * t313 + 0.2e1 * t75 * t18 * t316 + 0.4e1 * t319 * t320 + t249 * t323 - 0.2e1 * t25 * t18 * t326 + 0.2e1 * t228 * t329;
2550: t335 = t75 * t101;
2551: t336 = t27 * t21;
2552: t342 = t77 * t133;
2553: t347 = t209 * t137;
2554: t350 = t9 * t1;
2555: t351 = t149 * t350;
2556: t355 = t37 * t78 * t12;
2557: t359 = t93 * t303;
2558: t367 = t172 * 0.3141592654e1;
2559: t369 = t96 * t103;
2560: t376 = t209 * t107;
2561: t379 = t10 * t103;
2562: t383 = t207 * t101;
2563: t389 = 0.3141592654e1 * ZA;
2564: t390 = t222 * t389;
2565: t391 = t87 * ZB;
2566: t398 = -0.2e1 * t102 * t336 + t93 * t38 * t367 + 0.16e2 * t95 * t369 - t82 * t127 - 0.8e1 * t197 * t27 * t120 + 0.8e1 * t376 * t121 - 0.8e1 * t189 * t379 - t249 * t129 - 0.4e1 * t383 * t27 * ZA * t16 * t13 - 0.8e1 * t390 * t391 * t21 - 0.2e1 * t197 * t137 * t57;
2567: t402 = t39 * t110;
2568: t404 = t193 * t38;
2569: t406 = t127 * t174;
2570: t408 = t167 * 0.3141592654e1;
2571: t411 = t44 * t157;
2572: t412 = t155 * t411;
2573: t413 = t285 * t19;
2574: t414 = t56 * t413;
2575: t417 = ZA * t30;
2576: t424 = t93 * t37;
2577: t426 = t248 * t54;
2578: t427 = t17 * t12;
2579: t428 = t118 * t427;
2580: t431 = t77 * t21;
2581: t438 = ZA * t13;
2582: t443 = t93 * t172;
2583: t444 = t27 * t427;
2584: t448 = t1 * t78 * t12;
2585: t455 = t274 * t89;
2586: t461 = t118 * t111;
2587: t464 = -t36 * t402 + t36 * t404 - t249 * t406 - 0.4e1 * t408 * t134 + 0.16e2 * t412 * t414 - 0.4e1 * t383 * t27 * t417 * t18 + 0.2e1 * t28 * t22 - t424 * t80 - 0.2e1 * t426 * t428 + 0.4e1 * t278 * t431 + 0.4e1 * t254 * t255 * t103 + t290 * t323 + 0.4e1 * t383 * t27 * t438 * t20 + 0.2e1 * t443 * t444 + t424 * t448 - t36 * t194 - 0.32e2 * t235 * t236 * t243 * t18 + 0.8e1 * t455 * t181 - 0.4e1 * t359 * t96 * t128 - 0.2e1 * t426 * t461;
2588: t469 = nz * t16 * t13;
2589: t474 = t1 * t38;
2590: t475 = t474 * t19;
2591: t480 = t89 * t103;
2592: t483 = t67 * ZA;
2593: t484 = t483 * t411;
2594: t485 = t127 * t120;
2595: t488 = t127 * t111;
2596: t497 = t77 * t427;
2597: t502 = t27 * t97;
2598: t508 = t1 * t19 * t12;
2599: t511 = t155 * t25 * t156;
2600: t512 = t157 * t37;
2601: t513 = t512 * t128;
2602: t527 = t1 * t17;
2603: t528 = t527 * t38;
2604: t530 = -t76 * t497 - 0.4e1 * t254 * t255 * t97 - 0.2e1 * t102 * t502 - 0.4e1 * t108 * t269 - t76 * t508 + 0.8e1 * t511 * t513 + 0.4e1 * t150 * t63 * t18 + 0.4e1 * t383 * t27 * t438 * t18 + 0.4e1 * t132 * t379 + 0.2e1 * t168 * t488 - t76 * t528;
2605: t535 = t44 * t13;
2606: t542 = t527 * t12;
2607: t544 = nz * t13;
2608: t545 = t544 * t20;
2609: t548 = t75 * t303;
2610: t549 = t96 * t111;
2611: t552 = ZA * t35;
2612: t553 = t552 * t37;
2613: t562 = t43 * t96;
2614: t563 = t3 * t37;
2615: t564 = t563 * t128;
2616: t579 = t474 * t110;
2617: t590 = t9 * t30;
2618: t591 = t590 * t18;
2619: t595 = t127 * t427;
2620: t598 = t77 * t174;
2621: t600 = 0.4e1 * t5 * t146 + 0.16e2 * t235 * t236 * t535 * t18 + 0.8e1 * t455 * t146 + t76 * t542 - 0.2e1 * t150 * t545 + 0.2e1 * t548 * t549 - 0.2e1 * t553 * t120 + t290 * t488 - 0.8e1 * t274 * t47 * t44 * t29 * t10 - 0.4e1 * t562 * t564 - 0.2e1 * t132 * xc * t20 * t10 - 0.32e2 * t562 * ZA * t87 * ZB * t13 * t29 - 0.8e1 * t347 * t379 + t76 * t579 - 0.4e1 * t359 * t96 * t57 + 0.4e1 * t408 * t181 - 0.4e1 * t223 * t564 - 0.12e2 * t209 * t27 * ZB * t8 * t591 + 0.2e1 * t310 * t595 + t76 * t598;
2622: t601 = t27 * t49;
2623: t604 = t127 * t79;
2624: t606 = ZB * t29;
2625: t616 = t139 * t140 * t18;
2626: t638 = t10 * t256;
2627: t643 = t118 * t199;
2628: t653 = t544 * t29;
2629: t658 = t3 * t29;
2630: t660 = t350 * t27;
2631: t663 = -0.4e1 * t254 * t255 * t145 + 0.2e1 * t267 * t20 * t8 * t9 - 0.4e1 * t138 * t139 * t9 * t16 * t13 - 0.2e1 * t5 * t638 + 0.2e1 * t126 * t169 + 0.8e1 * t376 * t643 + 0.4e1 * t335 * t27 * t145 + 0.16e2 * t235 * t236 * t535 * t29 + 0.6e1 * t150 * t653 - 0.4e1 * t426 * t269 + 0.4e1 * t658 * t8 * t660;
2632: t670 = t274 * t411;
2633: t673 = t118 * t49;
2634: t694 = t155 * t45;
2635: t713 = nz * t29 * t30;
2636: t717 = t20 * t87;
2637: t723 = t512 * t57;
2638: t728 = -0.2e1 * t443 * t175 - 0.8e1 * t670 * t129 + 0.2e1 * t426 * t673 - 0.16e2 * t207 * t88 * t42 * t47 * ZA * t44 + 0.4e1 * t254 * t255 * t21 + t249 * t595 + 0.8e1 * t25 * t29 * t8 * t660 + 0.2e1 * t268 * t461 + 0.8e1 * t189 * t181 - 0.8e1 * t694 * t513 + 0.2e1 * t198 * t553 - 0.12e2 * t606 * t139 * t660 - 0.2e1 * t359 * t549 + 0.4e1 * t138 * t139 * t590 * t16 + 0.8e1 * t93 * t29 * t94 * t89 - 0.2e1 * t150 * t713 + 0.2e1 * t222 * t3 * t717 * t27 + 0.8e1 * t670 * t323 + 0.8e1 * t694 * t723 - 0.2e1 * t62 * t653;
2639: t734 = t43 * t89;
2640: t735 = t563 * t427;
2641: t740 = t75 * t94;
2642: t744 = ZB * xc;
2643: t750 = t563 * t57;
2644: t754 = t218 * t103;
2645: t771 = t127 * t199;
2646: t776 = t89 * t174;
2647: t791 = -0.4e1 * t207 * t717 * t77 * xc * ZA + 0.4e1 * t443 * t27 * t57 + t192 * t40 - 0.8e1 * t55 * t643 - 0.16e2 * t209 * t89 * t771 - 0.8e1 * t275 * t323 + 0.2e1 * t359 * t776 + 0.16e2 * t304 * t89 * t199 + 0.4e1 * t278 * t320 + 0.2e1 * t207 * t172 * t389 * t79 - 0.8e1 * t390 * t391 * t97;
2648: t794 = t483 * t158;
2649: t801 = t2 * 0.3141592654e1;
2650: t818 = t215 * t411;
2651: t827 = t96 * t174;
2652: t837 = t37 * t12 * t110;
2653: t845 = 0.16e2 * t794 * t485 + 0.8e1 * t159 * t564 - 0.8e1 * t455 * t379 - 0.2e1 * t801 * t3 * t20 * t10 - 0.4e1 * t132 * t22 - 0.8e1 * t734 * t564 - 0.8e1 * t187 * t44 * t658 * t10 - 0.8e1 * t412 * t564 + 0.4e1 * t132 * t181 - 0.8e1 * t818 * t129 + 0.2e1 * t46 * t48 * t427 - 0.4e1 * t75 * t29 * t316 - 0.2e1 * t359 * t827 - t290 * t595 + 0.16e2 * t217 * t754 - t424 * t542 - 0.8e1 * t734 * t750 - t192 * t837 - 0.4e1 * t254 * t255 * t133 + 0.8e1 * t304 * t96 * t199;
2654: t864 = t544 * t18;
2655: t867 = t3 * t18;
2656: t884 = t27 * t256;
2657: t891 = t187 * t744;
2658: t894 = t563 * t49;
2659: t900 = -0.2e1 * t263 * t428 + 0.2e1 * t228 * t428 - 0.6e1 * t223 * t224 * t103 - t192 * t404 + 0.2e1 * t268 * t428 - 0.2e1 * t335 * t884 - t424 * t296 + 0.2e1 * t93 * t20 * t316 - 0.32e2 * t891 * t616 + 0.2e1 * t562 * t894 - 0.2e1 * t801 * t867 * t10;
2660: t904 = t27 * t111;
2661: t907 = t118 * t128;
2662: t915 = t89 * t145;
2663: t947 = t139 * t140 * t29;
2664: t952 = -0.2e1 * t173 * t904 + 0.4e1 * t426 * t907 + 0.12e2 * t253 * t10 * t1 * 0.3141592654e1 * t244 + 0.8e1 * t95 * t915 - t36 * t355 - 0.16e2 * t794 * t771 - 0.8e1 * t511 * t723 + 0.16e2 * t734 * t162 + t36 * t837 + 0.2e1 * t298 * t299 * t57 - 0.2e1 * t28 * t638 - 0.2e1 * t62 * t545 + 0.2e1 * t310 * t406 + 0.12e2 * t138 * t616 + 0.4e1 * t223 * t750 + t424 * t497 + 0.2e1 * t734 * t894 + 0.2e1 * t132 * xc * t18 * t10 - 0.16e2 * t70 * t947 + 0.32e2 * t891 * t947;
2665: t969 = t67 * t157 * t156 * t3;
2666: t974 = t27 * t133;
2667: t1001 = -0.8e1 * t159 * t750 - 0.16e2 * t412 * t162 - t290 * t129 + 0.8e1 * t310 * t323 - 0.4e1 * t319 * t342 + t75 * t272 + t192 * t402 - 0.8e1 * t359 * t89 * t128 - 0.10e2 * t61 * t350 * t502 + 0.8e1 * t818 * t323 - 0.4e1 * t108 * t907;
2668: t1042 = t89 * t97;
2669: t1055 = -0.2e1 * t168 * t595 + 0.16e2 * t484 * t771 + 0.4e1 * t11 * t125 * t129 - 0.2e1 * t173 * t444 + 0.2e1 * ZB * nz * t54 * t37 * ZA * t79 - t424 * t475 + 0.2e1 * t562 * t735 - 0.2e1 * t548 * t776 + t424 * t204 + 0.2e1 * t25 * t20 * t326 + 0.8e1 * t383 * t389 * t133 + t75 * t38 * t367 + 0.2e1 * t62 * t469 + 0.2e1 * t197 * t137 * t128 - 0.2e1 * t102 * t884 - 0.2e1 * t5 * t379 - 0.8e1 * t740 * t1042 - 0.16e2 * t159 * t414 - 0.2e1 * ZB * t35 * t37 * t413 + 0.2e1 * t553 * ZB * t78 * t12;
2670: t1096 = 0.2e1 * t443 * t904 - 0.2e1 * t268 * t329 - 0.2e1 * t443 * t601 + 0.2e1 * t102 * t974 - 0.2e1 * t263 * t673 + t424 * t165 + 0.2e1 * t62 * t713 + t424 * t308 - t424 * t313 + 0.8e1 * t347 * t22 - t424 * t598;
2671: t1103 = t42 * t1 * t157;
2672: t1104 = t1103 * t25;
2673: t1108 = t3 * t19;
2674: t1112 = nz * t47;
2675: t1113 = t9 * t9;
2676: t1118 = t42 * t157;
2677: t1119 = t1118 * t9;
2678: t1120 = t25 * xc;
2679: t1121 = t13 * t110;
2680: t1122 = t1120 * t1121;
2681: t1125 = t47 * t47;
2682: t1126 = t67 * t1125;
2683: t1127 = t1113 * ZA;
2684: t1128 = t1126 * t1127;
2685: t1129 = t19 * t13;
2686: t1130 = t744 * t1129;
2687: t1133 = t154 * t1125;
2688: t1134 = t1133 * t9;
2689: t1135 = t45 * t1129;
2690: t1138 = t154 * t47;
2691: t1139 = t25 * t30;
2692: t1142 = t1126 * t1113;
2693: t1145 = t125 * t1129;
2694: t1148 = t1103 * xc;
2695: t1149 = t3 * t13;
2696: t1150 = t1149 * t17;
2697: t1153 = t25 * t78;
2698: t1156 = -0.8e1 * t1104 * t243 * t17 + 0.4e1 * t187 * t1108 * t9 - 0.2e1 * t1112 * t3 * t1113 * t30 + 0.16e2 * t1119 * t1122 + 0.64e2 * t1128 * t1130 + 0.64e2 * t1134 * t1135 - 0.2e1 * t1138 * t1139 + 0.32e2 * t1142 * t1135 - 0.32e2 * t1142 * t1145 + 0.8e1 * t1148 * t1150 - 0.2e1 * t1138 * t1153;
2699: t1157 = t25 * t13;
2700: t1158 = t1157 * t17;
2701: t1161 = t13 * t17;
2702: t1162 = t1120 * t1161;
2703: t1165 = t3 * t78;
2704: t1170 = t42 * t67 * t1125;
2705: t1172 = t1108 * t13;
2706: t1175 = t1 * t157;
2707: t1176 = t1175 * t1113;
2708: t1182 = t1120 * t1129;
2709: t1189 = t110 * t9 * xc;
2710: t1192 = t1149 * t110;
2711: t1201 = 0.8e1 * t1103 * t1158 - 0.16e2 * t1119 * t1162 - 0.2e1 * t1112 * t1165 * t1113 + 0.32e2 * t1170 * t44 * t1172 - 0.8e1 * t1176 * t1162 + 0.8e1 * t1104 * t243 * t110 - 0.64e2 * t1134 * t1182 - 0.64e2 * t1134 * t1145 + 0.16e2 * t1118 * t3 * t1189 + 0.16e2 * t1119 * t1192 - 0.4e1 * t187 * t1165 * t9 - 0.4e1 * t187 * t1139 * t9;
2712: t1209 = t17 * t30;
2713: t1210 = t125 * t1209;
2714: t1213 = t1138 * ZA;
2715: t1214 = ZB * t30;
2716: t1218 = t1157 * t110;
2717: t1226 = t3 * t30;
2718: t1237 = t1170 * t25;
2719: t1242 = 0.4e1 * t1112 * ZA * t119 * t1113 - 0.16e2 * t1119 * t1150 - 0.8e1 * t1176 * t1210 + 0.4e1 * t1213 * t1214 * t19 - 0.16e2 * t1119 * t1218 - 0.32e2 * t1142 * t1182 - 0.8e1 * t1103 * t1120 * t110 - 0.4e1 * t187 * t1226 * t9 + 0.8e1 * t1103 * t1192 + 0.4e1 * t1112 * ZB * t1113 * t30 * ZA - 0.32e2 * t1237 * xc * t19 * t13;
2720: t1251 = t125 * t1121;
2721: t1260 = t1120 * t1209;
2722: t1263 = t1139 * t19;
2723: t1282 = 0.8e1 * t1103 * t110 * t3 * xc + 0.8e1 * t1104 * xc * t17 * t30 - 0.8e1 * t1176 * t1251 + 0.16e2 * t1119 * t1158 + 0.4e1 * t1112 * t78 * t1127 * ZB + 0.16e2 * t1119 * t1260 + 0.2e1 * t1138 * t1263 - 0.32e2 * t1170 * xc * t1172 - 0.16e2 * t1213 * t119 * t13 + 0.4e1 * t1138 * t1214 * ZA + 0.32e2 * t1237 * t44 * t19 * t13 - 0.16e2 * t1118 * t25 * t1189;
2724: t1287 = t188 * t1129;
2725: t1292 = t25 * t19;
2726: t1296 = t187 * t9;
2727: t1297 = t1226 * t19;
2728: t1311 = t1112 * t1113;
2729: t1317 = -0.8e1 * t1176 * t1150 + 0.32e2 * t1142 * t1287 - 0.8e1 * t1103 * t1150 + 0.2e1 * t1112 * t1292 * t1113 + 0.4e1 * t1296 * t1297 + 0.8e1 * t1176 * t1192 + 0.4e1 * t1296 * t1263 + 0.8e1 * t1176 * t1158 - 0.8e1 * t1175 * t25 * t1113 * xc * t110 + 0.2e1 * t1311 * t1297 + 0.2e1 * t1112 * t1108 * t1113;
2730: t1320 = t253 * t1129;
2731: t1328 = t253 * t30 * t19;
2732: t1333 = t125 * t1161;
2733: t1343 = ZB * t44 * t1129;
2734: t1350 = -0.8e1 * t1176 * t1218 - 0.16e2 * t1311 * t1320 + 0.8e1 * t1176 * t1260 - 0.16e2 * t1119 * t1210 + 0.4e1 * t1311 * t1328 + 0.2e1 * t1311 * t1263 + 0.8e1 * t1176 * t1333 + 0.8e1 * t187 * ZB * t417 * t9 - 0.2e1 * t1138 * t1165 - 0.64e2 * t1128 * t1343 + 0.64e2 * t1134 * t1287 + 0.2e1 * t1138 * t1108;
2735: t1369 = t1133 * t9 * ZA;
2736: t1378 = t187 * ZA;
2737: t1383 = t1170 * ZA;
2738: t1388 = 0.2e1 * t1138 * t1297 - 0.8e1 * t1148 * t1192 + 0.2e1 * t1138 * t1292 - 0.16e2 * t1119 * t1251 + 0.8e1 * t1175 * xc * t110 * t1113 * t3 - 0.2e1 * t1112 * t1153 * t1113 + 0.128e3 * t1369 * t1130 + 0.16e2 * t1119 * t1333 + 0.4e1 * t1138 * t78 * ZA * ZB + 0.8e1 * t1378 * t78 * t9 * ZB - 0.64e2 * t1383 * t1343 + 0.64e2 * t1383 * t1130;
2739: t1420 = 0.4e1 * t1138 * t119 * ZA - 0.128e3 * t1369 * t1343 - 0.4e1 * t187 * t1153 * t9 - 0.2e1 * t1138 * t1226 + 0.8e1 * t1296 * t1328 - 0.2e1 * t1112 * t1139 * t1113 - 0.8e1 * t1148 * t3 * t17 * t30 - 0.32e2 * t1296 * t1320 + 0.8e1 * t1176 * t1122 + 0.4e1 * t187 * t1292 * t9 + 0.8e1 * t1378 * t119 * t9 - 0.8e1 * t1103 * t1218;
2741: _PC4B = (-t424 * t508 + 0.8e1 * t412 * t750 - 0.2e1 * t232 * t595 - 0.4e1 * t126 * t323 + t1096 - t76 * t204 + t728 + 0.2e1 * t548 * t827 + 0.2e1 * t150 * t469 + t398 + 0.8e1 * t189 * t146 + t260 - 0.2e1 * t351 * t184 - 0.2e1 * t268 * t673 - 0.4e1 * t319 * t279 + t464 - 0.2e1 * t108 * t461 + 0.16e2 * t740 * t369 + 0.16e2 * t274 * t216 * t754 - 0.16e2 * t70 * t139 * t591 + 0.2e1 * t55 * t56 * t128 - 0.2e1 * t359 * t89 * t111 + 0.2e1 * t734 * t563 * t111 + 0.6e1 * t223 * t224 * t97 + 0.8e1 * t383 * t389 * t103 + 0.4e1 * t606 * ZA * t326 - 0.2e1 * t93 * t18 * t316 - 0.4e1 * t443 * t27 * t128 + 0.8e1 * t197 * t27 * t199 + 0.8e1 * t108 * t109 * t128 - t249 * t604 + 0.16e2 * t70 * t616 - 0.8e1 * t969 * t323 + t845 - t424 * t579 + 0.16e2 * t159 * t162 + t290 * t406 - 0.6e1 * t150 * t864 + t192 * t116 + 0.2e1 * t867 * t326 - 0.4e1 * t658 * t326 - 0.2e1 * t351 * t502 - t76 * t165 + t900 + 0.8e1 * t168 * t323 + t791 + 0.8e1 * t740 * t915 - 0.4e1 * t562 * t750 - 0.4e1 * t278 * t342 + 0.4e1 * t319 * t431 + 0.2e1 * t173 * t175 + t424 * t528 + 0.8e1 * t969 * t129 - 0.8e1 * t347 * t181 + t332 + t530 - 0.2e1 * t108 * t329 - 0.2e1 * t207 * t38 * t37 * t1 * ZA + t1001 + 0.4e1 * t408 * t379 + t76 * t448 + 0.2e1 * t102 * t184 + 0.2e1 * t426 * t329 + 0.16e2 * t740 * t98 - t282 * t127 - 0.16e2 * t1 * t44 * t69 * t552 * t116 + 0.2e1 * t168 * t169 + 0.2e1 * t28 * t134 - t290 * t604 - 0.16e2 * t484 * t485 - 0.8e1 * t740 * t480 + 0.2e1 * t173 * t601 - 0.2e1 * t335 * t336 + t600 + 0.2e1 * t62 * t864 + t952 + 0.8e1 * t347 * t134 - t192 * t355 + t192 * t194 + 0.2e1 * t228 * t461 + t663 + 0.4e1 * t383 * t27 * t417 * t16 + 0.4e1 * t138 * t20 * ZA * t10 - 0.4e1 * t20 * ZB * ZA * t326 + 0.4e1 * t196 * t88 * t77 * t744 - 0.16e2 * t67 * xc * t179 * t181 - 0.8e1 * t95 * t480 - t249 * t488 - t76 * t475 + t1055 - 0.4e1 * t408 * t22 - 0.10e2 * t28 * t379 + 0.2e1 * t335 * t974 + t153 - 0.8e1 * t95 * t1042 - 0.2e1 * t734 * t735) / (t1156 + t1201 + t1242 + t1282 + t1317 + t1350 + t1388 + t1420);
2742: /****************************************************************************************/
2743: /****************************************************************************************/
2745: if (x > xc) {
2746: _PC1 = _PC1B;
2747: _PC2 = _PC2B;
2748: _PC3 = _PC3B;
2749: _PC4 = _PC4B;
2750: Z = ZB;
2751: } else {
2752: _PC1 = _PC1A;
2753: _PC2 = _PC2A;
2754: _PC3 = _PC3A;
2755: _PC4 = _PC4A;
2756: Z = ZA;
2757: }
2758: /****************************************************************************************/
2759: /****************************************************************************************/
2760: t1 = nz * nz;
2761: t2 = t1 * t1;
2762: t3 = t2 * nz;
2763: t4 = x * t3;
2764: t5 = 0.3141592654e1 * 0.3141592654e1;
2765: t6 = t5 * 0.3141592654e1;
2766: t11 = _PC3 * t6;
2767: t12 = x * nz;
2768: t13 = nx * nx;
2769: t14 = t13 * t13;
2770: t15 = t12 * t14;
2771: t19 = PetscExpReal(t12 * 0.3141592654e1);
2772: t20 = t19 * t19;
2773: t21 = t4 * t20;
2774: t24 = _PC1 * t5;
2775: t25 = Z * t20;
2776: t29 = _PC1 * t6;
2777: t30 = t29 * Z;
2778: t31 = t1 * nz;
2779: t32 = x * t31;
2780: t33 = t32 * t13;
2781: t36 = t11 * x;
2782: t41 = nz * t20;
2783: t45 = t6 * _PC4;
2784: t49 = t20 * t1;
2785: t51 = _PC2 * Z;
2786: t55 = -0.2e1 * t4 * t6 * _PC2 * Z - 0.2e1 * t11 * t15 - 0.2e1 * t11 * t21 + 0.2e1 * t24 * t25 * t14 - t13 + 0.4e1 * t30 * t33 - 0.4e1 * t36 * t31 * t20 * t13 - 0.2e1 * t36 * t41 * t14 - 0.2e1 * t4 * t45 * t20 - t49 - 0.2e1 * t4 * t6 * t51 * t20;
2787: t58 = t32 * t6;
2788: t59 = _PC4 * t20;
2789: t63 = t20 * t13;
2790: t67 = t12 * t6;
2791: t68 = t20 * t14;
2792: t87 = t49 * t13;
2793: t90 = -0.4e1 * t11 * t33 - 0.4e1 * t58 * t59 * t13 - 0.4e1 * t58 * t51 * t63 - 0.2e1 * t67 * t51 * t68 + 0.4e1 * t32 * t45 * t13 - 0.2e1 * t67 * t59 * t14 - 0.2e1 * t30 * t21 + t1 + 0.2e1 * t24 * t25 * t2 + 0.2e1 * t12 * t45 * t14 + 0.4e1 * t24 * Z * t87;
2794: t106 = _PC3 * t5;
2795: t120 = -0.4e1 * t30 * t32 * t63 + t63 + 0.4e1 * t24 * Z * t1 * t13 + 0.2e1 * t29 * Z * x * t3 - 0.4e1 * t58 * t51 * t13 - 0.2e1 * t106 * t2 + t32 * 0.3141592654e1 - 0.2e1 * t106 * t14 - 0.2e1 * t30 * t12 * t68 - 0.2e1 * t67 * t51 * t14 + 0.4e1 * t106 * t87;
2796: t129 = PetscSinReal(nx * 0.3141592654e1 * x);
2797: t155 = 0.2e1 * t30 * t15 + x * 0.3141592654e1 * t41 * t13 - 0.4e1 * t19 * nx * t129 * nz + t32 * 0.3141592654e1 * t20 + 0.2e1 * t106 * t68 + 0.2e1 * t106 * t20 * t2 - 0.4e1 * t106 * t1 * t13 - 0.2e1 * t11 * t4 + 0.2e1 * t4 * t45 + 0.2e1 * t24 * Z * t2 + 0.2e1 * t24 * Z * t14 + t12 * 0.3141592654e1 * t13;
2798: t158 = t5 * Z;
2800: u1 = (t55 + t90 + t120 + t155) / (0.4e1 * t158 * t19 * t2 + 0.8e1 * t158 * t19 * t1 * t13 + 0.4e1 * t158 * t19 * t14);
2801: /****************************************************************************************/
2802: /****************************************************************************************/
2803: t1 = nz * nz;
2804: t2 = t1 * nz;
2805: t3 = x * t2;
2806: t4 = 0.3141592654e1 * 0.3141592654e1;
2807: t5 = t4 * 0.3141592654e1;
2808: t6 = t3 * t5;
2809: t7 = _PC2 * Z;
2810: t8 = nx * nx;
2811: t12 = t1 * t1;
2812: t13 = t12 * nz;
2813: t14 = x * t13;
2814: t15 = t5 * _PC4;
2815: t16 = x * nz;
2816: t18 = PetscExpReal(t16 * 0.3141592654e1);
2817: t19 = t18 * t18;
2818: t23 = t16 * t5;
2819: t24 = t8 * t8;
2820: t28 = _PC3 * t5;
2821: t29 = t14 * t19;
2822: t32 = _PC1 * t5;
2823: t33 = t32 * Z;
2824: t34 = t16 * t24;
2825: t37 = _PC4 * t19;
2826: t45 = _PC2 * t4;
2827: t53 = t19 * t8;
2828: t58 = _PC4 * t4;
2829: t60 = t1 * t19 * t8;
2830: t63 = t19 * t24;
2831: t67 = t3 * t8;
2832: t73 = nz * t19;
2833: t86 = t28 * x;
2834: t91 = 0.4e1 * t58 * t60 + 0.2e1 * t33 * t16 * t63 + 0.4e1 * t33 * t67 + 0.2e1 * t33 * t29 - x * 0.3141592654e1 * t73 * t8 - 0.2e1 * t53 + 0.2e1 * t32 * Z * x * t13 - 0.2e1 * t58 * t12 - 0.2e1 * t58 * t24 + t3 * 0.3141592654e1 + 0.4e1 * t86 * t2 * t19 * t8;
2835: t94 = Z * t12;
2836: t121 = -0.2e1 * t8 + 0.2e1 * t45 * t94 * t19 + 0.2e1 * t14 * t5 * t7 * t19 + 0.4e1 * t6 * t7 * t53 + 0.2e1 * t23 * t7 * t63 - 0.4e1 * t28 * t67 + 0.2e1 * t45 * t94 + 0.2e1 * t58 * t12 * t19 + t16 * 0.3141592654e1 * t8 + 0.2e1 * t14 * t15 - 0.2e1 * t28 * t14;
2837: t146 = PetscCosReal(nx * 0.3141592654e1 * x);
2838: t156 = -t3 * 0.3141592654e1 * t19 + 0.2e1 * t58 * t63 - 0.4e1 * t58 * t1 * t8 + 0.4e1 * t45 * Z * t1 * t8 - 0.2e1 * t28 * t34 + 0.2e1 * t86 * t73 * t24 + 0.4e1 * t3 * t15 * t8 + 0.4e1 * t45 * Z * t60 + 0.4e1 * t18 * t146 * t8 + 0.2e1 * t45 * Z * t24 + 0.2e1 * t16 * t15 * t24;
2839: t159 = t4 * Z;
2841: u2 = (-0.4e1 * t6 * t7 * t8 + 0.2e1 * t14 * t15 * t19 - 0.2e1 * t23 * t7 * t24 + 0.2e1 * t28 * t29 + 0.2e1 * t33 * t34 + 0.4e1 * t6 * t37 * t8 - 0.2e1 * t14 * t5 * _PC2 * Z + 0.2e1 * t45 * Z * t19 * t24 + 0.2e1 * t23 * t37 * t24 + 0.4e1 * t33 * t3 * t53 + t91 + t121 + t156) / (0.4e1 * t159 * t18 * t12 + 0.8e1 * t159 * t18 * t1 * t8 + 0.4e1 * t159 * t18 * t24);
2842: /****************************************************************************************/
2843: /****************************************************************************************/
2844: t1 = 0.3141592654e1 * 0.3141592654e1;
2845: t2 = t1 * 0.3141592654e1;
2846: t3 = _PC1 * t2;
2847: t4 = t3 * Z;
2848: t5 = nz * nz;
2849: t6 = t5 * t5;
2850: t7 = t6 * nz;
2851: t8 = x * t7;
2852: t9 = x * nz;
2853: t11 = PetscExpReal(t9 * 0.3141592654e1);
2854: t12 = t11 * t11;
2855: t13 = t8 * t12;
2856: t16 = t5 * nz;
2857: t17 = x * t16;
2858: t18 = t17 * t2;
2859: t19 = _PC4 * t12;
2860: t20 = nx * nx;
2861: t24 = t2 * _PC4;
2862: t28 = _PC3 * t2;
2863: t29 = t28 * x;
2864: t30 = t12 * nz;
2865: t31 = t20 * t20;
2866: t40 = _PC2 * Z;
2867: t44 = t9 * t2;
2868: t48 = t12 * t20;
2869: t52 = t17 * t20;
2870: t57 = -0.2e1 * t4 * t13 - 0.4e1 * t18 * t19 * t20 - 0.2e1 * t8 * t24 * t12 - 0.2e1 * t29 * t30 * t31 + 0.2e1 * t8 * t2 * _PC2 * Z - 0.2e1 * t8 * t2 * t40 * t12 - 0.2e1 * t44 * t19 * t31 - 0.4e1 * t18 * t40 * t48 + t20 + 0.4e1 * t28 * t52 + t17 * 0.3141592654e1 * t12;
2871: t58 = t9 * t31;
2872: t61 = _PC3 * t1;
2873: t62 = t12 * t31;
2874: t73 = t5 * t20;
2875: t78 = _PC1 * t1;
2876: t90 = Z * t12;
2877: t94 = 0.2e1 * t28 * t58 + 0.2e1 * t61 * t62 + 0.2e1 * t61 * t12 * t6 - 0.4e1 * t4 * t17 * t48 + 0.2e1 * t28 * t8 + 0.4e1 * t61 * t73 - 0.2e1 * t8 * t24 - 0.2e1 * t78 * Z * t6 - 0.2e1 * t44 * t40 * t62 - 0.2e1 * t78 * Z * t31 - t9 * 0.3141592654e1 * t20 + 0.2e1 * t78 * t90 * t6;
2878: t101 = PetscCosReal(nx * 0.3141592654e1 * x);
2879: t102 = t11 * t101;
2880: t109 = t12 * t5;
2881: t110 = t109 * t20;
2882: t128 = 0.2e1 * t61 * t6 - t17 * 0.3141592654e1 + 0.2e1 * t102 * t5 - 0.4e1 * t17 * t24 * t20 + 0.4e1 * t78 * Z * t110 - 0.2e1 * t9 * t24 * t31 - 0.4e1 * t4 * t52 - 0.2e1 * t4 * t9 * t62 + x * 0.3141592654e1 * t30 * t20 - t5 - 0.4e1 * t78 * Z * t5 * t20;
2883: t156 = 0.2e1 * t78 * t90 * t31 - 0.2e1 * t3 * Z * x * t7 + t48 + 0.4e1 * t61 * t110 + 0.4e1 * t18 * t40 * t20 - 0.2e1 * t102 * t20 + 0.2e1 * t61 * t31 + 0.2e1 * t44 * t40 * t31 - t109 - 0.2e1 * t4 * t58 - 0.2e1 * t28 * t13 - 0.4e1 * t29 * t16 * t12 * t20;
2884: t159 = t1 * t11;
2886: u3 = (t57 + t94 + t128 + t156) / (0.4e1 * t159 * t6 + 0.8e1 * t159 * t73 + 0.4e1 * t159 * t31);
2887: /****************************************************************************************/
2888: /****************************************************************************************/
2889: t1 = _PC2 * Z;
2890: t2 = 0.3141592654e1 * 0.3141592654e1;
2891: t3 = t2 * 0.3141592654e1;
2892: t4 = nz * nz;
2893: t5 = t4 * t4;
2894: t6 = t5 * t4;
2895: t8 = t3 * t6 * x;
2896: t11 = x * t4;
2897: t12 = t11 * t3;
2898: t15 = PetscExpReal(x * nz * 0.3141592654e1);
2899: t16 = t15 * t15;
2900: t17 = _PC3 * t16;
2901: t18 = nx * nx;
2902: t19 = t18 * t18;
2903: t23 = t5 * nz;
2904: t24 = t2 * t23;
2905: t28 = t1 * t3;
2906: t29 = t6 * x;
2907: t30 = t29 * t16;
2908: t33 = _PC4 * t3;
2909: t34 = t5 * x;
2910: t35 = t34 * t18;
2911: t41 = PetscSinReal(nx * 0.3141592654e1 * x);
2912: t47 = t11 * t19;
2913: t54 = t3 * _PC3;
2914: t57 = 0.2e1 * t1 * t8 + 0.2e1 * t12 * t17 * t19 + 0.2e1 * t1 * t24 * t16 + 0.2e1 * t28 * t30 - 0.4e1 * t33 * t35 + 0.2e1 * t15 * nx * t41 * t4 + 0.4e1 * t28 * t35 - 0.2e1 * t33 * t47 - 0.2e1 * t1 * t24 - 0.2e1 * t33 * t29 + 0.2e1 * t29 * t54;
2915: t58 = 0.3141592654e1 * t16;
2916: t60 = t2 * _PC4;
2917: t69 = t4 * nz;
2918: t73 = t1 * t2;
2919: t75 = t69 * t16 * t18;
2920: t79 = x * t16;
2921: t83 = nz * t16;
2922: t84 = t83 * t19;
2923: t95 = -t34 * t58 + 0.2e1 * t60 * t23 * t16 + 0.2e1 * t60 * nz * t19 - t11 * 0.3141592654e1 * t18 + 0.4e1 * t60 * t69 * t18 + 0.4e1 * t73 * t75 + 0.4e1 * t33 * t5 * t79 * t18 + 0.2e1 * t73 * t84 + 0.2e1 * t60 * t84 + 0.2e1 * t33 * t4 * t79 * t19 + 0.4e1 * t60 * t75;
2924: t97 = t34 * t3;
2925: t101 = Z * _PC1;
2926: t102 = t16 * t19;
2927: t106 = t16 * t18;
2928: t127 = t2 * t69;
2929: t131 = t2 * nz;
2930: t135 = 0.4e1 * t97 * t17 * t18 + 0.2e1 * t12 * t101 * t102 + 0.4e1 * t28 * t34 * t106 + 0.2e1 * t28 * t11 * t102 - 0.2e1 * t29 * t3 * Z * _PC1 - 0.4e1 * t97 * t101 * t18 - 0.2e1 * t12 * t101 * t19 + 0.2e1 * t60 * t23 - 0.2e1 * t83 * t18 - 0.4e1 * t1 * t127 * t18 - 0.2e1 * t1 * t131 * t19;
2931: t164 = 0.2e1 * t28 * t47 + 0.2e1 * t11 * t54 * t19 + 0.2e1 * t8 * t101 * t16 + 0.2e1 * t33 * t30 - t11 * t58 * t18 + 0.2e1 * t29 * t54 * t16 + 0.4e1 * t34 * t54 * t18 + 0.4e1 * t97 * t101 * t106 - 0.2e1 * t15 * t18 * nx * t41 - t34 * 0.3141592654e1 + 0.2e1 * nz * t18;
2933: u4 = (t57 + t95 + t135 + t164) / (0.4e1 * t24 * t15 + 0.8e1 * t127 * t15 * t18 + 0.4e1 * t131 * t15 * t19);
2935: /****************************************************************************************/
2936: /****************************************************************************************/
2938: u5 = (-2 * Z * nz * PETSC_PI * u2 - u3 * 2 * nz * PETSC_PI) * PetscCosReal(nz * PETSC_PI * z); /* pressure */
2940: u6 = (u3 * 2 * nz * PETSC_PI + 4 * Z * nz * PETSC_PI * u2) * PetscCosReal(nz * PETSC_PI * z); /* zz stress */
2941: sum5 += u5;
2942: sum6 += u6;
2944: u1 *= PetscCosReal(nz * PETSC_PI * z); /* x velocity */
2945: sum1 += u1;
2946: u2 *= PetscSinReal(nz * PETSC_PI * z); /* z velocity */
2947: sum2 += u2;
2948: u3 *= 2 * nz * PETSC_PI * PetscCosReal(nz * PETSC_PI * z); /* xx stress */
2949: sum3 += u3;
2950: u4 *= 2 * nz * PETSC_PI * PetscSinReal(nz * PETSC_PI * z); /* zx stress */
2951: sum4 += u4;
2953: /* Output */
2954: if (mu) *mu = Z;
2955: if (vel) {
2956: vel[0] = sum1;
2957: vel[1] = sum2;
2958: }
2959: if (p) (*p) = sum5;
2960: if (s) {
2961: s[0] = sum3;
2962: s[1] = sum4;
2963: s[2] = sum6;
2964: }
2965: if (gamma) {
2966: /* sigma = tau - p, tau = sigma + p, tau[] = 2*eta*gamma[] */
2967: gamma[0] = (sum3 + sum5) / (2.0 * Z);
2968: gamma[1] = (sum4) / (2.0 * Z);
2969: gamma[2] = (sum6 + sum5) / (2.0 * Z);
2970: }
2971: PetscFunctionReturn(PETSC_SUCCESS);
2972: }
2974: static PetscErrorCode SolCxSolutionVelocity(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt Nf, PetscScalar v[], void *ctx)
2975: {
2976: Parameter *s = (Parameter *)ctx;
2978: PetscFunctionBegin;
2979: PetscCall(SolCxSolution(x, s->m, s->n, s->xc, s->etaA, s->etaB, v, NULL, NULL, NULL, NULL));
2980: PetscFunctionReturn(PETSC_SUCCESS);
2981: }
2983: static PetscErrorCode SolCxSolutionPressure(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt Nf, PetscScalar p[], void *ctx)
2984: {
2985: Parameter *s = (Parameter *)ctx;
2987: PetscFunctionBegin;
2988: PetscCall(SolCxSolution(x, s->m, s->n, s->xc, s->etaA, s->etaB, NULL, p, NULL, NULL, NULL));
2989: PetscFunctionReturn(PETSC_SUCCESS);
2990: }
2992: static PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
2993: {
2994: PetscInt sol;
2996: PetscFunctionBeginUser;
2997: options->solType = SOLKX;
2998: PetscOptionsBegin(comm, "", "Variable-Viscosity Stokes Problem Options", "DMPLEX");
2999: sol = options->solType;
3000: PetscCall(PetscOptionsEList("-sol_type", "Type of exact solution", "ex69.c", solTypes, NUM_SOL_TYPES, solTypes[options->solType], &sol, NULL));
3001: options->solType = (SolutionType)sol;
3002: PetscOptionsEnd();
3003: PetscFunctionReturn(PETSC_SUCCESS);
3004: }
3006: static PetscErrorCode SetUpParameters(AppCtx *user)
3007: {
3008: PetscBag bag;
3009: Parameter *p;
3011: PetscFunctionBeginUser;
3012: /* setup PETSc parameter bag */
3013: PetscCall(PetscBagGetData(user->bag, (void **)&p));
3014: PetscCall(PetscBagSetName(user->bag, "par", "Problem parameters"));
3015: bag = user->bag;
3016: switch (user->solType) {
3017: case SOLKX:
3018: PetscCall(PetscBagRegisterInt(bag, &p->n, 1, "n", "x-wavelength for forcing variation"));
3019: PetscCall(PetscBagRegisterInt(bag, &p->m, 1, "m", "z-wavelength for forcing variation"));
3020: PetscCall(PetscBagRegisterReal(bag, &p->B, 1.0, "B", "Exponential scale for viscosity variation"));
3021: break;
3022: case SOLCX:
3023: case SOLZERO:
3024: PetscCall(PetscBagRegisterInt(bag, &p->n, 1, "n", "x-wavelength for forcing variation"));
3025: PetscCall(PetscBagRegisterInt(bag, &p->m, 1, "m", "z-wavelength for forcing variation"));
3026: PetscCall(PetscBagRegisterReal(bag, &p->etaA, 1.0, "etaA", "Viscosity for x < xc"));
3027: PetscCall(PetscBagRegisterReal(bag, &p->etaB, 1.0, "etaB", "Viscosity for x > xc"));
3028: PetscCall(PetscBagRegisterReal(bag, &p->xc, 0.5, "xc", "x-coordinate of the viscosity jump"));
3029: break;
3030: default:
3031: SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_ARG_OUTOFRANGE, "Invalid solution type %d (%s)", user->solType, solTypes[PetscMin(user->solType, NUM_SOL_TYPES)]);
3032: }
3033: PetscCall(PetscBagSetFromOptions(bag));
3034: PetscCall(PetscBagViewFromOptions(bag, NULL, "-param_view"));
3035: PetscFunctionReturn(PETSC_SUCCESS);
3036: }
3038: /* Make split labels so that we can have corners in multiple labels */
3039: static PetscErrorCode CreateSplitLabels(DM dm)
3040: {
3041: const char *names[4] = {"markerBottom", "markerRight", "markerTop", "markerLeft"};
3042: PetscInt ids[4] = {1, 2, 3, 4};
3043: DMLabel label;
3044: IS is;
3045: PetscInt f;
3047: PetscFunctionBeginUser;
3048: for (f = 0; f < 4; ++f) {
3049: PetscCall(DMCreateLabel(dm, names[f]));
3050: PetscCall(DMGetStratumIS(dm, "marker", ids[f], &is));
3051: if (!is) continue;
3052: PetscCall(DMGetLabel(dm, names[f], &label));
3053: PetscCall(DMLabelInsertIS(label, is, 1));
3054: PetscCall(ISDestroy(&is));
3055: }
3056: PetscFunctionReturn(PETSC_SUCCESS);
3057: }
3059: static PetscErrorCode CreateMesh(MPI_Comm comm, AppCtx *user, DM *dm)
3060: {
3061: DM cdm;
3063: PetscFunctionBeginUser;
3064: PetscCall(DMCreate(comm, dm));
3065: PetscCall(DMSetType(*dm, DMPLEX));
3066: PetscCall(DMSetFromOptions(*dm));
3067: cdm = *dm;
3068: while (cdm) {
3069: PetscCall(CreateSplitLabels(cdm));
3070: PetscCall(DMGetCoarseDM(cdm, &cdm));
3071: }
3072: PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view"));
3073: PetscFunctionReturn(PETSC_SUCCESS);
3074: }
3076: static PetscErrorCode SetupProblem(DM dm, AppCtx *user)
3077: {
3078: PetscErrorCode (*exactFunc)(PetscInt dim, PetscReal t, const PetscReal x[], PetscInt Nf, PetscScalar *u, void *ctx);
3079: PetscDS prob;
3080: DMLabel label;
3081: const PetscInt id = 1;
3082: PetscInt dim, comp;
3083: Parameter *ctx;
3084: void *data;
3086: PetscFunctionBeginUser;
3087: PetscCall(DMGetDimension(dm, &dim));
3088: PetscCall(DMGetDS(dm, &prob));
3089: switch (user->solType) {
3090: case SOLKX:
3091: PetscCall(PetscDSSetResidual(prob, 0, f0_u, stokes_momentum_kx));
3092: PetscCall(PetscDSSetResidual(prob, 1, stokes_mass, f1_zero));
3093: PetscCall(PetscDSSetJacobian(prob, 0, 0, NULL, NULL, NULL, stokes_momentum_vel_J_kx));
3094: PetscCall(PetscDSSetJacobian(prob, 0, 1, NULL, NULL, stokes_momentum_pres_J, NULL));
3095: PetscCall(PetscDSSetJacobian(prob, 1, 0, NULL, stokes_mass_J, NULL, NULL));
3096: PetscCall(PetscDSSetJacobianPreconditioner(prob, 0, 0, NULL, NULL, NULL, stokes_momentum_vel_J_kx));
3097: PetscCall(PetscDSSetJacobianPreconditioner(prob, 1, 1, stokes_identity_J_kx, NULL, NULL, NULL));
3098: break;
3099: case SOLCX:
3100: PetscCall(PetscDSSetResidual(prob, 0, f0_u, stokes_momentum_cx));
3101: PetscCall(PetscDSSetResidual(prob, 1, stokes_mass, f1_zero));
3102: PetscCall(PetscDSSetJacobian(prob, 0, 0, NULL, NULL, NULL, stokes_momentum_vel_J_cx));
3103: PetscCall(PetscDSSetJacobian(prob, 0, 1, NULL, NULL, stokes_momentum_pres_J, NULL));
3104: PetscCall(PetscDSSetJacobian(prob, 1, 0, NULL, stokes_mass_J, NULL, NULL));
3105: PetscCall(PetscDSSetJacobianPreconditioner(prob, 0, 0, NULL, NULL, NULL, stokes_momentum_vel_J_cx));
3106: PetscCall(PetscDSSetJacobianPreconditioner(prob, 1, 1, stokes_identity_J_cx, NULL, NULL, NULL));
3107: break;
3108: case SOLZERO:
3109: PetscCall(PetscDSSetResidual(prob, 0, f0_zero, stokes_momentum_cx));
3110: PetscCall(PetscDSSetResidual(prob, 1, stokes_mass, f1_zero));
3111: PetscCall(PetscDSSetJacobian(prob, 0, 0, NULL, NULL, NULL, stokes_momentum_vel_J_cx));
3112: PetscCall(PetscDSSetJacobian(prob, 0, 1, NULL, NULL, stokes_momentum_pres_J, NULL));
3113: PetscCall(PetscDSSetJacobian(prob, 1, 0, NULL, stokes_mass_J, NULL, NULL));
3114: PetscCall(PetscDSSetJacobianPreconditioner(prob, 0, 0, NULL, NULL, NULL, stokes_momentum_vel_J_cx));
3115: PetscCall(PetscDSSetJacobianPreconditioner(prob, 1, 1, stokes_identity_J_cx, NULL, NULL, NULL));
3116: break;
3117: default:
3118: SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_ARG_OUTOFRANGE, "Invalid solution type %d (%s)", user->solType, solTypes[PetscMin(user->solType, NUM_SOL_TYPES)]);
3119: }
3120: PetscCall(PetscBagGetData(user->bag, &data));
3121: switch (dim) {
3122: case 2:
3123: switch (user->solType) {
3124: case SOLKX:
3125: PetscCall(PetscDSSetExactSolution(prob, 0, SolKxSolutionVelocity, data));
3126: PetscCall(PetscDSSetExactSolution(prob, 1, SolKxSolutionPressure, data));
3127: break;
3128: case SOLCX:
3129: PetscCall(PetscDSSetExactSolution(prob, 0, SolCxSolutionVelocity, data));
3130: PetscCall(PetscDSSetExactSolution(prob, 1, SolCxSolutionPressure, data));
3131: break;
3132: case SOLZERO:
3133: PetscCall(PetscDSSetExactSolution(prob, 0, zero, NULL));
3134: PetscCall(PetscDSSetExactSolution(prob, 1, zero, NULL));
3135: break;
3136: default:
3137: SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_ARG_OUTOFRANGE, "Invalid solution type %d (%s)", user->solType, solTypes[PetscMin(user->solType, NUM_SOL_TYPES)]);
3138: }
3139: break;
3140: default:
3141: SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_ARG_OUTOFRANGE, "Invalid dimension %" PetscInt_FMT, dim);
3142: }
3143: /* Setup constants */
3144: {
3145: Parameter *param;
3147: PetscCall(PetscBagGetData(user->bag, (void **)¶m));
3148: switch (user->solType) {
3149: case SOLKX: {
3150: PetscScalar constants[3];
3152: constants[0] = param->m;
3153: constants[1] = param->n;
3154: constants[2] = param->B;
3155: PetscCall(PetscDSSetConstants(prob, 3, constants));
3156: } break;
3157: case SOLZERO:
3158: case SOLCX: {
3159: PetscScalar constants[5];
3161: constants[0] = param->m;
3162: constants[1] = param->n;
3163: constants[2] = param->etaA;
3164: constants[3] = param->etaB;
3165: constants[4] = param->xc;
3166: PetscCall(PetscDSSetConstants(prob, 5, constants));
3167: } break;
3168: default:
3169: SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_SUP, "No parameter information for solution type %d", user->solType);
3170: }
3171: }
3172: /* Setup Boundary Conditions */
3173: PetscCall(PetscDSGetExactSolution(prob, 0, &exactFunc, (void **)&ctx));
3174: if (user->solType == SOLZERO) {
3175: PetscCall(DMGetLabel(dm, "markerBottom", &label));
3176: PetscCall(DMAddBoundary(dm, DM_BC_ESSENTIAL, "wallB", label, 1, &id, 0, 0, NULL, (PetscVoidFn *)exactFunc, NULL, ctx, NULL));
3177: PetscCall(DMGetLabel(dm, "markerTop", &label));
3178: PetscCall(DMAddBoundary(dm, DM_BC_ESSENTIAL, "wallT", label, 1, &id, 0, 0, NULL, (PetscVoidFn *)exactFunc, NULL, ctx, NULL));
3179: } else {
3180: comp = 1;
3181: PetscCall(DMGetLabel(dm, "markerBottom", &label));
3182: PetscCall(DMAddBoundary(dm, DM_BC_ESSENTIAL, "wallB", label, 1, &id, 0, 1, &comp, (PetscVoidFn *)exactFunc, NULL, ctx, NULL));
3183: comp = 0;
3184: PetscCall(DMGetLabel(dm, "markerRight", &label));
3185: PetscCall(DMAddBoundary(dm, DM_BC_ESSENTIAL, "wallR", label, 1, &id, 0, 1, &comp, (PetscVoidFn *)exactFunc, NULL, ctx, NULL));
3186: comp = 1;
3187: PetscCall(DMGetLabel(dm, "markerTop", &label));
3188: PetscCall(DMAddBoundary(dm, DM_BC_ESSENTIAL, "wallT", label, 1, &id, 0, 1, &comp, (PetscVoidFn *)exactFunc, NULL, ctx, NULL));
3189: comp = 0;
3190: PetscCall(DMGetLabel(dm, "markerLeft", &label));
3191: PetscCall(DMAddBoundary(dm, DM_BC_ESSENTIAL, "wallL", label, 1, &id, 0, 1, &comp, (PetscVoidFn *)exactFunc, NULL, ctx, NULL));
3192: }
3193: PetscFunctionReturn(PETSC_SUCCESS);
3194: }
3196: static PetscErrorCode CreatePressureNullSpace(DM dm, PetscInt origField, PetscInt field, MatNullSpace *nullspace)
3197: {
3198: Vec vec;
3199: PetscErrorCode (*funcs[2])(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt Nf, PetscScalar *u, void *ctx) = {zero, one};
3201: PetscFunctionBeginUser;
3202: PetscCheck(origField == 1, PetscObjectComm((PetscObject)dm), PETSC_ERR_ARG_WRONG, "Field %" PetscInt_FMT " should be 1 for pressure", origField);
3203: funcs[field] = one;
3204: {
3205: PetscDS ds;
3206: PetscCall(DMGetDS(dm, &ds));
3207: PetscCall(PetscObjectViewFromOptions((PetscObject)ds, NULL, "-ds_view"));
3208: }
3209: PetscCall(DMCreateGlobalVector(dm, &vec));
3210: PetscCall(DMProjectFunction(dm, 0.0, funcs, NULL, INSERT_ALL_VALUES, vec));
3211: PetscCall(VecNormalize(vec, NULL));
3212: PetscCall(MatNullSpaceCreate(PetscObjectComm((PetscObject)dm), PETSC_FALSE, 1, &vec, nullspace));
3213: PetscCall(VecDestroy(&vec));
3214: /* New style for field null spaces */
3215: {
3216: PetscObject pressure;
3217: MatNullSpace nullspacePres;
3219: PetscCall(DMGetField(dm, field, NULL, &pressure));
3220: PetscCall(MatNullSpaceCreate(PetscObjectComm(pressure), PETSC_TRUE, 0, NULL, &nullspacePres));
3221: PetscCall(PetscObjectCompose(pressure, "nullspace", (PetscObject)nullspacePres));
3222: PetscCall(MatNullSpaceDestroy(&nullspacePres));
3223: }
3224: PetscFunctionReturn(PETSC_SUCCESS);
3225: }
3227: static PetscErrorCode SetupDiscretization(DM dm, AppCtx *user)
3228: {
3229: DM cdm = dm;
3230: PetscFE fe[2];
3231: DMPolytopeType ct;
3232: PetscInt dim, cStart;
3233: PetscBool simplex;
3235: PetscFunctionBeginUser;
3236: PetscCall(DMGetDimension(dm, &dim));
3237: PetscCall(DMPlexGetHeightStratum(dm, 0, &cStart, NULL));
3238: PetscCall(DMPlexGetCellType(dm, cStart, &ct));
3239: simplex = DMPolytopeTypeGetNumVertices(ct) == DMPolytopeTypeGetDim(ct) + 1 ? PETSC_TRUE : PETSC_FALSE;
3240: /* Create discretization of solution fields */
3241: PetscCall(PetscFECreateDefault(PETSC_COMM_SELF, dim, dim, simplex, "vel_", PETSC_DEFAULT, &fe[0]));
3242: PetscCall(PetscObjectSetName((PetscObject)fe[0], "velocity"));
3243: PetscCall(PetscFECreateDefault(PETSC_COMM_SELF, dim, 1, simplex, "pres_", PETSC_DEFAULT, &fe[1]));
3244: PetscCall(PetscFECopyQuadrature(fe[0], fe[1]));
3245: PetscCall(PetscObjectSetName((PetscObject)fe[1], "pressure"));
3246: /* Set discretization and boundary conditions for each mesh */
3247: PetscCall(DMSetField(dm, 0, NULL, (PetscObject)fe[0]));
3248: PetscCall(DMSetField(dm, 1, NULL, (PetscObject)fe[1]));
3249: PetscCall(DMCreateDS(dm));
3250: PetscCall(SetupProblem(dm, user));
3251: while (cdm) {
3252: PetscCall(DMCopyDisc(dm, cdm));
3253: if (user->solType != SOLZERO) PetscCall(DMSetNullSpaceConstructor(cdm, 1, CreatePressureNullSpace));
3254: PetscCall(DMGetCoarseDM(cdm, &cdm));
3255: }
3256: PetscCall(PetscFEDestroy(&fe[0]));
3257: PetscCall(PetscFEDestroy(&fe[1]));
3258: if (user->solType != SOLZERO) {
3259: PetscObject pressure;
3260: MatNullSpace nullSpacePres;
3262: PetscCall(DMGetField(dm, 1, NULL, &pressure));
3263: PetscCall(MatNullSpaceCreate(PetscObjectComm(pressure), PETSC_TRUE, 0, NULL, &nullSpacePres));
3264: PetscCall(PetscObjectCompose(pressure, "nullspace", (PetscObject)nullSpacePres));
3265: PetscCall(MatNullSpaceDestroy(&nullSpacePres));
3266: }
3267: PetscFunctionReturn(PETSC_SUCCESS);
3268: }
3270: /* Add a vector in the nullspace to make the continuum integral 0.
3272: If int(u) = a and int(n) = b, then int(u - a/b n) = a - a/b b = 0
3273: */
3274: static void pressure(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar p[])
3275: {
3276: p[0] = u[uOff[1]];
3277: }
3279: static PetscErrorCode CorrectDiscretePressure(DM dm, MatNullSpace nullspace, Vec u, AppCtx *user)
3280: {
3281: PetscDS ds;
3282: const Vec *nullvecs;
3283: PetscScalar pintd, intc[2], intn[2];
3284: MPI_Comm comm;
3286: PetscFunctionBeginUser;
3287: PetscCall(PetscObjectGetComm((PetscObject)dm, &comm));
3288: PetscCall(DMGetDS(dm, &ds));
3289: PetscCall(PetscDSSetObjective(ds, 1, pressure));
3290: PetscCall(MatNullSpaceGetVecs(nullspace, NULL, NULL, &nullvecs));
3291: PetscCall(VecDot(nullvecs[0], u, &pintd));
3292: PetscCheck(PetscAbsScalar(pintd) <= PETSC_SMALL, comm, PETSC_ERR_ARG_WRONG, "Discrete integral of pressure: %g", (double)PetscRealPart(pintd));
3293: PetscCall(DMPlexComputeIntegralFEM(dm, nullvecs[0], intn, user));
3294: PetscCall(DMPlexComputeIntegralFEM(dm, u, intc, user));
3295: PetscCall(VecAXPY(u, -intc[1] / intn[1], nullvecs[0]));
3296: PetscCall(DMPlexComputeIntegralFEM(dm, u, intc, user));
3297: PetscCheck(PetscAbsScalar(intc[1]) <= PETSC_SMALL, comm, PETSC_ERR_ARG_WRONG, "Continuum integral of pressure after correction: %g", (double)PetscRealPart(intc[1]));
3298: PetscFunctionReturn(PETSC_SUCCESS);
3299: }
3301: static PetscErrorCode SNESConvergenceCorrectPressure(SNES snes, PetscInt it, PetscReal xnorm, PetscReal gnorm, PetscReal f, SNESConvergedReason *reason, void *ctx)
3302: {
3303: AppCtx *user = (AppCtx *)ctx;
3305: PetscFunctionBeginUser;
3306: PetscCall(SNESConvergedDefault(snes, it, xnorm, gnorm, f, reason, NULL));
3307: if (*reason > 0) {
3308: DM dm;
3309: Mat J;
3310: Vec u;
3311: MatNullSpace nullspace;
3313: PetscCall(SNESGetDM(snes, &dm));
3314: PetscCall(SNESGetSolution(snes, &u));
3315: PetscCall(SNESGetJacobian(snes, &J, NULL, NULL, NULL));
3316: PetscCall(MatGetNullSpace(J, &nullspace));
3317: PetscCheck(user->solType == SOLZERO || nullspace, PetscObjectComm((PetscObject)snes), PETSC_ERR_ARG_WRONG, "SNES Jacobian has no attached null space");
3318: if (nullspace) PetscCall(CorrectDiscretePressure(dm, nullspace, u, user));
3319: }
3320: PetscFunctionReturn(PETSC_SUCCESS);
3321: }
3323: int main(int argc, char **argv)
3324: {
3325: SNES snes; /* nonlinear solver */
3326: DM dm; /* problem definition */
3327: Vec u, r; /* solution, residual vectors */
3328: Mat J, M; /* Jacobian and preconditiong matrix */
3329: MatNullSpace nullSpace = NULL; /* May be necessary for pressure */
3330: AppCtx user; /* user-defined work context */
3331: PetscErrorCode (*initialGuess[2])(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt Nf, PetscScalar *u, void *ctx) = {zero, zero};
3333: PetscFunctionBeginUser;
3334: PetscCall(PetscInitialize(&argc, &argv, NULL, help));
3335: PetscCall(ProcessOptions(PETSC_COMM_WORLD, &user));
3336: PetscCall(SNESCreate(PETSC_COMM_WORLD, &snes));
3337: PetscCall(CreateMesh(PETSC_COMM_WORLD, &user, &dm));
3338: PetscCall(SNESSetDM(snes, dm));
3339: PetscCall(DMSetApplicationContext(dm, &user));
3340: /* Setup problem parameters */
3341: PetscCall(PetscBagCreate(PETSC_COMM_WORLD, sizeof(Parameter), &user.bag));
3342: PetscCall(SetUpParameters(&user));
3343: /* Setup problem */
3344: PetscCall(SetupDiscretization(dm, &user));
3345: PetscCall(DMPlexCreateClosureIndex(dm, NULL));
3347: PetscCall(DMCreateGlobalVector(dm, &u));
3348: PetscCall(VecDuplicate(u, &r));
3350: PetscCall(DMPlexSetSNESLocalFEM(dm, PETSC_FALSE, &user));
3351: if (user.solType != SOLZERO) PetscCall(CreatePressureNullSpace(dm, 1, 1, &nullSpace));
3353: { /* set tolerances */
3354: KSP ksp;
3356: PetscCall(SNESGetKSP(snes, &ksp));
3357: PetscCall(KSPSetTolerances(ksp, 1.e-2 * PETSC_SMALL, PETSC_SMALL, PETSC_CURRENT, PETSC_CURRENT));
3358: }
3360: /* There should be a way to express this using the DM */
3361: PetscCall(SNESSetFromOptions(snes));
3362: PetscCall(SNESSetUp(snes));
3363: PetscCall(SNESGetJacobian(snes, &J, &M, NULL, NULL));
3364: PetscCall(MatSetNullSpace(J, nullSpace));
3365: PetscCall(PetscObjectSetOptionsPrefix((PetscObject)M, "prec_"));
3366: PetscCall(MatSetFromOptions(M));
3367: PetscCall(SNESSetConvergenceTest(snes, SNESConvergenceCorrectPressure, &user, NULL));
3369: PetscCall(DMSNESCheckFromOptions(snes, u));
3370: PetscCall(DMProjectFunction(dm, 0.0, initialGuess, NULL, INSERT_VALUES, u));
3371: if (user.solType == SOLZERO) PetscCall(VecSetRandom(u, NULL));
3372: PetscCall(PetscObjectSetName((PetscObject)u, "Solution"));
3373: PetscCall(SNESSolve(snes, NULL, u));
3374: {
3375: PetscErrorCode (*exacts[2])(PetscInt dim, PetscReal t, const PetscReal x[], PetscInt Nf, PetscScalar *u, void *ctx);
3376: void *ectxs[2];
3377: PetscDS ds;
3378: Vec e;
3380: PetscCall(DMGetDS(dm, &ds));
3381: PetscCall(PetscDSGetExactSolution(ds, 0, &exacts[0], &ectxs[0]));
3382: PetscCall(PetscDSGetExactSolution(ds, 1, &exacts[1], &ectxs[1]));
3384: PetscCall(DMGetGlobalVector(dm, &e));
3385: PetscCall(PetscObjectCompose((PetscObject)e, "__Vec_bc_zero__", (PetscObject)dm));
3386: PetscCall(DMPlexComputeL2DiffVec(dm, 0.0, exacts, ectxs, u, e));
3387: PetscCall(PetscObjectSetName((PetscObject)e, "Solution Error"));
3388: PetscCall(VecViewFromOptions(e, NULL, "-error_vec_view"));
3389: PetscCall(PetscObjectCompose((PetscObject)e, "__Vec_bc_zero__", NULL));
3390: PetscCall(DMRestoreGlobalVector(dm, &e));
3391: }
3392: PetscCall(VecViewFromOptions(u, NULL, "-sol_vec_view"));
3394: PetscCall(MatNullSpaceDestroy(&nullSpace));
3395: PetscCall(VecDestroy(&u));
3396: PetscCall(VecDestroy(&r));
3397: PetscCall(SNESDestroy(&snes));
3398: PetscCall(DMDestroy(&dm));
3399: PetscCall(PetscBagDestroy(&user.bag));
3400: PetscCall(PetscFinalize());
3401: return 0;
3402: }
3404: /*TEST
3406: # 2D serial discretization tests
3407: test:
3408: suffix: p2p1
3409: requires: triangle
3410: args: -dm_plex_separate_marker -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3411: -snes_error_if_not_converged -dmsnes_check .001 \
3412: -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3413: -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3414: -fieldsplit_velocity_pc_type lu \
3415: -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu
3416: test:
3417: suffix: p2p1_zero
3418: requires: triangle
3419: args: -dm_plex_separate_marker -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3420: -snes_error_if_not_converged -dmsnes_check .001 \
3421: -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3422: -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3423: -fieldsplit_velocity_pc_type lu \
3424: -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu -sol_type zero -dm_plex_box_faces 16,1 -dm_plex_box_crisscross -dm_plex_box_lower 0,0 -dm_plex_box_upper 1,0.01
3425: test:
3426: suffix: p2p1_gmg
3427: TODO: broken (requires subDMs hooks)
3428: requires: triangle
3429: args: -dm_plex_separate_marker -dm_refine_hierarchy 2 -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3430: -snes_error_if_not_converged -dmsnes_check .001 \
3431: -ksp_type fgmres -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3432: -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3433: -fieldsplit_velocity_pc_type mg \
3434: -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu
3435: test:
3436: suffix: p2p1_conv
3437: requires: triangle
3438: # -dm_refine 2 gives L_2 convergence rate: [3.0, 2.2]
3439: args: -dm_plex_separate_marker -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3440: -snes_error_if_not_converged -snes_convergence_estimate -convest_num_refine 2 \
3441: -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3442: -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3443: -fieldsplit_velocity_pc_type lu \
3444: -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu
3445: test:
3446: suffix: q2q1_conv
3447: # -dm_refine 2 gives L_2 convergence rate: [3.0, 2.1]
3448: args: -dm_plex_simplex 0 -dm_plex_separate_marker -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3449: -snes_error_if_not_converged -snes_convergence_estimate -convest_num_refine 2 \
3450: -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3451: -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3452: -fieldsplit_velocity_pc_type lu \
3453: -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu
3454: test:
3455: suffix: q1p0_conv
3456: # -dm_refine 2 gives L_2 convergence rate: [2.0, 1.0]
3457: args: -dm_plex_simplex 0 -dm_plex_separate_marker -vel_petscspace_degree 1 -pres_petscspace_degree 0 \
3458: -snes_error_if_not_converged -snes_convergence_estimate -convest_num_refine 2 \
3459: -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3460: -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3461: -fieldsplit_velocity_pc_type lu \
3462: -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu
3463: test:
3464: suffix: q2p1_conv
3465: # -dm_refine 2 gives L_2 convergence rate: [3.0, 2.0]
3466: args: -dm_plex_simplex 0 -dm_plex_separate_marker \
3467: -vel_petscspace_degree 2 -pres_petscspace_degree 1 -pres_petscspace_poly_tensor 0 -pres_petscdualspace_lagrange_continuity 0 \
3468: -snes_error_if_not_converged -snes_convergence_estimate -convest_num_refine 2 \
3469: -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3470: -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3471: -fieldsplit_velocity_pc_type lu \
3472: -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu
3474: # FETI-DP tests
3475: testset:
3476: output_file: output/ex69_q2p1fetidp.out
3477: suffix: q2p1fetidp
3478: requires: !single
3479: nsize: 5
3480: args: -dm_plex_simplex 0 -dm_plex_separate_marker -dm_refine_pre 1 -dm_mat_type is -dm_view -petscpartitioner_type simple \
3481: -vel_petscspace_degree 2 -pres_petscspace_degree 1 -pres_petscspace_poly_tensor 0 -pres_petscdualspace_lagrange_continuity 0 -pres_petscdualspace_lagrange_node_endpoints 0 \
3482: -snes_error_if_not_converged \
3483: -ksp_error_if_not_converged \
3484: -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural \
3485: -fetidp_bddc_pc_bddc_detect_disconnected -fetidp_bddc_pc_bddc_symmetric -fetidp_bddc_pc_bddc_vertex_size 3 -fetidp_bddc_pc_bddc_graph_maxcount 2 -fetidp_bddc_pc_bddc_coarse_redundant_pc_type svd -fetidp_bddc_pc_bddc_dirichlet_pc_type svd -fetidp_bddc_pc_bddc_neumann_pc_type svd
3486: test:
3487: suffix: aij
3488: args: -mat_is_localmat_type aij
3489: test:
3490: requires: viennacl !CUDA_VERSION_11PLUS
3491: TODO: broken
3492: suffix: aijviennacl
3493: args: -mat_is_localmat_type aijviennacl
3494: test:
3495: requires: cuda
3496: suffix: aijcusparse
3497: args: -mat_is_localmat_type aijcusparse
3499: testset:
3500: suffix: q2p1fetidp_deluxe
3501: output_file: output/ex69_q2p1fetidp_deluxe.out
3502: requires: mumps double
3503: nsize: 5
3504: args: -dm_plex_simplex 0 -dm_plex_separate_marker -dm_refine_pre 1 -dm_mat_type is -dm_view -petscpartitioner_type simple \
3505: -vel_petscspace_degree 2 -pres_petscspace_degree 1 -pres_petscspace_poly_tensor 0 -pres_petscdualspace_lagrange_continuity 0 -pres_petscdualspace_lagrange_node_endpoints 0 \
3506: -snes_error_if_not_converged \
3507: -ksp_error_if_not_converged \
3508: -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural \
3509: -fetidp_bddc_pc_bddc_detect_disconnected -fetidp_bddc_pc_bddc_symmetric -fetidp_bddc_pc_bddc_vertex_size 3 -fetidp_bddc_pc_bddc_graph_maxcount 2 -fetidp_bddc_pc_bddc_use_deluxe_scaling -fetidp_bddc_pc_bddc_deluxe_singlemat -fetidp_bddc_pc_bddc_deluxe_zerorows \
3510: -fetidp_bddc_sub_schurs_mat_solver_type mumps -fetidp_bddc_sub_schurs_mat_mumps_icntl_14 500 -fetidp_bddc_pc_bddc_coarse_redundant_pc_type svd
3511: test:
3512: suffix: aij
3513: args: -mat_is_localmat_type aij
3514: test:
3515: suffix: aij_seqdense
3516: args: -mat_is_localmat_type aij -fetidp_bddc_sub_schurs_schur_mat_type seqdense
3517: test:
3518: requires: viennacl !CUDA_VERSION_11PLUS
3519: suffix: aijviennacl
3520: args: -mat_is_localmat_type aijviennacl
3521: test:
3522: requires: cuda
3523: suffix: aijcusparse
3524: args: -mat_is_localmat_type aijcusparse
3526: testset:
3527: suffix: q2p1fetidp_deluxe_adaptive
3528: output_file: output/ex69_q2p1fetidp_deluxe_adaptive.out
3529: requires: mumps double
3530: nsize: 5
3531: args: -dm_plex_simplex 0 -dm_plex_separate_marker -dm_refine_pre 1 -dm_mat_type is -dm_view -petscpartitioner_type simple \
3532: -vel_petscspace_degree 2 -pres_petscspace_degree 1 -pres_petscspace_poly_tensor 0 -pres_petscdualspace_lagrange_continuity 0 -pres_petscdualspace_lagrange_node_endpoints 0 \
3533: -snes_error_if_not_converged \
3534: -ksp_error_if_not_converged \
3535: -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural \
3536: -fetidp_bddc_pc_bddc_detect_disconnected -fetidp_bddc_pc_bddc_symmetric -fetidp_bddc_pc_bddc_vertex_size 3 -fetidp_bddc_pc_bddc_graph_maxcount 2 -fetidp_bddc_pc_bddc_use_deluxe_scaling -fetidp_bddc_pc_bddc_deluxe_singlemat -fetidp_bddc_pc_bddc_adaptive_userdefined -fetidp_bddc_pc_bddc_adaptive_threshold 1.3 \
3537: -fetidp_bddc_sub_schurs_mat_solver_type mumps -fetidp_bddc_sub_schurs_mat_mumps_icntl_14 500 -fetidp_bddc_pc_bddc_coarse_redundant_pc_type svd
3538: test:
3539: suffix: aij
3540: args: -mat_is_localmat_type aij
3541: test:
3542: suffix: aij_seqdense
3543: args: -mat_is_localmat_type aij -fetidp_bddc_sub_schurs_schur_mat_type seqdense
3544: test:
3545: requires: viennacl !CUDA_VERSION_11PLUS
3546: suffix: aijviennacl
3547: args: -mat_is_localmat_type aijviennacl
3548: test:
3549: requires: cuda
3550: suffix: aijcusparse
3551: args: -mat_is_localmat_type aijcusparse
3553: test:
3554: suffix: p2p1fetidp
3555: requires: triangle
3556: nsize: 4
3557: args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3558: -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3559: -snes_error_if_not_converged \
3560: -ksp_error_if_not_converged \
3561: -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural -fetidp_pc_fieldsplit_schur_fact_type diag \
3562: -fetidp_fieldsplit_p_pc_type jacobi -fetidp_fieldsplit_p_ksp_type preonly \
3563: -fetidp_fieldsplit_lag_ksp_type preonly \
3564: -fetidp_bddc_pc_bddc_detect_disconnected -fetidp_bddc_pc_bddc_symmetric -fetidp_bddc_pc_bddc_vertex_size 3 -fetidp_bddc_pc_bddc_graph_maxcount 2 -fetidp_bddc_pc_bddc_coarse_redundant_pc_type cholesky -fetidp_bddc_pc_bddc_dirichlet_pc_type svd -fetidp_bddc_pc_bddc_neumann_pc_type svd
3566: test:
3567: suffix: p2p1fetidp_allp
3568: requires: triangle
3569: nsize: 4
3570: args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3571: -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3572: -snes_error_if_not_converged \
3573: -ksp_error_if_not_converged \
3574: -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural -fetidp_pc_fieldsplit_schur_fact_type diag -ksp_fetidp_pressure_all \
3575: -fetidp_fieldsplit_p_pc_type jacobi -fetidp_fieldsplit_p_ksp_type preonly \
3576: -fetidp_fieldsplit_lag_ksp_type preonly \
3577: -fetidp_bddc_pc_bddc_detect_disconnected -fetidp_bddc_pc_bddc_symmetric -fetidp_bddc_pc_bddc_vertex_size 3 -fetidp_bddc_pc_bddc_graph_maxcount 2 -fetidp_bddc_pc_bddc_coarse_redundant_pc_type cholesky -fetidp_bddc_pc_bddc_dirichlet_pc_type svd -fetidp_bddc_pc_bddc_neumann_pc_type svd
3579: test:
3580: suffix: p2p1fetidp_discharm
3581: requires: triangle
3582: nsize: 4
3583: args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3584: -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3585: -snes_error_if_not_converged \
3586: -ksp_error_if_not_converged \
3587: -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural -fetidp_pc_fieldsplit_schur_fact_type diag -fetidp_pc_discrete_harmonic -fetidp_harmonic_pc_type cholesky \
3588: -fetidp_fieldsplit_p_pc_type jacobi -fetidp_fieldsplit_p_ksp_type preonly \
3589: -fetidp_fieldsplit_lag_ksp_type preonly \
3590: -fetidp_bddc_pc_bddc_detect_disconnected -fetidp_bddc_pc_bddc_symmetric -fetidp_bddc_pc_bddc_vertex_size 3 -fetidp_bddc_pc_bddc_graph_maxcount 2 -fetidp_bddc_pc_bddc_coarse_redundant_pc_type cholesky -fetidp_bddc_pc_bddc_dirichlet_pc_type none -fetidp_bddc_pc_bddc_neumann_pc_type svd
3592: test:
3593: suffix: p2p1fetidp_lumped
3594: requires: triangle
3595: nsize: 4
3596: args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3597: -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3598: -snes_error_if_not_converged \
3599: -ksp_error_if_not_converged \
3600: -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural -fetidp_pc_fieldsplit_schur_fact_type diag -fetidp_pc_lumped \
3601: -fetidp_fieldsplit_p_pc_type jacobi -fetidp_fieldsplit_p_ksp_type preonly \
3602: -fetidp_fieldsplit_lag_ksp_type preonly \
3603: -fetidp_bddc_pc_bddc_detect_disconnected -fetidp_bddc_pc_bddc_symmetric -fetidp_bddc_pc_bddc_vertex_size 3 -fetidp_bddc_pc_bddc_graph_maxcount 2 -fetidp_bddc_pc_bddc_coarse_redundant_pc_type cholesky -fetidp_bddc_pc_bddc_dirichlet_pc_type none -fetidp_bddc_pc_bddc_neumann_pc_type svd
3605: test:
3606: suffix: p2p1fetidp_deluxe
3607: requires: triangle mumps
3608: nsize: 4
3609: args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3610: -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3611: -snes_error_if_not_converged \
3612: -ksp_error_if_not_converged \
3613: -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural -fetidp_pc_fieldsplit_schur_fact_type diag \
3614: -fetidp_fieldsplit_p_pc_type jacobi -fetidp_fieldsplit_p_ksp_type preonly \
3615: -fetidp_fieldsplit_lag_ksp_type preonly \
3616: -fetidp_bddc_pc_bddc_detect_disconnected -fetidp_bddc_pc_bddc_symmetric -fetidp_bddc_pc_bddc_vertex_size 3 -fetidp_bddc_pc_bddc_graph_maxcount 2 -fetidp_bddc_pc_bddc_coarse_redundant_pc_type cholesky -fetidp_bddc_pc_bddc_use_deluxe_scaling -fetidp_bddc_pc_bddc_deluxe_singlemat \
3617: -fetidp_bddc_sub_schurs_mat_solver_type mumps -fetidp_bddc_sub_schurs_mat_mumps_icntl_14 500 -fetidp_bddc_sub_schurs_posdef 0
3619: test:
3620: suffix: p2p1fetidp_deluxe_discharm
3621: requires: triangle mumps
3622: nsize: 4
3623: args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3624: -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3625: -snes_error_if_not_converged \
3626: -ksp_error_if_not_converged \
3627: -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural -fetidp_pc_fieldsplit_schur_fact_type diag \
3628: -fetidp_fieldsplit_p_pc_type jacobi -fetidp_fieldsplit_p_ksp_type preonly \
3629: -fetidp_fieldsplit_lag_ksp_type preonly \
3630: -fetidp_bddc_pc_bddc_detect_disconnected -fetidp_bddc_pc_bddc_symmetric -fetidp_bddc_pc_bddc_vertex_size 3 -fetidp_bddc_pc_bddc_graph_maxcount 2 -fetidp_bddc_pc_bddc_coarse_redundant_pc_type cholesky -fetidp_bddc_pc_bddc_use_deluxe_scaling -fetidp_bddc_pc_bddc_deluxe_singlemat \
3631: -fetidp_bddc_sub_schurs_mat_solver_type mumps -fetidp_bddc_sub_schurs_mat_mumps_icntl_14 500 -fetidp_bddc_sub_schurs_posdef 0 -fetidp_bddc_sub_schurs_discrete_harmonic
3633: testset:
3634: nsize: 4
3635: requires: triangle
3636: output_file: output/ex69_p2p1fetidp_olof.out
3637: args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3638: -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3639: -snes_error_if_not_converged \
3640: -ksp_error_if_not_converged \
3641: -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural -fetidp_pc_discrete_harmonic 1 -fetidp_harmonic_pc_type cholesky -ksp_fetidp_pressure_schur \
3642: -fetidp_fieldsplit_p_pc_type bddc -fetidp_fieldsplit_p_pc_bddc_dirichlet_pc_type none -fetidp_fieldsplit_p_ksp_type preonly \
3643: -fetidp_fieldsplit_lag_ksp_error_if_not_converged 0 -fetidp_fieldsplit_lag_ksp_type chebyshev -fetidp_fieldsplit_lag_ksp_max_it 2 \
3644: -fetidp_bddc_pc_bddc_detect_disconnected -fetidp_bddc_pc_bddc_symmetric -fetidp_bddc_pc_bddc_vertex_size 3 -fetidp_bddc_pc_bddc_graph_maxcount 2 -fetidp_bddc_pc_bddc_coarse_redundant_pc_type cholesky -fetidp_bddc_pc_bddc_dirichlet_pc_type none -fetidp_bddc_pc_bddc_neumann_pc_type svd
3645: test:
3646: suffix: p2p1fetidp_olof_full
3647: args: -fetidp_pc_fieldsplit_schur_fact_type full
3648: test:
3649: suffix: p2p1fetidp_olof_diag
3650: args: -fetidp_pc_fieldsplit_schur_fact_type diag
3651: test:
3652: suffix: p2p1fetidp_olof_additive
3653: args: -fetidp_pc_fieldsplit_type additive
3655: #BDDC with benign trick
3656: testset:
3657: suffix: q2p1bddc
3658: output_file: output/ex69_q2p1fetidp_deluxe.out
3659: nsize: 5
3660: args: -dm_plex_simplex 0 -dm_plex_separate_marker -dm_refine_pre 1 -dm_mat_type is -dm_view -petscpartitioner_type simple -vel_petscspace_degree 2 -pres_petscspace_degree 1 -pres_petscspace_poly_tensor 0 -pres_petscdualspace_lagrange_continuity 0 -pres_petscdualspace_lagrange_node_endpoints 0 -petscds_jac_pre 0 -snes_error_if_not_converged -ksp_error_if_not_converged -ksp_type cg -ksp_norm_type natural -pc_type bddc -pc_bddc_benign_trick -pc_bddc_nonetflux -pc_bddc_detect_disconnected -pc_bddc_vertex_size 2 -pc_bddc_coarse_redundant_pc_type svd -pc_bddc_use_qr_single
3661: test:
3662: requires: double
3663: suffix: benign_card
3664: # no native support for saddle point factorizations from PETSc
3665: args: -pc_bddc_dirichlet_pc_type svd -pc_bddc_neumann_pc_type svd
3666: test:
3667: requires: mumps double
3668: suffix: benign_deluxe_mumps
3669: args: -pc_bddc_use_deluxe_scaling -pc_bddc_deluxe_zerorows -sub_schurs_mat_solver_type mumps -sub_schurs_mat_mumps_icntl_14 1000
3670: test:
3671: requires: mumps double
3672: suffix: benign_deluxe_adaptive_mumps
3673: args: -pc_bddc_adaptive_threshold 1.7 -pc_bddc_use_deluxe_scaling -pc_bddc_deluxe_zerorows -sub_schurs_mat_solver_type mumps -sub_schurs_mat_mumps_icntl_14 1000
3674: test:
3675: TODO: broken (INDEFINITE PC)
3676: requires: mkl_pardiso double !complex
3677: suffix: benign_deluxe_mkl
3678: args: -pc_bddc_use_deluxe_scaling -pc_bddc_deluxe_zerorows -sub_schurs_mat_solver_type mkl_pardiso -snes_rtol 1.e-7
3679: test:
3680: TODO: broken (INDEFINITE PC)
3681: requires: mkl_pardiso double !complex
3682: suffix: benign_deluxe_adaptive_mkl
3683: args: -pc_bddc_adaptive_threshold 1.7 -pc_bddc_use_deluxe_scaling -pc_bddc_deluxe_zerorows -sub_schurs_mat_solver_type mkl_pardiso -snes_rtol 1.e-7
3685: TEST*/