@@ -341,7 +341,9 @@ def process_batch(args):
341
341
* **rpi_sum_params["nstates"]** ( int ): The number of electronic states.
342
342
343
343
* **rpi_sum_params["path_to_save_patch"]** ( string ): The path of the precomputed patch dynamics
344
-
344
+
345
+ * **rpi_sum_params["prefix_patch"]** ( string ): The prefix of patch dynamics directories
346
+
345
347
* **rpi_sum_params["prefix"]** ( string ): The prefix for the population dynamics output
346
348
347
349
Return:
@@ -351,13 +353,15 @@ def process_batch(args):
351
353
ibatch , rpi_sum_params = args
352
354
353
355
critical_params = ["path_to_save_patch" ]
354
- default_params = {"nprocs" : 1 , "nsteps" : 1 , "dt" : 1.0 * units .fs2au , "istate" : 0 , "nbatches" : 1 , "npatches" : 1 , "nstates" : 2 , "prefix" : 'out' }
356
+ default_params = {"nprocs" : 1 , "nsteps" : 1 , "dt" : 1.0 * units .fs2au , "istate" : 0 , "nbatches" : 1 , "npatches" : 1 , "nstates" : 2 ,
357
+ "prefix_patch" : 'out_' , "prefix" : 'POP_NPATCH_' }
355
358
356
359
comn .check_input (rpi_sum_params , default_params , critical_params )
357
360
358
361
nsteps , dt , istate = rpi_sum_params ["nsteps" ], rpi_sum_params ["dt" ], rpi_sum_params ["istate" ]
359
- npatches , nstates = rpi_sum_params ["npatches" ], rpi_sum_params ["nstates" ]
360
- path_to_save_patch = rpi_sum_params ["path_to_save_patch" ]
362
+ nbatches , npatches , nstates = rpi_sum_params ["nbatches" ], rpi_sum_params ["npatches" ], rpi_sum_params ["nstates" ]
363
+ path_to_save_patch , prefix_patch = rpi_sum_params ["path_to_save_patch" ], rpi_sum_params ["prefix_patch" ]
364
+ prefix = rpi_sum_params ["prefix" ]
361
365
362
366
nstep_patch = int (nsteps / npatches )
363
367
pops = np .zeros ((npatches * nstep_patch + 1 , nstates ))
@@ -372,7 +376,8 @@ def process_batch(args):
372
376
# Compute the transition probability from a patch dynamics
373
377
T = np .zeros ((nstep_patch , nstates , nstates )) # (timestep in a patch, init, dest)
374
378
for ist in range (nstates ):
375
- with h5py .File (F"{ path_to_save_patch } /job_{ ibatch } _{ ipatch } _{ ist } /out/mem_data.hdf" , 'r' ) as f :
379
+ with h5py .File (F"{ path_to_save_patch } /{ prefix_patch } " +
380
+ F"n{ nbatches } _ibatch{ ibatch } _n{ npatches } _ipatch{ ipatch } _n{ nstates } _istate{ ist } /mem_data.hdf" , 'r' ) as f :
376
381
pop_adi_data = np .array (f ["se_pop_adi/data" ])
377
382
T [:, ist , :] = pop_adi_data [1 :,:]
378
383
T [:, ist , ist ] = 0.0 # zero diagonal explicitly
@@ -389,11 +394,11 @@ def process_batch(args):
389
394
# Per-batch output
390
395
time = np .array ([x for x in range (npatches * nstep_patch + 1 )]) * dt
391
396
print (F"Print the population from ibatch" )
392
- print_pop (rpi_params [ " prefix" ] + F"_ibatch{ ibatch } .dat" , time , pops )
397
+ print_pop (prefix + F"{ npatches } _ibatch{ ibatch } .dat" , time , pops )
393
398
394
399
return pops
395
400
396
- def run_sum_rpi (rpi_sum_params ):
401
+ def run_sum (rpi_sum_params ):
397
402
"""
398
403
This function conducts the RPI patch summation to yield the population dynamics in the whole time domain.
399
404
@@ -418,21 +423,25 @@ def run_sum_rpi(rpi_sum_params):
418
423
* **rpi_sum_params["nstates"]** ( int ): The number of electronic states.
419
424
420
425
* **rpi_sum_params["path_to_save_patch"]** ( string ): The path of the precomputed patch dynamics
426
+
427
+ * **rpi_sum_params["prefix_patch"]** ( string ): The prefix of patch dynamics directories
421
428
422
429
* **rpi_sum_params["prefix"]** ( string ): The prefix for the population dynamics output
423
430
424
431
Return:
425
432
None: but performs the action
426
433
"""
427
434
critical_params = ["path_to_save_patch" ]
428
- default_params = {"nprocs" : 1 , "nsteps" : 1 , "dt" : 1.0 * units .fs2au , "istate" : 0 , "nbatches" : 1 , "npatches" : 1 , "nstates" : 2 , "prefix" : 'out' }
435
+ default_params = {"nprocs" : 1 , "nsteps" : 1 , "dt" : 1.0 * units .fs2au , "istate" : 0 , "nbatches" : 1 , "npatches" : 1 , "nstates" : 2 ,
436
+ "prefix_patch" : 'out_' , "prefix" : 'POP_NPATCH_' }
429
437
430
438
comn .check_input (rpi_sum_params , default_params , critical_params )
431
439
432
440
nprocs = rpi_sum_params ["nprocs" ]
433
441
434
442
nsteps , dt = rpi_sum_params ["nsteps" ], rpi_sum_params ["dt" ]
435
443
nbatches , npatches , nstates = rpi_sum_params ["nbatches" ], rpi_sum_params ["npatches" ], rpi_sum_params ["nstates" ]
444
+ prefix = rpi_sum_params ["prefix" ]
436
445
437
446
nstep_patch = int (nsteps / npatches )
438
447
time = np .array ([x for x in range (npatches * nstep_patch + 1 )]) * dt
@@ -447,10 +456,10 @@ def run_sum_rpi(rpi_sum_params):
447
456
pops_avg /= nbatches
448
457
449
458
print ("Print the final population from all batches" )
450
- print_pop (rpi_sum_params [ " prefix" ] + " _all.dat" , time , pops_avg )
459
+ print_pop (prefix + F" { npatches } _all.dat" , time , pops_avg )
451
460
452
461
453
- def run_sum_rpi_crude (rpi_sum_params ):
462
+ def run_sum_crude (rpi_sum_params ):
454
463
"""
455
464
This function conducts the RPI patch summation to yield the population dynamics in the whole time domain.
456
465
@@ -475,21 +484,25 @@ def run_sum_rpi_crude(rpi_sum_params):
475
484
* **rpi_sum_params["nstates"]** ( int ): The number of electronic states.
476
485
477
486
* **rpi_sum_params["path_to_save_patch"]** ( string ): The path of the precomputed patch dynamics
487
+
488
+ * **rpi_sum_params["prefix_patch"]** ( string ): The prefix of patch dynamics directories
478
489
479
490
* **rpi_sum_params["prefix"]** ( string ): The prefix for the population dynamics output
480
491
481
492
Return:
482
493
None: but performs the action
483
494
"""
484
495
critical_params = ["path_to_save_patch" ]
485
- default_params = {"nprocs" : 1 , "nsteps" : 1 , "dt" : 1.0 * units .fs2au , "istate" : 0 , "nbatches" : 1 , "npatches" : 1 , "nstates" : 2 , "prefix" : 'out' }
496
+ default_params = {"nprocs" : 1 , "nsteps" : 1 , "dt" : 1.0 * units .fs2au , "istate" : 0 , "nbatches" : 1 , "npatches" : 1 , "nstates" : 2 ,
497
+ "prefix_patch" : 'out_' , "prefix" : 'POP_NPATCH_' }
486
498
487
499
comn .check_input (rpi_sum_params , default_params , critical_params )
488
500
489
501
nsteps , dt , istate = rpi_sum_params ["nsteps" ], rpi_sum_params ["dt" ], rpi_sum_params ["istate" ]
490
502
491
503
nbatches , npatches , nstates = rpi_sum_params ["nbatches" ], rpi_sum_params ["npatches" ], rpi_sum_params ["nstates" ]
492
- path_to_save_patch = rpi_sum_params ["path_to_save_patch" ]
504
+ path_to_save_patch , prefix_patch = rpi_sum_params ["path_to_save_patch" ], rpi_sum_params ["prefix_patch" ]
505
+ prefix = rpi_sum_params ["prefix" ]
493
506
494
507
nstep_patch = int (nsteps / npatches )
495
508
@@ -513,7 +526,8 @@ def run_sum_rpi_crude(rpi_sum_params):
513
526
pop_patch .fill (0.0 )
514
527
T .fill (0.0 )
515
528
for ist in range (nstates ):
516
- with h5py .File (F"{ path_to_save_patch } /job_{ ibatch } _{ ipatch } _{ ist } /out/mem_data.hdf" , 'r' ) as f :
529
+ with h5py .File (F"{ path_to_save_patch } /{ prefix_patch } " +
530
+ F"n{ nbatches } _ibatch{ ibatch } _n{ npatches } _ipatch{ ipatch } _n{ nstates } _istate{ ist } /mem_data.hdf" , 'r' ) as f :
517
531
pop_adi_data = np .array (f ["se_pop_adi/data" ])
518
532
519
533
for istep in range (nstep_patch ):
@@ -539,10 +553,10 @@ def run_sum_rpi_crude(rpi_sum_params):
539
553
pops_avg += pops
540
554
541
555
print (F"Print the population from ibatch, ibatch = { ibatch } " )
542
- print_pop (rpi_sum_params [ " prefix" ] + F"_ibatch{ ibatch } .dat" , time , pops )
556
+ print_pop (prefix + F"{ npatches } _ibatch{ ibatch } .dat" , time , pops )
543
557
544
558
pops_avg /= nbatches
545
559
546
560
print ("Print the final population from all batches" )
547
- print_pop (rpi_sum_params [ " prefix" ] + " _all.dat" , time , pops_avg )
561
+ print_pop (prefix + F" { npatches } _all.dat" , time , pops_avg )
548
562
0 commit comments