@@ -199,9 +199,7 @@ def __post_init__(self):
199
199
self .initctrl_MHz = [10.0 for _ in range (len (self .Ne ))]
200
200
if len (self .Hsys ) > 0 and not self .standardmodel : # User-provided Hamiltonian operators
201
201
self .standardmodel = False
202
- else : # Using standard Hamiltonian model
203
- Ntot = [sum (x ) for x in zip (self .Ne , self .Ng )]
204
- self .Hsys , self .Hc_re , self .Hc_im = hamiltonians (N = Ntot , freq01 = self .freq01 , selfkerr = self .selfkerr , crosskerr = self .crosskerr , Jkl = self .Jkl , rotfreq = self .rotfreq , verbose = self .verbose )
202
+ else : # Using standard Hamiltonian model. Set it up in python only if needed, i.e. only if dT or the carrier wave frequencies need to be computed.
205
203
self .standardmodel = True
206
204
if len (self .targetstate ) > 0 :
207
205
self .optim_target = "file"
@@ -226,6 +224,9 @@ def __post_init__(self):
226
224
227
225
# Estimate the number of required time steps
228
226
if self .dT < 0 :
227
+ if self .standardmodel == True : # set up the standard Hamiltonian first
228
+ Ntot = [sum (x ) for x in zip (self .Ne , self .Ng )]
229
+ self .Hsys , self .Hc_re , self .Hc_im = hamiltonians (N = Ntot , freq01 = self .freq01 , selfkerr = self .selfkerr , crosskerr = self .crosskerr , Jkl = self .Jkl , rotfreq = self .rotfreq , verbose = self .verbose )
229
230
self .nsteps = estimate_timesteps (T = self .T , Hsys = self .Hsys , Hc_re = self .Hc_re , Hc_im = self .Hc_im , maxctrl_MHz = self .maxctrl_MHz , Pmin = self .Pmin )
230
231
self .dT = self .T / self .nsteps
231
232
else :
@@ -250,6 +251,10 @@ def __post_init__(self):
250
251
if self .spline_order == 0 and len (self .carrier_frequency ) == 0 :
251
252
self .carrier_frequency = [[0.0 ] for _ in range (len (self .freq01 ))]
252
253
if len (self .carrier_frequency ) == 0 :
254
+ # set up the standard Hamiltonian first, if needed
255
+ if self .standardmodel == True and len (self .Hsys <= 0 ):
256
+ Ntot = [sum (x ) for x in zip (self .Ne , self .Ng )]
257
+ self .Hsys , self .Hc_re , self .Hc_im = hamiltonians (N = Ntot , freq01 = self .freq01 , selfkerr = self .selfkerr , crosskerr = self .crosskerr , Jkl = self .Jkl , rotfreq = self .rotfreq , verbose = self .verbose )
253
258
self .carrier_frequency , _ = get_resonances (Ne = self .Ne , Ng = self .Ng , Hsys = self .Hsys , Hc_re = self .Hc_re , Hc_im = self .Hc_im , rotfreq = self .rotfreq , verbose = self .verbose , cw_amp_thres = self .cw_amp_thres , cw_prox_thres = self .cw_prox_thres , stdmodel = self .standardmodel )
254
259
255
260
if self .verbose :
0 commit comments