SyFi 0.3
|
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) |
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
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] |
Definition at line 203 of file fem_sympy.py.
Referenced by compute_nlconvdiff_element_matrix(), and compute_poisson_element_matrix().
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.
tuple fem_sympy::t = ReferenceSimplex(2) |
Definition at line 172 of file fem_sympy.py.
int fem_sympy::u = 0 |
Definition at line 192 of file fem_sympy.py.
tuple fem_sympy::ui = Symbol("u_%d" % i) |
Definition at line 196 of file fem_sympy.py.
list fem_sympy::uj = us[j] |
Definition at line 205 of file fem_sympy.py.
Referenced by compute_nlconvdiff_element_matrix(), and compute_poisson_element_matrix().
list fem_sympy::us = [] |
Definition at line 194 of file fem_sympy.py.