@@ -171,7 +171,6 @@ def fun(seed, output):
171
171
for p in processes :
172
172
p .join ()
173
173
process_results = [output .get () for p in processes ]
174
- print (process_results )
175
174
return np .mean (process_results )
176
175
return serial_fun (burned_in_config , ** kwargs )
177
176
@@ -310,7 +309,15 @@ def beta_A_isometric_monte_carlo_serial(self, v, init_config,
310
309
numpy.ndarray: The relative nondimensional Helmholtz free energy.
311
310
312
311
"""
313
- pass
312
+ exp_neg_beta_A = 0
313
+ config = init_config
314
+ for counter in range (1 , 1 + num_samples ):
315
+ exp_neg_beta_A_next = np .exp (
316
+ self .beta_U (1 , config ) - self .beta_U (v , config )
317
+ )
318
+ exp_neg_beta_A += (exp_neg_beta_A_next - exp_neg_beta_A )/ counter
319
+ config = self .mh_next_config (config , ** kwargs )
320
+ return np .log (1 / exp_neg_beta_A )
314
321
315
322
def beta_A_isometric_monte_carlo (self , v , ** kwargs ):
316
323
r"""The relative nondimensional Helmholtz free energy
@@ -323,7 +330,7 @@ def beta_A_isometric_monte_carlo(self, v, **kwargs):
323
330
\beta\Delta A(v) =
324
331
-\ln\left\langle e^{-\beta\Delta U}\right\rangle_{v=1},
325
332
326
- where :math:`\Delta U\equiv U(v,s)- U(1,s)`.
333
+ where :math:`\Delta U \equiv U(v,s) - U(1,s)`.
327
334
328
335
Args:
329
336
v (array_like): The nondimensional end separation.
@@ -337,7 +344,7 @@ def beta_A_isometric_monte_carlo(self, v, **kwargs):
337
344
v = self .np_array (v )
338
345
beta_A = np .zeros (v .shape )
339
346
for i , v_i in enumerate (v ):
340
- self .beta_e = lambda config : self .beta_U (v_i , config )
347
+ self .beta_e = lambda config : self .beta_U (1 , config )
341
348
342
349
def serial_fun (init_config , ** kwargs ):
343
350
return self .beta_A_isometric_monte_carlo_serial (
@@ -380,7 +387,7 @@ def beta_G_isotensional_monte_carlo(self, p, **kwargs):
380
387
\beta\Delta G(v) =
381
388
-\ln\left\langle e^{-\beta\Delta\Pi}\right\rangle_{p=0},
382
389
383
- where :math:`\Delta\Pi\equiv\Pi(p,s)- \Pi(0,s)`.
390
+ where :math:`\Delta\Pi \equiv \Pi(p,s) - \Pi(0,s)`.
384
391
385
392
Args:
386
393
p (array_like): The nondimensional end force.
@@ -392,16 +399,16 @@ def beta_G_isotensional_monte_carlo(self, p, **kwargs):
392
399
393
400
"""
394
401
p = self .np_array (p )
395
- beta_G_isotensional = np .zeros (p .shape )
402
+ beta_G = np .zeros (p .shape )
396
403
for i , p_i in enumerate (p ):
397
404
self .beta_e = lambda vs : self .beta_Pi (p_i , vs [0 ], vs [1 :])
398
405
v_guess , s_guess = self .minimize_beta_Pi (p_i )[1 :]
399
- beta_G_isotensional [i ] = self .parallel_calculation (
406
+ beta_G [i ] = self .parallel_calculation (
400
407
self .beta_G_isotensional_monte_carlo_serial ,
401
408
np .concatenate ((v_guess , s_guess [:, 0 ])),
402
409
** kwargs
403
410
)
404
- return beta_G_isotensional
411
+ return beta_G
405
412
406
413
def k_isometric_monte_carlo_serial (self , v , init_config ,
407
414
num_samples = 1000000 , ** kwargs ):
@@ -446,7 +453,7 @@ def k_isometric_monte_carlo(self, v, **kwargs):
446
453
447
454
"""
448
455
v = self .np_array (v )
449
- k_isometric = np .zeros (v .shape )
456
+ k = np .zeros (v .shape )
450
457
for i , v_i in enumerate (v ):
451
458
self .beta_e = lambda config : self .beta_U (v_i , config )
452
459
@@ -455,12 +462,12 @@ def serial_fun(init_config, **kwargs):
455
462
v_i , init_config , ** kwargs
456
463
)
457
464
458
- k_isometric [i ] = self .parallel_calculation (
465
+ k [i ] = self .parallel_calculation (
459
466
serial_fun ,
460
467
self .minimize_beta_U (v_i )[2 ][:, 0 ],
461
468
** kwargs
462
469
)
463
- return k_isometric
470
+ return k
464
471
465
472
def k_isotensional_monte_carlo_serial (self , init_config ,
466
473
num_samples = 1000000 , ** kwargs ):
@@ -504,13 +511,13 @@ def k_isotensional_monte_carlo(self, p, **kwargs):
504
511
505
512
"""
506
513
p = self .np_array (p )
507
- k_isotensional = np .zeros (p .shape )
514
+ k = np .zeros (p .shape )
508
515
for i , p_i in enumerate (p ):
509
516
self .beta_e = lambda vs : self .beta_Pi (p_i , vs [0 ], vs [1 :])
510
517
v_guess , s_guess = self .minimize_beta_Pi (p_i )[1 :]
511
- k_isotensional [i ] = self .parallel_calculation (
518
+ k [i ] = self .parallel_calculation (
512
519
self .k_isotensional_monte_carlo_serial ,
513
520
np .concatenate ((v_guess , s_guess [:, 0 ])),
514
521
** kwargs
515
522
)
516
- return k_isotensional
523
+ return k
0 commit comments