xref: /petsc/src/snes/tutorials/ex69.c (revision 4e8208cbcbc709572b8abe32f33c78b69c819375)
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,
255307ee71SStefano Zampini   SOLZERO,
269371c9d4SSatish Balay   NUM_SOL_TYPES
279371c9d4SSatish Balay } SolutionType;
285307ee71SStefano Zampini 
295307ee71SStefano Zampini const char *solTypes[NUM_SOL_TYPES + 1] = {"solkx", "solcx", "zero", "unknown"};
30c4762a1bSJed Brown 
31c4762a1bSJed Brown typedef struct {
32c4762a1bSJed Brown   PetscInt n, m; /* x- and y-wavelengths for variation across the domain */
33c4762a1bSJed Brown   /* SolKx */
34c4762a1bSJed Brown   PetscReal B; /* Exponential scale for viscosity variation */
35c4762a1bSJed Brown   /* SolCx */
36c4762a1bSJed Brown   PetscReal etaA, etaB; /* Two viscosities for discontinuous change */
37c4762a1bSJed Brown   PetscReal xc;         /* The location of viscosity jump */
38c4762a1bSJed Brown } Parameter;
39c4762a1bSJed Brown 
40c4762a1bSJed Brown typedef struct {
41c4762a1bSJed Brown   SolutionType solType; /* The type of exact solution */
42c4762a1bSJed Brown   PetscBag     bag;     /* Holds problem parameters */
43c4762a1bSJed Brown } AppCtx;
44c4762a1bSJed Brown 
zero(PetscInt dim,PetscReal time,const PetscReal coords[],PetscInt Nc,PetscScalar * u,PetscCtx ctx)45*2a8381b2SBarry Smith static PetscErrorCode zero(PetscInt dim, PetscReal time, const PetscReal coords[], PetscInt Nc, PetscScalar *u, PetscCtx ctx)
46d71ae5a4SJacob Faibussowitsch {
47478db826SMatthew G. Knepley   PetscInt c;
48478db826SMatthew G. Knepley   for (c = 0; c < Nc; ++c) u[c] = 0.0;
493ba16761SJacob Faibussowitsch   return PETSC_SUCCESS;
50c4762a1bSJed Brown }
515307ee71SStefano Zampini 
one(PetscInt dim,PetscReal time,const PetscReal coords[],PetscInt Nc,PetscScalar * u,PetscCtx ctx)52*2a8381b2SBarry Smith static PetscErrorCode one(PetscInt dim, PetscReal time, const PetscReal coords[], PetscInt Nc, PetscScalar *u, PetscCtx ctx)
53d71ae5a4SJacob Faibussowitsch {
54478db826SMatthew G. Knepley   PetscInt c;
55478db826SMatthew G. Knepley   for (c = 0; c < Nc; ++c) u[c] = 1.0;
563ba16761SJacob Faibussowitsch   return PETSC_SUCCESS;
57c4762a1bSJed Brown }
58c4762a1bSJed Brown 
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[])59d71ae5a4SJacob 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[])
60d71ae5a4SJacob Faibussowitsch {
61c4762a1bSJed Brown   f0[0] = 0.0;
62c4762a1bSJed Brown   f0[1] = -PetscSinScalar(constants[1] * PETSC_PI * x[1]) * PetscCosScalar(constants[0] * PETSC_PI * x[0]);
63c4762a1bSJed Brown }
64c4762a1bSJed Brown 
f0_zero(PetscInt dim,PetscInt Nf,PetscInt NfAux,const PetscInt uOff[],const PetscInt uOff_x[],const PetscScalar u[],const PetscScalar u_t[],const PetscScalar u_x[],const PetscInt aOff[],const PetscInt aOff_x[],const PetscScalar a[],const PetscScalar a_t[],const PetscScalar a_x[],PetscReal t,const PetscReal x[],PetscInt numConstants,const PetscScalar constants[],PetscScalar f0[])655307ee71SStefano Zampini static void f0_zero(PetscInt dim, PetscInt Nf, PetscInt NfAux, const PetscInt uOff[], const PetscInt uOff_x[], const PetscScalar u[], const PetscScalar u_t[], const PetscScalar u_x[], const PetscInt aOff[], const PetscInt aOff_x[], const PetscScalar a[], const PetscScalar a_t[], const PetscScalar a_x[], PetscReal t, const PetscReal x[], PetscInt numConstants, const PetscScalar constants[], PetscScalar f0[])
665307ee71SStefano Zampini {
675307ee71SStefano Zampini   f0[0] = 0.0;
685307ee71SStefano Zampini   f0[1] = 0.0;
695307ee71SStefano Zampini }
705307ee71SStefano Zampini 
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[])71d71ae5a4SJacob 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[])
72d71ae5a4SJacob Faibussowitsch {
73c4762a1bSJed Brown   const PetscReal mu = PetscExpReal(2.0 * PetscRealPart(constants[2]) * x[0]);
74c4762a1bSJed Brown   PetscInt        c, d;
75c4762a1bSJed Brown 
76c4762a1bSJed Brown   for (c = 0; c < dim; ++c) {
77ad540459SPierre Jolivet     for (d = 0; d < dim; ++d) f1[c * dim + d] = mu * (u_x[c * dim + d] + u_x[d * dim + c]);
78c4762a1bSJed Brown     f1[c * dim + c] -= u[dim];
79c4762a1bSJed Brown   }
80c4762a1bSJed Brown }
81c4762a1bSJed Brown 
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[])82d71ae5a4SJacob 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[])
83d71ae5a4SJacob Faibussowitsch {
84c4762a1bSJed Brown   const PetscReal mu = x[0] < PetscRealPart(constants[4]) ? PetscRealPart(constants[2]) : PetscRealPart(constants[3]);
85c4762a1bSJed Brown   PetscInt        c, d;
86c4762a1bSJed Brown 
87c4762a1bSJed Brown   for (c = 0; c < dim; ++c) {
88ad540459SPierre Jolivet     for (d = 0; d < dim; ++d) f1[c * dim + d] = mu * (u_x[c * dim + d] + u_x[d * dim + c]);
89c4762a1bSJed Brown     f1[c * dim + c] -= u[dim];
90c4762a1bSJed Brown   }
91c4762a1bSJed Brown }
92c4762a1bSJed Brown 
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[])93d71ae5a4SJacob 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[])
94d71ae5a4SJacob Faibussowitsch {
95c4762a1bSJed Brown   PetscInt d;
96c4762a1bSJed Brown   f0[0] = 0.0;
97478db826SMatthew G. Knepley   for (d = 0; d < dim; ++d) f0[0] -= u_x[d * dim + d];
98c4762a1bSJed Brown }
99c4762a1bSJed Brown 
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[])100d71ae5a4SJacob 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[])
101d71ae5a4SJacob Faibussowitsch {
102c4762a1bSJed Brown   PetscInt d;
103c4762a1bSJed Brown   for (d = 0; d < dim * dim; ++d) f1[d] = 0.0;
104c4762a1bSJed Brown }
105c4762a1bSJed Brown 
106c4762a1bSJed Brown /* < q, \nabla\cdot u >, J_{pu} */
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[])107d71ae5a4SJacob 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[])
108d71ae5a4SJacob Faibussowitsch {
109c4762a1bSJed Brown   PetscInt d;
110478db826SMatthew G. Knepley   for (d = 0; d < dim; ++d) g1[d * dim + d] = -1.0; /* \frac{\partial\phi^{u_d}}{\partial x_d} */
111c4762a1bSJed Brown }
112c4762a1bSJed Brown 
113c4762a1bSJed Brown /* -< \nabla\cdot v, p >, J_{up} */
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[])114d71ae5a4SJacob 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[])
115d71ae5a4SJacob Faibussowitsch {
116c4762a1bSJed Brown   PetscInt d;
117c4762a1bSJed Brown   for (d = 0; d < dim; ++d) g2[d * dim + d] = -1.0; /* \frac{\partial\psi^{u_d}}{\partial x_d} */
118c4762a1bSJed Brown }
119c4762a1bSJed Brown 
120c4762a1bSJed Brown /* < \nabla v, \nabla u + {\nabla u}^T >, J_{uu}
121c4762a1bSJed Brown    This just gives \nabla u, give the perdiagonal for the transpose */
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[])122d71ae5a4SJacob 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[])
123d71ae5a4SJacob Faibussowitsch {
124c4762a1bSJed Brown   const PetscReal mu = PetscExpReal(2.0 * PetscRealPart(constants[2]) * x[0]);
125c4762a1bSJed Brown   PetscInt        cI, d;
126c4762a1bSJed Brown 
127c4762a1bSJed Brown   for (cI = 0; cI < dim; ++cI) {
128c4762a1bSJed Brown     for (d = 0; d < dim; ++d) {
129c4762a1bSJed Brown       g3[((cI * dim + cI) * dim + d) * dim + d] += mu; /*g3[cI, cI, d, d]*/
130c4762a1bSJed Brown       g3[((cI * dim + d) * dim + d) * dim + cI] += mu; /*g3[cI, d, d, cI]*/
131c4762a1bSJed Brown     }
132c4762a1bSJed Brown   }
133c4762a1bSJed Brown }
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[])134d71ae5a4SJacob 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[])
135d71ae5a4SJacob Faibussowitsch {
136c4762a1bSJed Brown   const PetscReal mu = x[0] < PetscRealPart(constants[4]) ? PetscRealPart(constants[2]) : PetscRealPart(constants[3]);
137c4762a1bSJed Brown   PetscInt        cI, d;
138c4762a1bSJed Brown 
139c4762a1bSJed Brown   for (cI = 0; cI < dim; ++cI) {
140c4762a1bSJed Brown     for (d = 0; d < dim; ++d) {
141c4762a1bSJed Brown       g3[((cI * dim + cI) * dim + d) * dim + d] += mu; /*g3[cI, cI, d, d]*/
142c4762a1bSJed Brown       g3[((cI * dim + d) * dim + d) * dim + cI] += mu; /*g3[cI, d, d, cI]*/
143c4762a1bSJed Brown     }
144c4762a1bSJed Brown   }
145c4762a1bSJed Brown }
146c4762a1bSJed Brown 
147c4762a1bSJed Brown /* 1/mu < q, I q >, Jp_{pp} */
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[])148d71ae5a4SJacob 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[])
149d71ae5a4SJacob Faibussowitsch {
150c4762a1bSJed Brown   const PetscReal mu = PetscExpReal(2.0 * PetscRealPart(constants[2]) * x[0]);
151c4762a1bSJed Brown   g0[0]              = 1.0 / mu;
152c4762a1bSJed Brown }
153478db826SMatthew G. Knepley 
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[])154d71ae5a4SJacob 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[])
155d71ae5a4SJacob Faibussowitsch {
156c4762a1bSJed Brown   const PetscReal mu = x[0] < PetscRealPart(constants[4]) ? PetscRealPart(constants[2]) : PetscRealPart(constants[3]);
157c4762a1bSJed Brown   g0[0]              = 1.0 / mu;
158c4762a1bSJed Brown }
159c4762a1bSJed Brown 
160c4762a1bSJed Brown /*
161c4762a1bSJed Brown   SolKxSolution - Exact Stokes solutions for exponentially varying viscosity
162c4762a1bSJed Brown 
163c4762a1bSJed Brown  Input Parameters:
164c4762a1bSJed Brown + pos   - The (x,z) coordinate at which to evaluate the solution
165c4762a1bSJed Brown . n     - The constant defining the x-dependence of the forcing function
166c4762a1bSJed Brown . m     - The constant defining the z-dependence of the forcing function
167c4762a1bSJed Brown - B     - The viscosity coefficient
168c4762a1bSJed Brown 
169c4762a1bSJed Brown   Output Parameters:
170c4762a1bSJed Brown + vel   - The (x,z)-velocity at (x,z), or NULL
171c4762a1bSJed Brown . p     - The pressure at (x,z), or NULL
172c4762a1bSJed Brown . s     - The total stress (sigma_xx, sigma_xz, sigma_zz) at (x,z), or NULL
173c4762a1bSJed Brown . gamma - The strain rate, or NULL
174c4762a1bSJed Brown - mu    - The viscosity at (x,z), or NULL
175c4762a1bSJed Brown 
176c4762a1bSJed Brown   Note:
177562efe2eSBarry Smith .vb
178562efe2eSBarry Smith   The domain is the square 0 <= x,z <= 1. We solve the Stokes equation for incompressible flow with free-slip boundary
179562efe2eSBarry Smith   conditions everywhere. The forcing term f is given by
180562efe2eSBarry Smith 
181562efe2eSBarry Smith     fx = 0
182562efe2eSBarry Smith     fz = sigma*sin(km*z)*cos(kn*x)
183562efe2eSBarry Smith 
184562efe2eSBarry Smith   where
185562efe2eSBarry Smith 
186562efe2eSBarry Smith     km = m*Pi (m may be non-integral)
187562efe2eSBarry Smith     kn = n*Pi
188562efe2eSBarry Smith 
189562efe2eSBarry Smith   meaning that the density rho is -sigma*sin(km*z)*cos(kn*x). Here we set sigma = 1.
190562efe2eSBarry Smith   The viscosity eta is exp(2*B*x).
191562efe2eSBarry Smith .ve
192562efe2eSBarry Smith 
193c4762a1bSJed Brown */
SolKxSolution(const PetscReal pos[],PetscReal m,PetscInt n,PetscReal B,PetscScalar vel[],PetscScalar * p,PetscScalar s[],PetscScalar gamma[],PetscScalar * mu)194d71ae5a4SJacob Faibussowitsch static PetscErrorCode SolKxSolution(const PetscReal pos[], PetscReal m, PetscInt n, PetscReal B, PetscScalar vel[], PetscScalar *p, PetscScalar s[], PetscScalar gamma[], PetscScalar *mu)
195d71ae5a4SJacob Faibussowitsch {
196c4762a1bSJed Brown   PetscReal sigma = 1.0;
197c4762a1bSJed Brown   PetscReal Z;
198c4762a1bSJed Brown   PetscReal u1, u2, u3, u4, u5, u6;
199c4762a1bSJed Brown   PetscReal sum1, sum2, sum3, sum4, sum5, sum6;
200c4762a1bSJed Brown   PetscReal kn, km, x, z;
201c4762a1bSJed Brown   PetscReal _PC1, _PC2, _PC3, _PC4;
202c4762a1bSJed Brown   PetscReal Rp, UU, VV;
203c4762a1bSJed Brown   PetscReal a, b, r, _aa, _bb, AA, BB, Rm;
204c4762a1bSJed Brown   PetscReal num1, num2, num3, num4, den1;
205c4762a1bSJed Brown 
206c4762a1bSJed Brown   PetscReal t1, t2, t3, t4, t5, t6, t7, t8, t9, t10;
207c4762a1bSJed Brown   PetscReal t11, t12, t13, t14, t15, t16, t17, t18, t19, t20;
208c4762a1bSJed Brown   PetscReal t21, t22, t23, t24, t25, t26, t27, t28, t29, t30;
209c4762a1bSJed Brown   PetscReal t31, t32, t33, t34, t35, t36, t37, t38, t39, t40;
210c4762a1bSJed Brown   PetscReal t41, t42, t43, t44, t45, t46, t47, t49, t51, t53;
211c4762a1bSJed Brown   PetscReal t56, t58, t61, t62, t63, t64, t65, t66, t67, t68;
212c4762a1bSJed Brown   PetscReal t69, t70, t71, t72, t73, t74, t75, t76, t77, t78;
213c4762a1bSJed Brown   PetscReal t79, t80, t81, t82, t83, t84, t85, t86, t87, t88;
214c4762a1bSJed Brown   PetscReal t89, t90, t91, t92, t93, t94, t95, t96, t97, t99;
215c4762a1bSJed Brown   PetscReal t100, t101, t103, t104, t105, t106, t107, t108, t109, t110;
216c4762a1bSJed Brown   PetscReal t111, t112, t113, t114, t115, t116, t117, t118, t119, t120;
217c4762a1bSJed Brown   PetscReal t121, t124, t125, t126, t127, t129, t130, t132, t133, t135;
218c4762a1bSJed Brown   PetscReal t136, t138, t140, t141, t142, t143, t152, t160, t162;
219c4762a1bSJed Brown 
220c4762a1bSJed Brown   PetscFunctionBegin;
221c4762a1bSJed Brown   /*************************************************************************/
222c4762a1bSJed Brown   /*************************************************************************/
223c4762a1bSJed Brown   /* rho = -sin(km*z)*cos(kn*x) */
224c4762a1bSJed Brown   x  = pos[0];
225c4762a1bSJed Brown   z  = pos[1];
226c4762a1bSJed Brown   Z  = PetscExpReal(2.0 * B * x);
227c4762a1bSJed Brown   km = m * PETSC_PI; /* solution valid for km not zero -- should get trivial solution if km=0 */
228c4762a1bSJed Brown   kn = (PetscReal)n * PETSC_PI;
229c4762a1bSJed Brown   /*************************************************************************/
230c4762a1bSJed Brown   /*************************************************************************/
231c4762a1bSJed Brown   a  = B * B + km * km;
232c4762a1bSJed Brown   b  = 2.0 * km * B;
233c4762a1bSJed Brown   r  = PetscSqrtReal(a * a + b * b);
234c4762a1bSJed Brown   Rp = PetscSqrtReal((r + a) / 2.0);
235c4762a1bSJed Brown   Rm = PetscSqrtReal((r - a) / 2.0);
236c4762a1bSJed Brown   UU = Rp - B;
237c4762a1bSJed Brown   VV = Rp + B;
238c4762a1bSJed Brown 
239c4762a1bSJed Brown   sum1 = 0.0;
240c4762a1bSJed Brown   sum2 = 0.0;
241c4762a1bSJed Brown   sum3 = 0.0;
242c4762a1bSJed Brown   sum4 = 0.0;
243c4762a1bSJed Brown   sum5 = 0.0;
244c4762a1bSJed Brown   sum6 = 0.0;
245c4762a1bSJed Brown   /*sum7=0.0;*/
246c4762a1bSJed Brown 
247c4762a1bSJed Brown   /*******************************************/
248c4762a1bSJed Brown   /*         calculate the constants         */
249c4762a1bSJed Brown   /*******************************************/
250c4762a1bSJed Brown 
251c4762a1bSJed Brown   t1  = kn * kn;
252c4762a1bSJed Brown   t4  = km * km;
253c4762a1bSJed Brown   t5  = t4 + t1;
254c4762a1bSJed Brown   t6  = t5 * t5;
255c4762a1bSJed Brown   t8  = pow(km + kn, 0.2e1);
256c4762a1bSJed Brown   t9  = B * B;
257c4762a1bSJed Brown   t16 = pow(km - kn, 0.2e1);
258c4762a1bSJed Brown   _aa = -0.4e1 * B * t1 * sigma * t5 / (t6 + 0.4e1 * t8 * t9) / (t6 + 0.4e1 * t16 * t9);
259c4762a1bSJed Brown 
260c4762a1bSJed Brown   t2  = km * km;
261c4762a1bSJed Brown   t3  = kn * kn;
262c4762a1bSJed Brown   t5  = pow(t2 + t3, 0.2e1);
263c4762a1bSJed Brown   t6  = km - kn;
264c4762a1bSJed Brown   t7  = km + kn;
265c4762a1bSJed Brown   t9  = B * B;
266c4762a1bSJed Brown   t13 = t7 * t7;
267c4762a1bSJed Brown   t19 = t6 * t6;
268c4762a1bSJed Brown   _bb = sigma * kn * (t5 + 0.4e1 * t6 * t7 * t9) / (t5 + 0.4e1 * t13 * t9) / (t5 + 0.4e1 * t19 * t9);
269c4762a1bSJed Brown 
270c4762a1bSJed Brown   AA = _aa;
271c4762a1bSJed Brown   BB = _bb;
272c4762a1bSJed Brown 
273c4762a1bSJed Brown   /*******************************************/
274c4762a1bSJed Brown   /*       calculate the velocities etc      */
275c4762a1bSJed Brown   /*******************************************/
276c4762a1bSJed Brown   t1   = Rm * Rm;
277c4762a1bSJed Brown   t2   = B - Rp;
278c4762a1bSJed Brown   t4   = Rp + B;
279c4762a1bSJed Brown   t6   = UU * x;
280c4762a1bSJed Brown   t9   = PetscExpReal(t6 - 0.4e1 * Rp);
281c4762a1bSJed Brown   t13  = B * B;
282c4762a1bSJed Brown   t16  = Rp * t1;
283c4762a1bSJed Brown   t18  = Rp * Rp;
284c4762a1bSJed Brown   t19  = B * t18;
285c4762a1bSJed Brown   t20  = t13 * Rp;
286c4762a1bSJed Brown   t22  = kn * kn;
287c4762a1bSJed Brown   t24  = B * t1;
288c4762a1bSJed Brown   t32  = 0.8e1 * t13 * BB * kn * Rp;
289c4762a1bSJed Brown   t34  = 0.2e1 * Rm;
290c4762a1bSJed Brown   t35  = PetscCosReal(t34);
291c4762a1bSJed Brown   t37  = Rp * Rm;
292c4762a1bSJed Brown   t49  = PetscSinReal(t34);
293c4762a1bSJed Brown   t63  = PetscExpReal(t6 - 0.2e1 * Rp);
294c4762a1bSJed Brown   t65  = Rm * t2;
295c4762a1bSJed Brown   t67  = 0.2e1 * B * kn;
296c4762a1bSJed Brown   t68  = B * Rm;
297c4762a1bSJed Brown   t69  = t67 + t68 + t37;
298c4762a1bSJed Brown   t73  = 0.3e1 * t13;
299c4762a1bSJed Brown   t75  = 0.2e1 * B * Rp;
300c4762a1bSJed Brown   t76  = t73 - t75 + t1 - t22 - t18;
301c4762a1bSJed Brown   t78  = t65 * t76 * BB;
302c4762a1bSJed Brown   t80  = Rm - kn;
303c4762a1bSJed Brown   t81  = PetscCosReal(t80);
304c4762a1bSJed Brown   t83  = -t67 + t68 + t37;
305c4762a1bSJed Brown   t88  = Rm + kn;
306c4762a1bSJed Brown   t89  = PetscCosReal(t88);
307c4762a1bSJed Brown   t92  = t65 * t76 * AA;
308c4762a1bSJed Brown   t97  = PetscSinReal(t80);
309c4762a1bSJed Brown   t103 = PetscSinReal(t88);
310c4762a1bSJed Brown   t108 = PetscExpReal(t6 - 0.3e1 * Rp - B);
311c4762a1bSJed Brown   t110 = Rm * t4;
312c4762a1bSJed Brown   t111 = t67 + t68 - t37;
313c4762a1bSJed Brown   t115 = t73 + t75 + t1 - t22 - t18;
314c4762a1bSJed Brown   t117 = t110 * t115 * BB;
315c4762a1bSJed Brown   t120 = -t67 + t68 - t37;
316c4762a1bSJed Brown   t127 = t110 * t115 * AA;
317c4762a1bSJed Brown   t140 = PetscExpReal(t6 - Rp - B);
318c4762a1bSJed 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;
319c4762a1bSJed Brown 
320c4762a1bSJed Brown   t1   = Rp + B;
321c4762a1bSJed Brown   t2   = Rm * t1;
322c4762a1bSJed Brown   t3   = B * B;
323c4762a1bSJed Brown   t4   = 0.3e1 * t3;
324c4762a1bSJed Brown   t5   = B * Rp;
325c4762a1bSJed Brown   t7   = Rm * Rm;
326c4762a1bSJed Brown   t8   = kn * kn;
327c4762a1bSJed Brown   t9   = Rp * Rp;
328c4762a1bSJed Brown   t10  = t4 + 0.2e1 * t5 + t7 - t8 - t9;
329c4762a1bSJed Brown   t12  = t2 * t10 * AA;
330c4762a1bSJed Brown   t14  = B * Rm;
331c4762a1bSJed Brown   t20  = UU * x;
332c4762a1bSJed Brown   t23  = PetscExpReal(t20 - 0.4e1 * Rp);
333c4762a1bSJed Brown   t25  = Rp * Rm;
334c4762a1bSJed Brown   t32  = Rm * kn;
335c4762a1bSJed Brown   t37  = 0.2e1 * Rm;
336c4762a1bSJed Brown   t38  = PetscCosReal(t37);
337c4762a1bSJed Brown   t40  = t3 * B;
338c4762a1bSJed Brown   t44  = B * t9;
339c4762a1bSJed Brown   t45  = t3 * Rp;
340c4762a1bSJed Brown   t53  = t3 * BB;
341c4762a1bSJed Brown   t58  = PetscSinReal(t37);
342c4762a1bSJed Brown   t69  = PetscExpReal(t20 - 0.2e1 * Rp);
343c4762a1bSJed Brown   t72  = 0.3e1 * t40 * Rm;
344c4762a1bSJed Brown   t73  = t9 * Rp;
345c4762a1bSJed Brown   t74  = t73 * Rm;
346c4762a1bSJed Brown   t75  = t7 * Rm;
347c4762a1bSJed Brown   t76  = B * t75;
348c4762a1bSJed Brown   t77  = t14 * t8;
349c4762a1bSJed Brown   t78  = Rp * t75;
350c4762a1bSJed Brown   t80  = 0.8e1 * t45 * kn;
351c4762a1bSJed Brown   t81  = t25 * t8;
352c4762a1bSJed Brown   t83  = 0.5e1 * t45 * Rm;
353c4762a1bSJed Brown   t84  = t44 * Rm;
354c4762a1bSJed Brown   t85  = t72 - t74 + t76 - t77 + t78 + t80 - t81 + t83 + t84;
355c4762a1bSJed Brown   t88  = 0.2e1 * t9 * t3;
356c4762a1bSJed Brown   t90  = 0.3e1 * t40 * Rp;
357c4762a1bSJed Brown   t91  = t7 * t3;
358c4762a1bSJed Brown   t93  = 0.2e1 * t5 * t32;
359c4762a1bSJed Brown   t94  = t5 * t7;
360c4762a1bSJed Brown   t95  = t5 * t8;
361c4762a1bSJed Brown   t96  = B * t73;
362c4762a1bSJed Brown   t97  = t7 * t9;
363c4762a1bSJed Brown   t100 = 0.2e1 * t3 * Rm * kn;
364c4762a1bSJed Brown   t101 = -t88 + t90 - t91 - t93 - t94 - t95 - t96 - t97 - t100;
365c4762a1bSJed Brown   t105 = Rm - kn;
366c4762a1bSJed Brown   t106 = PetscCosReal(t105);
367c4762a1bSJed Brown   t108 = t72 - t80 + t83 + t76 + t84 - t81 - t74 + t78 - t77;
368c4762a1bSJed Brown   t110 = -t97 - t96 - t88 + t100 + t90 - t95 + t93 - t91 - t94;
369c4762a1bSJed Brown   t114 = Rm + kn;
370c4762a1bSJed Brown   t115 = PetscCosReal(t114);
371c4762a1bSJed Brown   t121 = PetscSinReal(t105);
372c4762a1bSJed Brown   t127 = PetscSinReal(t114);
373c4762a1bSJed Brown   t132 = PetscExpReal(t20 - 0.3e1 * Rp - B);
374c4762a1bSJed Brown   t135 = 0.2e1 * B * kn;
375c4762a1bSJed Brown   t136 = t135 + t14 - t25;
376c4762a1bSJed Brown   t142 = -t135 + t14 - t25;
377c4762a1bSJed Brown   t152 = t2 * t10 * BB;
378c4762a1bSJed Brown   t162 = PetscExpReal(t20 - Rp - B);
379c4762a1bSJed 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;
380c4762a1bSJed Brown 
381c4762a1bSJed Brown   t1   = Rm * Rm;
382c4762a1bSJed Brown   t2   = B - Rp;
383c4762a1bSJed Brown   t4   = Rp + B;
384c4762a1bSJed Brown   t6   = VV * x;
385c4762a1bSJed Brown   t7   = PetscExpReal(-t6);
386c4762a1bSJed Brown   t11  = kn * kn;
387c4762a1bSJed Brown   t13  = B * t1;
388c4762a1bSJed Brown   t14  = Rp * Rp;
389c4762a1bSJed Brown   t15  = B * t14;
390c4762a1bSJed Brown   t16  = B * B;
391c4762a1bSJed Brown   t17  = t16 * Rp;
392c4762a1bSJed Brown   t21  = Rp * t1;
393c4762a1bSJed Brown   t30  = 0.8e1 * t16 * BB * kn * Rp;
394c4762a1bSJed Brown   t32  = 0.2e1 * Rm;
395c4762a1bSJed Brown   t33  = PetscCosReal(t32);
396c4762a1bSJed Brown   t35  = Rp * Rm;
397c4762a1bSJed Brown   t47  = PetscSinReal(t32);
398c4762a1bSJed Brown   t61  = PetscExpReal(-t6 - 0.2e1 * Rp);
399c4762a1bSJed Brown   t63  = Rm * t2;
400c4762a1bSJed Brown   t65  = 0.2e1 * B * kn;
401c4762a1bSJed Brown   t66  = B * Rm;
402c4762a1bSJed Brown   t67  = t65 + t66 + t35;
403c4762a1bSJed Brown   t71  = 0.3e1 * t16;
404c4762a1bSJed Brown   t73  = 0.2e1 * B * Rp;
405c4762a1bSJed Brown   t74  = t71 - t73 + t1 - t11 - t14;
406c4762a1bSJed Brown   t76  = t63 * t74 * BB;
407c4762a1bSJed Brown   t78  = Rm - kn;
408c4762a1bSJed Brown   t79  = PetscCosReal(t78);
409c4762a1bSJed Brown   t81  = -t65 + t66 + t35;
410c4762a1bSJed Brown   t86  = Rm + kn;
411c4762a1bSJed Brown   t87  = PetscCosReal(t86);
412c4762a1bSJed Brown   t90  = t63 * t74 * AA;
413c4762a1bSJed Brown   t95  = PetscSinReal(t78);
414c4762a1bSJed Brown   t101 = PetscSinReal(t86);
415c4762a1bSJed Brown   t106 = PetscExpReal(-t6 - 0.3e1 * Rp - B);
416c4762a1bSJed Brown   t108 = Rm * t4;
417c4762a1bSJed Brown   t109 = t65 + t66 - t35;
418c4762a1bSJed Brown   t113 = t71 + t73 + t1 - t11 - t14;
419c4762a1bSJed Brown   t115 = t108 * t113 * BB;
420c4762a1bSJed Brown   t118 = -t65 + t66 - t35;
421c4762a1bSJed Brown   t125 = t108 * t113 * AA;
422c4762a1bSJed Brown   t138 = PetscExpReal(-t6 - Rp - B);
423c4762a1bSJed 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;
424c4762a1bSJed Brown 
425c4762a1bSJed Brown   t1   = B - Rp;
426c4762a1bSJed Brown   t2   = Rm * t1;
427c4762a1bSJed Brown   t3   = B * B;
428c4762a1bSJed Brown   t4   = 0.3e1 * t3;
429c4762a1bSJed Brown   t5   = B * Rp;
430c4762a1bSJed Brown   t7   = Rm * Rm;
431c4762a1bSJed Brown   t8   = kn * kn;
432c4762a1bSJed Brown   t9   = Rp * Rp;
433c4762a1bSJed Brown   t10  = t4 - 0.2e1 * t5 + t7 - t8 - t9;
434c4762a1bSJed Brown   t12  = t2 * t10 * AA;
435c4762a1bSJed Brown   t14  = B * Rm;
436c4762a1bSJed Brown   t20  = VV * x;
437c4762a1bSJed Brown   t21  = PetscExpReal(-t20);
438c4762a1bSJed Brown   t23  = Rp * Rm;
439c4762a1bSJed Brown   t30  = Rm * kn;
440c4762a1bSJed Brown   t35  = 0.2e1 * Rm;
441c4762a1bSJed Brown   t36  = PetscCosReal(t35);
442c4762a1bSJed Brown   t40  = B * t9;
443c4762a1bSJed Brown   t41  = t3 * Rp;
444c4762a1bSJed Brown   t43  = t3 * B;
445c4762a1bSJed Brown   t51  = t3 * BB;
446c4762a1bSJed Brown   t56  = PetscSinReal(t35);
447c4762a1bSJed Brown   t67  = PetscExpReal(-t20 - 0.2e1 * Rp);
448c4762a1bSJed Brown   t70  = 0.2e1 * B * kn;
449c4762a1bSJed Brown   t71  = t70 + t14 + t23;
450c4762a1bSJed Brown   t76  = Rm - kn;
451c4762a1bSJed Brown   t77  = PetscCosReal(t76);
452c4762a1bSJed Brown   t79  = -t70 + t14 + t23;
453c4762a1bSJed Brown   t84  = Rm + kn;
454c4762a1bSJed Brown   t85  = PetscCosReal(t84);
455c4762a1bSJed Brown   t91  = t2 * t10 * BB;
456c4762a1bSJed Brown   t93  = PetscSinReal(t76);
457c4762a1bSJed Brown   t99  = PetscSinReal(t84);
458c4762a1bSJed Brown   t104 = PetscExpReal(-t20 - 0.3e1 * Rp - B);
459c4762a1bSJed Brown   t107 = 0.3e1 * t43 * Rm;
460c4762a1bSJed Brown   t108 = t9 * Rp;
461c4762a1bSJed Brown   t109 = t108 * Rm;
462c4762a1bSJed Brown   t110 = t7 * Rm;
463c4762a1bSJed Brown   t111 = B * t110;
464c4762a1bSJed Brown   t112 = t14 * t8;
465c4762a1bSJed Brown   t113 = Rp * t110;
466c4762a1bSJed Brown   t115 = 0.8e1 * t41 * kn;
467c4762a1bSJed Brown   t116 = t23 * t8;
468c4762a1bSJed Brown   t118 = 0.5e1 * t41 * Rm;
469c4762a1bSJed Brown   t119 = t40 * Rm;
470c4762a1bSJed Brown   t120 = t107 + t109 + t111 - t112 - t113 - t115 + t116 - t118 + t119;
471c4762a1bSJed Brown   t124 = 0.2e1 * t3 * Rm * kn;
472c4762a1bSJed Brown   t125 = t5 * t8;
473c4762a1bSJed Brown   t126 = B * t108;
474c4762a1bSJed Brown   t127 = t7 * t9;
475c4762a1bSJed Brown   t129 = 0.2e1 * t9 * t3;
476c4762a1bSJed Brown   t130 = t5 * t7;
477c4762a1bSJed Brown   t132 = 0.3e1 * t43 * Rp;
478c4762a1bSJed Brown   t133 = t7 * t3;
479c4762a1bSJed Brown   t135 = 0.2e1 * t5 * t30;
480c4762a1bSJed Brown   t136 = t124 - t125 - t126 + t127 + t129 - t130 + t132 + t133 - t135;
481c4762a1bSJed Brown   t141 = t107 + t115 - t118 + t111 + t119 + t116 + t109 - t113 - t112;
482c4762a1bSJed Brown   t143 = t132 + t129 - t125 + t133 + t127 - t124 - t130 - t126 + t135;
483c4762a1bSJed Brown   t160 = PetscExpReal(-t20 - Rp - B);
484c4762a1bSJed 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;
485c4762a1bSJed Brown 
486c4762a1bSJed Brown   t1   = Rm * Rm;
487c4762a1bSJed Brown   t2   = Rp * Rp;
488c4762a1bSJed Brown   t3   = t1 * t2;
489c4762a1bSJed Brown   t4   = B * B;
490c4762a1bSJed Brown   t5   = t1 * t4;
491c4762a1bSJed Brown   t9   = PetscExpReal(-0.4e1 * Rp);
492c4762a1bSJed Brown   t15  = PetscCosReal(0.2e1 * Rm);
493c4762a1bSJed Brown   t22  = PetscExpReal(-0.2e1 * Rp);
494c4762a1bSJed 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;
495c4762a1bSJed Brown 
4969371c9d4SSatish Balay   _PC1 = num1 / den1;
4979371c9d4SSatish Balay   _PC2 = num2 / den1;
4989371c9d4SSatish Balay   _PC3 = num3 / den1;
4999371c9d4SSatish Balay   _PC4 = num4 / den1;
500c4762a1bSJed Brown 
501c4762a1bSJed Brown   t1  = Rm * x;
502c4762a1bSJed Brown   t2  = PetscCosReal(t1);
503c4762a1bSJed Brown   t4  = PetscSinReal(t1);
504c4762a1bSJed Brown   t10 = PetscExpReal(-0.2e1 * x * B);
505c4762a1bSJed Brown   t12 = kn * x;
506c4762a1bSJed Brown   t13 = PetscCosReal(t12);
507c4762a1bSJed Brown   t16 = PetscSinReal(t12);
508c4762a1bSJed Brown   u1  = -km * (_PC1 * t2 + _PC2 * t4 + _PC3 * t2 + _PC4 * t4 + t10 * AA * t13 + t10 * BB * t16);
509c4762a1bSJed Brown 
510c4762a1bSJed Brown   t2  = Rm * x;
511c4762a1bSJed Brown   t3  = PetscCosReal(t2);
512c4762a1bSJed Brown   t6  = PetscSinReal(t2);
513c4762a1bSJed Brown   t22 = PetscExpReal(-0.2e1 * x * B);
514c4762a1bSJed Brown   t23 = B * t22;
515c4762a1bSJed Brown   t24 = kn * x;
516c4762a1bSJed Brown   t25 = PetscCosReal(t24);
517c4762a1bSJed Brown   t29 = PetscSinReal(t24);
518c4762a1bSJed 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;
519c4762a1bSJed Brown 
520c4762a1bSJed Brown   t3   = PetscExpReal(0.2e1 * x * B);
521c4762a1bSJed Brown   t4   = t3 * B;
522c4762a1bSJed Brown   t8   = km * km;
523c4762a1bSJed Brown   t9   = t3 * t8;
524c4762a1bSJed Brown   t11  = 0.3e1 * t9 * Rm;
525c4762a1bSJed Brown   t12  = Rm * Rm;
526c4762a1bSJed Brown   t14  = t3 * t12 * Rm;
527c4762a1bSJed Brown   t15  = UU * UU;
528c4762a1bSJed Brown   t19  = 0.4e1 * t4 * UU * Rm - t11 - t14 + 0.3e1 * t3 * t15 * Rm;
529c4762a1bSJed Brown   t20  = Rm * x;
530c4762a1bSJed Brown   t21  = PetscSinReal(t20);
531c4762a1bSJed Brown   t27  = 0.2e1 * B * t9;
532c4762a1bSJed Brown   t33  = 0.2e1 * t4 * t12;
533c4762a1bSJed Brown   t36  = 0.3e1 * t3 * UU * t12 - t27 - 0.2e1 * t4 * t15 + 0.3e1 * t9 * UU + t33 - t3 * t15 * UU;
534c4762a1bSJed Brown   t37  = PetscCosReal(t20);
535c4762a1bSJed Brown   t49  = VV * VV;
536c4762a1bSJed Brown   t53  = -0.4e1 * t4 * VV * Rm - t11 + 0.3e1 * t3 * t49 * Rm - t14;
537c4762a1bSJed Brown   t64  = t3 * t49 * VV + t33 - 0.3e1 * t9 * VV - 0.2e1 * t4 * t49 - t27 - 0.3e1 * t3 * VV * t12;
538c4762a1bSJed Brown   t76  = B * t8;
539c4762a1bSJed Brown   t80  = kn * kn;
540c4762a1bSJed Brown   t83  = B * B;
541c4762a1bSJed Brown   t87  = t80 * kn;
542c4762a1bSJed Brown   t90  = kn * x;
543c4762a1bSJed Brown   t91  = PetscSinReal(t90);
544c4762a1bSJed Brown   t106 = PetscCosReal(t90);
545c4762a1bSJed 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;
546c4762a1bSJed Brown 
547c4762a1bSJed Brown   t3  = PetscExpReal(0.2e1 * x * B);
548c4762a1bSJed Brown   t4  = km * km;
549c4762a1bSJed Brown   t5  = t3 * t4;
550c4762a1bSJed Brown   t6  = Rm * x;
551c4762a1bSJed Brown   t7  = PetscCosReal(t6);
552c4762a1bSJed Brown   t8  = _PC1 * t7;
553c4762a1bSJed Brown   t10 = PetscSinReal(t6);
554c4762a1bSJed Brown   t11 = _PC2 * t10;
555c4762a1bSJed Brown   t13 = _PC3 * t7;
556c4762a1bSJed Brown   t15 = _PC4 * t10;
557c4762a1bSJed Brown   t18 = kn * x;
558c4762a1bSJed Brown   t19 = PetscCosReal(t18);
559c4762a1bSJed Brown   t22 = PetscSinReal(t18);
560c4762a1bSJed Brown   t24 = UU * UU;
561c4762a1bSJed Brown   t25 = t3 * t24;
562c4762a1bSJed Brown   t28 = t3 * UU;
563c4762a1bSJed Brown   t38 = Rm * Rm;
564c4762a1bSJed Brown   t39 = t7 * t38;
565c4762a1bSJed Brown   t42 = t10 * t38;
566c4762a1bSJed 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;
567c4762a1bSJed Brown   t45 = VV * VV;
568c4762a1bSJed Brown   t46 = t3 * t45;
569c4762a1bSJed Brown   t49 = t3 * VV;
570c4762a1bSJed Brown   t62 = B * B;
571c4762a1bSJed Brown   t78 = kn * kn;
572c4762a1bSJed 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;
573c4762a1bSJed Brown   u4 = t44 + t82;
574c4762a1bSJed Brown 
575c4762a1bSJed Brown   t3   = PetscExpReal(0.2e1 * x * B);
576c4762a1bSJed Brown   t4   = t3 * B;
577c4762a1bSJed Brown   t8   = km * km;
578c4762a1bSJed Brown   t9   = t3 * t8;
579c4762a1bSJed Brown   t10  = t9 * Rm;
580c4762a1bSJed Brown   t11  = Rm * Rm;
581c4762a1bSJed Brown   t13  = t3 * t11 * Rm;
582c4762a1bSJed Brown   t14  = UU * UU;
583c4762a1bSJed Brown   t18  = 0.4e1 * t4 * UU * Rm - t10 - t13 + 0.3e1 * t3 * t14 * Rm;
584c4762a1bSJed Brown   t19  = Rm * x;
585c4762a1bSJed Brown   t20  = PetscSinReal(t19);
586c4762a1bSJed Brown   t26  = 0.2e1 * B * t9;
587c4762a1bSJed Brown   t31  = 0.2e1 * t4 * t11;
588c4762a1bSJed Brown   t34  = 0.3e1 * t3 * UU * t11 - t26 - 0.2e1 * t4 * t14 + t9 * UU + t31 - t3 * t14 * UU;
589c4762a1bSJed Brown   t35  = PetscCosReal(t19);
590c4762a1bSJed Brown   t47  = VV * VV;
591c4762a1bSJed Brown   t51  = -0.4e1 * t4 * VV * Rm - t10 + 0.3e1 * t3 * t47 * Rm - t13;
592c4762a1bSJed Brown   t61  = t3 * t47 * VV + t31 - t9 * VV - 0.2e1 * t4 * t47 - t26 - 0.3e1 * t3 * VV * t11;
593c4762a1bSJed Brown   t72  = B * t8;
594c4762a1bSJed Brown   t76  = kn * kn;
595c4762a1bSJed Brown   t79  = B * B;
596c4762a1bSJed Brown   t83  = t76 * kn;
597c4762a1bSJed Brown   t86  = kn * x;
598c4762a1bSJed Brown   t87  = PetscSinReal(t86);
599c4762a1bSJed Brown   t101 = PetscCosReal(t86);
600c4762a1bSJed 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;
601c4762a1bSJed Brown 
602c4762a1bSJed Brown   t3  = PetscExpReal(0.2e1 * x * B);
603c4762a1bSJed Brown   t4  = UU * UU;
604c4762a1bSJed Brown   t8  = km * km;
605c4762a1bSJed Brown   t9  = t3 * t8;
606c4762a1bSJed Brown   t10 = t9 * Rm;
607c4762a1bSJed Brown   t11 = Rm * Rm;
608c4762a1bSJed Brown   t13 = t3 * t11 * Rm;
609c4762a1bSJed Brown   t14 = t3 * B;
610c4762a1bSJed Brown   t18 = 0.3e1 * t3 * t4 * Rm + t10 - t13 + 0.4e1 * t14 * UU * Rm;
611c4762a1bSJed Brown   t19 = Rm * x;
612c4762a1bSJed Brown   t20 = PetscSinReal(t19);
613c4762a1bSJed Brown   t28 = 0.2e1 * B * t9;
614c4762a1bSJed Brown   t33 = 0.2e1 * t14 * t11;
615c4762a1bSJed Brown   t34 = -0.2e1 * t4 * t14 + 0.3e1 * t3 * UU * t11 - t28 - t3 * t4 * UU - t9 * UU + t33;
616c4762a1bSJed Brown   t35 = PetscCosReal(t19);
617c4762a1bSJed Brown   t47 = VV * VV;
618c4762a1bSJed Brown   t51 = -0.4e1 * t14 * VV * Rm - t13 + t10 + 0.3e1 * t3 * t47 * Rm;
619c4762a1bSJed Brown   t61 = -0.3e1 * t3 * VV * t11 + t33 + t3 * t47 * VV + t9 * VV - 0.2e1 * t14 * t47 - t28;
620c4762a1bSJed Brown   t71 = kn * kn;
621c4762a1bSJed Brown   t74 = B * B;
622c4762a1bSJed Brown   t80 = t71 * kn;
623c4762a1bSJed Brown   t83 = kn * x;
624c4762a1bSJed Brown   t84 = PetscSinReal(t83);
625c4762a1bSJed Brown   t96 = PetscCosReal(t83);
626c4762a1bSJed 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;
627c4762a1bSJed Brown 
628c4762a1bSJed 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))); */
629c4762a1bSJed Brown 
630c4762a1bSJed Brown   /* u1 = Vx, u2 = Vz, u3 = txx, u4 = tzx, u5 = pressure, u6 = tzz */
631c4762a1bSJed Brown 
632c4762a1bSJed Brown   sum5 += u5 * PetscCosReal(km * z); /* pressure */
633c4762a1bSJed Brown   sum6 += u6 * PetscCosReal(km * z); /* zz total stress */
634c4762a1bSJed Brown 
635c4762a1bSJed Brown   u1 *= PetscCosReal(km * z); /* x velocity */
636c4762a1bSJed Brown   sum1 += u1;
637c4762a1bSJed Brown   u2 *= PetscSinReal(km * z); /* z velocity */
638c4762a1bSJed Brown   sum2 += u2;
639c4762a1bSJed Brown 
640c4762a1bSJed Brown   u3 *= PetscCosReal(km * z); /* xx total stress */
641c4762a1bSJed Brown   sum3 += u3;
642c4762a1bSJed Brown   u4 *= PetscSinReal(km * z); /* zx stress */
643c4762a1bSJed Brown   sum4 += u4;
644c4762a1bSJed Brown 
645c4762a1bSJed Brown   /* rho = -sigma*sin(km*z)*cos(kn*x); */ /* density */
646c4762a1bSJed Brown   /* sum7 += rho; */
647c4762a1bSJed Brown 
648c4762a1bSJed Brown   /* Output */
649ad540459SPierre Jolivet   if (mu) *mu = Z;
650c4762a1bSJed Brown   if (vel) {
651c4762a1bSJed Brown     vel[0] = sum1;
652c4762a1bSJed Brown     vel[1] = sum2;
653c4762a1bSJed Brown   }
654ad540459SPierre Jolivet   if (p) (*p) = sum5;
655c4762a1bSJed Brown   if (s) {
656c4762a1bSJed Brown     s[0] = sum3;
657c4762a1bSJed Brown     s[1] = sum4;
658c4762a1bSJed Brown     s[2] = sum6;
659c4762a1bSJed Brown   }
660c4762a1bSJed Brown   if (gamma) {
661c4762a1bSJed Brown     /* sigma = tau - p, tau = sigma + p, tau[] = 2*eta*gamma[] */
662c4762a1bSJed Brown     gamma[0] = (sum3 + sum5) / (2.0 * Z);
663c4762a1bSJed Brown     gamma[1] = (sum4) / (2.0 * Z);
664c4762a1bSJed Brown     gamma[2] = (sum6 + sum5) / (2.0 * Z);
665c4762a1bSJed Brown   }
6663ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
667c4762a1bSJed Brown }
668c4762a1bSJed Brown 
SolKxSolutionVelocity(PetscInt dim,PetscReal time,const PetscReal x[],PetscInt Nf,PetscScalar v[],PetscCtx ctx)669*2a8381b2SBarry Smith static PetscErrorCode SolKxSolutionVelocity(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt Nf, PetscScalar v[], PetscCtx 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, v, NULL, NULL, NULL, NULL));
6753ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
676c4762a1bSJed Brown }
677c4762a1bSJed Brown 
SolKxSolutionPressure(PetscInt dim,PetscReal time,const PetscReal x[],PetscInt Nf,PetscScalar p[],PetscCtx ctx)678*2a8381b2SBarry Smith static PetscErrorCode SolKxSolutionPressure(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt Nf, PetscScalar p[], PetscCtx ctx)
679d71ae5a4SJacob Faibussowitsch {
680c4762a1bSJed Brown   Parameter *s = (Parameter *)ctx;
681c4762a1bSJed Brown 
682c4762a1bSJed Brown   PetscFunctionBegin;
6839566063dSJacob Faibussowitsch   PetscCall(SolKxSolution(x, s->m, s->n, s->B, NULL, p, NULL, NULL, NULL));
6843ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
685c4762a1bSJed Brown }
686c4762a1bSJed Brown 
687c4762a1bSJed Brown /*
688c4762a1bSJed Brown   SolCxSolution - Exact Stokes solutions for discontinuous viscosity
689c4762a1bSJed Brown 
690c4762a1bSJed Brown  Input Parameters:
691c4762a1bSJed Brown + pos   - The (x,z) coordinate at which to evaluate the solution
692c4762a1bSJed Brown . n     - The constant defining the x-dependence of the forcing function
693c4762a1bSJed Brown . m     - The constant defining the z-dependence of the forcing function
694c4762a1bSJed Brown . xc    - The x coordinate at which the viscosity is discontinuous
695c4762a1bSJed Brown . etaA  - The viscosity coefficient for x < xc
696c4762a1bSJed Brown - etaB  - The viscosity coefficient for x > xc
697c4762a1bSJed Brown 
698c4762a1bSJed Brown   Output Parameters:
699c4762a1bSJed Brown + vel   - The (x,z)-velocity at (x,z), or NULL
700c4762a1bSJed Brown . p     - The pressure at (x,z), or NULL
701c4762a1bSJed Brown . s     - The total stress (sigma_xx, sigma_xz, sigma_zz) at (x,z), or NULL
702c4762a1bSJed Brown . gamma - The strain rate, or NULL
703c4762a1bSJed Brown - mu    - The viscosity at (x,z), or NULL
704c4762a1bSJed Brown 
705c4762a1bSJed Brown   Note:
706562efe2eSBarry Smith .vb
707562efe2eSBarry Smith   The domain is the square 0 <= x,z <= 1. We solve the Stokes equation for incompressible flow with free-slip boundary
708562efe2eSBarry Smith   conditions everywhere. The forcing term f is given by
709562efe2eSBarry Smith 
710562efe2eSBarry Smith     fx = 0
711562efe2eSBarry Smith     fz = sigma*sin(km*z)*cos(kn*x)
712562efe2eSBarry Smith 
713562efe2eSBarry Smith   where
714562efe2eSBarry Smith 
715562efe2eSBarry Smith     km = m*Pi (m may be non-integral)
716562efe2eSBarry Smith     kn = n*Pi
717562efe2eSBarry Smith 
718562efe2eSBarry Smith   meaning that the density rho is -sigma*sin(km*z)*cos(kn*x). Here we set sigma = 1.
719562efe2eSBarry Smith   The viscosity eta jumps from etaA to etaB at x = xc.
720562efe2eSBarry Smith .ve
721c4762a1bSJed Brown */
SolCxSolution(const PetscReal pos[],PetscReal m,PetscInt n,PetscReal xc,PetscReal etaA,PetscReal etaB,PetscScalar vel[],PetscScalar * p,PetscScalar s[],PetscScalar gamma[],PetscScalar * mu)722d71ae5a4SJacob 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)
723d71ae5a4SJacob Faibussowitsch {
724c4762a1bSJed Brown   PetscReal _PC1A, _PC2A, _PC3A, _PC4A, _PC1B, _PC2B, _PC3B, _PC4B, _PC1, _PC2, _PC3, _PC4;
725c4762a1bSJed 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;
726c4762a1bSJed 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;
727c4762a1bSJed 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;
728c4762a1bSJed 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;
729c4762a1bSJed 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;
730c4762a1bSJed 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;
731c4762a1bSJed 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;
732c4762a1bSJed 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;
733c4762a1bSJed 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;
734c4762a1bSJed 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;
735c4762a1bSJed 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;
736c4762a1bSJed 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;
737c4762a1bSJed 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;
738c4762a1bSJed 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;
739c4762a1bSJed Brown   PetscReal t561, t562, t563, t564, t567, t568, t571, t573, t575, t576, t578, t579, t583, t590, t591, t594, t595, t596, t597, t598, t600;
740c4762a1bSJed 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;
741c4762a1bSJed 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;
742c4762a1bSJed 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;
743c4762a1bSJed 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;
744c4762a1bSJed 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;
745c4762a1bSJed Brown   PetscReal t801, t806, t807, t808, t809, t811, t812, t817, t818, t819, t821, t822, t824, t827, t828, t830, t834, t835, t837, t840;
746c4762a1bSJed 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;
747c4762a1bSJed Brown   PetscReal t884, t888, t891, t894, t900, t901, t903, t904, t907, t908, t909, t911, t914, t915, t916, t919, t920;
748c4762a1bSJed 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;
749c4762a1bSJed Brown   PetscReal t961, t964, t965, t966, t967, t968, t969, t971, t972, t974, t977, t978, t981, t983, t987, t988, t992, t993, t994, t997, t998;
750c4762a1bSJed Brown   PetscReal t1001, t1003, t1005, t1006, t1009, t1010, t1012, t1013, t1015, t1016, t1017, t1018, t1020, t1021, t1029, t1031, t1032, t1033, t1040;
751c4762a1bSJed Brown   PetscReal t1041, t1042, t1044, t1047, t1050, t1054, t1055, t1057, t1058, t1063, t1068, t1069, t1070, t1079, t1080;
752c4762a1bSJed Brown   PetscReal t1088, t1089, t1091, t1092, t1094, t1096, t1101, t1102, t1103, t1104, t1105, t1108, t1112, t1113, t1118, t1119, t1120;
753c4762a1bSJed 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;
754c4762a1bSJed Brown   PetscReal t1161, t1162, t1165, t1166, t1170, t1171, t1172, t1173, t1175, t1176, t1178, t1180, t1181, t1182, t1185, t1189, t1192, t1193, t1195, t1196, t1199;
755c4762a1bSJed Brown   PetscReal t1201, t1203, t1209, t1210, t1211, t1213, t1214, t1218, t1221, t1224, t1225, t1226, t1228, t1233, t1234, t1235, t1236, t1237, t1240;
756c4762a1bSJed Brown   PetscReal t1241, t1242, t1243, t1244, t1245, t1248, t1251, t1252, t1257, t1258, t1259, t1260, t1263, t1268, t1269, t1272, t1280;
757c4762a1bSJed Brown   PetscReal t1282, t1283, t1284, t1285, t1287, t1288, t1289, t1292, t1293, t1296, t1297, t1300, t1304, t1307, t1310, t1311, t1312, t1316, t1317, t1320;
758c4762a1bSJed Brown   PetscReal t1321, t1323, t1328, t1330, t1331, t1332, t1333, t1336, t1338, t1343, t1344, t1346, t1349, t1350, t1354;
759c4762a1bSJed Brown   PetscReal t1366, t1369, t1370, t1371, t1376, t1378, t1380, t1383, t1386, t1387, t1388, t1391, t1393, t1399;
760c4762a1bSJed Brown   PetscReal t1411, t1412, t1420, t1427;
761c4762a1bSJed Brown   PetscReal t1450, t1456, t1468, t1472, t1474, t1478;
762c4762a1bSJed Brown   PetscReal t1504, t1511;
763c4762a1bSJed Brown   PetscReal t1545;
764c4762a1bSJed Brown   PetscReal t1564, t1583;
765c4762a1bSJed Brown 
766c4762a1bSJed Brown   PetscReal sum1 = 0.0, sum2 = 0.0, sum3 = 0.0, sum4 = 0.0, sum5 = 0.0, sum6 = 0.0;
767c4762a1bSJed Brown   PetscReal ZA = etaA, ZB = etaB;
768c4762a1bSJed Brown   PetscInt  nz = m, nx = n;
769c4762a1bSJed Brown   PetscReal u1, u2, u3, u4, u5, u6, Z, x = pos[0], z = pos[1];
770c4762a1bSJed Brown 
771c4762a1bSJed Brown   PetscFunctionBegin;
772c4762a1bSJed Brown   /* Note that there is no Fourier sum here. */
773c4762a1bSJed Brown   /****************************************************************************************/
774c4762a1bSJed Brown   _PC1A = 0;
775c4762a1bSJed Brown   /****************************************************************************************/
776c4762a1bSJed Brown   t1   = nx * 0.3141592654e1;
777c4762a1bSJed Brown   t2   = PetscSinReal(t1);
778c4762a1bSJed Brown   t3   = nx * t2;
779c4762a1bSJed Brown   t4   = nz * nz;
780c4762a1bSJed Brown   t5   = t4 * t4;
781c4762a1bSJed Brown   t6   = 0.3141592654e1 * 0.3141592654e1;
782c4762a1bSJed Brown   t8   = t3 * t5 * t6;
783c4762a1bSJed Brown   t9   = ZA * xc;
784c4762a1bSJed Brown   t12  = PetscExpReal(xc * nz * 0.3141592654e1);
785c4762a1bSJed Brown   t13  = t12 * t12;
786c4762a1bSJed Brown   t15  = nz * 0.3141592654e1;
787c4762a1bSJed Brown   t16  = PetscExpReal(t15);
788c4762a1bSJed Brown   t17  = t16 * t16;
789c4762a1bSJed Brown   t18  = t17 * t16;
790c4762a1bSJed Brown   t19  = ZB * t13 * t18;
791c4762a1bSJed Brown   t20  = t9 * t19;
792c4762a1bSJed Brown   t23  = ZA * ZA;
793c4762a1bSJed Brown   t24  = nx * nx;
794c4762a1bSJed Brown   t25  = t24 * nx;
795c4762a1bSJed Brown   t26  = t23 * t25;
796c4762a1bSJed Brown   t28  = t13 * t13;
797c4762a1bSJed Brown   t29  = t28 * t13;
798c4762a1bSJed Brown   t33  = nx * ZB;
799c4762a1bSJed Brown   t34  = t1 * xc;
800c4762a1bSJed Brown   t35  = PetscSinReal(t34);
801c4762a1bSJed Brown   t36  = t4 * nz;
802c4762a1bSJed Brown   t37  = t35 * t36;
803c4762a1bSJed Brown   t38  = t33 * t37;
804c4762a1bSJed Brown   t39  = 0.3141592654e1 * ZA;
805c4762a1bSJed Brown   t40  = t13 * t12;
806c4762a1bSJed Brown   t41  = t17 * t40;
807c4762a1bSJed Brown   t45  = ZB * ZB;
808c4762a1bSJed Brown   t46  = t45 * t24;
809c4762a1bSJed Brown   t47  = t46 * t4;
810c4762a1bSJed Brown   t48  = 0.3141592654e1 * xc;
811c4762a1bSJed Brown   t49  = t13 * t17;
812c4762a1bSJed Brown   t53  = xc * xc;
813c4762a1bSJed Brown   t54  = t36 * t53;
814c4762a1bSJed Brown   t56  = t54 * t6 * t45;
815c4762a1bSJed Brown   t57  = PetscCosReal(t34);
816c4762a1bSJed Brown   t58  = t57 * t24;
817c4762a1bSJed Brown   t59  = t28 * t12;
818c4762a1bSJed Brown   t60  = t17 * t59;
819c4762a1bSJed Brown   t61  = t58 * t60;
820c4762a1bSJed Brown   t64  = t25 * t2;
821c4762a1bSJed Brown   t65  = t64 * t15;
822c4762a1bSJed Brown   t72  = nx * t23;
823c4762a1bSJed Brown   t74  = t72 * t2 * t5;
824c4762a1bSJed Brown   t75  = t6 * t53;
825c4762a1bSJed Brown   t76  = t16 * t29;
826c4762a1bSJed Brown   t80  = t23 * nz;
827c4762a1bSJed Brown   t81  = t80 * 0.3141592654e1;
828c4762a1bSJed Brown   t82  = t18 * t28;
829c4762a1bSJed Brown   t86  = nx * t5;
830c4762a1bSJed Brown   t87  = t23 * t6;
831c4762a1bSJed Brown   t89  = xc * t2;
832c4762a1bSJed Brown   t90  = t13 * t18;
833c4762a1bSJed Brown   t91  = t89 * t90;
834c4762a1bSJed Brown   t94  = t28 * t28;
835c4762a1bSJed Brown   t96  = t24 * nz;
836c4762a1bSJed Brown   t98  = t4 * t45;
837c4762a1bSJed Brown   t99  = t98 * 0.3141592654e1;
838c4762a1bSJed Brown   t100 = t58 * t41;
839c4762a1bSJed Brown   t104 = 0.3141592654e1 * t25;
840c4762a1bSJed Brown   t105 = ZA * nz * t104;
841c4762a1bSJed Brown   t106 = t2 * ZB;
842c4762a1bSJed Brown   t110 = t17 * t17;
843c4762a1bSJed Brown   t111 = ZA * t110;
844c4762a1bSJed Brown   t116 = nz * t28;
845c4762a1bSJed Brown   t122 = t64 * t4 * t6;
846c4762a1bSJed Brown   t126 = t23 * t29 * t4;
847c4762a1bSJed Brown   t128 = t24 * xc;
848c4762a1bSJed Brown   t132 = t36 * t23;
849c4762a1bSJed Brown   t133 = t6 * t57;
850c4762a1bSJed Brown   t135 = t128 * t41;
851c4762a1bSJed Brown   t138 = t6 * xc;
852c4762a1bSJed Brown   t142 = t72 * t2;
853c4762a1bSJed 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;
854c4762a1bSJed Brown   t149 = ZA * t25 * t2;
855c4762a1bSJed Brown   t150 = ZB * t28;
856c4762a1bSJed Brown   t154 = t35 * t5;
857c4762a1bSJed Brown   t155 = t72 * t154;
858c4762a1bSJed Brown   t156 = t75 * t41;
859c4762a1bSJed Brown   t159 = nx * ZA;
860c4762a1bSJed Brown   t160 = t2 * t36;
861c4762a1bSJed Brown   t161 = t159 * t160;
862c4762a1bSJed Brown   t162 = 0.3141592654e1 * ZB;
863c4762a1bSJed Brown   t163 = t28 * t16;
864c4762a1bSJed Brown   t167 = t23 * t57;
865c4762a1bSJed Brown   t168 = t167 * t24;
866c4762a1bSJed Brown   t169 = nz * t110;
867c4762a1bSJed Brown   t170 = t169 * t40;
868c4762a1bSJed Brown   t173 = ZA * ZB;
869c4762a1bSJed Brown   t174 = t173 * t90;
870c4762a1bSJed Brown   t177 = t36 * 0.3141592654e1;
871c4762a1bSJed Brown   t181 = t80 * t104;
872c4762a1bSJed Brown   t184 = nz * t17;
873c4762a1bSJed Brown   t188 = t17 * t29;
874c4762a1bSJed Brown   t190 = t4 * 0.3141592654e1;
875c4762a1bSJed Brown   t191 = t190 * t24;
876c4762a1bSJed Brown   t206 = t138 * t60;
877c4762a1bSJed Brown   t209 = t23 * t4;
878c4762a1bSJed Brown   t211 = t209 * t6 * t25;
879c4762a1bSJed Brown   t212 = t89 * t76;
880c4762a1bSJed Brown   t216 = ZB * t16 * t29;
881c4762a1bSJed Brown   t217 = t9 * t216;
882c4762a1bSJed Brown   t220 = ZB * t110;
883c4762a1bSJed Brown   t221 = ZA * t24;
884c4762a1bSJed Brown   t222 = t221 * nz;
885c4762a1bSJed Brown   t225 = t132 * t75;
886c4762a1bSJed Brown   t232 = t45 * t28;
887c4762a1bSJed Brown   t233 = t110 * t24;
888c4762a1bSJed Brown   t234 = t233 * nz;
889c4762a1bSJed Brown   t236 = t209 * 0.3141592654e1;
890c4762a1bSJed Brown   t237 = t17 * xc;
891c4762a1bSJed Brown   t239 = t237 * t13 * t24;
892c4762a1bSJed 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;
893c4762a1bSJed Brown   t244 = nx * t45;
894c4762a1bSJed Brown   t245 = t244 * t37;
895c4762a1bSJed Brown   t246 = t110 * t40;
896c4762a1bSJed Brown   t251 = t237 * t59;
897c4762a1bSJed Brown   t256 = t64 * t90;
898c4762a1bSJed Brown   t260 = t36 * t45 * t133;
899c4762a1bSJed Brown   t263 = t45 * t57;
900c4762a1bSJed Brown   t264 = t263 * t24;
901c4762a1bSJed Brown   t265 = t169 * t12;
902c4762a1bSJed Brown   t269 = t6 * t36;
903c4762a1bSJed Brown   t270 = t17 * t24;
904c4762a1bSJed Brown   t274 = t110 * t13;
905c4762a1bSJed Brown   t276 = t190 * t128;
906c4762a1bSJed Brown   t279 = nx * t36;
907c4762a1bSJed Brown   t281 = t28 * t40;
908c4762a1bSJed Brown   t282 = t281 * t35;
909c4762a1bSJed Brown   t286 = t138 * t41;
910c4762a1bSJed Brown   t289 = t75 * t60;
911c4762a1bSJed Brown   t296 = t190 * t173;
912c4762a1bSJed Brown   t305 = t86 * t45 * t35;
913c4762a1bSJed Brown   t312 = t33 * t154;
914c4762a1bSJed Brown   t313 = t6 * ZA;
915c4762a1bSJed Brown   t324 = t232 * t270;
916c4762a1bSJed 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;
917c4762a1bSJed Brown   t328 = t3 * t4;
918c4762a1bSJed Brown   t331 = t72 * t37;
919c4762a1bSJed Brown   t332 = t48 * t60;
920c4762a1bSJed Brown   t335 = nz * t94;
921c4762a1bSJed Brown   t345 = t72 * t35;
922c4762a1bSJed Brown   t349 = t173 * t57;
923c4762a1bSJed Brown   t355 = t53 * t17;
924c4762a1bSJed Brown   t364 = t54 * t6 * ZB;
925c4762a1bSJed Brown   t365 = t28 * t17;
926c4762a1bSJed Brown   t369 = xc * ZB;
927c4762a1bSJed Brown   t370 = t269 * t369;
928c4762a1bSJed Brown   t371 = ZA * t57;
929c4762a1bSJed Brown   t373 = t371 * t270 * t40;
930c4762a1bSJed Brown   t385 = nx * t35;
931c4762a1bSJed Brown   t396 = t4 * xc;
932c4762a1bSJed Brown   t397 = t396 * t162;
933c4762a1bSJed Brown   t415 = t37 * t48;
934c4762a1bSJed 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;
935c4762a1bSJed Brown   t427 = t371 * t270 * t59;
936c4762a1bSJed Brown   t439 = t209 * t48;
937c4762a1bSJed Brown   t440 = t110 * t12;
938c4762a1bSJed Brown   t441 = t58 * t440;
939c4762a1bSJed Brown   t447 = t36 * xc;
940c4762a1bSJed Brown   t455 = t48 * t440;
941c4762a1bSJed Brown   t471 = ZB * t17;
942c4762a1bSJed 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;
943c4762a1bSJed Brown   t499 = ZA * t53 * t19;
944c4762a1bSJed Brown   t505 = t396 * 0.3141592654e1;
945c4762a1bSJed Brown   t518 = t173 * t53 * t16 * t29;
946c4762a1bSJed Brown   t533 = t23 * t28;
947c4762a1bSJed Brown   t535 = t188 * t45;
948c4762a1bSJed Brown   t538 = t24 * t4;
949c4762a1bSJed Brown   t545 = t3 * t177;
950c4762a1bSJed Brown   t546 = t173 * t76;
951c4762a1bSJed Brown   t555 = t45 * t110;
952c4762a1bSJed Brown   t557 = t72 * t160;
953c4762a1bSJed 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;
954c4762a1bSJed Brown   t567 = t396 * 0.3141592654e1 * t45;
955c4762a1bSJed Brown   t568 = t58 * t246;
956c4762a1bSJed Brown   t597 = t58 * nz;
957c4762a1bSJed Brown   t615 = t13 * t45;
958c4762a1bSJed Brown   t616 = t615 * t233;
959c4762a1bSJed Brown   t619 = t94 * t45;
960c4762a1bSJed Brown   t621 = t45 * t59;
961c4762a1bSJed 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;
962c4762a1bSJed Brown   t626 = t49 * t45;
963c4762a1bSJed Brown   t660 = t29 * t45;
964c4762a1bSJed 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;
965c4762a1bSJed Brown   t690 = t6 * 0.3141592654e1;
966c4762a1bSJed Brown   t691 = ZA * t690;
967c4762a1bSJed Brown   t693 = t24 * t24;
968c4762a1bSJed Brown   t694 = t693 * xc;
969c4762a1bSJed Brown   t695 = t188 * t694;
970c4762a1bSJed Brown   t698 = t23 * ZA;
971c4762a1bSJed Brown   t699 = t698 * t690;
972c4762a1bSJed Brown   t700 = t699 * t5;
973c4762a1bSJed Brown   t704 = t5 * t4;
974c4762a1bSJed Brown   t705 = t691 * t704;
975c4762a1bSJed Brown   t709 = t691 * t5;
976c4762a1bSJed Brown   t713 = t5 * nz;
977c4762a1bSJed Brown   t714 = t713 * ZB;
978c4762a1bSJed Brown   t718 = t698 * t6;
979c4762a1bSJed Brown   t719 = t713 * t28;
980c4762a1bSJed Brown   t722 = t699 * t704;
981c4762a1bSJed Brown   t726 = t713 * t94;
982c4762a1bSJed Brown   t733 = t713 * t45;
983c4762a1bSJed Brown   t736 = t87 * t36;
984c4762a1bSJed 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;
985c4762a1bSJed Brown   t746 = t313 * t36;
986c4762a1bSJed Brown   t752 = t6 * t6;
987c4762a1bSJed Brown   t753 = t23 * t752;
988c4762a1bSJed Brown   t759 = t698 * t752;
989c4762a1bSJed Brown   t760 = t759 * t36;
990c4762a1bSJed Brown   t761 = t17 * t693;
991c4762a1bSJed Brown   t762 = xc * t28;
992c4762a1bSJed Brown   t763 = t761 * t762;
993c4762a1bSJed Brown   t766 = t87 * t713;
994c4762a1bSJed Brown   t773 = t699 * t4;
995c4762a1bSJed Brown   t774 = t110 * t693;
996c4762a1bSJed Brown   t775 = xc * t13;
997c4762a1bSJed Brown   t785 = t704 * t17;
998c4762a1bSJed 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;
999c4762a1bSJed Brown   t791 = t691 * t4;
1000c4762a1bSJed Brown   t792 = t45 * t693;
1001c4762a1bSJed Brown   t793 = t49 * t792;
1002c4762a1bSJed Brown   t796 = t759 * t713;
1003c4762a1bSJed Brown   t797 = t53 * t28;
1004c4762a1bSJed Brown   t798 = t270 * t797;
1005c4762a1bSJed Brown   t801 = t87 * nz;
1006c4762a1bSJed Brown   t818 = t5 * t36;
1007c4762a1bSJed Brown   t819 = t753 * t818;
1008c4762a1bSJed Brown   t827 = t753 * t36 * ZB;
1009c4762a1bSJed Brown   t830 = xc * t45;
1010c4762a1bSJed 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;
1011c4762a1bSJed Brown   t842 = xc * t29;
1012c4762a1bSJed Brown   t843 = t270 * t842;
1013c4762a1bSJed Brown   t849 = t759 * t818;
1014c4762a1bSJed Brown   t853 = t691 * t396;
1015c4762a1bSJed Brown   t857 = t691 * t5 * t45;
1016c4762a1bSJed Brown   t869 = t313 * nz;
1017c4762a1bSJed 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;
1018c4762a1bSJed Brown   t877 = ZA * t752;
1019c4762a1bSJed Brown   t878 = t877 * t818;
1020c4762a1bSJed 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;
1021c4762a1bSJed Brown   t916 = t110 * t28;
1022c4762a1bSJed Brown   t945 = t28 * t693 * t45 * t17;
1023c4762a1bSJed 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;
1024c4762a1bSJed Brown   t974 = t761 * t797;
1025c4762a1bSJed 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;
1026c4762a1bSJed 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;
1027c4762a1bSJed Brown 
1028c4762a1bSJed 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);
1029c4762a1bSJed Brown   /****************************************************************************************/
1030c4762a1bSJed Brown   t1   = nz * nz;
1031c4762a1bSJed Brown   t2   = t1 * nz;
1032c4762a1bSJed Brown   t3   = t2 * 0.3141592654e1;
1033c4762a1bSJed Brown   t4   = t3 * xc;
1034c4762a1bSJed Brown   t5   = ZB * ZB;
1035c4762a1bSJed Brown   t7   = PetscExpReal(nz * 0.3141592654e1);
1036c4762a1bSJed Brown   t8   = t7 * t7;
1037c4762a1bSJed Brown   t9   = t5 * t8;
1038c4762a1bSJed Brown   t12  = PetscExpReal(xc * nz * 0.3141592654e1);
1039c4762a1bSJed Brown   t13  = t12 * t12;
1040c4762a1bSJed Brown   t14  = t13 * t13;
1041c4762a1bSJed Brown   t15  = t14 * t13;
1042c4762a1bSJed Brown   t19  = nx * nx;
1043c4762a1bSJed Brown   t21  = nx * 0.3141592654e1;
1044c4762a1bSJed Brown   t22  = PetscSinReal(t21);
1045c4762a1bSJed Brown   t23  = t19 * nx * t22;
1046c4762a1bSJed Brown   t24  = t23 * 0.3141592654e1;
1047c4762a1bSJed Brown   t25  = ZA * ZB;
1048c4762a1bSJed Brown   t26  = t7 * t15;
1049c4762a1bSJed Brown   t27  = t25 * t26;
1050c4762a1bSJed Brown   t30  = t21 * xc;
1051c4762a1bSJed Brown   t31  = PetscSinReal(t30);
1052c4762a1bSJed Brown   t32  = t31 * nx;
1053c4762a1bSJed Brown   t33  = t32 * nz;
1054c4762a1bSJed Brown   t34  = ZA * ZA;
1055c4762a1bSJed Brown   t35  = t8 * t8;
1056c4762a1bSJed Brown   t36  = t34 * t35;
1057c4762a1bSJed Brown   t40  = t2 * t34;
1058c4762a1bSJed Brown   t41  = 0.3141592654e1 * t8;
1059c4762a1bSJed Brown   t42  = t41 * t15;
1060c4762a1bSJed Brown   t45  = t1 * t5;
1061c4762a1bSJed Brown   t46  = t14 * t14;
1062c4762a1bSJed Brown   t49  = t19 * t5;
1063c4762a1bSJed Brown   t51  = t19 * t46;
1064c4762a1bSJed Brown   t53  = t19 * t34;
1065c4762a1bSJed Brown   t55  = t8 * t7;
1066c4762a1bSJed Brown   t56  = t13 * t55;
1067c4762a1bSJed Brown   t57  = t25 * t56;
1068c4762a1bSJed Brown   t60  = t2 * nx;
1069c4762a1bSJed Brown   t61  = 0.3141592654e1 * 0.3141592654e1;
1070c4762a1bSJed Brown   t63  = t60 * t31 * t61;
1071c4762a1bSJed Brown   t64  = xc * xc;
1072c4762a1bSJed Brown   t65  = ZA * t64;
1073c4762a1bSJed Brown   t66  = ZB * t8;
1074c4762a1bSJed Brown   t67  = t14 * t12;
1075c4762a1bSJed Brown   t68  = t66 * t67;
1076c4762a1bSJed Brown   t69  = t65 * t68;
1077c4762a1bSJed 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;
1078c4762a1bSJed Brown   t73  = t1 * nx;
1079c4762a1bSJed Brown   t75  = t73 * t31 * 0.3141592654e1;
1080c4762a1bSJed Brown   t76  = t8 * t67;
1081c4762a1bSJed Brown   t77  = t25 * t76;
1082c4762a1bSJed Brown   t80  = t1 * t1;
1083c4762a1bSJed Brown   t81  = t80 * t34;
1084c4762a1bSJed Brown   t83  = t61 * t14;
1085c4762a1bSJed Brown   t87  = t1 * t19;
1086c4762a1bSJed Brown   t88  = PetscCosReal(t30);
1087c4762a1bSJed Brown   t90  = t87 * t88 * t61;
1088c4762a1bSJed Brown   t91  = t5 * t64;
1089c4762a1bSJed Brown   t92  = t13 * t12;
1090c4762a1bSJed Brown   t93  = t8 * t92;
1091c4762a1bSJed Brown   t94  = t91 * t93;
1092c4762a1bSJed Brown   t100 = ZB * t64 * ZA * t8 * t92;
1093c4762a1bSJed Brown   t103 = nz * t19;
1094c4762a1bSJed Brown   t105 = t103 * t88 * 0.3141592654e1;
1095c4762a1bSJed Brown   t106 = ZA * xc;
1096c4762a1bSJed Brown   t107 = ZB * t35;
1097c4762a1bSJed Brown   t109 = t106 * t107 * t12;
1098c4762a1bSJed Brown   t112 = t34 * xc;
1099c4762a1bSJed Brown   t113 = t112 * t93;
1100c4762a1bSJed Brown   t116 = t35 * t14;
1101c4762a1bSJed Brown   t118 = t1 * ZA;
1102c4762a1bSJed Brown   t119 = ZB * t14;
1103c4762a1bSJed Brown   t122 = t1 * t46;
1104c4762a1bSJed Brown   t125 = t19 * ZB;
1105c4762a1bSJed Brown   t126 = t35 * ZA;
1106c4762a1bSJed Brown   t127 = t125 * t126;
1107c4762a1bSJed Brown   t129 = t1 * ZB;
1108c4762a1bSJed 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;
1109c4762a1bSJed Brown   t134 = t1 * t34;
1110c4762a1bSJed Brown   t136 = t34 * t64;
1111c4762a1bSJed Brown   t137 = t136 * t76;
1112c4762a1bSJed Brown   t141 = t91 * t76;
1113c4762a1bSJed Brown   t145 = t103 * t34;
1114c4762a1bSJed Brown   t146 = 0.3141592654e1 * xc;
1115c4762a1bSJed Brown   t147 = t8 * t13;
1116c4762a1bSJed Brown   t153 = t14 * ZA;
1117c4762a1bSJed Brown   t156 = xc * t5;
1118c4762a1bSJed Brown   t157 = t156 * t93;
1119c4762a1bSJed Brown   t160 = t103 * t5;
1120c4762a1bSJed Brown   t162 = t146 * t8 * t15;
1121c4762a1bSJed Brown   t166 = t34 * t7 * t15;
1122c4762a1bSJed 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;
1123c4762a1bSJed Brown   t170 = t106 * t68;
1124c4762a1bSJed Brown   t177 = t35 * t92;
1125c4762a1bSJed Brown   t178 = t112 * t177;
1126c4762a1bSJed Brown   t181 = t156 * t76;
1127c4762a1bSJed Brown   t186 = t35 * t12;
1128c4762a1bSJed Brown   t187 = t112 * t186;
1129c4762a1bSJed Brown   t193 = t5 * 0.3141592654e1;
1130c4762a1bSJed Brown   t206 = t34 * t14;
1131c4762a1bSJed Brown   t207 = t206 * t7;
1132c4762a1bSJed 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;
1133c4762a1bSJed Brown   t217 = t106 * t66 * t92;
1134c4762a1bSJed Brown   t226 = t88 * t19 * nz;
1135c4762a1bSJed Brown   t227 = 0.3141592654e1 * t34;
1136c4762a1bSJed Brown   t229 = t227 * xc * t67;
1137c4762a1bSJed Brown   t232 = t73 * t31;
1138c4762a1bSJed Brown   t234 = t146 * t5 * t67;
1139c4762a1bSJed Brown   t238 = t61 * ZB;
1140c4762a1bSJed Brown   t239 = t14 * t8;
1141c4762a1bSJed Brown   t240 = t238 * t239;
1142c4762a1bSJed Brown   t243 = t136 * t93;
1143c4762a1bSJed 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;
1144c4762a1bSJed Brown   t247 = t14 * t92;
1145c4762a1bSJed Brown   t249 = t227 * t247 * xc;
1146c4762a1bSJed Brown   t254 = t73 * t22;
1147c4762a1bSJed Brown   t259 = t60 * t22 * t61;
1148c4762a1bSJed Brown   t260 = t112 * t26;
1149c4762a1bSJed Brown   t264 = t146 * t247 * t5;
1150c4762a1bSJed Brown   t268 = xc * t14;
1151c4762a1bSJed Brown   t274 = t5 * t14;
1152c4762a1bSJed Brown   t275 = t274 * t8;
1153c4762a1bSJed Brown   t280 = nz * nx;
1154c4762a1bSJed Brown   t281 = t280 * t22;
1155c4762a1bSJed Brown   t282 = t55 * t14;
1156c4762a1bSJed Brown   t283 = t25 * t282;
1157c4762a1bSJed Brown   t290 = ZA * t247 * xc * ZB;
1158c4762a1bSJed Brown   t295 = t22 * nx * t1 * 0.3141592654e1;
1159c4762a1bSJed 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;
1160c4762a1bSJed Brown   t301 = t61 * t5;
1161c4762a1bSJed Brown   t307 = t87 * t34;
1162c4762a1bSJed Brown   t312 = t61 * xc;
1163c4762a1bSJed Brown   t313 = t312 * t239;
1164c4762a1bSJed Brown   t317 = t34 * t55 * t14;
1165c4762a1bSJed Brown   t329 = ZB * t13 * t55;
1166c4762a1bSJed Brown   t330 = t65 * t329;
1167c4762a1bSJed 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;
1168c4762a1bSJed Brown   t340 = t5 * t35;
1169c4762a1bSJed Brown   t344 = t25 * t93;
1170c4762a1bSJed Brown   t356 = t41 * t13;
1171c4762a1bSJed Brown   t360 = t23 * nz * t61;
1172c4762a1bSJed Brown   t363 = t25 * t64 * t7 * t15;
1173c4762a1bSJed Brown   t366 = t156 * t177;
1174c4762a1bSJed Brown   t369 = t14 * t7;
1175c4762a1bSJed Brown   t370 = t25 * t369;
1176c4762a1bSJed Brown   t373 = t156 * t186;
1177c4762a1bSJed 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;
1178c4762a1bSJed Brown   t382 = t112 * t76;
1179c4762a1bSJed Brown   t387 = t80 * t61;
1180c4762a1bSJed Brown   t391 = t136 * t26;
1181c4762a1bSJed 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;
1182c4762a1bSJed Brown   t423 = t153 * t8;
1183c4762a1bSJed Brown   t426 = t34 * t13;
1184c4762a1bSJed Brown   t427 = t426 * t55;
1185c4762a1bSJed Brown   t430 = t34 * t8;
1186c4762a1bSJed Brown   t437 = t80 * ZA;
1187c4762a1bSJed 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;
1188c4762a1bSJed Brown   t453 = t106 * ZB * t7 * t15;
1189c4762a1bSJed Brown   t456 = t2 * t5;
1190c4762a1bSJed Brown   t459 = t112 * t56;
1191c4762a1bSJed Brown   t462 = t126 * t14;
1192c4762a1bSJed Brown   t474 = t40 * 0.3141592654e1;
1193c4762a1bSJed Brown   t475 = xc * t8;
1194c4762a1bSJed Brown   t480 = t146 * t13 * t35;
1195c4762a1bSJed 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;
1196c4762a1bSJed Brown   t497 = t136 * t56;
1197c4762a1bSJed Brown   t504 = t9 * t13;
1198c4762a1bSJed Brown   t509 = t475 * t13;
1199c4762a1bSJed 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;
1200c4762a1bSJed Brown   t528 = t5 * t13;
1201c4762a1bSJed Brown   t529 = t528 * t35;
1202c4762a1bSJed Brown   t532 = t106 * t329;
1203c4762a1bSJed 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;
1204c4762a1bSJed Brown   t557 = t146 * t15;
1205c4762a1bSJed Brown   t562 = xc * t15;
1206c4762a1bSJed Brown   t563 = t562 * t5;
1207c4762a1bSJed 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;
1208c4762a1bSJed 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;
1209c4762a1bSJed Brown   t623 = xc * t13;
1210c4762a1bSJed 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;
1211c4762a1bSJed Brown   t632 = t61 * 0.3141592654e1;
1212c4762a1bSJed Brown   t633 = t632 * t8;
1213c4762a1bSJed Brown   t634 = t80 * nz;
1214c4762a1bSJed Brown   t638 = t632 * t634;
1215c4762a1bSJed Brown   t639 = t638 * xc;
1216c4762a1bSJed Brown   t642 = t61 * t34;
1217c4762a1bSJed Brown   t643 = t122 * t19;
1218c4762a1bSJed Brown   t649 = t61 * t61;
1219c4762a1bSJed Brown   t650 = t649 * t1;
1220c4762a1bSJed Brown   t652 = t19 * t19;
1221c4762a1bSJed Brown   t653 = t14 * t652;
1222c4762a1bSJed Brown   t654 = t653 * t9;
1223c4762a1bSJed Brown   t657 = t14 * t1;
1224c4762a1bSJed Brown   t658 = t657 * t19;
1225c4762a1bSJed Brown   t665 = t632 * t34;
1226c4762a1bSJed Brown   t666 = t665 * t2;
1227c4762a1bSJed Brown   t667 = t8 * t19;
1228c4762a1bSJed Brown   t668 = t667 * t623;
1229c4762a1bSJed Brown   t674 = t665 * nz;
1230c4762a1bSJed Brown   t675 = t652 * xc;
1231c4762a1bSJed 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;
1232c4762a1bSJed Brown   t683 = t46 * t652;
1233c4762a1bSJed Brown   t686 = t633 * t15;
1234c4762a1bSJed Brown   t691 = t35 * t80;
1235c4762a1bSJed Brown   t698 = t35 * t652;
1236c4762a1bSJed Brown   t705 = t14 * t80;
1237c4762a1bSJed Brown   t708 = t61 * t35;
1238c4762a1bSJed 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;
1239c4762a1bSJed Brown   t727 = t61 * t46;
1240c4762a1bSJed Brown   t737 = t649 * t34;
1241c4762a1bSJed Brown   t738 = t737 * t1;
1242c4762a1bSJed Brown   t739 = t8 * t652;
1243c4762a1bSJed Brown   t740 = t739 * t268;
1244c4762a1bSJed Brown   t746 = t61 * ZA;
1245c4762a1bSJed Brown   t754 = t632 * nz * xc;
1246c4762a1bSJed 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;
1247c4762a1bSJed Brown   t762 = t633 * t13;
1248c4762a1bSJed Brown   t764 = t5 * nz * t652;
1249c4762a1bSJed Brown   t767 = t80 * t1;
1250c4762a1bSJed Brown   t768 = t649 * t767;
1251c4762a1bSJed Brown   t772 = t649 * ZA;
1252c4762a1bSJed Brown   t773 = t772 * t129;
1253c4762a1bSJed Brown   t777 = t35 * t1 * t19;
1254c4762a1bSJed Brown   t780 = t632 * t5;
1255c4762a1bSJed Brown   t781 = t780 * t15;
1256c4762a1bSJed Brown   t786 = t698 * ZA;
1257c4762a1bSJed Brown   t790 = t64 * t14;
1258c4762a1bSJed Brown   t800 = t649 * t8;
1259c4762a1bSJed 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;
1260c4762a1bSJed Brown   t812 = t649 * t80;
1261c4762a1bSJed Brown   t817 = t83 * ZB;
1262c4762a1bSJed Brown   t824 = t746 * ZB;
1263c4762a1bSJed Brown   t828 = t800 * t14;
1264c4762a1bSJed 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;
1265c4762a1bSJed Brown   t858 = t35 * t19;
1266c4762a1bSJed Brown   t873 = t2 * t8;
1267c4762a1bSJed Brown   t878 = t61 * t1;
1268c4762a1bSJed 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;
1269c4762a1bSJed Brown   t903 = t739 * t790;
1270c4762a1bSJed Brown   t923 = t737 * t80;
1271c4762a1bSJed Brown   t924 = t667 * t790;
1272c4762a1bSJed Brown   t927 = t780 * t2;
1273c4762a1bSJed Brown   t937 = t15 * t19 * xc;
1274c4762a1bSJed 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;
1275c4762a1bSJed 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;
1276c4762a1bSJed Brown 
1277c4762a1bSJed 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);
1278c4762a1bSJed Brown   /****************************************************************************************/
1279c4762a1bSJed Brown   _PC4A = 0;
1280c4762a1bSJed Brown   /****************************************************************************************/
1281c4762a1bSJed Brown   t1   = nx * 0.3141592654e1;
1282c4762a1bSJed Brown   t2   = t1 * xc;
1283c4762a1bSJed Brown   t3   = PetscCosReal(t2);
1284c4762a1bSJed Brown   t4   = nx * nx;
1285c4762a1bSJed Brown   t6   = nz * 0.3141592654e1;
1286c4762a1bSJed Brown   t7   = t3 * t4 * t6;
1287c4762a1bSJed Brown   t8   = ZA * ZB;
1288c4762a1bSJed Brown   t9   = PetscExpReal(t6);
1289c4762a1bSJed Brown   t10  = t9 * t9;
1290c4762a1bSJed Brown   t11  = xc * nz;
1291c4762a1bSJed Brown   t13  = PetscExpReal(t11 * 0.3141592654e1);
1292c4762a1bSJed Brown   t14  = t13 * t13;
1293c4762a1bSJed Brown   t15  = t14 * t13;
1294c4762a1bSJed Brown   t16  = t14 * t14;
1295c4762a1bSJed Brown   t17  = t16 * t15;
1296c4762a1bSJed Brown   t18  = t10 * t17;
1297c4762a1bSJed Brown   t19  = t8 * t18;
1298c4762a1bSJed Brown   t22  = PetscSinReal(t2);
1299c4762a1bSJed Brown   t23  = nx * t22;
1300c4762a1bSJed Brown   t24  = t23 * nz;
1301c4762a1bSJed Brown   t25  = ZB * ZB;
1302c4762a1bSJed Brown   t30  = nz * nz;
1303c4762a1bSJed Brown   t31  = t30 * nz;
1304c4762a1bSJed Brown   t32  = t31 * nx;
1305c4762a1bSJed Brown   t33  = 0.3141592654e1 * 0.3141592654e1;
1306c4762a1bSJed Brown   t35  = t32 * t22 * t33;
1307c4762a1bSJed Brown   t36  = ZA * ZA;
1308c4762a1bSJed Brown   t37  = t36 * xc;
1309c4762a1bSJed Brown   t38  = t16 * t13;
1310c4762a1bSJed Brown   t39  = t10 * t38;
1311c4762a1bSJed Brown   t40  = t37 * t39;
1312c4762a1bSJed Brown   t43  = PetscSinReal(t1);
1313c4762a1bSJed Brown   t44  = nx * t43;
1314c4762a1bSJed Brown   t45  = t30 * 0.3141592654e1;
1315c4762a1bSJed Brown   t46  = t44 * t45;
1316c4762a1bSJed Brown   t47  = ZA * xc;
1317c4762a1bSJed Brown   t49  = ZB * t16 * t9;
1318c4762a1bSJed Brown   t54  = t4 * nx * t43;
1319c4762a1bSJed Brown   t55  = xc * xc;
1320c4762a1bSJed Brown   t57  = t54 * t30 * t55;
1321c4762a1bSJed Brown   t58  = t33 * 0.3141592654e1;
1322c4762a1bSJed Brown   t59  = t58 * t25;
1323c4762a1bSJed Brown   t60  = t16 * t9;
1324c4762a1bSJed Brown   t61  = t59 * t60;
1325c4762a1bSJed Brown   t64  = xc * t25;
1326c4762a1bSJed Brown   t65  = t14 * t9;
1327c4762a1bSJed Brown   t66  = t64 * t65;
1328c4762a1bSJed Brown   t70  = t44 * t31 * t33;
1329c4762a1bSJed Brown   t71  = t37 * t65;
1330c4762a1bSJed Brown   t74  = t10 * t15;
1331c4762a1bSJed Brown   t75  = t64 * t74;
1332c4762a1bSJed Brown   t78  = t25 * t10;
1333c4762a1bSJed Brown   t83  = t54 * nz * t33;
1334c4762a1bSJed Brown   t84  = t55 * t25;
1335c4762a1bSJed Brown   t85  = t10 * t9;
1336c4762a1bSJed Brown   t86  = t14 * t85;
1337c4762a1bSJed Brown   t87  = t84 * t86;
1338c4762a1bSJed Brown   t90  = t30 * t30;
1339c4762a1bSJed Brown   t92  = t44 * t90 * t58;
1340c4762a1bSJed Brown   t93  = t55 * xc;
1341c4762a1bSJed Brown   t94  = t93 * t25;
1342c4762a1bSJed Brown   t95  = t85 * t16;
1343c4762a1bSJed Brown   t96  = t94 * t95;
1344c4762a1bSJed Brown   t102 = t23 * t45;
1345c4762a1bSJed Brown   t103 = t10 * t10;
1346c4762a1bSJed Brown   t104 = ZB * t103;
1347c4762a1bSJed Brown   t106 = t47 * t104 * t15;
1348c4762a1bSJed Brown   t111 = t54 * 0.3141592654e1;
1349c4762a1bSJed Brown   t112 = t25 * t85;
1350c4762a1bSJed Brown   t113 = t112 * t16;
1351c4762a1bSJed Brown   t115 = t8 * t39;
1352c4762a1bSJed Brown   t118 = t16 * t14;
1353c4762a1bSJed Brown   t119 = t85 * t118;
1354c4762a1bSJed Brown   t120 = t37 * t119;
1355c4762a1bSJed Brown   t123 = t16 * t16;
1356c4762a1bSJed Brown   t124 = t36 * t123;
1357c4762a1bSJed Brown   t125 = t124 * t9;
1358c4762a1bSJed 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;
1359c4762a1bSJed Brown   t128 = t37 * t74;
1360c4762a1bSJed Brown   t131 = t44 * nz;
1361c4762a1bSJed Brown   t133 = t25 * t9 * t118;
1362c4762a1bSJed Brown   t136 = t36 * t14;
1363c4762a1bSJed Brown   t137 = t136 * t9;
1364c4762a1bSJed Brown   t140 = t30 * t4;
1365c4762a1bSJed Brown   t142 = t140 * t3 * t33;
1366c4762a1bSJed Brown   t143 = t64 * t39;
1367c4762a1bSJed Brown   t147 = t30 * nx * t43;
1368c4762a1bSJed Brown   t148 = 0.3141592654e1 * t36;
1369c4762a1bSJed Brown   t149 = t9 * t118;
1370c4762a1bSJed Brown   t153 = t44 * t31 * ZA;
1371c4762a1bSJed Brown   t154 = t33 * xc;
1372c4762a1bSJed Brown   t155 = t154 * t49;
1373c4762a1bSJed Brown   t160 = ZA * t17 * xc * ZB;
1374c4762a1bSJed Brown   t163 = t103 * t13;
1375c4762a1bSJed Brown   t164 = t64 * t163;
1376c4762a1bSJed Brown   t170 = t44 * t90 * t55;
1377c4762a1bSJed Brown   t171 = t58 * ZB;
1378c4762a1bSJed Brown   t172 = ZA * t16;
1379c4762a1bSJed Brown   t174 = t171 * t172 * t9;
1380c4762a1bSJed Brown   t177 = t36 * t55;
1381c4762a1bSJed Brown   t178 = t177 * t149;
1382c4762a1bSJed Brown   t181 = t54 * t11;
1383c4762a1bSJed Brown   t182 = t33 * t25;
1384c4762a1bSJed Brown   t186 = t25 * t14;
1385c4762a1bSJed Brown   t187 = t186 * t9;
1386c4762a1bSJed Brown   t193 = t186 * t85;
1387c4762a1bSJed Brown   t198 = ZB * t55;
1388c4762a1bSJed Brown   t199 = ZA * t103;
1389c4762a1bSJed Brown   t201 = t198 * t199 * t15;
1390c4762a1bSJed 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;
1391c4762a1bSJed Brown   t210 = t32 * t22;
1392c4762a1bSJed Brown   t211 = t33 * t55;
1393c4762a1bSJed Brown   t212 = t25 * t38;
1394c4762a1bSJed Brown   t213 = t211 * t212;
1395c4762a1bSJed Brown   t216 = nz * nx;
1396c4762a1bSJed Brown   t217 = t22 * t25;
1397c4762a1bSJed Brown   t222 = ZB * t85 * t16;
1398c4762a1bSJed Brown   t226 = t23 * t30;
1399c4762a1bSJed Brown   t227 = t13 * t10;
1400c4762a1bSJed Brown   t228 = t148 * t227;
1401c4762a1bSJed Brown   t233 = t37 * t163;
1402c4762a1bSJed Brown   t237 = nz * t4 * t3;
1403c4762a1bSJed Brown   t238 = t148 * t74;
1404c4762a1bSJed Brown   t241 = t64 * t86;
1405c4762a1bSJed Brown   t245 = t148 * xc * t15;
1406c4762a1bSJed Brown   t248 = t112 * t118;
1407c4762a1bSJed Brown   t250 = t22 * t36;
1408c4762a1bSJed Brown   t256 = 0.3141592654e1 * t25;
1409c4762a1bSJed Brown   t257 = t256 * t39;
1410c4762a1bSJed Brown   t262 = t38 * t103;
1411c4762a1bSJed Brown   t263 = t37 * t262;
1412c4762a1bSJed Brown   t267 = t148 * t17 * xc;
1413c4762a1bSJed 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;
1414c4762a1bSJed Brown   t273 = t37 * t149;
1415c4762a1bSJed Brown   t277 = t47 * t104 * t13;
1416c4762a1bSJed Brown   t285 = t31 * t36;
1417c4762a1bSJed Brown   t286 = t44 * t285;
1418c4762a1bSJed Brown   t291 = t25 * t123 * t9;
1419c4762a1bSJed Brown   t304 = 0.3141592654e1 * xc;
1420c4762a1bSJed Brown   t305 = t304 * t212;
1421c4762a1bSJed Brown   t312 = t256 * t18;
1422c4762a1bSJed Brown   t315 = t8 * t60;
1423c4762a1bSJed Brown   t319 = t54 * t30 * t58;
1424c4762a1bSJed Brown   t323 = t90 * t36;
1425c4762a1bSJed Brown   t324 = t44 * t323;
1426c4762a1bSJed Brown   t325 = t55 * t58;
1427c4762a1bSJed Brown   t326 = t325 * t60;
1428c4762a1bSJed 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;
1429c4762a1bSJed Brown   t332 = t8 * t95;
1430c4762a1bSJed Brown   t335 = t136 * t85;
1431c4762a1bSJed Brown   t337 = t256 * t227;
1432c4762a1bSJed Brown   t340 = t177 * t119;
1433c4762a1bSJed Brown   t346 = t37 * t86;
1434c4762a1bSJed Brown   t351 = t103 * t15;
1435c4762a1bSJed Brown   t352 = t177 * t351;
1436c4762a1bSJed Brown   t355 = t64 * t119;
1437c4762a1bSJed Brown   t358 = t8 * t227;
1438c4762a1bSJed Brown   t361 = t85 * 0.3141592654e1;
1439c4762a1bSJed Brown   t365 = t84 * t39;
1440c4762a1bSJed Brown   t372 = ZB * t10;
1441c4762a1bSJed Brown   t373 = t372 * t38;
1442c4762a1bSJed Brown   t374 = t47 * t373;
1443c4762a1bSJed Brown   t379 = t177 * t39;
1444c4762a1bSJed 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;
1445c4762a1bSJed Brown   t386 = t54 * t30 * t93;
1446c4762a1bSJed Brown   t387 = ZA * t85;
1447c4762a1bSJed Brown   t389 = t171 * t387 * t16;
1448c4762a1bSJed Brown   t394 = t64 * t60;
1449c4762a1bSJed Brown   t398 = t304 * t25 * t15;
1450c4762a1bSJed Brown   t401 = t361 * t25;
1451c4762a1bSJed Brown   t405 = t84 * t65;
1452c4762a1bSJed Brown   t410 = t148 * t18;
1453c4762a1bSJed Brown   t414 = t25 * t16 * t9;
1454c4762a1bSJed Brown   t417 = t84 * t74;
1455c4762a1bSJed Brown   t422 = t177 * t86;
1456c4762a1bSJed Brown   t428 = ZB * t38;
1457c4762a1bSJed Brown   t429 = t47 * t428;
1458c4762a1bSJed Brown   t432 = t148 * t39;
1459c4762a1bSJed 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;
1460c4762a1bSJed Brown   t442 = t36 * t9 * t118;
1461c4762a1bSJed Brown   t444 = t123 * t9;
1462c4762a1bSJed Brown   t445 = t8 * t444;
1463c4762a1bSJed Brown   t448 = t361 * t36;
1464c4762a1bSJed Brown   t451 = t47 * t372 * t17;
1465c4762a1bSJed Brown   t454 = t94 * t60;
1466c4762a1bSJed Brown   t457 = t25 * t103;
1467c4762a1bSJed Brown   t465 = t47 * t372 * t15;
1468c4762a1bSJed Brown   t468 = t36 * t85;
1469c4762a1bSJed Brown   t469 = t468 * t16;
1470c4762a1bSJed Brown   t474 = t43 * t85;
1471c4762a1bSJed Brown   t478 = t8 * t74;
1472c4762a1bSJed Brown   t484 = t256 * t74;
1473c4762a1bSJed Brown   t489 = t198 * ZA * t10 * t15;
1474c4762a1bSJed 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;
1475c4762a1bSJed Brown   t504 = t33 * t36 * t55 * t38;
1476c4762a1bSJed Brown   t507 = t37 * t18;
1477c4762a1bSJed Brown   t512 = t47 * ZB * t13 * t10;
1478c4762a1bSJed Brown   t518 = t59 * t95;
1479c4762a1bSJed Brown   t530 = t84 * t351;
1480c4762a1bSJed Brown   t534 = t37 * t227;
1481c4762a1bSJed 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;
1482c4762a1bSJed Brown   t557 = t468 * t118;
1483c4762a1bSJed Brown   t562 = t93 * t58;
1484c4762a1bSJed Brown   t563 = t562 * t60;
1485c4762a1bSJed Brown   t567 = t44 * t90 * t93;
1486c4762a1bSJed Brown   t575 = ZA * t55;
1487c4762a1bSJed Brown   t576 = t575 * t428;
1488c4762a1bSJed Brown   t583 = t37 * t60;
1489c4762a1bSJed Brown   t590 = t140 * t3;
1490c4762a1bSJed 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;
1491c4762a1bSJed Brown   t604 = nz * t36;
1492c4762a1bSJed Brown   t606 = t154 * t95;
1493c4762a1bSJed Brown   t625 = t36 * t103;
1494c4762a1bSJed Brown   t640 = t30 * t36;
1495c4762a1bSJed Brown   t641 = t54 * t640;
1496c4762a1bSJed Brown   t642 = t325 * t95;
1497c4762a1bSJed 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;
1498c4762a1bSJed Brown   t652 = t36 * t16;
1499c4762a1bSJed Brown   t653 = t652 * t9;
1500c4762a1bSJed Brown   t655 = t64 * t227;
1501c4762a1bSJed Brown   t658 = t182 * t95;
1502c4762a1bSJed Brown   t663 = t562 * t95;
1503c4762a1bSJed Brown   t684 = t64 * t351;
1504c4762a1bSJed Brown   t689 = t36 * t10;
1505c4762a1bSJed Brown   t695 = t154 * t222;
1506c4762a1bSJed 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;
1507c4762a1bSJed Brown   t711 = t575 * t373;
1508c4762a1bSJed Brown   t717 = t304 * t17 * t25;
1509c4762a1bSJed Brown   t736 = t177 * t74;
1510c4762a1bSJed 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;
1511c4762a1bSJed Brown   t750 = t64 * t262;
1512c4762a1bSJed Brown   t763 = t44 * t640;
1513c4762a1bSJed Brown   t770 = t84 * t119;
1514c4762a1bSJed 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;
1515c4762a1bSJed Brown   t797 = t64 * t149;
1516c4762a1bSJed 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;
1517c4762a1bSJed Brown   t827 = t84 * t149;
1518c4762a1bSJed Brown   t846 = t54 * nz * ZA;
1519c4762a1bSJed Brown   t854 = t64 * t18;
1520c4762a1bSJed 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;
1521c4762a1bSJed 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;
1522c4762a1bSJed Brown   t914 = t25 * ZB;
1523c4762a1bSJed Brown   t915 = t33 * t914;
1524c4762a1bSJed Brown   t919 = t4 * t4;
1525c4762a1bSJed Brown   t920 = t16 * t919;
1526c4762a1bSJed Brown   t929 = t123 * t90;
1527c4762a1bSJed Brown   t932 = t919 * t103;
1528c4762a1bSJed Brown   t935 = t33 * ZB;
1529c4762a1bSJed Brown   t939 = t652 * t919;
1530c4762a1bSJed Brown   t942 = t16 * t30;
1531c4762a1bSJed Brown   t943 = t942 * t4;
1532c4762a1bSJed Brown   t949 = t103 * t16;
1533c4762a1bSJed Brown   t950 = t949 * t90;
1534c4762a1bSJed 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;
1535c4762a1bSJed Brown   t954  = t171 * t36;
1536c4762a1bSJed Brown   t955  = t90 * nz;
1537c4762a1bSJed Brown   t956  = xc * t955;
1538c4762a1bSJed Brown   t957  = t118 * t10;
1539c4762a1bSJed Brown   t964  = t33 * t33;
1540c4762a1bSJed Brown   t965  = t964 * ZB;
1541c4762a1bSJed Brown   t966  = t965 * t640;
1542c4762a1bSJed Brown   t967  = t10 * t919;
1543c4762a1bSJed Brown   t968  = t55 * t16;
1544c4762a1bSJed Brown   t969  = t967 * t968;
1545c4762a1bSJed Brown   t972  = t935 * t36;
1546c4762a1bSJed Brown   t974  = t103 * t30 * t4;
1547c4762a1bSJed Brown   t977  = xc * t16;
1548c4762a1bSJed Brown   t978  = t967 * t977;
1549c4762a1bSJed Brown   t981  = t90 * t30;
1550c4762a1bSJed Brown   t983  = t16 * t10;
1551c4762a1bSJed Brown   t987  = t182 * ZA;
1552c4762a1bSJed Brown   t988  = t4 * t10;
1553c4762a1bSJed Brown   t992  = t171 * t604;
1554c4762a1bSJed Brown   t993  = xc * t14;
1555c4762a1bSJed Brown   t994  = t932 * t993;
1556c4762a1bSJed Brown   t997  = t182 * t30;
1557c4762a1bSJed Brown   t1005 = t171 * t285;
1558c4762a1bSJed Brown   t1006 = t988 * t993;
1559c4762a1bSJed Brown   t1009 = t58 * t914;
1560c4762a1bSJed Brown   t1010 = t1009 * t31;
1561c4762a1bSJed 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;
1562c4762a1bSJed Brown   t1015 = t964 * t25;
1563c4762a1bSJed Brown   t1016 = ZA * t30;
1564c4762a1bSJed Brown   t1017 = t1015 * t1016;
1565c4762a1bSJed Brown   t1020 = t967 * t993;
1566c4762a1bSJed Brown   t1031 = t1009 * t118;
1567c4762a1bSJed Brown   t1032 = t31 * t10;
1568c4762a1bSJed Brown   t1040 = t964 * t914;
1569c4762a1bSJed Brown   t1041 = t1040 * t90;
1570c4762a1bSJed Brown   t1044 = t55 * t10 * t4 * t16;
1571c4762a1bSJed Brown   t1047 = t1040 * t30;
1572c4762a1bSJed Brown   t1050 = t123 * ZA;
1573c4762a1bSJed Brown   t1054 = t977 * t988;
1574c4762a1bSJed 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;
1575c4762a1bSJed Brown   t1058 = t1009 * nz;
1576c4762a1bSJed Brown   t1063 = t932 * ZA;
1577c4762a1bSJed Brown   t1069 = t123 * t30 * t4;
1578c4762a1bSJed Brown   t1080 = t993 * t103 * t4;
1579c4762a1bSJed Brown   t1088 = t935 * t103;
1580c4762a1bSJed 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;
1581c4762a1bSJed Brown   t1113 = t955 * t118 * xc;
1582c4762a1bSJed Brown   t1120 = t4 * t118;
1583c4762a1bSJed Brown   t1125 = t981 * xc;
1584c4762a1bSJed Brown   t1133 = nz * t10;
1585c4762a1bSJed 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;
1586c4762a1bSJed Brown   t1153 = xc * t118;
1587c4762a1bSJed Brown   t1165 = t182 * t16;
1588c4762a1bSJed Brown   t1170 = t171 * t10;
1589c4762a1bSJed Brown   t1178 = ZA * t90;
1590c4762a1bSJed 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;
1591c4762a1bSJed Brown   t1195 = t1040 * t981;
1592c4762a1bSJed Brown   t1199 = t1009 * t955;
1593c4762a1bSJed Brown   t1203 = t1009 * t10;
1594c4762a1bSJed Brown   t1211 = t965 * t323;
1595c4762a1bSJed 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;
1596c4762a1bSJed 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;
1597c4762a1bSJed Brown 
1598c4762a1bSJed 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);
1599c4762a1bSJed Brown   /****************************************************************************************/
1600c4762a1bSJed Brown   t1   = nz * nz;
1601c4762a1bSJed Brown   t2   = t1 * nz;
1602c4762a1bSJed Brown   t3   = nx * t2;
1603c4762a1bSJed Brown   t4   = 0.3141592654e1 * ZA;
1604c4762a1bSJed Brown   t5   = t3 * t4;
1605c4762a1bSJed Brown   t6   = nx * 0.3141592654e1;
1606c4762a1bSJed Brown   t7   = t6 * xc;
1607c4762a1bSJed Brown   t8   = PetscSinReal(t7);
1608c4762a1bSJed Brown   t9   = t8 * ZB;
1609c4762a1bSJed Brown   t10  = nz * 0.3141592654e1;
1610c4762a1bSJed Brown   t11  = PetscExpReal(t10);
1611c4762a1bSJed Brown   t12  = t11 * t11;
1612c4762a1bSJed Brown   t15  = PetscExpReal(xc * nz * 0.3141592654e1);
1613c4762a1bSJed Brown   t16  = t15 * t15;
1614c4762a1bSJed Brown   t17  = t16 * t16;
1615c4762a1bSJed Brown   t18  = t17 * t15;
1616c4762a1bSJed Brown   t19  = t12 * t18;
1617c4762a1bSJed Brown   t23  = t1 * t1;
1618c4762a1bSJed Brown   t24  = nx * t23;
1619c4762a1bSJed Brown   t25  = ZB * ZB;
1620c4762a1bSJed Brown   t27  = t18 * t8;
1621c4762a1bSJed Brown   t28  = 0.3141592654e1 * 0.3141592654e1;
1622c4762a1bSJed Brown   t29  = xc * xc;
1623c4762a1bSJed Brown   t30  = t28 * t29;
1624c4762a1bSJed Brown   t34  = t1 * xc;
1625c4762a1bSJed Brown   t35  = 0.3141592654e1 * ZB;
1626c4762a1bSJed Brown   t36  = t34 * t35;
1627c4762a1bSJed Brown   t37  = PetscCosReal(t7);
1628c4762a1bSJed Brown   t38  = ZA * t37;
1629c4762a1bSJed Brown   t39  = nx * nx;
1630c4762a1bSJed Brown   t40  = t39 * t12;
1631c4762a1bSJed Brown   t41  = t16 * t15;
1632c4762a1bSJed Brown   t43  = t38 * t40 * t41;
1633c4762a1bSJed Brown   t46  = t25 * nz;
1634c4762a1bSJed Brown   t47  = t46 * 0.3141592654e1;
1635c4762a1bSJed Brown   t48  = t39 * nx;
1636c4762a1bSJed Brown   t49  = PetscSinReal(t6);
1637c4762a1bSJed Brown   t50  = t48 * t49;
1638c4762a1bSJed Brown   t51  = t12 * t11;
1639c4762a1bSJed Brown   t52  = t51 * t17;
1640c4762a1bSJed Brown   t53  = t50 * t52;
1641c4762a1bSJed Brown   t56  = t34 * 0.3141592654e1 * t25;
1642c4762a1bSJed Brown   t57  = t37 * t39;
1643c4762a1bSJed Brown   t58  = t17 * t41;
1644c4762a1bSJed Brown   t59  = t12 * t58;
1645c4762a1bSJed Brown   t60  = t57 * t59;
1646c4762a1bSJed Brown   t63  = t25 * t18;
1647c4762a1bSJed Brown   t64  = t57 * nz;
1648c4762a1bSJed Brown   t67  = ZA * ZA;
1649c4762a1bSJed Brown   t68  = t67 * nz;
1650c4762a1bSJed Brown   t69  = 0.3141592654e1 * t48;
1651c4762a1bSJed Brown   t70  = t68 * t69;
1652c4762a1bSJed Brown   t71  = t49 * xc;
1653c4762a1bSJed Brown   t72  = t17 * t16;
1654c4762a1bSJed Brown   t73  = t11 * t72;
1655c4762a1bSJed Brown   t74  = t71 * t73;
1656c4762a1bSJed Brown   t77  = t1 * t67;
1657c4762a1bSJed Brown   t78  = t77 * 0.3141592654e1;
1658c4762a1bSJed Brown   t81  = nx * t25;
1659c4762a1bSJed Brown   t82  = t81 * t49;
1660c4762a1bSJed Brown   t83  = t17 * t17;
1661c4762a1bSJed Brown   t85  = t1 * t83 * t11;
1662c4762a1bSJed Brown   t87  = nx * ZB;
1663c4762a1bSJed Brown   t88  = t8 * t2;
1664c4762a1bSJed Brown   t89  = t87 * t88;
1665c4762a1bSJed Brown   t90  = 0.3141592654e1 * xc;
1666c4762a1bSJed Brown   t91  = t12 * t12;
1667c4762a1bSJed Brown   t92  = ZA * t91;
1668c4762a1bSJed Brown   t97  = ZB * ZA;
1669c4762a1bSJed Brown   t98  = t97 * t37;
1670c4762a1bSJed Brown   t99  = t39 * nz;
1671c4762a1bSJed Brown   t100 = t12 * t41;
1672c4762a1bSJed 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;
1673c4762a1bSJed Brown   t105 = t67 * t48;
1674c4762a1bSJed Brown   t106 = t49 * t51;
1675c4762a1bSJed Brown   t107 = t106 * t72;
1676c4762a1bSJed Brown   t109 = t1 * 0.3141592654e1;
1677c4762a1bSJed Brown   t110 = t109 * xc;
1678c4762a1bSJed Brown   t115 = nx * t67;
1679c4762a1bSJed Brown   t116 = t115 * t49;
1680c4762a1bSJed Brown   t117 = t1 * t16;
1681c4762a1bSJed Brown   t118 = t117 * t11;
1682c4762a1bSJed Brown   t120 = t2 * t25;
1683c4762a1bSJed Brown   t121 = t28 * 0.3141592654e1;
1684c4762a1bSJed Brown   t122 = t121 * t29;
1685c4762a1bSJed Brown   t123 = t120 * t122;
1686c4762a1bSJed Brown   t129 = t1 * ZB;
1687c4762a1bSJed Brown   t130 = t129 * t4;
1688c4762a1bSJed Brown   t131 = t57 * t100;
1689c4762a1bSJed Brown   t134 = t12 * t16;
1690c4762a1bSJed Brown   t136 = t109 * t39;
1691c4762a1bSJed Brown   t139 = ZB * t18;
1692c4762a1bSJed Brown   t141 = t39 * t1;
1693c4762a1bSJed Brown   t142 = t141 * t90;
1694c4762a1bSJed Brown   t145 = t77 * t90;
1695c4762a1bSJed Brown   t146 = t91 * t41;
1696c4762a1bSJed Brown   t147 = t57 * t146;
1697c4762a1bSJed Brown   t151 = t25 * t39 * t1;
1698c4762a1bSJed Brown   t152 = t72 * t12;
1699c4762a1bSJed Brown   t156 = t49 * t2;
1700c4762a1bSJed Brown   t158 = t83 * t11;
1701c4762a1bSJed 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;
1702c4762a1bSJed Brown   t164 = t115 * t88;
1703c4762a1bSJed Brown   t165 = t90 * t19;
1704c4762a1bSJed Brown   t168 = t25 * t48;
1705c4762a1bSJed Brown   t169 = t49 * t16;
1706c4762a1bSJed Brown   t170 = t169 * t11;
1707c4762a1bSJed Brown   t174 = ZA * nz * t69;
1708c4762a1bSJed Brown   t175 = ZB * t51;
1709c4762a1bSJed Brown   t176 = t175 * t17;
1710c4762a1bSJed Brown   t177 = t71 * t176;
1711c4762a1bSJed Brown   t180 = t1 * t29;
1712c4762a1bSJed Brown   t181 = t28 * t25;
1713c4762a1bSJed Brown   t182 = t180 * t181;
1714c4762a1bSJed Brown   t183 = t50 * t73;
1715c4762a1bSJed Brown   t186 = ZA * t1;
1716c4762a1bSJed Brown   t187 = t28 * t48;
1717c4762a1bSJed Brown   t188 = t186 * t187;
1718c4762a1bSJed Brown   t189 = ZB * t17;
1719c4762a1bSJed Brown   t190 = t189 * t11;
1720c4762a1bSJed Brown   t191 = t71 * t190;
1721c4762a1bSJed Brown   t194 = t50 * t158;
1722c4762a1bSJed Brown   t196 = t115 * t156;
1723c4762a1bSJed Brown   t197 = t90 * t73;
1724c4762a1bSJed Brown   t201 = t49 * t17 * t11;
1725c4762a1bSJed Brown   t204 = t88 * t90;
1726c4762a1bSJed Brown   t207 = t68 * 0.3141592654e1;
1727c4762a1bSJed Brown   t208 = t17 * t11;
1728c4762a1bSJed Brown   t209 = t50 * t208;
1729c4762a1bSJed 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;
1730c4762a1bSJed Brown   t212 = t2 * 0.3141592654e1;
1731c4762a1bSJed Brown   t213 = t212 * t52;
1732c4762a1bSJed Brown   t215 = t81 * t8;
1733c4762a1bSJed Brown   t216 = t212 * t59;
1734c4762a1bSJed Brown   t219 = t3 * t90;
1735c4762a1bSJed Brown   t220 = t25 * t8;
1736c4762a1bSJed Brown   t221 = t18 * t91;
1737c4762a1bSJed Brown   t225 = t71 * t52;
1738c4762a1bSJed Brown   t231 = t16 * t51;
1739c4762a1bSJed Brown   t232 = t50 * t231;
1740c4762a1bSJed Brown   t237 = ZA * t12;
1741c4762a1bSJed Brown   t243 = t67 * t28;
1742c4762a1bSJed Brown   t244 = t24 * t243;
1743c4762a1bSJed Brown   t245 = t71 * t231;
1744c4762a1bSJed 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;
1745c4762a1bSJed Brown   t252 = t25 * t37;
1746c4762a1bSJed Brown   t253 = t252 * t39;
1747c4762a1bSJed Brown   t255 = nz * t15 * t12;
1748c4762a1bSJed Brown   t258 = t2 * t29;
1749c4762a1bSJed Brown   t259 = ZB * t28;
1750c4762a1bSJed Brown   t260 = t258 * t259;
1751c4762a1bSJed Brown   t263 = t106 * t17;
1752c4762a1bSJed Brown   t265 = xc * t25;
1753c4762a1bSJed Brown   t269 = t25 * t49;
1754c4762a1bSJed Brown   t270 = t269 * t52;
1755c4762a1bSJed Brown   t273 = t1 * t25;
1756c4762a1bSJed Brown   t274 = t273 * 0.3141592654e1;
1757c4762a1bSJed Brown   t275 = t57 * t19;
1758c4762a1bSJed Brown   t278 = t24 * t30;
1759c4762a1bSJed Brown   t288 = t1 * t11 * t72;
1760c4762a1bSJed Brown   t290 = t212 * t208;
1761c4762a1bSJed Brown   t292 = t2 * xc;
1762c4762a1bSJed 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;
1763c4762a1bSJed Brown   t301 = t50 * t176;
1764c4762a1bSJed Brown   t304 = t51 * t72;
1765c4762a1bSJed Brown   t305 = t71 * t304;
1766c4762a1bSJed Brown   t308 = t25 * t41;
1767c4762a1bSJed Brown   t311 = ZA * t48;
1768c4762a1bSJed Brown   t312 = t311 * t49;
1769c4762a1bSJed Brown   t317 = t91 * t15;
1770c4762a1bSJed Brown   t318 = t57 * t317;
1771c4762a1bSJed Brown   t321 = t81 * t88;
1772c4762a1bSJed Brown   t322 = t90 * t59;
1773c4762a1bSJed Brown   t325 = t212 * t231;
1774c4762a1bSJed Brown   t327 = t15 * t12;
1775c4762a1bSJed Brown   t328 = t57 * t327;
1776c4762a1bSJed Brown   t331 = t77 * t187;
1777c4762a1bSJed Brown   t334 = t2 * ZA;
1778c4762a1bSJed Brown   t335 = t334 * t122;
1779c4762a1bSJed Brown   t336 = t50 * t190;
1780c4762a1bSJed 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;
1781c4762a1bSJed Brown   t341 = t169 * t51;
1782c4762a1bSJed Brown   t344 = t49 * t11 * t72;
1783c4762a1bSJed Brown   t346 = t77 * t30;
1784c4762a1bSJed Brown   t347 = t50 * t304;
1785c4762a1bSJed Brown   t350 = t25 * t51;
1786c4762a1bSJed Brown   t352 = nx * ZA;
1787c4762a1bSJed Brown   t353 = t49 * t23;
1788c4762a1bSJed Brown   t354 = t352 * t353;
1789c4762a1bSJed Brown   t355 = t28 * xc;
1790c4762a1bSJed Brown   t362 = t25 * t91;
1791c4762a1bSJed Brown   t365 = t23 * nz;
1792c4762a1bSJed Brown   t366 = nx * t365;
1793c4762a1bSJed Brown   t367 = t366 * t122;
1794c4762a1bSJed Brown   t368 = ZB * t49;
1795c4762a1bSJed Brown   t369 = ZA * t51;
1796c4762a1bSJed Brown   t370 = t369 * t17;
1797c4762a1bSJed Brown   t371 = t368 * t370;
1798c4762a1bSJed Brown   t374 = t115 * t353;
1799c4762a1bSJed Brown   t375 = t355 * t73;
1800c4762a1bSJed 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;
1801c4762a1bSJed Brown   t382 = t71 * t208;
1802c4762a1bSJed Brown   t394 = t2 * t67;
1803c4762a1bSJed Brown   t395 = t394 * t122;
1804c4762a1bSJed Brown   t398 = t352 * t156;
1805c4762a1bSJed Brown   t402 = t17 * t12;
1806c4762a1bSJed Brown   t403 = t39 * ZA;
1807c4762a1bSJed Brown   t404 = t402 * t403;
1808c4762a1bSJed Brown   t407 = t269 * t208;
1809c4762a1bSJed Brown   t411 = t49 * t83 * t11;
1810c4762a1bSJed Brown   t413 = t46 * t69;
1811c4762a1bSJed 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;
1812c4762a1bSJed Brown   t424 = t16 * t11;
1813c4762a1bSJed Brown   t425 = t212 * t424;
1814c4762a1bSJed Brown   t427 = t258 * t181;
1815c4762a1bSJed Brown   t430 = t67 * t29;
1816c4762a1bSJed Brown   t431 = t366 * t430;
1817c4762a1bSJed Brown   t432 = t121 * t49;
1818c4762a1bSJed Brown   t433 = t432 * t52;
1819c4762a1bSJed Brown   t436 = nz * t12;
1820c4762a1bSJed Brown   t437 = t436 * t18;
1821c4762a1bSJed Brown   t440 = t29 * xc;
1822c4762a1bSJed Brown   t441 = t440 * t121;
1823c4762a1bSJed Brown   t442 = t394 * t441;
1824c4762a1bSJed Brown   t445 = t67 * t37;
1825c4762a1bSJed Brown   t446 = t445 * t39;
1826c4762a1bSJed Brown   t448 = nz * t18 * t91;
1827c4762a1bSJed Brown   t453 = t352 * t49;
1828c4762a1bSJed Brown   t458 = t8 * t23;
1829c4762a1bSJed Brown   t462 = t81 * t458;
1830c4762a1bSJed Brown   t463 = t30 * t19;
1831c4762a1bSJed 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;
1832c4762a1bSJed Brown   t470 = t436 * t58;
1833c4762a1bSJed Brown   t475 = t2 * t121 * t440 * t25;
1834c4762a1bSJed Brown   t485 = t212 * t73;
1835c4762a1bSJed Brown   t488 = t67 * t72 * t1;
1836c4762a1bSJed Brown   t490 = t39 * xc;
1837c4762a1bSJed 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;
1838c4762a1bSJed Brown   t503 = t115 * t8;
1839c4762a1bSJed Brown   t510 = t355 * t19;
1840c4762a1bSJed Brown   t513 = t432 * t208;
1841c4762a1bSJed Brown   t525 = t38 * t40 * t18;
1842c4762a1bSJed 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;
1843c4762a1bSJed Brown   t536 = t28 * t37;
1844c4762a1bSJed Brown   t538 = t490 * t100;
1845c4762a1bSJed Brown   t541 = t334 * t441;
1846c4762a1bSJed Brown   t547 = t394 * t30;
1847c4762a1bSJed Brown   t550 = t212 * t19;
1848c4762a1bSJed Brown   t553 = t366 * t441;
1849c4762a1bSJed Brown   t556 = nz * t17;
1850c4762a1bSJed 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;
1851c4762a1bSJed Brown   t583 = t90 * t317;
1852c4762a1bSJed Brown   t594 = t212 * t158;
1853c4762a1bSJed Brown   t596 = t152 * t67;
1854c4762a1bSJed Brown   t602 = t67 * t17;
1855c4762a1bSJed 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;
1856c4762a1bSJed Brown   t613 = t83 * t25;
1857c4762a1bSJed Brown   t616 = t81 * t156;
1858c4762a1bSJed Brown   t627 = t90 * t231;
1859c4762a1bSJed Brown   t630 = t91 * t16;
1860c4762a1bSJed 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;
1861c4762a1bSJed Brown   t643 = t77 * t355;
1862c4762a1bSJed Brown   t648 = t115 * t458;
1863c4762a1bSJed Brown   t651 = t134 * t67;
1864c4762a1bSJed Brown   t657 = t30 * t304;
1865c4762a1bSJed Brown   t660 = t30 * t146;
1866c4762a1bSJed Brown   t665 = t25 * t17;
1867c4762a1bSJed Brown   t668 = t50 * t424;
1868c4762a1bSJed 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;
1869c4762a1bSJed Brown   t672 = t90 * t424;
1870c4762a1bSJed Brown   t676 = t120 * t536;
1871c4762a1bSJed Brown   t680 = t436 * t41;
1872c4762a1bSJed Brown   t688 = t366 * t67 * t440;
1873c4762a1bSJed Brown   t696 = xc * t12;
1874c4762a1bSJed Brown   t697 = t696 * t18;
1875c4762a1bSJed Brown   t701 = t252 * t141;
1876c4762a1bSJed Brown   t702 = t90 * t221;
1877c4762a1bSJed 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;
1878c4762a1bSJed Brown   t712 = t24 * t430;
1879c4762a1bSJed Brown   t713 = t28 * t49;
1880c4762a1bSJed Brown   t721 = t1 * t17 * t11;
1881c4762a1bSJed Brown   t726 = ZB * xc;
1882c4762a1bSJed Brown   t737 = nz * t91;
1883c4762a1bSJed 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;
1884c4762a1bSJed Brown   t745 = t269 * t231;
1885c4762a1bSJed Brown   t749 = t1 * t28 * t265;
1886c4762a1bSJed Brown   t757 = t16 * t39;
1887c4762a1bSJed Brown   t758 = t696 * t757;
1888c4762a1bSJed Brown   t762 = t69 * t49;
1889c4762a1bSJed Brown   t772 = t355 * t100;
1890c4762a1bSJed Brown   t775 = t81 * t353;
1891c4762a1bSJed 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;
1892c4762a1bSJed Brown   t790 = t212 * t304;
1893c4762a1bSJed Brown   t793 = t156 * 0.3141592654e1;
1894c4762a1bSJed Brown   t795 = t355 * t304;
1895c4762a1bSJed Brown   t800 = t91 * t39;
1896c4762a1bSJed Brown   t801 = t800 * nz;
1897c4762a1bSJed Brown   t807 = t2 * t28;
1898c4762a1bSJed Brown   t808 = t807 * t726;
1899c4762a1bSJed 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;
1900c4762a1bSJed Brown   t812 = t117 * t51;
1901c4762a1bSJed Brown   t821 = t24 * t355;
1902c4762a1bSJed Brown   t827 = t90 * t304;
1903c4762a1bSJed Brown   t840 = t800 * t41;
1904c4762a1bSJed 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;
1905c4762a1bSJed Brown   t849 = t1 * t51;
1906c4762a1bSJed Brown   t850 = t849 * t17;
1907c4762a1bSJed Brown   t860 = t269 * t424;
1908c4762a1bSJed Brown   t863 = t273 * t187;
1909c4762a1bSJed 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;
1910c4762a1bSJed Brown   t879 = xc * ZA;
1911c4762a1bSJed Brown   t888 = t67 * t51;
1912c4762a1bSJed Brown   t901 = ZA * t17;
1913c4762a1bSJed Brown   t903 = t368 * t901 * t11;
1914c4762a1bSJed 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;
1915c4762a1bSJed Brown   t923 = t71 * t424;
1916c4762a1bSJed Brown   t926 = t87 * t458;
1917c4762a1bSJed Brown   t927 = t28 * ZA;
1918c4762a1bSJed 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;
1919c4762a1bSJed Brown   t948 = t90 * t327;
1920c4762a1bSJed Brown   t961 = t30 * t100;
1921c4762a1bSJed Brown   t964 = t29 * t49;
1922c4762a1bSJed Brown   t981 = t106 * t1;
1923c4762a1bSJed 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;
1924c4762a1bSJed 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;
1925c4762a1bSJed Brown   t1018 = t212 * t100;
1926c4762a1bSJed Brown   t1029 = t212 * t327;
1927c4762a1bSJed 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;
1928c4762a1bSJed 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;
1929c4762a1bSJed Brown   t1079 = t58 * t8;
1930c4762a1bSJed Brown   t1091 = t807 * t29;
1931c4762a1bSJed Brown   t1092 = t665 * t40;
1932c4762a1bSJed Brown   t1101 = ZB * t91;
1933c4762a1bSJed Brown   t1102 = t403 * nz;
1934c4762a1bSJed 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;
1935c4762a1bSJed Brown   t1108 = t849 * t72;
1936c4762a1bSJed Brown   t1121 = t737 * t15;
1937c4762a1bSJed Brown   t1124 = t29 * t12;
1938c4762a1bSJed 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;
1939c4762a1bSJed Brown   t1134 = t394 * t28;
1940c4762a1bSJed 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;
1941c4762a1bSJed Brown   t1161 = nz * t83;
1942c4762a1bSJed Brown   t1173 = ZB * t12;
1943c4762a1bSJed 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;
1944c4762a1bSJed 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;
1945c4762a1bSJed Brown   t1234 = t25 * ZB;
1946c4762a1bSJed Brown   t1235 = t1234 * t28;
1947c4762a1bSJed Brown   t1236 = t365 * t91;
1948c4762a1bSJed Brown   t1240 = ZB * t121;
1949c4762a1bSJed Brown   t1241 = t1240 * t77;
1950c4762a1bSJed Brown   t1242 = t39 * t39;
1951c4762a1bSJed Brown   t1243 = t12 * t1242;
1952c4762a1bSJed Brown   t1244 = xc * t72;
1953c4762a1bSJed Brown   t1245 = t1243 * t1244;
1954c4762a1bSJed Brown   t1248 = t365 * t25;
1955c4762a1bSJed Brown   t1252 = t243 * nz;
1956c4762a1bSJed Brown   t1257 = t23 * t1;
1957c4762a1bSJed Brown   t1258 = t1240 * t1257;
1958c4762a1bSJed Brown   t1259 = t67 * t12;
1959c4762a1bSJed Brown   t1260 = xc * t16;
1960c4762a1bSJed Brown   t1268 = t1234 * t121;
1961c4762a1bSJed Brown   t1269 = t1268 * t23;
1962c4762a1bSJed Brown   t1272 = t1242 * t91;
1963c4762a1bSJed Brown   t1280 = t67 * xc;
1964c4762a1bSJed Brown   t1284 = t28 * t28;
1965c4762a1bSJed Brown   t1285 = t67 * t1284;
1966c4762a1bSJed Brown   t1287 = t1285 * t2 * ZB;
1967c4762a1bSJed Brown   t1288 = t17 * xc;
1968c4762a1bSJed Brown   t1289 = t1243 * t1288;
1969c4762a1bSJed 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;
1970c4762a1bSJed Brown   t1293 = t365 * t83;
1971c4762a1bSJed Brown   t1300 = ZA * t1284;
1972c4762a1bSJed Brown   t1304 = t17 * t1242 * t25 * t12;
1973c4762a1bSJed Brown   t1307 = t927 * t2;
1974c4762a1bSJed Brown   t1311 = t23 * t2;
1975c4762a1bSJed Brown   t1312 = t1300 * t1311;
1976c4762a1bSJed Brown   t1316 = t1234 * t1284;
1977c4762a1bSJed Brown   t1317 = t1316 * t1311;
1978c4762a1bSJed Brown   t1321 = t1240 * t23;
1979c4762a1bSJed Brown   t1331 = t1240 * t23 * t67;
1980c4762a1bSJed Brown   t1332 = t40 * t1244;
1981c4762a1bSJed Brown   t1338 = t1243 * t1260;
1982c4762a1bSJed 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;
1983c4762a1bSJed Brown   t1346 = t1316 * t2;
1984c4762a1bSJed Brown   t1349 = t927 * nz;
1985c4762a1bSJed Brown   t1350 = t25 * t1242;
1986c4762a1bSJed Brown   t1354 = t1268 * t1257;
1987c4762a1bSJed Brown   t1366 = t1268 * t1;
1988c4762a1bSJed Brown   t1370 = t29 * t17;
1989c4762a1bSJed Brown   t1371 = t1243 * t1370;
1990c4762a1bSJed 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;
1991c4762a1bSJed Brown   t1387 = t1257 * t12;
1992c4762a1bSJed Brown   t1391 = t1240 * t1;
1993c4762a1bSJed Brown   t1399 = t1272 * t1260;
1994c4762a1bSJed Brown   t1412 = t1285 * t1311;
1995c4762a1bSJed 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;
1996c4762a1bSJed Brown   t1456 = t365 * ZB;
1997c4762a1bSJed 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;
1998c4762a1bSJed Brown   t1472 = t1316 * t365;
1999c4762a1bSJed Brown   t1474 = t1124 * t39 * t17;
2000c4762a1bSJed Brown   t1478 = t17 * t91;
2001c4762a1bSJed Brown   t1504 = t72 * t39;
2002c4762a1bSJed 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;
2003c4762a1bSJed 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;
2004c4762a1bSJed Brown   t1564 = t1260 * t800;
2005c4762a1bSJed 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;
2006c4762a1bSJed Brown 
2007c4762a1bSJed 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);
2008c4762a1bSJed Brown   /****************************************************************************************/
2009c4762a1bSJed Brown   t1   = nz * nz;
2010c4762a1bSJed Brown   t2   = t1 * nz;
2011c4762a1bSJed Brown   t3   = t2 * nx;
2012c4762a1bSJed Brown   t4   = nx * 0.3141592654e1;
2013c4762a1bSJed Brown   t5   = t4 * xc;
2014c4762a1bSJed Brown   t6   = PetscSinReal(t5);
2015c4762a1bSJed Brown   t7   = 0.3141592654e1 * 0.3141592654e1;
2016c4762a1bSJed Brown   t9   = t3 * t6 * t7;
2017c4762a1bSJed Brown   t10  = xc * xc;
2018c4762a1bSJed Brown   t11  = ZA * ZA;
2019c4762a1bSJed Brown   t12  = t10 * t11;
2020c4762a1bSJed Brown   t13  = nz * 0.3141592654e1;
2021c4762a1bSJed Brown   t14  = PetscExpReal(t13);
2022c4762a1bSJed Brown   t15  = t14 * t14;
2023c4762a1bSJed Brown   t16  = xc * nz;
2024c4762a1bSJed Brown   t18  = PetscExpReal(t16 * 0.3141592654e1);
2025c4762a1bSJed Brown   t19  = t18 * t18;
2026c4762a1bSJed Brown   t20  = t19 * t18;
2027c4762a1bSJed Brown   t21  = t15 * t20;
2028c4762a1bSJed Brown   t22  = t12 * t21;
2029c4762a1bSJed Brown   t25  = nx * t6;
2030c4762a1bSJed Brown   t26  = t1 * 0.3141592654e1;
2031c4762a1bSJed Brown   t27  = t25 * t26;
2032c4762a1bSJed Brown   t28  = ZA * ZB;
2033c4762a1bSJed Brown   t29  = t18 * t15;
2034c4762a1bSJed Brown   t30  = t28 * t29;
2035c4762a1bSJed Brown   t33  = t25 * nz;
2036c4762a1bSJed Brown   t34  = t11 * t15;
2037c4762a1bSJed Brown   t35  = t19 * t19;
2038c4762a1bSJed Brown   t36  = t35 * t18;
2039c4762a1bSJed Brown   t40  = t25 * t1;
2040c4762a1bSJed Brown   t41  = 0.3141592654e1 * t11;
2041c4762a1bSJed Brown   t42  = t15 * t36;
2042c4762a1bSJed Brown   t43  = t41 * t42;
2043c4762a1bSJed Brown   t46  = nx * nx;
2044c4762a1bSJed Brown   t47  = t1 * t46;
2045c4762a1bSJed Brown   t48  = t47 * t11;
2046c4762a1bSJed Brown   t49  = t7 * xc;
2047c4762a1bSJed Brown   t50  = t35 * t15;
2048c4762a1bSJed Brown   t51  = t49 * t50;
2049c4762a1bSJed Brown   t55  = PetscSinReal(t4);
2050c4762a1bSJed Brown   t56  = t46 * nx * t55;
2051c4762a1bSJed Brown   t58  = t56 * nz * t7;
2052c4762a1bSJed Brown   t59  = ZB * ZB;
2053c4762a1bSJed Brown   t60  = t10 * t59;
2054c4762a1bSJed Brown   t61  = t15 * t14;
2055c4762a1bSJed Brown   t62  = t19 * t61;
2056c4762a1bSJed Brown   t63  = t60 * t62;
2057c4762a1bSJed Brown   t66  = t19 * t14;
2058c4762a1bSJed Brown   t67  = t60 * t66;
2059c4762a1bSJed Brown   t70  = t28 * t42;
2060c4762a1bSJed Brown   t73  = PetscCosReal(t5);
2061c4762a1bSJed Brown   t74  = t47 * t73;
2062c4762a1bSJed Brown   t75  = t7 * t11;
2063c4762a1bSJed Brown   t77  = t75 * t10 * t36;
2064c4762a1bSJed Brown   t80  = t73 * t46;
2065c4762a1bSJed Brown   t81  = t80 * nz;
2066c4762a1bSJed Brown   t82  = 0.3141592654e1 * t59;
2067c4762a1bSJed Brown   t83  = t82 * t42;
2068c4762a1bSJed Brown   t87  = xc * t11;
2069c4762a1bSJed Brown   t88  = t87 * t62;
2070c4762a1bSJed Brown   t91  = nz * nx;
2071c4762a1bSJed Brown   t92  = t55 * t61;
2072c4762a1bSJed Brown   t96  = nx * t55;
2073c4762a1bSJed Brown   t98  = t96 * t2 * t7;
2074c4762a1bSJed Brown   t101 = xc * t59;
2075c4762a1bSJed Brown   t102 = t101 * t62;
2076c4762a1bSJed Brown   t108 = t1 * t1;
2077c4762a1bSJed Brown   t109 = t108 * t7;
2078c4762a1bSJed Brown   t111 = t59 * t35;
2079c4762a1bSJed Brown   t112 = t111 * t15;
2080c4762a1bSJed Brown   t115 = t35 * t20;
2081c4762a1bSJed Brown   t123 = t1 * nx * t55;
2082c4762a1bSJed Brown   t124 = t61 * t35;
2083c4762a1bSJed Brown   t127 = t35 * t19;
2084c4762a1bSJed Brown   t128 = t61 * t127;
2085c4762a1bSJed Brown   t129 = t60 * t128;
2086c4762a1bSJed Brown   t132 = t56 * t16;
2087c4762a1bSJed Brown   t133 = t7 * t59;
2088c4762a1bSJed Brown   t134 = t133 * t124;
2089c4762a1bSJed 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;
2090c4762a1bSJed Brown   t139 = t56 * 0.3141592654e1;
2091c4762a1bSJed Brown   t140 = t111 * t14;
2092c4762a1bSJed Brown   t144 = t49 * t124;
2093c4762a1bSJed Brown   t147 = t91 * t55;
2094c4762a1bSJed Brown   t148 = t61 * ZA;
2095c4762a1bSJed Brown   t154 = ZA * t115 * xc * ZB;
2096c4762a1bSJed Brown   t157 = t7 * 0.3141592654e1;
2097c4762a1bSJed Brown   t159 = t96 * t108 * t157;
2098c4762a1bSJed Brown   t160 = t10 * xc;
2099c4762a1bSJed Brown   t161 = t160 * t59;
2100c4762a1bSJed Brown   t162 = t35 * t14;
2101c4762a1bSJed Brown   t163 = t161 * t162;
2102c4762a1bSJed Brown   t166 = t28 * t162;
2103c4762a1bSJed Brown   t169 = t80 * t13;
2104c4762a1bSJed Brown   t170 = t101 * t42;
2105c4762a1bSJed Brown   t173 = t2 * t11;
2106c4762a1bSJed Brown   t174 = t96 * t173;
2107c4762a1bSJed Brown   t175 = t7 * t10;
2108c4762a1bSJed Brown   t179 = t59 * t15;
2109c4762a1bSJed Brown   t184 = t15 * t15;
2110c4762a1bSJed 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;
2111c4762a1bSJed Brown   t194 = t173 * 0.3141592654e1;
2112c4762a1bSJed Brown   t195 = xc * t15;
2113c4762a1bSJed Brown   t196 = t195 * t19;
2114c4762a1bSJed Brown   t202 = t15 * t115;
2115c4762a1bSJed Brown   t203 = t28 * t202;
2116c4762a1bSJed Brown   t206 = t96 * t26;
2117c4762a1bSJed Brown   t207 = t14 * t127;
2118c4762a1bSJed Brown   t208 = t101 * t207;
2119c4762a1bSJed Brown   t211 = t12 * t128;
2120c4762a1bSJed Brown   t218 = t11 * t61;
2121c4762a1bSJed Brown   t219 = t218 * t35;
2122c4762a1bSJed Brown   t221 = t108 * ZA;
2123c4762a1bSJed Brown   t223 = t7 * ZB;
2124c4762a1bSJed Brown   t224 = t223 * t50;
2125c4762a1bSJed Brown   t227 = ZA * xc;
2126c4762a1bSJed Brown   t228 = ZB * t15;
2127c4762a1bSJed Brown   t229 = t228 * t36;
2128c4762a1bSJed Brown   t230 = t227 * t229;
2129c4762a1bSJed Brown   t233 = t87 * t207;
2130c4762a1bSJed Brown   t236 = t6 * t11;
2131c4762a1bSJed 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;
2132c4762a1bSJed Brown   t244 = t227 * t228 * t20;
2133c4762a1bSJed Brown   t252 = t184 * t18;
2134c4762a1bSJed Brown   t253 = t101 * t252;
2135c4762a1bSJed Brown   t256 = t35 * t35;
2136c4762a1bSJed Brown   t257 = t256 * t14;
2137c4762a1bSJed Brown   t258 = t28 * t257;
2138c4762a1bSJed Brown   t261 = t108 * t11;
2139c4762a1bSJed Brown   t263 = t7 * t35;
2140c4762a1bSJed Brown   t268 = ZB * t61 * t35;
2141c4762a1bSJed Brown   t273 = t96 * t108 * t160;
2142c4762a1bSJed Brown   t274 = t157 * ZB;
2143c4762a1bSJed Brown   t276 = t274 * t148 * t35;
2144c4762a1bSJed Brown   t279 = t101 * t21;
2145c4762a1bSJed Brown   t282 = 0.3141592654e1 * xc;
2146c4762a1bSJed Brown   t283 = t59 * t36;
2147c4762a1bSJed Brown   t284 = t282 * t283;
2148c4762a1bSJed 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;
2149c4762a1bSJed Brown   t290 = t1 * t11;
2150c4762a1bSJed Brown   t291 = t96 * t290;
2151c4762a1bSJed Brown   t297 = t59 * t61;
2152c4762a1bSJed Brown   t298 = t297 * t127;
2153c4762a1bSJed Brown   t300 = ZB * t36;
2154c4762a1bSJed Brown   t301 = t227 * t300;
2155c4762a1bSJed Brown   t304 = t1 * t59;
2156c4762a1bSJed Brown   t305 = t184 * t35;
2157c4762a1bSJed Brown   t310 = t46 * ZB;
2158c4762a1bSJed Brown   t311 = t184 * ZA;
2159c4762a1bSJed Brown   t312 = t310 * t311;
2160c4762a1bSJed Brown   t314 = t60 * t21;
2161c4762a1bSJed Brown   t317 = t1 * ZA;
2162c4762a1bSJed Brown   t318 = ZB * t35;
2163c4762a1bSJed Brown   t321 = t1 * t256;
2164c4762a1bSJed Brown   t324 = t96 * t261;
2165c4762a1bSJed Brown   t325 = t10 * t157;
2166c4762a1bSJed Brown   t326 = t325 * t124;
2167c4762a1bSJed 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;
2168c4762a1bSJed Brown   t331 = t28 * t124;
2169c4762a1bSJed Brown   t334 = 0.3141592654e1 * t15;
2170c4762a1bSJed Brown   t335 = t334 * t127;
2171c4762a1bSJed Brown   t338 = t35 * ZA;
2172c4762a1bSJed Brown   t341 = t46 * t256;
2173c4762a1bSJed Brown   t344 = t46 * t11;
2174c4762a1bSJed Brown   t346 = t46 * t59;
2175c4762a1bSJed Brown   t348 = t297 * t35;
2176c4762a1bSJed Brown   t351 = ZA * t10;
2177c4762a1bSJed Brown   t352 = t351 * t300;
2178c4762a1bSJed Brown   t355 = t1 * ZB;
2179c4762a1bSJed 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;
2180c4762a1bSJed Brown   t363 = t36 * t184;
2181c4762a1bSJed Brown   t364 = t87 * t363;
2182c4762a1bSJed Brown   t368 = t47 * t73 * t7;
2183c4762a1bSJed Brown   t373 = t160 * t157;
2184c4762a1bSJed Brown   t374 = t373 * t124;
2185c4762a1bSJed Brown   t377 = t311 * t35;
2186c4762a1bSJed Brown   t380 = t12 * t62;
2187c4762a1bSJed Brown   t386 = ZB * t10 * ZA * t15 * t20;
2188c4762a1bSJed Brown   t389 = t87 * t66;
2189c4762a1bSJed Brown   t393 = t56 * t1 * t10;
2190c4762a1bSJed 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;
2191c4762a1bSJed Brown   t412 = t11 * t14 * t127;
2192c4762a1bSJed Brown   t416 = t11 * t19;
2193c4762a1bSJed Brown   t417 = t416 * t61;
2194c4762a1bSJed Brown   t421 = t96 * t2 * ZA;
2195c4762a1bSJed Brown   t426 = t56 * nz * ZA;
2196c4762a1bSJed Brown   t427 = t318 * t14;
2197c4762a1bSJed Brown   t428 = t49 * t427;
2198c4762a1bSJed Brown   t431 = t82 * t29;
2199c4762a1bSJed Brown   t434 = t87 * t21;
2200c4762a1bSJed 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;
2201c4762a1bSJed Brown   t443 = t184 * t20;
2202c4762a1bSJed Brown   t447 = t61 * 0.3141592654e1;
2203c4762a1bSJed Brown   t448 = t447 * t11;
2204c4762a1bSJed Brown   t450 = t49 * t268;
2205c4762a1bSJed Brown   t453 = t60 * t42;
2206c4762a1bSJed Brown   t456 = t41 * t202;
2207c4762a1bSJed Brown   t463 = t101 * t443;
2208c4762a1bSJed Brown   t469 = t41 * xc * t20;
2209c4762a1bSJed 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;
2210c4762a1bSJed Brown   t482 = t108 * t10;
2211c4762a1bSJed Brown   t492 = nz * t46;
2212c4762a1bSJed Brown   t493 = t492 * t11;
2213c4762a1bSJed Brown   t495 = t282 * t19 * t184;
2214c4762a1bSJed Brown   t498 = t56 * t290;
2215c4762a1bSJed Brown   t499 = t325 * t162;
2216c4762a1bSJed Brown   t502 = t416 * t14;
2217c4762a1bSJed Brown   t504 = t60 * t207;
2218c4762a1bSJed 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;
2219c4762a1bSJed Brown   t508 = t101 * t162;
2220c4762a1bSJed Brown   t512 = t41 * t115 * xc;
2221c4762a1bSJed Brown   t515 = t87 * t42;
2222c4762a1bSJed Brown   t520 = ZB * t184;
2223c4762a1bSJed Brown   t522 = t227 * t520 * t18;
2224c4762a1bSJed Brown   t525 = t492 * t59;
2225c4762a1bSJed Brown   t528 = t6 * t59;
2226c4762a1bSJed Brown   t532 = t520 * t20;
2227c4762a1bSJed Brown   t533 = t351 * t532;
2228c4762a1bSJed Brown   t539 = t447 * t59;
2229c4762a1bSJed 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;
2230c4762a1bSJed Brown   t551 = t87 * t162;
2231c4762a1bSJed Brown   t554 = t351 * t229;
2232c4762a1bSJed Brown   t560 = t59 * t19;
2233c4762a1bSJed Brown   t561 = t560 * t14;
2234c4762a1bSJed Brown   t564 = t101 * t202;
2235c4762a1bSJed Brown   t567 = t87 * t252;
2236c4762a1bSJed Brown   t573 = t227 * t228 * t115;
2237c4762a1bSJed 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;
2238c4762a1bSJed Brown   t579 = t82 * t202;
2239c4762a1bSJed Brown   t591 = t282 * t115 * t59;
2240c4762a1bSJed Brown   t598 = t101 * t66;
2241c4762a1bSJed 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;
2242c4762a1bSJed Brown   t608 = t373 * t162;
2243c4762a1bSJed Brown   t611 = t59 * t184;
2244c4762a1bSJed Brown   t617 = t101 * t29;
2245c4762a1bSJed Brown   t624 = t227 * ZB * t18 * t15;
2246c4762a1bSJed Brown   t629 = t157 * t59;
2247c4762a1bSJed Brown   t630 = t629 * t124;
2248c4762a1bSJed Brown   t633 = t3 * t6;
2249c4762a1bSJed Brown   t634 = t175 * t283;
2250c4762a1bSJed 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;
2251c4762a1bSJed Brown   t645 = t41 * t29;
2252c4762a1bSJed Brown   t648 = t2 * 0.3141592654e1;
2253c4762a1bSJed Brown   t649 = t648 * xc;
2254c4762a1bSJed Brown   t650 = t560 * t184;
2255c4762a1bSJed Brown   t656 = t56 * t1 * t157;
2256c4762a1bSJed Brown   t659 = t87 * t128;
2257c4762a1bSJed Brown   t662 = t96 * t482;
2258c4762a1bSJed Brown   t663 = t629 * t162;
2259c4762a1bSJed Brown   t671 = t161 * t124;
2260c4762a1bSJed Brown   t674 = t218 * t127;
2261c4762a1bSJed 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;
2262c4762a1bSJed Brown   t714 = t334 * t19;
2263c4762a1bSJed Brown   t719 = t12 * t42;
2264c4762a1bSJed 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;
2265c4762a1bSJed Brown   t730 = xc * t19;
2266c4762a1bSJed Brown   t735 = t59 * t256 * t14;
2267c4762a1bSJed 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;
2268c4762a1bSJed Brown   t755 = t28 * t21;
2269c4762a1bSJed Brown   t759 = t274 * t338 * t14;
2270c4762a1bSJed Brown   t767 = t11 * t35;
2271c4762a1bSJed Brown   t768 = t767 * t14;
2272c4762a1bSJed Brown   t778 = t560 * t61;
2273c4762a1bSJed 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;
2274c4762a1bSJed Brown   t786 = t12 * t443;
2275c4762a1bSJed Brown   t790 = t282 * t59 * t20;
2276c4762a1bSJed Brown   t796 = t59 * t14 * t127;
2277c4762a1bSJed Brown   t806 = t41 * t21;
2278c4762a1bSJed 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;
2279c4762a1bSJed Brown   t819 = t282 * t15 * t127;
2280c4762a1bSJed Brown   t822 = t101 * t363;
2281c4762a1bSJed Brown   t830 = t11 * t256 * t14;
2282c4762a1bSJed Brown   t835 = t227 * t532;
2283c4762a1bSJed 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;
2284c4762a1bSJed Brown   t845 = t87 * t202;
2285c4762a1bSJed Brown   t854 = t338 * t15;
2286c4762a1bSJed Brown   t859 = t12 * t207;
2287c4762a1bSJed 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;
2288c4762a1bSJed Brown   t880 = t60 * t443;
2289c4762a1bSJed Brown   t891 = t101 * t128;
2290c4762a1bSJed 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;
2291c4762a1bSJed Brown   t903 = t179 * t19;
2292c4762a1bSJed Brown   t920 = t56 * t1 * t160;
2293c4762a1bSJed 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;
2294c4762a1bSJed Brown   t932 = t87 * t29;
2295c4762a1bSJed Brown   t945 = t82 * t21;
2296c4762a1bSJed 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;
2297c4762a1bSJed Brown   t971  = t282 * t127;
2298c4762a1bSJed 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;
2299c4762a1bSJed Brown   t997  = xc * t127;
2300c4762a1bSJed Brown   t998  = t997 * t59;
2301c4762a1bSJed 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;
2302c4762a1bSJed Brown   t1006 = t2 * t59;
2303c4762a1bSJed Brown   t1017 = xc * t35;
2304c4762a1bSJed 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;
2305c4762a1bSJed 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;
2306c4762a1bSJed Brown   t1070 = t15 * t19;
2307c4762a1bSJed 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;
2308c4762a1bSJed 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;
2309c4762a1bSJed Brown   t1119 = t321 * t46;
2310c4762a1bSJed Brown   t1122 = t157 * t11;
2311c4762a1bSJed Brown   t1123 = t1122 * t2;
2312c4762a1bSJed Brown   t1124 = t184 * t46;
2313c4762a1bSJed Brown   t1128 = t108 * nz;
2314c4762a1bSJed Brown   t1132 = t7 * t7;
2315c4762a1bSJed Brown   t1133 = t1132 * t11;
2316c4762a1bSJed Brown   t1134 = t1133 * t108;
2317c4762a1bSJed Brown   t1135 = t15 * t46;
2318c4762a1bSJed Brown   t1139 = t7 * ZA;
2319c4762a1bSJed Brown   t1140 = t1139 * ZB;
2320c4762a1bSJed Brown   t1141 = t1 * t35;
2321c4762a1bSJed Brown   t1145 = t629 * t2;
2322c4762a1bSJed Brown   t1146 = t1135 * t730;
2323c4762a1bSJed Brown   t1149 = t157 * t1128;
2324c4762a1bSJed Brown   t1150 = t1149 * xc;
2325c4762a1bSJed Brown   t1153 = t46 * xc;
2326c4762a1bSJed Brown   t1154 = t1153 * t127;
2327c4762a1bSJed Brown   t1158 = t184 * t1 * t46;
2328c4762a1bSJed Brown   t1161 = t46 * t46;
2329c4762a1bSJed Brown   t1162 = t35 * t1161;
2330c4762a1bSJed Brown   t1166 = t7 * t1;
2331c4762a1bSJed 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;
2332c4762a1bSJed Brown   t1171 = t1161 * t184;
2333c4762a1bSJed Brown   t1175 = t1122 * nz;
2334c4762a1bSJed Brown   t1176 = t15 * t1161;
2335c4762a1bSJed Brown   t1180 = t1132 * ZA;
2336c4762a1bSJed Brown   t1181 = t1180 * t355;
2337c4762a1bSJed Brown   t1182 = t1176 * t1017;
2338c4762a1bSJed Brown   t1185 = t1161 * xc;
2339c4762a1bSJed Brown   t1189 = t1133 * t1;
2340c4762a1bSJed Brown   t1192 = t108 * t1;
2341c4762a1bSJed Brown   t1193 = t1132 * t1192;
2342c4762a1bSJed Brown   t1195 = t10 * t35;
2343c4762a1bSJed Brown   t1199 = t157 * t15;
2344c4762a1bSJed Brown   t1203 = t1141 * t46;
2345c4762a1bSJed Brown   t1211 = t184 * t108;
2346c4762a1bSJed 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;
2347c4762a1bSJed Brown   t1221 = t256 * t1161;
2348c4762a1bSJed Brown   t1224 = t35 * t108;
2349c4762a1bSJed Brown   t1233 = t7 * t256;
2350c4762a1bSJed 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;
2351c4762a1bSJed Brown   t1240 = t1135 * t1195;
2352c4762a1bSJed Brown   t1252 = t629 * t127;
2353c4762a1bSJed Brown   t1263 = t1171 * ZA;
2354c4762a1bSJed 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;
2355c4762a1bSJed Brown   t1283 = t1199 * t19;
2356c4762a1bSJed Brown   t1287 = t1199 * t127;
2357c4762a1bSJed Brown   t1289 = t59 * nz * t1161;
2358c4762a1bSJed Brown   t1293 = t157 * nz * xc;
2359c4762a1bSJed Brown   t1304 = t1132 * t108;
2360c4762a1bSJed Brown   t1310 = t263 * ZB;
2361c4762a1bSJed Brown   t1316 = t2 * t15;
2362c4762a1bSJed 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;
2363c4762a1bSJed Brown   t1330 = t1132 * t15;
2364c4762a1bSJed Brown   t1336 = t1132 * t1;
2365c4762a1bSJed Brown   t1338 = t1162 * t179;
2366c4762a1bSJed 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;
2367c4762a1bSJed Brown   t1376 = t7 * t184;
2368c4762a1bSJed Brown   t1380 = t1176 * t1195;
2369c4762a1bSJed Brown   t1393 = t1330 * t35;
2370c4762a1bSJed 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;
2371c4762a1bSJed 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;
2372c4762a1bSJed 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);
2373c4762a1bSJed Brown   /****************************************************************************************/
2374c4762a1bSJed Brown   t1   = nz * nz;
2375c4762a1bSJed Brown   t2   = t1 * xc;
2376c4762a1bSJed Brown   t3   = ZB * ZB;
2377c4762a1bSJed Brown   t5   = t2 * 0.3141592654e1 * t3;
2378c4762a1bSJed Brown   t6   = nx * 0.3141592654e1;
2379c4762a1bSJed Brown   t7   = t6 * xc;
2380c4762a1bSJed Brown   t8   = PetscCosReal(t7);
2381c4762a1bSJed Brown   t9   = nx * nx;
2382c4762a1bSJed Brown   t10  = t8 * t9;
2383c4762a1bSJed Brown   t11  = nz * 0.3141592654e1;
2384c4762a1bSJed Brown   t12  = PetscExpReal(t11);
2385c4762a1bSJed Brown   t13  = t12 * t12;
2386c4762a1bSJed Brown   t16  = PetscExpReal(xc * nz * 0.3141592654e1);
2387c4762a1bSJed Brown   t17  = t16 * t16;
2388c4762a1bSJed Brown   t18  = t17 * t16;
2389c4762a1bSJed Brown   t19  = t17 * t17;
2390c4762a1bSJed Brown   t20  = t19 * t18;
2391c4762a1bSJed Brown   t21  = t13 * t20;
2392c4762a1bSJed Brown   t22  = t10 * t21;
2393c4762a1bSJed Brown   t25  = ZA * ZA;
2394c4762a1bSJed Brown   t26  = t1 * t25;
2395c4762a1bSJed Brown   t27  = xc * 0.3141592654e1;
2396c4762a1bSJed Brown   t28  = t26 * t27;
2397c4762a1bSJed Brown   t29  = t19 * t16;
2398c4762a1bSJed Brown   t30  = t13 * t13;
2399c4762a1bSJed Brown   t31  = t29 * t30;
2400c4762a1bSJed Brown   t35  = t9 * nx;
2401c4762a1bSJed Brown   t36  = t3 * t35;
2402c4762a1bSJed Brown   t37  = PetscSinReal(t6);
2403c4762a1bSJed Brown   t38  = t13 * t12;
2404c4762a1bSJed Brown   t39  = t37 * t38;
2405c4762a1bSJed Brown   t40  = t39 * t19;
2406c4762a1bSJed Brown   t42  = t1 * t1;
2407c4762a1bSJed Brown   t43  = nx * t42;
2408c4762a1bSJed Brown   t44  = xc * xc;
2409c4762a1bSJed Brown   t45  = t25 * t44;
2410c4762a1bSJed Brown   t46  = t43 * t45;
2411c4762a1bSJed Brown   t47  = 0.3141592654e1 * 0.3141592654e1;
2412c4762a1bSJed Brown   t48  = t47 * t37;
2413c4762a1bSJed Brown   t49  = t17 * t38;
2414c4762a1bSJed Brown   t54  = 0.3141592654e1 * t35;
2415c4762a1bSJed Brown   t55  = ZA * nz * t54;
2416c4762a1bSJed Brown   t56  = t37 * ZB;
2417c4762a1bSJed Brown   t57  = t19 * t12;
2418c4762a1bSJed Brown   t61  = t25 * t8;
2419c4762a1bSJed Brown   t62  = t61 * t9;
2420c4762a1bSJed Brown   t63  = nz * t30;
2421c4762a1bSJed Brown   t64  = t63 * t16;
2422c4762a1bSJed Brown   t67  = t1 * nz;
2423c4762a1bSJed Brown   t69  = t47 * ZB;
2424c4762a1bSJed Brown   t70  = t67 * t44 * t69;
2425c4762a1bSJed Brown   t75  = nx * t3;
2426c4762a1bSJed Brown   t76  = t75 * t37;
2427c4762a1bSJed Brown   t77  = t67 * 0.3141592654e1;
2428c4762a1bSJed Brown   t78  = t19 * t19;
2429c4762a1bSJed Brown   t79  = t78 * t12;
2430c4762a1bSJed Brown   t80  = t77 * t79;
2431c4762a1bSJed Brown   t82  = t3 * t38;
2432c4762a1bSJed Brown   t84  = t54 * t37;
2433c4762a1bSJed Brown   t87  = PetscSinReal(t7);
2434c4762a1bSJed Brown   t88  = t29 * t87;
2435c4762a1bSJed Brown   t89  = t47 * t44;
2436c4762a1bSJed Brown   t93  = nx * t25;
2437c4762a1bSJed Brown   t94  = t87 * t42;
2438c4762a1bSJed Brown   t95  = t93 * t94;
2439c4762a1bSJed Brown   t96  = t47 * xc;
2440c4762a1bSJed Brown   t97  = t13 * t29;
2441c4762a1bSJed Brown   t98  = t96 * t97;
2442c4762a1bSJed Brown   t101 = t87 * t67;
2443c4762a1bSJed Brown   t102 = t93 * t101;
2444c4762a1bSJed Brown   t103 = t13 * t18;
2445c4762a1bSJed Brown   t107 = t47 * t35;
2446c4762a1bSJed Brown   t108 = t26 * t107;
2447c4762a1bSJed Brown   t109 = t37 * t44;
2448c4762a1bSJed Brown   t110 = t19 * t17;
2449c4762a1bSJed Brown   t111 = t12 * t110;
2450c4762a1bSJed Brown   t116 = t37 * t19 * t12;
2451c4762a1bSJed Brown   t118 = t37 * xc;
2452c4762a1bSJed Brown   t119 = ZB * t19;
2453c4762a1bSJed Brown   t120 = t119 * t12;
2454c4762a1bSJed Brown   t121 = t118 * t120;
2455c4762a1bSJed Brown   t125 = xc * t3;
2456c4762a1bSJed Brown   t126 = t1 * t47 * t125;
2457c4762a1bSJed Brown   t127 = t35 * t37;
2458c4762a1bSJed Brown   t128 = t38 * t19;
2459c4762a1bSJed Brown   t129 = t127 * t128;
2460c4762a1bSJed Brown   t132 = t26 * 0.3141592654e1;
2461c4762a1bSJed Brown   t133 = t16 * t13;
2462c4762a1bSJed Brown   t134 = t10 * t133;
2463c4762a1bSJed Brown   t137 = 0.3141592654e1 * ZB;
2464c4762a1bSJed Brown   t138 = t2 * t137;
2465c4762a1bSJed Brown   t139 = ZA * t8;
2466c4762a1bSJed Brown   t140 = t9 * t13;
2467c4762a1bSJed Brown   t145 = t30 * t18;
2468c4762a1bSJed Brown   t146 = t10 * t145;
2469c4762a1bSJed Brown   t149 = t3 * t8;
2470c4762a1bSJed Brown   t150 = t149 * t9;
2471c4762a1bSJed 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;
2472c4762a1bSJed Brown   t154 = t42 * nz;
2473c4762a1bSJed Brown   t155 = nx * t154;
2474c4762a1bSJed Brown   t156 = t44 * xc;
2475c4762a1bSJed Brown   t157 = t47 * 0.3141592654e1;
2476c4762a1bSJed Brown   t158 = t156 * t157;
2477c4762a1bSJed Brown   t159 = t155 * t158;
2478c4762a1bSJed Brown   t162 = t56 * ZA * t19 * t12;
2479c4762a1bSJed Brown   t165 = t77 * t49;
2480c4762a1bSJed Brown   t167 = t1 * t3;
2481c4762a1bSJed Brown   t168 = t167 * t89;
2482c4762a1bSJed Brown   t169 = t127 * t49;
2483c4762a1bSJed Brown   t172 = t37 * t67;
2484c4762a1bSJed Brown   t173 = t75 * t172;
2485c4762a1bSJed Brown   t174 = t38 * t110;
2486c4762a1bSJed Brown   t175 = t27 * t174;
2487c4762a1bSJed Brown   t179 = t47 * t25;
2488c4762a1bSJed Brown   t181 = t10 * t97;
2489c4762a1bSJed Brown   t184 = t27 * t31;
2490c4762a1bSJed Brown   t187 = t67 * t47;
2491c4762a1bSJed Brown   t188 = t44 * t3;
2492c4762a1bSJed Brown   t189 = t187 * t188;
2493c4762a1bSJed Brown   t192 = t25 * t35;
2494c4762a1bSJed Brown   t193 = t37 * t17;
2495c4762a1bSJed Brown   t194 = t193 * t12;
2496c4762a1bSJed Brown   t196 = nx * ZA;
2497c4762a1bSJed Brown   t197 = t196 * t172;
2498c4762a1bSJed Brown   t198 = ZB * t38;
2499c4762a1bSJed Brown   t199 = t198 * t19;
2500c4762a1bSJed Brown   t204 = t1 * t12 * t110;
2501c4762a1bSJed Brown   t207 = nx * ZB;
2502c4762a1bSJed Brown   t209 = t1 * ZA;
2503c4762a1bSJed Brown   t215 = t67 * t3;
2504c4762a1bSJed Brown   t216 = t47 * t8;
2505c4762a1bSJed Brown   t217 = t215 * t216;
2506c4762a1bSJed Brown   t218 = t9 * xc;
2507c4762a1bSJed Brown   t222 = nx * t67;
2508c4762a1bSJed Brown   t223 = t222 * t27;
2509c4762a1bSJed Brown   t224 = t3 * t87;
2510c4762a1bSJed Brown   t228 = t167 * t107;
2511c4762a1bSJed Brown   t232 = t26 * t96;
2512c4762a1bSJed Brown   t235 = t207 * t94;
2513c4762a1bSJed Brown   t236 = t47 * ZA;
2514c4762a1bSJed Brown   t243 = xc * t13;
2515c4762a1bSJed Brown   t244 = t243 * t29;
2516c4762a1bSJed Brown   t248 = t25 * nz;
2517c4762a1bSJed Brown   t249 = t248 * 0.3141592654e1;
2518c4762a1bSJed Brown   t253 = ZB * ZA;
2519c4762a1bSJed Brown   t254 = t253 * t8;
2520c4762a1bSJed Brown   t255 = t9 * nz;
2521c4762a1bSJed Brown   t256 = t30 * t16;
2522c4762a1bSJed 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;
2523c4762a1bSJed Brown   t263 = t43 * t179;
2524c4762a1bSJed Brown   t267 = t3 * nz;
2525c4762a1bSJed Brown   t268 = t267 * t54;
2526c4762a1bSJed Brown   t269 = t118 * t57;
2527c4762a1bSJed Brown   t272 = t39 * t1;
2528c4762a1bSJed Brown   t274 = t67 * t25;
2529c4762a1bSJed Brown   t275 = t274 * t158;
2530c4762a1bSJed Brown   t278 = t75 * t87;
2531c4762a1bSJed Brown   t279 = t77 * t103;
2532c4762a1bSJed Brown   t282 = t25 * t38;
2533c4762a1bSJed Brown   t285 = ZA * t38;
2534c4762a1bSJed Brown   t290 = t267 * 0.3141592654e1;
2535c4762a1bSJed Brown   t296 = t77 * t111;
2536c4762a1bSJed Brown   t298 = t196 * t37;
2537c4762a1bSJed Brown   t299 = t1 * ZB;
2538c4762a1bSJed Brown   t303 = t37 * t42;
2539c4762a1bSJed Brown   t304 = t196 * t303;
2540c4762a1bSJed Brown   t308 = t77 * t57;
2541c4762a1bSJed Brown   t310 = t26 * t89;
2542c4762a1bSJed Brown   t313 = t77 * t128;
2543c4762a1bSJed Brown   t316 = t101 * t27;
2544c4762a1bSJed Brown   t319 = t93 * t87;
2545c4762a1bSJed Brown   t320 = t77 * t97;
2546c4762a1bSJed Brown   t323 = t127 * t57;
2547c4762a1bSJed Brown   t326 = t10 * nz;
2548c4762a1bSJed Brown   t329 = t118 * t174;
2549c4762a1bSJed 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;
2550c4762a1bSJed Brown   t335 = t75 * t101;
2551c4762a1bSJed Brown   t336 = t27 * t21;
2552c4762a1bSJed Brown   t342 = t77 * t133;
2553c4762a1bSJed Brown   t347 = t209 * t137;
2554c4762a1bSJed Brown   t350 = t9 * t1;
2555c4762a1bSJed Brown   t351 = t149 * t350;
2556c4762a1bSJed Brown   t355 = t37 * t78 * t12;
2557c4762a1bSJed Brown   t359 = t93 * t303;
2558c4762a1bSJed Brown   t367 = t172 * 0.3141592654e1;
2559c4762a1bSJed Brown   t369 = t96 * t103;
2560c4762a1bSJed Brown   t376 = t209 * t107;
2561c4762a1bSJed Brown   t379 = t10 * t103;
2562c4762a1bSJed Brown   t383 = t207 * t101;
2563c4762a1bSJed Brown   t389 = 0.3141592654e1 * ZA;
2564c4762a1bSJed Brown   t390 = t222 * t389;
2565c4762a1bSJed Brown   t391 = t87 * ZB;
2566c4762a1bSJed 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;
2567c4762a1bSJed Brown   t402 = t39 * t110;
2568c4762a1bSJed Brown   t404 = t193 * t38;
2569c4762a1bSJed Brown   t406 = t127 * t174;
2570c4762a1bSJed Brown   t408 = t167 * 0.3141592654e1;
2571c4762a1bSJed Brown   t411 = t44 * t157;
2572c4762a1bSJed Brown   t412 = t155 * t411;
2573c4762a1bSJed Brown   t413 = t285 * t19;
2574c4762a1bSJed Brown   t414 = t56 * t413;
2575c4762a1bSJed Brown   t417 = ZA * t30;
2576c4762a1bSJed Brown   t424 = t93 * t37;
2577c4762a1bSJed Brown   t426 = t248 * t54;
2578c4762a1bSJed Brown   t427 = t17 * t12;
2579c4762a1bSJed Brown   t428 = t118 * t427;
2580c4762a1bSJed Brown   t431 = t77 * t21;
2581c4762a1bSJed Brown   t438 = ZA * t13;
2582c4762a1bSJed Brown   t443 = t93 * t172;
2583c4762a1bSJed Brown   t444 = t27 * t427;
2584c4762a1bSJed Brown   t448 = t1 * t78 * t12;
2585c4762a1bSJed Brown   t455 = t274 * t89;
2586c4762a1bSJed Brown   t461 = t118 * t111;
2587c4762a1bSJed 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;
2588c4762a1bSJed Brown   t469 = nz * t16 * t13;
2589c4762a1bSJed Brown   t474 = t1 * t38;
2590c4762a1bSJed Brown   t475 = t474 * t19;
2591c4762a1bSJed Brown   t480 = t89 * t103;
2592c4762a1bSJed Brown   t483 = t67 * ZA;
2593c4762a1bSJed Brown   t484 = t483 * t411;
2594c4762a1bSJed Brown   t485 = t127 * t120;
2595c4762a1bSJed Brown   t488 = t127 * t111;
2596c4762a1bSJed Brown   t497 = t77 * t427;
2597c4762a1bSJed Brown   t502 = t27 * t97;
2598c4762a1bSJed Brown   t508 = t1 * t19 * t12;
2599c4762a1bSJed Brown   t511 = t155 * t25 * t156;
2600c4762a1bSJed Brown   t512 = t157 * t37;
2601c4762a1bSJed Brown   t513 = t512 * t128;
2602c4762a1bSJed Brown   t527 = t1 * t17;
2603c4762a1bSJed Brown   t528 = t527 * t38;
2604c4762a1bSJed 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;
2605c4762a1bSJed Brown   t535 = t44 * t13;
2606c4762a1bSJed Brown   t542 = t527 * t12;
2607c4762a1bSJed Brown   t544 = nz * t13;
2608c4762a1bSJed Brown   t545 = t544 * t20;
2609c4762a1bSJed Brown   t548 = t75 * t303;
2610c4762a1bSJed Brown   t549 = t96 * t111;
2611c4762a1bSJed Brown   t552 = ZA * t35;
2612c4762a1bSJed Brown   t553 = t552 * t37;
2613c4762a1bSJed Brown   t562 = t43 * t96;
2614c4762a1bSJed Brown   t563 = t3 * t37;
2615c4762a1bSJed Brown   t564 = t563 * t128;
2616c4762a1bSJed Brown   t579 = t474 * t110;
2617c4762a1bSJed Brown   t590 = t9 * t30;
2618c4762a1bSJed Brown   t591 = t590 * t18;
2619c4762a1bSJed Brown   t595 = t127 * t427;
2620c4762a1bSJed Brown   t598 = t77 * t174;
2621c4762a1bSJed 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;
2622c4762a1bSJed Brown   t601 = t27 * t49;
2623c4762a1bSJed Brown   t604 = t127 * t79;
2624c4762a1bSJed Brown   t606 = ZB * t29;
2625c4762a1bSJed Brown   t616 = t139 * t140 * t18;
2626c4762a1bSJed Brown   t638 = t10 * t256;
2627c4762a1bSJed Brown   t643 = t118 * t199;
2628c4762a1bSJed Brown   t653 = t544 * t29;
2629c4762a1bSJed Brown   t658 = t3 * t29;
2630c4762a1bSJed Brown   t660 = t350 * t27;
2631c4762a1bSJed 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;
2632c4762a1bSJed Brown   t670 = t274 * t411;
2633c4762a1bSJed Brown   t673 = t118 * t49;
2634c4762a1bSJed Brown   t694 = t155 * t45;
2635c4762a1bSJed Brown   t713 = nz * t29 * t30;
2636c4762a1bSJed Brown   t717 = t20 * t87;
2637c4762a1bSJed Brown   t723 = t512 * t57;
2638c4762a1bSJed 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;
2639c4762a1bSJed Brown   t734 = t43 * t89;
2640c4762a1bSJed Brown   t735 = t563 * t427;
2641c4762a1bSJed Brown   t740 = t75 * t94;
2642c4762a1bSJed Brown   t744 = ZB * xc;
2643c4762a1bSJed Brown   t750 = t563 * t57;
2644c4762a1bSJed Brown   t754 = t218 * t103;
2645c4762a1bSJed Brown   t771 = t127 * t199;
2646c4762a1bSJed Brown   t776 = t89 * t174;
2647c4762a1bSJed 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;
2648c4762a1bSJed Brown   t794 = t483 * t158;
2649c4762a1bSJed Brown   t801 = t2 * 0.3141592654e1;
2650c4762a1bSJed Brown   t818 = t215 * t411;
2651c4762a1bSJed Brown   t827 = t96 * t174;
2652c4762a1bSJed Brown   t837 = t37 * t12 * t110;
2653c4762a1bSJed 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;
2654c4762a1bSJed Brown   t864 = t544 * t18;
2655c4762a1bSJed Brown   t867 = t3 * t18;
2656c4762a1bSJed Brown   t884 = t27 * t256;
2657c4762a1bSJed Brown   t891 = t187 * t744;
2658c4762a1bSJed Brown   t894 = t563 * t49;
2659c4762a1bSJed 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;
2660c4762a1bSJed Brown   t904 = t27 * t111;
2661c4762a1bSJed Brown   t907 = t118 * t128;
2662c4762a1bSJed Brown   t915 = t89 * t145;
2663c4762a1bSJed Brown   t947 = t139 * t140 * t29;
2664c4762a1bSJed 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;
2665c4762a1bSJed Brown   t969  = t67 * t157 * t156 * t3;
2666c4762a1bSJed Brown   t974  = t27 * t133;
2667c4762a1bSJed 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;
2668c4762a1bSJed Brown   t1042 = t89 * t97;
2669c4762a1bSJed 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;
2670c4762a1bSJed 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;
2671c4762a1bSJed Brown   t1103 = t42 * t1 * t157;
2672c4762a1bSJed Brown   t1104 = t1103 * t25;
2673c4762a1bSJed Brown   t1108 = t3 * t19;
2674c4762a1bSJed Brown   t1112 = nz * t47;
2675c4762a1bSJed Brown   t1113 = t9 * t9;
2676c4762a1bSJed Brown   t1118 = t42 * t157;
2677c4762a1bSJed Brown   t1119 = t1118 * t9;
2678c4762a1bSJed Brown   t1120 = t25 * xc;
2679c4762a1bSJed Brown   t1121 = t13 * t110;
2680c4762a1bSJed Brown   t1122 = t1120 * t1121;
2681c4762a1bSJed Brown   t1125 = t47 * t47;
2682c4762a1bSJed Brown   t1126 = t67 * t1125;
2683c4762a1bSJed Brown   t1127 = t1113 * ZA;
2684c4762a1bSJed Brown   t1128 = t1126 * t1127;
2685c4762a1bSJed Brown   t1129 = t19 * t13;
2686c4762a1bSJed Brown   t1130 = t744 * t1129;
2687c4762a1bSJed Brown   t1133 = t154 * t1125;
2688c4762a1bSJed Brown   t1134 = t1133 * t9;
2689c4762a1bSJed Brown   t1135 = t45 * t1129;
2690c4762a1bSJed Brown   t1138 = t154 * t47;
2691c4762a1bSJed Brown   t1139 = t25 * t30;
2692c4762a1bSJed Brown   t1142 = t1126 * t1113;
2693c4762a1bSJed Brown   t1145 = t125 * t1129;
2694c4762a1bSJed Brown   t1148 = t1103 * xc;
2695c4762a1bSJed Brown   t1149 = t3 * t13;
2696c4762a1bSJed Brown   t1150 = t1149 * t17;
2697c4762a1bSJed Brown   t1153 = t25 * t78;
2698c4762a1bSJed 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;
2699c4762a1bSJed Brown   t1157 = t25 * t13;
2700c4762a1bSJed Brown   t1158 = t1157 * t17;
2701c4762a1bSJed Brown   t1161 = t13 * t17;
2702c4762a1bSJed Brown   t1162 = t1120 * t1161;
2703c4762a1bSJed Brown   t1165 = t3 * t78;
2704c4762a1bSJed Brown   t1170 = t42 * t67 * t1125;
2705c4762a1bSJed Brown   t1172 = t1108 * t13;
2706c4762a1bSJed Brown   t1175 = t1 * t157;
2707c4762a1bSJed Brown   t1176 = t1175 * t1113;
2708c4762a1bSJed Brown   t1182 = t1120 * t1129;
2709c4762a1bSJed Brown   t1189 = t110 * t9 * xc;
2710c4762a1bSJed Brown   t1192 = t1149 * t110;
2711c4762a1bSJed 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;
2712c4762a1bSJed Brown   t1209 = t17 * t30;
2713c4762a1bSJed Brown   t1210 = t125 * t1209;
2714c4762a1bSJed Brown   t1213 = t1138 * ZA;
2715c4762a1bSJed Brown   t1214 = ZB * t30;
2716c4762a1bSJed Brown   t1218 = t1157 * t110;
2717c4762a1bSJed Brown   t1226 = t3 * t30;
2718c4762a1bSJed Brown   t1237 = t1170 * t25;
2719c4762a1bSJed 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;
2720c4762a1bSJed Brown   t1251 = t125 * t1121;
2721c4762a1bSJed Brown   t1260 = t1120 * t1209;
2722c4762a1bSJed Brown   t1263 = t1139 * t19;
2723c4762a1bSJed 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;
2724c4762a1bSJed Brown   t1287 = t188 * t1129;
2725c4762a1bSJed Brown   t1292 = t25 * t19;
2726c4762a1bSJed Brown   t1296 = t187 * t9;
2727c4762a1bSJed Brown   t1297 = t1226 * t19;
2728c4762a1bSJed Brown   t1311 = t1112 * t1113;
2729c4762a1bSJed 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;
2730c4762a1bSJed Brown   t1320 = t253 * t1129;
2731c4762a1bSJed Brown   t1328 = t253 * t30 * t19;
2732c4762a1bSJed Brown   t1333 = t125 * t1161;
2733c4762a1bSJed Brown   t1343 = ZB * t44 * t1129;
2734c4762a1bSJed 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;
2735c4762a1bSJed Brown   t1369 = t1133 * t9 * ZA;
2736c4762a1bSJed Brown   t1378 = t187 * ZA;
2737c4762a1bSJed Brown   t1383 = t1170 * ZA;
2738c4762a1bSJed 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;
2739c4762a1bSJed 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;
2740c4762a1bSJed Brown 
2741c4762a1bSJed 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);
2742c4762a1bSJed Brown   /****************************************************************************************/
2743c4762a1bSJed Brown   /****************************************************************************************/
2744c4762a1bSJed Brown 
2745c4762a1bSJed Brown   if (x > xc) {
27469371c9d4SSatish Balay     _PC1 = _PC1B;
27479371c9d4SSatish Balay     _PC2 = _PC2B;
27489371c9d4SSatish Balay     _PC3 = _PC3B;
27499371c9d4SSatish Balay     _PC4 = _PC4B;
27509371c9d4SSatish Balay     Z    = ZB;
27519371c9d4SSatish Balay   } else {
27529371c9d4SSatish Balay     _PC1 = _PC1A;
27539371c9d4SSatish Balay     _PC2 = _PC2A;
27549371c9d4SSatish Balay     _PC3 = _PC3A;
27559371c9d4SSatish Balay     _PC4 = _PC4A;
27569371c9d4SSatish Balay     Z    = ZA;
2757c4762a1bSJed Brown   }
2758c4762a1bSJed Brown   /****************************************************************************************/
2759c4762a1bSJed Brown   /****************************************************************************************/
2760c4762a1bSJed Brown   t1  = nz * nz;
2761c4762a1bSJed Brown   t2  = t1 * t1;
2762c4762a1bSJed Brown   t3  = t2 * nz;
2763c4762a1bSJed Brown   t4  = x * t3;
2764c4762a1bSJed Brown   t5  = 0.3141592654e1 * 0.3141592654e1;
2765c4762a1bSJed Brown   t6  = t5 * 0.3141592654e1;
2766c4762a1bSJed Brown   t11 = _PC3 * t6;
2767c4762a1bSJed Brown   t12 = x * nz;
2768c4762a1bSJed Brown   t13 = nx * nx;
2769c4762a1bSJed Brown   t14 = t13 * t13;
2770c4762a1bSJed Brown   t15 = t12 * t14;
2771c4762a1bSJed Brown   t19 = PetscExpReal(t12 * 0.3141592654e1);
2772c4762a1bSJed Brown   t20 = t19 * t19;
2773c4762a1bSJed Brown   t21 = t4 * t20;
2774c4762a1bSJed Brown   t24 = _PC1 * t5;
2775c4762a1bSJed Brown   t25 = Z * t20;
2776c4762a1bSJed Brown   t29 = _PC1 * t6;
2777c4762a1bSJed Brown   t30 = t29 * Z;
2778c4762a1bSJed Brown   t31 = t1 * nz;
2779c4762a1bSJed Brown   t32 = x * t31;
2780c4762a1bSJed Brown   t33 = t32 * t13;
2781c4762a1bSJed Brown   t36 = t11 * x;
2782c4762a1bSJed Brown   t41 = nz * t20;
2783c4762a1bSJed Brown   t45 = t6 * _PC4;
2784c4762a1bSJed Brown   t49 = t20 * t1;
2785c4762a1bSJed Brown   t51 = _PC2 * Z;
2786c4762a1bSJed 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;
2787c4762a1bSJed Brown   t58 = t32 * t6;
2788c4762a1bSJed Brown   t59 = _PC4 * t20;
2789c4762a1bSJed Brown   t63 = t20 * t13;
2790c4762a1bSJed Brown   t67 = t12 * t6;
2791c4762a1bSJed Brown   t68 = t20 * t14;
2792c4762a1bSJed Brown   t87 = t49 * t13;
2793c4762a1bSJed 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;
2794c4762a1bSJed Brown   t106 = _PC3 * t5;
2795c4762a1bSJed 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;
2796c4762a1bSJed Brown   t129 = PetscSinReal(nx * 0.3141592654e1 * x);
2797c4762a1bSJed 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;
2798c4762a1bSJed Brown   t158 = t5 * Z;
2799c4762a1bSJed Brown 
2800c4762a1bSJed Brown   u1 = (t55 + t90 + t120 + t155) / (0.4e1 * t158 * t19 * t2 + 0.8e1 * t158 * t19 * t1 * t13 + 0.4e1 * t158 * t19 * t14);
2801c4762a1bSJed Brown   /****************************************************************************************/
2802c4762a1bSJed Brown   /****************************************************************************************/
2803c4762a1bSJed Brown   t1  = nz * nz;
2804c4762a1bSJed Brown   t2  = t1 * nz;
2805c4762a1bSJed Brown   t3  = x * t2;
2806c4762a1bSJed Brown   t4  = 0.3141592654e1 * 0.3141592654e1;
2807c4762a1bSJed Brown   t5  = t4 * 0.3141592654e1;
2808c4762a1bSJed Brown   t6  = t3 * t5;
2809c4762a1bSJed Brown   t7  = _PC2 * Z;
2810c4762a1bSJed Brown   t8  = nx * nx;
2811c4762a1bSJed Brown   t12 = t1 * t1;
2812c4762a1bSJed Brown   t13 = t12 * nz;
2813c4762a1bSJed Brown   t14 = x * t13;
2814c4762a1bSJed Brown   t15 = t5 * _PC4;
2815c4762a1bSJed Brown   t16 = x * nz;
2816c4762a1bSJed Brown   t18 = PetscExpReal(t16 * 0.3141592654e1);
2817c4762a1bSJed Brown   t19 = t18 * t18;
2818c4762a1bSJed Brown   t23 = t16 * t5;
2819c4762a1bSJed Brown   t24 = t8 * t8;
2820c4762a1bSJed Brown   t28 = _PC3 * t5;
2821c4762a1bSJed Brown   t29 = t14 * t19;
2822c4762a1bSJed Brown   t32 = _PC1 * t5;
2823c4762a1bSJed Brown   t33 = t32 * Z;
2824c4762a1bSJed Brown   t34 = t16 * t24;
2825c4762a1bSJed Brown   t37 = _PC4 * t19;
2826c4762a1bSJed Brown   t45 = _PC2 * t4;
2827c4762a1bSJed Brown   t53 = t19 * t8;
2828c4762a1bSJed Brown   t58 = _PC4 * t4;
2829c4762a1bSJed Brown   t60 = t1 * t19 * t8;
2830c4762a1bSJed Brown   t63 = t19 * t24;
2831c4762a1bSJed Brown   t67 = t3 * t8;
2832c4762a1bSJed Brown   t73 = nz * t19;
2833c4762a1bSJed Brown   t86 = t28 * x;
2834c4762a1bSJed 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;
2835c4762a1bSJed Brown   t94 = Z * t12;
2836c4762a1bSJed 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;
2837c4762a1bSJed Brown   t146 = PetscCosReal(nx * 0.3141592654e1 * x);
2838c4762a1bSJed 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;
2839c4762a1bSJed Brown   t159 = t4 * Z;
2840c4762a1bSJed Brown 
2841c4762a1bSJed 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);
2842c4762a1bSJed Brown   /****************************************************************************************/
2843c4762a1bSJed Brown   /****************************************************************************************/
2844c4762a1bSJed Brown   t1  = 0.3141592654e1 * 0.3141592654e1;
2845c4762a1bSJed Brown   t2  = t1 * 0.3141592654e1;
2846c4762a1bSJed Brown   t3  = _PC1 * t2;
2847c4762a1bSJed Brown   t4  = t3 * Z;
2848c4762a1bSJed Brown   t5  = nz * nz;
2849c4762a1bSJed Brown   t6  = t5 * t5;
2850c4762a1bSJed Brown   t7  = t6 * nz;
2851c4762a1bSJed Brown   t8  = x * t7;
2852c4762a1bSJed Brown   t9  = x * nz;
2853c4762a1bSJed Brown   t11 = PetscExpReal(t9 * 0.3141592654e1);
2854c4762a1bSJed Brown   t12 = t11 * t11;
2855c4762a1bSJed Brown   t13 = t8 * t12;
2856c4762a1bSJed Brown   t16 = t5 * nz;
2857c4762a1bSJed Brown   t17 = x * t16;
2858c4762a1bSJed Brown   t18 = t17 * t2;
2859c4762a1bSJed Brown   t19 = _PC4 * t12;
2860c4762a1bSJed Brown   t20 = nx * nx;
2861c4762a1bSJed Brown   t24 = t2 * _PC4;
2862c4762a1bSJed Brown   t28 = _PC3 * t2;
2863c4762a1bSJed Brown   t29 = t28 * x;
2864c4762a1bSJed Brown   t30 = t12 * nz;
2865c4762a1bSJed Brown   t31 = t20 * t20;
2866c4762a1bSJed Brown   t40 = _PC2 * Z;
2867c4762a1bSJed Brown   t44 = t9 * t2;
2868c4762a1bSJed Brown   t48 = t12 * t20;
2869c4762a1bSJed Brown   t52 = t17 * t20;
2870c4762a1bSJed 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;
2871c4762a1bSJed Brown   t58 = t9 * t31;
2872c4762a1bSJed Brown   t61 = _PC3 * t1;
2873c4762a1bSJed Brown   t62 = t12 * t31;
2874c4762a1bSJed Brown   t73 = t5 * t20;
2875c4762a1bSJed Brown   t78 = _PC1 * t1;
2876c4762a1bSJed Brown   t90 = Z * t12;
2877c4762a1bSJed 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;
2878c4762a1bSJed Brown   t101 = PetscCosReal(nx * 0.3141592654e1 * x);
2879c4762a1bSJed Brown   t102 = t11 * t101;
2880c4762a1bSJed Brown   t109 = t12 * t5;
2881c4762a1bSJed Brown   t110 = t109 * t20;
2882c4762a1bSJed 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;
2883c4762a1bSJed 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;
2884c4762a1bSJed Brown   t159 = t1 * t11;
2885c4762a1bSJed Brown 
2886c4762a1bSJed Brown   u3 = (t57 + t94 + t128 + t156) / (0.4e1 * t159 * t6 + 0.8e1 * t159 * t73 + 0.4e1 * t159 * t31);
2887c4762a1bSJed Brown   /****************************************************************************************/
2888c4762a1bSJed Brown   /****************************************************************************************/
2889c4762a1bSJed Brown   t1  = _PC2 * Z;
2890c4762a1bSJed Brown   t2  = 0.3141592654e1 * 0.3141592654e1;
2891c4762a1bSJed Brown   t3  = t2 * 0.3141592654e1;
2892c4762a1bSJed Brown   t4  = nz * nz;
2893c4762a1bSJed Brown   t5  = t4 * t4;
2894c4762a1bSJed Brown   t6  = t5 * t4;
2895c4762a1bSJed Brown   t8  = t3 * t6 * x;
2896c4762a1bSJed Brown   t11 = x * t4;
2897c4762a1bSJed Brown   t12 = t11 * t3;
2898c4762a1bSJed Brown   t15 = PetscExpReal(x * nz * 0.3141592654e1);
2899c4762a1bSJed Brown   t16 = t15 * t15;
2900c4762a1bSJed Brown   t17 = _PC3 * t16;
2901c4762a1bSJed Brown   t18 = nx * nx;
2902c4762a1bSJed Brown   t19 = t18 * t18;
2903c4762a1bSJed Brown   t23 = t5 * nz;
2904c4762a1bSJed Brown   t24 = t2 * t23;
2905c4762a1bSJed Brown   t28 = t1 * t3;
2906c4762a1bSJed Brown   t29 = t6 * x;
2907c4762a1bSJed Brown   t30 = t29 * t16;
2908c4762a1bSJed Brown   t33 = _PC4 * t3;
2909c4762a1bSJed Brown   t34 = t5 * x;
2910c4762a1bSJed Brown   t35 = t34 * t18;
2911c4762a1bSJed Brown   t41 = PetscSinReal(nx * 0.3141592654e1 * x);
2912c4762a1bSJed Brown   t47 = t11 * t19;
2913c4762a1bSJed Brown   t54 = t3 * _PC3;
2914c4762a1bSJed 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;
2915c4762a1bSJed Brown   t58 = 0.3141592654e1 * t16;
2916c4762a1bSJed Brown   t60 = t2 * _PC4;
2917c4762a1bSJed Brown   t69 = t4 * nz;
2918c4762a1bSJed Brown   t73 = t1 * t2;
2919c4762a1bSJed Brown   t75 = t69 * t16 * t18;
2920c4762a1bSJed Brown   t79 = x * t16;
2921c4762a1bSJed Brown   t83 = nz * t16;
2922c4762a1bSJed Brown   t84 = t83 * t19;
2923c4762a1bSJed 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;
2924c4762a1bSJed Brown   t97  = t34 * t3;
2925c4762a1bSJed Brown   t101 = Z * _PC1;
2926c4762a1bSJed Brown   t102 = t16 * t19;
2927c4762a1bSJed Brown   t106 = t16 * t18;
2928c4762a1bSJed Brown   t127 = t2 * t69;
2929c4762a1bSJed Brown   t131 = t2 * nz;
2930c4762a1bSJed 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;
2931c4762a1bSJed 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;
2932c4762a1bSJed Brown 
2933c4762a1bSJed Brown   u4 = (t57 + t95 + t135 + t164) / (0.4e1 * t24 * t15 + 0.8e1 * t127 * t15 * t18 + 0.4e1 * t131 * t15 * t19);
2934c4762a1bSJed Brown 
2935c4762a1bSJed Brown   /****************************************************************************************/
2936c4762a1bSJed Brown   /****************************************************************************************/
2937c4762a1bSJed Brown 
2938300f1712SStefano Zampini   u5 = (-2 * Z * nz * PETSC_PI * u2 - u3 * 2 * nz * PETSC_PI) * PetscCosReal(nz * PETSC_PI * z); /* pressure */
2939c4762a1bSJed Brown 
2940300f1712SStefano Zampini   u6 = (u3 * 2 * nz * PETSC_PI + 4 * Z * nz * PETSC_PI * u2) * PetscCosReal(nz * PETSC_PI * z); /* zz stress */
2941c4762a1bSJed Brown   sum5 += u5;
2942c4762a1bSJed Brown   sum6 += u6;
2943c4762a1bSJed Brown 
2944c4762a1bSJed Brown   u1 *= PetscCosReal(nz * PETSC_PI * z); /* x velocity */
2945c4762a1bSJed Brown   sum1 += u1;
2946c4762a1bSJed Brown   u2 *= PetscSinReal(nz * PETSC_PI * z); /* z velocity */
2947c4762a1bSJed Brown   sum2 += u2;
2948c4762a1bSJed Brown   u3 *= 2 * nz * PETSC_PI * PetscCosReal(nz * PETSC_PI * z); /* xx stress */
2949c4762a1bSJed Brown   sum3 += u3;
2950c4762a1bSJed Brown   u4 *= 2 * nz * PETSC_PI * PetscSinReal(nz * PETSC_PI * z); /* zx stress */
2951c4762a1bSJed Brown   sum4 += u4;
2952c4762a1bSJed Brown 
2953c4762a1bSJed Brown   /* Output */
2954ad540459SPierre Jolivet   if (mu) *mu = Z;
2955c4762a1bSJed Brown   if (vel) {
2956c4762a1bSJed Brown     vel[0] = sum1;
2957c4762a1bSJed Brown     vel[1] = sum2;
2958c4762a1bSJed Brown   }
2959ad540459SPierre Jolivet   if (p) (*p) = sum5;
2960c4762a1bSJed Brown   if (s) {
2961c4762a1bSJed Brown     s[0] = sum3;
2962c4762a1bSJed Brown     s[1] = sum4;
2963c4762a1bSJed Brown     s[2] = sum6;
2964c4762a1bSJed Brown   }
2965c4762a1bSJed Brown   if (gamma) {
2966c4762a1bSJed Brown     /* sigma = tau - p, tau = sigma + p, tau[] = 2*eta*gamma[] */
2967c4762a1bSJed Brown     gamma[0] = (sum3 + sum5) / (2.0 * Z);
2968c4762a1bSJed Brown     gamma[1] = (sum4) / (2.0 * Z);
2969c4762a1bSJed Brown     gamma[2] = (sum6 + sum5) / (2.0 * Z);
2970c4762a1bSJed Brown   }
29713ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
2972c4762a1bSJed Brown }
2973c4762a1bSJed Brown 
SolCxSolutionVelocity(PetscInt dim,PetscReal time,const PetscReal x[],PetscInt Nf,PetscScalar v[],PetscCtx ctx)2974*2a8381b2SBarry Smith static PetscErrorCode SolCxSolutionVelocity(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt Nf, PetscScalar v[], PetscCtx 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, v, NULL, NULL, NULL, NULL));
29803ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
2981c4762a1bSJed Brown }
2982c4762a1bSJed Brown 
SolCxSolutionPressure(PetscInt dim,PetscReal time,const PetscReal x[],PetscInt Nf,PetscScalar p[],PetscCtx ctx)2983*2a8381b2SBarry Smith static PetscErrorCode SolCxSolutionPressure(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt Nf, PetscScalar p[], PetscCtx ctx)
2984d71ae5a4SJacob Faibussowitsch {
2985c4762a1bSJed Brown   Parameter *s = (Parameter *)ctx;
2986c4762a1bSJed Brown 
2987c4762a1bSJed Brown   PetscFunctionBegin;
29889566063dSJacob Faibussowitsch   PetscCall(SolCxSolution(x, s->m, s->n, s->xc, s->etaA, s->etaB, NULL, p, NULL, NULL, NULL));
29893ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
2990c4762a1bSJed Brown }
2991c4762a1bSJed Brown 
ProcessOptions(MPI_Comm comm,AppCtx * options)2992d71ae5a4SJacob Faibussowitsch static PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
2993d71ae5a4SJacob Faibussowitsch {
2994c4762a1bSJed Brown   PetscInt sol;
2995c4762a1bSJed Brown 
2996c4762a1bSJed Brown   PetscFunctionBeginUser;
2997c4762a1bSJed Brown   options->solType = SOLKX;
2998d0609cedSBarry Smith   PetscOptionsBegin(comm, "", "Variable-Viscosity Stokes Problem Options", "DMPLEX");
2999c4762a1bSJed Brown   sol = options->solType;
30009566063dSJacob Faibussowitsch   PetscCall(PetscOptionsEList("-sol_type", "Type of exact solution", "ex69.c", solTypes, NUM_SOL_TYPES, solTypes[options->solType], &sol, NULL));
3001c4762a1bSJed Brown   options->solType = (SolutionType)sol;
3002d0609cedSBarry Smith   PetscOptionsEnd();
30033ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
3004c4762a1bSJed Brown }
3005c4762a1bSJed Brown 
SetUpParameters(AppCtx * user)3006d71ae5a4SJacob Faibussowitsch static PetscErrorCode SetUpParameters(AppCtx *user)
3007d71ae5a4SJacob Faibussowitsch {
3008c4762a1bSJed Brown   PetscBag   bag;
3009c4762a1bSJed Brown   Parameter *p;
3010c4762a1bSJed Brown 
3011c4762a1bSJed Brown   PetscFunctionBeginUser;
3012c4762a1bSJed Brown   /* setup PETSc parameter bag */
3013*2a8381b2SBarry Smith   PetscCall(PetscBagGetData(user->bag, &p));
30149566063dSJacob Faibussowitsch   PetscCall(PetscBagSetName(user->bag, "par", "Problem parameters"));
3015c4762a1bSJed Brown   bag = user->bag;
3016c4762a1bSJed Brown   switch (user->solType) {
3017c4762a1bSJed Brown   case SOLKX:
30189566063dSJacob Faibussowitsch     PetscCall(PetscBagRegisterInt(bag, &p->n, 1, "n", "x-wavelength for forcing variation"));
30199566063dSJacob Faibussowitsch     PetscCall(PetscBagRegisterInt(bag, &p->m, 1, "m", "z-wavelength for forcing variation"));
30209566063dSJacob Faibussowitsch     PetscCall(PetscBagRegisterReal(bag, &p->B, 1.0, "B", "Exponential scale for viscosity variation"));
3021c4762a1bSJed Brown     break;
3022c4762a1bSJed Brown   case SOLCX:
30235307ee71SStefano Zampini   case SOLZERO:
30249566063dSJacob Faibussowitsch     PetscCall(PetscBagRegisterInt(bag, &p->n, 1, "n", "x-wavelength for forcing variation"));
30259566063dSJacob Faibussowitsch     PetscCall(PetscBagRegisterInt(bag, &p->m, 1, "m", "z-wavelength for forcing variation"));
30269566063dSJacob Faibussowitsch     PetscCall(PetscBagRegisterReal(bag, &p->etaA, 1.0, "etaA", "Viscosity for x < xc"));
30279566063dSJacob Faibussowitsch     PetscCall(PetscBagRegisterReal(bag, &p->etaB, 1.0, "etaB", "Viscosity for x > xc"));
30289566063dSJacob Faibussowitsch     PetscCall(PetscBagRegisterReal(bag, &p->xc, 0.5, "xc", "x-coordinate of the viscosity jump"));
3029c4762a1bSJed Brown     break;
3030d71ae5a4SJacob Faibussowitsch   default:
3031d71ae5a4SJacob Faibussowitsch     SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_ARG_OUTOFRANGE, "Invalid solution type %d (%s)", user->solType, solTypes[PetscMin(user->solType, NUM_SOL_TYPES)]);
3032c4762a1bSJed Brown   }
30339566063dSJacob Faibussowitsch   PetscCall(PetscBagSetFromOptions(bag));
30349566063dSJacob Faibussowitsch   PetscCall(PetscBagViewFromOptions(bag, NULL, "-param_view"));
30353ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
3036c4762a1bSJed Brown }
3037c4762a1bSJed Brown 
3038c4762a1bSJed Brown /* Make split labels so that we can have corners in multiple labels */
CreateSplitLabels(DM dm)3039d71ae5a4SJacob Faibussowitsch static PetscErrorCode CreateSplitLabels(DM dm)
3040d71ae5a4SJacob Faibussowitsch {
3041c4762a1bSJed Brown   const char *names[4] = {"markerBottom", "markerRight", "markerTop", "markerLeft"};
3042c4762a1bSJed Brown   PetscInt    ids[4]   = {1, 2, 3, 4};
3043c4762a1bSJed Brown   DMLabel     label;
3044c4762a1bSJed Brown   IS          is;
3045c4762a1bSJed Brown   PetscInt    f;
3046c4762a1bSJed Brown 
304730602db0SMatthew G. Knepley   PetscFunctionBeginUser;
3048c4762a1bSJed Brown   for (f = 0; f < 4; ++f) {
30499566063dSJacob Faibussowitsch     PetscCall(DMCreateLabel(dm, names[f]));
30509566063dSJacob Faibussowitsch     PetscCall(DMGetStratumIS(dm, "marker", ids[f], &is));
3051c4762a1bSJed Brown     if (!is) continue;
30529566063dSJacob Faibussowitsch     PetscCall(DMGetLabel(dm, names[f], &label));
30539566063dSJacob Faibussowitsch     PetscCall(DMLabelInsertIS(label, is, 1));
30549566063dSJacob Faibussowitsch     PetscCall(ISDestroy(&is));
3055c4762a1bSJed Brown   }
30563ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
3057c4762a1bSJed Brown }
305830602db0SMatthew G. Knepley 
CreateMesh(MPI_Comm comm,AppCtx * user,DM * dm)3059d71ae5a4SJacob Faibussowitsch static PetscErrorCode CreateMesh(MPI_Comm comm, AppCtx *user, DM *dm)
3060d71ae5a4SJacob Faibussowitsch {
306130602db0SMatthew G. Knepley   DM cdm;
306230602db0SMatthew G. Knepley 
306330602db0SMatthew G. Knepley   PetscFunctionBeginUser;
30649566063dSJacob Faibussowitsch   PetscCall(DMCreate(comm, dm));
30659566063dSJacob Faibussowitsch   PetscCall(DMSetType(*dm, DMPLEX));
30669566063dSJacob Faibussowitsch   PetscCall(DMSetFromOptions(*dm));
306730602db0SMatthew G. Knepley   cdm = *dm;
306830602db0SMatthew G. Knepley   while (cdm) {
30699566063dSJacob Faibussowitsch     PetscCall(CreateSplitLabels(cdm));
30709566063dSJacob Faibussowitsch     PetscCall(DMGetCoarseDM(cdm, &cdm));
307130602db0SMatthew G. Knepley   }
30729566063dSJacob Faibussowitsch   PetscCall(DMViewFromOptions(*dm, NULL, "-dm_view"));
30733ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
3074c4762a1bSJed Brown }
3075c4762a1bSJed Brown 
SetupProblem(DM dm,AppCtx * user)3076d71ae5a4SJacob Faibussowitsch static PetscErrorCode SetupProblem(DM dm, AppCtx *user)
3077d71ae5a4SJacob Faibussowitsch {
3078*2a8381b2SBarry Smith   PetscErrorCode (*exactFunc)(PetscInt dim, PetscReal t, const PetscReal x[], PetscInt Nf, PetscScalar *u, PetscCtx ctx);
3079c4762a1bSJed Brown   PetscDS        prob;
308045480ffeSMatthew G. Knepley   DMLabel        label;
3081c4762a1bSJed Brown   const PetscInt id = 1;
3082478db826SMatthew G. Knepley   PetscInt       dim, comp;
3083c4762a1bSJed Brown   Parameter     *ctx;
3084348a1646SMatthew G. Knepley   void          *data;
3085c4762a1bSJed Brown 
3086c4762a1bSJed Brown   PetscFunctionBeginUser;
30879566063dSJacob Faibussowitsch   PetscCall(DMGetDimension(dm, &dim));
30889566063dSJacob Faibussowitsch   PetscCall(DMGetDS(dm, &prob));
3089c4762a1bSJed Brown   switch (user->solType) {
3090c4762a1bSJed Brown   case SOLKX:
30919566063dSJacob Faibussowitsch     PetscCall(PetscDSSetResidual(prob, 0, f0_u, stokes_momentum_kx));
30929566063dSJacob Faibussowitsch     PetscCall(PetscDSSetResidual(prob, 1, stokes_mass, f1_zero));
30939566063dSJacob Faibussowitsch     PetscCall(PetscDSSetJacobian(prob, 0, 0, NULL, NULL, NULL, stokes_momentum_vel_J_kx));
30949566063dSJacob Faibussowitsch     PetscCall(PetscDSSetJacobian(prob, 0, 1, NULL, NULL, stokes_momentum_pres_J, NULL));
30959566063dSJacob Faibussowitsch     PetscCall(PetscDSSetJacobian(prob, 1, 0, NULL, stokes_mass_J, NULL, NULL));
30969566063dSJacob Faibussowitsch     PetscCall(PetscDSSetJacobianPreconditioner(prob, 0, 0, NULL, NULL, NULL, stokes_momentum_vel_J_kx));
30979566063dSJacob Faibussowitsch     PetscCall(PetscDSSetJacobianPreconditioner(prob, 1, 1, stokes_identity_J_kx, NULL, NULL, NULL));
3098c4762a1bSJed Brown     break;
3099c4762a1bSJed Brown   case SOLCX:
31009566063dSJacob Faibussowitsch     PetscCall(PetscDSSetResidual(prob, 0, f0_u, stokes_momentum_cx));
31019566063dSJacob Faibussowitsch     PetscCall(PetscDSSetResidual(prob, 1, stokes_mass, f1_zero));
31029566063dSJacob Faibussowitsch     PetscCall(PetscDSSetJacobian(prob, 0, 0, NULL, NULL, NULL, stokes_momentum_vel_J_cx));
31039566063dSJacob Faibussowitsch     PetscCall(PetscDSSetJacobian(prob, 0, 1, NULL, NULL, stokes_momentum_pres_J, NULL));
31049566063dSJacob Faibussowitsch     PetscCall(PetscDSSetJacobian(prob, 1, 0, NULL, stokes_mass_J, NULL, NULL));
3105fc0d7e87SMatthew G. Knepley     PetscCall(PetscDSSetJacobianPreconditioner(prob, 0, 0, NULL, NULL, NULL, stokes_momentum_vel_J_cx));
31069566063dSJacob Faibussowitsch     PetscCall(PetscDSSetJacobianPreconditioner(prob, 1, 1, stokes_identity_J_cx, NULL, NULL, NULL));
3107c4762a1bSJed Brown     break;
31085307ee71SStefano Zampini   case SOLZERO:
31095307ee71SStefano Zampini     PetscCall(PetscDSSetResidual(prob, 0, f0_zero, stokes_momentum_cx));
31105307ee71SStefano Zampini     PetscCall(PetscDSSetResidual(prob, 1, stokes_mass, f1_zero));
31115307ee71SStefano Zampini     PetscCall(PetscDSSetJacobian(prob, 0, 0, NULL, NULL, NULL, stokes_momentum_vel_J_cx));
31125307ee71SStefano Zampini     PetscCall(PetscDSSetJacobian(prob, 0, 1, NULL, NULL, stokes_momentum_pres_J, NULL));
31135307ee71SStefano Zampini     PetscCall(PetscDSSetJacobian(prob, 1, 0, NULL, stokes_mass_J, NULL, NULL));
31145307ee71SStefano Zampini     PetscCall(PetscDSSetJacobianPreconditioner(prob, 0, 0, NULL, NULL, NULL, stokes_momentum_vel_J_cx));
31155307ee71SStefano Zampini     PetscCall(PetscDSSetJacobianPreconditioner(prob, 1, 1, stokes_identity_J_cx, NULL, NULL, NULL));
31165307ee71SStefano Zampini     break;
3117d71ae5a4SJacob Faibussowitsch   default:
3118d71ae5a4SJacob Faibussowitsch     SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_ARG_OUTOFRANGE, "Invalid solution type %d (%s)", user->solType, solTypes[PetscMin(user->solType, NUM_SOL_TYPES)]);
3119c4762a1bSJed Brown   }
31209566063dSJacob Faibussowitsch   PetscCall(PetscBagGetData(user->bag, &data));
3121478db826SMatthew G. Knepley   switch (dim) {
3122c4762a1bSJed Brown   case 2:
3123c4762a1bSJed Brown     switch (user->solType) {
3124c4762a1bSJed Brown     case SOLKX:
31259566063dSJacob Faibussowitsch       PetscCall(PetscDSSetExactSolution(prob, 0, SolKxSolutionVelocity, data));
31269566063dSJacob Faibussowitsch       PetscCall(PetscDSSetExactSolution(prob, 1, SolKxSolutionPressure, data));
3127c4762a1bSJed Brown       break;
3128c4762a1bSJed Brown     case SOLCX:
31299566063dSJacob Faibussowitsch       PetscCall(PetscDSSetExactSolution(prob, 0, SolCxSolutionVelocity, data));
31309566063dSJacob Faibussowitsch       PetscCall(PetscDSSetExactSolution(prob, 1, SolCxSolutionPressure, data));
3131c4762a1bSJed Brown       break;
31325307ee71SStefano Zampini     case SOLZERO:
31335307ee71SStefano Zampini       PetscCall(PetscDSSetExactSolution(prob, 0, zero, NULL));
31345307ee71SStefano Zampini       PetscCall(PetscDSSetExactSolution(prob, 1, zero, NULL));
31355307ee71SStefano Zampini       break;
3136d71ae5a4SJacob Faibussowitsch     default:
3137d71ae5a4SJacob Faibussowitsch       SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_ARG_OUTOFRANGE, "Invalid solution type %d (%s)", user->solType, solTypes[PetscMin(user->solType, NUM_SOL_TYPES)]);
3138c4762a1bSJed Brown     }
3139c4762a1bSJed Brown     break;
3140d71ae5a4SJacob Faibussowitsch   default:
3141d71ae5a4SJacob Faibussowitsch     SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_ARG_OUTOFRANGE, "Invalid dimension %" PetscInt_FMT, dim);
3142c4762a1bSJed Brown   }
3143c4762a1bSJed Brown   /* Setup constants */
3144c4762a1bSJed Brown   {
3145c4762a1bSJed Brown     Parameter *param;
3146c4762a1bSJed Brown 
3147*2a8381b2SBarry Smith     PetscCall(PetscBagGetData(user->bag, &param));
3148c4762a1bSJed Brown     switch (user->solType) {
31499371c9d4SSatish Balay     case SOLKX: {
3150c4762a1bSJed Brown       PetscScalar constants[3];
3151c4762a1bSJed Brown 
3152c4762a1bSJed Brown       constants[0] = param->m;
3153c4762a1bSJed Brown       constants[1] = param->n;
3154c4762a1bSJed Brown       constants[2] = param->B;
31559566063dSJacob Faibussowitsch       PetscCall(PetscDSSetConstants(prob, 3, constants));
31569371c9d4SSatish Balay     } break;
31575307ee71SStefano Zampini     case SOLZERO:
31589371c9d4SSatish Balay     case SOLCX: {
3159c4762a1bSJed Brown       PetscScalar constants[5];
3160c4762a1bSJed Brown 
3161c4762a1bSJed Brown       constants[0] = param->m;
3162c4762a1bSJed Brown       constants[1] = param->n;
3163c4762a1bSJed Brown       constants[2] = param->etaA;
3164c4762a1bSJed Brown       constants[3] = param->etaB;
3165c4762a1bSJed Brown       constants[4] = param->xc;
31669566063dSJacob Faibussowitsch       PetscCall(PetscDSSetConstants(prob, 5, constants));
31679371c9d4SSatish Balay     } break;
3168d71ae5a4SJacob Faibussowitsch     default:
3169d71ae5a4SJacob Faibussowitsch       SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_SUP, "No parameter information for solution type %d", user->solType);
3170c4762a1bSJed Brown     }
3171c4762a1bSJed Brown   }
3172c4762a1bSJed Brown   /* Setup Boundary Conditions */
31739566063dSJacob Faibussowitsch   PetscCall(PetscDSGetExactSolution(prob, 0, &exactFunc, (void **)&ctx));
31745307ee71SStefano Zampini   if (user->solType == SOLZERO) {
31755307ee71SStefano Zampini     PetscCall(DMGetLabel(dm, "markerBottom", &label));
317657d50842SBarry Smith     PetscCall(DMAddBoundary(dm, DM_BC_ESSENTIAL, "wallB", label, 1, &id, 0, 0, NULL, (PetscVoidFn *)exactFunc, NULL, ctx, NULL));
31775307ee71SStefano Zampini     PetscCall(DMGetLabel(dm, "markerTop", &label));
317857d50842SBarry Smith     PetscCall(DMAddBoundary(dm, DM_BC_ESSENTIAL, "wallT", label, 1, &id, 0, 0, NULL, (PetscVoidFn *)exactFunc, NULL, ctx, NULL));
31795307ee71SStefano Zampini   } else {
3180c4762a1bSJed Brown     comp = 1;
31819566063dSJacob Faibussowitsch     PetscCall(DMGetLabel(dm, "markerBottom", &label));
318257d50842SBarry Smith     PetscCall(DMAddBoundary(dm, DM_BC_ESSENTIAL, "wallB", label, 1, &id, 0, 1, &comp, (PetscVoidFn *)exactFunc, NULL, ctx, NULL));
3183c4762a1bSJed Brown     comp = 0;
31849566063dSJacob Faibussowitsch     PetscCall(DMGetLabel(dm, "markerRight", &label));
318557d50842SBarry Smith     PetscCall(DMAddBoundary(dm, DM_BC_ESSENTIAL, "wallR", label, 1, &id, 0, 1, &comp, (PetscVoidFn *)exactFunc, NULL, ctx, NULL));
3186c4762a1bSJed Brown     comp = 1;
31879566063dSJacob Faibussowitsch     PetscCall(DMGetLabel(dm, "markerTop", &label));
318857d50842SBarry Smith     PetscCall(DMAddBoundary(dm, DM_BC_ESSENTIAL, "wallT", label, 1, &id, 0, 1, &comp, (PetscVoidFn *)exactFunc, NULL, ctx, NULL));
3189c4762a1bSJed Brown     comp = 0;
31909566063dSJacob Faibussowitsch     PetscCall(DMGetLabel(dm, "markerLeft", &label));
319157d50842SBarry Smith     PetscCall(DMAddBoundary(dm, DM_BC_ESSENTIAL, "wallL", label, 1, &id, 0, 1, &comp, (PetscVoidFn *)exactFunc, NULL, ctx, NULL));
31925307ee71SStefano Zampini   }
31933ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
3194c4762a1bSJed Brown }
3195c4762a1bSJed Brown 
CreatePressureNullSpace(DM dm,PetscInt origField,PetscInt field,MatNullSpace * nullspace)3196d71ae5a4SJacob Faibussowitsch static PetscErrorCode CreatePressureNullSpace(DM dm, PetscInt origField, PetscInt field, MatNullSpace *nullspace)
3197d71ae5a4SJacob Faibussowitsch {
3198478db826SMatthew G. Knepley   Vec vec;
3199*2a8381b2SBarry Smith   PetscErrorCode (*funcs[2])(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt Nf, PetscScalar *u, PetscCtx ctx) = {zero, one};
3200c4762a1bSJed Brown 
3201c4762a1bSJed Brown   PetscFunctionBeginUser;
320263a3b9bcSJacob Faibussowitsch   PetscCheck(origField == 1, PetscObjectComm((PetscObject)dm), PETSC_ERR_ARG_WRONG, "Field %" PetscInt_FMT " should be 1 for pressure", origField);
3203478db826SMatthew G. Knepley   funcs[field] = one;
3204478db826SMatthew G. Knepley   {
3205478db826SMatthew G. Knepley     PetscDS ds;
32069566063dSJacob Faibussowitsch     PetscCall(DMGetDS(dm, &ds));
32079566063dSJacob Faibussowitsch     PetscCall(PetscObjectViewFromOptions((PetscObject)ds, NULL, "-ds_view"));
3208478db826SMatthew G. Knepley   }
32099566063dSJacob Faibussowitsch   PetscCall(DMCreateGlobalVector(dm, &vec));
32109566063dSJacob Faibussowitsch   PetscCall(DMProjectFunction(dm, 0.0, funcs, NULL, INSERT_ALL_VALUES, vec));
32119566063dSJacob Faibussowitsch   PetscCall(VecNormalize(vec, NULL));
32129566063dSJacob Faibussowitsch   PetscCall(MatNullSpaceCreate(PetscObjectComm((PetscObject)dm), PETSC_FALSE, 1, &vec, nullspace));
32139566063dSJacob Faibussowitsch   PetscCall(VecDestroy(&vec));
3214478db826SMatthew G. Knepley   /* New style for field null spaces */
3215478db826SMatthew G. Knepley   {
3216478db826SMatthew G. Knepley     PetscObject  pressure;
3217478db826SMatthew G. Knepley     MatNullSpace nullspacePres;
3218478db826SMatthew G. Knepley 
32199566063dSJacob Faibussowitsch     PetscCall(DMGetField(dm, field, NULL, &pressure));
32209566063dSJacob Faibussowitsch     PetscCall(MatNullSpaceCreate(PetscObjectComm(pressure), PETSC_TRUE, 0, NULL, &nullspacePres));
32219566063dSJacob Faibussowitsch     PetscCall(PetscObjectCompose(pressure, "nullspace", (PetscObject)nullspacePres));
32229566063dSJacob Faibussowitsch     PetscCall(MatNullSpaceDestroy(&nullspacePres));
3223478db826SMatthew G. Knepley   }
32243ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
3225478db826SMatthew G. Knepley }
3226478db826SMatthew G. Knepley 
SetupDiscretization(DM dm,AppCtx * user)3227d71ae5a4SJacob Faibussowitsch static PetscErrorCode SetupDiscretization(DM dm, AppCtx *user)
3228d71ae5a4SJacob Faibussowitsch {
3229478db826SMatthew G. Knepley   DM             cdm = dm;
3230478db826SMatthew G. Knepley   PetscFE        fe[2];
3231478db826SMatthew G. Knepley   DMPolytopeType ct;
3232478db826SMatthew G. Knepley   PetscInt       dim, cStart;
3233478db826SMatthew G. Knepley   PetscBool      simplex;
3234478db826SMatthew G. Knepley 
3235478db826SMatthew G. Knepley   PetscFunctionBeginUser;
32369566063dSJacob Faibussowitsch   PetscCall(DMGetDimension(dm, &dim));
32379566063dSJacob Faibussowitsch   PetscCall(DMPlexGetHeightStratum(dm, 0, &cStart, NULL));
32389566063dSJacob Faibussowitsch   PetscCall(DMPlexGetCellType(dm, cStart, &ct));
3239478db826SMatthew G. Knepley   simplex = DMPolytopeTypeGetNumVertices(ct) == DMPolytopeTypeGetDim(ct) + 1 ? PETSC_TRUE : PETSC_FALSE;
3240c4762a1bSJed Brown   /* Create discretization of solution fields */
32419566063dSJacob Faibussowitsch   PetscCall(PetscFECreateDefault(PETSC_COMM_SELF, dim, dim, simplex, "vel_", PETSC_DEFAULT, &fe[0]));
32429566063dSJacob Faibussowitsch   PetscCall(PetscObjectSetName((PetscObject)fe[0], "velocity"));
32439566063dSJacob Faibussowitsch   PetscCall(PetscFECreateDefault(PETSC_COMM_SELF, dim, 1, simplex, "pres_", PETSC_DEFAULT, &fe[1]));
32449566063dSJacob Faibussowitsch   PetscCall(PetscFECopyQuadrature(fe[0], fe[1]));
32459566063dSJacob Faibussowitsch   PetscCall(PetscObjectSetName((PetscObject)fe[1], "pressure"));
3246c4762a1bSJed Brown   /* Set discretization and boundary conditions for each mesh */
32479566063dSJacob Faibussowitsch   PetscCall(DMSetField(dm, 0, NULL, (PetscObject)fe[0]));
32489566063dSJacob Faibussowitsch   PetscCall(DMSetField(dm, 1, NULL, (PetscObject)fe[1]));
32499566063dSJacob Faibussowitsch   PetscCall(DMCreateDS(dm));
32509566063dSJacob Faibussowitsch   PetscCall(SetupProblem(dm, user));
3251c4762a1bSJed Brown   while (cdm) {
32529566063dSJacob Faibussowitsch     PetscCall(DMCopyDisc(dm, cdm));
32535307ee71SStefano Zampini     if (user->solType != SOLZERO) PetscCall(DMSetNullSpaceConstructor(cdm, 1, CreatePressureNullSpace));
32549566063dSJacob Faibussowitsch     PetscCall(DMGetCoarseDM(cdm, &cdm));
3255c4762a1bSJed Brown   }
32569566063dSJacob Faibussowitsch   PetscCall(PetscFEDestroy(&fe[0]));
32579566063dSJacob Faibussowitsch   PetscCall(PetscFEDestroy(&fe[1]));
32585307ee71SStefano Zampini   if (user->solType != SOLZERO) {
3259c4762a1bSJed Brown     PetscObject  pressure;
3260c4762a1bSJed Brown     MatNullSpace nullSpacePres;
3261c4762a1bSJed Brown 
32629566063dSJacob Faibussowitsch     PetscCall(DMGetField(dm, 1, NULL, &pressure));
32639566063dSJacob Faibussowitsch     PetscCall(MatNullSpaceCreate(PetscObjectComm(pressure), PETSC_TRUE, 0, NULL, &nullSpacePres));
32649566063dSJacob Faibussowitsch     PetscCall(PetscObjectCompose(pressure, "nullspace", (PetscObject)nullSpacePres));
32659566063dSJacob Faibussowitsch     PetscCall(MatNullSpaceDestroy(&nullSpacePres));
3266c4762a1bSJed Brown   }
32673ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
3268c4762a1bSJed Brown }
3269c4762a1bSJed Brown 
3270478db826SMatthew G. Knepley /* Add a vector in the nullspace to make the continuum integral 0.
3271478db826SMatthew G. Knepley 
3272478db826SMatthew G. Knepley    If int(u) = a and int(n) = b, then int(u - a/b n) = a - a/b b = 0
3273478db826SMatthew G. Knepley */
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[])3274d71ae5a4SJacob 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[])
3275d71ae5a4SJacob Faibussowitsch {
3276478db826SMatthew G. Knepley   p[0] = u[uOff[1]];
3277478db826SMatthew G. Knepley }
32785307ee71SStefano Zampini 
CorrectDiscretePressure(DM dm,MatNullSpace nullspace,Vec u,AppCtx * user)3279d71ae5a4SJacob Faibussowitsch static PetscErrorCode CorrectDiscretePressure(DM dm, MatNullSpace nullspace, Vec u, AppCtx *user)
3280d71ae5a4SJacob Faibussowitsch {
3281478db826SMatthew G. Knepley   PetscDS     ds;
3282478db826SMatthew G. Knepley   const Vec  *nullvecs;
3283478db826SMatthew G. Knepley   PetscScalar pintd, intc[2], intn[2];
3284478db826SMatthew G. Knepley   MPI_Comm    comm;
3285c4762a1bSJed Brown 
3286c4762a1bSJed Brown   PetscFunctionBeginUser;
32879566063dSJacob Faibussowitsch   PetscCall(PetscObjectGetComm((PetscObject)dm, &comm));
32889566063dSJacob Faibussowitsch   PetscCall(DMGetDS(dm, &ds));
32899566063dSJacob Faibussowitsch   PetscCall(PetscDSSetObjective(ds, 1, pressure));
32909566063dSJacob Faibussowitsch   PetscCall(MatNullSpaceGetVecs(nullspace, NULL, NULL, &nullvecs));
32919566063dSJacob Faibussowitsch   PetscCall(VecDot(nullvecs[0], u, &pintd));
3292e00437b9SBarry Smith   PetscCheck(PetscAbsScalar(pintd) <= PETSC_SMALL, comm, PETSC_ERR_ARG_WRONG, "Discrete integral of pressure: %g", (double)PetscRealPart(pintd));
32939566063dSJacob Faibussowitsch   PetscCall(DMPlexComputeIntegralFEM(dm, nullvecs[0], intn, user));
32949566063dSJacob Faibussowitsch   PetscCall(DMPlexComputeIntegralFEM(dm, u, intc, user));
32959566063dSJacob Faibussowitsch   PetscCall(VecAXPY(u, -intc[1] / intn[1], nullvecs[0]));
32969566063dSJacob Faibussowitsch   PetscCall(DMPlexComputeIntegralFEM(dm, u, intc, user));
3297e00437b9SBarry Smith   PetscCheck(PetscAbsScalar(intc[1]) <= PETSC_SMALL, comm, PETSC_ERR_ARG_WRONG, "Continuum integral of pressure after correction: %g", (double)PetscRealPart(intc[1]));
32983ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
3299478db826SMatthew G. Knepley }
3300478db826SMatthew G. Knepley 
SNESConvergenceCorrectPressure(SNES snes,PetscInt it,PetscReal xnorm,PetscReal gnorm,PetscReal f,SNESConvergedReason * reason,PetscCtx ctx)3301*2a8381b2SBarry Smith static PetscErrorCode SNESConvergenceCorrectPressure(SNES snes, PetscInt it, PetscReal xnorm, PetscReal gnorm, PetscReal f, SNESConvergedReason *reason, PetscCtx ctx)
3302d71ae5a4SJacob Faibussowitsch {
33035307ee71SStefano Zampini   AppCtx *user = (AppCtx *)ctx;
33045307ee71SStefano Zampini 
3305478db826SMatthew G. Knepley   PetscFunctionBeginUser;
33065307ee71SStefano Zampini   PetscCall(SNESConvergedDefault(snes, it, xnorm, gnorm, f, reason, NULL));
3307478db826SMatthew G. Knepley   if (*reason > 0) {
3308478db826SMatthew G. Knepley     DM           dm;
3309478db826SMatthew G. Knepley     Mat          J;
3310478db826SMatthew G. Knepley     Vec          u;
3311478db826SMatthew G. Knepley     MatNullSpace nullspace;
3312478db826SMatthew G. Knepley 
33139566063dSJacob Faibussowitsch     PetscCall(SNESGetDM(snes, &dm));
33149566063dSJacob Faibussowitsch     PetscCall(SNESGetSolution(snes, &u));
33159566063dSJacob Faibussowitsch     PetscCall(SNESGetJacobian(snes, &J, NULL, NULL, NULL));
33169566063dSJacob Faibussowitsch     PetscCall(MatGetNullSpace(J, &nullspace));
33175307ee71SStefano Zampini     PetscCheck(user->solType == SOLZERO || nullspace, PetscObjectComm((PetscObject)snes), PETSC_ERR_ARG_WRONG, "SNES Jacobian has no attached null space");
33185307ee71SStefano Zampini     if (nullspace) PetscCall(CorrectDiscretePressure(dm, nullspace, u, user));
3319478db826SMatthew G. Knepley   }
33203ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
3321c4762a1bSJed Brown }
3322c4762a1bSJed Brown 
main(int argc,char ** argv)3323d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv)
3324d71ae5a4SJacob Faibussowitsch {
3325c4762a1bSJed Brown   SNES         snes;             /* nonlinear solver */
3326c4762a1bSJed Brown   DM           dm;               /* problem definition */
3327c4762a1bSJed Brown   Vec          u, r;             /* solution, residual vectors */
3328478db826SMatthew G. Knepley   Mat          J, M;             /* Jacobian and preconditiong matrix */
33295307ee71SStefano Zampini   MatNullSpace nullSpace = NULL; /* May be necessary for pressure */
3330c4762a1bSJed Brown   AppCtx       user;             /* user-defined work context */
3331*2a8381b2SBarry Smith   PetscErrorCode (*initialGuess[2])(PetscInt dim, PetscReal time, const PetscReal x[], PetscInt Nf, PetscScalar *u, PetscCtx ctx) = {zero, zero};
3332c4762a1bSJed Brown 
3333327415f7SBarry Smith   PetscFunctionBeginUser;
33349566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
33359566063dSJacob Faibussowitsch   PetscCall(ProcessOptions(PETSC_COMM_WORLD, &user));
33369566063dSJacob Faibussowitsch   PetscCall(SNESCreate(PETSC_COMM_WORLD, &snes));
33379566063dSJacob Faibussowitsch   PetscCall(CreateMesh(PETSC_COMM_WORLD, &user, &dm));
33389566063dSJacob Faibussowitsch   PetscCall(SNESSetDM(snes, dm));
33399566063dSJacob Faibussowitsch   PetscCall(DMSetApplicationContext(dm, &user));
3340c4762a1bSJed Brown   /* Setup problem parameters */
33419566063dSJacob Faibussowitsch   PetscCall(PetscBagCreate(PETSC_COMM_WORLD, sizeof(Parameter), &user.bag));
33429566063dSJacob Faibussowitsch   PetscCall(SetUpParameters(&user));
3343c4762a1bSJed Brown   /* Setup problem */
33449566063dSJacob Faibussowitsch   PetscCall(SetupDiscretization(dm, &user));
33459566063dSJacob Faibussowitsch   PetscCall(DMPlexCreateClosureIndex(dm, NULL));
3346c4762a1bSJed Brown 
33479566063dSJacob Faibussowitsch   PetscCall(DMCreateGlobalVector(dm, &u));
33489566063dSJacob Faibussowitsch   PetscCall(VecDuplicate(u, &r));
3349c4762a1bSJed Brown 
33506493148fSStefano Zampini   PetscCall(DMPlexSetSNESLocalFEM(dm, PETSC_FALSE, &user));
33515307ee71SStefano Zampini   if (user.solType != SOLZERO) PetscCall(CreatePressureNullSpace(dm, 1, 1, &nullSpace));
3352c4762a1bSJed Brown 
3353c4762a1bSJed Brown   { /* set tolerances */
3354c4762a1bSJed Brown     KSP ksp;
3355c4762a1bSJed Brown 
33569566063dSJacob Faibussowitsch     PetscCall(SNESGetKSP(snes, &ksp));
3357fb842aefSJose E. Roman     PetscCall(KSPSetTolerances(ksp, 1.e-2 * PETSC_SMALL, PETSC_SMALL, PETSC_CURRENT, PETSC_CURRENT));
3358c4762a1bSJed Brown   }
3359c4762a1bSJed Brown 
3360c4762a1bSJed Brown   /* There should be a way to express this using the DM */
33619566063dSJacob Faibussowitsch   PetscCall(SNESSetFromOptions(snes));
33629566063dSJacob Faibussowitsch   PetscCall(SNESSetUp(snes));
33639566063dSJacob Faibussowitsch   PetscCall(SNESGetJacobian(snes, &J, &M, NULL, NULL));
33649566063dSJacob Faibussowitsch   PetscCall(MatSetNullSpace(J, nullSpace));
33659566063dSJacob Faibussowitsch   PetscCall(PetscObjectSetOptionsPrefix((PetscObject)M, "prec_"));
33669566063dSJacob Faibussowitsch   PetscCall(MatSetFromOptions(M));
33679566063dSJacob Faibussowitsch   PetscCall(SNESSetConvergenceTest(snes, SNESConvergenceCorrectPressure, &user, NULL));
3368478db826SMatthew G. Knepley 
33699566063dSJacob Faibussowitsch   PetscCall(DMSNESCheckFromOptions(snes, u));
33709566063dSJacob Faibussowitsch   PetscCall(DMProjectFunction(dm, 0.0, initialGuess, NULL, INSERT_VALUES, u));
33715307ee71SStefano Zampini   if (user.solType == SOLZERO) PetscCall(VecSetRandom(u, NULL));
33729566063dSJacob Faibussowitsch   PetscCall(PetscObjectSetName((PetscObject)u, "Solution"));
33739566063dSJacob Faibussowitsch   PetscCall(SNESSolve(snes, NULL, u));
3374348a1646SMatthew G. Knepley   {
3375*2a8381b2SBarry Smith     PetscErrorCode (*exacts[2])(PetscInt dim, PetscReal t, const PetscReal x[], PetscInt Nf, PetscScalar *u, PetscCtx ctx);
3376348a1646SMatthew G. Knepley     void   *ectxs[2];
3377348a1646SMatthew G. Knepley     PetscDS ds;
3378478db826SMatthew G. Knepley     Vec     e;
3379c4762a1bSJed Brown 
33809566063dSJacob Faibussowitsch     PetscCall(DMGetDS(dm, &ds));
33819566063dSJacob Faibussowitsch     PetscCall(PetscDSGetExactSolution(ds, 0, &exacts[0], &ectxs[0]));
33829566063dSJacob Faibussowitsch     PetscCall(PetscDSGetExactSolution(ds, 1, &exacts[1], &ectxs[1]));
3383c4762a1bSJed Brown 
33849566063dSJacob Faibussowitsch     PetscCall(DMGetGlobalVector(dm, &e));
33859566063dSJacob Faibussowitsch     PetscCall(PetscObjectCompose((PetscObject)e, "__Vec_bc_zero__", (PetscObject)dm));
33869566063dSJacob Faibussowitsch     PetscCall(DMPlexComputeL2DiffVec(dm, 0.0, exacts, ectxs, u, e));
33879566063dSJacob Faibussowitsch     PetscCall(PetscObjectSetName((PetscObject)e, "Solution Error"));
33889566063dSJacob Faibussowitsch     PetscCall(VecViewFromOptions(e, NULL, "-error_vec_view"));
33899566063dSJacob Faibussowitsch     PetscCall(PetscObjectCompose((PetscObject)e, "__Vec_bc_zero__", NULL));
33909566063dSJacob Faibussowitsch     PetscCall(DMRestoreGlobalVector(dm, &e));
3391c4762a1bSJed Brown   }
33929566063dSJacob Faibussowitsch   PetscCall(VecViewFromOptions(u, NULL, "-sol_vec_view"));
3393c4762a1bSJed Brown 
33949566063dSJacob Faibussowitsch   PetscCall(MatNullSpaceDestroy(&nullSpace));
33959566063dSJacob Faibussowitsch   PetscCall(VecDestroy(&u));
33969566063dSJacob Faibussowitsch   PetscCall(VecDestroy(&r));
33979566063dSJacob Faibussowitsch   PetscCall(SNESDestroy(&snes));
33989566063dSJacob Faibussowitsch   PetscCall(DMDestroy(&dm));
33999566063dSJacob Faibussowitsch   PetscCall(PetscBagDestroy(&user.bag));
34009566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
3401b122ec5aSJacob Faibussowitsch   return 0;
3402c4762a1bSJed Brown }
3403c4762a1bSJed Brown 
3404c4762a1bSJed Brown /*TEST
3405c4762a1bSJed Brown 
3406c4762a1bSJed Brown   # 2D serial discretization tests
3407c4762a1bSJed Brown   test:
3408c4762a1bSJed Brown     suffix: p2p1
3409c4762a1bSJed Brown     requires: triangle
3410478db826SMatthew G. Knepley     args: -dm_plex_separate_marker -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3411478db826SMatthew G. Knepley       -snes_error_if_not_converged -dmsnes_check .001 \
3412478db826SMatthew G. Knepley       -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3413478db826SMatthew G. Knepley       -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3414478db826SMatthew G. Knepley         -fieldsplit_velocity_pc_type lu \
3415478db826SMatthew G. Knepley         -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu
3416c4762a1bSJed Brown   test:
34175307ee71SStefano Zampini     suffix: p2p1_zero
34185307ee71SStefano Zampini     requires: triangle
34195307ee71SStefano Zampini     args: -dm_plex_separate_marker -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
34205307ee71SStefano Zampini       -snes_error_if_not_converged -dmsnes_check .001 \
34215307ee71SStefano Zampini       -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
34225307ee71SStefano Zampini       -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
34235307ee71SStefano Zampini         -fieldsplit_velocity_pc_type lu \
34245307ee71SStefano Zampini         -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu -sol_type zero -dm_plex_box_faces 16,1 -dm_plex_box_crisscross -dm_plex_box_lower 0,0 -dm_plex_box_upper 1,0.01
34255307ee71SStefano Zampini   test:
3426478db826SMatthew G. Knepley     suffix: p2p1_gmg
342796b316e5SStefano Zampini     TODO: broken (requires subDMs hooks)
3428c4762a1bSJed Brown     requires: triangle
3429478db826SMatthew G. Knepley     args: -dm_plex_separate_marker -dm_refine_hierarchy 2 -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3430478db826SMatthew G. Knepley       -snes_error_if_not_converged -dmsnes_check .001 \
3431478db826SMatthew G. Knepley       -ksp_type fgmres -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3432478db826SMatthew G. Knepley       -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3433478db826SMatthew G. Knepley         -fieldsplit_velocity_pc_type mg \
3434478db826SMatthew G. Knepley         -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu
3435c4762a1bSJed Brown   test:
3436478db826SMatthew G. Knepley     suffix: p2p1_conv
3437478db826SMatthew G. Knepley     requires: triangle
3438478db826SMatthew G. Knepley     # -dm_refine 2 gives L_2 convergence rate: [3.0, 2.2]
3439478db826SMatthew G. Knepley     args: -dm_plex_separate_marker -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3440478db826SMatthew G. Knepley       -snes_error_if_not_converged -snes_convergence_estimate -convest_num_refine 2 \
3441478db826SMatthew G. Knepley       -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3442478db826SMatthew G. Knepley       -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3443478db826SMatthew G. Knepley         -fieldsplit_velocity_pc_type lu \
3444478db826SMatthew G. Knepley         -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu
3445c4762a1bSJed Brown   test:
3446478db826SMatthew G. Knepley     suffix: q2q1_conv
3447478db826SMatthew G. Knepley     # -dm_refine 2 gives L_2 convergence rate: [3.0, 2.1]
344830602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -dm_plex_separate_marker -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3449478db826SMatthew G. Knepley       -snes_error_if_not_converged -snes_convergence_estimate -convest_num_refine 2 \
3450478db826SMatthew G. Knepley       -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3451478db826SMatthew G. Knepley       -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3452478db826SMatthew G. Knepley         -fieldsplit_velocity_pc_type lu \
3453478db826SMatthew G. Knepley         -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu
3454c4762a1bSJed Brown   test:
3455478db826SMatthew G. Knepley     suffix: q1p0_conv
3456478db826SMatthew G. Knepley     # -dm_refine 2 gives L_2 convergence rate: [2.0, 1.0]
345730602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -dm_plex_separate_marker -vel_petscspace_degree 1 -pres_petscspace_degree 0 \
3458478db826SMatthew G. Knepley       -snes_error_if_not_converged -snes_convergence_estimate -convest_num_refine 2 \
3459478db826SMatthew G. Knepley       -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3460478db826SMatthew G. Knepley       -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3461478db826SMatthew G. Knepley         -fieldsplit_velocity_pc_type lu \
3462478db826SMatthew G. Knepley         -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu
3463c4762a1bSJed Brown   test:
3464478db826SMatthew G. Knepley     suffix: q2p1_conv
3465478db826SMatthew G. Knepley     # -dm_refine 2 gives L_2 convergence rate: [3.0, 2.0]
346630602db0SMatthew G. Knepley     args: -dm_plex_simplex 0 -dm_plex_separate_marker \
3467478db826SMatthew G. Knepley       -vel_petscspace_degree 2 -pres_petscspace_degree 1 -pres_petscspace_poly_tensor 0 -pres_petscdualspace_lagrange_continuity 0 \
3468478db826SMatthew G. Knepley       -snes_error_if_not_converged -snes_convergence_estimate -convest_num_refine 2 \
3469478db826SMatthew G. Knepley       -ksp_rtol 1.e-9 -ksp_error_if_not_converged -pc_use_amat \
3470478db826SMatthew G. Knepley       -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -pc_fieldsplit_schur_precondition a11 \
3471478db826SMatthew G. Knepley         -fieldsplit_velocity_pc_type lu \
3472478db826SMatthew G. Knepley         -fieldsplit_pressure_ksp_rtol 1.e-9 -fieldsplit_pressure_pc_type lu
3473c4762a1bSJed Brown 
3474c4762a1bSJed Brown   # FETI-DP tests
3475c4762a1bSJed Brown   testset:
3476c4762a1bSJed Brown     output_file: output/ex69_q2p1fetidp.out
3477c4762a1bSJed Brown     suffix: q2p1fetidp
3478c4762a1bSJed Brown     requires: !single
3479c4762a1bSJed Brown     nsize: 5
3480e600fa54SMatthew G. Knepley     args: -dm_plex_simplex 0 -dm_plex_separate_marker -dm_refine_pre 1 -dm_mat_type is -dm_view -petscpartitioner_type simple \
3481478db826SMatthew 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 \
3482478db826SMatthew G. Knepley       -snes_error_if_not_converged \
3483478db826SMatthew G. Knepley       -ksp_error_if_not_converged \
3484478db826SMatthew G. Knepley       -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural \
3485478db826SMatthew 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
3486c4762a1bSJed Brown     test:
3487c4762a1bSJed Brown       suffix: aij
34884f58015eSStefano Zampini       args: -mat_is_localmat_type aij
3489c4762a1bSJed Brown     test:
34900338c944SBarry Smith       requires: viennacl !CUDA_VERSION_11PLUS
34910338c944SBarry Smith       TODO: broken
3492c4762a1bSJed Brown       suffix: aijviennacl
34934f58015eSStefano Zampini       args: -mat_is_localmat_type aijviennacl
3494c4762a1bSJed Brown     test:
3495c4762a1bSJed Brown       requires: cuda
3496c4762a1bSJed Brown       suffix: aijcusparse
34974f58015eSStefano Zampini       args: -mat_is_localmat_type aijcusparse
3498c4762a1bSJed Brown 
3499c4762a1bSJed Brown   testset:
3500c4762a1bSJed Brown     suffix: q2p1fetidp_deluxe
3501c4762a1bSJed Brown     output_file: output/ex69_q2p1fetidp_deluxe.out
3502c4762a1bSJed Brown     requires: mumps double
3503c4762a1bSJed Brown     nsize: 5
3504e600fa54SMatthew G. Knepley     args: -dm_plex_simplex 0 -dm_plex_separate_marker -dm_refine_pre 1 -dm_mat_type is -dm_view -petscpartitioner_type simple \
3505478db826SMatthew 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 \
3506478db826SMatthew G. Knepley       -snes_error_if_not_converged \
3507478db826SMatthew G. Knepley       -ksp_error_if_not_converged \
3508478db826SMatthew G. Knepley       -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural \
3509478db826SMatthew 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 \
3510478db826SMatthew 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
3511c4762a1bSJed Brown     test:
3512c4762a1bSJed Brown       suffix: aij
35134f58015eSStefano Zampini       args: -mat_is_localmat_type aij
3514c4762a1bSJed Brown     test:
3515c4762a1bSJed Brown       suffix: aij_seqdense
35164f58015eSStefano Zampini       args: -mat_is_localmat_type aij -fetidp_bddc_sub_schurs_schur_mat_type seqdense
3517c4762a1bSJed Brown     test:
351880fdaca0SStefano Zampini       requires: viennacl !CUDA_VERSION_11PLUS
3519c4762a1bSJed Brown       suffix: aijviennacl
35204f58015eSStefano Zampini       args: -mat_is_localmat_type aijviennacl
3521c4762a1bSJed Brown     test:
3522c4762a1bSJed Brown       requires: cuda
3523c4762a1bSJed Brown       suffix: aijcusparse
35244f58015eSStefano Zampini       args: -mat_is_localmat_type aijcusparse
3525c4762a1bSJed Brown 
3526c4762a1bSJed Brown   testset:
3527c4762a1bSJed Brown     suffix: q2p1fetidp_deluxe_adaptive
3528c4762a1bSJed Brown     output_file: output/ex69_q2p1fetidp_deluxe_adaptive.out
3529c4762a1bSJed Brown     requires: mumps double
3530c4762a1bSJed Brown     nsize: 5
3531e600fa54SMatthew G. Knepley     args: -dm_plex_simplex 0 -dm_plex_separate_marker -dm_refine_pre 1 -dm_mat_type is -dm_view -petscpartitioner_type simple \
3532478db826SMatthew 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 \
3533478db826SMatthew G. Knepley       -snes_error_if_not_converged \
3534478db826SMatthew G. Knepley       -ksp_error_if_not_converged \
3535478db826SMatthew G. Knepley       -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural \
3536478db826SMatthew 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 \
3537478db826SMatthew 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
3538c4762a1bSJed Brown     test:
3539c4762a1bSJed Brown       suffix: aij
35404f58015eSStefano Zampini       args: -mat_is_localmat_type aij
3541c4762a1bSJed Brown     test:
3542c4762a1bSJed Brown       suffix: aij_seqdense
35434f58015eSStefano Zampini       args: -mat_is_localmat_type aij -fetidp_bddc_sub_schurs_schur_mat_type seqdense
3544c4762a1bSJed Brown     test:
354580fdaca0SStefano Zampini       requires: viennacl !CUDA_VERSION_11PLUS
3546c4762a1bSJed Brown       suffix: aijviennacl
35474f58015eSStefano Zampini       args: -mat_is_localmat_type aijviennacl
3548c4762a1bSJed Brown     test:
3549c4762a1bSJed Brown       requires: cuda
3550c4762a1bSJed Brown       suffix: aijcusparse
35514f58015eSStefano Zampini       args: -mat_is_localmat_type aijcusparse
3552c4762a1bSJed Brown 
3553c4762a1bSJed Brown   test:
3554c4762a1bSJed Brown     suffix: p2p1fetidp
3555c4762a1bSJed Brown     requires: triangle
3556478db826SMatthew G. Knepley     nsize: 4
3557e600fa54SMatthew G. Knepley     args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3558478db826SMatthew G. Knepley       -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3559478db826SMatthew G. Knepley       -snes_error_if_not_converged \
3560478db826SMatthew G. Knepley       -ksp_error_if_not_converged \
3561478db826SMatthew G. Knepley       -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural -fetidp_pc_fieldsplit_schur_fact_type diag \
3562478db826SMatthew G. Knepley       -fetidp_fieldsplit_p_pc_type jacobi -fetidp_fieldsplit_p_ksp_type preonly \
3563478db826SMatthew G. Knepley       -fetidp_fieldsplit_lag_ksp_type preonly \
3564478db826SMatthew 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
3565c4762a1bSJed Brown 
3566c4762a1bSJed Brown   test:
3567c4762a1bSJed Brown     suffix: p2p1fetidp_allp
3568c4762a1bSJed Brown     requires: triangle
3569478db826SMatthew G. Knepley     nsize: 4
3570e600fa54SMatthew G. Knepley     args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3571478db826SMatthew G. Knepley       -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3572478db826SMatthew G. Knepley       -snes_error_if_not_converged \
3573478db826SMatthew G. Knepley       -ksp_error_if_not_converged \
3574478db826SMatthew 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 \
3575478db826SMatthew G. Knepley       -fetidp_fieldsplit_p_pc_type jacobi -fetidp_fieldsplit_p_ksp_type preonly \
3576478db826SMatthew G. Knepley       -fetidp_fieldsplit_lag_ksp_type preonly \
3577478db826SMatthew 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
3578c4762a1bSJed Brown 
3579c4762a1bSJed Brown   test:
3580c4762a1bSJed Brown     suffix: p2p1fetidp_discharm
3581c4762a1bSJed Brown     requires: triangle
3582478db826SMatthew G. Knepley     nsize: 4
3583e600fa54SMatthew G. Knepley     args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3584478db826SMatthew G. Knepley       -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3585478db826SMatthew G. Knepley       -snes_error_if_not_converged \
3586478db826SMatthew G. Knepley       -ksp_error_if_not_converged \
3587478db826SMatthew 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 \
3588478db826SMatthew G. Knepley       -fetidp_fieldsplit_p_pc_type jacobi -fetidp_fieldsplit_p_ksp_type preonly \
3589478db826SMatthew G. Knepley       -fetidp_fieldsplit_lag_ksp_type preonly \
3590478db826SMatthew 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
3591c4762a1bSJed Brown 
3592c4762a1bSJed Brown   test:
3593c4762a1bSJed Brown     suffix: p2p1fetidp_lumped
3594c4762a1bSJed Brown     requires: triangle
3595478db826SMatthew G. Knepley     nsize: 4
3596e600fa54SMatthew G. Knepley     args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3597478db826SMatthew G. Knepley       -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3598478db826SMatthew G. Knepley       -snes_error_if_not_converged \
3599478db826SMatthew G. Knepley       -ksp_error_if_not_converged \
3600478db826SMatthew 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 \
3601478db826SMatthew G. Knepley       -fetidp_fieldsplit_p_pc_type jacobi -fetidp_fieldsplit_p_ksp_type preonly \
3602478db826SMatthew G. Knepley       -fetidp_fieldsplit_lag_ksp_type preonly \
3603478db826SMatthew 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
3604c4762a1bSJed Brown 
3605c4762a1bSJed Brown   test:
3606c4762a1bSJed Brown     suffix: p2p1fetidp_deluxe
3607c4762a1bSJed Brown     requires: triangle mumps
3608478db826SMatthew G. Knepley     nsize: 4
3609e600fa54SMatthew G. Knepley     args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3610478db826SMatthew G. Knepley       -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3611478db826SMatthew G. Knepley       -snes_error_if_not_converged \
3612478db826SMatthew G. Knepley       -ksp_error_if_not_converged \
3613478db826SMatthew G. Knepley       -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural -fetidp_pc_fieldsplit_schur_fact_type diag \
3614478db826SMatthew G. Knepley       -fetidp_fieldsplit_p_pc_type jacobi -fetidp_fieldsplit_p_ksp_type preonly \
3615478db826SMatthew G. Knepley       -fetidp_fieldsplit_lag_ksp_type preonly \
3616478db826SMatthew 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 \
361726cc229bSBarry Smith       -fetidp_bddc_sub_schurs_mat_solver_type mumps -fetidp_bddc_sub_schurs_mat_mumps_icntl_14 500 -fetidp_bddc_sub_schurs_posdef 0
3618c4762a1bSJed Brown 
3619c4762a1bSJed Brown   test:
3620c4762a1bSJed Brown     suffix: p2p1fetidp_deluxe_discharm
3621c4762a1bSJed Brown     requires: triangle mumps
3622478db826SMatthew G. Knepley     nsize: 4
3623e600fa54SMatthew G. Knepley     args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3624478db826SMatthew G. Knepley       -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3625478db826SMatthew G. Knepley       -snes_error_if_not_converged \
3626478db826SMatthew G. Knepley       -ksp_error_if_not_converged \
3627478db826SMatthew G. Knepley       -ksp_type fetidp -ksp_fetidp_saddlepoint -fetidp_ksp_type cg -fetidp_ksp_norm_type natural -fetidp_pc_fieldsplit_schur_fact_type diag \
3628478db826SMatthew G. Knepley       -fetidp_fieldsplit_p_pc_type jacobi -fetidp_fieldsplit_p_ksp_type preonly \
3629478db826SMatthew G. Knepley       -fetidp_fieldsplit_lag_ksp_type preonly \
3630478db826SMatthew 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 \
363126cc229bSBarry 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
3632c4762a1bSJed Brown 
3633c4762a1bSJed Brown   testset:
3634478db826SMatthew G. Knepley     nsize: 4
3635c4762a1bSJed Brown     requires: triangle
3636c4762a1bSJed Brown     output_file: output/ex69_p2p1fetidp_olof.out
3637e600fa54SMatthew G. Knepley     args: -dm_plex_separate_marker -dm_refine_pre 2 -dm_refine_uniform_pre -dm_mat_type is -dm_view -petscpartitioner_type simple \
3638478db826SMatthew G. Knepley       -vel_petscspace_degree 2 -pres_petscspace_degree 1 \
3639478db826SMatthew G. Knepley       -snes_error_if_not_converged \
3640478db826SMatthew G. Knepley       -ksp_error_if_not_converged \
3641478db826SMatthew 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 \
3642478db826SMatthew G. Knepley       -fetidp_fieldsplit_p_pc_type bddc -fetidp_fieldsplit_p_pc_bddc_dirichlet_pc_type none -fetidp_fieldsplit_p_ksp_type preonly \
3643478db826SMatthew G. Knepley       -fetidp_fieldsplit_lag_ksp_error_if_not_converged 0 -fetidp_fieldsplit_lag_ksp_type chebyshev -fetidp_fieldsplit_lag_ksp_max_it 2 \
3644478db826SMatthew 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
3645c4762a1bSJed Brown     test:
3646c4762a1bSJed Brown       suffix: p2p1fetidp_olof_full
3647c4762a1bSJed Brown       args: -fetidp_pc_fieldsplit_schur_fact_type full
3648c4762a1bSJed Brown     test:
3649c4762a1bSJed Brown       suffix: p2p1fetidp_olof_diag
3650c4762a1bSJed Brown       args: -fetidp_pc_fieldsplit_schur_fact_type diag
3651c4762a1bSJed Brown     test:
3652c4762a1bSJed Brown       suffix: p2p1fetidp_olof_additive
3653c4762a1bSJed Brown       args: -fetidp_pc_fieldsplit_type additive
3654c4762a1bSJed Brown 
3655efaa4a0cSStefano Zampini   #BDDC with benign trick
3656efaa4a0cSStefano Zampini   testset:
3657efaa4a0cSStefano Zampini     suffix: q2p1bddc
3658efaa4a0cSStefano Zampini     output_file: output/ex69_q2p1fetidp_deluxe.out
3659efaa4a0cSStefano Zampini     nsize: 5
3660e600fa54SMatthew 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
3661efaa4a0cSStefano Zampini     test:
3662efaa4a0cSStefano Zampini       requires: double
3663efaa4a0cSStefano Zampini       suffix: benign_card
3664efaa4a0cSStefano Zampini       # no native support for saddle point factorizations from PETSc
3665efaa4a0cSStefano Zampini       args: -pc_bddc_dirichlet_pc_type svd -pc_bddc_neumann_pc_type svd
3666efaa4a0cSStefano Zampini     test:
3667efaa4a0cSStefano Zampini       requires: mumps double
3668efaa4a0cSStefano Zampini       suffix: benign_deluxe_mumps
3669efaa4a0cSStefano Zampini       args: -pc_bddc_use_deluxe_scaling -pc_bddc_deluxe_zerorows -sub_schurs_mat_solver_type mumps -sub_schurs_mat_mumps_icntl_14 1000
3670efaa4a0cSStefano Zampini     test:
3671efaa4a0cSStefano Zampini       requires: mumps double
3672efaa4a0cSStefano Zampini       suffix: benign_deluxe_adaptive_mumps
3673efaa4a0cSStefano 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
3674efaa4a0cSStefano Zampini     test:
3675728856daSToby Isaac       TODO: broken (INDEFINITE PC)
36761453627dSToby Isaac       requires: mkl_pardiso double !complex
3677efaa4a0cSStefano Zampini       suffix: benign_deluxe_mkl
3678efaa4a0cSStefano Zampini       args: -pc_bddc_use_deluxe_scaling -pc_bddc_deluxe_zerorows -sub_schurs_mat_solver_type mkl_pardiso -snes_rtol 1.e-7
3679efaa4a0cSStefano Zampini     test:
3680728856daSToby Isaac       TODO: broken (INDEFINITE PC)
36811453627dSToby Isaac       requires: mkl_pardiso double !complex
3682efaa4a0cSStefano Zampini       suffix: benign_deluxe_adaptive_mkl
3683efaa4a0cSStefano 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
3684efaa4a0cSStefano Zampini 
3685c4762a1bSJed Brown TEST*/
3686