PF Simulation Research library

PF research library · 5 min read

Noisy Floquet Ising chain: scientific and packaging specification

r34 documentation · floquet-specification.md · Formatted reading copy

On this page
  1. Controls and conventions
  2. Exact cycle
  3. Required observables
  4. Program, outputs and full data
  5. Checks and evidence scope

This specification accompanies ../qiskit_floquet_spin_chain.json. The bundle is a complete private workflow with Python source, controls, output declarations and three analytic checks. It uses the Polynomial sweep's bundle structure; none of the polynomial calculation is retained. It is a deterministic local Qiskit simulation with no quantum hardware or network calls.

Controls and conventions

Input Default Supported values Meaning
n 6 integer 2–8 Number of qubits
cycles 8 integer 0–16 Complete Floquet cycles
J 0.34 0–pi, radians Ising coupling in RZZ(2J)
h 0.71 0–pi, radians Transverse rotation in RX(2h)
p 0.025 0–0.5 Independent phase-flip probability per qubit per cycle
boundary ring open, ring Nearest-neighbor edge selection
initial_state neel neel, zero Product-state preparation

Computational-basis indexing is little endian: qubit q0 is the least-significant bit. The Neel preparation has q0=0, q1=1, q2=0, and so on; the six-qubit basis index is 42. The zero preparation sets every qubit to 0. Let the corresponding statevector be psi_0 and density matrix be rho_0 = |psi_0><psi_0|.

For an open chain, include each undirected edge (0,1), (1,2), ..., (n-2,n-1) once. For a ring, add (n-1,0) only when n>2. A two-qubit ring therefore has one edge, not two copies of the same coupling.

Exact cycle

Use Pauli operators X and Z with eigenvalues +1 and -1. Define

U_ZZ = product_(i,j in edges) exp(-i J Z_i Z_j)

U_X = product_(q=0,...,n-1) exp(-i h X_q)

U = U_X U_ZZ.

Qiskit's gate angles are RZZ(2J) and RX(2h). Apply all ZZ gates before any X rotation. Evolve the ideal reference as psi_(k+1) = U psi_k.

For the noisy state, first compute rho' = U rho_k U†. Then apply, once on every qubit, the channel E_q(rho) = (1-p) rho + p Z_q rho Z_q. Thus rho_(k+1) = E_(n-1)(...E_1(E_0(rho'))...). Qiskit Kraus operators are sqrt(1-p) I and sqrt(p) Z. These are exact density-matrix channels, without shot sampling or a surrogate calculation.

Record cycle 0 and every complete cycle after noise. Couplings are dimensionless rotation parameters expressed in radians; the cycle index is the time axis.

Required observables

Compute each observable from the state at the same cycle:

Result metric Definition
fidelity `Re(<psi_ideal
purity Re Tr(rho²)
magnetization Mean of <Z_q> over all n qubits
zz_correlation Mean of <Z_i Z_j> over the defined undirected edges
half_entropy_bits S(rho_A), A is the low-index floor(n/2) qubits
mutual_information_bits S(rho_A) + S(rho_B) - S(rho)

Here S(sigma) = -sum(lambda log2(lambda)) is von Neumann entropy in bits; zero eigenvalues contribute zero. B is the complementary set of qubits. The implementation symmetrizes a temporary matrix for entropy eigenvalues and clips negative numerical roundoff; it rejects eigenvalues below -1e-10 and does not alter the evolved density matrix. Fidelity is the defined ideal-state overlap, not a separately defined Loschmidt echo or overlap with the initial state.

Program, outputs and full data

The bundle has schema_version: 1, adapter python, entrypoint main.py:run, and exact requirements Qiskit 2.5.2 and NumPy 2.3.5. These versions must already be provisioned in the selected executor; declaring them does not install packages.

Return the six final metrics, six complete cycle series, a table of every observable, the trajectory and conventions, and these real files under context.output_dir:

  • observables.csv: cycle plus all six observables, including cycle 0.
  • final_states.json: full final noisy density matrix and ideal statevector, each with separate real and imag arrays. Preserve all floating-point entries without deliberate rounding.

For n<=7, data.final_density_matrix and data.final_ideal_statevector also contain the arrays inline. For n=8 they contain artifact_path: "final_states.json" and the respective json_pointer, /final_density_matrix or /final_ideal_statevector. data.state_artifact identifies the file, shapes and whether inline arrays are present. All file entries are explicitly declared as kind: "file" outputs. The artifact is the full-data source for every supported n.

At n=8 the complex density matrix alone contains 131,072 real-valued scalar components before container nodes. Its inline representation exceeds r34's 100,000-value-node quota; it may also exceed the independent 2 MiB compact-JSON byte quota. Moving its serialization to an artifact changes neither the physics nor the array precision. The chosen 2–8 qubit and 0–16 cycle ranges are this example's supported configuration, not universal platform capacity limits.

Checks and evidence scope

The three declared workflow checks use absolute tolerance 2e-10 and relative tolerance 0: the six-qubit zero-cycle Neel state; noiseless four-qubit evolution with fidelity and purity one; and the stationary all-zero three-qubit state when h=0, including p=0.5 noise. The zero-cycle check additionally verifies one trajectory row; the noiseless check verifies six rows.

The earlier internal study independently compared 16 cases, 131 trajectory points and full final states with a separately authored NumPy implementation. It covered open/ring boundaries, the two-qubit edge, alternate preparation, zero coupling/rotation, zero cycles, noiseless evolution and maximal dephasing, including n=8/cycles=16. The nearby HISTORICAL_VALIDATION.json is a compact record of that earlier evidence, not a new full comparison. It also records the original output-size failure and serialization repair.

During the guide revision, the dedicated developer helper can freshly execute the default, n=8/cycles=16 and three analytic cases, check output contracts/artifacts and physical invariants, and compare the two nontrivial final metric sets against the retained independent reference. This narrower rerun must be reported separately. Neither study establishes production Docker isolation or a configured live r34 model-provider authoring call. The generating agent also used the source contracts; the PDF alone was not its sole input.