Main Page   Data Structures   File List   Data Fields   Globals  

ini_conditions.h File Reference

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Functions

void inidroplet (interface **in, int *nin, real2D u, real2D v, real2D p, real sigma, real tau, real xvel, int nx, int ny)
void inidroplets (interface **in, int *nin, real2D u, real2D v, real2D p, real sigma, real tau, real xvel, int nx, int ny)
void inifusion (interface *in, int nx, int ny)
void ini_impact (interface *in, real2D u, real2D v, real xvel, real tau, int nx, int ny)
void inifile (interface *in, int nx, int ny, char *file)
void inbubble (interface **in, int *nin, real2D u, real2D v, real2D p, real sigma, real tau, real xvel, real po, int nx, int ny)
void iniwave (interface **in, int *nin, real2D u, real2D v, real2D p, real tau, real xvel, int nx, int ny)
void initorus (interface *in, real2D u, real2D v, real2D p, real tau, real xvel, int nx, int ny)
void inijet (interface *in, real2D u, real2D v, real2D p, real tau, real xvel, int nx, int ny)
void ini_impact2 (interface *in, real2D u, real2D v, real xvel, real tau, int nx, int ny)


Function Documentation

void inbubble interface **    in,
int *    nin,
real2D    u,
real2D    v,
real2D    p,
real    sigma,
real    tau,
real    xvel,
real    po,
int    nx,
int    ny
 

void ini_impact interface   in,
real2D    u,
real2D    v,
real    xvel,
real    tau,
int    nx,
int    ny
 

Definition at line 187 of file ini_conditions.c.

References AXIBOTH, interface::bc, interface::n, real, real2D, realreadSI, interface::spx, interface::spy, sq, interface::t, interface::x, interface::y, and YMIN.

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 /* xc1 - diameter */ ; 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 }

void ini_impact2 interface   in,
real2D    u,
real2D    v,
real    xvel,
real    tau,
int    nx,
int    ny
 

Definition at line 548 of file ini_conditions.c.

References AXIBOTH, interface::bc, interface::n, real, real2D, realreadSI, interface::spx, interface::spy, sq, interface::t, interface::x, interface::y, and YMIN.

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 /* xc1 - diameter */ ; 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 }

void inidroplet interface **    in,
int *    nin,
real2D    u,
real2D    v,
real2D    p,
real    sigma,
real    tau,
real    xvel,
int    nx,
int    ny
 

Definition at line 84 of file ini_conditions.c.

References real, real2D, and realreadSI.

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 }

void inidroplets interface **    in,
int *    nin,
real2D    u,
real2D    v,
real2D    p,
real    sigma,
real    tau,
real    xvel,
int    nx,
int    ny
 

Definition at line 109 of file ini_conditions.c.

References real, real2D, and realreadSI.

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 }

void inifile interface   in,
int    nx,
int    ny,
char *    file
 

Definition at line 262 of file ini_conditions.c.

References AXIBOTH, interface::bc, interface::n, real, interface::spx, interface::spy, interface::t, interface::x, interface::y, and YMIN.

Referenced by initialize().

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 /*cld*/  
00291   in->bc = AXIBOTH;
00292 /*cld*/
00293 /*in->bc = AXITRUE*/
00294   fclose(fptr);
00295 }

void inifusion interface   in,
int    nx,
int    ny
 

Definition at line 138 of file ini_conditions.c.

References AXITRUE, interface::bc, interface::n, real, realreadSI, sphericalY(), interface::spx, interface::spy, interface::t, interface::x, interface::y, and YMIN.

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 }

void inijet interface   in,
real2D    u,
real2D    v,
real2D    p,
real    tau,
real    xvel,
int    nx,
int    ny
 

Definition at line 510 of file ini_conditions.c.

References AXITRUE, interface::bc, interface::n, real, real2D, interface::spx, interface::spy, sq, interface::t, interface::x, interface::y, and YMIN.

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 }

void initorus interface   in,
real2D    u,
real2D    v,
real2D    p,
real    tau,
real    xvel,
int    nx,
int    ny
 

Definition at line 462 of file ini_conditions.c.

References interface::bc, interface::n, real, real2D, realreadSI, sphericalY(), interface::spx, interface::spy, interface::t, TRUE_PERIODIC, interface::x, and interface::y.

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 }

void iniwave interface **    in,
int *    nin,
real2D    u,
real2D    v,
real2D    p,
real    tau,
real    xvel,
int    nx,
int    ny
 

Definition at line 381 of file ini_conditions.c.

References real, real2D, and realreadSI.

00387 {
00388   real h, x, y, ampli = 0.1, wavenr = 1.0, position = 0.5;
00389   int i;
00390 
00391   realreadSI("amplitude", &ampli, 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 }


Generated on Wed Feb 19 22:27:27 2003 for Markers by doxygen1.2.18