00001 module global
00002
00003 use demonaParameters
00004
00005 implicit none
00006
00007 type setI
00008
00009 integer, allocatable :: tVec(:)
00010
00011 integer :: maxT
00012
00013 integer, allocatable :: endIndex(:)
00014
00015 end type setI
00016
00017
00018
00019 type setJ
00020
00021 integer, allocatable :: iVec(:)
00022
00023 integer :: maxI
00024
00025 type(setI), allocatable :: i(:)
00026
00027 end type setJ
00028
00029
00030 type setUnk
00031
00032 integer, allocatable :: jVec(:)
00033
00034 integer :: maxJ
00035
00036 type(setJ), allocatable :: j(:)
00037
00038 end type setUnk
00039
00040
00041
00042
00043
00044
00045
00046 type setBC
00047
00048
00049
00050 integer, allocatable :: jVec(:)
00051
00052 integer :: maxJ
00053
00054 type(setJ), allocatable :: j(:)
00055
00056
00057
00058 integer, allocatable :: unkVec(:)
00059
00060 integer :: maxUnk
00061
00062 type(setUnk),allocatable :: unk(:)
00063
00064 end type setBC
00065
00066
00067
00068 type setSet
00069
00070 integer, allocatable :: bcVec(:)
00071
00072 type(setBC), allocatable :: bc(:)
00073
00074 integer maxBc
00075
00076 end type setSet
00077
00078
00079
00080 type dom
00081
00082 integer, allocatable :: nodeMatrix(:,:,:)
00083
00084 integer, allocatable :: dofMatrix(:,:,:,:)
00085
00086 integer, allocatable :: nodeVector(:,:)
00087
00088 integer, allocatable :: dofVector(:,:)
00089
00090 type(setSet) set
00091
00092 integer, allocatable :: setVec(:)
00093
00094 integer :: allBC
00095
00096 integer :: minI
00097
00098 integer :: minJ
00099
00100 integer :: maxI
00101
00102 integer :: maxJ
00103
00104 integer :: nx
00105
00106 integer :: ny
00107
00108 integer :: numberOfGhostCells
00109
00110 integer totalDof
00111
00112 integer totalNode
00113
00114 integer setDof
00115
00116 real(8),pointer :: x(:)
00117
00118 real(8),pointer :: xPTO(:)
00119
00120 real(8),pointer :: xRTO(:)
00121
00122 real(8),allocatable :: xCoor(:)
00123
00124 real(8),allocatable :: yCoor(:)
00125
00126 real(8) relXcoor
00127
00128 real(8) relYcoor
00129
00130 real(8) Lx
00131
00132 real(8) Ly
00133
00134 integer colorStartIndex
00135
00136 integer colorEndIndex
00137
00138 integer firstIndex
00139
00140 integer lastIndex
00141
00142 integer colorMin
00143
00144 integer colorMax
00145
00146 integer,allocatable :: dofVec(:)
00147
00148 integer,allocatable :: gsSetVec(:)
00149
00150 integer relativeIndex
00151
00152 integer relativeIndexNode
00153
00154
00155 end type dom
00156
00157
00158 type phy
00159
00160 real(8),pointer :: x(:)
00161
00162 real(8),pointer :: xPTO(:)
00163
00164 real(8),pointer :: xRTO(:)
00165
00166 type(dom),allocatable :: domain(:)
00167
00168 integer :: numberOfDomains=1
00169
00170 integer :: dof
00171
00172 real(8) :: refXcoor
00173
00174 real(8) :: refYcoor
00175
00176 logical :: realTime=NO
00177
00178 logical :: pseudoTime=NO
00179
00180 logical :: setActive
00181
00182 integer :: dFX
00183
00184 character(79) :: tecVariables
00185
00186 integer :: totalDof
00187
00188 integer :: totalNode
00189
00190 integer :: setDof
00191
00192 integer, allocatable :: dVec(:)
00193
00194 integer numberOfDomainGroups
00195
00196 real(8),allocatable :: damping(:)
00197
00198 integer,allocatable :: endIndex(:)
00199
00200 real(8) :: Lx
00201
00202 real(8) :: Ly
00203
00204 integer :: numberOfPhysicalParameters
00205
00206 real(8),allocatable :: physicalParameters(:)
00207
00208 real(8),allocatable :: physicalParametersInitial(:)
00209
00210 real(8),allocatable :: physicalParametersFinal(:)
00211
00212 real(8) :: discOrder
00213
00214 real(8),pointer :: evalOrder
00215
00216
00217 end type phy
00218
00219
00220
00221 type dGroup
00222
00223 integer,allocatable :: dVec(:)
00224
00225 end type dGroup
00226
00227
00228
00229 type pGroup
00230
00231 type(dGroup),allocatable :: dg(:)
00232
00233 integer, allocatable :: pVec(:)
00234
00235 end type pGroup
00236
00237
00238 type DemonaModel
00239
00240 type(phy),allocatable :: physics(:)
00241
00242 integer :: numberOfPhysics
00243
00244 integer,allocatable :: pVec(:)
00245
00246 real(8),allocatable :: x(:)
00247
00248 real(8),allocatable :: tempx(:)
00249
00250 real(8),allocatable :: xPTO(:)
00251
00252 real(8),allocatable :: xRTO(:)
00253
00254 integer totaldof
00255
00256 integer totalNode
00257
00258 integer,allocatable :: setVec(:)
00259
00260 type(pGroup),allocatable :: pg(:)
00261
00262 integer :: numberOfPhysicsGroups
00263
00264 integer,allocatable :: endIndex(:)
00265
00266 end type DemonaModel
00267
00268
00269 type(DemonaModel),target :: myModel
00270
00271
00272
00273
00274
00275
00276
00277
00278 integer,target :: fullNx,fullNy,fullNz
00279
00280
00281
00282
00283 integer :: fV=0
00284 integer :: ghostCells=2
00285
00286
00287
00288
00289 integer,target :: currentSetLength
00290 integer,target :: globalCurrentSetLength
00291
00292
00293
00294 integer :: relativeModel=relativeLex
00295
00296
00297
00298
00299 integer :: globalCorrection=0
00300
00301 logical :: setRuleActive=OFF
00302
00303
00304 integer :: currentPhysics
00305
00306 integer :: currentDomain
00307
00308
00309
00310
00311 integer,pointer :: numberOfPhysics
00312
00313 integer,pointer :: numberOfDomains
00314
00315 integer,pointer :: dof
00316
00317 integer,pointer :: dFX
00318
00319 integer,pointer :: numberOfGhostCells
00320
00321 integer,pointer :: pVec(:)
00322
00323 integer,pointer :: dVec(:)
00324
00325 character(len=79) :: TecplotVariables
00326
00327 integer,pointer :: totalDof
00328
00329 integer,pointer :: modelDof
00330
00331 integer,pointer :: physicsDof
00332
00333 integer,pointer :: domainDof
00334
00335 integer,pointer :: totalNode
00336
00337 integer,pointer :: modelNode
00338
00339 integer,pointer :: physicsNode
00340
00341 integer,pointer :: domainNode
00342
00343 integer,pointer :: setVec(:)
00344
00345 integer,pointer :: localSetVec(:)
00346
00347 integer,pointer :: maxPhysicsGroup
00348
00349 integer,pointer :: maxDomainGroup
00350
00351 real(8),pointer :: refXcoor
00352
00353 real(8),pointer :: refYcoor
00354
00355 real(8),pointer :: Lx
00356
00357 real(8),pointer :: Ly
00358
00359 integer,pointer :: firstIndex
00360
00361 integer,pointer :: lastIndex
00362
00363 integer,pointer :: colorMin
00364
00365 integer,pointer :: colorMax
00366
00367 integer,pointer :: setDof
00368
00369 integer,pointer :: relativeIndex
00370
00371 integer,pointer :: numberOfPhysicalParameters
00372
00373
00374 type(setSet), pointer :: discSet
00375
00376
00377 type phyY
00378
00379 real(8),pointer :: y
00380
00381 end type phyY
00382
00383 type(phyY), allocatable :: setY(:)
00384
00385
00386
00387
00388 real(8),pointer :: y(:)
00389
00390 real(8),pointer :: yPTO(:)
00391
00392 real(8),pointer :: yRTO(:)
00393
00394 real(8),pointer :: tempy(:)
00395
00396 real(8),pointer :: discreteY(:)
00397
00398 real(8),pointer :: x(:)
00399
00400 real(8),pointer :: xPTO(:)
00401
00402 real(8),pointer :: xRTO(:)
00403
00404
00405
00406
00407 integer colorFunctionIndex
00408 integer colorValMax
00409
00410
00411
00412 real(8),allocatable :: yBackup(:)
00413
00414
00415
00416
00417
00418
00419 integer timeIter
00420
00421 real(8) dt
00422
00423
00424
00425
00426
00427 integer totalLinearIterations
00428 integer totalNonLinearIterations
00429
00430
00431 real(8), allocatable :: setTol(:)
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442 logical :: freezedJacobian=off
00443
00444 integer :: maxNewtonIter=20
00445
00446 integer :: newtonSuccess
00447
00448 logical :: inexactNewton=ON
00449
00450 real(8) :: jacSF=1.1d0
00451
00452 integer :: jacInterval=1
00453
00454 real(8) :: jacSkipTol=1e6
00455
00456
00457
00458 logical :: jacSkip=off
00459
00460 integer :: maxBacktrackCount=10
00461
00462 logical :: doBacktrack=on
00463
00464 integer :: preconditioner=rp
00465
00466 logical :: bootStrapping=on
00467
00468 real(8) :: bootdamping=1.d0
00469
00470 real(8),target :: jacDiscOrder=lowOrder
00471
00472
00473
00474 real(8),pointer :: damping(:)
00475
00476 integer currentDof
00477
00478 integer :: maxPicardIter=50
00479
00480
00481
00482 integer :: gsMaxNewton=1
00483
00484 integer :: maxGsIter=1000
00485
00486 logical :: blockGS=no
00487
00488 logical :: gsSolver=off
00489
00490 logical :: accumulating=no
00491
00492 integer :: maxGsPhysics=1
00493
00494
00495
00496 integer :: overlap=0
00497
00498 integer :: overlapX
00499
00500 integer :: overlapY
00501
00502 integer :: maxMSIter=100
00503
00504 integer :: xPartition=1
00505
00506 integer :: yPartition=1
00507
00508 integer :: numberOfMSDomains
00509
00510 logical :: msSolver=on
00511
00512 logical :: msRandom=off
00513
00514 logical :: msArtificialBC=on
00515
00516 real(8) :: msArtificialAlpha(2)
00517
00518
00519
00520
00521
00522 integer :: maxRealTimeIter=1
00523
00524 integer :: maxPhysicsIter=1
00525
00526 integer :: maxPseudoTimeIter=1
00527
00528 integer :: maxDomainIter=1
00529
00530
00531
00532
00533
00534 integer :: mySolver=1
00535
00536 integer :: myHybrid=1
00537
00538
00539 logical :: readInitialGuess=off
00540
00541 logical :: poissonCompatibility=on
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551 real(8) dtau
00552
00553
00554
00555
00556
00557 integer test
00558
00559
00560
00561
00562
00563 end module global