Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
weihuayi committed Jul 5, 2021
1 parent 4a7ddab commit 4a5aafc
Show file tree
Hide file tree
Showing 15 changed files with 122 additions and 118 deletions.
2 changes: 1 addition & 1 deletion fealpy/boundarycondition/BoundaryCondition.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def apply(self, A, F, uh=None, threshold=None):
F = F.T.flat
x = uh.T.flat # 把 uh 按列展平
F -= A@x
bdIdx = np.zeros(A.shape[0], dtype=np.int)
bdIdx = np.zeros(A.shape[0], dtype=np.int_)
bdIdx[isDDof] = 1
Tbd = spdiags(bdIdx, 0, A.shape[0], A.shape[0])
T = spdiags(1-bdIdx, 0, A.shape[0], A.shape[0])
Expand Down
4 changes: 2 additions & 2 deletions fealpy/functionspace/LagrangeFiniteElementSpace.py
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ def face_basis(self, bc):
TD = bc.shape[1] - 1
multiIndex = self.multi_index_matrix[TD](p)

c = np.arange(1, p+1, dtype=np.int)
c = np.arange(1, p+1, dtype=np.int_)
P = 1.0/np.multiply.accumulate(c)
t = np.arange(0, p)
shape = bc.shape[:-1]+(p+1, TD+1)
Expand Down Expand Up @@ -412,7 +412,7 @@ def basis(self, bc, index=np.s_[:], p=None):
TD = bc.shape[-1] - 1
multiIndex = self.multi_index_matrix[TD](p)

c = np.arange(1, p+1, dtype=np.int)
c = np.arange(1, p+1, dtype=np.int_)
P = 1.0/np.multiply.accumulate(c)
t = np.arange(0, p)
shape = bc.shape[:-1]+(p+1, TD+1)
Expand Down
2 changes: 1 addition & 1 deletion fealpy/functionspace/SimplexSetSpace.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from .femdof import multi_index_matrix2d

class SimplexSetSpace():
def __init__(self, TD, ftype=np.float, itype=np.int):
def __init__(self, TD, ftype=np.float64, itype=np.int_):
self.TD = TD
self.multi_index_matrix = multi_index_matrix2d
self.ftype = ftype
Expand Down
76 changes: 38 additions & 38 deletions fealpy/functionspace/femdof.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ def multi_index_matrix0d(p):

def multi_index_matrix1d(p):
ldof = p+1
multiIndex = np.zeros((ldof, 2), dtype=np.int)
multiIndex = np.zeros((ldof, 2), dtype=np.int_)
multiIndex[:, 0] = np.arange(p, -1, -1)
multiIndex[:, 1] = p - multiIndex[:, 0]
return multiIndex
Expand All @@ -17,7 +17,7 @@ def multi_index_matrix2d(p):
ldof = (p+1)*(p+2)//2
idx = np.arange(0, ldof)
idx0 = np.floor((-1 + np.sqrt(1 + 8*idx))/2)
multiIndex = np.zeros((ldof, 3), dtype=np.int)
multiIndex = np.zeros((ldof, 3), dtype=np.int_)
multiIndex[:,2] = idx - idx0*(idx0 + 1)/2
multiIndex[:,1] = idx0 - multiIndex[:,2]
multiIndex[:,0] = p - multiIndex[:, 1] - multiIndex[:, 2]
Expand All @@ -30,7 +30,7 @@ def multi_index_matrix3d(p):
idx0 = np.floor(idx0 + 1/idx0/3 - 1 + 1e-4) # a+b+c
idx1 = idx - idx0*(idx0 + 1)*(idx0 + 2)/6
idx2 = np.floor((-1 + np.sqrt(1 + 8*idx1))/2) # b+c
multiIndex = np.zeros((ldof, 4), dtype=np.int)
multiIndex = np.zeros((ldof, 4), dtype=np.int_)
multiIndex[1:, 3] = idx1 - idx2*(idx2 + 1)/2
multiIndex[1:, 2] = idx2 - multiIndex[1:, 3]
multiIndex[1:, 1] = idx0 - idx2
Expand Down Expand Up @@ -58,7 +58,7 @@ def boundary_dof(self, threshold=None):
index = index[flag]

gdof = self.number_of_global_dofs()
isBdDof = np.zeros(gdof, dtype=np.bool)
isBdDof = np.zeros(gdof, dtype=np.bool_)
isBdDof[index] = True
return isBdDof

Expand All @@ -73,7 +73,7 @@ def is_boundary_dof(self, threshold=None):
index = index[flag]

gdof = self.number_of_global_dofs()
isBdDof = np.zeros(gdof, dtype=np.bool)
isBdDof = np.zeros(gdof, dtype=np.bool_)
isBdDof[index] = True
return isBdDof

Expand Down Expand Up @@ -127,11 +127,11 @@ def interpolation_points(self):
NN = mesh.number_of_nodes()
gdof = self.number_of_global_dofs()
shape = (gdof,) + node.shape[1:]
ipoint = np.zeros(shape, dtype=np.float)
ipoint = np.zeros(shape, dtype=np.float64)
ipoint[:NN] = node
NC = mesh.number_of_cells()
cell = mesh.ds.cell
w = np.zeros((p-1,2), dtype=np.float)
w = np.zeros((p-1,2), dtype=np.float64)
w[:,0] = np.arange(p-1, 0, -1)/p
w[:,1] = w[-1::-1, 0]
GD = mesh.geo_dimension()
Expand Down Expand Up @@ -172,7 +172,7 @@ def boundary_dof(self, threshold=None):

gdof = self.number_of_global_dofs()
edge2dof = self.edge_to_dof()
isBdDof = np.zeros(gdof, dtype=np.bool)
isBdDof = np.zeros(gdof, dtype=np.bool_)
isBdDof[edge2dof[index]] = True
return isBdDof

Expand All @@ -189,7 +189,7 @@ def is_boundary_dof(self, threshold=None):

gdof = self.number_of_global_dofs()
edge2dof = self.edge_to_dof()
isBdDof = np.zeros(gdof, dtype=np.bool)
isBdDof = np.zeros(gdof, dtype=np.bool_)
isBdDof[edge2dof[index]] = True
return isBdDof

Expand All @@ -213,7 +213,7 @@ def edge_to_dof(self):
NN = mesh.number_of_nodes()

edge = mesh.ds.edge
edge2dof = np.zeros((NE, p+1), dtype=np.int)
edge2dof = np.zeros((NE, p+1), dtype=np.int_)
edge2dof[:, [0, -1]] = edge
if p > 1:
edge2dof[:, 1:-1] = NN + np.arange(NE*(p-1)).reshape(NE, p-1)
Expand All @@ -234,7 +234,7 @@ def cell_to_dof(self):
cell2dof = cell

if p > 1:
cell2dof = np.zeros((NC, ldof), dtype=np.int)
cell2dof = np.zeros((NC, ldof), dtype=np.int_)

isEdgeDof = self.is_on_edge_local_dof()
edge2dof = self.edge_to_dof()
Expand Down Expand Up @@ -275,11 +275,11 @@ def interpolation_points(self):
N = node.shape[0]
dim = node.shape[-1]
gdof = self.number_of_global_dofs()
ipoint = np.zeros((gdof, dim), dtype=np.float)
ipoint = np.zeros((gdof, dim), dtype=np.float64)
ipoint[:N, :] = node
NE = mesh.number_of_edges()
edge = mesh.ds.edge
w = np.zeros((p-1,2), dtype=np.float)
w = np.zeros((p-1,2), dtype=np.float64)
w[:,0] = np.arange(p-1, 0, -1)/p
w[:,1] = w[-1::-1, 0]
ipoint[N:N+(p-1)*NE, :] = np.einsum('ij, ...jm->...im', w,
Expand Down Expand Up @@ -333,7 +333,7 @@ def is_on_edge_local_dof(self):
p =self.p
ldof = self.number_of_local_dofs()
localEdge = self.mesh.ds.localEdge
isEdgeDof = np.zeros((ldof, 6), dtype=np.bool)
isEdgeDof = np.zeros((ldof, 6), dtype=np.bool_)
for i in range(6):
isEdgeDof[:, i] = (self.multiIndex[:, localEdge[-(i+1), 0]] == 0) & (self.multiIndex[:, localEdge[-(i+1), 1]] == 0 )
return isEdgeDof
Expand Down Expand Up @@ -365,7 +365,7 @@ def edge_to_dof(self):

base = N
edge = mesh.ds.edge
edge2dof = np.zeros((NE, p+1), dtype=np.int)
edge2dof = np.zeros((NE, p+1), dtype=np.int_)
edge2dof[:, [0, -1]] = edge
if p > 1:
edge2dof[:,1:-1] = base + np.arange(NE*(p-1)).reshape(NE, p-1)
Expand All @@ -375,7 +375,7 @@ def face_to_dof(self):
p = self.p
fdof = (p+1)*(p+2)//2

edgeIdx = np.zeros((2, p+1), dtype=np.int)
edgeIdx = np.zeros((2, p+1), dtype=np.int_)
edgeIdx[0, :] = range(p+1)
edgeIdx[1, :] = edgeIdx[0, -1::-1]

Expand All @@ -391,13 +391,13 @@ def face_to_dof(self):

edge2dof = self.edge_to_dof()

face2dof = np.zeros((NF, fdof), dtype=np.int)
face2dof = np.zeros((NF, fdof), dtype=np.int_)
faceIdx = self.multiIndex2d
isEdgeDof = (faceIdx == 0)

fe = np.array([1, 0, 0])
for i in range(3):
I = np.ones(NF, dtype=np.int)
I = np.ones(NF, dtype=np.int_)
sign = (face[:, fe[i]] == edge[face2edge[:, i], 0])
I[sign] = 0
face2dof[:, isEdgeDof[:, i]] = edge2dof[face2edge[:, [i]], edgeIdx[I]]
Expand All @@ -423,7 +423,7 @@ def boundary_dof(self, threshold=None):

face2dof = self.face_to_dof()
gdof = self.number_of_global_dofs()
isBdDof = np.zeros(gdof, dtype=np.bool)
isBdDof = np.zeros(gdof, dtype=np.bool_)
isBdDof[face2dof[index]] = True
return isBdDof

Expand All @@ -440,7 +440,7 @@ def is_boundary_dof(self, threshold=None):

face2dof = self.face_to_dof()
gdof = self.number_of_global_dofs()
isBdDof = np.zeros(gdof, dtype=np.bool)
isBdDof = np.zeros(gdof, dtype=np.bool_)
isBdDof[face2dof[index]] = True
return isBdDof

Expand All @@ -463,7 +463,7 @@ def cell_to_dof(self):

cell2face = mesh.ds.cell_to_face()

cell2dof = np.zeros((NC, ldof), dtype=np.int)
cell2dof = np.zeros((NC, ldof), dtype=np.int_)

face2dof = self.face_to_dof()
isFaceDof = self.is_on_face_local_dof()
Expand Down Expand Up @@ -500,21 +500,21 @@ def cell_to_dof_1(self):
NN = mesh.number_of_nodes()
NC = mesh.number_of_cells()
ldof = self.number_of_local_dofs()
cell2dof = np.zeros((NC, ldof), dtype=np.int)
cell2dof = np.zeros((NC, ldof), dtype=np.int_)

idx = np.array([
0,
ldof - (p+1)*(p+2)//2 - 1,
ldof - p -1,
ldof - 1], dtype=np.int)
ldof - 1], dtype=np.int_)

cell2dof[:, idx] = cell

if p == 1:
return cell2dof
if p == 2:
cell2edge = mesh.ds.cell_to_edge()
idx = np.array([1, 2, 3, 5, 6, 8], dtype=np.int)
idx = np.array([1, 2, 3, 5, 6, 8], dtype=np.int_)
cel2dof[:, idx] = cell2edge + NN
return cell2dof
else:
Expand Down Expand Up @@ -550,21 +550,21 @@ def cell_to_dof_2(self):
NN = mesh.number_of_nodes()
NC = mesh.number_of_cells()
ldof = self.number_of_local_dofs()
cell2dof = np.zeros((NC, ldof), dtype=np.int)
cell2dof = np.zeros((NC, ldof), dtype=np.int_)

idx = np.array([
0,
ldof - (p+1)*(p+2)//2 - 1,
ldof - p -1,
ldof - 1], dtype=np.int)
ldof - 1], dtype=np.int_)

cell2dof[:, idx] = cell

if p == 1:
return cell2dof
if p == 2:
cell2edge = mesh.ds.cell_to_edge()
idx = np.array([1, 2, 3, 5, 6, 8], dtype=np.int)
idx = np.array([1, 2, 3, 5, 6, 8], dtype=np.int_)
cel2dof[:, idx] = cell2edge + NN
return cell2dof
else:
Expand Down Expand Up @@ -642,12 +642,12 @@ def interpolation_points(self):

ldof = self.number_of_local_dofs()
gdof = self.number_of_global_dofs()
ipoint = np.zeros((gdof, dim), dtype=np.float)
ipoint = np.zeros((gdof, dim), dtype=np.float64)
ipoint[:N, :] = node
if p > 1:
NE = mesh.number_of_edges()
edge = mesh.ds.edge
w = np.zeros((p-1,2), dtype=np.float)
w = np.zeros((p-1,2), dtype=np.float64)
w[:,0] = np.arange(p-1, 0, -1)/p
w[:,1] = w[-1::-1, 0]
ipoint[N:N+(p-1)*NE, :] = np.einsum('ij, kj...->ki...', w, node[edge,:]).reshape(-1, dim)
Expand Down Expand Up @@ -727,7 +727,7 @@ def __init__(self, mesh, p):
def multi_index_matrix(self):
p = self.p
ldof = self.number_of_local_dofs()
multiIndex = np.zeros((ldof, 2), dtype=np.int)
multiIndex = np.zeros((ldof, 2), dtype=np.int_)
multiIndex[:, 0] = np.arange(p, -1, -1)
multiIndex[:, 1] = p - multiIndex[:, 0]
return multiIndex
Expand All @@ -743,11 +743,11 @@ def __init__(self, mesh, p):
def multi_index_matrix(self):
p = self.p
if p == 0:
return np.array([[0, 0, 0]], dtype=np.int)
return np.array([[0, 0, 0]], dtype=np.int_)
ldof = self.number_of_local_dofs()
idx = np.arange(0, ldof)
idx0 = np.floor((-1 + np.sqrt(1 + 8*idx))/2)
multiIndex = np.zeros((ldof, 3), dtype=np.int)
multiIndex = np.zeros((ldof, 3), dtype=np.int_)
multiIndex[:, 2] = idx - idx0*(idx0 + 1)/2
multiIndex[:, 1] = idx0 - multiIndex[:, 2]
multiIndex[:, 0] = p - multiIndex[:, 1] - multiIndex[:, 2]
Expand All @@ -769,7 +769,7 @@ def multi_index_matrix(self):
idx0 = np.floor(idx0 + 1/idx0/3 - 1 + 1e-4)# a+b+c
idx1 = idx - idx0*(idx0 + 1)*(idx0 + 2)/6
idx2 = np.floor((-1 + np.sqrt(1 + 8*idx1))/2)# b+c
multiIndex = np.zeros((ldof, 4), dtype=np.int)
multiIndex = np.zeros((ldof, 4), dtype=np.int_)
multiIndex[1:, 3] = idx1 - idx2*(idx2 + 1)/2
multiIndex[1:, 2] = idx2 - multiIndex[1:, 3]
multiIndex[1:, 1] = idx0 - idx2
Expand Down Expand Up @@ -808,7 +808,7 @@ def local_face_to_dof(self):
qdof = (p+1)*(p+1)


idx = np.r_['0', [0, 3], 2*np.ones(p-1, dtype=np.int)]
idx = np.r_['0', [0, 3], 2*np.ones(p-1, dtype=np.int_)]
f0 = np.repeat(np.cumsum(np.cumsum(idx)), range(1, p+2)) - np.arange(tdof)
f1 = np.arange(tdof*p, ldof)
f2 = np.repeat(
Expand Down Expand Up @@ -872,7 +872,7 @@ def boundary_dof(self, threshold=None):

gdof = self.number_of_global_dofs()
face2dof = self.face_to_dof()
isBdDof = np.zeros(gdof, dtype=np.bool)
isBdDof = np.zeros(gdof, dtype=np.bool_)
isBdDof[np.concatenate(face2dof[index])] = True
return isBdDof

Expand Down Expand Up @@ -958,14 +958,14 @@ def cell_to_dof_2(self):
NN = mesh.number_of_nodes()
NC = mesh.number_of_cells()
ldof = self.number_of_local_dofs()
cell2dof = np.zeros((NC, ldof), dtype=np.int)
cell2dof = np.zeros((NC, ldof), dtype=np.int_)
idx = np.array([
0,
p*(p+1)//2,
(p+1)*(p+2)//2-1,
ldof - (p+1)*(p+2)//2,
ldof - p - 1,
ldof - 1], dtype=np.int)
ldof - 1], dtype=np.int_)
cell2dof[:, idx] = cell

if p == 1:
Expand Down Expand Up @@ -1043,7 +1043,7 @@ def interpolation_points_1(self):
w1 = self.multi_index_matrix(1)/p
w2 = self.multi_index_matrix(2)/p
w3 = np.einsum('ij, km->ijkm', w1, w2)
w = np.zeros((ldof, 6), dtype=np.float)
w = np.zeros((ldof, 6), dtype=np.float64)
w[:, 0:3] = w3[:, 0, :, :].reshape(-1, 3)
w[:, 3:] = w3[:, 1, :, :].reshape(-1, 3)
ps = np.einsum('km, imd->ikd', w, node[cell]).reshape(-1, GD)
Expand Down
Loading

0 comments on commit 4a5aafc

Please sign in to comment.