Ignore:
Timestamp:
07/30/10 13:16:33 (22 months ago)
Author:
tabel
Message:

Added radial and tangential velocity as well as cylindrical radius for the particles as a derived field.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/TOOLS/render_particle_data.pro

    r17 r30  
    7777@common_blocks.inc 
    7878if N_elements(tcenter) le 1 then tcenter = center 
    79   Nderived = 7 
     79  Nderived = 20 
     80  id = 0L 
    8081  dfields = PTRARR(Nderived)  
    81   dfields[0] = PTR_NEW(["abs(part. velocity)", "particle_velocity_x", "particle_velocity_y","particle_velocity_z"]) 
    82   dfields[1] = PTR_NEW(["particle radius", "particle_position_x", "particle_position_y", "particle_position_z"]) 
    83   dfields[2] = PTR_NEW(["particle age", "creation_time"]) 
    84   dfields[3] = PTR_NEW(["enclosed mass in particles","particle_position_x", "particle_position_y", "particle_position_z", "particle massdensity"]) 
    85   dfields[4] = PTR_NEW(["particle voronoi density","particle_position_x", "particle_position_y", "particle_position_z", "particle massdensity"]) 
    86   dfields[5] = PTR_NEW(["particle voronoi radius","particle_position_x", "particle_position_y", "particle_position_z"]) 
    87   dfields[6] = PTR_NEW(["particle voronoi volume","particle_position_x", "particle_position_y", "particle_position_z"]) 
     82  dfields[id++] = PTR_NEW(["abs(part. velocity)", "particle_velocity_x", "particle_velocity_y","particle_velocity_z"]) 
     83  dfields[id++] = PTR_NEW(["particle radial velocity","particle_position_x", "particle_position_y", "particle_position_z", "particle_velocity_x", "particle_velocity_y","particle_velocity_z"]) 
     84  dfields[id++] = PTR_NEW(["particle tangential velocity", "particle_position_x", "particle_position_y", "particle_position_z", "particle_velocity_x", "particle_velocity_y","particle_velocity_z"]) 
     85  dfields[id++] = PTR_NEW(["particle radius", "particle_position_x", "particle_position_y", "particle_position_z"]) 
     86  dfields[id++] = PTR_NEW(["particle cyl. radius", "particle_position_x", "particle_position_y", "particle_position_z"]) 
     87  dfields[id++] = PTR_NEW(["particle age", "creation_time"]) 
     88  dfields[id++] = PTR_NEW(["enclosed mass in particles","particle_position_x", "particle_position_y", "particle_position_z", "particle massdensity"]) 
     89  dfields[id++] = PTR_NEW(["particle voronoi density","particle_position_x", "particle_position_y", "particle_position_z", "particle massdensity"]) 
     90  dfields[id++] = PTR_NEW(["particle voronoi radius","particle_position_x", "particle_position_y", "particle_position_z"]) 
     91  dfields[id++] = PTR_NEW(["particle voronoi volume","particle_position_x", "particle_position_y", "particle_position_z"]) 
    8892; the voronoi calculations are done in read_particle after all 
    8993; particles have been read. 
     94  dfields = dfields[0:id-1] 
    9095 
    9196  if N_elements(stride) eq 1 then stride = LONARR(N_elements(usegi))+stride 
     
    9499     Nvar = N_ELEMENTS(VariableNames) 
    95100     data_format = determine_data_format_from_file_name(usegi[0].baryon_file) 
    96      if data_format lt 0 then return,0 
     101     if data_format lt 0 then return, 0 
    97102; determine all data fields to read and read data 
    98103     field_names = identify_unique_field_names(VariableNames, dfields) 
     
    106111        pack_particles, a 
    107112      
     113     ax = double(slice_ori eq 0.) 
    108114     print, field_names 
    109115     for i=0, Nvar-1 do begin   ; if derived field was requested compute it here 
     
    115121                       -1: junk = '' 
    116122                       0: a[j].data[i] = ptr_new(sqrt(fn(a[j], "particle_velocity_x")^2+ $ 
    117                                                fn(a[j], "particle_velocity_y")^2+ $ 
    118                                                fn(a[j], "particle_velocity_z")^2)) 
    119                        1: a[j].data[i] = ptr_new(sqrt((tcenter[0]-fn(a[j], "particle_position_x"))^2 + $ 
    120                                                (tcenter[1]-fn(a[j], "particle_position_y"))^2 + $ 
    121                                                (tcenter[2]-fn(a[j], "particle_position_z"))^2)) 
    122                        2:  a[j].data[i] = ptr_new(times[time_index] - fn(a[j], "creation_time")) 
    123                        3: a[j].data[i] = $  ; allocate array 
     123                                                      fn(a[j], "particle_velocity_y")^2+ $ 
     124                                                      fn(a[j], "particle_velocity_z")^2)) 
     125                       1: a[j].data[i] = ptr_new(radial_velocity(tcenter, $ 
     126                           fn(a[j], "particle_position_x"),fn(a[j], "particle_position_y"),fn(a[j], "particle_position_z"), $ 
     127                           fn(a[j], "particle_velocity_x"),fn(a[j], "particle_velocity_y"),fn(a[j], "particle_velocity_z"),/cons_vel)) 
     128 
     129                       2: a[j].data[i] = ptr_new(tangential_velocity(tcenter, $ 
     130                           fn(a[j], "particle_position_x"),fn(a[j], "particle_position_y"),fn(a[j], "particle_position_z"), $ 
     131                           fn(a[j], "particle_velocity_x"),fn(a[j], "particle_velocity_y"),fn(a[j], "particle_velocity_z"))) 
     132 
     133                       3: a[j].data[i] = ptr_new(sqrt((tcenter[0]-fn(a[j], "particle_position_x"))^2 + $ 
     134                                                      (tcenter[1]-fn(a[j], "particle_position_y"))^2 + $ 
     135                                                      (tcenter[2]-fn(a[j], "particle_position_z"))^2)) 
     136 
     137                       4: a[j].data[i] = ptr_new(sqrt(ax[0]*(tcenter[0]-fn(a[j], "particle_position_x"))^2 + $ 
     138                                                      ax[1]*(tcenter[1]-fn(a[j], "particle_position_y"))^2 + $ 
     139                                                      ax[2]*(tcenter[2]-fn(a[j], "particle_position_z"))^2)) 
     140 
     141                       5: a[j].data[i] = ptr_new(times[time_index] - fn(a[j], "creation_time")) 
     142                       6: a[j].data[i] = $  ; allocate array 
    124143                          ptr_new(fn(a[j], "particle massdensity")) ;  
    125                        4: a[j].data[i] = $ 
     144                       7: a[j].data[i] = $ 
    126145                          ptr_new(fn(a[j], "particle_position_x")) ; voronoi calculations done in read_particle_data 
    127                        5: a[j].data[i] = $ 
     146                       8: a[j].data[i] = $ 
    128147                          ptr_new(fn(a[j], "particle_position_x")) ; voronoi calculations done in read_particle_data 
    129                        6: a[j].data[i] = $ 
     148                       9: a[j].data[i] = $ 
    130149                          ptr_new(fn(a[j], "particle_position_x")) ; voronoi calculations done in read_particle_data 
    131150                   endcase 
    132                    print, max(*a[j].data[i]) 
    133                    a[j].data_fields[i] = (*dfields[match])[0] 
     151;                   print, max(*a[j].data[i]) 
     152;                   a[j].data_fields[i] = (*dfields[match])[0] 
    134153               endif 
    135154           endfor               ; loop over grids 
     
    280299if npoints lt 10 then print, devicePart1, devicePart2 
    281300 
    282 pointimage = hist2d(devicePart1, devicePart2, $ 
    283                       min1=1.,min2=1.,max1=xy_sl_size,max2=xy_sl_size, $ 
    284                     binsize1=parti.size,binsize2=parti.size, density=rho) 
     301;pointimage = hist2d(devicePart1, devicePart2, $ 
     302;                      min1=1.,min2=1.,max1=xy_sl_size,max2=xy_sl_size, $ 
     303;                    binsize1=parti.size,binsize2=parti.size, density=rho) 
    285304;pointimage = rho 
    286305 
     
    288307                min1=1.,min2=1.,max1=xy_sl_size,max2=xy_sl_size, density=rho) ;/pointimage 
    289308 
    290 ind  = where(rho ge 0, count) 
     309print, size(himage) 
     310ind  = where(rho gt 0, count) 
    291311if not shouldbe_histogram(names[parti.index]) then begin 
    292312   if count gt 0 then himage[ind] /= float(rho[ind]) 
     
    294314endif 
    295315 
    296 if parti.index le 2 then himage = pointimage 
    297 ;breaki 
    298 ;if parti.size ge 2 then pimage = congrid(pimage, xy_sl_size, 
    299 ;xy_sl_size, /center, cubic=(interpolate_i < 1), /minus_one) 
    300  
    301 ;print, 'minimum values in hist2d used:', om1, om2 
    302 ;breaki 
    303  
    304316secmin = min(himage) 
    305317ind  = where(himage gt secmin, count) 
    306  
    307 print, secmin 
    308  
    309 if ind[0] ge 0 then secmin = min(himage[ind]) 
    310 print, secmin 
    311  
    312  
    313 if shouldbe_logged(names[parti.index]) then begin 
    314    oind = where(himage le 0. ) 
    315    himage = himage > 0.5*secmin 
    316    himage = alog10(himage ) 
    317 endif 
    318  
    319  
    320 print, min(himage) 
    321  
    322 s = (size(himage))[1:2] 
    323 dix = s[0] 
    324 diy = s[1] 
     318;print, secmin 
     319 
     320 
     321if shouldbe_logged(names[parti.index]) or parti.index le 2 then begin 
     322;   himage = himage > 0.5*secmin 
     323   himage = alog10(himage > secmin) 
     324endif 
     325 
     326s = size(himage) 
     327dix = s[1] 
     328diy = s[2] 
    325329locs = lindgen(dix*diy) 
    326330nind = ARRAY_INDICES([dix,diy], locs, /DIMENSIONS) 
     
    332336  z_stuetz = himage[*] 
    333337  n_stuetz = N_elements(z_stuetz) 
    334  
    335   if parti.size lt 4 then $ 
    336      pimage = (rebin(himage, dix*parti.size,diy*parti.size,  sample=1-(interpolate_i < 1)))[0:xy_sl_size-1, 0:xy_sl_size-1] $ 
    337   else  pimage = render_image() 
     338if N_elements(z_stuetz) ne dix*diy then breaki 
     339;  if parti.size lt 4 then $ 
     340;     pimage = (rebin(himage, dix*parti.size,diy*parti.size,  sample=1-(interpolate_i < 1)))[0:xy_sl_size-1, 0:xy_sl_size-1] $ 
     341;  else   
     342  pimage = render_image() 
    338343 
    339344return, pimage 
Note: See TracChangeset for help on using the changeset viewer.