00001
00002
00003
00004 #include "utilf.h"
00005 #include "stypes.h"
00006 #include <readSIunits.h>
00007 #include "markers.h"
00008 #include "ini_conditions.h"
00009 #include "plgndr.h"
00010
00011 #define YMIN 1.9999
00012
00013
00014 static real angle(real x, real y)
00015 {
00016 real theta;
00017
00018 if (x == 0.0) {
00019 if (y >= 0.0)
00020 return PI/2.;
00021 return -PI/2.;
00022 }
00023 theta = atan(y/x);
00024 if (x < 0.0)
00025 theta += PI;
00026 return theta;
00027 }
00028
00029
00030 static void inidrop(interface *in,
00031 real2D u, real2D v, real2D p,
00032 real sigma,
00033 real tau,
00034 real xvel,
00035 real xc, real diameter,
00036 real eps, int mode,
00037 int nx, int ny)
00038 {
00039 real h, r, tpi, alpha;
00040 int i, j;
00041
00042 h = 1.0 / (nx - 2);
00043
00044 printf("------- Initialisation parameters ------\n");
00045 printf("Droplet: C=(%g,0), D=%g, mode=%d, eps=%g\n",
00046 xc, diameter, mode, eps);
00047
00048 diameter *= 0.5 * (nx - 2);
00049 printf("radius: %f\n", diameter);
00050 sigma *= tau * tau / (h * h * h);
00051 xc = xc*(nx - 2) + 2.0;
00052
00053 for (i = 1; i <= nx; i++)
00054 for (j = 1; j <= ny; j++) {
00055
00056
00057
00058
00059 r = sqrt(sq(i + 0.5 - xc) + sq(j - 1.5));
00060 alpha = angle(i + 0.5 - xc, j - 1.5);
00061 if (r <= diameter*(1. + eps*sphericalY(mode, 0, alpha)))
00062 u[i][j] = xvel*tau/h;
00063 p[i][j] = - 2.*sigma/diameter;
00064 }
00065
00066 in->n = 10*nx;
00067 in->x = (real *)malloc(in->n * sizeof(real));
00068 in->y = (real *)malloc(in->n * sizeof(real));
00069 in->t = (real *)malloc(in->n * sizeof(real));
00070 in->spx = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00071 in->spy = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00072 in->p = (real *)malloc(in->n * sizeof(real));
00073
00074 for (i = 0; i < in->n; i++) {
00075 tpi = PI*i/(in->n - 1);
00076 r = diameter*(1. + eps*sphericalY(mode, 0, tpi));
00077 in->x[i] = xc + r*cos(tpi);
00078 in->y[i] = YMIN + r*sin(tpi);
00079 }
00080 in->bc = AXITRUE;
00081 }
00082
00083
00084 void inidroplet(interface **in,
00085 int *nin,
00086 real2D u, real2D v, real2D p,
00087 real sigma,
00088 real tau,
00089 real xvel,
00090 int nx, int ny)
00091 {
00092 real diameter, xc, eps = 0.0;
00093 int mode = 1;
00094
00095 diameter = 0.5; xc = 0.5;
00096
00097 realreadSI("diameter", &diameter, stdin);
00098 realreadSI("xc", &xc, stdin);
00099 intread("mode", &mode, stdin);
00100 realreadSI("eps", &eps, stdin);
00101
00102 *in = (interface *)malloc(sizeof(interface));
00103 *nin = 1;
00104
00105 inidrop(*in, u, v, p, sigma, tau, xvel, xc, diameter, eps, mode, nx, ny);
00106 }
00107
00108
00109 void inidroplets(interface **in,
00110 int *nin,
00111 real2D u, real2D v, real2D p,
00112 real sigma,
00113 real tau,
00114 real xvel,
00115 int nx, int ny)
00116 {
00117 real diameter, xc, yc, eps = 0.0;
00118 int mode = 1;
00119
00120 diameter = 0.5; xc = 0.5; yc = 0.5;
00121
00122 realreadSI("diameter", &diameter, stdin);
00123 realreadSI("xc", &xc, stdin);
00124 realreadSI("yc", &yc, stdin);
00125 intread("mode", &mode, stdin);
00126 realreadSI("eps", &eps, stdin);
00127
00128 *in = (interface *)malloc(2 * sizeof(interface));
00129 *nin = 2;
00130 inidrop(&(*in)[0], u, v, p, sigma, tau, xvel,
00131 xc - 0.6*diameter,
00132 diameter, eps, mode, nx, ny);
00133 inidrop(&(*in)[1], u, v, p, sigma, tau, -xvel, xc + 0.6*diameter,
00134 diameter, eps, mode, nx, ny);
00135 }
00136
00137
00138 void inifusion(interface *in, int nx, int ny)
00139 {
00140 real h, r, tpi;
00141 real diameter = 0.4, eps = 0.0, xc1, xc2;
00142 int mode = 1;
00143 int i;
00144 real width = 3.0, height = 2.0, theta;
00145
00146 h = 1.0 / (nx - 2);
00147
00148 realreadSI("diameter", &diameter, stdin);
00149 intread("mode", &mode, stdin);
00150 realreadSI("eps", &eps, stdin);
00151
00152 printf("------- Initialisation parameters ------\n");
00153 printf("Fusion: D=%g, mode=%d, eps=%g\n", diameter, mode, eps);
00154
00155 diameter *= 0.5 * (nx - 2);
00156 printf("radius: %f\n", diameter);
00157 xc1 = 0.5*(nx - 2) + 2.0 + diameter + width/2;
00158 xc2 = 0.5*(nx - 2) + 2.0 - diameter - width/2;
00159 theta = (height + width/2.)/diameter;
00160
00161 in->n = nx*5 + 1;
00162 in->x = (real *)malloc(in->n * sizeof(real));
00163 in->y = (real *)malloc(in->n * sizeof(real));
00164 in->t = (real *)malloc(in->n * sizeof(real));
00165 in->spx = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00166 in->spy = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00167 in->p = (real *)malloc(in->n * sizeof(real));
00168
00169 for (i = 0; i < (in->n - 1)/2; i++) {
00170 tpi = (PI - theta)*i/((in->n - 1)/2 - 1);
00171 r = diameter*(1. + eps*sphericalY(mode, 0, tpi));
00172 in->x[i] = xc1 + r*cos(tpi);
00173 in->y[i] = YMIN + r*sin(tpi);
00174 }
00175 in->x[(in->n - 1)/2] = nx/2 + 1;
00176 in->y[(in->n - 1)/2] = YMIN + height;
00177 for (i = (in->n - 1)/2 + 1; i < in->n; i++) {
00178 tpi = theta + (PI - theta)*(i - (in->n - 1)/2 - 1)/((in->n - 3)/2);
00179 r = diameter*(1. + eps*sphericalY(mode, 0, tpi));
00180 in->x[i] = xc2 + r*cos(tpi);
00181 in->y[i] = YMIN + r*sin(tpi);
00182 }
00183 in->bc = AXITRUE;
00184 }
00185
00186
00187 void ini_impact(interface *in, real2D u, real2D v, real xvel, real tau,
00188 int nx, int ny)
00189 {
00190 real h, tpi, r;
00191 real diameter = 0.2, thickness = 0.3, xc1, xc2;
00192 int i, j;
00193 real width = 2.0, height = 4.0, theta;
00194
00195 h = 1.0 / (nx - 2);
00196
00197 realreadSI("diameter", &diameter, stdin);
00198 realreadSI("thickness", &thickness, stdin);
00199
00200 printf("------- Initialisation parameters ------\n");
00201 printf("Impact: D=%g thickness=%g xvel=%g\n", diameter, thickness, xvel);
00202
00203 diameter *= 0.5 * (nx - 2);
00204 printf("radius: %f\n", diameter);
00205 xc1 = thickness*(nx - 2) + 2.0 + diameter + width/2;
00206 xc2 = thickness*(nx - 2) + 2.0 - diameter - width/2;
00207 theta = (height + width/2.)/diameter;
00208
00209 #if 0
00210 for (i = 2; i < nx; i++)
00211 for (j = 2; j < ny; j++) {
00212 r = sqrt(sq((real)i - xc1) + sq((real)j - 1.5));
00213 if (r <= diameter)
00214 u[i][j] = xvel*tau/h;
00215 }
00216 #else
00217 for (i = 2 ; i < nx; i++)
00218 for (j = 2; j < ny; j++)
00219 u[i][j] = xvel*tau/h;
00220 #endif
00221
00222 in->n = nx*5 + 1;
00223 in->x = (real *)malloc(in->n * sizeof(real));
00224 in->y = (real *)malloc(in->n * sizeof(real));
00225 in->t = (real *)malloc(in->n * sizeof(real));
00226 in->spx = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00227 in->spy = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00228 in->p = (real *)malloc(in->n * sizeof(real));
00229
00230 for (i = 0; i < (in->n - 1)/2; i++) {
00231 tpi = (PI - theta)*i/((in->n - 1)/2 - 1);
00232 in->x[i] = xc1 + diameter*cos(tpi);
00233 in->y[i] = YMIN + diameter*sin(tpi);
00234 }
00235 in->x[(in->n - 1)/2] = (xc1 + xc2)/2.;
00236 in->y[(in->n - 1)/2] = YMIN + height;
00237 for (i = (in->n - 1)/2 + 1; i < in->n; i++) {
00238 in->x[i] = xc2 + diameter;
00239 in->y[i] = YMIN + height + width/2. + (i - (in->n - 1)/2 - 1)*((real)ny - 2. - height - width/2.)/(real)(in->n - 2 - (in->n - 1)/2);
00240 }
00241 in->y[in->n - 1] = 0.001 + (real)ny;
00242 in->bc = AXIBOTH;
00243 #if 0
00244 for (i = 0; i < in->n/2; i++) {
00245 double tmp;
00246 tmp = in->x[i];
00247 in->x[i] = in->x[in->n - 1 - i];
00248 in->x[in->n - 1 - i] = tmp;
00249
00250 tmp = in->y[i];
00251 in->y[i] = in->y[in->n - 1 - i];
00252 in->y[in->n - 1 - i] = tmp;
00253 }
00254 #endif
00255 #if 0
00256 for (i=0; i<=in->n-1; i++)
00257 in->x[i] = (real)nx - in->x[i] + 0.05;
00258 #endif
00259 }
00260
00261
00262 void inifile(interface *in, int nx, int ny, char *file)
00263 {
00264 FILE *fptr = fopen(file, "rt");
00265 int i, n = 0;
00266 float x, y;
00267
00268 if (!fptr) {
00269 fprintf(stderr, "inifile(): cannot open file `%s'\n", file);
00270 exit(1);
00271 }
00272 while (fscanf(fptr, "%f %f", &x, &y) == 2)
00273 n++;
00274 printf("------- Initialisation parameters ------\n");
00275 printf("File: %s, npoints: %d\n", file, n);
00276 in->n = n;
00277 in->x = (real *)malloc(in->n * sizeof(real));
00278 in->y = (real *)malloc(in->n * sizeof(real));
00279 in->t = (real *)malloc(in->n * sizeof(real));
00280 in->spx = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00281 in->spy = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00282 in->p = (real *)malloc(in->n * sizeof(real));
00283
00284 rewind(fptr);
00285 for (i = 0; i < n; i++) {
00286 fscanf(fptr, "%f %f", &x, &y);
00287 in->x[i] = (real)(nx - 2)*x + 2.;
00288 in->y[i] = (real)(nx - 2)*y + YMIN;
00289 }
00290
00291 in->bc = AXIBOTH;
00292
00293
00294 fclose(fptr);
00295 }
00296
00297
00298 static void inibub(interface *in,
00299 real2D u, real2D v, real2D p,
00300 real sigma,
00301 real tau,
00302 real xvel,
00303 real po,
00304 real xc, real diameter,
00305 real eps, int mode,
00306 int nx, int ny)
00307 {
00308 real h, r, tpi;
00309 int i, j;
00310
00311 h = 1.0 / (nx - 2);
00312
00313 printf("------- Initialisation parameters ------\n");
00314 printf("Bubble: C=(%g,0), d=%g, mode=%d, eps=%g\n",
00315 xc, diameter, mode, eps);
00316
00317 diameter *= 0.5 * (nx - 2);
00318 printf("radius: %f\n", diameter);
00319 sigma *= tau * tau / (h * h * h);
00320 po *= sq(tau/h);
00321 xc = xc*(nx - 2) + 2.0;
00322
00323 for (i = 1; i <= nx; i++)
00324 for (j = 1; j <= ny; j++) {
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334 p[i][j] = - 2.*sigma/diameter;
00335 }
00336
00337 in->n = 10*nx;
00338 in->x = (real *)malloc(in->n * sizeof(real));
00339 in->y = (real *)malloc(in->n * sizeof(real));
00340 in->t = (real *)malloc(in->n * sizeof(real));
00341 in->spx = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00342 in->spy = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00343 in->p = (real *)malloc(in->n * sizeof(real));
00344
00345 for (i = 0; i < in->n; i++) {
00346 tpi = PI*(in->n - 1 - i)/(in->n - 1);
00347 r = diameter*(1. + eps*sphericalY(mode, 0, tpi));
00348 in->x[i] = xc + r*cos(tpi);
00349 in->y[i] = YMIN + r*sin(tpi);
00350 }
00351 in->bc = AXITRUE;
00352 }
00353
00354
00355 void inibubble(interface **in,
00356 int *nin,
00357 real2D u, real2D v, real2D p,
00358 real sigma,
00359 real tau,
00360 real xvel,
00361 real po,
00362 int nx, int ny)
00363 {
00364 real diameter, xc, eps = 0.0;
00365 int mode = 1;
00366
00367 diameter = 0.5; xc = 0.5;
00368
00369 realreadSI("diameter", &diameter, stdin);
00370 realreadSI("xc", &xc, stdin);
00371 intread("mode", &mode, stdin);
00372 realreadSI("eps", &eps, stdin);
00373
00374 *in = (interface *)malloc(sizeof(interface));
00375 *nin = 1;
00376
00377 inibub(*in, u, v, p, sigma, tau, xvel, po, xc, diameter, eps, mode, nx, ny);
00378 }
00379
00380
00381 void iniwave(interface **in,
00382 int *nin,
00383 real2D u, real2D v, real2D p,
00384 real tau,
00385 real xvel,
00386 int nx, int ny)
00387 {
00388 real h, x, y, ampli = 0.1, wavenr = 1.0, position = 0.5;
00389 int i;
00390
00391 realreadSI("amplitude", &li, stdin);
00392 realreadSI("wavenr", &wavenr, stdin);
00393 realreadSI("position", &position, stdin);
00394 printf("------- Initialisation parameters ------\n");
00395 printf("Wave: wavenr=%g amplitude=%g position=%g\n",
00396 wavenr, ampli, position);
00397
00398 ampli *= ny - 2;
00399 h = 1.0 / (nx - 2);
00400
00401 *in = (interface *)malloc(sizeof(interface));
00402 *nin = 1;
00403 (*in)->n = 10*nx;
00404 (*in)->x = (real *)malloc((*in)->n * sizeof(real));
00405 (*in)->y = (real *)malloc((*in)->n * sizeof(real));
00406 (*in)->t = (real *)malloc((*in)->n * sizeof(real));
00407 (*in)->spx = (polynom3 *)malloc(((*in)->n - 1) * sizeof(polynom3));
00408 (*in)->spy = (polynom3 *)malloc(((*in)->n - 1) * sizeof(polynom3));
00409 (*in)->p = (real *)malloc((*in)->n * sizeof(real));
00410
00411 for (i = 0; i < (*in)->n - 1; i++) {
00412 x = (real)i * (real)(nx - 2.0) / (real)((*in)->n - 1) + 2.1;
00413 y = ampli*cos((x - 2.0)*2.0*PI*wavenr/(real)(nx - 2.0))
00414 + position*ny + 1.501;
00415 (*in)->x[i] = x;
00416 (*in)->y[i] = y;
00417 }
00418 (*in)->x[(*in)->n - 1] = (*in)->x[0] + nx - 2.0;
00419 (*in)->y[(*in)->n - 1] = (*in)->y[0];
00420 }
00421
00422
00423 void inirealwave(interface **in,
00424 int *nin,
00425 real2D u, real2D v, real2D p,
00426 real tau,
00427 real xvel,
00428 int nx, int ny)
00429 {
00430 real h, x, y, ampli = 0.1, wavenr = 1.0;
00431 int i;
00432
00433 realreadSI("amplitude", &li, stdin);
00434 realreadSI("wavenr", &wavenr, stdin);
00435 printf("------- Initialisation parameters ------\n");
00436 printf("Wave: wavenr=%g amplitude=%g\n", wavenr, ampli);
00437
00438 ampli *= ny - 2;
00439 h = 1.0 / (nx - 2);
00440
00441 *in = (interface *)malloc(sizeof(interface));
00442 *nin = 1;
00443 (*in)->n = 100;
00444 (*in)->x = (real *)malloc((*in)->n * sizeof(real));
00445 (*in)->y = (real *)malloc((*in)->n * sizeof(real));
00446 (*in)->t = (real *)malloc((*in)->n * sizeof(real));
00447 (*in)->spx = (polynom3 *)malloc(((*in)->n - 1) * sizeof(polynom3));
00448 (*in)->spy = (polynom3 *)malloc(((*in)->n - 1) * sizeof(polynom3));
00449 (*in)->p = (real *)malloc((*in)->n * sizeof(real));
00450
00451 for (i = 0; i < (*in)->n - 1; i++) {
00452 x = i * (nx - 2.0) / (real)((*in)->n - 1) + 2.1;
00453 y = ampli*cos((x - 2.0)*2.0*PI*wavenr/(nx - 2.0)) + 0.5*ny + 1.001;
00454 (*in)->x[i] = x;
00455 (*in)->y[i] = y;
00456 }
00457 (*in)->x[(*in)->n - 1] = (*in)->x[0] + nx - 2.0;
00458 (*in)->y[(*in)->n - 1] = (*in)->y[0];
00459 }
00460
00461
00462 void initorus(interface *in,
00463 real2D u, real2D v, real2D p,
00464 real tau,
00465 real xvel,
00466 int nx, int ny)
00467 {
00468 real h, r, tpi;
00469 real xc, yc, diameter, eps;
00470 int mode;
00471 int i, j;
00472
00473 h = 1.0 / (nx - 2);
00474
00475 realreadSI("diameter", &diameter, stdin);
00476 realreadSI("xc", &xc, stdin);
00477 realreadSI("yc", &yc, stdin);
00478 intread("mode", &mode, stdin);
00479 realreadSI("eps", &eps, stdin);
00480
00481 printf("------- Initialisation parameters ------\n");
00482 printf("torus: C=(%g,%g), d=%g, mode=%d, eps=%g\n",
00483 xc, yc, diameter, mode, eps);
00484
00485 diameter *= 0.5 * (nx - 2);
00486 printf("radius: %f\n", diameter);
00487 xc = xc*(nx - 2) + 2.0;
00488 yc = yc*(ny - 2) + 2.0;
00489
00490 in->n = 10*nx;
00491 in->x = (real *)malloc(in->n * sizeof(real));
00492 in->y = (real *)malloc(in->n * sizeof(real));
00493 in->t = (real *)malloc(in->n * sizeof(real));
00494 in->spx = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00495 in->spy = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00496 in->p = (real *)malloc(in->n * sizeof(real));
00497
00498 for (i = 0; i < in->n; i++) {
00499 tpi = 2.*PI*(in->n - 1 - i)/(in->n - 1);
00500 r = diameter*(1. + eps*sphericalY(mode, 0, tpi));
00501 in->x[i] = xc + r*cos(tpi);
00502 in->y[i] = yc + r*sin(tpi);
00503 }
00504 in->x[in->n - 1] = in->x[0];
00505 in->y[in->n - 1] = in->y[0];
00506 in->bc = TRUE_PERIODIC;
00507 }
00508
00509
00510 void inijet(interface *in,
00511 real2D u, real2D v, real2D p,
00512 real tau,
00513 real xvel,
00514 int nx, int ny)
00515 {
00516 real h = 1.0/(nx - 2);
00517 int i, j;
00518
00519 for (i = nx/3; i <= nx; i++)
00520 for (j = 2; j < 10; j++)
00521 u[i][j] = xvel*tau/h*sq(10 - j)/sq(8);
00522
00523 in->n = 4;
00524 in->x = (real *)malloc(in->n * sizeof(real));
00525 in->y = (real *)malloc(in->n * sizeof(real));
00526 in->t = (real *)malloc(in->n * sizeof(real));
00527 in->spx = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00528 in->spy = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00529 in->p = (real *)malloc(in->n * sizeof(real));
00530
00531 in->x[0] = (nx - 2)/4. + 2.2; in->y[0] = YMIN;
00532 in->x[1] = (nx - 2)/2. + 2.; in->y[1] = (ny - 2)/2. + 2.;
00533 in->x[2] = 3.*(nx - 2)/4. + 2.; in->y[2] = (ny - 2)/4. + 2.;
00534 in->x[3] = (nx - 2)/3. + 2.; in->y[3] = YMIN;
00535 in->bc = AXITRUE;
00536 }
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547
00548 void ini_impact2(interface *in, real2D u, real2D v, real xvel, real tau,
00549 int nx, int ny)
00550 {
00551 real h, tpi, r;
00552 real diameter = 0.2, thickness = 0.3, xc1, xc2;
00553 int i, j;
00554 real width = 4.0, height = 4.0, theta;
00555
00556 h = 1.0 / (nx - 2);
00557
00558 realreadSI("diameter", &diameter, stdin);
00559 realreadSI("thickness", &thickness, stdin);
00560
00561 printf("------- Initialisation parameters ------\n");
00562 printf("Impact: D=%g thickness=%g xvel=%g\n", diameter, thickness, xvel);
00563
00564 diameter *= 0.5 * (nx - 2);
00565 printf("radius: %f\n", diameter);
00566 xc1 = thickness*(nx - 2) + 2.0 + diameter + width/2;
00567 xc2 = thickness*(nx - 2) + 2.0 - diameter - width/2;
00568 theta = (height + width/2.)/diameter;
00569
00570 #if 0
00571 for (i = 2; i < nx; i++)
00572 for (j = 2; j < ny; j++) {
00573 r = sqrt(sq((real)i - xc1) + sq((real)j - 1.5));
00574 if (r <= diameter)
00575 u[i][j] = xvel*tau/h;
00576 }
00577 #else
00578 for (i = 2 ; i < nx; i++)
00579 for (j = 2; j < ny; j++)
00580 u[i][j] = xvel*tau/h;
00581 #endif
00582
00583 in->n = nx*5 + 1;
00584 in->x = (real *)malloc(in->n * sizeof(real));
00585 in->y = (real *)malloc(in->n * sizeof(real));
00586 in->t = (real *)malloc(in->n * sizeof(real));
00587 in->spx = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00588 in->spy = (polynom3 *)malloc((in->n - 1) * sizeof(polynom3));
00589 in->p = (real *)malloc(in->n * sizeof(real));
00590
00591 for (i = 0; i < (in->n - 1)/2; i++) {
00592 tpi = (PI - theta)*i/((in->n - 1)/2 - 1);
00593 in->x[i] = xc1 + diameter*cos(tpi);
00594 in->y[i] = YMIN + diameter*sin(tpi);
00595 }
00596 in->x[(in->n - 1)/2] = (xc1 + xc2)/2.;
00597 in->y[(in->n - 1)/2] = YMIN + height;
00598 for (i = (in->n - 1)/2 + 1; i < in->n; i++) {
00599 in->x[i] = xc2 + diameter;
00600 in->y[i] = YMIN + height + width/2. + (i - (in->n - 1)/2 - 1)*((real)ny - 2. - height - width/2.)/(real)(in->n - 2 - (in->n - 1)/2);
00601 }
00602 in->y[in->n - 1] = 0.001 + (real)ny;
00603 in->bc = AXIBOTH;
00604 #if 0
00605 for (i = 0; i < in->n/2; i++) {
00606 double tmp;
00607 tmp = in->x[i];
00608 in->x[i] = in->x[in->n - 1 - i];
00609 in->x[in->n - 1 - i] = tmp;
00610
00611 tmp = in->y[i];
00612 in->y[i] = in->y[in->n - 1 - i];
00613 in->y[in->n - 1 - i] = tmp;
00614 }
00615 #endif
00616 #if 1
00617 for (i=0; i<=in->n-1; i++)
00618 in->x[i] = (real)nx - in->x[i] + 0.05;
00619 #endif
00620 }
00621
00622