Changes between Version 6 and Version 7 of u/bliu/pnMapping


Ignore:
Timestamp:
11/19/21 13:37:41 (3 years ago)
Author:
Baowei Liu
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • u/bliu/pnMapping

    v6 v7  
    173173
    174174{{{
    175     ! Physical bounds of boxes
    176     box_0=64000*reshape((/-1,-1,-1,1,1,1/),(/3,2/))
    177     box_4=4000*reshape((/-1,-1,-1,1,1,1/),(/3,2/))
    178     box_7=750*reshape((/-1,-1,-1,1,1,1/),(/3,2/))
    179 
    180     ! index of boxes in each level's index space
    181     ibox_0=nint(box_0-spread(GxBounds(:,1),2,2))/levels(0)%dx + spread((/1,0/),1,3)
    182     if (maxlevel >= 4) then
    183        ibox_4=nint(box_4-spread(GxBounds(:,1),2,2))/levels(4)%dx + spread((/1,0/),1,3)
    184        if (maxlevel >= 7) then
    185           ibox_7=nint(box_7-spread(GxBounds(:,1),2,2))/levels(7)%dx + spread((/1,0/),1,3)
    186        end if
    187     end if
    188 
    189 
     175    nx=Info%mx(1)
     176    ny=Info%mx(2)
     177    nz=Info%mx(3)
     178    IF (lRestart) RETURN
     179    IF (.NOT. ANY(Info%level == (/0,4,7/))) RETURN
     180    SELECT CASE(Info%level)
    190181    CASE(0)
    191        open(unit=195,file='NewLargeGrid_density_g_cm3_grid.dat',status='old',form='formatted',action='read')
    192        open(unit=196,file='NewLargeGrid_v_x_cm_s_grid.dat',status='old',form='formatted',action='read')
    193        open(unit=197,file='NewLargeGrid_v_y_cm_s_grid.dat',status='old',form='formatted',action='read')
    194        open(unit=198,file='NewLargeGrid_v_z_cm_s_grid.dat',status='old',form='formatted',action='read')
     182       open(unit=195,file='density_grid1.dat',status='old',form='formatted',action='read')
     183       open(unit=196,file='v_x_grid1.dat',status='old',form='formatted',action='read')
     184       open(unit=197,file='v_y_grid1.dat',status='old',form='formatted',action='read')
     185       open(unit=198,file='v_z_grid1.dat',status='old',form='formatted',action='read')
    195186       open(unit=199,file='NewLargeGrid_u_erg_g_grid.dat',status='old',form='formatted',action='read')
    196187       ibox=ibox_0
    197188    CASE(4)
    198        open(unit=195,file='NewMedGrid_density_g_cm3_grid.dat',status='old',form='formatted',action='read')
    199        open(unit=196,file='NewMedGrid_v_x_cm_s_grid.dat',status='old',form='formatted',action='read')
    200        open(unit=197,file='NewMedGrid_v_y_cm_s_grid.dat',status='old',form='formatted',action='read')
    201        open(unit=198,file='NewMedGrid_v_z_cm_s_grid.dat',status='old',form='formatted',action='read')
     189       open(unit=195,file='density_grid2.dat',status='old',form='formatted',action='read')
     190       open(unit=196,file='v_x_grid2.dat',status='old',form='formatted',action='read')
     191       open(unit=197,file='v_y_grid2.dat',status='old',form='formatted',action='read')
     192       open(unit=198,file='v_z_grid2.dat',status='old',form='formatted',action='read')
    202193       open(unit=199,file='NewMedGrid_u_erg_g_grid.dat',status='old',form='formatted',action='read')
    203194       ibox=ibox_4
    204195    CASE(7)
    205        open(unit=195,file='NewSmallGrid_density_g_cm3_grid.dat',status='old',form='formatted',action='read')
    206        open(unit=196,file='NewSmallGrid_v_x_cm_s_grid.dat',status='old',form='formatted',action='read')
    207        open(unit=197,file='NewSmallGrid_v_y_cm_s_grid.dat',status='old',form='formatted',action='read')
    208        open(unit=198,file='NewSmallGrid_v_z_cm_s_grid.dat',status='old',form='formatted',action='read')
     196       open(unit=195,file='density_grid3.dat',status='old',form='formatted',action='read')
     197       open(unit=196,file='v_x_grid3.dat',status='old',form='formatted',action='read')
     198       open(unit=197,file='v_y_grid3.dat',status='old',form='formatted',action='read')
     199       open(unit=198,file='v_z_grid3.dat',status='old',form='formatted',action='read')
    209200       open(unit=199,file='NewSmallGrid_u_erg_g_grid.dat',status='old',form='formatted',action='read')
    210201       ibox=ibox_7
    211     select case(info%level)
    212     case(0)
    213         do k=1,128
    214            do j=1,128
    215               read(195,*),a(1,:)
    216               read(196,*),a(2,:)
    217               read(197,*),a(3,:)
    218               read(198,*),a(4,:)
    219               read(199,*),a(5,:)
    220               if (j.ge.57.and.j.le.72) then
    221                   do i=1,16
    222                       Info%q(i,j-56,k,1)=a(1,56+i)/rscale
    223                       Info%q(i,j-56,k,2)=a(1,56+i)*a(2,56+i)/rscale/velscale
    224                       Info%q(i,j-56,k,3)=a(1,56+i)*a(3,56+i)/rscale/velscale
    225                       Info%q(i,j-56,k,4)=a(1,56+i)*a(4,56+i)/rscale/velscale
    226                       Info%q(i,j-56,k,5)=a(1,56+i)*(a(5,56+i)+0.5*(a(2,56+i)&
    227                       *a(2,56+i)+a(3,56+i)*a(3,56+i)+a(4,56+i)*a(4,56+i)))/pscale
    228                   end do
    229               end if
    230            end do
    231         end do
    232     case(4)
    233         do k=1,128
    234            do j=1,128
    235               read(195,*),a(1,:)
    236               read(196,*),a(2,:)
    237               read(197,*),a(3,:)
    238               read(198,*),a(4,:)
    239               read(199,*),a(5,:)
    240               Info%q(1:128,j,k,1)=a(1,:)/rscale
    241               Info%q(1:128,j,k,2)=a(1,1:128)*a(2,1:128)/rscale/velscale
    242               Info%q(1:128,j,k,3)=a(1,1:128)*a(3,1:128)/rscale/velscale
    243               Info%q(1:128,j,k,4)=a(1,1:128)*a(4,1:128)/rscale/velscale
    244               Info%q(1:128,j,k,5)=a(1,1:128)*(a(5,1:128)+0.5*(a(2,1:128)*a(2,1:128)+a(3,1:128)*a(3,1:128)+a(4,1:128)*a(4,1:128)))/pscale
    245            end do
    246         end do
    247     case(7)
    248         do k=1,192
    249            do j=1,192
    250               read(195,*),b(1,:)
    251               read(196,*),b(2,:)
    252               read(197,*),b(3,:)
    253               read(198,*),b(4,:)
    254               read(199,*),b(5,:)
    255               Info%q(1:192,j,k,1)=b(1,:)/rscale
    256               Info%q(1:192,j,k,2)=b(1,1:192)*b(2,1:192)/rscale/velscale
    257               Info%q(1:192,j,k,3)=b(1,1:192)*b(3,1:192)/rscale/velscale
    258               Info%q(1:192,j,k,4)=b(1,1:192)*b(4,1:192)/rscale/velscale
    259               Info%q(1:192,j,k,5)=b(1,1:192)*(b(5,1:192)+0.5*(b(2,1:192)*b(2,1:192)+b(3,1:192)*b(3,1:192)+b(4,1:192)*b(4,1:192)))/pscale
    260            end do
    261         end do
     202    END SELECT
     203
     204   do i=1,19  !< Reads the first 19 lines from each file - presumably containing meta data
     205       read(195,*)
     206       read(196,*)
     207       read(197,*)
     208       read(198,*)
     209       read(199,*)
     210    end do
     211
     212
     213    ! Allocate space to store local box
     214    allocate(a(ibox(1,1):ibox(1,2), ibox(2,1):ibox(2,2), ibox(3,1):ibox(3,2), 5))
     215
     216    ! Read in data
     217    read(195,*),a(:,:,:,1) !< must be density in g
     218    read(196,*),a(:,:,:,2) !< x-velocity in cm/s
     219    read(197,*),a(:,:,:,3) !< y-velocity in cm/s
     220    read(198,*),a(:,:,:,4) !< z-velocity in cm/s
     221    read(199,*),a(:,:,:,5) !< internal energy in erg/g
     222    close(195)
     223    close(196)
     224    close(197)
     225    close(198)
     226    close(199)
     227
     228    a(:,:,:,5)=a(:,:,:,5)*a(:,:,:,1)*efact / pscale !< rescale internal energy for simulation gamma
     229    a(:,:,:,1)=a(:,:,:,1)/rscale
     230    a(:,:,:,2:4)=a(:,:,:,2:4)/velscale * spread(a(:,:,:,1),4,3)
     231    a(:,:,:,5)=a(:,:,:,5)+.5*sum(a(:,:,:,2:4)**2,4)/a(:,:,:,1)
     232
     233    ! Calculate overlap
     234    mb(:,2)=min(ibox(:,2), info%mglobal(:,2))
     235    mb(:,1)=max(ibox(:,1), info%mglobal(:,1))
     236    mc=mb-spread(info%mglobal(:,1),2,2)+1
     237
     238    ! Update Info%q
     239    Info%q(mc(1,1):mc(1,2), mc(2,1):mc(2,2), mc(3,1):mc(3,2),1:5)=a(mb(1,1):mb(1,2), mb(2,1):mb(2,2), mb(3,1):mb(3,2), :)
     240    deallocate(a)
    262241
    263242}}}