[Numpy-discussion] Can this function by Numpy-ized?

Paul F. Dubois paul at pfdubois.com
Sun Aug 26 13:32:28 EDT 2001

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, 

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
##                                            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[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


Numpy-discussion mailing list
Numpy-discussion at lists.sourceforge.net

More information about the NumPy-Discussion mailing list