mirror of
https://github.com/TREX-CoE/qmckl.git
synced 2024-12-22 20:36:01 +01:00
Added size_max to elec_coord
This commit is contained in:
parent
ba0c93d015
commit
91946f3ec4
@ -3312,7 +3312,7 @@ print ( "[7][4][26] : %e"% lf(a,x,y))
|
|||||||
|
|
||||||
assert(qmckl_electron_provided(context));
|
assert(qmckl_electron_provided(context));
|
||||||
|
|
||||||
rc = qmckl_set_electron_coord (context, 'N', elec_coord);
|
rc = qmckl_set_electron_coord (context, 'N', elec_coord, walk_num*3*elec_num);
|
||||||
assert(rc == QMCKL_SUCCESS);
|
assert(rc == QMCKL_SUCCESS);
|
||||||
|
|
||||||
|
|
||||||
@ -3726,7 +3726,7 @@ print ( "[1][4][26] : %25.15e"% lf(a,x,y))
|
|||||||
|
|
||||||
assert(qmckl_electron_provided(context));
|
assert(qmckl_electron_provided(context));
|
||||||
|
|
||||||
rc = qmckl_set_electron_coord (context, 'N', elec_coord);
|
rc = qmckl_set_electron_coord (context, 'N', elec_coord, walk_num*3*elec_num);
|
||||||
assert(rc == QMCKL_SUCCESS);
|
assert(rc == QMCKL_SUCCESS);
|
||||||
|
|
||||||
|
|
||||||
@ -4752,7 +4752,7 @@ assert (rc == QMCKL_SUCCESS);
|
|||||||
|
|
||||||
assert(qmckl_electron_provided(context));
|
assert(qmckl_electron_provided(context));
|
||||||
|
|
||||||
rc = qmckl_set_electron_coord (context, 'N', elec_coord);
|
rc = qmckl_set_electron_coord (context, 'N', elec_coord, walk_num*3*elec_num);
|
||||||
assert(rc == QMCKL_SUCCESS);
|
assert(rc == QMCKL_SUCCESS);
|
||||||
|
|
||||||
|
|
||||||
|
@ -1154,7 +1154,7 @@ assert (rc == QMCKL_SUCCESS);
|
|||||||
|
|
||||||
assert(qmckl_electron_provided(context));
|
assert(qmckl_electron_provided(context));
|
||||||
|
|
||||||
rc = qmckl_set_electron_coord (context, 'N', elec_coord);
|
rc = qmckl_set_electron_coord (context, 'N', elec_coord, walk_num*elec_num*3);
|
||||||
assert(rc == QMCKL_SUCCESS);
|
assert(rc == QMCKL_SUCCESS);
|
||||||
|
|
||||||
rc = qmckl_set_nucleus_num (context, nucl_num);
|
rc = qmckl_set_nucleus_num (context, nucl_num);
|
||||||
|
@ -479,7 +479,7 @@ qmckl_get_electron_coord (const qmckl_context context, const char transp, double
|
|||||||
#+begin_src c :comments org :tangle (eval h_func)
|
#+begin_src c :comments org :tangle (eval h_func)
|
||||||
qmckl_exit_code qmckl_set_electron_num (qmckl_context context, const int64_t up_num, const int64_t down_num);
|
qmckl_exit_code qmckl_set_electron_num (qmckl_context context, const int64_t up_num, const int64_t down_num);
|
||||||
qmckl_exit_code qmckl_set_electron_walk_num (qmckl_context context, const int64_t walk_num);
|
qmckl_exit_code qmckl_set_electron_walk_num (qmckl_context context, const int64_t walk_num);
|
||||||
qmckl_exit_code qmckl_set_electron_coord (qmckl_context context, const char transp, const double* coord);
|
qmckl_exit_code qmckl_set_electron_coord (qmckl_context context, const char transp, const double* coord, const int64_t size_max);
|
||||||
|
|
||||||
qmckl_exit_code qmckl_set_electron_rescale_factor_ee (qmckl_context context, const double kappa_ee);
|
qmckl_exit_code qmckl_set_electron_rescale_factor_ee (qmckl_context context, const double kappa_ee);
|
||||||
qmckl_exit_code qmckl_set_electron_rescale_factor_en (qmckl_context context, const double kappa_en);
|
qmckl_exit_code qmckl_set_electron_rescale_factor_en (qmckl_context context, const double kappa_en);
|
||||||
@ -664,7 +664,11 @@ end interface
|
|||||||
|
|
||||||
#+begin_src c :comments org :tangle (eval c) :noweb yes :exports none
|
#+begin_src c :comments org :tangle (eval c) :noweb yes :exports none
|
||||||
qmckl_exit_code
|
qmckl_exit_code
|
||||||
qmckl_set_electron_coord(qmckl_context context, const char transp, const double* coord) {
|
qmckl_set_electron_coord(qmckl_context context,
|
||||||
|
const char transp,
|
||||||
|
const double* coord,
|
||||||
|
const int64_t size_max)
|
||||||
|
{
|
||||||
|
|
||||||
<<pre2>>
|
<<pre2>>
|
||||||
|
|
||||||
@ -705,6 +709,13 @@ qmckl_set_electron_coord(qmckl_context context, const char transp, const double*
|
|||||||
"walk_num is not set");
|
"walk_num is not set");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (size_max < walk_num*3*elec_num) {
|
||||||
|
return qmckl_failwith( context,
|
||||||
|
QMCKL_INVALID_ARG_4,
|
||||||
|
"qmckl_set_electron_coord",
|
||||||
|
"destination array is too small");
|
||||||
|
}
|
||||||
|
|
||||||
/* If num and walk_num are set, the arrays should be allocated */
|
/* If num and walk_num are set, the arrays should be allocated */
|
||||||
assert (ctx->electron.coord_old != NULL);
|
assert (ctx->electron.coord_old != NULL);
|
||||||
assert (ctx->electron.coord_new != NULL);
|
assert (ctx->electron.coord_new != NULL);
|
||||||
@ -742,7 +753,7 @@ qmckl_set_electron_coord(qmckl_context context, const char transp, const double*
|
|||||||
|
|
||||||
#+begin_src f90 :comments org :tangle (eval fh_func) :noweb yes
|
#+begin_src f90 :comments org :tangle (eval fh_func) :noweb yes
|
||||||
interface
|
interface
|
||||||
integer(c_int32_t) function qmckl_set_electron_coord(context, transp, coord) bind(C)
|
integer(c_int32_t) function qmckl_set_electron_coord(context, transp, coord, size_max) bind(C)
|
||||||
use, intrinsic :: iso_c_binding
|
use, intrinsic :: iso_c_binding
|
||||||
import
|
import
|
||||||
implicit none
|
implicit none
|
||||||
@ -750,6 +761,7 @@ interface
|
|||||||
integer (c_int64_t) , intent(in) , value :: context
|
integer (c_int64_t) , intent(in) , value :: context
|
||||||
character , intent(in) , value :: transp
|
character , intent(in) , value :: transp
|
||||||
double precision , intent(in) :: coord(*)
|
double precision , intent(in) :: coord(*)
|
||||||
|
integer (c_int64_t) , intent(in) , value :: size_max
|
||||||
end function
|
end function
|
||||||
end interface
|
end interface
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -848,7 +860,7 @@ assert(w == walk_num);
|
|||||||
|
|
||||||
assert(qmckl_electron_provided(context));
|
assert(qmckl_electron_provided(context));
|
||||||
|
|
||||||
rc = qmckl_set_electron_coord (context, 'N', elec_coord);
|
rc = qmckl_set_electron_coord (context, 'N', elec_coord, walk_num*elec_num*3);
|
||||||
assert(rc == QMCKL_SUCCESS);
|
assert(rc == QMCKL_SUCCESS);
|
||||||
|
|
||||||
double elec_coord2[walk_num*3*elec_num];
|
double elec_coord2[walk_num*3*elec_num];
|
||||||
|
@ -103,26 +103,26 @@ int main() {
|
|||||||
|
|
||||||
computed data:
|
computed data:
|
||||||
|
|
||||||
| Variable | Type | In/Out | Description |
|
| Variable | Type | In/Out | Description |
|
||||||
|------------+-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------|
|
|-------------------------------+-------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------|
|
||||||
| ~dim_cord_vect~ | ~int64_t~ | Number of unique C coefficients | |
|
| ~dim_cord_vect~ | ~int64_t~ | Number of unique C coefficients | |
|
||||||
| ~dim_cord_vect_date~ | ~uint64_t~ | Number of unique C coefficients | |
|
| ~dim_cord_vect_date~ | ~uint64_t~ | Number of unique C coefficients | |
|
||||||
| ~asymp_jasb~ | ~double[2]~ | Asymptotic component | |
|
| ~asymp_jasb~ | ~double[2]~ | Asymptotic component | |
|
||||||
| ~asymp_jasb_date~ | ~uint64_t~ | Asymptotic component | |
|
| ~asymp_jasb_date~ | ~uint64_t~ | Asymptotic component | |
|
||||||
| ~cord_vect_full~ | ~double[dim_cord_vect][nucl_num]~ | vector of non-zero coefficients | |
|
| ~cord_vect_full~ | ~double[dim_cord_vect][nucl_num]~ | vector of non-zero coefficients | |
|
||||||
| ~cord_vect_full_date~ | ~uint64_t~ | Keep track of changes here | |
|
| ~cord_vect_full_date~ | ~uint64_t~ | Keep track of changes here | |
|
||||||
| ~lkpm_combined_index~ | ~int64_t[4][dim_cord_vect]~ | Transform l,k,p, and m into consecutive indices | |
|
| ~lkpm_combined_index~ | ~int64_t[4][dim_cord_vect]~ | Transform l,k,p, and m into consecutive indices | |
|
||||||
| ~lkpm_combined_index_date~ | ~uint64_t~ | Transform l,k,p, and m into consecutive indices | |
|
| ~lkpm_combined_index_date~ | ~uint64_t~ | Transform l,k,p, and m into consecutive indices | |
|
||||||
| ~tmp_c~ | ~double[elec_num][nucl_num][ncord + 1][ncord][walk_num]~ | vector of non-zero coefficients | |
|
| ~tmp_c~ | ~double[elec_num][nucl_num][ncord + 1][ncord][walk_num]~ | vector of non-zero coefficients | |
|
||||||
| ~dtmp_c~ | ~double[elec_num][4][nucl_num][ncord + 1][ncord][walk_num]~ | vector of non-zero coefficients | |
|
| ~dtmp_c~ | ~double[elec_num][4][nucl_num][ncord + 1][ncord][walk_num]~ | vector of non-zero coefficients | |
|
||||||
| ~een_rescaled_e~ | ~double[walk_num][elec_num][elec_num][0:cord_num]~ | The electron-electron rescaled distances raised to the powers defined by cord | |
|
| ~een_rescaled_e~ | ~double[walk_num][elec_num][elec_num][0:cord_num]~ | The electron-electron rescaled distances raised to the powers defined by cord | |
|
||||||
| ~een_rescaled_e_date~ | ~uint64_t~ | Keep track of the date of creation | |
|
| ~een_rescaled_e_date~ | ~uint64_t~ | Keep track of the date of creation | |
|
||||||
| ~een_rescaled_n~ | ~double[walk_num][elec_num][nucl_num][0:cord_num]~ | The electron-electron rescaled distances raised to the powers defined by cord | |
|
| ~een_rescaled_n~ | ~double[walk_num][elec_num][nucl_num][0:cord_num]~ | The electron-electron rescaled distances raised to the powers defined by cord | |
|
||||||
| ~een_rescaled_n_date~ | ~uint64_t~ | Keep track of the date of creation | |
|
| ~een_rescaled_n_date~ | ~uint64_t~ | Keep track of the date of creation | |
|
||||||
| ~een_rescaled_e_deriv_e~ | ~double[walk_num][elec_num][4][elec_num][0:cord_num]~ | The electron-electron rescaled distances raised to the powers defined by cord derivatives wrt electrons | |
|
| ~een_rescaled_e_deriv_e~ | ~double[walk_num][elec_num][4][elec_num][0:cord_num]~ | The electron-electron rescaled distances raised to the powers defined by cord derivatives wrt electrons | |
|
||||||
| ~een_rescaled_e_deriv_e_date~ | ~uint64_t~ | Keep track of the date of creation | |
|
| ~een_rescaled_e_deriv_e_date~ | ~uint64_t~ | Keep track of the date of creation | |
|
||||||
| ~een_rescaled_n_deriv_e~ | ~double[walk_num][elec_num][4][nucl_num][0:cord_num]~ | The electron-electron rescaled distances raised to the powers defined by cord derivatives wrt electrons | |
|
| ~een_rescaled_n_deriv_e~ | ~double[walk_num][elec_num][4][nucl_num][0:cord_num]~ | The electron-electron rescaled distances raised to the powers defined by cord derivatives wrt electrons | |
|
||||||
| ~een_rescaled_n_deriv_e_date~ | ~uint64_t~ | Keep track of the date of creation | |
|
| ~een_rescaled_n_deriv_e_date~ | ~uint64_t~ | Keep track of the date of creation | |
|
||||||
|
|
||||||
For H2O we have the following data:
|
For H2O we have the following data:
|
||||||
|
|
||||||
@ -1088,7 +1088,7 @@ assert(w == walk_num);
|
|||||||
|
|
||||||
assert(qmckl_electron_provided(context));
|
assert(qmckl_electron_provided(context));
|
||||||
|
|
||||||
rc = qmckl_set_electron_coord (context, 'N', elec_coord);
|
rc = qmckl_set_electron_coord (context, 'N', elec_coord, walk_num*3*elec_num);
|
||||||
assert(rc == QMCKL_SUCCESS);
|
assert(rc == QMCKL_SUCCESS);
|
||||||
|
|
||||||
double elec_coord2[walk_num*3*elec_num];
|
double elec_coord2[walk_num*3*elec_num];
|
||||||
|
@ -584,7 +584,7 @@ assert (rc == QMCKL_SUCCESS);
|
|||||||
|
|
||||||
assert(qmckl_electron_provided(context));
|
assert(qmckl_electron_provided(context));
|
||||||
|
|
||||||
rc = qmckl_set_electron_coord (context, 'N', elec_coord);
|
rc = qmckl_set_electron_coord (context, 'N', elec_coord, walk_num*elec_num*3);
|
||||||
assert(rc == QMCKL_SUCCESS);
|
assert(rc == QMCKL_SUCCESS);
|
||||||
|
|
||||||
rc = qmckl_set_nucleus_num (context, nucl_num);
|
rc = qmckl_set_nucleus_num (context, nucl_num);
|
||||||
|
@ -714,7 +714,7 @@ assert (rc == QMCKL_SUCCESS);
|
|||||||
|
|
||||||
assert(qmckl_electron_provided(context));
|
assert(qmckl_electron_provided(context));
|
||||||
|
|
||||||
rc = qmckl_set_electron_coord (context, 'N', elec_coord);
|
rc = qmckl_set_electron_coord (context, 'N', elec_coord, walk_num*elec_num*3);
|
||||||
assert(rc == QMCKL_SUCCESS);
|
assert(rc == QMCKL_SUCCESS);
|
||||||
|
|
||||||
rc = qmckl_set_nucleus_num (context, nucl_num);
|
rc = qmckl_set_nucleus_num (context, nucl_num);
|
||||||
|
Loading…
Reference in New Issue
Block a user