diff --git a/src/USER-OMP/thr_data.cpp b/src/USER-OMP/thr_data.cpp index d6830e64bf..069a5fc756 100644 --- a/src/USER-OMP/thr_data.cpp +++ b/src/USER-OMP/thr_data.cpp @@ -58,26 +58,31 @@ void ThrData::init_force(int nall, double **f, double **torque, vatom_pair=vatom_bond=vatom_angle=vatom_dihed=vatom_imprp=vatom_kspce=NULL; _f = f + _tid*nall; - memset(&(_f[0][0]),0,nall*3*sizeof(double)); + if (nall > 0) + memset(&(_f[0][0]),0,nall*3*sizeof(double)); if (torque) { _torque = torque + _tid*nall; - memset(&(_torque[0][0]),0,nall*3*sizeof(double)); + if (nall > 0) + memset(&(_torque[0][0]),0,nall*3*sizeof(double)); } else _torque = NULL; if (erforce) { _erforce = erforce + _tid*nall; - memset(&(_erforce[0]),0,nall*sizeof(double)); + if (nall > 0) + memset(&(_erforce[0]),0,nall*sizeof(double)); } else _erforce = NULL; if (de) { _de = de + _tid*nall; - memset(&(_de[0]),0,nall*sizeof(double)); + if (nall > 0) + memset(&(_de[0]),0,nall*sizeof(double)); } else _de = NULL; if (drho) { _drho = drho + _tid*nall; - memset(&(_drho[0]),0,nall*sizeof(double)); + if (nall > 0) + memset(&(_drho[0]),0,nall*sizeof(double)); } else _drho = NULL; } @@ -88,7 +93,8 @@ void ThrData::init_force(int nall, double **f, double **torque, void ThrData::init_eam(int nall, double *rho) { _rho = rho + _tid*nall; - memset(_rho, 0, nall*sizeof(double)); + if (nall > 0) + memset(_rho, 0, nall*sizeof(double)); } /* ---------------------------------------------------------------------- */ @@ -99,8 +105,10 @@ void ThrData::init_adp(int nall, double *rho, double **mu, double **lambda) _mu = mu + _tid*nall; _lambda = lambda + _tid*nall; - memset(&(_mu[0][0]), 0, nall*3*sizeof(double)); - memset(&(_lambda[0][0]), 0, nall*6*sizeof(double)); + if (nall > 0) { + memset(&(_mu[0][0]), 0, nall*3*sizeof(double)); + memset(&(_lambda[0][0]), 0, nall*6*sizeof(double)); + } } /* ---------------------------------------------------------------------- */ @@ -111,8 +119,10 @@ void ThrData::init_cdeam(int nall, double *rho, double *rhoB, double *D_values) _rhoB = rhoB + _tid*nall; _D_values = D_values + _tid*nall; - memset(_rhoB, 0, nall*sizeof(double)); - memset(_D_values, 0, nall*sizeof(double)); + if (nall > 0) { + memset(_rhoB, 0, nall*sizeof(double)); + memset(_D_values, 0, nall*sizeof(double)); + } } /* ---------------------------------------------------------------------- */ @@ -122,7 +132,8 @@ void ThrData::init_eim(int nall, double *rho, double *fp) init_eam(nall, rho); _fp = fp + _tid*nall; - memset(_fp,0,nall*sizeof(double)); + if (nall > 0) + memset(_fp,0,nall*sizeof(double)); } /* ---------------------------------------------------------------------- diff --git a/src/USER-OMP/thr_omp.cpp b/src/USER-OMP/thr_omp.cpp index 19537868e5..5ae7cc87da 100644 --- a/src/USER-OMP/thr_omp.cpp +++ b/src/USER-OMP/thr_omp.cpp @@ -70,55 +70,65 @@ void ThrOMP::ev_setup_thr(int eflag, int vflag, int nall, double *eatom, if (thr_style & THR_PAIR) { if (eflag & 2) { thr->eatom_pair = eatom + tid*nall; - memset(&(thr->eatom_pair[0]),0,nall*sizeof(double)); + if (nall > 0) + memset(&(thr->eatom_pair[0]),0,nall*sizeof(double)); } if (vflag & 4) { thr->vatom_pair = vatom + tid*nall; - memset(&(thr->vatom_pair[0][0]),0,nall*6*sizeof(double)); + if (nall > 0) + memset(&(thr->vatom_pair[0][0]),0,nall*6*sizeof(double)); } } if (thr_style & THR_BOND) { if (eflag & 2) { thr->eatom_bond = eatom + tid*nall; - memset(&(thr->eatom_bond[0]),0,nall*sizeof(double)); + if (nall > 0) + memset(&(thr->eatom_bond[0]),0,nall*sizeof(double)); } if (vflag & 4) { thr->vatom_bond = vatom + tid*nall; - memset(&(thr->vatom_bond[0][0]),0,nall*6*sizeof(double)); + if (nall > 0) + memset(&(thr->vatom_bond[0][0]),0,nall*6*sizeof(double)); } } if (thr_style & THR_ANGLE) { if (eflag & 2) { thr->eatom_angle = eatom + tid*nall; - memset(&(thr->eatom_angle[0]),0,nall*sizeof(double)); + if (nall > 0) + memset(&(thr->eatom_angle[0]),0,nall*sizeof(double)); } if (vflag & 4) { thr->vatom_angle = vatom + tid*nall; - memset(&(thr->vatom_angle[0][0]),0,nall*6*sizeof(double)); + if (nall > 0) + memset(&(thr->vatom_angle[0][0]),0,nall*6*sizeof(double)); } } if (thr_style & THR_DIHEDRAL) { if (eflag & 2) { thr->eatom_dihed = eatom + tid*nall; - memset(&(thr->eatom_dihed[0]),0,nall*sizeof(double)); + if (nall > 0) + memset(&(thr->eatom_dihed[0]),0,nall*sizeof(double)); } if (vflag & 4) { thr->vatom_dihed = vatom + tid*nall; - memset(&(thr->vatom_dihed[0][0]),0,nall*6*sizeof(double)); + if (nall > 0) + memset(&(thr->vatom_dihed[0][0]),0,nall*6*sizeof(double)); } } if (thr_style & THR_IMPROPER) { if (eflag & 2) { thr->eatom_imprp = eatom + tid*nall; - memset(&(thr->eatom_imprp[0]),0,nall*sizeof(double)); + if (nall > 0) + memset(&(thr->eatom_imprp[0]),0,nall*sizeof(double)); } if (vflag & 4) { thr->vatom_imprp = vatom + tid*nall; - memset(&(thr->vatom_imprp[0][0]),0,nall*6*sizeof(double)); + if (nall > 0) + memset(&(thr->vatom_imprp[0][0]),0,nall*6*sizeof(double)); } } @@ -126,11 +136,13 @@ void ThrOMP::ev_setup_thr(int eflag, int vflag, int nall, double *eatom, if (thr_style & THR_KSPACE) { if (eflag & 2) { thr->eatom_kspce = eatom + tid*nall; - memset(&(thr->eatom_kspce[0]),0,nall*sizeof(double)); + if (nall > 0) + memset(&(thr->eatom_kspce[0]),0,nall*sizeof(double)); } if (vflag & 4) { thr->vatom_kspce = vatom + tid*nall; - memset(&(thr->vatom_kspce[0][0]),0,nall*6*sizeof(double)); + if (nall > 0) + memset(&(thr->vatom_kspce[0][0]),0,nall*6*sizeof(double)); } } #endif