datastr.h

Go to the documentation of this file.
00001 /* -----------------------------------------------------------------------------------------
00002     $Header$
00003     $Author: svacek $
00004    ----------------------------------------------------------------------------------------- */
00005 #ifndef _DATASTR_SVH
00006 #define _DATASTR_SVH
00007 typedef struct 
00008 {
00009   char *tag_name;
00010   void *where;
00011   int TYPE;
00012 } tag;
00013 
00014 extern const tag _taglist[];
00015 extern const int _ntags;
00016 extern const tag _obsolete_taglist[];
00017 extern const int _obsolete_ntags;
00018 
00019 #include "fem_header.h"
00020 #include "constants.h"
00021 #include "linalg.h"
00022 /** \mainpage 
00023  *  \section FEMFLUID
00024  *  \author Petr Svacek 
00025  *  \version 1.2
00026  *  \date    2002-2005
00027  *  \warning This package is still under development.
00028  *  
00029  * 
00030  *  \subsection intro Program Introduction
00031  *
00032  *  - Program for numerical simulations of PDE (mainly fluid/structure) problems.
00033  *
00034  *  - Originally was written in C++ language, in Jan 2002 rewritten to C language.
00035  *
00036  *  - Mainly Global Variables are used, because of the following purpose
00037  *    - speed (easy and quick access),
00038  *    - just one allocation needed, 
00039  *
00040  *  The program was intended to be written in such a way, that no comments are needed.
00041  *  However, with new mathematical and physical models included rather hard inspection
00042  *  of the program is needed.
00043  * 
00044  *  \subsection data Datastructure
00045  * 
00046  *  The global datastructure follows the originally design structure, where higher order hierarchichal
00047  *  base functions were taken into account. Next version of the program is recently under development,
00048  *  where a revision of data structure will be considered.
00049  *
00050  *  See files datastr.h, datastr.c and module DATA_STRUCTURE.
00051  *
00052  *
00053  *  \subsection config Configuration 
00054  *   
00055  *  Configuration is read from config file specified at a command line, e.g.
00056  *
00057  *  user (at) computer~>laminar.exe config.ini
00058  *
00059  *  Program first looks into config.ini, removes all white spaces and comments, and starts to read 
00060  *  the configuration from it into global data structure as defined in variable _taglist[].
00061  * 
00062  *  Functions needed for the package are included in wlog.c and wlog.h files.
00063  *
00064  *
00065  *  \subsection mesh Mesh Definition
00066  *
00067  *
00068  *  Basic mesh definition consists of vertices ( x, y ) and triangles ( ELEMENT )
00069  *  Further mesh edges are defined.
00070  *
00071  *
00072  */
00073 
00074 /* -------------------------------------------------------------------------- */
00075 /** \defgroup DATA_STRUCTURE Data Structure */
00076 /** \addtogroup DATA_STRUCTURE */
00077 /*@{*/
00078 /* -------------------------------------------------------------------------- */
00079 /* -------------------------------------------------------------------------- */
00080 /*         Vystupy                                                            */
00081 /* -------------------------------------------------------------------------- */
00082 extern long ListOfMatrixOutput[];
00083 extern int ONsavegmvoutput;
00084 extern int ONsavetecplotoutput;
00085 extern int ONsavetecplotoutput1;
00086 extern int ONsaveresultsoutput;
00087 extern int ONsavebinary;
00088 extern int ONsavepressureoutput;
00089 /* -------------------------------------------------------------------------- */
00090 /*             Soubory                                                        */
00091 /* -------------------------------------------------------------------------- */
00092 extern char cfgfile[];
00093 extern char log_file[];
00094 extern char iter_file[];
00095 extern char report_file[];
00096 extern char results_file[];
00097 extern char stokes_file[];
00098 extern char gridbasename[];
00099 extern char coarsegridbasename[];
00100 extern char timesol[];
00101 extern char rereadfile[];
00102 extern char startlinear[];
00103 extern char start[];
00104 extern char stop[];
00105 extern char releasefile[];
00106 extern char pressurefile[];
00107 extern char airfoilfile[];
00108 extern char forcesfile[];
00109 extern char surfacefile[];
00110 /* -------------------------------------------------------------------------- */
00111 extern long   NElements;
00112 extern long   NSides;
00113 extern long   NPoints;
00114 extern long   NBSides;
00115 
00116 extern double *x,*y;
00117 extern short  *PointMark; 
00118 extern short  *NodeDegree;
00119 
00120 extern double *xT1,*yT1;
00121 extern double *xT2,*yT2;
00122 extern double *xh,*yh,*rh;    
00123 extern long FixPressureIdx;
00124 
00125 extern long *PatchW;
00126 extern long *PatchList;
00127 extern long *UsePatch;
00128 
00129 extern double *RecentGVel1,*RecentGVel2;
00130 extern double *ALE_GridVelocityVector,*GVel1,*GVel2;
00131 extern double *NormalX,*NormalY;
00132 
00133 extern long   **ELEMENT;                
00134 extern short   *ELEMENT_MARK;
00135 extern long   **ELEMENT_BOUNDARY_SIDES;
00136 
00137 
00138 extern long   **SIDE;
00139 extern double  *SIDE_S;
00140 extern short   *SIDE_MARK;
00141 extern long    *BELE[];                 
00142 
00143 extern long    *BSIDE_INDEX;
00144 
00145 extern double max_side,min_side;
00146 
00147 extern int    BndrTypes;
00148 extern int    BndrId[];
00149 extern long   BndrEdges[];
00150 
00151 extern double FirstLayerDistance;
00152 /* -------------------------------------------------------------------------- */
00153 extern long FE_Dimension;
00154 extern long Pressure_FE_Dimension;
00155 
00156 extern long **ElementBsIdx;
00157 extern short **ElementBsDescr;
00158 extern long  **Pressure_ElementBsIdx;
00159 extern short **Pressure_ElementBsDescr;
00160 
00161 extern long **SideBsIdx,*NodeBsIdx;
00162 extern short **SideBsDescr,*NodeBsDescr;
00163 extern long  **Pressure_SideBsIdx,*Pressure_NodeBsIdx;
00164 extern short **Pressure_SideBsDescr,*Pressure_NodeBsDescr;
00165 
00166 extern long **BndrSideBsIdx;
00167 extern short **BndrSideBsDescr;
00168 extern long   **Pressure_BndrSideBsIdx;
00169 extern short  **Pressure_BndrSideBsDescr;
00170 /* -------------------------------------------------------------------------- */
00171 extern int NONLINEAR_STRUCTURE_MODEL;
00172 extern int COUPLED_MODEL;
00173 extern int FLUID_MODEL;    
00174 extern int STRUCTURE_MODEL;
00175 
00176 extern double releasetime  ;
00177 extern double releasetimesec  ;
00178 extern double cofgheight ;
00179 extern double angle ;
00180 extern double tail_angle ;
00181 extern double velocity_tailangle ;
00182 extern double yvelocity ;
00183 extern double angularvelocity ;
00184 
00185 extern double restartangle;
00186 extern double restarty;
00187 extern double restartflap;
00188 extern long STATIONARY_ITER;
00189 
00190 extern double airfoil_m;
00191 extern double airfoil_Khh;
00192 extern double airfoil_Kha;
00193 extern double airfoil_Kah;
00194 extern double airfoil_Kaa;
00195 extern double airfoil_Kbb;
00196 extern double airfoil_Ia;
00197 extern double airfoil_Sa; 
00198 extern double airfoil_Ib;
00199 extern double airfoil_Sb;
00200 extern double airfoil_Sab; 
00201 extern double damping_hh,damping_ha;
00202 extern double damping_ah,damping_aa;
00203 extern double damping_bb;
00204 
00205 extern double frequency1,amplitude1,amplitude0;
00206 extern double frequency2,amplitude2;
00207 extern double frequency3,amplitude3;
00208 
00209 extern double force_lift,force_moment;
00210 extern double xmcenter,ymcenter;
00211 
00212 extern double xhc,yhc; 
00213 extern double xTAIL1orig ,xTAIL2orig, yTAILorig;
00214 extern double xTAIL1     ,xTAIL2    , yTAIL    ;
00215 
00216 extern double DragForce[],LiftForce[],TorsionalMoment[],FlapTorsionalMoment[];
00217 /* -------------------------------------------------------------------------- */
00218 extern int q1,q2;
00219 extern int n1,n2;
00220 extern double *X,*w;
00221 extern double **L,*w2;
00222 
00223 extern int Q1,Q2;
00224 extern int N1,N2;
00225 extern double *X1,*W;   
00226 extern double **L1,*W2;      
00227 /* -------------------------------------------------------------------------- */
00228 extern int element_type; 
00229 extern int deg_max,RefDimSide,RefDimBubble,RefTriDim;
00230 extern int deg_side,deg_bubble;
00231 extern int RefPressureDimSide,RefPressureDimBubble,RefPressureTriDim;
00232 extern int deg_press_side,deg_press_bubble;
00233 extern short *degx,*degy;
00234 extern short *degx_press,*degy_press;
00235 extern double **basefn_values;
00236 extern double **sidebasefn_values;
00237 extern double **grad_basefn_values[3];
00238 extern double **hes_basefn_values[3][3];
00239 extern int *base_pressure_idx;
00240 /* -------------------------------------------------------------------------- */
00241 extern const long NEXPORT;
00242 extern const double L_EXPORT[][3];
00243 extern const int NRefTri;
00244 extern const int ref_tri[][3];
00245 extern double **export_basefn_values;
00246 /* -------------------------------------------------------------------------- */
00247 extern double kinematic_viscosity;
00248 extern double Reynolds;
00249 extern double viscosity;
00250 extern double visc_laminar;
00251 extern double tau;
00252 extern double current_time;
00253 extern double ref_L;
00254 extern double ref_U;
00255 extern double ref_W;
00256 extern double density;
00257 extern double fluid_density;                     
00258 extern double gas_density;                           
00259 extern double fluid_viscosity;                    
00260 extern double gas_viscosity;                      
00261 extern double freesurf_x0,freesurf_y0;
00262 extern double freesurf_x1,freesurf_y1;
00263 
00264 extern double time_physical; 
00265 extern double inlet_velocity;
00266 extern double reference_PRESSURE_OUT;
00267 extern double reference_PRESSURE0;
00268 extern double reference_PRESSURE1;
00269 extern double reference_PRESSURE2;
00270 extern double reference_PRESSURE3;
00271 extern double reference_PRESSURE4;
00272 extern double prefOUT;
00273 extern double prefIN0;
00274 extern double prefIN1;
00275 extern double prefIN2;
00276 extern double prefIN3;
00277 extern double prefIN4;
00278 /* -------------------------------------------------------------------------- */
00279 extern long MaxOfIter;
00280 extern long MaxOfIterTime;
00281 extern double TIME_PERIOD;
00282 extern long MaxOfIter_inner;
00283 extern long TurbulenceINNER;
00284 extern long GMRESrestart;
00285 extern long MaxOfNonlinear;
00286 extern long MaxOfFSIter;
00287 extern double epsilon_abs             ;
00288 extern double epsilon                 ;
00289 extern double epsilon_inner           ;
00290 extern double epsilontime             ;
00291 extern double epsilon_nonlinear       ;
00292 extern double epsilon_nonlinear_rel   ;
00293 extern double epsilon_newton          ;
00294 extern double epsilon_ode             ;
00295 extern long itime;
00296 extern int saveeverytime; 
00297 extern int saveevery; 
00298 extern int saveevery_inner; 
00299 extern int saveevery_pressure;
00300 extern double theta_relaxation;
00301 extern int LOAD_PROGRAM_STATE;
00302 extern double conservativity,kinetic_energy,dissipation;
00303 extern int EMPLOYED_STABILIZATION; 
00304 extern double delta;
00305 extern double sigma;
00306 extern double rho;
00307 extern double adc;
00308 extern int STABILIZATION_CHOICE_DELTA;
00309 extern int STABILIZATION_CHOICE_H;
00310 extern int STABILIZATION_CHOICE_NORM;
00311 extern double global_bnorm;
00312 extern double NONNEWTONIAN_POWER;
00313 extern double NONNEWTONIAN_VISCOSITY;
00314 extern double YIELDSTRESS;
00315 extern long   *triplet_I,*triplet_J;
00316 extern double *triplet_VAL;
00317 extern long    triplet_nz,triplet_allocated;
00318 extern vector  LocalLinValues1;
00319 extern vector  LocalLinValues2;
00320 extern vector  LocalLinValues3;
00321 extern vector NDensityFunction;
00322 extern vector NViscosityFunction;
00323 extern vector NLevelSetFunction2;
00324 extern vector NLevelSetFunction1;
00325 extern vector NLevelSetFunction0;
00326 extern vector NLevelSetFunctionTMP;
00327 extern vector  LinValues1;
00328 extern vector  LinValues2;
00329 extern vector  LinValues3;
00330 extern vector  FiniteVolumeValues1;
00331 extern vector  FiniteVolumeValues2;
00332 extern vector  FiniteVolumeValues3;
00333 extern vector  FiniteVolumeValues4;
00334 extern vector  FiniteVolumeValues5;
00335 extern vector  FiniteVolumeValues6;
00336 extern vector  FiniteVolumeValues7;
00337 extern vector  FiniteVolumeValues8;
00338 extern sparse ALEGridMotion_Stiffness,ALEGridMotion_Preconditioner;
00339 extern vector ALETension,ALEDeflection;
00340 extern int ALE_CONSERVATIVE;
00341 extern int ALE_USE_DIVGRID;
00342 extern vector bc_u,bc_v,bc_p,bc;
00343 extern vector uvec2,uvec1,uvec0,uvectemp; 
00344 extern vector ref;
00345 extern vector visc_RANS;
00346 extern vector WALLdistance;
00347 extern vector visc_SA2,visc_SA1,visc_SA0,visc_SATMP;
00348 extern vector SST_k2,SST_k1,SST_k0;
00349 extern vector SST_omg2,SST_omg1,SST_omg0;
00350 extern vector KEPS_k2,KEPS_k1,KEPS_k0;
00351 extern vector KEPS_eps2,KEPS_eps1,KEPS_eps0;
00352 extern vector velU_Dx,velU_Dy,velV_Dx,velV_Dy;          
00353 extern vector valueA_Dx,valueA_Dy,valueB_Dx,valueB_Dy; 
00354 extern double AERODYNAMIC[];
00355 extern double SOLVER_NONLINEAR[];
00356 extern long SOLVER_NONLINEAR_ITER,SOLVER_NONLINEAR_TIME;
00357 extern void   *SolverSymbolic;
00358 extern void   *SolverNumeric;
00359 extern void   *SolverControl;
00360 extern void   *SolverInfo;
00361 extern sparse SolverS;
00362 extern sparse LinSolS;
00363 extern vector rhs;
00364 extern int ADC_iter;
00365 extern matrix M,Minv;
00366 extern motion U2,U1,U0,WW,TF;
00367 extern basefunction Bj,Bk;
00368 extern basefunction NUT,TRB2,TRB1,K2,OMG2,K1,OMG1,EPS2,EPS1;
00369 extern vector DIST,locUX,locUY,locVX,locVY,locKX,locKY;
00370 extern long   CPUP_IDXA[]   ,CPUP_IDXB[];      
00371 extern double CPUP_CoefA[]  ,CPUP_CoefB[];          
00372 extern long   CPDOWN_IDXA[] ,CPDOWN_IDXB[];      
00373 extern double CPDOWN_CoefA[],CPDOWN_CoefB[];          
00374 extern double TWOPHASEMass,TWOPHASEKineticEnergy,TWOPHASEPotentialEnergy,SurfaceAverageHeight,SurfaceMaxHeight,SurfaceMinHeight,SurfaceLeft,SurfaceRight;
00375 /* -------------------------------------------------------------------------- */
00376 extern int COUPLED_MODEL;
00377 extern int FLUID_MODEL;    
00378 extern int STRUCTURE_MODEL;
00379 extern double releasetime  ;
00380 extern double cofgheight ;
00381 extern double angle ;
00382 extern double tail_angle ;
00383 extern double velocity_tailangle ;
00384 extern double yvelocity ;
00385 extern double angularvelocity ;
00386 extern double restartangle;
00387 extern double restarty;
00388 extern double airfoil_m;
00389 extern double airfoil_Khh;
00390 extern double airfoil_Kha;
00391 extern double airfoil_Kah;
00392 extern double airfoil_Kaa;
00393 extern double airfoil_Ia;
00394 extern double airfoil_Sa; 
00395 extern double damping_hh,damping_ha;
00396 extern double damping_ah,damping_aa;
00397 extern double frequency1,amplitude1,amplitude0;
00398 extern double frequency2,amplitude2;
00399 extern double frequency3,amplitude3;
00400 extern double xlast[HISTORY_LIFT][10];
00401 extern double xRECENT[];
00402 extern double force_lift,force_moment;
00403 extern double xmcenter,ymcenter;
00404 extern double xhc,yhc; 
00405 extern double xTAIL1,xTAIL2, yTAIL;
00406 extern double DragForce[],LiftForce[],TorsionalMoment[];
00407 /*@}*/
00408 /* -------------------------------------------------------------------------- */
00409 #endif

Generated on Sun May 27 11:59:43 2007 for FEMFLUID by  doxygen 1.4.6