你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-06 12:36:51 +08:00
Improved access to memory views.
这个提交包含在:
@@ -22,15 +22,17 @@ from gprMax.materials import Material
|
||||
from gprMax.yee_cell_setget_rigid cimport get_rigid_Ex, get_rigid_Ey, get_rigid_Ez, get_rigid_Hx, get_rigid_Hy, get_rigid_Hz
|
||||
|
||||
|
||||
cpdef build_ex_component(np.uint32_t[:, :, :] solid, np.int8_t[:, :, :, :] rigidE, np.uint32_t[:, :, :, :] ID, G):
|
||||
"""This function builds the Ex components in the ID array.
|
||||
cpdef void build_electric_components(np.uint32_t[:, :, ::1] solid, np.int8_t[:, :, :, ::1] rigidE, np.uint32_t[:, :, :, ::1] ID, G):
|
||||
"""This function builds the electric field components in the ID array.
|
||||
|
||||
Args:
|
||||
solid, rigid, ID (memoryviews): Access to solid, rigid and ID arrays
|
||||
"""
|
||||
|
||||
cdef int i, j, k, numID1, numID2, numID3, numID4
|
||||
cdef Py_ssize_t i, j, k
|
||||
cdef int numID1, numID2, numID3, numID4
|
||||
|
||||
# Ex component
|
||||
for i in range(0, G.nx):
|
||||
for j in range(1, G.ny):
|
||||
for k in range(1, G.nz):
|
||||
@@ -75,15 +77,7 @@ cpdef build_ex_component(np.uint32_t[:, :, :] solid, np.int8_t[:, :, :, :] rigid
|
||||
G.materials.append(m)
|
||||
ID[0, i, j, k] = newNumID
|
||||
|
||||
cpdef build_ey_component(np.uint32_t[:, :, :] solid, np.int8_t[:, :, :, :] rigidE, np.uint32_t[:, :, :, :] ID, G):
|
||||
"""This function builds the Ey components in the ID array.
|
||||
|
||||
Args:
|
||||
solid, rigid, ID (memoryviews): Access to solid, rigid and ID arrays
|
||||
"""
|
||||
|
||||
cdef int i, j, k, numID1, numID2, numID3, numID4
|
||||
|
||||
# Ey component
|
||||
for i in range(1, G.nx):
|
||||
for j in range(0, G.ny):
|
||||
for k in range(1, G.nz):
|
||||
@@ -128,15 +122,7 @@ cpdef build_ey_component(np.uint32_t[:, :, :] solid, np.int8_t[:, :, :, :] rigid
|
||||
G.materials.append(m)
|
||||
ID[1, i, j, k] = newNumID
|
||||
|
||||
cpdef build_ez_component(np.uint32_t[:, :, :] solid, np.int8_t[:, :, :, :] rigidE, np.uint32_t[:, :, :, :] ID, G):
|
||||
"""This function builds the Ez components in the ID array.
|
||||
|
||||
Args:
|
||||
solid, rigid, ID (memoryviews): Access to solid, rigid and ID arrays
|
||||
"""
|
||||
|
||||
cdef int i, j, k, numID1, numID2, numID3, numID4
|
||||
|
||||
# Ez component
|
||||
for i in range(1, G.nx):
|
||||
for j in range(1, G.ny):
|
||||
for k in range(0, G.nz):
|
||||
@@ -181,15 +167,18 @@ cpdef build_ez_component(np.uint32_t[:, :, :] solid, np.int8_t[:, :, :, :] rigid
|
||||
G.materials.append(m)
|
||||
ID[2, i, j, k] = newNumID
|
||||
|
||||
cpdef build_hx_component(np.uint32_t[:, :, :] solid, np.int8_t[:, :, :, :] rigidH, np.uint32_t[:, :, :, :] ID, G):
|
||||
"""This function builds the Hx components in the ID array.
|
||||
|
||||
cpdef void build_magnetic_components(np.uint32_t[:, :, ::1] solid, np.int8_t[:, :, :, ::1] rigidH, np.uint32_t[:, :, :, ::1] ID, G):
|
||||
"""This function builds the magnetic field components in the ID array.
|
||||
|
||||
Args:
|
||||
solid, rigid, ID (memoryviews): Access to solid, rigid and ID arrays
|
||||
"""
|
||||
|
||||
cdef int i, j, k, numID1, numID2
|
||||
cdef Py_ssize_t i, j, k
|
||||
cdef int numID1, numID2
|
||||
|
||||
# Hx component
|
||||
for i in range(1, G.nx):
|
||||
for j in range(0, G.ny):
|
||||
for k in range(0, G.nz):
|
||||
@@ -231,15 +220,7 @@ cpdef build_hx_component(np.uint32_t[:, :, :] solid, np.int8_t[:, :, :, :] rigid
|
||||
G.materials.append(m)
|
||||
ID[3, i, j, k] = newNumID
|
||||
|
||||
cpdef build_hy_component(np.uint32_t[:, :, :] solid, np.int8_t[:, :, :, :] rigidH, np.uint32_t[:, :, :, :] ID, G):
|
||||
"""This function builds the Hy components in the ID array.
|
||||
|
||||
Args:
|
||||
solid, rigid, ID (memoryviews): Access to solid, rigid and ID arrays
|
||||
"""
|
||||
|
||||
cdef int i, j, k, numID1, numID2
|
||||
|
||||
# Hy component
|
||||
for i in range(0, G.nx):
|
||||
for j in range(1, G.ny):
|
||||
for k in range(0, G.nz):
|
||||
@@ -281,15 +262,7 @@ cpdef build_hy_component(np.uint32_t[:, :, :] solid, np.int8_t[:, :, :, :] rigid
|
||||
G.materials.append(m)
|
||||
ID[4, i, j, k] = newNumID
|
||||
|
||||
cpdef build_hz_component(np.uint32_t[:, :, :] solid, np.int8_t[:, :, :, :] rigidH, np.uint32_t[:, :, :, :] ID, G):
|
||||
"""This function builds the Hz components in the ID array.
|
||||
|
||||
Args:
|
||||
solid, rigid, ID (memoryviews): Access to solid, rigid and ID arrays
|
||||
"""
|
||||
|
||||
cdef int i, j, k, numID1, numID2
|
||||
|
||||
# Hz component
|
||||
for i in range(0, G.nx):
|
||||
for j in range(0, G.ny):
|
||||
for k in range(1, G.nz):
|
||||
|
@@ -21,24 +21,24 @@ cimport numpy as np
|
||||
|
||||
# Get and set functions for the rigid electric component array. The rigid array is 4D with the 1st dimension holding
|
||||
# the 12 electric edge components of a cell - Ex1, Ex2, Ex3, Ex4, Ey1, Ey2, Ey3, Ey4, Ez1, Ez2, Ez3, Ez4
|
||||
cdef bint get_rigid_Ex(int i, int j, int k, np.int8_t[:, :, :, :] rigidE)
|
||||
cdef bint get_rigid_Ey(int i, int j, int k, np.int8_t[:, :, :, :] rigidE)
|
||||
cdef bint get_rigid_Ez(int i, int j, int k, np.int8_t[:, :, :, :] rigidE)
|
||||
cdef void set_rigid_Ex(int i, int j, int k, np.int8_t[:, :, :, :] rigidE)
|
||||
cdef void set_rigid_Ey(int i, int j, int k, np.int8_t[:, :, :, :] rigidE)
|
||||
cdef void set_rigid_Ez(int i, int j, int k, np.int8_t[:, :, :, :] rigidE)
|
||||
cdef void set_rigid_E(int i, int j, int k, np.int8_t[:, :, :, :] rigidE)
|
||||
cdef void unset_rigid_E(int i, int j, int k, np.int8_t[:, :, :, :] rigidE)
|
||||
cdef bint get_rigid_Ex(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE)
|
||||
cdef bint get_rigid_Ey(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE)
|
||||
cdef bint get_rigid_Ez(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE)
|
||||
cdef void set_rigid_Ex(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE)
|
||||
cdef void set_rigid_Ey(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE)
|
||||
cdef void set_rigid_Ez(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE)
|
||||
cdef void set_rigid_E(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE)
|
||||
cdef void unset_rigid_E(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE)
|
||||
|
||||
# Get and set functions for the rigid magnetic component array. The rigid array is 4D with the 1st dimension holding
|
||||
# the 6 magnetic edge components - Hx1, Hx2, Hy1, Hy2, Hz1, Hz2
|
||||
cdef bint get_rigid_Hx(int i, int j, int k, np.int8_t[:, :, :, :] rigidH)
|
||||
cdef bint get_rigid_Hy(int i, int j, int k, np.int8_t[:, :, :, :] rigidH)
|
||||
cdef bint get_rigid_Hz(int i, int j, int k, np.int8_t[:, :, :, :] rigidH)
|
||||
cdef void set_rigid_Hx(int i, int j, int k, np.int8_t[:, :, :, :] rigidH)
|
||||
cdef void set_rigid_Hy(int i, int j, int k, np.int8_t[:, :, :, :] rigidH)
|
||||
cdef void set_rigid_Hz(int i, int j, int k, np.int8_t[:, :, :, :] rigidH)
|
||||
cdef void set_rigid_H(int i, int j, int k, np.int8_t[:, :, :, :] rigidH)
|
||||
cdef void unset_rigid_H(int i, int j, int k, np.int8_t[:, :, :, :] rigidH)
|
||||
cdef bint get_rigid_Hx(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH)
|
||||
cdef bint get_rigid_Hy(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH)
|
||||
cdef bint get_rigid_Hz(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH)
|
||||
cdef void set_rigid_Hx(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH)
|
||||
cdef void set_rigid_Hy(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH)
|
||||
cdef void set_rigid_Hz(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH)
|
||||
cdef void set_rigid_H(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH)
|
||||
cdef void unset_rigid_H(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH)
|
||||
|
||||
|
||||
|
@@ -21,7 +21,7 @@ cimport numpy as np
|
||||
|
||||
# Get and set functions for the rigid electric component array. The rigid array is 4D with the 1st dimension holding
|
||||
# the 12 electric edge components of a cell - Ex1, Ex2, Ex3, Ex4, Ey1, Ey2, Ey3, Ey4, Ez1, Ez2, Ez3, Ez4
|
||||
cdef bint get_rigid_Ex(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
cdef bint get_rigid_Ex(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE):
|
||||
cdef bint result
|
||||
result = False
|
||||
if rigidE[0, i, j, k]:
|
||||
@@ -37,7 +37,7 @@ cdef bint get_rigid_Ex(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
result = True
|
||||
return result
|
||||
|
||||
cdef bint get_rigid_Ey(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
cdef bint get_rigid_Ey(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE):
|
||||
cdef bint result
|
||||
result = False
|
||||
if rigidE[4, i, j, k]:
|
||||
@@ -53,7 +53,7 @@ cdef bint get_rigid_Ey(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
result = True
|
||||
return result
|
||||
|
||||
cdef bint get_rigid_Ez(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
cdef bint get_rigid_Ez(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE):
|
||||
cdef bint result
|
||||
result = False
|
||||
if rigidE[8, i, j, k]:
|
||||
@@ -69,7 +69,7 @@ cdef bint get_rigid_Ez(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
result = True
|
||||
return result
|
||||
|
||||
cdef void set_rigid_Ex(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
cdef void set_rigid_Ex(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE):
|
||||
rigidE[0, i, j, k] = True
|
||||
if j != 0:
|
||||
rigidE[1, i, j - 1, k] = True
|
||||
@@ -78,7 +78,7 @@ cdef void set_rigid_Ex(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
if j != 0 and k != 0:
|
||||
rigidE[2, i, j - 1, k - 1] = True
|
||||
|
||||
cdef void set_rigid_Ey(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
cdef void set_rigid_Ey(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE):
|
||||
rigidE[4, i, j, k] = True
|
||||
if i != 0:
|
||||
rigidE[7, i - 1, j, k] = True
|
||||
@@ -87,7 +87,7 @@ cdef void set_rigid_Ey(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
if i != 0 and k != 0:
|
||||
rigidE[6, i - 1, j, k - 1] = True
|
||||
|
||||
cdef void set_rigid_Ez(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
cdef void set_rigid_Ez(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE):
|
||||
rigidE[8, i, j, k] = True
|
||||
if i != 0:
|
||||
rigidE[9, i - 1, j, k] = True
|
||||
@@ -96,15 +96,15 @@ cdef void set_rigid_Ez(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
if i != 0 and j != 0:
|
||||
rigidE[10, i - 1, j - 1, k] = True
|
||||
|
||||
cdef void set_rigid_E(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
cdef void set_rigid_E(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE):
|
||||
rigidE[:, i, j, k] = True
|
||||
|
||||
cdef void unset_rigid_E(int i, int j, int k, np.int8_t[:, :, :, :] rigidE):
|
||||
cdef void unset_rigid_E(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidE):
|
||||
rigidE[:, i, j, k] = False
|
||||
|
||||
# Get and set functions for the rigid magnetic component array. The rigid array is 4D with the 1st dimension holding
|
||||
# the 6 magnetic edge components - Hx1, Hx2, Hy1, Hy2, Hz1, Hz2
|
||||
cdef bint get_rigid_Hx(int i, int j, int k, np.int8_t[:, :, :, :] rigidH):
|
||||
cdef bint get_rigid_Hx(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH):
|
||||
cdef bint result
|
||||
result = False
|
||||
if rigidH[0, i, j, k]:
|
||||
@@ -114,7 +114,7 @@ cdef bint get_rigid_Hx(int i, int j, int k, np.int8_t[:, :, :, :] rigidH):
|
||||
result = True
|
||||
return result
|
||||
|
||||
cdef bint get_rigid_Hy(int i, int j, int k, np.int8_t[:, :, :, :] rigidH):
|
||||
cdef bint get_rigid_Hy(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH):
|
||||
cdef bint result
|
||||
result = False
|
||||
if rigidH[2, i, j, k]:
|
||||
@@ -124,7 +124,7 @@ cdef bint get_rigid_Hy(int i, int j, int k, np.int8_t[:, :, :, :] rigidH):
|
||||
result = True
|
||||
return result
|
||||
|
||||
cdef bint get_rigid_Hz(int i, int j, int k, np.int8_t[:, :, :, :] rigidH):
|
||||
cdef bint get_rigid_Hz(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH):
|
||||
cdef bint result
|
||||
result = False
|
||||
if rigidH[4, i, j, k]:
|
||||
@@ -134,24 +134,24 @@ cdef bint get_rigid_Hz(int i, int j, int k, np.int8_t[:, :, :, :] rigidH):
|
||||
result = True
|
||||
return result
|
||||
|
||||
cdef void set_rigid_Hx(int i, int j, int k, np.int8_t[:, :, :, :] rigidH):
|
||||
cdef void set_rigid_Hx(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH):
|
||||
rigidH[0, i, j, k] = True
|
||||
if i != 0:
|
||||
rigidH[1, i - 1, j, k] = True
|
||||
|
||||
cdef void set_rigid_Hy(int i, int j, int k, np.int8_t[:, :, :, :] rigidH):
|
||||
cdef void set_rigid_Hy(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH):
|
||||
rigidH[2, i, j, k] = True
|
||||
if j != 0:
|
||||
rigidH[3, i, j - 1, k] = True
|
||||
|
||||
cdef void set_rigid_Hz(int i, int j, int k, np.int8_t[:, :, :, :] rigidH):
|
||||
cdef void set_rigid_Hz(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH):
|
||||
rigidH[4, i, j, k] = True
|
||||
if k != 0:
|
||||
rigidH[5, i, j, k - 1] = True
|
||||
|
||||
cdef void set_rigid_H(int i, int j, int k, np.int8_t[:, :, :, :] rigidH):
|
||||
cdef void set_rigid_H(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH):
|
||||
rigidH[:, i, j, k] = True
|
||||
|
||||
cdef void unset_rigid_H(int i, int j, int k, np.int8_t[:, :, :, :] rigidH):
|
||||
cdef void unset_rigid_H(int i, int j, int k, np.int8_t[:, :, :, ::1] rigidH):
|
||||
rigidH[:, i, j, k] = False
|
||||
|
||||
|
在新工单中引用
屏蔽一个用户