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