00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "gtypes.h"
00011 #include <stdio.h>
00012 #include <stdlib.h>
00013 #include <string.h>
00014 #include <ctype.h>
00015 #include <iostream.h>
00016 #include <fstream.h>
00017 #include <math.h>
00018 #include <unistd.h>
00019 #include "gllbasis.hpp"
00020 #include "glbasis.hpp"
00021 #include "rectquad2d.hpp"
00022 #include "pcblockjac_helm.hpp"
00023 #include "pcblockjac_lap.hpp"
00024 #include "timer.h"
00025 #include "mtk.hpp"
00026 #include "ns.hpp"
00027 #include "burgers.hpp"
00028 #include "gllbasis.hpp"
00029 #include "glbasis.hpp"
00030 #include "glop.hpp"
00031 #include "gtlist.hpp"
00032 #include "gtlistarray.hpp"
00033 #include "gttlist.hpp"
00034 #include "mesh_reader.hpp"
00035 #include "gbin_writer.hpp"
00036 #include "gbin_reader.hpp"
00037 #include "gcomm.hpp"
00038 #include "gutils.hpp"
00039 #include "gtbuffer.hpp"
00040 #include "param_reader.hpp"
00041 #include "apost_error.hpp"
00042 #include "morton_keygen.hpp"
00043 #include "glogger.hpp"
00044 #include "point.hpp"
00045 #include "gobjbuffer.hpp"
00046 #include "gpartitioner.hpp"
00047 #include "gpmelemid.hpp"
00048 #include "gifilter.hpp"
00049
00050 #if defined(MPI_GENERIC_DEFAULT)
00051 # include "mpi.h"
00052 #endif
00053
00054 enum GSVAR {GSV1=0, GSV2, GSV3, GSP, GSV1B, GSV2B, GSV3B};
00055 enum GERROR {GERR_NONE=0, GERR_STEP, GERR_TIMESTEP, GERR_DUMP, GERR_ADAPT, GERR_OUT, GERR_LOG};
00056
00057
00058 #if defined(_GASPAR_H_INIT)
00059
00060 GINT rank = 0;
00061 GINT nproc = 0;
00062 GINT nd_ = 2;
00063 GINT nEvolvedFields_ = 1;
00064 GINT naPostFields_ = 1;
00065 GINT nUserFields_ = 0;
00066 GINT Ne[] = {2,2,0};
00067 GINT xN[] = {8,8,0};
00068 GINT u1iter = 1024;
00069 GINT u2iter = 1024;
00070 GINT piter = 1024;
00071 GINT nBdyCond_ = 0 ;
00072 GINT ngVertices_ = ((GINT )pow(2.0,GDIM));
00073 GINT *iadv_ = NULL;
00074 GINT nadv_ = 0;
00075 GINT nuserdynamiclog_ = 0;
00076 GINT nuserstaticlog_ = 0;
00077 GERROR iGError_ = GERR_NONE;
00078 STOPCONDTYPE iStopCond_ = BY_CYCLE ;
00079 STOPCONDTYPE iAMRCond_ = BY_CYCLE ;
00080 STOPCONDTYPE iLBalCond_ = BY_CYCLE ;
00081 OUTPUTTYPE iOutType_ = OUT_BIN;
00082 GINT iEvolType_ = 0;
00083 GINT nvert_ = ((GINT )pow(2.0,(GSHORT)nd_));
00084 GINT ndmpmeta_ = 35;
00085 GINT icycle_ = 0;
00086 GINT icycle_max_ = 1 ;
00087 GINT icycle_out_beg_ = 0 ;
00088 GINT icycle_out_end_ = 100000 ;
00089 GINT icycle_out_skip_ = 1 ;
00090 GINT icycle_out_last_ = 0 ;
00091 GINT icycle_dmp_beg_ = 0 ;
00092 GINT icycle_dmp_skip_ = 100 ;
00093 GINT icycle_dmp_last_ = 0 ;
00094 GINT icycle_log_skip_ = 100 ;
00095 GINT icycle_log_last_ = 0 ;
00096 GINT icycle_amr_beg_ = 0 ;
00097 GINT icycle_amr_skip_ = 10 ;
00098 GINT icycle_amr_last_ = 0 ;
00099 GINT icycle_lbal_beg_ = 0 ;
00100 GINT icycle_lbal_skip_ = 1 ;
00101 GINT icycle_lbal_last_ = 1000000;
00102 GNODEID vmaxid ;
00103 GNODEID pmaxid ;
00104 GINT nelems_ = 1;
00105 GINT ngelems_ = 1;
00106 GINT iorderadv_ = 3 ;
00107 GINT iorderAM_ = 3 ;
00108 GINT iorderBDF_ = 2 ;
00109 GINT ntimelevels_ = 3 ;
00110 GINT ntmplevels_ = 3 ;
00111 GINT nrefinelevels_ = -1;
00112 GINT gndofs_ = 0;
00113 GINT ncourflds_ = 0;
00114 GINT *ncgit_ = NULL;
00115 GINT *gncgit_ = NULL;
00116 GINT nSpFit_ = 4;
00117 GINT filter_delta_ = 1;
00118 GBOOL bUPC = TRUE;
00119 GBOOL bPPC = TRUE;
00120 GBOOL bExtMesh = FALSE;
00121 GBOOL bStepError_ = FALSE;
00122 GBOOL bConvError_ = FALSE;
00123 GBOOL bAdaptError_ = FALSE;
00124 GBOOL bRestart_ = FALSE;
00125 GBOOL bRegrid_ = FALSE;
00126 GBOOL bFixedTimeStep_ = FALSE;
00127 GBOOL bScaledTimeStep_ = FALSE;
00128 GBOOL bDoAdapt_ = TRUE;
00129 GBOOL bDoCoarse_ = TRUE;
00130 GBOOL bReadCmdFile_ = TRUE;
00131 GBOOL bDoAdvection_ = TRUE;
00132 GBOOL bLinAdvection_ = FALSE;
00133 GBOOL bOutOnGridChange_ = TRUE;
00134 GBOOL bElemListChange_ = FALSE;
00135 GBOOL bAutoTimeLevelFill_= TRUE;
00136 GBOOL bTimeDepBdy_ = FALSE;
00137 GBOOL bPGrid_ = FALSE;
00138 GBOOL bSpectralAP_ = TRUE;
00139 GBOOL b1DerivativeAP_ = TRUE;
00140 GBOOL b2DerivativeAP_ = TRUE;
00141 GBOOL bDoLoadBalancing_ = FALSE;
00142 GBOOL bFilter_ = FALSE;
00143 GBOOL bDoDealiasing_ = FALSE;
00144 GDOUBLE Courant_ = 0.5;
00145 GDOUBLE dt_ = 0.0;
00146 GDOUBLE dtMin_ = 1.0e-9;
00147 GDOUBLE divvmax_ = 0.0;
00148 GDOUBLE time_ = 0.0;
00149 GDOUBLE time_max_ = 0.0;
00150 GDOUBLE time_out_beg_ = 0.0 ;
00151 GDOUBLE time_out_end_ = 1.0e6 ;
00152 GDOUBLE time_out_skip_ = 0.1 ;
00153 GDOUBLE time_out_last_ = 0.0 ;
00154 GDOUBLE time_amr_beg_ = 0.0 ;
00155 GDOUBLE time_amr_skip_ = 0.1 ;
00156 GDOUBLE time_amr_last_ = 0.0 ;
00157 GDOUBLE time_lbal_beg_ = 0.0 ;
00158 GDOUBLE time_lbal_skip_ = 0.0 ;
00159 GDOUBLE time_lbal_last_ = 0.0 ;
00160 GDOUBLE nu_[GDIM] ;
00161 GDOUBLE rho_ = 1.0 ;
00162 GDOUBLE aux_ = 0.0 ;
00163 GDOUBLE aux0_ = 0.0 ;
00164 GDOUBLE aux1_ = 0.0 ;
00165 GDOUBLE gMinElemLength_ = 1.0;
00166 GDOUBLE gMaxElemLength_ = 1.0;
00167 GDOUBLE ap_tol_ = 1.0e-5;
00168 GDOUBLE ap_tol1_ = 1.0 ;
00169 GDOUBLE ap_tol2_ = 1.0 ;
00170 GDOUBLE sig_tol_ = 0.7;
00171 GDOUBLE cor_tol_ = 0.5;
00172 GDOUBLE cor_mult_tol_ = 0.95;
00173 GDOUBLE ap_mult_ = 1.0e-2;
00174 GDOUBLE ap_mult1_ = 1.0e-2;
00175 GDOUBLE ap_mult2_ = 1.0e-2;
00176 GDOUBLE sig_mult_ = 2.0;
00177 GDOUBLE u1tol = 1.0e-10;
00178 GDOUBLE u2tol = 1.0e-10;
00179 GDOUBLE ptol = 1.0e-10;
00180 GDOUBLE P0_ [2] = {0.0, 0.0};
00181 GDOUBLE P1_ [2] = {1.0, 1.0};
00182 GDOUBLE B0_[4][2] = {{0.0,0.0},{1.0,0.0},{1.0,1.0},{0.0,1.0}};
00183 GDOUBLE B1_[4][2] = {{1.0,0.0},{1.0,1.0},{0.0,1.0},{0.0,0.0}};
00184 GDOUBLE TCOut_ = 0.0;
00185 GDOUBLE TWOut_ = 0.0;
00186 GDOUBLE TCLog_ = 0.0;
00187 GDOUBLE TWLog_ = 0.0;
00188 GDOUBLE TCDmp_ = 0.0;
00189 GDOUBLE TWDmp_ = 0.0;
00190 GDOUBLE gLoadBalMeas_ = 0.0;
00191 BDYTYPE btype_[4] = {PERIODIC, DIRICHLET, PERIODIC, DIRICHLET};
00192
00193 # if 0
00194 GDOUBLE P0_ [2] = {-0.5,-0.5};
00195 GDOUBLE P1_ [2] = {1.0, 1.5};
00196 GDOUBLE B0_[4][2] = {{-0.5,-0.5},{1.0,-0.5},{1.0,1.5},{-0.5,1.5}};
00197 GDOUBLE B1_[4][2] = {{1.0,-0.5},{1.0,1.5},{-0.5,1.5},{-0.5,-0.5}};
00198 BDYTYPE btype_[4] = {DIRICHLET,DIRICHLET,DIRICHLET,DIRICHLET};
00199 #endif
00200 GDOUBLE Pi = 4.0*atan(1.0);
00201 GDOUBLE *errcg_ = NULL;
00202 GDOUBLE *gerrcg_ = NULL;
00203 GDOUBLE filter_alpha_ = 0.0;
00204 GPC upc_type_ = GPC_POINTJAC_HELM;
00205 STOKES_TYPE stokes_type_ = STOKES_SCHUR_DELP;
00206 Point *gd_ = NULL;
00207 Point *dX_ = NULL;
00208 Morton_KeyGen *morton_ = NULL;
00209 GPartitioner *partitioner_ = NULL;
00210 GPartMapper *partmapper_ = NULL;
00211 GElemList uelems ;
00212 GElemList pelems ;
00213 GElemList *usergrid_ =&uelems;
00214 GElemList poldElements ;
00215 GElemListArray gusergrids_ ;
00216 GFieldList u1 ;
00217 GFieldList u2 ;
00218 GFieldList u3 ;
00219 GFieldList p ;
00220 GFieldList **pgfields_ = NULL;
00221
00222 GFieldList **pafields_ = NULL;
00223 GFieldList *cadv_ [3]={NULL,NULL,NULL};
00224 GFieldList *courflds_[3]={NULL,NULL,NULL};
00225 GFieldListArray pufields_ ;
00226 GFGList fieldgroups_ ;
00227 GLinOpList *filter_ = NULL ;
00228
00229 GNIDBuffer *vnode_ids = NULL;
00230 GETBuffer *velemtypes = NULL;
00231 GIBuffer glldegrees_ ;
00232 GIBuffer gldegrees_ ;
00233 GIBuffer hrefine_ ;
00234 GIBuffer hcoarse_ ;
00235 GIBuffer igPeriodic_ ;
00236 GIBuffer iBasisTypes_ ;
00237 GIBuffer igNumElems_ ;
00238 GDBuffer apunorm_ ;
00239 GDBuffer dunorm_ ;
00240 GDBuffer dthist_ ;
00241 GDBuffer fgPeriodic_ ;
00242 IBuffList bdyindices ;
00243 GVecList u1bdyvals ;
00244 GVecList u2bdyvals ;
00245 GVecList u3bdyvals ;
00246 GVecList **pgbdyvals_ = NULL;
00247 GVecList utmp ;
00248 GVecList uptmp ;
00249 GVecList ptmp ;
00250 BTBuffList bdytype ;
00251
00252
00253
00254 GTBasisListGLL gllpool_ ;
00255 GTBasisListGLL gllpool32_ ;
00256 GTBasisListGL glpool_ ;
00257 GCHandle hDSOp = NULL_HANDLE;
00258 NTreeAdapt *glop = NULL;
00259 GLogger glogger_;
00260 #if defined(BURGERS)
00261 GINT nAdvDirs_ = 1;
00262 GINT iAdvDirs_[3] = {1, 0, 0};
00263 GINT nsi_force_ = 0;
00264 SI_FORCE_TYPE si_force_type_[] = {SI_EV};
00265 char *sforce_blk_[] = {"EVFORCE_BLOCK"};
00266 BurgersSolver *stepper = NULL;
00267 #else
00268 NavierStokes *stepper = NULL;
00269 #endif
00270 char *sPCType [] = {"GPC_BLOCKJAC_HELM","GPC_BLOCKJAC_LAP","GPC_POINTJAC_HELM","GPC_NONE"};
00271
00272 char **sDSLabel_ = NULL;
00273 GStringList sUDSLabel_ ;
00274 char *sCAdvLabel [] = {"C1","C2","C3"};
00275 char sDSLabel_suff[] = "_T";
00276 char *sSpNLabel_ = "SP_NORM";
00277 char *sDerivNLabel_ = "D2_NORM";
00278 char *sTHLabel_ = "DT_HISTORY";
00279 char *sPBLabel_ = "bPERIODIC";
00280 char *serrmsg ;
00281 char sgdd_ [MAX_GDD_STRING+1]={"\0"};
00282 char fnmesh_[FILE_NAME_MAX+1]={"\0"};
00283 char fnuser_[FILE_NAME_MAX+1]={"\0"};
00284 char fncmd_[FILE_NAME_MAX+1]={"\0"};
00285 char fnlog_ [FILE_NAME_MAX+1]={"\0"};
00286 char fnout_[FILE_NAME_MAX+1]={"\0"};
00287 char fndmp_[FILE_NAME_MAX+1]={"\0"};
00288 char fnrst_[FILE_NAME_MAX+1]={"\0"};
00289 char suserblk_[FILE_NAME_MAX+1]={"\0"};
00290 char main_blk_[FILE_NAME_MAX+1]={"GASpAR_MAIN"};
00291 char aux_blk_[FILE_NAME_MAX+1]={"GASpAR_AUX"};
00292
00293
00294 #else
00295
00296 extern GINT rank ;
00297 extern GINT nproc ;
00298 extern GINT nd_ ;
00299 extern GINT nEvolvedFields_ ;
00300 extern GINT naPostFields_ ;
00301 extern GINT nUserFields_ ;
00302 extern GINT Ne[] ;
00303 extern GINT xN[] ;
00304 extern GINT uiter ;
00305 extern GINT piter ;
00306 extern GINT nBdyCond_ ;
00307 extern GINT ngVertices_ ;
00308 extern GINT *iadv_ ;
00309 extern GINT nadv_ ;
00310 extern GINT nuserdynamiclog_;
00311 extern GINT nuserstaticlog_ ;
00312 extern GERROR iGError_ ;
00313 extern GINT nuserlog_ ;
00314 extern STOPCONDTYPE iStopCond_ ;
00315 extern STOPCONDTYPE iAMRCond_ ;
00316 extern STOPCONDTYPE iLBalCond_ ;
00317 extern OUTPUTTYPE iOutType_ ;
00318 extern GINT iEvolType_ ;
00319 extern GINT nvert_ ;
00320 extern GINT ndmpmeta_ ;
00321 extern GINT icycle_ ;
00322 extern GINT icycle_max_ ;
00323 extern GINT icycle_out_beg_ ;
00324 extern GINT icycle_out_end_ ;
00325 extern GINT icycle_out_skip_;
00326 extern GINT icycle_out_last_;
00327 extern GINT icycle_dmp_beg_ ;
00328 extern GINT icycle_dmp_skip_;
00329 extern GINT icycle_dmp_last_;
00330 extern GINT icycle_log_skip_;
00331 extern GINT icycle_log_last_;
00332 extern GINT icycle_amr_beg_ ;
00333 extern GINT icycle_amr_skip_;
00334 extern GINT icycle_amr_last_;
00335 extern GINT icycle_lbal_beg_ ;
00336 extern GINT icycle_lbal_skip_;
00337 extern GINT icycle_lbal_last_;
00338 extern GNODEID vmaxid ;
00339 extern GNODEID pmaxid ;
00340 extern GINT nelems_ ;
00341 extern GINT ngelems_ ;
00342 extern GINT iorderadv_ ;
00343 extern GINT iorderAM_ ;
00344 extern GINT iorderBDF_ ;
00345 extern GINT ntimelevels_ ;
00346 extern GINT ntmplevels_ ;
00347 extern GINT nrefinelevels_ ;
00348 extern GINT *ncgit_ ;
00349 extern GINT *gncgit_ ;
00350 extern GINT gndofs_ ;
00351 extern GINT ncourflds_ ;
00352 extern GINT nSpFit_ ;
00353 extern GINT filter_delta_ ;
00354 extern GBOOL bUPC ;
00355 extern GBOOL bPPC ;
00356 extern GBOOL bExtMesh ;
00357 extern GBOOL bStepError_ ;
00358 extern GBOOL bConvError_ ;
00359 extern GBOOL bAdaptError_ ;
00360 extern GBOOL bRestart_ ;
00361 extern GBOOL bRegrid_ ;
00362 extern GBOOL bFixedTimeStep_ ;
00363 extern GBOOL bScaledTimeStep_;
00364 extern GBOOL bDoAdapt_ ;
00365 extern GBOOL bDoCoarse_ ;
00366 extern GBOOL bReadCmdFile_ ;
00367 extern GBOOL bDoAdvection_ ;
00368 extern GBOOL bLinAdvection_ ;
00369 extern GBOOL bOutOnGridChange_;
00370 extern GBOOL bElemListChange_;
00371 extern GBOOL bAutoTimeLevelFill_;
00372 extern GBOOL bTimeDepBdy_ ;
00373 extern GBOOL bPGrid_ ;
00374 extern GBOOL bSpectralAP_ ;
00375 extern GBOOL b1DerivativeAP_ ;
00376 extern GBOOL b2DerivativeAP_ ;
00377 extern GBOOL bDoLoadBalancing_;
00378 extern GBOOL bFilter_ ;
00379 extern GBOOL bDoDealiasing_ ;
00380 extern GDOUBLE Courant_ ;
00381 extern GDOUBLE dt_ ;
00382 extern GDOUBLE dtMin_ ;
00383 extern GDOUBLE divvmax_ ;
00384 extern GDOUBLE time_ ;
00385 extern GDOUBLE time_max_ ;
00386 extern GDOUBLE time_out_beg_ ;
00387 extern GDOUBLE time_out_end_ ;
00388 extern GDOUBLE time_out_skip_ ;
00389 extern GDOUBLE time_out_last_ ;
00390 extern GDOUBLE time_amr_beg_ ;
00391 extern GDOUBLE time_amr_skip_ ;
00392 extern GDOUBLE time_amr_last_ ;
00393 extern GDOUBLE time_lbal_beg_ ;
00394 extern GDOUBLE time_lbal_skip_ ;
00395 extern GDOUBLE time_lbal_last_ ;
00396 extern GDOUBLE nu_[] ;
00397 extern GDOUBLE rho_ ;
00398 extern GDOUBLE aux_ ;
00399 extern GDOUBLE aux0_ ;
00400 extern GDOUBLE aux1_ ;
00401 extern GDOUBLE gMinElemLength_ ;
00402 extern GDOUBLE gMaxElemLength_ ;
00403 extern GDOUBLE ap_tol_ ;
00404 extern GDOUBLE ap_tol1_ ;
00405 extern GDOUBLE ap_tol2_ ;
00406 extern GDOUBLE sig_tol_ ;
00407 extern GDOUBLE cor_tol_ ;
00408 extern GDOUBLE cor_mult_tol_ ;
00409 extern GDOUBLE ap_mult_ ;
00410 extern GDOUBLE ap_mult1_ ;
00411 extern GDOUBLE ap_mult2_ ;
00412 extern GDOUBLE sig_mult_ ;
00413 extern GDOUBLE u1tol ;
00414 extern GDOUBLE u2tol ;
00415 extern GDOUBLE ptol ;
00416 extern GDOUBLE P0_ [] ;
00417 extern GDOUBLE P1_ [] ;
00418 extern GDOUBLE **B0_ ;
00419 extern GDOUBLE **B1_ ;
00420 extern GDOUBLE TCOut_ ;
00421 extern GDOUBLE TWOut_ ;
00422 extern GDOUBLE TCLog_ ;
00423 extern GDOUBLE TWLog_ ;
00424 extern GDOUBLE TCDmp_ ;
00425 extern GDOUBLE TWDmp_ ;
00426 extern GDOUBLE gLoadBalMeas_ ;
00427 extern GDOUBLE Pi ;
00428 extern GDOUBLE *errcg_ ;
00429 extern GDOUBLE *gerrcg_ ;
00430 extern GDOUBLE filter_alpha_ ;
00431 extern BDYTYPE btype_[] ;
00432 extern GPC upc_type_ ;
00433 extern STOKES_TYPE stokes_type_ ;
00434 extern Point *gd_ ;
00435 extern Point *dX_ ;
00436 extern Morton_KeyGen *morton_ ;
00437 extern GPartitioner *partitioner_ ;
00438 extern GPartMapper *partmapper_ ;
00439 extern GElemList uelems ;
00440 extern GElemList pelems ;
00441 extern GElemList *usergrid_ ;
00442 extern GElemList poldElements ;
00443 extern GElemListArray gusergrids_ ;
00444 extern GFieldList u1 ;
00445 extern GFieldList u2 ;
00446 extern GFieldList u3 ;
00447 extern GFieldList p ;
00448 extern GFieldList **pgfields_ ;
00449
00450 extern GFieldList **pafields_ ;
00451 extern GFieldList *cadv_ [] ;
00452 extern GFieldList *courflds_[] ;
00453 extern GFieldListArray pufields_ ;
00454 extern GFGList fieldgroups_ ;
00455 extern GLinOpList *filter_ ;
00456 extern GNIDBuffer *vnode_ids ;
00457 extern GETBuffer *velemtypes ;
00458 extern GIBuffer glldegrees_ ;
00459 extern GIBuffer gldegrees_ ;
00460 extern GIBuffer hrefine_ ;
00461 extern GIBuffer hcoarse_ ;
00462 extern GIBuffer igPeriodic_ ;
00463 extern GIBuffer iBasisTypes_ ;
00464 extern GIBuffer igNumElems_ ;
00465 extern GDBuffer apunorm_ ;
00466 extern GDBuffer dunorm_ ;
00467 extern GDBuffer dthist_ ;
00468 extern GDBuffer fgPeriodic_ ;
00469 extern IBuffList bdyindices ;
00470 extern GVecList u1bdyvals ;
00471 extern GVecList u2bdyvals ;
00472 extern GVecList u3bdyvals ;
00473 extern GVecList **pgbdyvals_ ;
00474 extern GVecList utmp ;
00475 extern GVecList uptmp ;
00476 extern GVecList ptmp ;
00477 extern BTBuffList bdytype ;
00478
00479
00480
00481 extern GTBasisListGLL gllpool_ ;
00482 extern GTBasisListGLL gllpool32_ ;
00483 extern GTBasisListGL glpool_ ;
00484 extern GCHandle hDSOp ;
00485 extern NTreeAdapt *glop ;
00486 extern GLogger glogger_ ;
00487 #if defined(BURGERS)
00488 extern GINT nAdvDirs_ ;
00489 extern GINT iAdvDirs_[] ;
00490 extern GINT nsi_force_ ;
00491 extern SI_FORCE_TYPE si_force_type_[];
00492 extern char *sforce_blk_[] ;
00493 extern BurgersSolver *stepper ;
00494 #else
00495 extern NavierStokes *stepper ;
00496 #endif
00497 extern char sgdd_ [] ;
00498 extern char fnout_[] ;
00499 extern char fnuser_[] ;
00500 extern char fncmd_[] ;
00501 extern char fndmp_[] ;
00502 extern char fnrst_[] ;
00503 extern char fnlog_[] ;
00504 extern char fnmesh_[] ;
00505 extern char *sPCType [] ;
00506 extern char **sDSLabel_ ;
00507 extern GStringList sUDSLabel_ ;
00508 extern char *sCAdvLabel[] ;
00509 extern char sDSLabel_suff[] ;
00510 extern char *sSpNLabel_ ;
00511 extern char *sDerivNLabel_ ;
00512 extern char *sTHLabel_ ;
00513 extern char *sPBLabel_ ;
00514 extern char *serrmsg ;
00515 extern char suserblk_[] ;
00516 extern char main_blk_[] ;
00517 extern char aux_blk_[] ;
00518
00519 #endif
00520
00521 GBOOL GUserInit (int argc, char *argv[]);
00522 GBOOL GUserStart ();
00523 GBOOL GUserTimeDep (GDOUBLE ptime, GDOUBLE pdt);
00524 GBOOL GUserLogConfig ();
00525 GBOOL GUserLogUpdate ();
00526 GBOOL GUserTerm ();
00527 GBOOL GUserConfig ();
00528 GBOOL GAdaptGrid ();
00529 GBOOL GTagSpectral (GIBuffer &hr, GIBuffer &hc);
00530 GBOOL GTag1Deriv (GIBuffer &hr, GIBuffer &hc);
00531 GBOOL GTag2Deriv (GIBuffer &hr, GIBuffer &hc);
00532 GBOOL GInitMesh ();
00533 GBOOL GInitTimeLevels ();
00534 GBOOL GCreateVar ();
00535 GBOOL GCreateFieldArrays();
00536 GBOOL GCreateStepper ();
00537 GBOOL GSetBdyCond ();
00538 GBOOL GGlobalizeBdy ();
00539 GBOOL GGlobalAssembly ();
00540 GBOOL GResetExpandables();
00541 GBOOL GDump (const char *fn, GBOOL deleteFirst);
00542 GBOOL GRestart ();
00543 GBOOL GStep ();
00544 GBOOL GInit (int argc, char *argv[]);
00545 GBOOL GSetKeyGen ();
00546 GBOOL GInitGS ();
00547 GBOOL GInitLogger ();
00548 GBOOL GTimeStep (GINT ilevel=0);
00549 GBOOL GCourantTimeStep(GINT ilevel=0);
00550 GBOOL GScaledTimeStep ();
00551 GBOOL GOutCond ();
00552 GBOOL GAMRCond ();
00553 GBOOL GLBalCond ();
00554 GBOOL GStopCond ();
00555 GBOOL GDoLog (GINT num, char *smsg, ...);
00556 GBOOL GInitNorms ();
00557 void GDeleteDynamic ();
00558 void GWrapup ();
00559 GBOOL GCmdLineParse (int argc, char *argv[]);
00560 GBOOL GCmdFileParse ();
00561 GBOOL GTimeUpdate ();
00562 void GUpdateTimestepHistory(GDOUBLE dtp);
00563 GINT GRegisterUserFields(GINT numspecs, GFieldList *u1, char *su1, ...);
00564 GINT GSetAPostFields (GINT numfields, GFieldList *f1, ...);
00565 void GPrtHelp (GSHORT argc, char **argv, ostream &pout);
00566
00567
00568 GBOOL GOutput ();
00569 GBOOL GOutBin ();
00570 GBOOL GOutSDS ();
00571 GBOOL GPutSDS (char *,GFieldList &);
00572
00573 void GSetUserGrid(GElemList *elems);
00574 GBOOL GSetGridFromFile(GBinReader &rgbin);
00575 GBOOL GSetFieldVar(GBinReader &rgbin, char *dslabel, GNBasis *b[], Field2D *field, GINT iLev, GINT &nfldnodes, GINT &ninterp);
00576 GBOOL GSetVarDataA(GBinReader &rgbin, char *dslabel, GDOUBLE *data, GINT ndata);
00577 GBOOL GSetVarDataB(GBinReader &rgbin, char *dslabel, GDBuffer &dbuff);
00578 GBOOL GSetSystemVar(GBinReader &rgbin, GINT &num);
00579 GBOOL GInterpData(GINT rank, GNBasis *b[], GVector &u, GVector *xi[], GVector *ui);
00580 void GComputeLoadBal();
00581 GBOOL GCollectInterpPts(GINT rank, Elem2D *e, GINT nvert, Point3D *vert,
00582 GNBasis *b[], GVector *xi[], GIBuffer *ii);
00583 GBOOL GPoint_in_region(GINT nVertices, Point3D *spVertices, GDOUBLE x, GDOUBLE y);
00584 GBOOL GbOverlap(Point3D *v1, Point3D *v2, GINT nvert, GBOOL &bEqual);
00585 GBOOL GXToXi(GINT nVertices, Point3D spVertices[], GNBasis &basis1, GNBasis &basis2,
00586 GINT num, GDOUBLE *ax1, GDOUBLE *ax2, GDOUBLE *xi1, GDOUBLE *xi2);
00587 #if 0
00588 GBOOL GErrChk();
00589 #endif
00590