fem_sympy Namespace Reference


Classes

class  ReferenceSimplex
class  Lagrange

Functions

def bernstein_space
def create_point_set
def create_matrix

Variables

tuple t = ReferenceSimplex(2)
 f = x+y
tuple fe = Lagrange(2,2)
int u = 0
list us = []
tuple ui = Symbol("u_%d" % i)
tuple J = zeronm(fe.nbf(), fe.nbf())
list Fi = u*fe.N[i]
list uj = us[j]
tuple integrands = diff(Fi, uj)

Function Documentation

def fem_sympy::bernstein_space (   order,
  nsd 
)

Definition at line 34 of file fem_sympy.py.

00034                                : 
00035     if nsd > 3: 
00036         raise RuntimeError("Bernstein only implemented in 1D, 2D, and 3D")
00037     sum = 0 
00038     basis = []
00039     coeff = []
00040 
00041     if nsd == 1: 
00042         b1, b2 = x, 1-x 
00043         for o1 in range(0,order+1): 
00044             for o2 in range(0,order+1): 
00045                 if o1 + o2  == order: 
00046                     aij = Symbol("a_%d_%d" % (o1,o2)) 
00047                     sum += aij*binomial(order,o1)*pow(b1, o1)*pow(b2, o2)
00048                     basis.append(binomial(order,o1)*pow(b1, o1)*pow(b2, o2))
00049                     coeff.append(aij)
00050 
00051 
00052     if nsd == 2: 
00053         b1, b2, b3 = x, y, 1-x-y 
00054         for o1 in range(0,order+1): 
00055             for o2 in range(0,order+1): 
00056                 for o3 in range(0,order+1): 
00057                     if o1 + o2 + o3 == order: 
00058                         aij = Symbol("a_%d_%d_%d" % (o1,o2,o3)) 
00059                         fac = factorial(order)/(factorial(o1)*factorial(o2)*factorial(o3))
00060                         sum += aij*fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3)
00061                         basis.append(fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3))
00062                         coeff.append(aij)
00063 
00064     if nsd == 3: 
00065         b1, b2, b3, b4 = x, y, z, 1-x-y-z 
00066         for o1 in range(0,order+1): 
00067             for o2 in range(0,order+1): 
00068                 for o3 in range(0,order+1): 
00069                     for o4 in range(0,order+1): 
00070                         if o1 + o2 + o3 + o4 == order: 
00071                             aij = Symbol("a_%d_%d_%d_%d" % (o1,o2,o3,o4)) 
00072                             fac = factorial(order)/(factorial(o1)*factorial(o2)*factorial(o3)*factorial(o4))
00073                             sum += aij*fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3)*pow(b4, o4)
00074                             basis.append(fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3)*pow(b4, o4))
00075                             coeff.append(aij)
00076 
00077 
00078     return sum, coeff, basis 
00079 

def fem_sympy::create_matrix (   equations,
  coeffs 
)

Definition at line 112 of file fem_sympy.py.

00112                                     : 
00113     A = zeronm(len(equations), len(equations))
00114     i = 0;  j = 0 
00115     for j in range(0, len(coeffs)):  
00116         c = coeffs[j]
00117         for i in range(0, len(equations)):  
00118             e = equations[i]
00119             d, r = div(e, c)
00120             A[i,j] = d 
00121     return A 
00122 
00123 
00124 

def fem_sympy::create_point_set (   order,
  nsd 
)

Definition at line 80 of file fem_sympy.py.

00080                                 : 
00081     h = Rational(1,order)
00082     set = []
00083 
00084     if nsd == 1: 
00085         for i in range(0, order+1):
00086             x = i*h 
00087             if x <= 1: 
00088                 set.append((x,y))
00089 
00090     if nsd == 2: 
00091         for i in range(0, order+1):
00092             x = i*h 
00093             for j in range(0, order+1):
00094                 y = j*h 
00095                 if x + y <= 1: 
00096                     set.append((x,y))
00097 
00098     if nsd == 3: 
00099         for i in range(0, order+1):
00100             x = i*h 
00101             for j in range(0, order+1):
00102                 y = j*h 
00103                 for k in range(0, order+1):
00104                     z = j*h 
00105                     if x + y + z  <= 1: 
00106                         set.append((x,y,z))
00107 
00108     return set
00109 
00110 
00111 


Variable Documentation

fem_sympy::f = x+y

Definition at line 174 of file fem_sympy.py.

tuple fem_sympy::fe = Lagrange(2,2)

Definition at line 185 of file fem_sympy.py.

list fem_sympy::Fi = u*fe.N[i]

tuple fem_sympy::integrands = diff(Fi, uj)

Definition at line 206 of file fem_sympy.py.

tuple fem_sympy::J = zeronm(fe.nbf(), fe.nbf())

Definition at line 201 of file fem_sympy.py.

Definition at line 172 of file fem_sympy.py.

int fem_sympy::u = 0

tuple fem_sympy::ui = Symbol("u_%d" % i)

Definition at line 196 of file fem_sympy.py.

list fem_sympy::uj = us[j]

list fem_sympy::us = []

Definition at line 194 of file fem_sympy.py.


Generated on Mon Aug 31 16:17:05 2009 for SyFi by  doxygen 1.5.9