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