fem_sympy_core Namespace Reference


Classes

class  ReferenceSimplex
class  Lagrange

Functions

def bernstein_space
def create_point_set
def create_matrix

Variables

tuple x = Symbol('x')
tuple y = Symbol('y')
tuple z = Symbol('z')
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_core::bernstein_space (   order,
  nsd 
)

Definition at line 39 of file fem_sympy_core.py.

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

def fem_sympy_core::create_matrix (   equations,
  coeffs 
)

Definition at line 117 of file fem_sympy_core.py.

00117                                     : 
00118     A = Matrix(len(equations), len(equations))
00119     i = 0;  j = 0 
00120     for j in range(0, len(coeffs)):  
00121         c = coeffs[j]
00122         for i in range(0, len(equations)):  
00123             e = equations[i]
00124             d = diff(e, c)
00125             A[i,j] = d 
00126     return A 
00127 
00128 
00129 

def fem_sympy_core::create_point_set (   order,
  nsd 
)

Definition at line 85 of file fem_sympy_core.py.

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


Variable Documentation

Definition at line 177 of file fem_sympy_core.py.

Definition at line 188 of file fem_sympy_core.py.

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

Definition at line 206 of file fem_sympy_core.py.

Definition at line 209 of file fem_sympy_core.py.

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

Definition at line 204 of file fem_sympy_core.py.

Definition at line 176 of file fem_sympy_core.py.

Definition at line 195 of file fem_sympy_core.py.

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

Definition at line 199 of file fem_sympy_core.py.

Definition at line 208 of file fem_sympy_core.py.

list fem_sympy_core::us = []

Definition at line 197 of file fem_sympy_core.py.

tuple fem_sympy_core::x = Symbol('x')

tuple fem_sympy_core::y = Symbol('y')

tuple fem_sympy_core::z = Symbol('z')


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