Buckets:
| import numpy as np | |
| cimport numpy as np | |
| cimport cython | |
| ctypedef np.float64_t DT # data type | |
| # turn off array bounds check | |
| # turn off negative indices (u[-1,-1]) | |
| cpdef advance( | |
| np.ndarray[DT, ndim=2, mode='c'] u, | |
| np.ndarray[DT, ndim=2, mode='c'] u_1, | |
| np.ndarray[DT, ndim=2, mode='c'] u_2, | |
| np.ndarray[DT, ndim=2, mode='c'] f, | |
| double Cx2, double Cy2, double dt2): | |
| cdef: | |
| int Ix_start = 0 | |
| int Iy_start = 0 | |
| int Ix_end = u.shape[0]-1 | |
| int Iy_end = u.shape[1]-1 | |
| int i, j | |
| double u_xx, u_yy | |
| for i in range(Ix_start+1, Ix_end): | |
| for j in range(Iy_start+1, Iy_end): | |
| u_xx = u_1[i-1,j] - 2*u_1[i,j] + u_1[i+1,j] | |
| u_yy = u_1[i,j-1] - 2*u_1[i,j] + u_1[i,j+1] | |
| u[i,j] = 2*u_1[i,j] - u_2[i,j] + \ | |
| Cx2*u_xx + Cy2*u_yy + dt2*f[i,j] | |
| # Boundary condition u=0 | |
| j = Iy_start | |
| for i in range(Ix_start, Ix_end+1): u[i,j] = 0 | |
| j = Iy_end | |
| for i in range(Ix_start, Ix_end+1): u[i,j] = 0 | |
| i = Ix_start | |
| for j in range(Iy_start, Iy_end+1): u[i,j] = 0 | |
| i = Ix_end | |
| for j in range(Iy_start, Iy_end+1): u[i,j] = 0 | |
| return u | |
Xet Storage Details
- Size:
- 1.22 kB
- Xet hash:
- 34b616e257d952d4ec2088a9f28eba11111869a079f4ac3f6f030815bd1829fb
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.