[Numpy-discussion] Can this function by Numpy-ized?
Rob
europax at home.com
Sun Aug 26 18:18:46 EDT 2001
The good news is that your routine reduces execution time by 30%. The
bad news is that the wrong numbers are coming out of it. I'm trying
some otner permutations of "take" and "add.reduce" in the function to
see if I can get it. One method that worked was splitting up "c" into
c1,c2,c3, such that:
c1=Numeric.take(a.NodeCord[:,0],TrngleNode)
etc
and then using Numeric.add.reduce(s*c1,1)
etc
This gives the right results, but is slower than plain Python. I'll
keep at it. Thanks again.
"Paul F. Dubois" wrote:
>
> def cgqp(QuadPoint, TrngleNode, a):
> s = a.Qpnt[Quadpoint,:]
> c = Numeric.take(a.NodeCord, TrngleNode)
> return Numeric.add.reduce(s * c, axis=1)
>
> This may or may not be right. The data structures I would have to set up
> to test it are too much for Sunday morning.
>
> -----Original Message-----
> From: numpy-discussion-admin at lists.sourceforge.net
> [mailto:numpy-discussion-admin at lists.sourceforge.net] On Behalf Of Rob
> Sent: Sunday, August 26, 2001 8:39 AM
> To: numpy-discussion at lists.sourceforge.net.
> Subject: [Numpy-discussion] Can this function by Numpy-ized?
>
> I finally got my FEM EM code working. I profiled it and this function
> uses up a big hunk of time. It performs gaussian integration over a
> triangle. I am trying to figure out how to slice the arrays so as to
> push it down into the C level. Does anyone have any ideas? Thanks,
> Rob.
>
> ps. it looks to be intractible to me. Maybe I need to look at writing a
> C extension. I've never done that before.
>
> ##**********************************************************************
> *****
> ##Prototype: void ComputeGaussQuadPoint(int QuadPoint, int
> *a.TrngleNode,
> ## double *SrcPointCol)
> ##Description: To compute the coordinates of 7-point Gauss nodes of
> ## a triangular patch.
> ##Input value:
> ## int QuadPoint --- node index, it can be from 0 to 6.
> ## int *a.TrngleNode --- the three nodes of a tringular patch.
> ## double *SrcPointCol --- where to store the results
> ##Return value: none
> ##Global value used: a.NodeCord, a.Qpnt
> ##Global value modified: none
> ##Subroutines called: none
> ##Note: Not very sure.
> ************************************************************************
> ****
> def ComputeGaussQuadPoint(QuadPoint,TrngleNode,a):
>
> SrcPointCol=zeros((3),Float)
>
> SrcPointCol[0] = a.Qpnt[QuadPoint,0]*a.NodeCord[TrngleNode[0],0]\
> + a.Qpnt[QuadPoint,1]*a.NodeCord[TrngleNode[1],0]\
> + a.Qpnt[QuadPoint,2]*a.NodeCord[TrngleNode[2],0]
>
> SrcPointCol[1] = a.Qpnt[QuadPoint,0]*a.NodeCord[TrngleNode[0],1]\
> + a.Qpnt[QuadPoint,1]*a.NodeCord[TrngleNode[1],1]\
> + a.Qpnt[QuadPoint,2]*a.NodeCord[TrngleNode[2],1]
>
> SrcPointCol[2] = a.Qpnt[QuadPoint,0]*a.NodeCord[TrngleNode[0],2]\
> + a.Qpnt[QuadPoint,1]*a.NodeCord[TrngleNode[1],2]\
> + a.Qpnt[QuadPoint,2]*a.NodeCord[TrngleNode[2],2]
>
>
> return SrcPointCol
>
>
> --
> The Numeric Python EM Project
>
> www.members.home.net/europax
>
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at lists.sourceforge.net
> http://lists.sourceforge.net/lists/listinfo/numpy-discussion
--
The Numeric Python EM Project
www.members.home.net/europax
More information about the NumPy-Discussion
mailing list