[Yt-svn] yt: 5 new changesets
hg at spacepope.org
hg at spacepope.org
Sat Jun 5 13:22:17 PDT 2010
hg Repository: yt
details: yt/rev/1cfdc7cd42a4
changeset: 1729:1cfdc7cd42a4
user: Stephen Skory <stephenskory at yahoo.com>
date:
Thu Jun 03 11:43:20 2010 -0700
description:
Changing the name of the structure function generator to TwoPointFunctions.py.
hg Repository: yt
details: yt/rev/61a893a641ba
changeset: 1730:61a893a641ba
user: Stephen Skory <stephenskory at yahoo.com>
date:
Thu Jun 03 12:03:55 2010 -0700
description:
adding s to the end of the class name
hg Repository: yt
details: yt/rev/e3f4176d141e
changeset: 1731:e3f4176d141e
user: Stephen Skory <stephenskory at yahoo.com>
date:
Fri Jun 04 12:48:07 2010 -0700
description:
Committing recent kDtree changes before I make more.
hg Repository: yt
details: yt/rev/918541af4d30
changeset: 1732:918541af4d30
user: Stephen Skory <stephenskory at yahoo.com>
date:
Sat Jun 05 13:19:20 2010 -0700
description:
Adding various changes to enable two-point correlation functions.
hg Repository: yt
details: yt/rev/250e3ad1a5fa
changeset: 1733:250e3ad1a5fa
user: Stephen Skory <stephenskory at yahoo.com>
date:
Sat Jun 05 13:22:08 2010 -0700
description:
Merging.
diffstat:
yt/extensions/MergerTree.py | 9 +-
yt/extensions/kdtree/fKD.f90 | 173 ++++-
yt/extensions/kdtree/fKD.v | 42 +-
yt/extensions/kdtree/fKD_source.f90 | 10 +-
yt/extensions/opengl_widgets/calculateRay.vertex.glsl | 63 +
yt/extensions/opengl_widgets/colormap.fragment.glsl | 12 +
yt/extensions/opengl_widgets/framebuffer.vertex.glsl | 12 +
yt/extensions/opengl_widgets/mip.fragment.glsl | 135 +++
yt/extensions/opengl_widgets/mip_viewer.py | 450 +++++++++++++
yt/extensions/opengl_widgets/rendering_contexts.py | 88 ++
yt/lagos/OutputTypes.py | 19 +-
yt/lagos/StructureFunctionGenerator.py | 750 ----------------------
yt/lagos/TwoPointFunctions.py | 796 +++++++++++++++++++++++
yt/lagos/__init__.py | 2 +-
yt/lagos/parallelHOP/parallelHOP.py | 9 +-
yt/mods.py | 2 +-
16 files changed, 1795 insertions(+), 777 deletions(-)
diffs (truncated from 2821 to 300 lines):
diff -r 5f2eeda09fa5 -r 250e3ad1a5fa yt/extensions/MergerTree.py
--- a/yt/extensions/MergerTree.py Thu Jun 03 11:06:11 2010 -0700
+++ b/yt/extensions/MergerTree.py Sat Jun 05 13:22:08 2010 -0700
@@ -24,10 +24,13 @@
"""
import yt.lagos as lagos
-from yt.extensions.kdtree import *
from yt.lagos.HaloFinding import HaloFinder
from yt.logger import lagosLogger as mylog
import yt.extensions.HaloProfiler as HP
+try:
+ from yt.extensions.kdtree import *
+except ImportError:
+ mylog.debug("The Fortran kD-Tree did not import correctly.")
import numpy as na
import os, glob, md5, time, gc, sys
@@ -303,7 +306,7 @@
fKD.nn = 5
fKD.sort = True
fKD.rearrange = True
- create_tree()
+ create_tree(0)
# Find the parent points from the database.
parent_pf = lagos.EnzoStaticOutput(parentfile)
@@ -330,7 +333,7 @@
candidates[row[0]] = nIDs
del fKD.pos, fKD.tags, fKD.dist
- free_tree() # Frees the kdtree object.
+ free_tree(0) # Frees the kdtree object.
self.candidates = candidates
diff -r 5f2eeda09fa5 -r 250e3ad1a5fa yt/extensions/kdtree/fKD.f90
--- a/yt/extensions/kdtree/fKD.f90 Thu Jun 03 11:06:11 2010 -0700
+++ b/yt/extensions/kdtree/fKD.f90 Sat Jun 05 13:22:08 2010 -0700
@@ -1,21 +1,59 @@
-subroutine create_tree()
+subroutine create_tree(treeID)
use kdtree2_module
use fKD_module
+ use tree_setmodule
use kdtree2module
use tree_nodemodule
use intervalmodule
+ integer, intent (in), optional :: treeID
+
+ integer :: ID
+
+ if (present(treeID)) then
+ ID = treeID
+ else
+ ID = -1
+ end if
+
! create a kd tree object
+
+ if (ID == 1) then
+ t1%tree2 => kdtree2_create(t1%pos,sort=t1%sort,rearrange=t1%rearrange)
+ elseif (ID == 2) then
+ t2%tree2 => kdtree2_create(t2%pos,sort=t2%sort,rearrange=t2%rearrange)
+ else
+ tree2 => kdtree2_create(pos,sort=sort,rearrange=rearrange)
+ end if
- tree2 => kdtree2_create(pos,sort=sort,rearrange=rearrange) ! this is how you create a tree.
- return
+ return
end subroutine create_tree
+subroutine add_tree(treeID)
+ use kdtree2_module
+ use fKD_module
+ use tree_setmodule
+ use kdtree2module
+ use tree_nodemodule
+ use intervalmodule
+
+ integer :: treeID
+
+ if (treeID == 1) then
+ t1 => Newtree_set()
+ elseif (treeID == 2) then
+ t2 => Newtree_set()
+ end if
+
+ return
+
+end subroutine add_tree
subroutine find_nn_nearest_neighbors()
use kdtree2_module
use fKD_module
+ use tree_setmodule
use kdtree2module
use tree_nodemodule
use intervalmodule
@@ -24,7 +62,6 @@
type(kdtree2_result),allocatable :: results(:) ! nearest neighbors
!integer, parameter :: nn ! number of nearest neighbors found
-
allocate(results(nn))
call kdtree2_n_nearest(tp=tree2,qv=qv,nn=nn,results=results)
@@ -48,13 +85,14 @@
! nearest neighbors.
use kdtree2_module
use fKD_module
+ use tree_setmodule
use kdtree2module
use tree_nodemodule
use intervalmodule
integer :: k, number
type(kdtree2_result),allocatable :: results(:)
-
+
allocate(results(nn))
number = size(qv_many,2)
@@ -70,17 +108,117 @@
end subroutine find_many_nn_nearest_neighbors
+subroutine find_r_nearest()
+ ! Given an input array of a point (qv), find the number, fortran indices and
+ ! squared distances to all neighbors within (radius) of (qv).
+ ! The number of neighbors with indices and radius returned is set by
+ ! (radius_n), and if this is smaller than (nfound) when returned,
+ ! there are neighbors missing from the results.
+ ! Store the results in (dist) and (tags).
+ use kdtree2_module
+ use fKD_module
+ use tree_setmodule
+ use kdtree2module
+ use tree_nodemodule
+ use intervalmodule
+
+ integer :: k
+ type(kdtree2_result),allocatable :: results(:) ! nearest neighbors
+
+ allocate(results(radius_n))
+ nfound = 0
+
+ ! do it.
+ call kdtree2_r_nearest(tp=tree2,qv=qv,r2=radius,nfound=nfound,nalloc=radius_n,results=results)
+
+ tags(:) = results%idx
+ dist(:) = results%dis
+
+ deallocate(results)
+ return
+
+end subroutine find_r_nearest
+
+subroutine find_many_r_nearest(treeID)
+ ! Given an input array of a points (qv_many), find the number, fortran indices and
+ ! squared distances to all neighbors within (radius) of (qv).
+ ! The number of neighbors with indices and radius returned is set by
+ ! (radius_n), and if this is smaller than (nfound) when returned,
+ ! there are neighbors missing from the results.
+ ! Store the results in (dist) and (tags).
+ use kdtree2_module
+ use fKD_module
+ use tree_setmodule
+ use kdtree2module
+ use tree_nodemodule
+ use intervalmodule
+
+ integer, intent (in), optional :: treeID
+
+ integer :: ID
+ integer :: k, number
+ type(kdtree2_result),allocatable :: results(:) ! nearest neighbors
+
+
+ if (present(treeID)) then
+ ID = treeID
+ else
+ ID = -1
+ end if
+
+ if (ID==1) then
+ allocate(results(t1%radius_n))
+ number = size(t1%qv_many,2)
+ do k=1, number
+ t1%qv(:) = t1%qv_many(:,k)
+ t1%nfound = t1%nfound_many(k)
+ call kdtree2_r_nearest(tp=t1%tree2,qv=t1%qv,r2=t1%radius,nfound=t1%nfound,nalloc=t1%radius_n,results=results)
+ t1%nfound_many(k) = t1%nfound
+ t1%nn_tags(:, k) = results%idx
+ t1%nn_dist(:, k) = results%dis
+ end do
+ elseif (ID==2) then
+ allocate(results(t2%radius_n))
+ number = size(t2%qv_many,2)
+ do k=1, number
+ t2%qv(:) = t2%qv_many(:,k)
+ t2%nfound = t2%nfound_many(k)
+ call kdtree2_r_nearest(tp=t2%tree2,qv=t2%qv,r2=t2%radius,nfound=t2%nfound,nalloc=t2%radius_n,results=results)
+ t2%nfound_many(k) = t2%nfound
+ t2%nn_tags(:, k) = results%idx
+ t2%nn_dist(:, k) = results%dis
+ end do
+ else
+ allocate(results(radius_n))
+ number = size(qv_many,2)
+ do k=1, number
+ qv(:) = qv_many(:,k)
+ nfound = nfound_many(k)
+ call kdtree2_r_nearest(tp=tree2,qv=qv,r2=radius,nfound=nfound,nalloc=radius_n,results=results)
+ nfound_many(k) = nfound
+ nn_tags(:, k) = results%idx
+ nn_dist(:, k) = results%dis
+ end do
+ end if
+
+ deallocate(results)
+ return
+
+end subroutine find_many_r_nearest
+
subroutine find_all_nn_nearest_neighbors()
! for all particles in pos, find their nearest neighbors and return the
! indexes and distances as big arrays
use kdtree2_module
use fKD_module
+ use tree_setmodule
use kdtree2module
use tree_nodemodule
use intervalmodule
-
+
integer :: k
type(kdtree2_result),allocatable :: results(:) ! nearest neighbors
+
allocate(results(nn))
do k=1,nparts
@@ -99,6 +237,7 @@
! for a chunk of the full number of particles, find their nearest neighbors
use kdtree2_module
use fKD_module
+ use tree_setmodule
use kdtree2module
use tree_nodemodule
use intervalmodule
@@ -123,6 +262,7 @@
! their density. Return only nMerge nearest neighbors.
use kdtree2_module
use fKD_module
+ use tree_setmodule
use kdtree2module
use tree_nodemodule
use intervalmodule
@@ -172,16 +312,33 @@
end subroutine chainHOP_tags_dens
-subroutine free_tree()
+subroutine free_tree(treeID)
use kdtree2_module
use fKD_module
+ use tree_setmodule
use kdtree2module
use tree_nodemodule
use intervalmodule
+
+ integer, intent (in), optional :: treeID
+
+ integer :: ID
+
+ if (present(treeID)) then
+ ID = treeID
+ else
+ ID = -1
+ end if
! this releases memory for the tree BUT NOT THE ARRAY OF DATA YOU PASSED
! TO MAKE THE TREE.
- call kdtree2_destroy(tree2)
+ if (ID == 1) then
+ call kdtree2_destroy(t1%tree2)
+ elseif (ID == 2) then
+ call kdtree2_destroy(t2%tree2)
+ else
+ call kdtree2_destroy(tree2)
+ end if
! The data to make the tree has to be deleted in python BEFORE calling
! this!
diff -r 5f2eeda09fa5 -r 250e3ad1a5fa yt/extensions/kdtree/fKD.v
--- a/yt/extensions/kdtree/fKD.v Thu Jun 03 11:06:11 2010 -0700
+++ b/yt/extensions/kdtree/fKD.v Sat Jun 05 13:22:08 2010 -0700
More information about the yt-svn
mailing list