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