Ejemplo n.º 1
0
void f(Real x, Real y, Real z, Scalar (&val)[3]) {
	Scalar ev[3], dx[3], dy[3], dz[3];
	exact_sln(x, y, z, ev, dx, dy, dz);

	val[0] = 4*x*z + 18*x*y*z - 2*x*x*x + 9*x*x*y*y*z*z*z - ev[0];
	val[1] = -4*y*z + 3*z*z - 9*z*y*y + 6*y*x*x - 6*x*y*y*y*z*z*z - 6*z*x*x*x*y*y*y - ev[1];
	val[2] = 24*x + 2*x*x + 9*x*x*x*y*y*z*z - 3*y*y*y - ev[2];
}
Ejemplo n.º 2
0
void f(S x, S y, S z, T (&val)[3]) {
	T ev[3], dx[3], dy[3], dz[3];
	exact_sln(x, y, z, ev, dx, dy, dz);

	T curlpart[3] = {
		2*(1 - y*y)*(1 - 2*x*x*x + x*z) + 2*(1 - z*z)*(1 - 2*x*x*x + x*z) - 6*x*y*y*(1 - z*z) - 3*y*(1 - x*x)*(1 - y*y) - 2*x*(1 - y*y)*(2*z - 3*x*y) + 4*x*z*(1 - y*y),
		2*(1 - x*x)*(y*y*y + 2*x) + 2*(1 - z*z)*(y*y*y + 2*x) + 8*x*(1 - z*z) - 3*x*(1 - x*x)*(1 - y*y) - 2*y*(1 - x*x)*(2*z - 3*x*y) - 2*y*(1 - z*z)*(z - 6*x*x),
		(1 - y*y)*(1 - z*z) + 2*(1 - x*x)*(z*z - 3*x*y*z) + 2*(1 - y*y)*(z*z - 3*x*y*z) - 6*z*y*y*(1 - x*x) - 2*z*(1 - y*y)*(z - 6*x*x) - 12*x*y*z*(1 - x*x) - 12*x*y*z*(1 - y*y)
	};

	val[0] = curlpart[0] - alpha * ev[0];
	val[1] = curlpart[1] - alpha * ev[1];
	val[2] = curlpart[2] - alpha * ev[2];
}
Ejemplo n.º 3
0
Scalar linear_form_surf(int n, double *wt, Func<Scalar> *u_ext[], Func<Real> *v, Geom<Real> *e, ExtData<Scalar> *data) {
	Scalar result = 0.0;
	for (int i = 0; i < n; i++) {
		Scalar ev[3], dx[3], dy[3], dz[3];
		exact_sln(e->x[i], e->y[i], e->z[i], ev, dx, dy, dz);

		Scalar curl_e[3];
		calc_curl(dx, dy, dz, curl_e);
		Scalar tpe[3];
		calc_tan_proj(e->nx[i], e->ny[i], e->nz[i], ev, tpe);

		Scalar g[3] = {
			(e->nz[i] * curl_e[1] - e->ny[i] * curl_e[2]) - img * tpe[0],
			(e->nx[i] * curl_e[2] - e->nz[i] * curl_e[0]) - img * tpe[1],
			(e->ny[i] * curl_e[0] - e->nx[i] * curl_e[1]) - img * tpe[2],
		};
		result += wt[i] * (v->val0[i] * g[0] + v->val1[i] * g[1] + v->val2[i] * g[2]);
	}
	return result;
}
Ejemplo n.º 4
0
void f(S x, S y, S z, T (&val)[3]) {
	_F_
	T ev[3], dx[3], dy[3], dz[3];
	exact_sln(x, y, z, ev, dx, dy, dz);

#ifdef FN4
	T curlpart[3] = {
		2*(1 - y*y)*(1 - 2*x*x*x + x*z) + 2*(1 - z*z)*(1 - 2*x*x*x + x*z) - 6*x*y*y*(1 - z*z) - 3*y*(1 - x*x)*(1 - y*y) - 2*x*(1 - y*y)*(2*z - 3*x*y) + 4*x*z*(1 - y*y),
		2*(1 - x*x)*(y*y*y + 2*x) + 2*(1 - z*z)*(y*y*y + 2*x) + 8*x*(1 - z*z) - 3*x*(1 - x*x)*(1 - y*y) - 2*y*(1 - x*x)*(2*z - 3*x*y) - 2*y*(1 - z*z)*(z - 6*x*x),
		(1 - y*y)*(1 - z*z) + 2*(1 - x*x)*(z*z - 3*x*y*z) + 2*(1 - y*y)*(z*z - 3*x*y*z) - 6*z*y*y*(1 - x*x) - 2*z*(1 - y*y)*(z - 6*x*x) - 12*x*y*z*(1 - x*x) - 12*x*y*z*(1 - y*y)
	};
#elif defined X2_Y2_Z2
	// \nabla x \nabla x val
	T curlpart[3] = {
		4 * x * (1 - y*y) * z,
		4 * (1 - x*x) * y * z,
		2 * (1 - y*y) * (1 - z*z) + 2 * (1 - x*x) * (1 - z*z)
	};
#endif

	val[0] = curlpart[0] - alpha * ev[0];
	val[1] = curlpart[1] - alpha * ev[1];
	val[2] = curlpart[2] - alpha * ev[2];
}