00001 #include "interpolation.h"
00002
00003 #define NOTENSION 0
00004 #define TENSION_U 1
00005 #define TENSION_V 2
00006 #define NSEC 10
00007 #define MASSPREC 1.e-3
00008
00009 #define TRUE_PERIODIC 1
00010 #define APPROX_PERIODIC 2
00011 #define AXITRUE 3
00012 #define AXINATURAL 4
00013 #define AXIBOTH 5
00014
00015 #define INTERPREC 1.e-6
00016 #define MARK_TYPE 0
00017 #define HOR_TYPE 1
00018 #define VER_TYPE 2
00019
00020 typedef struct {
00021 real *x, *y, *t;
00022 polynom3 *spx, *spy;
00023 #ifdef FREE
00024 real *p;
00025 #endif
00026 int n;
00027 char bc;
00028 } interface;
00029
00030
00031 typedef struct {
00032 int n;
00033 int j1[NSEC], j2[NSEC], in[NSEC];
00034 } intersec;
00035
00036 extern int interface_arc(interface in, real t);
00037
00038 extern void interface_write_markers(interface in, FILE *fptr);
00039
00040 extern void interface_write_markers_speed(real time, interface in, real2D u,
00041 real2D v, real tau, real du,
00042 int nx, int ny, FILE *fptr);
00043
00044 extern void interface_write_splines(interface in, FILE *fptr, int nb);
00045
00046 extern void curvature_write(interface in, FILE *fptr);
00047
00048 extern real interfaces_area(interface *in, int n);
00049
00050 extern real interfaces_axivolume(interface *in, int n);
00051
00052 extern real interfaces_xmoment(interface *in, int n);
00053
00054 extern real interfaces_ymoment(interface *in, int n);
00055
00056 extern real interfaces_x_amp(interface *in, int n);
00057
00058 extern real interfaces_y_amp(interface *in, int n);
00059
00060 extern void interface_init(interface *dst);
00061
00062
00063
00064
00065
00066 extern void interface_splines(interface in, int nx, int ny);
00067
00068 extern void interface_redis(interface *in, real space);
00069
00070 extern void interface_redis_scale(interface *in, interface src, real space,
00071 real scale);
00072
00073 extern void interface_axisymmetry(interface *in, real space, int nx, int ny);
00074
00075 extern int reconnect_axis(interface *in, int nx, int ny, real length);
00076
00077 extern void interface_copy(interface *dst, interface in);
00078
00079 extern void interface_free(interface in);
00080
00081 extern void interface_advect(interface in, real2D u, real2D v,
00082 #ifdef FREE
00083 real2D a, real2D c, real2D cc,
00084 #endif
00085 int nx, int ny);
00086
00087 extern void interface_to_c(interface *in, int nint,
00088 #ifdef RECON
00089 intersec **inter,
00090 #endif
00091 real2D work, real2D c, real xo, real yo,
00092 int nx, int ny, int sflag,
00093 real2D rhox, real2D p, real sigma, real tau);
00094
00095 extern real interface_inside(interface in, real x, real y);
00096
00097 extern void interface_fill(interface *in, int nin, real2D ap, int nx, int ny);
00098
00099 extern int interface_split_axis(interface **inlist, real length);
00100
00101 extern int interface_merge_axis(interface **inlist, real length);
00102
00103 extern real bilinu(real2D u, real x1, real y1);
00104
00105 extern real bilinv(real2D v, real x1, real y1);