@@ -112,8 +112,10 @@ typedef struct qmckl_jastrow_champ_single_struct{
112
112
double * restrict een_rescaled_single_n_gl;
113
113
uint64_t een_rescaled_single_n_gl_date;
114
114
double* delta_p_gl;
115
+ uint64_t delta_p_gl_maxsize;
115
116
uint64_t delta_p_gl_date;
116
117
double* delta_een_gl;
118
+ uint64_t delta_een_gl_maxsize;
117
119
uint64_t delta_een_gl_date;
118
120
double* delta_een_g;
119
121
uint64_t delta_een_g_date;
@@ -3156,7 +3158,11 @@ qmckl_exit_code qmckl_provide_jastrow_champ_delta_p_gl(qmckl_context context)
3156
3158
/* Compute if necessary */
3157
3159
if (ctx->single_point.date > ctx->single_point.delta_p_gl_date) {
3158
3160
3159
- if (ctx->electron.walker.num > ctx->electron.walker_old.num) {
3161
+ qmckl_memory_info_struct mem_info = qmckl_memory_info_struct_zero;
3162
+ mem_info.size = 4 * ctx->electron.walker.num * ctx->jastrow_champ.cord_num *
3163
+ (ctx->jastrow_champ.cord_num + 1) * ctx->nucleus.num * ctx->electron.num * sizeof(double);
3164
+
3165
+ if (mem_info.size > ctx->single_point.delta_p_gl_maxsize) {
3160
3166
if (ctx->single_point.delta_p_gl != NULL) {
3161
3167
rc = qmckl_free(context, ctx->single_point.delta_p_gl);
3162
3168
if (rc != QMCKL_SUCCESS) {
@@ -3171,10 +3177,8 @@ qmckl_exit_code qmckl_provide_jastrow_champ_delta_p_gl(qmckl_context context)
3171
3177
/* Allocate array */
3172
3178
if (ctx->single_point.delta_p_gl == NULL) {
3173
3179
3174
- qmckl_memory_info_struct mem_info = qmckl_memory_info_struct_zero;
3175
- mem_info.size = 4 * ctx->electron.walker.num * ctx->jastrow_champ.cord_num *
3176
- (ctx->jastrow_champ.cord_num + 1) * ctx->nucleus.num * ctx->electron.num * sizeof(double);
3177
3180
double* delta_p_gl = (double*) qmckl_malloc(context, mem_info);
3181
+ ctx->single_point.delta_p_gl_maxsize = mem_info.size;
3178
3182
3179
3183
if (delta_p_gl == NULL) {
3180
3184
return qmckl_failwith( context,
@@ -3551,7 +3555,10 @@ qmckl_exit_code qmckl_provide_jastrow_champ_single_een_gl(qmckl_context context)
3551
3555
/* Compute if necessary */
3552
3556
if (ctx->single_point.date > ctx->single_point.delta_een_gl_date) {
3553
3557
3554
- if (ctx->electron.walker.num > ctx->electron.walker_old.num) {
3558
+ qmckl_memory_info_struct mem_info = qmckl_memory_info_struct_zero;
3559
+ mem_info.size = 4 * ctx->electron.num * ctx->electron.walker.num * sizeof(double);
3560
+
3561
+ if (mem_info.size > ctx->single_point.delta_een_gl_maxsize) {
3555
3562
if (ctx->single_point.delta_een_gl != NULL) {
3556
3563
rc = qmckl_free(context, ctx->single_point.delta_een_gl);
3557
3564
if (rc != QMCKL_SUCCESS) {
@@ -3566,9 +3573,8 @@ qmckl_exit_code qmckl_provide_jastrow_champ_single_een_gl(qmckl_context context)
3566
3573
/* Allocate array */
3567
3574
if (ctx->single_point.delta_een_gl == NULL) {
3568
3575
3569
- qmckl_memory_info_struct mem_info = qmckl_memory_info_struct_zero;
3570
- mem_info.size = 4 * ctx->electron.num * ctx->electron.walker.num * sizeof(double);
3571
3576
double* delta_een_gl = (double*) qmckl_malloc(context, mem_info);
3577
+ ctx->single_point.delta_een_gl_maxsize = mem_info.size;
3572
3578
3573
3579
if (delta_een_gl == NULL) {
3574
3580
return qmckl_failwith( context,
0 commit comments