00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef PDH_NS_MIXED_BC_H
00027 #define PDH_NS_MIXED_BC_H
00028
00029 #include <stdio.h>
00030
00031 #include "uth_mesh.h"
00032
00033 #ifdef __cplusplus
00034 extern "C"
00035 {
00036 #endif
00037
00038
00039
00040
00041
00042
00043
00044
00045 typedef enum {
00046 BC_NS_MIXED_NONE,
00047 BC_NS_MIXED_INFLOW_RECT2D,
00048 BC_NS_MIXED_INFLOW_LINEAR2D,
00049 BC_NS_MIXED_INFLOW_CIRCLE3D,
00050 BC_NS_MIXED_OUTFLOW,
00051 BC_NS_MIXED_NOSLIP,
00052 BC_NS_MIXED_FREE_SLIP,
00053 BC_NS_MIXED_SYMMETRY,
00054 BC_NS_MIXED_VELOCITY,
00055 BC_NS_MIXED_MARANGONI,
00056 BC_NS_MIXED_CONTACT
00057 } pdt_ns_mixed_bctype;
00058
00059 typedef enum {
00060 BC_NS_MIXED_VEL_ORIENT_GLOB=0,
00061 BC_NS_MIXED_VEL_ORIENT_LOC=1
00062 } pdt_ns_mixed_bc_vel_orient;
00063
00064
00065
00066
00067
00068
00069
00070
00071 typedef struct {
00072 int bnum;
00073 double n1[3];
00074 double n2[3];
00075 double n3[3];
00076 double n4[3];
00077 double v;
00078 } pdt_ns_mixed_bc_inflow_rect_2d;
00079
00080 typedef struct {
00081 int bnum;
00082 double n1[3];
00083 double n2[3];
00084 double v;
00085 } pdt_ns_mixed_bc_inflow_linear_2d;
00086
00087 typedef struct {
00088 int bnum;
00089 double center[3];
00090 double radius;
00091 double v;
00092 } pdt_ns_mixed_bc_inflow_circle_3d;
00093
00094
00095
00096
00097 typedef struct {
00098 int bnum;
00099 double pressure;
00100 } pdt_ns_mixed_bc_outflow;
00101
00102 typedef struct {
00103 int bnum;
00104 double v[3];
00105 int vel_orient;
00106 } pdt_ns_mixed_bc_velocity;
00107
00108 typedef struct {
00109 double p;
00110 double pin_node_coor[3];
00111 } pdt_ns_mixed_pin_pressure;
00112
00113 typedef struct {
00114 double v[3];
00115 double pin_node_coor[3];
00116 } pdt_ns_mixed_pin_velocity;
00117
00118 typedef struct {
00119 int bnum;
00120 double n[3];
00121 double node_coor[3];
00122 } pdt_ns_mixed_bc_marangoni;
00123
00124 typedef struct {
00125 int bnum;
00126 int setting_length;
00127 int IDs[2];
00128 pdt_ns_mixed_bctype bc_subtype;
00129 utt_mesh_bc_type type;
00130 } pdt_ns_mixed_bc_contact;
00131
00132
00133
00134
00135 typedef struct {
00136 int bnum;
00137 pdt_ns_mixed_bctype bc_ns_mixed;
00138 int bc_ns_mixed_data_idx;
00139 } pdt_ns_mixed_bc_assignments;
00140
00141
00142 typedef struct {
00143 pdt_ns_mixed_bc_assignments *bc_assignments;
00144 int bc_assignments_count;
00145
00146 pdt_ns_mixed_bc_inflow_circle_3d *bc_inflow_circle_3d;
00147 int bc_inflow_circle_3d_count;
00148
00149 pdt_ns_mixed_bc_inflow_rect_2d *bc_inflow_rect_2d;
00150 int bc_inflow_rect_2d_count;
00151
00152 pdt_ns_mixed_bc_inflow_linear_2d *bc_inflow_linear_2d;
00153 int bc_inflow_linear_2d_count;
00154
00155 pdt_ns_mixed_bc_outflow *bc_outflow;
00156 int bc_outflow_count;
00157
00158 pdt_ns_mixed_bc_velocity *bc_velocity;
00159 int bc_velocity_count;
00160
00161 pdt_ns_mixed_bc_marangoni *bc_marangoni;
00162 int bc_marangoni_count;
00163
00164 pdt_ns_mixed_pin_pressure *pin_pressure;
00165 int pin_pressure_count;
00166
00167 pdt_ns_mixed_pin_velocity *pin_velocity;
00168 int pin_velocity_count;
00169
00170 pdt_ns_mixed_bc_contact *bc_contact;
00171 int bc_contact_count;
00172
00173
00174 } pdt_ns_mixed_bc;
00175
00176
00177
00178
00179
00180
00181
00182
00183
00187 int pdr_ns_mixed_bc_read(
00188 char *Work_dir,
00189 char *Filename,
00190 FILE *Interactive_output,
00191 pdt_ns_mixed_bc *Bc_db);
00192
00196 int pdr_ns_mixed_bc_free(pdt_ns_mixed_bc *Bc_db);
00197
00201 int pdr_ns_mixed_get_pressure_pins_count(const pdt_ns_mixed_bc *Bc_db);
00202
00203
00207 int pdr_ns_mixed_get_velocity_pins_count(const pdt_ns_mixed_bc *Bc_db);
00208
00209
00213 int pdr_ns_mixed_get_bc_assign_count(const pdt_ns_mixed_bc *Bc_db);
00214
00215
00219 pdt_ns_mixed_pin_pressure* pdr_ns_mixed_get_pressure_pin(
00220 const pdt_ns_mixed_bc *Bc_db,
00221 int Idx
00222 );
00223
00227 pdt_ns_mixed_pin_velocity* pdr_ns_mixed_get_velocity_pin(
00228 const pdt_ns_mixed_bc *Bc_db,
00229 int Idx
00230 );
00231
00235 pdt_ns_mixed_bctype pdr_ns_mixed_get_bc_type(
00236 const pdt_ns_mixed_bc *Bc_db,
00237 int Bnum
00238 );
00239
00240
00244 void* pdr_ns_mixed_get_bc_data(
00245 const pdt_ns_mixed_bc *Bc_db,
00246 int Bnum
00247 );
00248
00249
00253 int pdr_ns_mixed_update_timedep_bc(
00254 const pdt_ns_mixed_bc *Bc_db,
00255 double Time
00256 );
00257
00258
00259 #ifdef __cplusplus
00260 }
00261 #endif
00262
00263 #endif