fdderivs_c: 全量清零改为只清零边界面,减少无效内存写入
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -71,11 +71,30 @@ void fdderivs(const int ex[3],
|
|||||||
const double Fdxdz = F1o144 / (dX * dZ);
|
const double Fdxdz = F1o144 / (dX * dZ);
|
||||||
const double Fdydz = F1o144 / (dY * dZ);
|
const double Fdydz = F1o144 / (dY * dZ);
|
||||||
|
|
||||||
/* 输出清零:fxx,fyy,fzz,fxy,fxz,fyz = 0 */
|
/* 只清零主循环不覆盖的最外层边界面 */
|
||||||
const size_t all = (size_t)ex1 * (size_t)ex2 * (size_t)ex3;
|
const size_t all = (size_t)ex1 * (size_t)ex2 * (size_t)ex3;
|
||||||
for (size_t p = 0; p < all; ++p) {
|
{
|
||||||
fxx[p] = ZEO; fyy[p] = ZEO; fzz[p] = ZEO;
|
/* k0=ex3-1 面 */
|
||||||
fxy[p] = ZEO; fxz[p] = ZEO; fyz[p] = ZEO;
|
for (int j0 = 0; j0 < ex2; ++j0)
|
||||||
|
for (int i0 = 0; i0 < ex1; ++i0) {
|
||||||
|
const size_t p = idx_ex(i0, j0, ex3-1, ex);
|
||||||
|
fxx[p]=ZEO; fyy[p]=ZEO; fzz[p]=ZEO;
|
||||||
|
fxy[p]=ZEO; fxz[p]=ZEO; fyz[p]=ZEO;
|
||||||
|
}
|
||||||
|
/* j0=ex2-1 面 */
|
||||||
|
for (int k0 = 0; k0 < ex3-1; ++k0)
|
||||||
|
for (int i0 = 0; i0 < ex1; ++i0) {
|
||||||
|
const size_t p = idx_ex(i0, ex2-1, k0, ex);
|
||||||
|
fxx[p]=ZEO; fyy[p]=ZEO; fzz[p]=ZEO;
|
||||||
|
fxy[p]=ZEO; fxz[p]=ZEO; fyz[p]=ZEO;
|
||||||
|
}
|
||||||
|
/* i0=ex1-1 面 */
|
||||||
|
for (int k0 = 0; k0 < ex3-1; ++k0)
|
||||||
|
for (int j0 = 0; j0 < ex2-1; ++j0) {
|
||||||
|
const size_t p = idx_ex(ex1-1, j0, k0, ex);
|
||||||
|
fxx[p]=ZEO; fyy[p]=ZEO; fzz[p]=ZEO;
|
||||||
|
fxy[p]=ZEO; fxz[p]=ZEO; fyz[p]=ZEO;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user