diff --git a/src/MESONT/pair_mesocnt.cpp b/src/MESONT/pair_mesocnt.cpp index 55128ee89f..c5d33c656e 100644 --- a/src/MESONT/pair_mesocnt.cpp +++ b/src/MESONT/pair_mesocnt.cpp @@ -107,8 +107,8 @@ void PairMesoCNT::compute(int eflag, int vflag) double fend, lp, scale, sumw, sumw_inv; double evdwl, evdwl_chain; double *r1, *r2, *q1, *q2, *qe; - double ftotal[3], ftorque[3], torque[3], delr1[3], delr2[3]; - double t1[3], t2[3]; + double ftotal[3], ftorque[3], torque[3], delr1[3], delr2[3], delqe[3]; + double t1[3], t2[3], t3[3]; double dr1_sumw[3], dr2_sumw[3]; double dr1_w[3], dr2_w[3], dq1_w[3], dq2_w[3]; double fgrad_r1_p1[3], fgrad_r1_p2[3], fgrad_r2_p1[3], fgrad_r2_p2[3]; @@ -280,6 +280,15 @@ void PairMesoCNT::compute(int eflag, int vflag) cross3(delr2, fglobal[1], t2); add3(t1, t2, torque); + // additional torque contribution from chain end + + if (endflag) { + sub3(qe, p, delqe); + cross3(delqe, m, t3); + scale3(fend, t3); + add3(t3, torque, torque); + } + cross3(torque, m, ftorque); lp = param[5] - param[4]; scale3(1.0 / lp, ftorque);