mailr5622 - /1.3/maths_fns/ri.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on April 13, 2008 - 16:17:
Author: bugman
Date: Sun Apr 13 16:17:09 2008
New Revision: 5622

URL: http://svn.gna.org/viewcvs/relax?rev=5622&view=rev
Log:
Bug fix for optimisation when order parameters of exactly zero are 
encountered.

The steady-state NOE value, gradient, and Hessian is properly calculated when 
an order parameter of
0.0 is encountered.  The 0.0/0.0 is avoided and instead the value, gradient, 
and Hessian components
of 1.0, 0.0, and 0.0 respectively are set.


Modified:
    1.3/maths_fns/ri.py

Modified: 1.3/maths_fns/ri.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/maths_fns/ri.py?rev=5622&r1=5621&r2=5622&view=diff
==============================================================================
--- 1.3/maths_fns/ri.py (original)
+++ 1.3/maths_fns/ri.py Sun Apr 13 16:17:09 2008
@@ -39,7 +39,9 @@
     data.r1[i] = get_r1[i](data, i, frq_num, params)
 
     # Calculate the NOE.
-    if data.r1[i] == 0.0:
+    if data.r1[i] == 0.0 and data.ri_prime[i] == 0.0:
+        data.ri[i] = 1.0
+    elif data.r1[i] == 0.0:
         data.ri[i] = 1e99
     else:
         data.ri[i] = 1.0 + data.g_ratio*(data.ri_prime[i] / data.r1[i])
@@ -53,7 +55,9 @@
 
     # Calculate the NOE derivative.
     data.dr1[j, i] = get_dr1[i](data, i, frq_num, params, j)
-    if data.r1[i] == 0.0:
+    if data.r1[i] == 0.0 and data.ri_prime[i] == 0.0:
+        data.dri[j, i] = 0.0
+    elif data.r1[i] == 0.0:
         data.dri[j, i] = 1e99
     else:
         data.dri[j, i] = data.g_ratio * (1.0 / data.r1[i]**2) * (data.r1[i] 
* data.dri_prime[j, i] - data.ri_prime[i] * data.dr1[j, i])
@@ -67,7 +71,9 @@
 
     # Calculate the NOE second derivative.
     data.d2r1[j, k, i] = get_d2r1[i](data, i, frq_num, params, j, k)
-    if data.r1[i] == 0.0:
+    if data.r1[i] == 0.0 and data.ri_prime[i] == 0.0:
+        data.d2ri[j, k, i] = 0.0
+    elif data.r1[i] == 0.0:
         data.d2ri[j, k, i] = 1e99
     else:
         a = data.ri_prime[i] * (2.0 * data.dr1[j, i] * data.dr1[k, i] - 
data.r1[i] * data.d2r1[j, k, i])




Related Messages


Powered by MHonArc, Updated Sun Apr 13 16:20:17 2008