Blob Blame History Raw
diff -up libxc-2.1.2/src/hyb_gga_xc_cam_b3lyp.c.orig libxc-2.1.2/src/hyb_gga_xc_cam_b3lyp.c
--- libxc-2.1.2/src/hyb_gga_xc_cam_b3lyp.c.orig	2015-02-19 14:35:44.000000000 +0100
+++ libxc-2.1.2/src/hyb_gga_xc_cam_b3lyp.c	2015-04-24 23:22:28.696184475 +0200
@@ -31,32 +31,38 @@ XC(hyb_gga_xc_cam_b3lyp_init)(XC(func_ty
   static int   funcs_id  [4] = {XC_GGA_X_B88, XC_GGA_X_ITYH, XC_LDA_C_VWN, XC_GGA_C_LYP};
   static FLOAT funcs_coef[4];
 
+  /* Need temp variables since cam_ parameters are initialized in mix_init */
+  static FLOAT omega, alpha, beta;
+  
   switch(p->info->number){
   case XC_HYB_GGA_XC_CAM_B3LYP:
     /* N.B. The notation used in Yanai et al uses a different
        convention for alpha and beta.  In libxc, alpha is the weight
        for HF exchange, which in Yanai et al is alpha+beta.
      */
-    p->cam_omega = 0.33;
-    p->cam_alpha = 0.65;
-    p->cam_beta  =-0.46;
+    omega = 0.33;
+    alpha = 0.65;
+    beta  =-0.46;
     break;
   case XC_HYB_GGA_XC_TUNED_CAM_B3LYP:
     /* The same note applies here. */
-    p->cam_omega = 0.150;
-    p->cam_alpha = 1.0000;
-    p->cam_beta  =-0.9201;
+    omega = 0.150;
+    alpha = 1.0000;
+    beta  =-0.9201;
     break;
   }
 
-  funcs_coef[0] = 1.0 - p->cam_alpha;
-  funcs_coef[1] = -p->cam_beta;
+  funcs_coef[0] = 1.0 - alpha;
+  funcs_coef[1] = -beta;
   funcs_coef[2] = 1.0 - ac;
   funcs_coef[3] = ac;
 
   XC(mix_init)(p, 4, funcs_id, funcs_coef);
+  XC(gga_x_ityh_set_params)(p->func_aux[1], XC_GGA_X_B88, omega);
 
-  XC(gga_x_ityh_set_params)(p->func_aux[1], XC_GGA_X_B88, p->cam_omega);
+  p->cam_omega = omega;
+  p->cam_alpha = alpha;
+  p->cam_beta  = beta;
 }
 
 const XC(func_info_type) XC(func_info_hyb_gga_xc_cam_b3lyp) = {
diff -up libxc-2.1.2/src/hyb_gga_xc_camy_blyp.c.orig libxc-2.1.2/src/hyb_gga_xc_camy_blyp.c
--- libxc-2.1.2/src/hyb_gga_xc_camy_blyp.c.orig	2015-02-19 14:35:44.000000000 +0100
+++ libxc-2.1.2/src/hyb_gga_xc_camy_blyp.c	2015-04-24 23:22:28.704184475 +0200
@@ -29,19 +29,28 @@ XC(hyb_gga_xc_camy_blyp_init)(XC(func_ty
   static int   funcs_id  [3] = {XC_GGA_X_B88, XC_GGA_X_SFAT, XC_GGA_C_LYP};
   static FLOAT funcs_coef[3];
 
-    p->cam_alpha = 0.20;
-    p->cam_beta  = 0.80;
-    p->cam_omega = 0.44;	/* we use omega for gamma here, 'cause
-				   both denote dampening parameters for
-				   range related interactions */
-
-  funcs_coef[0] = 1.0 - p->cam_alpha - p->cam_beta;
-  funcs_coef[1] = p->cam_beta; /* 1.0 - p->cam_alpha - p->cam_beta? */
+  /* N.B. The notation used in the original reference uses a different
+     convention for alpha and beta.  In libxc, alpha is the weight for
+     HF exchange, which in the original reference is alpha+beta.
+  */
+  FLOAT alpha, beta, omega;
+  
+  alpha = 1.00;
+  beta  =-0.80;
+  omega = 0.44;	/* we use omega for gamma here, 'cause
+		   both denote dampening parameters for
+	       	   range related interactions */
+  
+  funcs_coef[0] = 1.0 - alpha;
+  funcs_coef[1] =-beta;
   funcs_coef[2] = 1.0;
 
   XC(mix_init)(p, 3, funcs_id, funcs_coef);
-
   XC(gga_x_sfat_set_params)(p->func_aux[1], XC_GGA_X_B88, p->cam_omega);
+
+  p->cam_omega=omega;
+  p->cam_alpha=alpha;
+  p->cam_beta=beta;
 }
 
 const XC(func_info_type) XC(func_info_hyb_gga_xc_camy_blyp) = {
diff -up libxc-2.1.2/src/hyb_gga_xc_hse.c.orig libxc-2.1.2/src/hyb_gga_xc_hse.c
--- libxc-2.1.2/src/hyb_gga_xc_hse.c.orig	2015-02-19 14:35:44.000000000 +0100
+++ libxc-2.1.2/src/hyb_gga_xc_hse.c	2015-04-24 23:22:28.688184475 +0200
@@ -121,9 +121,6 @@ hyb_gga_xc_hjs_init(XC(func_type) *p)
   static int   funcs_id  [3] = {-1, -1, XC_GGA_C_PBE};
   static FLOAT funcs_coef[3] = {1.0, -0.25, 1.0};  
 
-  p->cam_omega = 0.11;
-  p->cam_beta  = 0.25;
-
   switch(p->info->number){
   case XC_HYB_GGA_XC_HJS_PBE:
     funcs_id[0] = funcs_id[1] = XC_GGA_X_HJS_PBE;
@@ -143,6 +140,8 @@ hyb_gga_xc_hjs_init(XC(func_type) *p)
   }
 
   XC(mix_init)(p, 3, funcs_id, funcs_coef);
+  p->cam_omega = 0.11;
+  p->cam_beta  = 0.25;
   XC(gga_x_hjs_set_params)(p->func_aux[1], p->cam_omega);
 }