Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

gaspar_t.h

Go to the documentation of this file.
00001 //======================================================================================
00002 // Name         : gaspar_t.h
00003 // Date         : 9/10/02 (DLR)
00004 // Copyright    : 2002-2006 Copyright University Corporation for Atmospheric
00005 //                Research
00006 // Description  : GASpAR main driver header file
00007 // Modifications:
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 //#include "hdfFile.hpp"
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 //char         *sGError_[]=        {"Err:Normal", "Err:Step", "Err:Timestep", "Err:Dump", "Err_Adapt", "Err:Output", "Err:Log"};
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;  //OUT_SDS;
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;   // tolerance for spectral error
00168 GDOUBLE      ap_tol1_          = 1.0   ;   // tolerance for 1-derivative
00169 GDOUBLE      ap_tol2_          = 1.0   ;   // tolerance for 2-derivative
00170 GDOUBLE      sig_tol_          = 0.7;      // tolerance for min. Legendre decay rate
00171 GDOUBLE      cor_tol_          = 0.5;      // tolerance for min. correlation coeff
00172 GDOUBLE      cor_mult_tol_     = 0.95;     // tolerance for coarsening for correl. coeff
00173 GDOUBLE      ap_mult_          = 1.0e-2;   // coarsen multiplier spectral error
00174 GDOUBLE      ap_mult1_         = 1.0e-2;   // coarsen multiplier for 1-derivative
00175 GDOUBLE      ap_mult2_         = 1.0e-2;   // coarsen multiplier for 2-derivative
00176 GDOUBLE      sig_mult_         = 2.0;      // coarsen multiplier for min. Legendre decay rate
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 //BDYTYPE      btype_[4]         = {NONE, DIRICHLET, NONE, DIRICHLET};
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 //GFieldList    **pufields_      = NULL;
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 //GLLBasis     *gllbasis[GDIM]   = {NULL};
00252 //GLLBasis     *gllbasis32[GDIM] = {NULL};
00253 //GLBasis      *glbasis [GDIM]   = {NULL};
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 //char         *sDSLabel    [] = {"V1","V2","V3","Pr","V1B","V2B","V3B"};
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 //extern GFieldList   **pufields_     ;
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 //extern GLLBasis     *gllbasis[]     ;
00479 //extern GLLBasis     *gllbasis32[]   ;
00480 //extern GLLBasis     *glbasis []     ;
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 

Generated on Wed Dec 21 16:00:48 2005 for Geophysics & Astrophysics Spectral Element Adaptive Refinement (GASpAR) 2D Code by  doxygen 1.4.4