\(\text{H}_2\text{CO} \text{ Model}\)
[1]:
import pyvcham
import numpy as np
import matplotlib.pyplot as plt
Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.
Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.
2026-02-03 21:18:27.417337: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: SSE4.1 SSE4.2, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2026-02-03 21:18:32,247 [INFO] root: Logging configuration successfully loaded.
[2]:
# Define displacement vector (Q values)
q = np.array([
-8.0, -7.0, -6.0, -5.0, -4.0, -3.0, -2.0, -1.5, -1.0, -0.5, 0.0,
0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0
])
# System definitions
nstates = 6 # Ground state + 5 core-excited states
nnormal_modes = 6 # For formaldehyde: 3N-6 vibrational modes
# Load ground state minimum from file (to be used as an energy shift)
gs_data = np.genfromtxt('formaldehyde_abinitio/gs_v1.dat')
gs_min = -gs_data.min()
# Load data for each normal mode and electronic state.
# For each mode, state 0 corresponds to the ground state and states 1..(nstates-1)
all_data = []
for mode in range(1, nnormal_modes + 1):
mode_data = []
for state in range(nstates):
if state == 0:
filename = f"formaldehyde_abinitio/gs_v{mode}.dat"
else:
filename = f"formaldehyde_abinitio/ce{state}_v{mode}.dat"
data = np.genfromtxt(filename)
# Convert the data from atomic units to eV and apply the ground state shift.
mode_data.append((gs_min + data) * pyvcham.constants.AU_TO_EV)
all_data.append(np.array(mode_data))
# Create a list of displacement vectors (one per normal mode)
all_q = [q for _ in range(nnormal_modes)]
[3]:
# Plot ab initio data for each normal mode.
for mode_idx in range(nnormal_modes):
plt.figure(figsize=(8, 5))
# Plot only excited states (i.e., states with index > 0)
for state_idx in range(1, nstates):
energies = np.array(all_data[mode_idx][state_idx])
plt.scatter(q, energies, s=10.0, label=f"State {state_idx}")
plt.xlabel(f"Q_{mode_idx}")
plt.ylabel("Energy [eV]")
plt.title(f"Normal Mode {mode_idx} Ab initio Data")
plt.legend(fontsize=8)
plt.grid(True)
plt.show()
[4]:
# Define vibrational frequencies (in eV)
vib_freq = np.array([0.3716, 0.3633, 0.2207, 0.1913, 0.158 , 0.1478])
# Create a VCSystem object using ab initio data
system = pyvcham.VCSystem(
vc_type="linear",
units="eV",
number_normal_modes=6, # 3N-6 vibrational modes
number_states=6, # Ground state + 5 core-excited states
coupling_with_gs=False, # Do not account for gs-core excitation couplings (far apart in energy)
symmetry_point_group="C2v",
symmetry_states=["A1", "B1", "B2", "A1", "B2", "A2"], # State symmetries
symmetry_modes=["B2", "A1", "A1", "A1", "B2", "B1"], # Mode symmetries
vib_freq=vib_freq, # Convert frequencies to eV
displacement_vector=all_q,
database_abinitio=all_data
)
2026-02-03 21:18:33,185 [INFO] pyvcham.vcham_system: Computed vertical energy shifts: [ 0. 286.13744955 288.26619766 290.20982616 291.78440159
291.94332534]
[5]:
# Specify the diabatic function type for each normal mode
mode_types = ["quartic", "antimorse", "morse", "quartic", "quartic", "quartic"]
# For each normal mode, replicate the chosen function for all electronic states
diabatic_functions_per_mode = [
[mode_type] * system.number_states for mode_type in mode_types
]
# Add the diabatic functions to the system
system.diab_funct = diabatic_functions_per_mode
[6]:
# Prepared initial guess for the diabatic functions
import pickle as pkl
initial_guess = pkl.load(open("initial_guess_gui.pkl", "rb"))
[7]:
# Loop over all normal modes and optimize the LVC Hamiltonian for each mode.
nepochs = 10000 # Number of training epochs for each mode
for mode in range(system.number_normal_modes):
# if system.diab_funct[mode][0] == "morse": # Usually, the Morse function needs more epochs
# nepochs = 10000
model = pyvcham.LVCHam(normal_mode=mode, VCSystem=system, nepochs=nepochs,funct_guess=initial_guess["parameters"][mode])
model.initialize_params(lambda_guess=0.3, kappa_guess=0.1)
model.initialize_loss_function()
model.optimize()
2026-02-03 21:18:33,289 [INFO] pyvcham.lvc:
----- Initializing LVC Hamiltonian Builder -----
2026-02-03 21:18:33,290 [INFO] pyvcham.lvc: Normal mode: 0
2026-02-03 21:18:33,307 [INFO] pyvcham.lvc: JT off-diagonal pairs: []
2026-02-03 21:18:33,308 [INFO] pyvcham.lvc: n_var_list (non-JT): [2, 2, 2, 2, 2, 2]
2026-02-03 21:18:33,310 [INFO] pyvcham.lvc: Total parameters to optimize: 15
2026-02-03 21:18:33,310 [INFO] pyvcham.lvc: Optimizing mode 0...
<unknown>:3: SyntaxWarning: invalid escape sequence '\c'
2026-02-03 21:18:34,488 [INFO] pyvcham.lvc: Step 0, Loss: 1.810424
2026-02-03 21:18:34,552 [INFO] pyvcham.lvc: Step 100, Loss: 0.138601
2026-02-03 21:18:34,601 [INFO] pyvcham.lvc: Step 200, Loss: 0.044380
2026-02-03 21:18:34,649 [INFO] pyvcham.lvc: Step 300, Loss: 0.037756
2026-02-03 21:18:34,696 [INFO] pyvcham.lvc: Step 400, Loss: 0.037516
2026-02-03 21:18:34,741 [INFO] pyvcham.lvc: Step 500, Loss: 0.037488
2026-02-03 21:18:34,785 [INFO] pyvcham.lvc: Step 600, Loss: 0.037485
2026-02-03 21:18:34,829 [INFO] pyvcham.lvc: Step 700, Loss: 0.037482
2026-02-03 21:18:34,873 [INFO] pyvcham.lvc: Step 800, Loss: 0.037477
2026-02-03 21:18:34,916 [INFO] pyvcham.lvc: Step 900, Loss: 0.037475
2026-02-03 21:18:34,960 [INFO] pyvcham.lvc: Step 1000, Loss: 0.037476
2026-02-03 21:18:34,977 [INFO] pyvcham.lvc: Early stopping triggered at step 1038 (no improvement for 150 steps). Best loss: 0.037473
2026-02-03 21:18:35,546 [INFO] pyvcham.lvc: Optimization finished – Final reported loss: 0.037473
2026-02-03 21:18:35,547 [INFO] pyvcham.lvc: Optimization completed in 1.67 seconds.
2026-02-03 21:18:35,550 [INFO] pyvcham.lvc:
----- Initializing LVC Hamiltonian Builder -----
2026-02-03 21:18:35,551 [INFO] pyvcham.lvc: Normal mode: 1
2026-02-03 21:18:35,555 [INFO] pyvcham.lvc: JT off-diagonal pairs: []
2026-02-03 21:18:35,556 [INFO] pyvcham.lvc: n_var_list (non-JT): [3, 3, 3, 3, 3, 3]
2026-02-03 21:18:35,557 [INFO] pyvcham.lvc: Total parameters to optimize: 19
2026-02-03 21:18:35,558 [INFO] pyvcham.lvc: Optimizing mode 1...
2026-02-03 21:18:36,205 [INFO] pyvcham.lvc: Step 0, Loss: 0.218996
2026-02-03 21:18:36,275 [INFO] pyvcham.lvc: Step 100, Loss: 0.060702
2026-02-03 21:18:36,330 [INFO] pyvcham.lvc: Step 200, Loss: 0.046759
2026-02-03 21:18:36,381 [INFO] pyvcham.lvc: Step 300, Loss: 0.044995
2026-02-03 21:18:36,433 [INFO] pyvcham.lvc: Step 400, Loss: 0.044540
2026-02-03 21:18:36,483 [INFO] pyvcham.lvc: Step 500, Loss: 0.044405
2026-02-03 21:18:36,534 [INFO] pyvcham.lvc: Step 600, Loss: 0.044101
2026-02-03 21:18:36,584 [INFO] pyvcham.lvc: Step 700, Loss: 0.044138
2026-02-03 21:18:36,635 [INFO] pyvcham.lvc: Step 800, Loss: 0.043962
2026-02-03 21:18:36,685 [INFO] pyvcham.lvc: Step 900, Loss: 0.043877
2026-02-03 21:18:36,735 [INFO] pyvcham.lvc: Step 1000, Loss: 0.043946
2026-02-03 21:18:36,785 [INFO] pyvcham.lvc: Step 1100, Loss: 0.043730
2026-02-03 21:18:36,836 [INFO] pyvcham.lvc: Step 1200, Loss: 0.043807
2026-02-03 21:18:36,886 [INFO] pyvcham.lvc: Step 1300, Loss: 0.043734
2026-02-03 21:18:36,936 [INFO] pyvcham.lvc: Step 1400, Loss: 0.043818
2026-02-03 21:18:36,985 [INFO] pyvcham.lvc: Step 1500, Loss: 0.043846
2026-02-03 21:18:37,016 [INFO] pyvcham.lvc: Early stopping triggered at step 1560 (no improvement for 150 steps). Best loss: 0.043591
2026-02-03 21:18:37,520 [INFO] pyvcham.lvc: Optimization finished – Final reported loss: 0.043591
2026-02-03 21:18:37,520 [INFO] pyvcham.lvc: Optimization completed in 1.46 seconds.
2026-02-03 21:18:37,523 [INFO] pyvcham.lvc:
----- Initializing LVC Hamiltonian Builder -----
2026-02-03 21:18:37,524 [INFO] pyvcham.lvc: Normal mode: 2
2026-02-03 21:18:37,527 [INFO] pyvcham.lvc: JT off-diagonal pairs: []
2026-02-03 21:18:37,528 [INFO] pyvcham.lvc: n_var_list (non-JT): [3, 3, 3, 3, 3, 3]
2026-02-03 21:18:37,529 [INFO] pyvcham.lvc: Total parameters to optimize: 19
2026-02-03 21:18:37,529 [INFO] pyvcham.lvc: Optimizing mode 2...
2026-02-03 21:18:38,068 [INFO] pyvcham.lvc: Step 0, Loss: 0.065647
2026-02-03 21:18:38,149 [INFO] pyvcham.lvc: Step 100, Loss: 0.026063
2026-02-03 21:18:38,215 [INFO] pyvcham.lvc: Step 200, Loss: 0.024968
2026-02-03 21:18:38,280 [INFO] pyvcham.lvc: Step 300, Loss: 0.024381
2026-02-03 21:18:38,344 [INFO] pyvcham.lvc: Step 400, Loss: 0.023940
2026-02-03 21:18:38,404 [INFO] pyvcham.lvc: Step 500, Loss: 0.023582
2026-02-03 21:18:38,464 [INFO] pyvcham.lvc: Step 600, Loss: 0.023288
2026-02-03 21:18:38,522 [INFO] pyvcham.lvc: Step 700, Loss: 0.023039
2026-02-03 21:18:38,580 [INFO] pyvcham.lvc: Step 800, Loss: 0.022821
2026-02-03 21:18:38,637 [INFO] pyvcham.lvc: Step 900, Loss: 0.022639
2026-02-03 21:18:38,692 [INFO] pyvcham.lvc: Step 1000, Loss: 0.022525
2026-02-03 21:18:38,749 [INFO] pyvcham.lvc: Step 1100, Loss: 0.022321
2026-02-03 21:18:38,808 [INFO] pyvcham.lvc: Step 1200, Loss: 0.022206
2026-02-03 21:18:38,865 [INFO] pyvcham.lvc: Step 1300, Loss: 0.022074
2026-02-03 21:18:38,923 [INFO] pyvcham.lvc: Step 1400, Loss: 0.021969
2026-02-03 21:18:38,982 [INFO] pyvcham.lvc: Step 1500, Loss: 0.021878
2026-02-03 21:18:39,039 [INFO] pyvcham.lvc: Step 1600, Loss: 0.021799
2026-02-03 21:18:39,096 [INFO] pyvcham.lvc: Step 1700, Loss: 0.021717
2026-02-03 21:18:39,152 [INFO] pyvcham.lvc: Step 1800, Loss: 0.021644
2026-02-03 21:18:39,243 [INFO] pyvcham.lvc: Step 1900, Loss: 0.021594
2026-02-03 21:18:39,299 [INFO] pyvcham.lvc: Step 2000, Loss: 0.021515
2026-02-03 21:18:39,356 [INFO] pyvcham.lvc: Step 2100, Loss: 0.021470
2026-02-03 21:18:39,414 [INFO] pyvcham.lvc: Step 2200, Loss: 0.021405
2026-02-03 21:18:39,469 [INFO] pyvcham.lvc: Step 2300, Loss: 0.021366
2026-02-03 21:18:39,525 [INFO] pyvcham.lvc: Step 2400, Loss: 0.021317
2026-02-03 21:18:39,581 [INFO] pyvcham.lvc: Step 2500, Loss: 0.021271
2026-02-03 21:18:39,637 [INFO] pyvcham.lvc: Step 2600, Loss: 0.021227
2026-02-03 21:18:39,693 [INFO] pyvcham.lvc: Step 2700, Loss: 0.021189
2026-02-03 21:18:39,750 [INFO] pyvcham.lvc: Step 2800, Loss: 0.021156
2026-02-03 21:18:39,808 [INFO] pyvcham.lvc: Step 2900, Loss: 0.021117
2026-02-03 21:18:39,864 [INFO] pyvcham.lvc: Step 3000, Loss: 0.021103
2026-02-03 21:18:39,922 [INFO] pyvcham.lvc: Step 3100, Loss: 0.021083
2026-02-03 21:18:39,978 [INFO] pyvcham.lvc: Step 3200, Loss: 0.021032
2026-02-03 21:18:40,034 [INFO] pyvcham.lvc: Step 3300, Loss: 0.020999
2026-02-03 21:18:40,091 [INFO] pyvcham.lvc: Step 3400, Loss: 0.020968
2026-02-03 21:18:40,147 [INFO] pyvcham.lvc: Step 3500, Loss: 0.020943
2026-02-03 21:18:40,203 [INFO] pyvcham.lvc: Step 3600, Loss: 0.020914
2026-02-03 21:18:40,259 [INFO] pyvcham.lvc: Step 3700, Loss: 0.020904
2026-02-03 21:18:40,314 [INFO] pyvcham.lvc: Step 3800, Loss: 0.020867
2026-02-03 21:18:40,370 [INFO] pyvcham.lvc: Step 3900, Loss: 0.020844
2026-02-03 21:18:40,424 [INFO] pyvcham.lvc: Step 4000, Loss: 0.020830
2026-02-03 21:18:40,481 [INFO] pyvcham.lvc: Step 4100, Loss: 0.020802
2026-02-03 21:18:40,537 [INFO] pyvcham.lvc: Step 4200, Loss: 0.020780
2026-02-03 21:18:40,592 [INFO] pyvcham.lvc: Step 4300, Loss: 0.020777
2026-02-03 21:18:40,649 [INFO] pyvcham.lvc: Step 4400, Loss: 0.020745
2026-02-03 21:18:40,704 [INFO] pyvcham.lvc: Step 4500, Loss: 0.020743
2026-02-03 21:18:40,760 [INFO] pyvcham.lvc: Step 4600, Loss: 0.020724
2026-02-03 21:18:40,816 [INFO] pyvcham.lvc: Step 4700, Loss: 0.020689
2026-02-03 21:18:40,871 [INFO] pyvcham.lvc: Step 4800, Loss: 0.020676
2026-02-03 21:18:40,927 [INFO] pyvcham.lvc: Step 4900, Loss: 0.020675
2026-02-03 21:18:40,983 [INFO] pyvcham.lvc: Step 5000, Loss: 0.020659
2026-02-03 21:18:41,040 [INFO] pyvcham.lvc: Step 5100, Loss: 0.020638
2026-02-03 21:18:41,097 [INFO] pyvcham.lvc: Step 5200, Loss: 0.020613
2026-02-03 21:18:41,152 [INFO] pyvcham.lvc: Step 5300, Loss: 0.020596
2026-02-03 21:18:41,208 [INFO] pyvcham.lvc: Step 5400, Loss: 0.020617
2026-02-03 21:18:41,265 [INFO] pyvcham.lvc: Step 5500, Loss: 0.020584
2026-02-03 21:18:41,331 [INFO] pyvcham.lvc: Step 5600, Loss: 0.020569
2026-02-03 21:18:41,390 [INFO] pyvcham.lvc: Step 5700, Loss: 0.020543
2026-02-03 21:18:41,441 [INFO] pyvcham.lvc: Step 5800, Loss: 0.020532
2026-02-03 21:18:41,493 [INFO] pyvcham.lvc: Step 5900, Loss: 0.020539
2026-02-03 21:18:41,549 [INFO] pyvcham.lvc: Step 6000, Loss: 0.020542
2026-02-03 21:18:41,605 [INFO] pyvcham.lvc: Step 6100, Loss: 0.020497
2026-02-03 21:18:41,661 [INFO] pyvcham.lvc: Step 6200, Loss: 0.020503
2026-02-03 21:18:41,718 [INFO] pyvcham.lvc: Step 6300, Loss: 0.020487
2026-02-03 21:18:41,774 [INFO] pyvcham.lvc: Step 6400, Loss: 0.020472
2026-02-03 21:18:41,830 [INFO] pyvcham.lvc: Step 6500, Loss: 0.020458
2026-02-03 21:18:41,883 [INFO] pyvcham.lvc: Step 6600, Loss: 0.020451
2026-02-03 21:18:41,934 [INFO] pyvcham.lvc: Step 6700, Loss: 0.020433
2026-02-03 21:18:41,986 [INFO] pyvcham.lvc: Step 6800, Loss: 0.020431
2026-02-03 21:18:42,037 [INFO] pyvcham.lvc: Step 6900, Loss: 0.020461
2026-02-03 21:18:42,087 [INFO] pyvcham.lvc: Step 7000, Loss: 0.020409
2026-02-03 21:18:42,138 [INFO] pyvcham.lvc: Step 7100, Loss: 0.020397
2026-02-03 21:18:42,189 [INFO] pyvcham.lvc: Step 7200, Loss: 0.020398
2026-02-03 21:18:42,238 [INFO] pyvcham.lvc: Step 7300, Loss: 0.020381
2026-02-03 21:18:42,317 [INFO] pyvcham.lvc: Step 7400, Loss: 0.020384
2026-02-03 21:18:42,377 [INFO] pyvcham.lvc: Step 7500, Loss: 0.020371
2026-02-03 21:18:42,433 [INFO] pyvcham.lvc: Step 7600, Loss: 0.020356
2026-02-03 21:18:42,489 [INFO] pyvcham.lvc: Step 7700, Loss: 0.020442
2026-02-03 21:18:42,545 [INFO] pyvcham.lvc: Step 7800, Loss: 0.020344
2026-02-03 21:18:42,596 [INFO] pyvcham.lvc: Step 7900, Loss: 0.020337
2026-02-03 21:18:42,649 [INFO] pyvcham.lvc: Step 8000, Loss: 0.020329
2026-02-03 21:18:42,699 [INFO] pyvcham.lvc: Step 8100, Loss: 0.020371
2026-02-03 21:18:42,749 [INFO] pyvcham.lvc: Step 8200, Loss: 0.020321
2026-02-03 21:18:42,799 [INFO] pyvcham.lvc: Step 8300, Loss: 0.020311
2026-02-03 21:18:42,849 [INFO] pyvcham.lvc: Step 8400, Loss: 0.020324
2026-02-03 21:18:42,899 [INFO] pyvcham.lvc: Step 8500, Loss: 0.020301
2026-02-03 21:18:42,949 [INFO] pyvcham.lvc: Step 8600, Loss: 0.020291
2026-02-03 21:18:42,999 [INFO] pyvcham.lvc: Step 8700, Loss: 0.020284
2026-02-03 21:18:43,049 [INFO] pyvcham.lvc: Step 8800, Loss: 0.020283
2026-02-03 21:18:43,100 [INFO] pyvcham.lvc: Step 8900, Loss: 0.020287
2026-02-03 21:18:43,149 [INFO] pyvcham.lvc: Step 9000, Loss: 0.020272
2026-02-03 21:18:43,200 [INFO] pyvcham.lvc: Step 9100, Loss: 0.020263
2026-02-03 21:18:43,250 [INFO] pyvcham.lvc: Step 9200, Loss: 0.020279
2026-02-03 21:18:43,300 [INFO] pyvcham.lvc: Step 9300, Loss: 0.020276
2026-02-03 21:18:43,350 [INFO] pyvcham.lvc: Step 9400, Loss: 0.020247
2026-02-03 21:18:43,400 [INFO] pyvcham.lvc: Step 9500, Loss: 0.020299
2026-02-03 21:18:43,450 [INFO] pyvcham.lvc: Step 9600, Loss: 0.020240
2026-02-03 21:18:43,499 [INFO] pyvcham.lvc: Step 9700, Loss: 0.020267
2026-02-03 21:18:43,550 [INFO] pyvcham.lvc: Step 9800, Loss: 0.020253
2026-02-03 21:18:43,599 [INFO] pyvcham.lvc: Step 9900, Loss: 0.020224
2026-02-03 21:18:44,100 [INFO] pyvcham.lvc: Optimization finished – Final reported loss: 0.020222
2026-02-03 21:18:44,101 [INFO] pyvcham.lvc: Optimization completed in 6.12 seconds.
2026-02-03 21:18:44,103 [INFO] pyvcham.lvc:
----- Initializing LVC Hamiltonian Builder -----
2026-02-03 21:18:44,103 [INFO] pyvcham.lvc: Normal mode: 3
2026-02-03 21:18:44,108 [INFO] pyvcham.lvc: JT off-diagonal pairs: []
2026-02-03 21:18:44,109 [INFO] pyvcham.lvc: n_var_list (non-JT): [2, 2, 2, 2, 2, 2]
2026-02-03 21:18:44,109 [INFO] pyvcham.lvc: Total parameters to optimize: 18
2026-02-03 21:18:44,110 [INFO] pyvcham.lvc: Optimizing mode 3...
2026-02-03 21:18:44,709 [INFO] pyvcham.lvc: Step 0, Loss: 0.312371
2026-02-03 21:18:44,786 [INFO] pyvcham.lvc: Step 100, Loss: 0.055581
2026-02-03 21:18:44,841 [INFO] pyvcham.lvc: Step 200, Loss: 0.026756
2026-02-03 21:18:44,896 [INFO] pyvcham.lvc: Step 300, Loss: 0.023935
2026-02-03 21:18:44,948 [INFO] pyvcham.lvc: Step 400, Loss: 0.023078
2026-02-03 21:18:44,998 [INFO] pyvcham.lvc: Step 500, Loss: 0.022866
2026-02-03 21:18:45,047 [INFO] pyvcham.lvc: Step 600, Loss: 0.022779
2026-02-03 21:18:45,093 [INFO] pyvcham.lvc: Step 700, Loss: 0.022768
2026-02-03 21:18:45,139 [INFO] pyvcham.lvc: Step 800, Loss: 0.022767
2026-02-03 21:18:45,183 [INFO] pyvcham.lvc: Step 900, Loss: 0.022767
2026-02-03 21:18:45,228 [INFO] pyvcham.lvc: Step 1000, Loss: 0.022767
2026-02-03 21:18:45,255 [INFO] pyvcham.lvc: Early stopping triggered at step 1058 (no improvement for 150 steps). Best loss: 0.022766
2026-02-03 21:18:45,756 [INFO] pyvcham.lvc: Optimization finished – Final reported loss: 0.022766
2026-02-03 21:18:45,757 [INFO] pyvcham.lvc: Optimization completed in 1.15 seconds.
2026-02-03 21:18:45,759 [INFO] pyvcham.lvc:
----- Initializing LVC Hamiltonian Builder -----
2026-02-03 21:18:45,759 [INFO] pyvcham.lvc: Normal mode: 4
2026-02-03 21:18:45,763 [INFO] pyvcham.lvc: JT off-diagonal pairs: []
2026-02-03 21:18:45,763 [INFO] pyvcham.lvc: n_var_list (non-JT): [2, 2, 2, 2, 2, 2]
2026-02-03 21:18:45,764 [INFO] pyvcham.lvc: Total parameters to optimize: 15
2026-02-03 21:18:45,764 [INFO] pyvcham.lvc: Optimizing mode 4...
2026-02-03 21:18:46,395 [INFO] pyvcham.lvc: Step 0, Loss: 1.672730
2026-02-03 21:18:46,459 [INFO] pyvcham.lvc: Step 100, Loss: 0.106774
2026-02-03 21:18:46,508 [INFO] pyvcham.lvc: Step 200, Loss: 0.006311
2026-02-03 21:18:46,556 [INFO] pyvcham.lvc: Step 300, Loss: 0.002322
2026-02-03 21:18:46,604 [INFO] pyvcham.lvc: Step 400, Loss: 0.002229
2026-02-03 21:18:46,650 [INFO] pyvcham.lvc: Step 500, Loss: 0.002212
2026-02-03 21:18:46,694 [INFO] pyvcham.lvc: Step 600, Loss: 0.002206
2026-02-03 21:18:46,738 [INFO] pyvcham.lvc: Step 700, Loss: 0.002203
2026-02-03 21:18:46,782 [INFO] pyvcham.lvc: Step 800, Loss: 0.002202
2026-02-03 21:18:46,826 [INFO] pyvcham.lvc: Step 900, Loss: 0.002201
2026-02-03 21:18:46,875 [INFO] pyvcham.lvc: Step 1000, Loss: 0.002201
2026-02-03 21:18:46,923 [INFO] pyvcham.lvc: Step 1100, Loss: 0.002201
2026-02-03 21:18:46,959 [INFO] pyvcham.lvc: Early stopping triggered at step 1178 (no improvement for 150 steps). Best loss: 0.002200
2026-02-03 21:18:47,416 [INFO] pyvcham.lvc: Optimization finished – Final reported loss: 0.002200
2026-02-03 21:18:47,417 [INFO] pyvcham.lvc: Optimization completed in 1.20 seconds.
2026-02-03 21:18:47,419 [INFO] pyvcham.lvc:
----- Initializing LVC Hamiltonian Builder -----
2026-02-03 21:18:47,419 [INFO] pyvcham.lvc: Normal mode: 5
2026-02-03 21:18:47,423 [INFO] pyvcham.lvc: JT off-diagonal pairs: []
2026-02-03 21:18:47,424 [INFO] pyvcham.lvc: n_var_list (non-JT): [2, 2, 2, 2, 2, 2]
2026-02-03 21:18:47,425 [INFO] pyvcham.lvc: Total parameters to optimize: 15
2026-02-03 21:18:47,425 [INFO] pyvcham.lvc: Optimizing mode 5...
2026-02-03 21:18:47,963 [INFO] pyvcham.lvc: Step 0, Loss: 1.852424
2026-02-03 21:18:48,033 [INFO] pyvcham.lvc: Step 100, Loss: 0.111894
2026-02-03 21:18:48,129 [INFO] pyvcham.lvc: Step 200, Loss: 0.007647
2026-02-03 21:18:48,180 [INFO] pyvcham.lvc: Step 300, Loss: 0.001560
2026-02-03 21:18:48,229 [INFO] pyvcham.lvc: Step 400, Loss: 0.001322
2026-02-03 21:18:48,276 [INFO] pyvcham.lvc: Step 500, Loss: 0.001304
2026-02-03 21:18:48,322 [INFO] pyvcham.lvc: Step 600, Loss: 0.001291
2026-02-03 21:18:48,369 [INFO] pyvcham.lvc: Step 700, Loss: 0.001279
2026-02-03 21:18:48,415 [INFO] pyvcham.lvc: Step 800, Loss: 0.001267
2026-02-03 21:18:48,463 [INFO] pyvcham.lvc: Step 900, Loss: 0.001258
2026-02-03 21:18:48,515 [INFO] pyvcham.lvc: Step 1000, Loss: 0.001250
2026-02-03 21:18:48,566 [INFO] pyvcham.lvc: Step 1100, Loss: 0.001242
2026-02-03 21:18:48,616 [INFO] pyvcham.lvc: Step 1200, Loss: 0.001236
2026-02-03 21:18:48,663 [INFO] pyvcham.lvc: Step 1300, Loss: 0.001230
2026-02-03 21:18:48,709 [INFO] pyvcham.lvc: Step 1400, Loss: 0.001224
2026-02-03 21:18:48,754 [INFO] pyvcham.lvc: Step 1500, Loss: 0.001220
2026-02-03 21:18:48,799 [INFO] pyvcham.lvc: Step 1600, Loss: 0.001216
2026-02-03 21:18:48,844 [INFO] pyvcham.lvc: Step 1700, Loss: 0.001212
2026-02-03 21:18:48,889 [INFO] pyvcham.lvc: Step 1800, Loss: 0.001209
2026-02-03 21:18:48,934 [INFO] pyvcham.lvc: Step 1900, Loss: 0.001207
2026-02-03 21:18:48,978 [INFO] pyvcham.lvc: Step 2000, Loss: 0.001205
2026-02-03 21:18:49,024 [INFO] pyvcham.lvc: Step 2100, Loss: 0.001203
2026-02-03 21:18:49,074 [INFO] pyvcham.lvc: Step 2200, Loss: 0.001202
2026-02-03 21:18:49,122 [INFO] pyvcham.lvc: Step 2300, Loss: 0.001201
2026-02-03 21:18:49,171 [INFO] pyvcham.lvc: Step 2400, Loss: 0.001200
2026-02-03 21:18:49,215 [INFO] pyvcham.lvc: Step 2500, Loss: 0.001199
2026-02-03 21:18:49,260 [INFO] pyvcham.lvc: Step 2600, Loss: 0.001199
2026-02-03 21:18:49,305 [INFO] pyvcham.lvc: Step 2700, Loss: 0.001198
2026-02-03 21:18:49,348 [INFO] pyvcham.lvc: Step 2800, Loss: 0.001198
2026-02-03 21:18:49,392 [INFO] pyvcham.lvc: Step 2900, Loss: 0.001198
2026-02-03 21:18:49,436 [INFO] pyvcham.lvc: Step 3000, Loss: 0.001197
2026-02-03 21:18:49,458 [INFO] pyvcham.lvc: Early stopping triggered at step 3051 (no improvement for 150 steps). Best loss: 0.001197
2026-02-03 21:18:49,917 [INFO] pyvcham.lvc: Optimization finished – Final reported loss: 0.001197
2026-02-03 21:18:49,918 [INFO] pyvcham.lvc: Optimization completed in 2.03 seconds.
[8]:
# General system data for output
general_data = {
"molecule": "Formaldehyde",
"calculation_info": "Core-excited states at carbon K-edge",
"method": "XMS-CASPT2",
"basis": "cc-pVTZ + rydberg(8s,8p,8d)",
"software": "OpenMolcas",
"additional_info": "No coupling among GS and other states",
}
# Define the JSON output filename
filename_json = "results/h2co.json"
# Convert the VCSystem object to JSON and save it
pyvcham.utils.VCSystem_to_json(system, general_data, filename_json, rewrite=True)
# Generate the MCTDH operator file from the JSON data
pyvcham.utils.json_to_mctdh(infile=filename_json, outfile="results/h2co.op")
2026-02-03 21:18:49,928 [INFO] pyvcham.utils: Warning: Overwriting existing file results/h2co.json
2026-02-03 21:18:49,930 [INFO] pyvcham.utils: Data successfully saved to results/h2co.json
2026-02-03 21:18:49,931 [INFO] pyvcham.utils: No interactions found.
2026-02-03 21:18:49,932 [INFO] pyvcham.utils: MCTDH operator file successfully written to: results/h2co.op
[9]:
# ADVANCED: Uncomment the following lines to run the GuessImprover GUI
# This GUI allows for manual adjustment of the initial guess parameters in case the automatic optimization does not yield satisfactory results.
# object = pyvcham.gui.GuessImprover(system)
# object.run()