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