28 debug (3,
"rz_new_3d_a (%d, %d, %d, %d, %d)\n", r0, z0, r1, z1, ntheta);
31 r0 -= 2; z0 -= 2; r1 += 2; z1 += 2;
36 assert (rmax > 0 && zmax > 0 && ntheta > 0);
38 debug (3,
"r0 = %d, z0 = %d, r1 = %d, z1 = %d\n", r0, z0, r1, z1);
43 array->
len = rmax * zmax * (ntheta + 4);
46 array->
len = rmax * zmax;
60 array->
dim = ntheta == 1? 2: 3;
62 debug (3,
"rmax = %d\n", rmax);
89 array->
nr = r1 - r0 - 4;
90 array->
nz = z1 - z0 - 4;
107 int ntheta, rmax, zmax;
117 array->
len = rmax * zmax * (ntheta + 4);
119 array->
len = rmax * zmax;
133 array->
nr = r1 - r0 - 4;
134 array->
nz = z1 - z0 - 4;
147 debug (3,
"rz_set_zero\n");
148 memset (array->
data, 0, array->
len *
sizeof(
REAL));
156 if (array->
ntheta == 1)
return;
159 array, array->
r0, array->
z0,
160 array->
nr + 4, array->
nz + 4, array->
ntheta - 1, -1);
163 array, array->
r0, array->
z0,
164 array->
nr + 4, array->
nz + 4, array->
ntheta - 2, -2);
167 array, array->
r0, array->
z0,
168 array->
nr + 4, array->
nz + 4, 0, array->
ntheta);
171 array, array->
r0, array->
z0,
172 array->
nr + 4, array->
nz + 4, 1, array->
ntheta + 1);
197 int sign,
REAL *start_from,
REAL *start_to,
198 int dim0,
int inout_from,
int inout_to,
199 int dim1,
int dim1_0,
int dim1_1,
200 int dim2,
int dim2_0,
int dim2_1)
205 for (i = dim1_0; i < dim1_1; i++) {
206 for (j = dim2_0; j < dim2_1; j++) {
207 pfrom = start_from + i * from->
strides[dim1] + j * from->
strides[dim2];
210 *(pto + inout_to * to->
strides[dim0]) = sign * (*pfrom);
212 *(pto + 2 * inout_to * to->
strides[dim0]) =
213 sign * (*(pfrom + inout_from * from->
strides[dim0]));
230 int dim1,
int dim1_0,
int dim1_1,
231 int dim2,
int dim2_0,
int dim2_1)
233 rz_copy_bnd (array, array, sign, astart, astart, dim0, -inout, inout,
234 dim1, dim1_0, dim1_1, dim2, dim2_0, dim2_1);
242 debug (3,
"rz_free\n");
244 if (NULL == array->
host) free (array->
data);
259 debug (3,
"rz_copy\n");
261 pfro =
RZP (fro, rfro, zfro);
262 pto =
RZP (to, rto, zto);
264 for (i = 0; i < zn; i++) {
265 memcpy (pto, pfro,
sizeof(
REAL) * rn);
279 int rn,
int zn,
int nmode_fro,
int nmode_to)
284 debug (3,
"rz_copy\n");
286 pfro =
RZTP (fro, rfro, zfro, nmode_fro);
287 pto =
RZTP (to, rto, zto, nmode_to);
289 for (i = 0; i < zn; i++) {
291 for (j = 0; j < rn; j++ ) *(pto + j) = *(pfro + j);
306 int r0,
int z0,
int r1,
int z1)
313 debug (3,
"rz_dump(\"%s\", \"%s\", %d, %d, %d, %d)\n", fname, mode,
316 if (0 == strcmp (mode,
"w")) {
318 }
else if (0 == strcmp (mode,
"r")) {
321 fatal (
"Unknown mode for rz_dump\n");
324 fp = fopen (fname, mode);
327 warning(
"Unable to open %s for %s\n", fname,
328 writing?
"writing":
"reading");
332 for (ir = r0; ir < r1; ir++)
333 for (iz = z0; iz < z1; iz++) {
335 fprintf (fp,
"%15.5e\n",
RZ(rz_array, ir, iz));
337 if (fscanf (fp,
"%lf", &f) != 1) {
338 warning (
"Error reading file %s, at line %d, (ir, iz) = (%d, %d)\n",
339 fname, iz + ir * (z1 - z0), ir, iz);
342 *
RZP (rz_array, ir, iz) = f;
355 int r0,
int z0,
int r1,
int z1,
int ntheta)
362 debug (3,
"rz_dump_3d(\"%s\", \"%s\", %d, %d, %d, %d, %d)\n",
363 fname, mode, r0, z0, r1, z1, ntheta);
365 if (0 == strcmp (mode,
"w")) {
367 }
else if (0 == strcmp (mode,
"r")) {
370 fatal (
"Unknown mode for rz_dump_3d\n");
373 fp = fopen (fname, mode);
376 warning (
"Unable to open %s for %s\n", fname,
377 writing?
"writing":
"reading");
381 for (itheta = 0; itheta < ntheta; itheta++) {
382 for (ir = r0; ir < r1; ir++) {
383 for (iz = z0; iz < z1; iz++) {
385 fprintf (fp,
"%15.5e\n",
RZT (rz_array, ir, iz, itheta));
387 if (fscanf (fp,
"%lf", &f) != 1) {
388 warning (
"Error reading file %s, at line %d, "
389 "(ir, iz, itheta) = (%d, %d, %d)\n",
390 fname, iz + (ir + itheta * (r1 - r0)) * (z1 - z0),
394 *
RZTP (rz_array, ir, iz, itheta) = f;
416 debug (3,
"rz_axis_dump(\"%s\", %d, %d, %f)\n", fname, x0, x1, delta);
418 fp = fopen (fname,
"w");
421 warning (
"Unable to open %s\n", fname);
425 for (i = x0; i < x1; i++)
426 fprintf (fp,
"%15.5e\n", ((
double) i + 0.5) * delta);
440 fatal (
"The disk space limit has been surpassed. "
441 "Increase max_disk_space_mb if you really need more space\n");