41 #include <basic/Tracer.hh>
44 #include <utility/exit.hh>
47 #include <numeric/constants.hh>
55 #include <utility/vector1.hh>
63 using namespace core::optimization;
99 if( (xM*xM + yM*yM + zM*zM) > 90000){
103 for (i = 1; i <= n_la; i++){
109 if((fabs(Xxx) + fabs(Xxy) + fabs(Xxz) + fabs(Xyy) + fabs(Xyz)) > limit){
139 if(n_la != pcs_d_l_vec.size()){
140 utility_exit_with_message(
"The number of lanthanides is inconsistent");
147 for (i = 1; i <= n_la; i++){
170 for(i = 1; i <= vars.size(); i++){
173 vars_bis_pd[i] += delta;
174 vars_bis_md[i] -= delta;
177 dE_dvars[i] = value_pd - value_md;
219 core::Real PCS_calc, PCS_exp, common2, common3;
227 for (i = 1; i <= dE_dvars.size(); i++){
232 vec_temp.resize(dE_dvars.size(), 0);
248 if(n_la != pcs_d_l_vec.size()){
249 utility_exit_with_message(
"The number of lanthanides is inconsistent");
254 for (i = 1; i <= n_la; i++){
269 for (p = 1; p <= vec_temp.size(); p++){
278 for (j = 1; j <= n_pcs; j++){
283 PCS_calc = A_all[idx][1]*Xxx + A_all[idx][2]*Xxy + A_all[idx][3]*Xxz + A_all[idx][4]*Xyy + A_all[idx][5]*Xyz;
284 PCS_exp = cstyle_b[j];
288 square_sum += deviation * deviation;
299 common3 = deviation/r5;
301 vec_temp[1] += (x*common2 - 2*( x*Xxx + y*Xxy + z*Xxz)) * common3;
302 vec_temp[2] += (y*common2 - 2*( x*Xxy + y*Xyy + z*Xyz)) * common3;
303 vec_temp[3] += (z*common2 - 2*(-z*Xxx + x*Xxz - z*Xyy + y*Xyz)) * common3;
306 core::Real one_over_RMSD(1.0/sqrt(square_sum));
309 dE_dvars[1] += common_temp * vec_temp[1];
310 dE_dvars[2] += common_temp * vec_temp[2];
311 dE_dvars[3] += common_temp * vec_temp[3];