Scrambler  1
sweep_declarations.f90
Go to the documentation of this file.
00001 !#########################################################################
00002 !               
00003 !    Copyright (C) 2003-2012 Department of Physics and Astronomy,
00004 !                            University of Rochester,
00005 !                            Rochester, NY
00006 !
00007 !    sweep_declarations.f90 is part of AstroBEAR.
00008 !
00009 !    AstroBEAR is free software: you can redistribute it and/or modify    
00010 !    it under the terms of the GNU General Public License as published by 
00011 !    the Free Software Foundation, either version 3 of the License, or    
00012 !    (at your option) any later version.
00013 !
00014 !    AstroBEAR is distributed in the hope that it will be useful, 
00015 !    but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 !    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017 !    GNU General Public License for more details.
00018 !
00019 !    You should have received a copy of the GNU General Public License
00020 !    along with AstroBEAR.  If not, see <http://www.gnu.org/licenses/>.
00021 !
00022 !#########################################################################
00026 
00027 
00028 MODULE SchemeDeclarations
00029   USE StencilDeclarations
00030   USE GlobalDeclarations
00031   USE PhysicsDeclarations
00032 
00033   IMPLICIT NONE
00034 
00035   SAVE
00036 
00037   PUBLIC
00038 
00039   INTEGER :: w = 0
00040   INTEGER :: qLx = 0
00041   INTEGER :: qRx = 0
00042   INTEGER :: qLy = 0
00043   INTEGER :: qRy = 0
00044   INTEGER :: qLz = 0
00045   INTEGER :: qRz = 0
00046   INTEGER :: fx = 0
00047   INTEGER :: fy = 0
00048   INTEGER :: fz = 0
00049   INTEGER :: q2Lx = 0
00050   INTEGER :: q2Rx = 0
00051   INTEGER :: q2Ly = 0
00052   INTEGER :: q2Ry = 0
00053   INTEGER :: q2Lz = 0
00054   INTEGER :: q2Rz = 0
00055   INTEGER :: f2x = 0
00056   INTEGER :: f2y = 0
00057   INTEGER :: f2z = 0
00058   INTEGER :: limiter_x = 0
00059   INTEGER :: limiter_y = 0
00060   INTEGER :: limiter_z = 0
00061   INTEGER :: limiter_ppm = 0
00062   INTEGER :: pT = 0
00063   INTEGER :: qex = 0
00064   INTEGER :: qey = 0
00065   INTEGER :: qez = 0
00066   INTEGER :: dqx = 0
00067   INTEGER :: dqy = 0
00068   INTEGER :: dqz = 0
00069   INTEGER :: ex = 0
00070   INTEGER :: ey = 0
00071   INTEGER :: ez = 0
00072   INTEGER :: ex_bar = 0
00073   INTEGER :: ey_bar = 0
00074   INTEGER :: ez_bar = 0
00075   INTEGER :: e2x = 0
00076   INTEGER :: e2y = 0
00077   INTEGER :: e2z = 0
00078   INTEGER :: e2x_bar = 0
00079   INTEGER :: e2y_bar = 0
00080   INTEGER :: e2z_bar = 0
00081   INTEGER :: ctfy = 0
00082   INTEGER :: ctfz = 0
00083   INTEGER :: ctfx = 0
00084   INTEGER :: ctf2x = 0
00085   INTEGER :: ctf2y = 0
00086   INTEGER :: ctf2z = 0
00087   INTEGER :: w2 = 0
00088   INTEGER :: A2x = 0
00089   INTEGER :: A2y = 0
00090   INTEGER :: A2z = 0
00091   INTEGER :: Sx = 0
00092   INTEGER :: Sy = 0
00093   INTEGER :: Sz = 0
00094   INTEGER :: w3 = 0
00095   INTEGER :: A3x = 0
00096   INTEGER :: A3y = 0
00097   INTEGER :: A3z = 0
00098   INTEGER :: SpeedsX = 0
00099   INTEGER :: SpeedsY = 0
00100   INTEGER :: SpeedsZ = 0
00101   INTEGER :: leftX = 0
00102   INTEGER :: leftY = 0
00103   INTEGER :: leftZ = 0
00104   INTEGER :: rightX = 0
00105   INTEGER :: rightY = 0
00106   INTEGER :: rightZ = 0
00107   INTEGER :: nWaves = 0
00108   INTEGER :: req_eigens = 0
00109   INTEGER :: adfx = 0
00110   INTEGER :: adfy = 0
00111   INTEGER :: adfz = 0
00112   INTEGER :: eta2x = 0
00113   INTEGER :: eta2y = 0
00114   INTEGER :: eta2z = 0
00115   INTEGER :: etax = 0
00116   INTEGER :: etay = 0
00117   INTEGER :: etaz = 0
00118   INTEGER :: q = 0
00119   INTEGER :: aux = 0
00120   INTEGER :: recon = 0
00121   INTEGER :: beforesweepstep = 0
00122   INTEGER :: aftersweepstep = 0
00123   INTEGER :: source = 0
00124   INTEGER :: source2 = 0
00125   INTEGER :: cornerdiv = 0
00126   INTEGER :: gradphix = 0
00127   INTEGER :: gradphiy = 0
00128   INTEGER :: gradphiz = 0
00129 
00130 
00131 
00133 
00134   INTEGER, DIMENSION(:), ALLOCATABLE :: index_start_bylevel
00135   INTEGER, PARAMETER :: THEBEGINNING=-999999 
00136   INTEGER, PARAMETER :: NO_VISCOSITY=0, ROE_VISCOSITY=1, H_VISCOSITY=2
00137   INTEGER, PARAMETER :: NONLAGRANGIAN=0, LAGRANGIAN=1
00138 
00139   REAL (KIND=xPrec), PARAMETER :: fourth=.25d0, third=1.d0/3.d0, sixth=1.d0/6.d0, epsilon=1e-13
00140   INTEGER :: SweepConsTemp, SweepCons
00141   LOGICAL :: lGudonov, lChar_Limiters, lCautious, lHLLTypeSolver, lCTU, lLimiter, lIsothermal, lUsePPML
00142   INTEGER :: InterpOrder = 3
00143 
00144   INTEGER :: ViscCD = NO_VISCOSITY
00145   LOGICAL :: lApplyLOF = .false.
00146   LOGICAL :: lApplyDiffusion=.true.
00147   REAL(KIND=qpREC) :: LOF_ALPHA=.075, DIFF_ALPHA=.1
00148   
00149 
00150 
00151   INTEGER, ALLOCATABLE, DIMENSION(:) :: SweepFluxFields
00152   INTEGER :: nSweepFlux
00153   INTEGER :: iTracer=NONLAGRANGIAN
00154   INTEGER :: CurrentLevelLoaded=-1
00155 
00156 CONTAINS
00157 
00158 
00159   SUBROUTINE SetStencilNrVars
00160     IF (beforesweepstep /= 0) Stencil(beforesweepstep)%NrVars=(/1,NrHydroVars/)
00161     IF (w /= 0) Stencil(w)%NrVars=(/1,SweepCons/)
00162     IF (qLx /= 0) Stencil(qLx)%NrVars=(/1,SweepCons/)
00163     IF (qRx /= 0) Stencil(qRx)%NrVars=(/1,SweepCons/)
00164     IF (qLy /= 0) Stencil(qLy)%NrVars=(/1,SweepCons/)
00165     IF (qRy /= 0) Stencil(qRy)%NrVars=(/1,SweepCons/)
00166     IF (qLz /= 0) Stencil(qLz)%NrVars=(/1,SweepCons/)
00167     IF (qRz /= 0) Stencil(qRz)%NrVars=(/1,SweepCons/)
00168     IF (fx /= 0) Stencil(fx)%NrVars=(/1,SweepCons/)
00169     IF (fy /= 0) Stencil(fy)%NrVars=(/1,SweepCons/)
00170     IF (fz /= 0) Stencil(fz)%NrVars=(/1,SweepCons/)
00171     IF (ctfx /= 0) Stencil(ctfx)%NrVars=(/1,2/)
00172     IF (ctfy /= 0) Stencil(ctfy)%NrVars=(/1,2/)
00173     IF (ctfz /= 0) Stencil(ctfz)%NrVars=(/1,2/)
00174     !Second round of fluxes for CTU correction step
00175     IF (q2Lx /= 0) Stencil(q2Lx)%NrVars=(/1,SweepCons/)
00176     IF (q2Rx /= 0) Stencil(q2Rx)%NrVars=(/1,SweepCons/)
00177     IF (q2Ly /= 0) Stencil(q2Ly)%NrVars=(/1,SweepCons/)
00178     IF (q2Ry /= 0) Stencil(q2Ry)%NrVars=(/1,SweepCons/)
00179     IF (q2Lz /= 0) Stencil(q2Lz)%NrVars=(/1,SweepCons/)
00180     IF (q2Rz /= 0) Stencil(q2Rz)%NrVars=(/1,SweepCons/)
00181     IF (f2x /= 0) Stencil(f2x)%NrVars=(/1,NrHydroVars/)
00182     IF (f2y /= 0) Stencil(f2y)%NrVars=(/1,NrHydroVars/)
00183     IF (f2z /= 0) Stencil(f2z)%NrVars=(/1,NrHydroVars/)
00184     IF (ctf2x /= 0) Stencil(ctf2x)%NrVars=(/1,2/)
00185     IF (ctf2y /= 0) Stencil(ctf2y)%NrVars=(/1,2/)
00186     IF (ctf2z /= 0) Stencil(ctf2z)%NrVars=(/1,2/)
00187     IF (eta2x /= 0) Stencil(eta2x)%NrVars=(/1,1/)
00188     IF (eta2y /= 0) Stencil(eta2y)%NrVars=(/1,1/)
00189     IF (eta2z /= 0) Stencil(eta2z)%NrVars=(/1,1/)
00190     IF (etax /= 0) Stencil(etax)%NrVars=(/1,1/)
00191     IF (etay /= 0) Stencil(etay)%NrVars=(/1,1/)
00192     IF (etaz /= 0) Stencil(etaz)%NrVars=(/1,1/)
00193 
00194     IF (adfx /= 0) Stencil(adfx)%NrVars=(/1,Nrtracervars/)
00195     IF (adfy /= 0) Stencil(adfy)%NrVars=(/1,Nrtracervars/)
00196     IF (adfz /= 0) Stencil(adfz)%NrVars=(/1,Nrtracervars/)
00197 
00198     !Reconstruction work space
00199     IF (limiter_ppm /= 0) Stencil(limiter_ppm)%NrVars=(/1,1/)
00200     IF (limiter_x /= 0) Stencil(limiter_x)%NrVars=(/1,1/)
00201     IF (limiter_y /= 0) Stencil(limiter_y)%NrVars=(/1,1/)
00202     IF (limiter_z /= 0) Stencil(limiter_z)%NrVars=(/1,1/)
00203     IF (pT /= 0) Stencil(pT)%NrVars=(/1,1/)
00204     IF (dqx /= 0) Stencil(dqx)%NrVars=(/1,NrWaves/)
00205     IF (dqy /= 0) Stencil(dqy)%NrVars=(/1,NrWaves/)
00206     IF (dqz /= 0) Stencil(dqz)%NrVars=(/1,NrWaves/)
00207     IF (qex /= 0) Stencil(qex)%NrVars=(/1,NrWaves/)
00208     IF (qey /= 0) Stencil(qey)%NrVars=(/1,NrWaves/)
00209     IF (qez /= 0) Stencil(qez)%NrVars=(/1,NrWaves/)
00210 
00211     IF (SpeedsX /= 0) Stencil(SpeedsX)%NrVars=(/ 1,NrWaves/)
00212     IF (SpeedsY /= 0) Stencil(SpeedsY)%NrVars=(/ 1,NrWaves/)
00213     IF (SpeedsZ /= 0) Stencil(SpeedsZ)%NrVars=(/ 1,NrWaves/)
00214     IF (leftX /= 0) Stencil(leftX)%NrVars=(/ NrWaves,NrWaves/)
00215     IF (leftY /= 0) Stencil(leftY)%NrVars=(/ NrWaves,NrWaves/)
00216     IF (leftZ /= 0) Stencil(leftZ)%NrVars=(/ NrWaves,NrWaves/)
00217     IF (rightX /= 0) Stencil(rightX)%NrVars=(/ NrWaves,NrWaves/)
00218     IF (rightY /= 0) Stencil(rightY)%NrVars=(/ NrWaves,NrWaves/)
00219     IF (rightZ /= 0) Stencil(rightZ)%NrVars=(/ NrWaves,NrWaves/)
00220     IF (nWaves /= 0) Stencil(nWaves)%NrVars=(/ 1,nDim/)
00221 
00222     !MHD CT Stuff
00223     IF (ex /= 0) Stencil(ex)%NrVars=(/1,1/)
00224     IF (ey /= 0) Stencil(ey)%NrVars=(/1,1/)
00225     IF (ez /= 0) Stencil(ez)%NrVars=(/1,1/)
00226     IF (ex_bar /= 0) Stencil(ex_bar)%NrVars=(/1,1/)
00227     IF (ey_bar /= 0) Stencil(ey_bar)%NrVars=(/1,1/)
00228     IF (ez_bar /= 0) Stencil(ez_bar)%NrVars=(/1,1/)
00229 
00230     !Second Round of MHD CT stuff
00231     !     Storing fluxes directly into Info%emf
00232     IF (e2x /= 0) Stencil(e2x)%NrVars=(/1,1/)
00233     IF (e2y /= 0) Stencil(e2y)%NrVars=(/1,1/)
00234     IF (e2z /= 0) Stencil(e2z)%NrVars=(/1,1/)
00235 
00236     IF (e2x_bar /= 0) Stencil(e2x_bar)%NrVars=(/1,1/)
00237     IF (e2y_bar /= 0) Stencil(e2y_bar)%NrVars=(/1,1/)
00238     IF (e2z_bar /= 0) Stencil(e2z_bar)%NrVars=(/1,1/)
00239     !extra MHD Stuff
00240 
00241     IF (w2 /= 0) Stencil(w2)%NrVars=(/1,SweepCons/)
00242     IF (A2x /= 0) Stencil(A2x)%NrVars=(/1,1/)
00243     IF (A2y /= 0) Stencil(A2y)%NrVars=(/1,1/)
00244     IF (A2z /= 0) Stencil(A2z)%NrVars=(/1,1/)
00245 
00246     !Stone and Gardiner Source Terms
00247     IF (Sx /= 0) Stencil(Sx)%NrVars=(/1,SweepCons/)
00248     IF (Sy /= 0) Stencil(Sy)%NrVars=(/1,SweepCons/)
00249     IF (Sz /= 0) Stencil(Sz)%NrVars=(/1,SweepCons/)
00250 
00251     IF (Sx /= 0) Stencil(Sx)%clear=.true.
00252     IF (Sy /= 0) Stencil(Sy)%clear=.true.
00253     IF (Sz /= 0) Stencil(Sz)%clear=.true.
00254 
00255     IF (cornerdiv /= 0) Stencil(cornerdiv)%NrVars=(/1,1/)
00256     IF (gradphix /= 0) Stencil(gradphix)%NrVars=(/1,1/)
00257     IF (gradphiy /= 0) Stencil(gradphiy)%NrVars=(/1,1/)
00258     IF (gradphiz /= 0) Stencil(gradphiz)%NrVars=(/1,1/)
00259 
00260 
00261 
00262   END SUBROUTINE SetStencilNrVars
00263 
00265   SUBROUTINE set_descriptions()
00266     IF (w /= 0) Stencil(w)%description="w"
00267     IF (q /= 0) Stencil(q)%description="q"
00268     IF (aux /= 0) Stencil(aux)%description="aux"
00269     IF (recon /= 0) Stencil(recon)%description="recon"
00270     IF (qLx /= 0) Stencil(qLx)%description="qLx"
00271     IF (qRx /= 0) Stencil(qRx)%description="qRx"
00272     IF (qLy /= 0) Stencil(qLy)%description="qLy"
00273     IF (qRy /= 0) Stencil(qRy)%description="qRy"
00274     IF (qLz /= 0) Stencil(qLz)%description="qLz"
00275     IF (qRz /= 0) Stencil(qRz)%description="qRz"
00276     IF (fx /= 0) Stencil(fx)%description="fx"
00277     IF (fy /= 0) Stencil(fy)%description="fy"
00278     IF (fz /= 0) Stencil(fz)%description="fz"
00279     IF (w2 /= 0) Stencil(w2)%description="w2"
00280     IF (q2Lx /= 0) Stencil(q2Lx)%description="q2Lx"
00281     IF (q2Rx /= 0) Stencil(q2Rx)%description="q2Rx"
00282     IF (q2Ly /= 0) Stencil(q2Ly)%description="q2Ly"
00283     IF (q2Ry /= 0) Stencil(q2Ry)%description="q2Ry"
00284     IF (q2Lz /= 0) Stencil(q2Lz)%description="q2Lz"
00285     IF (q2Rz /= 0) Stencil(q2Rz)%description="q2Rz"
00286     IF (f2x /= 0) Stencil(f2x)%description="f2x"
00287     IF (f2y /= 0) Stencil(f2y)%description="f2y"
00288     IF (f2z /= 0) Stencil(f2z)%description="f2z"
00289     IF (limiter_x /= 0) Stencil(limiter_x)%description="limiter_x"
00290     IF (limiter_y /= 0) Stencil(limiter_y)%description="limiter_y"
00291     IF (limiter_z /= 0) Stencil(limiter_z)%description="limiter_z"
00292     IF (limiter_ppm /= 0) Stencil(limiter_ppm)%description="limiter_ppm"
00293     IF (pT /= 0) Stencil(pT)%description="pT"
00294     IF (qex /= 0) Stencil(qex)%description="qex"
00295     IF (qey /= 0) Stencil(qey)%description="qey"
00296     IF (qez /= 0) Stencil(qez)%description="qez"
00297     IF (dqx /= 0) Stencil(dqx)%description="dqx"
00298     IF (dqy /= 0) Stencil(dqy)%description="dqy"
00299     IF (dqz /= 0) Stencil(dqz)%description="dqz"
00300     IF (ex /= 0) Stencil(ex)%description="ex"
00301     IF (ey /= 0) Stencil(ey)%description="ey"
00302     IF (ez /= 0) Stencil(ez)%description="ez"
00303     IF (ex_bar /= 0) Stencil(ex_bar)%description="ex_bar"
00304     IF (ey_bar /= 0) Stencil(ey_bar)%description="ey_bar"
00305     IF (ez_bar /= 0) Stencil(ez_bar)%description="ez_bar"
00306     IF (e2x /= 0) Stencil(e2x)%description="e2x"
00307     IF (e2y /= 0) Stencil(e2y)%description="e2y"
00308     IF (e2z /= 0) Stencil(e2z)%description="e2z"
00309     IF (e2x_bar /= 0) Stencil(e2x_bar)%description="e2x_bar"
00310     IF (e2y_bar /= 0) Stencil(e2y_bar)%description="e2y_bar"
00311     IF (e2z_bar /= 0) Stencil(e2z_bar)%description="e2z_bar"
00312     IF (A2x /= 0) Stencil(A2x)%description="A2x"
00313     IF (A2y /= 0) Stencil(A2y)%description="A2y"
00314     IF (A2z /= 0) Stencil(A2z)%description="A2z"
00315     IF (Sx /= 0) Stencil(Sx)%description="Sx"
00316     IF (Sy /= 0) Stencil(Sy)%description="Sy"
00317     IF (Sz /= 0) Stencil(Sz)%description="Sz"
00318     IF (SpeedsX /= 0) Stencil(SpeedsX)%description="SpeedsX"
00319     IF (SpeedsY /= 0) Stencil(SpeedsY)%description="SpeedsY"
00320     IF (SpeedsZ /= 0) Stencil(SpeedsZ)%description="SpeedsZ"
00321     IF (leftX /= 0) Stencil(leftX)%description="leftX"
00322     IF (RightX /= 0) Stencil(RightX)%description="RightX"
00323     IF (leftY /= 0) Stencil(leftY)%description="leftY"
00324     IF (RightY /= 0) Stencil(RightY)%description="RightY"
00325     IF (leftZ /= 0) Stencil(leftZ)%description="leftZ"
00326     IF (RightZ /= 0) Stencil(RightZ)%description="RightZ"
00327     IF (nWaves /= 0) Stencil(nWaves)%description="nWaves"
00328     IF (req_eigens /= 0) Stencil(req_eigens)%description="req_eigens"
00329     IF (adfx /= 0) Stencil(adfx)%description="adfx"
00330     IF (adfy /= 0) Stencil(adfy)%description="adfy"
00331     IF (adfz /= 0) Stencil(adfz)%description="adfz"
00332     IF (ctfx /= 0) Stencil(ctfx)%description="ctfx"
00333     IF (ctfy /= 0) Stencil(ctfy)%description="ctfy"
00334     IF (ctfz /= 0) Stencil(ctfz)%description="ctfz"
00335     IF (etax /= 0) Stencil(etax)%description="etax"
00336     IF (etay /= 0) Stencil(etay)%description="etay"
00337     IF (etaz /= 0) Stencil(etaz)%description="etaz"
00338     IF (eta2x /= 0) Stencil(eta2x)%description="eta2x"
00339     IF (eta2y /= 0) Stencil(eta2y)%description="eta2y"
00340     IF (eta2z /= 0) Stencil(eta2z)%description="eta2z"
00341     IF (A3x /= 0) Stencil(A3x)%description="A3x"
00342     IF (A3y /= 0) Stencil(A3y)%description="A3y"
00343     IF (A3z /= 0) Stencil(A3z)%description="A3z"
00344     IF (w3 /= 0) Stencil(w3)%description="w3"
00345     IF (ctf2x /= 0) Stencil(ctf2x)%description="ctf2x"
00346     IF (ctf2y /= 0) Stencil(ctf2y)%description="ctf2y"
00347     IF (ctf2z /= 0) Stencil(ctf2z)%description="ctf2z"
00348     IF (beforesweepstep /= 0) Stencil(beforesweepstep)%description="beforestep"
00349     IF (aftersweepstep /= 0) Stencil(aftersweepstep)%description="afterstep"
00350     IF (source /= 0) Stencil(source)%description="source"
00351     IF (source2 /= 0) Stencil(source2)%description="source2"
00352     IF (cornerdiv /= 0) Stencil(cornerdiv)%description="cornerdiv"
00353     IF (gradphix /= 0) Stencil(gradphix)%description="gradphix"
00354     IF (gradphiy /= 0) Stencil(gradphiy)%description="gradphiy"
00355     IF (gradphiz /= 0) Stencil(gradphiz)%description="gradphiz"
00356   END SUBROUTINE set_descriptions
00357 
00358 
00359 
00360   SUBROUTINE sweep_()
00361     INTEGER :: index,i,j,k
00362     CALL BeforeSweepStep_()
00363     CALL Init_prims_()
00364     CALL Reconstruct_()
00365     IF (viscCD == ROE_VISCOSITY .OR. viscCD == H_VISCOSITY) CALL HVisc_()
00366     IF (nDim >= 2 .AND. (lCTU .OR. lMHD)) THEN
00367        CALL calc_fluxes_()
00368        IF (lMHD) THEN
00369           CALL calc_emf_()
00370           CALL updateB_()
00371           CALL update_fluxes_()
00372        END IF
00373        IF (lMHD .OR. (NrTracerVars > 0 .AND. iTracer==LAGRANGIAN)) CALL updatew2_()
00374        CALL CTU_()
00375        CALL calc_final_fluxes_()
00376        IF (NrTracerVars > 0) CALL calc_tracer_fluxes_()
00377        CALL update_final_fluxes_()
00378        CALL update_final_()
00379        IF (lMHD) THEN
00380           CALL calc_final_emf_()
00381           CALL updateB_final_()
00382        END IF
00383     ELSE
00384        CALL calc_fluxes_noctu()
00385        !      CALL updatew2_()
00386        CALL update_final_fluxes_()
00387        CALL update_final_()
00388     END IF
00389     CALL store_fixup_fluxes_()
00390     CALL AfterSweepStep_()
00391   CONTAINS
00392 
00393     SUBROUTINE BeforeSweepStep_
00394       CALL set_dependency(beforesweepstep, q, (/0,0,0,0,0,0/))
00395     END SUBROUTINE BeforeSweepStep_
00396 
00397     SUBROUTINE AfterSweepStep_()
00398       CALL set_dependency(aftersweepstep, w3, (/0,0,0,0,0,0/))
00399     END SUBROUTINE AfterSweepStep_
00400 
00401     SUBROUTINE Init_prims_()
00402       !Calculating new primitive values needed for reconstruction
00403       CALL set_dependency(w, beforesweepstep, (/0,0,0,0,0,0/))
00404     END SUBROUTINE Init_prims_
00405 
00406     SUBROUTINE Reconstruct_
00407       IF (lGudonov) THEN
00408          CALL set_dependency(qRx, w, center_r)
00409          CALL set_dependency(qLx, w, center_l)
00410          IF (lMHD) THEN
00411             CALL set_dependency(qRx, aux, same)
00412             CALL set_dependency(qLx, aux, same)
00413          END IF
00414          IF (nDim >= 2) THEN
00415             CALL set_dependency(qRy, w, center_u)
00416             CALL set_dependency(qLy, w, center_d)
00417             IF (lMHD) THEN
00418                CALL set_dependency(qRy, aux, same)
00419                CALL set_dependency(qLy, aux, same)
00420             END IF
00421             IF (nDim >= 3) THEN
00422                CALL set_dependency(qRz, w, center_b)
00423                CALL set_dependency(qLz, w, center_f)
00424                IF (lMHD) THEN
00425                   CALL set_dependency(qRz, aux, same)
00426                   CALL set_dependency(qLz, aux, same)
00427                END IF
00428             END IF
00429          END IF
00430       ELSE
00431          IF (lLimiter .OR. lApplyLOF) THEN    
00432             CALL calc_limiters_()
00433          END IF
00434          IF (.NOT. request_eigens_()) THEN
00435          END IF
00436          CALL set_dependency(dqx, w, (/-1,1,0,0,0,0/))
00437          IF (lChar_Limiters) CALL set_dependency(dqx, req_eigens, same)
00438          IF (lLimiter) CALL set_dependency(dqx, limiter_ppm, same)
00439          IF (nDim >= 2) THEN
00440             CALL set_dependency(dqy, w, (/0,0,-1,1,0,0/))
00441             IF (lChar_Limiters) CALL set_dependency(dqy, req_eigens, same)
00442             IF (lLimiter) CALL set_dependency(dqy, limiter_ppm, same)
00443             IF (nDim >= 3) THEN
00444                CALL set_dependency(dqz, w, (/0,0,0,0,-1,1/))
00445                IF (lChar_Limiters) CALL set_dependency(dqz, req_eigens, same)
00446                IF (lLimiter) CALL set_dependency(dqz, limiter_ppm, same)
00447             END IF
00448          END IF
00449          IF (InterpOrder == 3) THEN
00450             IF (lUsePPML) THEN
00451                CALL set_dependency(qex, w, (/-2,1,0,0,0,0/))
00452             ELSE
00453                CALL set_dependency(qex, w, (/-1,0,0,0,0,0/))
00454             END IF
00455             CALL set_dependency(qex, dqx, (/-1,0,0,0,0,0/))
00456             IF (nDim >= 2) THEN
00457                CALL set_dependency(qey, w, (/0,0,-1,0,0,0/))
00458                CALL set_dependency(qey, dqy, (/0,0,-1,0,0,0/))
00459                IF (nDim >= 3) THEN
00460                   CALL set_dependency(qez, w, (/0,0,0,0,-1,0/))
00461                   CALL set_dependency(qez, dqz, (/0,0,0,0,-1,0/))
00462                END IF
00463             END IF
00464          END IF
00465          CALL set_codependency(qRx, qLx, (/1,0,0/))
00466          IF (nDim >= 2) THEN
00467             CALL set_codependency(qRy, qLy, (/0,1,0/))
00468             IF (nDim >= 3) THEN
00469                CALL set_codependency(qRz, qLz, (/0,0,1/))
00470             END IF
00471          END IF
00472          CALL set_dependency(qRx, w, center_r)
00473          IF (InterpOrder == 3) CALL set_dependency(qRx, qex, (/0,1,0,0,0,0/))
00474          CALL set_dependency(qRx, dqx, center_r)
00475 !        IF (lLimiter) CALL set_dependency(qRx, limiter_ppm, center_r)
00476          CALL set_dependency(qRx, req_eigens, center_r)
00477          CALL set_dependency(qLx, w, center_l)
00478          CALL set_dependency(qLx, dqx, center_l)
00479          IF (InterpOrder == 3) CALL set_dependency(qLx, qex, (/-1,0,0,0,0,0/))
00480 !        IF (lLimiter) CALL set_dependency(qLx, limiter_ppm, center_l)
00481          CALL set_dependency(qLx, req_eigens, center_l)
00482          IF (lUsePPML) THEN
00483             CALL set_dependency(qRx, w, (/-2,2,0,0,0,0/))
00484             CALL set_dependency(qLx, w, (/-2,2,0,0,0,0/))
00485          END IF
00486          IF (nDim >= 2) THEN
00487             CALL set_dependency(qRy, w, center_u)
00488             CALL set_dependency(qRy, dqy, center_u)
00489             IF (InterpOrder == 3) CALL set_dependency(qRy, qey, (/0,0,0,1,0,0/))
00490             IF (lLimiter) CALL set_dependency(qRy, limiter_ppm, center_u)
00491             CALL set_dependency(qRy, req_eigens, center_u)
00492             CALL set_dependency(qLy, w, center_d)
00493             CALL set_dependency(qLy, dqy, center_d)
00494             IF (InterpOrder == 3) CALL set_dependency(qLy, qey, (/0,0,-1,0,0,0/))
00495             IF (lLimiter) CALL set_dependency(qLy, limiter_ppm, center_d)
00496             CALL set_dependency(qLy, req_eigens, center_d)
00497             IF (nDim >= 3) THEN
00498                CALL set_dependency(qRz, w, center_f)
00499                CALL set_dependency(qRz, dqz, center_f)
00500                IF (InterpOrder == 3) CALL set_dependency(qRz, qez, (/0,0,0,0,0,1/))
00501                IF (lLimiter) CALL set_dependency(qRz, limiter_ppm, center_f)
00502                CALL set_dependency(qRz, req_eigens, center_f)
00503                CALL set_dependency(qLz, w, center_b)
00504                CALL set_dependency(qLz, dqz, center_b)
00505                IF (InterpOrder == 3) CALL set_dependency(qLz, qez, (/0,0,0,0,-1,0/))
00506                IF (lLimiter) CALL set_dependency(qLz, limiter_ppm, center_b)
00507                CALL set_dependency(qLz, req_eigens, center_b)
00508             END IF
00509          END IF
00510          IF (lMHD) THEN
00511             IF (nDim >= 2) THEN
00512                CALL set_dependency(qLx, aux, same)
00513                CALL set_dependency(qRx, aux, same)
00514                CALL set_dependency(qLy, aux, same)
00515                CALL set_dependency(qRy, aux, same)
00516                IF (nDim >= 3) THEN
00517                   CALL set_dependency(qLz, aux, same)
00518                   CALL set_dependency(qRz, aux, same)
00519                END IF
00520             END IF
00521          END IF
00522          IF (lMHD) CALL MHD_Source_Terms_()
00523       END IF
00524       IF (lSelfGravity) THEN
00525          CALL set_dependency(qLx, gradphix, same)
00526          CALL set_dependency(qRx, gradphix, same)
00527          IF (nDim >= 2) THEN
00528             CALL set_dependency(qLy, gradphiy, same)
00529             CALL set_dependency(qRy, gradphiy, same)
00530             IF (nDim >= 3) THEN
00531                CALL set_dependency(qLz, gradphiz, same)
00532                CALL set_dependency(qRz, gradphiz, same)
00533             END IF
00534          END IF
00535       END IF
00536     END SUBROUTINE Reconstruct_
00537 
00538     SUBROUTINE calc_limiters_()
00539       CALL set_dependency(pT, w, same)
00540       CALL set_dependency(limiter_x, pT, (/-2,2,0,0,0,0/))
00541       CALL set_dependency(limiter_x, w, (/-1,1,0,0,0,0/))
00542       IF (lLimiter) THEN
00543          IF (nDim == 1) CALL set_dependency(limiter_ppm, limiter_x, (/-1,1,0,0,0,0/))
00544          IF (nDim == 2) CALL set_dependency(limiter_ppm, limiter_x, (/-1,1,-1,1,0,0/))
00545          IF (nDim == 3) CALL set_dependency(limiter_ppm, limiter_x, (/-1,1,-1,1,-1,1/))
00546       END IF
00547       IF (nDim >= 2) THEN
00548          CALL set_dependency(limiter_y, pT, (/0,0,-2,2,0,0/))
00549          CALL set_dependency(limiter_y, w, (/0,0,-1,1,0,0/))
00550          IF (lLimiter) THEN
00551             IF (nDim == 2) CALL set_dependency(limiter_ppm, limiter_y, (/-1,1,-1,1,0,0/))
00552             IF (nDim == 3) CALL set_dependency(limiter_ppm, limiter_y, (/-1,1,-1,1,-1,1/))
00553          END IF
00554          IF (nDim >= 3) THEN
00555             CALL set_dependency(limiter_z, pT, (/0,0,0,0,-2,2/))
00556             CALL set_dependency(limiter_z, w, (/0,0,0,0,-1,1/))
00557             IF (lLimiter) CALL set_dependency(limiter_ppm, limiter_z, (/-1,1,-1,1,-1,1/))
00558          END IF
00559       END IF
00560     END SUBROUTINE calc_limiters_
00561 
00562 
00563     FUNCTION request_eigens_()
00564       LOGICAL :: request_eigens_
00565       CALL set_dependency(req_eigens, w, same)
00566       CALL set_group(req_eigens, nWaves)
00567       CALL set_group(req_eigens, SpeedsX)
00568       CALL set_group(req_eigens, LeftX)
00569       CALL set_group(req_eigens, RightX)
00570       IF (nDim >= 2) THEN
00571          CALL set_group(req_eigens, SpeedsY)
00572          CALL set_group(req_eigens, LeftY)
00573          CALL set_group(req_eigens, RightY)
00574          IF (nDim >= 3) THEN
00575             CALL set_group(req_eigens, SpeedsZ)
00576             CALL set_group(req_eigens, LeftZ)
00577             CALL set_group(req_eigens, RightZ)
00578          END IF
00579       END IF
00580       request_eigens_=.true.
00581     END FUNCTION request_eigens_
00582 
00583     SUBROUTINE MHD_Source_Terms_()
00584       INTEGER :: i,i2,j,k,m,index
00585       IF (nDim >= 2) THEN
00586          CALL set_dependency(qLx, w, center_l)
00587          CALL set_dependency(qLx, aux, (/-1,0,0,0,0,0/))
00588          CALL set_dependency(qLx, aux, (/-1,-1,0,1,0,0/))
00589          CALL set_dependency(qRx, w, center_r)
00590          CALL set_dependency(qRx, aux, (/0,1,0,0,0,0/))
00591          CALL set_dependency(qRx, aux, (/0,0,0,1,0,0/))
00592 
00593          CALL set_dependency(qLy, w, center_d)
00594          CALL set_dependency(qLy, aux, (/0,0,-1,0,0,0/))
00595          CALL set_dependency(qLy, aux, (/0,1,-1,-1,0,0/))
00596          CALL set_dependency(qRy, w, center_u)
00597          CALL set_dependency(qRy, aux, (/0,1,0,0,0,0/))
00598          CALL set_dependency(qRy, aux, (/0,0,0,1,0,0/))
00599 
00600          IF (nDim >= 3) THEN
00601             CALL set_dependency(qLx, aux, (/-1,-1,0,0,0,1/))
00602             CALL set_dependency(qLy, aux, (/0,0,-1,-1,0,1/))
00603 
00604             CALL set_dependency(qRx, aux, (/0,0,0,0,0,1/))
00605             CALL set_dependency(qRy, aux, (/0,0,0,0,0,1/))
00606 
00607             CALL set_dependency(qLz, w, center_b)
00608             CALL set_dependency(qLz, aux, (/0,0,0,0,-1,0/))
00609             CALL set_dependency(qLz, aux, (/0,1,0,0,-1,-1/))
00610             CALL set_dependency(qLz, aux, (/0,0,0,1,-1,-1/))
00611 
00612             CALL set_dependency(qRz, w, center_f)
00613             CALL set_dependency(qRz, aux, (/0,0,0,0,0,1/))
00614             CALL set_dependency(qRz, aux, (/0,1,0,0,0,0/))
00615             CALL set_dependency(qRz, aux, (/0,0,0,1,0,0/))
00616          END IF
00617       END IF
00618     END SUBROUTINE MHD_Source_Terms_
00619 
00620     SUBROUTINE calc_fluxes_()
00621       CALL set_dependency(fx, qLx, same)
00622       CALL set_dependency(fx, qRx, same)
00623       IF (nDim >= 2) THEN
00624          CALL set_dependency(fy, qLy, same)
00625          CALL set_dependency(fy, qRy, same)
00626          IF (nDim >= 3) THEN
00627             CALL set_dependency(fz, qLz, same)
00628             CALL set_dependency(fz, qRz, same)
00629          END IF
00630       END IF
00631     END SUBROUTINE calc_fluxes_
00632 
00633 
00634     SUBROUTINE calc_fluxes_noctu()
00635       CALL set_dependency(f2x, qLx, same)
00636       CALL set_dependency(f2x, qRx, same)
00637       IF (nDim >= 2) THEN
00638          CALL set_dependency(f2y, qLy, same)
00639          CALL set_dependency(f2y, qRy, same)
00640          IF (nDim >= 3) THEN
00641             CALL set_dependency(f2z, qLz, same)
00642             CALL set_dependency(f2z, qRz, same)
00643          END IF
00644       END IF
00645     END SUBROUTINE calc_fluxes_noctu
00646 
00647     SUBROUTINE calc_emf_()
00648       CALL set_dependency(ez_bar, w, same) 
00649       IF (nDim >= 3) THEN
00650          CALL set_dependency(ex_bar, w, same) 
00651          CALL set_dependency(ey_bar, w, same) 
00652       END IF
00653 
00654       CALL set_dependency(ez, ez_bar, (/-1,0,-1,0,0,0/))
00655       CALL set_dependency(ez, fy, (/-1,0,0,0,0,0/))
00656       CALL set_dependency(ez, fx, (/0,0,-1,0,0,0/))
00657 
00658       IF (nDim >= 3) THEN
00659          CALL set_dependency(ex, ex_bar, (/0,0,-1,0,-1,0/))
00660          CALL set_dependency(ex, fz, (/0,0,-1,0,0,0/))
00661          CALL set_dependency(ex, fy, (/0,0,0,0,-1,0/))
00662          CALL set_dependency(ey, ey_bar, (/-1,0,0,0,-1,0/))
00663          CALL set_dependency(ey, fx, (/0,0,0,0,-1,0/))
00664          CALL set_dependency(ey, fz, (/-1,0,0,0,0,0/))
00665       END IF
00666     END SUBROUTINE calc_emf_
00667 
00668 
00669     SUBROUTINE updateB_()
00670       CALL set_dependency(A2x, aux, same)
00671       CALL set_dependency(A2x, ez, (/0,0,0,1,0,0/))
00672       CALL set_dependency(A2y, aux, same)
00673       CALL set_dependency(A2y, ez, (/0,1,0,0,0,0/))
00674 
00675       IF (nDim >= 3) THEN
00676          CALL set_dependency(A2x, ey, (/0,0,0,0,0,1/))
00677          CALL set_dependency(A2y, ex, (/0,0,0,0,0,1/))
00678 
00679          CALL set_dependency(A2z, aux, same)
00680          CALL set_dependency(A2z, ex, (/0,0,0,1,0,0/))
00681          CALL set_dependency(A2z, ey, (/0,1,0,0,0,0/))
00682       END IF
00683     END SUBROUTINE updateB_
00684 
00685     SUBROUTINE updatew2_()
00686       CALL set_dependency(w2, beforesweepstep, same)
00687       CALL set_dependency(w2, fx, (/0,1,0,0,0,0/))
00688       CALL set_dependency(w2, fy, (/0,0,0,1,0,0/))
00689       IF (nDim >= 3) CALL set_dependency(w2, fz, (/0,0,0,0,0,1/))
00690       IF (lMHD) THEN
00691          CALL set_dependency(w2, A2x, (/0,1,0,0,0,0/))
00692          CALL set_dependency(w2, A2y, (/0,0,0,1,0,0/))
00693          IF (nDim >= 3) THEN
00694             CALL set_dependency(w2, ctfx, (/0,1,0,0,0,0/))
00695             CALL set_dependency(w2, ctfy, (/0,0,0,1,0,0/))
00696             CALL set_dependency(w2, A2z, (/0,0,0,0,0,1/))
00697             CALL set_dependency(w2, ctfz, (/0,0,0,0,0,1/))
00698          END IF
00699       END IF
00700       IF (lSelfGravity) THEN
00701          CALL set_dependency(w2, beforesweepstep, (/-1,1,0,0,0,0/))
00702          IF (nDim >= 2) THEN
00703             CALL set_dependency(w2, beforesweepstep, (/0,0,-1,1,0,0/))
00704             IF (nDim >= 3) THEN
00705                CALL set_dependency(w2, beforesweepstep, (/0,0,0,0,-1,1/))
00706             END IF
00707          END IF
00708       END IF
00709     END SUBROUTINE updatew2_
00710 
00711 
00712     SUBROUTINE update_fluxes_()
00713       IF (nDim == 3) THEN
00714          CALL set_dependency(ctfx, ez, (/0,0,0,1,0,0/))
00715          CALL set_dependency(ctfx, ey, (/0,0,0,0,0,1/))
00716          CALL set_dependency(ctfy, ez, (/0,1,0,0,0,0/))
00717          CALL set_dependency(ctfy, ex, (/0,0,0,0,0,1/))
00718          CALL set_dependency(ctfz, ex, (/0,0,0,1,0,0/))
00719          CALL set_dependency(ctfz, ey, (/0,1,0,0,0,0/))
00720       END IF
00721     END SUBROUTINE update_fluxes_
00722 
00723 
00724     SUBROUTINE CTU_()
00725       IF (lMHD) THEN
00726          CALL set_dependency(Sx, w, same)
00727          CALL set_dependency(Sy, w, same)
00728 
00729          IF (nDim == 2) THEN
00730             CALL set_dependency(Sx, aux, (/0,1,0,1,0,0/))
00731             CALL set_dependency(Sy, aux, (/0,1,0,1,0,0/))
00732          ELSE IF (nDim >= 3) THEN
00733             CALL set_dependency(Sz, w, same)
00734             CALL set_dependency(Sx, aux, (/0,1,0,1,0,1/))
00735             CALL set_dependency(Sy, aux, (/0,1,0,1,0,1/))
00736             CALL set_dependency(Sz, aux, (/0,1,0,1,0,1/))
00737          END IF
00738       END IF
00739 
00740       CALL set_dependency(q2Lx, qLx, same)
00741       CALL set_dependency(q2Lx, beforesweepstep, (/-1,-1,0,0,0,0/))
00742       CALL set_dependency(q2Lx, fy, (/-1,-1,0,1,0,0/))
00743       CALL set_dependency(q2Rx, qRx, same)
00744       CALL set_dependency(q2Rx, beforesweepstep, (/0,0,0,0,0,0/))
00745       CALL set_dependency(q2Rx, fy, (/0,0,0,1,0,0/))
00746 
00747       CALL set_dependency(q2Ly, qLy, same)
00748       CALL set_dependency(q2Ly, beforesweepstep, (/0,0,-1,-1,0,0/))
00749       CALL set_dependency(q2Ly, fx, (/0, 1, -1,-1,0,0/))
00750       CALL set_dependency(q2Ry, qRy, same)
00751       CALL set_dependency(q2Ry, beforesweepstep, (/0,0,0,0,0,0/))
00752       CALL set_dependency(q2Ry, fx, (/0,1,0,0,0,0/))
00753 
00754       IF (lMHD) THEN
00755          CALL set_dependency(q2Lx, Sx, center_l)
00756          CALL set_dependency(q2Rx, Sx, center_r)
00757          CALL set_dependency(q2Lx, A2x, same)
00758          CALL set_dependency(q2Rx, A2x, same)
00759          CALL set_dependency(q2Ly, Sy, center_d)
00760          CALL set_dependency(q2Ry, Sy, center_u)
00761          CALL set_dependency(q2Ly, A2y, same)
00762          CALL set_dependency(q2Ry, A2y, same)
00763       END IF
00764       IF (nDim >= 3) THEN
00765          CALL set_dependency(q2Lz, qLz, same)
00766          CALL set_dependency(q2Lx, fz, (/-1,-1,0,0,0,1/))
00767          CALL set_dependency(q2Rx, fz, (/0,0,0,0,0,1/))
00768          CALL set_dependency(q2Ly, fz, (/0,0,-1,-1,0,1/))
00769          CALL set_dependency(q2Ry, fz, (/0,0,0,0,0,1/))
00770          CALL set_dependency(q2Rz, qRz, same)
00771          CALL set_dependency(q2Lz, fx, (/0,1,0,0,-1,-1/))
00772          CALL set_dependency(q2Lz, fy, (/0,0,0,1,-1,-1/))
00773          CALL set_dependency(q2Rz, fx, (/0,1,0,0,0,0/))
00774          CALL set_dependency(q2Rz, fy, (/0,0,0,1,0,0/))
00775 
00776          IF (lMHD) THEN
00777             CALL set_dependency(q2Lx, ctfy, (/-1,-1,0,1,0,0/))
00778             CALL set_dependency(q2Rx, ctfy, (/0,0,0,1,0,0/))
00779             CALL set_dependency(q2Ly, ctfx, (/0, 1, -1,-1,0,0/))
00780             CALL set_dependency(q2Ry, ctfx, (/0,1,0,0,0,0/))
00781             CALL set_dependency(q2Lz, ctfx, (/0,1,0,0,-1,-1/))
00782             CALL set_dependency(q2Lz, ctfy, (/0,0,0,1,-1,-1/))
00783             CALL set_dependency(q2Rz, ctfx, (/0,1,0,0,0,0/))
00784             CALL set_dependency(q2Rz, ctfy, (/0,0,0,1,0,0/))
00785             CALL set_dependency(q2Lx, ctfz, (/-1,-1,0,0,0,1/))
00786             CALL set_dependency(q2Rx, ctfz, (/0,0,0,0,0,1/))
00787             CALL set_dependency(q2Ly, ctfz, (/0,0,-1,-1,0,1/))
00788             CALL set_dependency(q2Ry, ctfz, (/0,0,0,0,0,1/))
00789             CALL set_dependency(q2Lz, Sz, center_b)
00790             CALL set_dependency(q2Rz, Sz, center_f)
00791             CALL set_dependency(q2Lz, A2z, same)
00792             CALL set_dependency(q2Rz, A2z, same)
00793          END IF
00794       END IF
00795       IF (lSelfGravity) THEN
00796          CALL set_dependency(q2Lx, gradphiy, (/-1,-1,0,1,0,0/))
00797          CALL set_dependency(q2Rx, gradphiy, (/0,0,0,1,0,0/))
00798          CALL set_dependency(q2Ly, gradphix, (/0,1,-1,-1,0,0/))
00799          CALL set_dependency(q2Ry, gradphix, (/0,1,0,0,0,0/))
00800          IF (nDim >= 3) THEN
00801             CALL set_dependency(q2Lx, gradphiz, (/-1,-1,0,0,0,1/))
00802             CALL set_dependency(q2Rx, gradphiz, (/0,0,0,0,0,1/))
00803             CALL set_dependency(q2Ly, gradphiz, (/0,0,-1,-1,0,1/))
00804             CALL set_dependency(q2Ry, gradphiz, (/0,0,0,0,0,1/))
00805             CALL set_dependency(q2Lz, gradphix, (/0,1,0,0,-1,-1/))
00806             CALL set_dependency(q2Lz, gradphiy, (/0,0,0,1,-1,-1/))
00807             CALL set_dependency(q2Rz, gradphix, (/0,1,0,0,0,0/))
00808             CALL set_dependency(q2Rz, gradphiy, (/0,0,0,1,0,0/))
00809          END IF
00810       END IF
00811 
00812     END SUBROUTINE CTU_
00813 
00814     SUBROUTINE calc_tracer_fluxes_()
00815       CALL set_dependency(adfx, beforesweepstep, (/-1,1,0,0,0,0/))
00816       CALL set_dependency(f2x, w2, (/-1,0,0,0,0,0/))
00817       CALL set_dependency(f2x, adfx, (/-1,0,0,0,0,0/))
00818       IF (nDim >= 2) THEN
00819          CALL set_dependency(adfy, beforesweepstep, (/0,0,-1,1,0,0/))
00820          CALL set_dependency(f2y, w2, (/0,0,-1,0,0,0/))
00821          CALL set_dependency(f2y, adfy, (/0,0,-1,0,0,0/))
00822          IF (nDim >= 3) THEN
00823             CALL set_dependency(adfz, beforesweepstep, (/0,0,0,0,-1,1/))
00824             CALL set_dependency(f2z, w2, (/0,0,0,0,-1,0/))
00825             CALL set_dependency(f2z, adfz, (/0,0,0,0,-1,0/))
00826          END IF
00827       END IF
00828     END SUBROUTINE calc_tracer_fluxes_
00829 
00830     SUBROUTINE HVisc_()
00831 
00832       CALL set_dependency(etax, req_eigens, (/-1,0,0,0,0,0/))
00833       CALL set_dependency(eta2x, etax, same)
00834 
00835       IF (nDim >= 2) THEN
00836          CALL set_dependency(etay, req_eigens, (/0,0,-1,0,0,0/))
00837          CALL set_dependency(eta2y, etay, same)
00838          IF (nDim >= 3) THEN
00839             CALL set_dependency(etaz, req_eigens, (/0,0,0,0,-1,0/))  
00840             CALL set_dependency(eta2z, etaz, same)
00841          END IF
00842          IF (ViscCD >= 2) THEN
00843             CALL set_dependency(eta2x, etay, (/-1,0,0,1,0,0/))
00844             CALL set_dependency(eta2y, etax, (/0,1,-1,0,0,0/))
00845             IF (nDim >= 3) THEN
00846                CALL set_dependency(eta2x, etaz, (/-1,0,0,0,0,1/))
00847                CALL set_dependency(eta2y, etaz, (/0,0,-1,0,0,1/))
00848                CALL set_dependency(eta2z, etax, (/0,1,0,0,-1,0/))
00849                CALL set_dependency(eta2z, etay, (/0,0,0,1,-1,0/))
00850             END IF
00851          END IF
00852       END IF
00853     END SUBROUTINE HVisc_
00854 
00855     SUBROUTINE calc_final_fluxes_()
00856       CALL set_dependency(f2x, q2Lx, same)
00857       CALL set_dependency(f2x, q2Rx, same)
00858       IF (ViscCD > 0) CALL set_dependency(f2x, eta2x, same)
00859       IF (nDim >= 2) THEN
00860          CALL set_dependency(f2y, q2Ly, same)
00861          CALL set_dependency(f2y, q2Ry, same)
00862          IF (ViscCD > 0) CALL set_dependency(f2y, eta2y, same)
00863          IF (nDim >= 3) THEN
00864             CALL set_dependency(f2z, q2Lz, same)
00865             CALL set_dependency(f2z, q2Rz, same)
00866             IF (ViscCD > 0) CALL set_dependency(f2z, eta2z, same)
00867          END IF
00868       END IF
00869     END SUBROUTINE calc_final_fluxes_
00870 
00871     SUBROUTINE calc_final_emf_()
00872 
00873       CALL set_dependency(e2z_bar, w2, same)
00874       CALL set_dependency(e2z, e2z_bar, (/-1,0,-1,0,0,0/))
00875       CALL set_dependency(e2z, f2x, (/0,0,-1,0,0,0/))
00876       CALL set_dependency(e2z, f2y, (/-1,0,0,0,0,0/))
00877 
00878       IF (nDim >= 3) THEN
00879          CALL set_dependency(e2x_bar, w2, same)
00880          CALL set_dependency(e2y_bar, w2, same)
00881          CALL set_dependency(e2x, e2x_bar, (/0,0,-1,0,-1,0/))
00882          CALL set_dependency(e2x, f2y, (/0,0,0,0,-1,0/))
00883          CALL set_dependency(e2x, f2z, (/0,0,-1,0,0,0/))
00884          CALL set_dependency(e2y, e2y_bar, (/-1,0,0,0,-1,0/))
00885          CALL set_dependency(e2y, f2z, (/-1,0,0,0,0,0/))
00886          CALL set_dependency(e2y, f2x, (/0,0,0,0,-1,0/))
00887       END IF
00888     END SUBROUTINE calc_final_emf_
00889 
00890     SUBROUTINE store_fixup_fluxes_()
00891     END SUBROUTINE store_fixup_fluxes_
00892 
00893 
00894 
00895     SUBROUTINE update_final_fluxes_()
00896 
00897       IF (lApplyDiffusion) THEN
00898          IF (nDim == 1) CALL set_dependency(cornerdiv, w, (/-1,0,0,0,0,0/))
00899          IF (nDim == 2) CALL set_dependency(cornerdiv, w, (/-1,0,-1,0,0,0/))
00900          IF (nDim == 3) CALL set_dependency(cornerdiv, w, (/-1,0,-1,0,-1,0/))
00901 
00902          CALL set_dependency(f2x, beforesweepstep, (/-1,0,0,0,0,0/))
00903          IF (nDim == 1) CALL set_dependency(f2x, cornerdiv, (/0,0,0,0,0,0/))
00904          IF (nDim == 2) CALL set_dependency(f2x, cornerdiv, (/0,0,0,1,0,0/))
00905          IF (nDim == 3) CALL set_dependency(f2x, cornerdiv, (/0,0,0,1,0,1/))
00906 
00907          IF (nDim >= 2) THEN
00908             CALL set_dependency(f2y, beforesweepstep, (/0,0,-1,0,0,0/))
00909             IF (nDim == 2) CALL set_dependency(f2y, cornerdiv, (/0,1,0,0,0,0/))
00910             IF (nDim == 3) CALL set_dependency(f2y, cornerdiv, (/0,1,0,0,0,1/))
00911             IF (nDim == 3) THEN
00912                CALL set_dependency(f2z, beforesweepstep, (/0,0,0,0,-1,0/))
00913                CALL set_dependency(f2z, cornerdiv, (/0,1,0,1,0,0/))
00914             END IF
00915          END IF
00916       END IF
00917 
00918       IF (lApplyLOF) THEN
00919          CALL set_dependency(f2x, beforesweepstep, (/-2,1,0,0,0,0/))
00920          CALL set_dependency(f2y, beforesweepstep, (/0,0,-2,1,0,0/))
00921          CALL set_dependency(f2x, limiter_y, (/-1,0,0,0,0,0/))
00922          CALL set_dependency(f2y, limiter_x, (/0,0,-1,0,0,0/))
00923          IF (nDim == 3)  THEN
00924             CALL set_dependency(f2z, beforesweepstep, (/0,0,0,0,-2,1/))
00925             CALL set_dependency(f2x, limiter_z, (/-1,0,0,0,0,0/))
00926             CALL set_dependency(f2y, limiter_z, (/0,0,-1,0,0,0/))
00927             CALL set_dependency(f2z, limiter_x, (/0,0,0,0,-1,0/))
00928             CALL set_dependency(f2z, limiter_y, (/0,0,0,0,-1,0/))
00929          END IF
00930       END IF
00931 
00932       IF (lSourceTerms) THEN
00933          IF (lSelfGravity) THEN
00934             CALL set_dependency(gradphix, beforesweepstep, (/-1,0,0,0,0,0/))
00935             CALL set_dependency(f2x, gradphix, (/0,0,0,0,0,0/))
00936             IF (nDim >= 2) THEN
00937                CALL set_dependency(gradphiy, beforesweepstep, (/0,0,-1,0,0,0/))
00938                CALL set_dependency(f2x, gradphiy, (/-1,0,0,1,0,0/))
00939                CALL set_dependency(f2y, gradphix, (/0,1,-1,0,0,0/))
00940                CALL set_dependency(f2y, gradphiy, (/0,0,0,0,0,0/))
00941                IF (nDim == 3) THEN
00942                   CALL set_dependency(gradphiz, beforesweepstep, (/0,0,0,0,-1,0/))
00943                   CALL set_dependency(f2x, gradphiz, (/-1,0,0,0,0,1/))
00944                   CALL set_dependency(f2y, gradphiz, (/0,0,-1,0,0,1/))
00945                   CALL set_dependency(f2z, gradphix, (/0,1,0,0,-1,0/))
00946                   CALL set_dependency(f2z, gradphiy, (/0,0,0,1,-1,0/))
00947                   CALL set_dependency(f2z, gradphiz, (/0,0,0,0,0,0/))
00948                END IF
00949             END IF
00950          END IF
00951       END IF
00952     END SUBROUTINE update_final_fluxes_
00953 
00954     SUBROUTINE updateB_final_()
00955       CALL set_dependency(A3x, aux, same)
00956       CALL set_dependency(A3x, e2z, (/0,0,0,1,0,0/))
00957       CALL set_dependency(A3y, e2z, (/0,1,0,0,0,0/))
00958 
00959       IF (nDim >= 3) THEN
00960          CALL set_dependency(A3x, e2y, (/0,0,0,0,0,1/))
00961          CALL set_dependency(A3y, e2x, (/0,0,0,0,0,1/))
00962          CALl set_dependency(A3z, e2x, (/0,0,0,1,0,0/))
00963          CALl set_dependency(A3z, e2y, (/0,1,0,0,0,0/))
00964       END IF
00965     END SUBROUTINE updateB_final_
00966 
00967 
00968 
00969     SUBROUTINE update_final_()
00970       CALL set_dependency(w3, beforesweepstep, same)
00971       CALL set_dependency(w3, f2x, (/0,1,0,0,0,0/))
00972       IF (nDim >= 2) THEN
00973          CALL set_dependency(w3, f2y, (/0,0,0,1,0,0/))
00974          IF (nDim >= 3) THEN
00975             CALL set_dependency(w3, f2z, (/0,0,0,0,0,1/))
00976          END IF
00977       END IF
00978       IF (lMHD .AND. nDim >= 2) THEN
00979          CALL set_dependency(aftersweepstep, A3x, (/0,1,0,0,0,0/))
00980          CALL set_dependency(aftersweepstep, A3y, (/0,0,0,1,0,0/))
00981          IF (nDim == 3) CALL set_dependency(aftersweepstep, A3z, (/0,0,0,0,0,1/))
00982       END IF
00983     END SUBROUTINE update_final_
00984 
00985     SUBROUTINE update_final_noctu_()
00986       CALL set_dependency(w3, beforesweepstep, same)
00987       CALL set_dependency(w3, f2x, (/0,1,0,0,0,0/))
00988       IF (nDim >= 2) THEN
00989          CALL set_dependency(w3, f2y, (/0,0,0,1,0,0/))
00990          IF (nDim >= 3) THEN
00991             CALL set_dependency(w3, f2z, (/0,0,0,0,0,1/))
00992          END IF
00993       END IF
00994     END SUBROUTINE update_final_noctu_
00995 
00996   END SUBROUTINE sweep_
00997 
00998 END MODULE SchemeDeclarations
 All Classes Files Functions Variables