Changes between Version 15 and Version 16 of u/bliu/pnfldiff


Ignore:
Timestamp:
08/10/18 16:34:48 (6 years ago)
Author:
Baowei Liu
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • u/bliu/pnfldiff

    v15 v16  
    2020}}}
    2121
    22 == Basic Equations ==
     22== Equations ==
    2323
    2424$ \frac{\partial n_{e}}{\partial t} + \nabla\cdot(n_{e} \bold{u}) = I-r $[[BR]]
     
    60608. [https://astrobear.pas.rochester.edu/trac/wiki/u/adebrech/Matlab/RadiationPressure Radiation pressure 2]
    6161
    62 8. [https://astrobear.pas.rochester.edu/trac/wiki/u/adebrech/Matlab/IonizationFront Ionization front]
     629. [https://astrobear.pas.rochester.edu/trac/wiki/u/adebrech/Matlab/IonizationFront Ionization front]
     63
     64== Current code ==
     65
     66{{{
     67! Goal is to take input flux and integrate equations across grid to find ionization rate and heating rate
     68  ! Flux has units of number per area per time in computational units
     69  ! Data has computational units of the density of neutral hydrogen, ionized hydrogen, ionization rate, and heating rate
     70  SUBROUTINE DoLineTransfer(data, rates)
     71    INTEGER :: i,j,k
     72    REAL(KIND=qPREC) :: emtau, f, dx, tau, dtau
     73    REAL(KIND=qpREC), DIMENSION(:,:,:,:) :: data, rates
     74    !Scale parameters to computational scales
     75
     76    dx=levels(MaxLevel)%dx
     77!    write(*,*) LineTransferFlux
     78
     79    !$OMP PARALLEL DO SCHEDULE(STATIC) COLLAPSE(2) SHARED(sigmaH_scale, egamma_scale, dx, rates, data, LineTransferFlux) PRIVATE(i,j,k,tau,f,dtau,emtau) DEFAULT(NONE)
     80    DO j=1,size(data,2)
     81       DO k=1,size(data,3)
     82          tau=0d0
     83          f=LineTransferFlux
     84         !write(*,'(A4,20A25)'), 'i', 'f', 'nH','nHII', 'exp(-tau)', 'dtau', 'sigmaH_scale', 'dx'
     85          DO i=1,size(data,1)
     86
     87             !First calculate exp(-tau) where tau =sigmaH*nH+sigmad*nHII
     88!             emtau=exp(-(sigmaH_scale*data(i,j,k,iH) + sigmad_scale*data(i,j,k,iHII))*dx) )
     89             dtau=(sigmaH_scale*data(i,j,k,lt_iH)*dx)
     90             emtau=exp(-dtau)
     91             !if (emtau /= 1.) write(*,'(I4,20E25.15)') i, f, data(i,j,k,iH:iHII), emtau,(sigmaH_scale*data(i,j,k,iH))*dx, sigmaH_scale, dx
     92             !Store the photon absorption rate used to calculate the heating and ionization rates
     93             rates(i,j,k,iioniz)=f*(1d0-emtau)/dx               !has computational units of number per volume per second
     94!             rates(i,j,k,iheat)=0
     95             rates(i,j,k,iheat)=f*(1d0-emtau)/dx*egamma_scale  !has computational units of energy per volume per second
     96
     97             !Update the flux for the next cell along this ray
     98             f=f*emtau
     99             tau=tau+dtau
     100             data(i,j,k,lt_iD)=tau
     101          END DO
     102       END DO
     103    END DO
     104    !$OMP END PARALLEL DO
     105  END SUBROUTINE DoLineTransfer
     106}}}
     107
     108