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 def bernstein_space(order, nsd): 00036 if nsd > 3: 00037 raise RuntimeError("Bernstein only implemented in 1D, 2D, and 3D") 00038 sum = 0 00039 basis = [] 00040 coeff = [] 00041 00042 if nsd == 1: 00043 b1, b2 = x, 1-x 00044 for o1 in range(0,order+1): 00045 for o2 in range(0,order+1): 00046 if o1 + o2 == order: 00047 aij = Symbol("a_%d_%d" % (o1,o2)) 00048 sum += aij*binomial(order,o1)*pow(b1, o1)*pow(b2, o2) 00049 basis.append(binomial(order,o1)*pow(b1, o1)*pow(b2, o2)) 00050 coeff.append(aij) 00051 00052 00053 if nsd == 2: 00054 b1, b2, b3 = x, y, 1-x-y 00055 for o1 in range(0,order+1): 00056 for o2 in range(0,order+1): 00057 for o3 in range(0,order+1): 00058 if o1 + o2 + o3 == order: 00059 aij = Symbol("a_%d_%d_%d" % (o1,o2,o3)) 00060 fac = factorial(order)/(factorial(o1)*factorial(o2)*factorial(o3)) 00061 sum += aij*fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3) 00062 basis.append(fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3)) 00063 coeff.append(aij) 00064 00065 if nsd == 3: 00066 b1, b2, b3, b4 = x, y, z, 1-x-y-z 00067 for o1 in range(0,order+1): 00068 for o2 in range(0,order+1): 00069 for o3 in range(0,order+1): 00070 for o4 in range(0,order+1): 00071 if o1 + o2 + o3 + o4 == order: 00072 aij = Symbol("a_%d_%d_%d_%d" % (o1,o2,o3,o4)) 00073 fac = factorial(order)/(factorial(o1)*factorial(o2)*factorial(o3)*factorial(o4)) 00074 sum += aij*fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3)*pow(b4, o4) 00075 basis.append(fac*pow(b1, o1)*pow(b2, o2)*pow(b3, o3)*pow(b4, o4)) 00076 coeff.append(aij) 00077 00078 00079 return sum, coeff, basis
def fem_sympy.create_matrix | ( | equations, | |
coeffs | |||
) |
Definition at line 112 of file fem_sympy.py.
References SyFi.div().
00112 00113 def create_matrix(equations, coeffs): 00114 A = zeronm(len(equations), len(equations)) 00115 i = 0; j = 0 00116 for j in range(0, len(coeffs)): 00117 c = coeffs[j] 00118 for i in range(0, len(equations)): 00119 e = equations[i] 00120 d, r = div(e, c) 00121 A[i,j] = d 00122 return A 00123 00124
def fem_sympy.create_point_set | ( | order, | |
nsd | |||
) |
Definition at line 80 of file fem_sympy.py.
00080 00081 def create_point_set(order, nsd): 00082 h = Rational(1,order) 00083 set = [] 00084 00085 if nsd == 1: 00086 for i in range(0, order+1): 00087 x = i*h 00088 if x <= 1: 00089 set.append((x,y)) 00090 00091 if nsd == 2: 00092 for i in range(0, order+1): 00093 x = i*h 00094 for j in range(0, order+1): 00095 y = j*h 00096 if x + y <= 1: 00097 set.append((x,y)) 00098 00099 if nsd == 3: 00100 for i in range(0, order+1): 00101 x = i*h 00102 for j in range(0, order+1): 00103 y = j*h 00104 for k in range(0, order+1): 00105 z = j*h 00106 if x + y + z <= 1: 00107 set.append((x,y,z)) 00108 00109 return set 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.