diff --git a/AMSS_NCKU_source/fdderivs_c.C b/AMSS_NCKU_source/fdderivs_c.C index 5cc52d4..e3e9086 100644 --- a/AMSS_NCKU_source/fdderivs_c.C +++ b/AMSS_NCKU_source/fdderivs_c.C @@ -71,11 +71,30 @@ void fdderivs(const int ex[3], const double Fdxdz = F1o144 / (dX * 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; - for (size_t p = 0; p < all; ++p) { - fxx[p] = ZEO; fyy[p] = ZEO; fzz[p] = ZEO; - fxy[p] = ZEO; fxz[p] = ZEO; fyz[p] = ZEO; + { + /* k0=ex3-1 面 */ + 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; + } } /*