Changes between Version 1 and Version 2 of AstrobearRestarts


Ignore:
Timestamp:
10/24/14 11:47:38 (10 years ago)
Author:
Jonathan
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • AstrobearRestarts

    v1 v2  
    4343  END IF
    4444}}}
     45
     46
     47=== How max speeds are calculated ===
     48==== Elliptic max speed depends on the solver ====
     49* Poisson
     50{{{
     51elliptic_maxspeed(level)=max(elliptic_maxspeed(level),sqrt(nDim*&
     52                maxval(abs(Info%q(ir(1,1):ir(1,2),ir(2,1):ir(2,2),ir(3,1):ir(3,2),iPhiGas)-&
     53                Info%q(il(1,1):il(1,2),il(2,1):il(2,2),il(3,1):il(3,2),iPhiGas)))))
     54}}}
     55==== Hydro max speed ====
     56* MUSCL uses maximum speed from the riemann solvers - which is usually just the max of the left and right most waves
     57{{{
     58  max(ABS(SL),ABS(SR))
     59}}}
     60* sweep uses the GetMaxSpeed routine to find the fastest eigen speed on the grid after an update
     61{{{
     62   SUBROUTINE GetMaxSpeed(Info)
     63      TYPE(InfoDef)  :: Info
     64      REAL(KIND=qPrec), DIMENSION(:,:,:,:), POINTER :: q
     65      REAL(KIND=qPREC) :: myMaxSpeed, fast_speed(3), A2, B2, B, dx, A
     66      INTEGER :: i,j,k,level
     67      level=Info%level
     68      dx=levels(level)%dx
     69      q=>Info%q
     70      myMaxSpeed=0d0
     71      DO i=1, Info%mX(1)
     72         DO j=1, Info%mX(2)
     73            DO k=1, Info%mX(3)
     74               A=SoundSpeed(q(i,j,k,:))
     75               A2=q(i,j,k,1)*A**2
     76               IF (iE_rad /= 0) THEN
     77                  A2=A2+4d0/9d0*q(i,j,k,iE_rad)*(1d0-exp(-q(i,j,k,iKappa)*dx))
     78                  A=sqrt(A2/q(i,j,k,1))
     79               END IF
     80               IF (lMHD) THEN
     81                  B2 = SUM(q(i,j,k,iBx:iBz)**2)
     82                  B = A2+B2
     83                  fast_speed(1:nDim) = sqrt(half*(B+sqrt(B**2-4d0*A2*q(i,j,k,iB(1:nDim))**2))/q(i,j,k,1))
     84                  mymaxspeed= maxval(abs(q(i,j,k,imom(1:nDim)))/q(i,j,k,1)+fast_speed(1:nDim))
     85               ELSE
     86!                  mymaxspeed=maxval(abs(q(i,j,k,imom(1:nDim)))+A2)/q(i,j,k,1)                                                                               
     87                  mymaxspeed=sqrt(sum(q(i,j,k,imom(1:nDim))**2))/q(i,j,k,1)+A
     88               END IF
     89               IF (mymaxspeed > maxspeed(level)) THEN
     90                  maxspeed(level)=mymaxspeed
     91                  maxspeed_location(level,:)=CellPos(Info, i, j, k)
     92               END IF
     93            END DO
     94         END DO
     95      END DO
     96   END SUBROUTINE GetMaxSpeed
     97}}}
     98
     99==== Particle max speed ====
     100This just finds the fastest particle speed
     101{{{
     102ParticleMaxSpeed=max(ParticleMaxSpeed, sqrt(sum(vel(i,1:nDim)**2)))
     103}}}