3333# ###############################################################################
3434
3535function excitations (H, alg:: QuasiparticleAnsatz , ϕ₀:: InfiniteQP , lenvs, renvs;
36- num= 1 , solver = Defaults . linearsolver )
37- qp_envs (ϕ) = environments (ϕ, H, lenvs, renvs; solver )
36+ num= 1 , kwargs ... )
37+ qp_envs (ϕ) = environments (ϕ, H, lenvs, renvs; kwargs ... )
3838 E = effective_excitation_renormalization_energy (H, ϕ₀, lenvs, renvs)
3939 H_eff = @closure (ϕ -> effective_excitation_hamiltonian (H, ϕ, qp_envs (ϕ), E))
4040
@@ -45,16 +45,16 @@ function excitations(H, alg::QuasiparticleAnsatz, ϕ₀::InfiniteQP, lenvs, renv
4545 return Es, ϕs
4646end
4747function excitations (H, alg:: QuasiparticleAnsatz , ϕ₀:: InfiniteQP , lenvs;
48- num= 1 , solver = Defaults . linearsolver )
48+ num= 1 , kwargs ... )
4949 # Infer `renvs` in function body as it depends on `solver`.
50- renvs = ϕ₀. trivial ? lenvs : environments (ϕ₀. right_gs, H; solver = solver )
51- return excitations (H, alg, ϕ₀, lenvs, renvs; num, solver )
50+ renvs = ϕ₀. trivial ? lenvs : environments (ϕ₀. right_gs, H; kwargs ... )
51+ return excitations (H, alg, ϕ₀, lenvs, renvs; num, kwargs ... )
5252end
5353function excitations (H, alg:: QuasiparticleAnsatz , ϕ₀:: InfiniteQP ;
54- num= 1 , solver = Defaults . linearsolver )
54+ num= 1 , kwargs ... )
5555 # Infer `lenvs` in function body as it depends on `solver`.
56- lenvs = environments (ϕ₀. left_gs, H; solver = solver )
57- return excitations (H, alg, ϕ₀, lenvs; num, solver )
56+ lenvs = environments (ϕ₀. left_gs, H; kwargs ... )
57+ return excitations (H, alg, ϕ₀, lenvs; num, kwargs ... )
5858end
5959
6060"""
@@ -83,19 +83,20 @@ Create and optimise infinite quasiparticle states.
8383function excitations (H, alg:: QuasiparticleAnsatz , momentum:: Number , lmps:: InfiniteMPS ,
8484 lenvs= environments (lmps, H), rmps:: InfiniteMPS = lmps,
8585 renvs= lmps === rmps ? lenvs : environments (rmps, H);
86- sector= one (sectortype (lmps)), num= 1 , solver = Defaults . linearsolver )
86+ sector= one (sectortype (lmps)), num= 1 , kwargs ... )
8787 ϕ₀ = LeftGaugedQP (rand, lmps, rmps; sector, momentum)
88- return excitations (H, alg, ϕ₀, lenvs, renvs; num, solver )
88+ return excitations (H, alg, ϕ₀, lenvs, renvs; num, kwargs ... )
8989end
9090function excitations (H, alg:: QuasiparticleAnsatz , momenta, lmps,
9191 lenvs= environments (lmps, H), rmps= lmps,
9292 renvs= lmps === rmps ? lenvs : environments (rmps, H);
93- verbosity= Defaults. verbosity, num= 1 , solver = Defaults . linearsolver,
94- sector= one (sectortype (lmps)), parallel= true )
93+ verbosity= Defaults. verbosity, num= 1 ,
94+ sector= one (sectortype (lmps)), parallel= true , kwargs ... )
9595 if parallel
9696 tasks = map (momenta) do momentum
9797 Threads. @spawn begin
98- E, ϕ = excitations (H, alg, momentum, lmps, lenvs, rmps, renvs; num, solver,
98+ E, ϕ = excitations (H, alg, momentum, lmps, lenvs, rmps, renvs; num,
99+ kwargs... ,
99100 sector)
100101 verbosity ≥ VERBOSE_CONV &&
101102 @info " Found excitations for momentum = $(momentum) "
@@ -106,7 +107,7 @@ function excitations(H, alg::QuasiparticleAnsatz, momenta, lmps,
106107 fetched = fetch .(tasks)
107108 else
108109 fetched = map (momenta) do momentum
109- E, ϕ = excitations (H, alg, momentum, lmps, lenvs, rmps, renvs; num, solver ,
110+ E, ϕ = excitations (H, alg, momentum, lmps, lenvs, rmps, renvs; num, kwargs ... ,
110111 sector)
111112 verbosity ≥ VERBOSE_CONV && @info " Found excitations for momentum = $(momentum) "
112113 return E, ϕ
168169# ###############################################################################
169170
170171function excitations (H:: MultilineMPO , alg:: QuasiparticleAnsatz , ϕ₀:: Multiline{<:InfiniteQP} ,
171- lenvs, renvs; num= 1 , solver = Defaults . linearsolver )
172- qp_envs (ϕ) = environments (ϕ, H, lenvs, renvs; solver )
172+ lenvs, renvs; num= 1 , kwargs ... )
173+ qp_envs (ϕ) = environments (ϕ, H, lenvs, renvs; kwargs ... )
173174 function H_eff (ϕ′)
174175 ϕ = Multiline (ϕ′)
175176 return effective_excitation_hamiltonian (H, ϕ, qp_envs (ϕ)). data. data
@@ -183,8 +184,8 @@ function excitations(H::MultilineMPO, alg::QuasiparticleAnsatz, ϕ₀::Multiline
183184end
184185
185186function excitations (H:: InfiniteMPO , alg:: QuasiparticleAnsatz , ϕ₀:: InfiniteQP , lenvs, renvs;
186- num= 1 , solver = Defaults . linearsolver )
187- qp_envs (ϕ) = environments (ϕ, H, lenvs, renvs; solver )
187+ num= 1 , kwargs ... )
188+ qp_envs (ϕ) = environments (ϕ, H, lenvs, renvs; kwargs ... )
188189 H_eff (ϕ) = effective_excitation_hamiltonian (H, ϕ, qp_envs (ϕ))
189190
190191 Es, ϕs, convhist = eigsolve (H_eff, ϕ₀, num, :LM , alg. alg)
@@ -194,14 +195,14 @@ function excitations(H::InfiniteMPO, alg::QuasiparticleAnsatz, ϕ₀::InfiniteQP
194195 return Es, ϕs
195196end
196197
197- function excitations (H:: MultilineMPO , alg:: QuasiparticleAnsatz , ϕ₀:: Multiline{<:InfiniteQP} ,
198- lenvs; num= 1 , solver = Defaults . linearsolver )
198+ function excitations (H:: MultilineMPO , alg:: QuasiparticleAnsatz , ϕ₀:: MultilineQP ,
199+ lenvs; num= 1 , kwargs ... )
199200 # Infer `renvs` in function body as it depends on `solver`.
200- renvs = ϕ₀. trivial ? lenvs : environments (ϕ₀. right_gs, H; solver )
201- return excitations (H, alg, ϕ₀, lenvs, renvs; num, solver )
201+ renvs = ϕ₀. trivial ? lenvs : environments (ϕ₀. right_gs, H; kwargs ... )
202+ return excitations (H, alg, ϕ₀, lenvs, renvs; num, kwargs ... )
202203end
203- function excitations (H:: MultilineMPO , alg:: QuasiparticleAnsatz , ϕ₀:: Multiline{<:InfiniteQP} ;
204- num= 1 , solver = Defaults . linearsolver )
204+ function excitations (H:: MultilineMPO , alg:: QuasiparticleAnsatz , ϕ₀:: MultilineQP ;
205+ num= 1 , kwargs ... )
205206 # Infer `lenvs` in function body as it depends on `solver`.
206207 lenvs = environments (ϕ₀. left_gs, H; solver)
207208 return excitations (H, alg, ϕ₀, lenvs; num, solver)
@@ -211,28 +212,28 @@ function excitations(H::DenseMPO, alg::QuasiparticleAnsatz, momentum::Real,
211212 lmps:: InfiniteMPS ,
212213 lenvs= environments (lmps, H), rmps:: InfiniteMPS = lmps,
213214 renvs= lmps === rmps ? lenvs : environments (rmps, H);
214- sector= one (sectortype (lmps)), num= 1 , solver = Defaults . linearsolver )
215+ sector= one (sectortype (lmps)), num= 1 , kwargs ... )
215216 multiline_lmps = convert (MultilineMPS, lmps)
216217 if lmps === rmps
217218 excitations (convert (MultilineMPO, H), alg, momentum, multiline_lmps, lenvs,
218219 multiline_lmps,
219- lenvs; sector, num, solver )
220+ lenvs; sector, num, kwargs ... )
220221 else
221222 excitations (convert (MultilineMPO, H), alg, momentum, multiline_lmps, lenvs,
222- convert (MultilineMPS, rmps), renvs; sector, num, solver )
223+ convert (MultilineMPS, rmps), renvs; sector, num, kwargs ... )
223224 end
224225end
225226
226227function excitations (H:: MultilineMPO , alg:: QuasiparticleAnsatz , momentum:: Real ,
227228 lmps:: MultilineMPS ,
228229 lenvs= environments (lmps, H), rmps= lmps,
229230 renvs= lmps === rmps ? lenvs : environments (rmps, H);
230- sector= one (sectortype (lmps)), num= 1 , solver = Defaults . linearsolver )
231+ sector= one (sectortype (lmps)), num= 1 , kwargs ... )
231232 ϕ₀ = Multiline (map (1 : size (lmps, 1 )) do row
232233 return LeftGaugedQP (rand, lmps[row], rmps[row]; sector, momentum)
233234 end )
234235
235- return excitations (H, alg, ϕ₀, lenvs, renvs; num, solver )
236+ return excitations (H, alg, ϕ₀, lenvs, renvs; num, kwargs ... )
236237end
237238
238239# ###############################################################################
0 commit comments