175 const double NL_ZERO_TOLERANCE = 1e-4;
176 double xlen = 1, inv_xlen = 1;
177 double ylen = 1, inv_ylen = 1;
178 double zlen = 1, inv_zlen = 1;
182 double rpadx = padding * ulen_1;
183 double rpady = padding * vlen_1;
184 double rpadz = padding * wlen_1;
185 double rhx = gridspacing * ulen_1;
186 double rhy = gridspacing * vlen_1;
187 double rhz = gridspacing * wlen_1;
190 double xmin, xmax, ymin, ymax, zmin, zmax;
211 if (s.
x < xmin) xmin = s.
x;
212 else if (s.
x > xmax) xmax = s.
x;
213 if (s.
y < ymin) ymin = s.
y;
214 else if (s.
y > ymax) ymax = s.
y;
215 if (s.
z < zmin) zmin = s.
z;
216 else if (s.
z > zmax) zmax = s.
z;
219 printf(
"*** xmin=%.4f xmax=%.4f\n", xmin, xmax);
220 printf(
"*** ymin=%.4f ymax=%.4f\n", ymin, ymax);
221 printf(
"*** zmin=%.4f zmax=%.4f\n", zmin, zmax);
224 if ( ! is_periodic_x) {
228 double mupper = ceil(xmax / (2*rhx));
229 double mlower = floor(xmin / (2*rhx));
233 rc.
x = 0.5*(xmin + xmax);
235 if (xlen < NL_ZERO_TOLERANCE) {
243 if ( ! is_periodic_y) {
247 double mupper = ceil(ymax / (2*rhy));
248 double mlower = floor(ymin / (2*rhy));
252 rc.
y = 0.5*(ymin + ymax);
254 if (ylen < NL_ZERO_TOLERANCE) {
262 if ( ! is_periodic_z) {
266 double mupper = ceil(zmax / (2*rhz));
267 double mlower = floor(zmin / (2*rhz));
271 rc.
z = 0.5*(zmin + zmax);
273 if (zlen < NL_ZERO_TOLERANCE) {
282 printf(
"xmin=%g xmax=%g\n", xmin, xmax);
283 printf(
"ymin=%g ymax=%g\n", ymin, ymax);
284 printf(
"zmin=%g zmax=%g\n", zmin, zmax);
285 printf(
"xlen=%g ylen=%g zlen=%g\n", xlen, ylen, zlen);
286 printf(
"rc_x=%g rc_y=%g rc_z=%g\n", rc.
x, rc.
y, rc.
z);
290 c.
x = (u.
x*rc.
x + v.
x*rc.
y + w.
x*rc.
z) + c.
x;
291 c.
y = (u.
y*rc.
x + v.
y*rc.
y + w.
y*rc.
z) + c.
y;
292 c.
z = (u.
z*rc.
x + v.
z*rc.
y + w.
z*rc.
z) + c.
z;
295 printf(
"c_x=%g c_y=%g c_z=%g\n", c.
x, c.
y, c.
z);