diff --git a/src/bloqade/factory.py b/src/bloqade/factory.py index b41de9d63..1d299cfc8 100644 --- a/src/bloqade/factory.py +++ b/src/bloqade/factory.py @@ -9,9 +9,13 @@ from bloqade.submission.ir.capabilities import QuEraCapabilities -def get_capabilities() -> "QuEraCapabilities": +def get_capabilities(use_experimental: bool = False) -> "QuEraCapabilities": """Get the device capabilities for Aquila + Args: + use_experimental (bool): Get experimental capabilities instead of + standard ones. By default value is False. + Returns: QuEraCapabilities: capabilities object for Aquila device. @@ -28,7 +32,9 @@ def get_capabilities() -> "QuEraCapabilities": from bloqade.submission.capabilities import get_capabilities # manually convert to units - return get_capabilities().scale_units(Decimal("1e6"), Decimal("1e-6")) + return get_capabilities(use_experimental=use_experimental).scale_units( + Decimal("1e6"), Decimal("1e-6") + ) @beartype diff --git a/src/bloqade/submission/capabilities.py b/src/bloqade/submission/capabilities.py index 9ba4c40e9..d4bc4c75c 100644 --- a/src/bloqade/submission/capabilities.py +++ b/src/bloqade/submission/capabilities.py @@ -4,8 +4,11 @@ # TODO: Create unit converter for capabilities -def get_capabilities() -> QuEraCapabilities: +def get_capabilities(use_experimental: bool = False) -> QuEraCapabilities: base_path = os.path.dirname(__file__) - full_path = os.path.join(base_path, "config", "capabilities.json") + if use_experimental: + full_path = os.path.join(base_path, "config", "experimental_capabilities.json") + else: + full_path = os.path.join(base_path, "config", "capabilities.json") with open(full_path, "r") as io: return QuEraCapabilities(**json.load(io)) diff --git a/src/bloqade/submission/config/experimental_capabilities.json b/src/bloqade/submission/config/experimental_capabilities.json new file mode 100644 index 000000000..6683408bc --- /dev/null +++ b/src/bloqade/submission/config/experimental_capabilities.json @@ -0,0 +1,53 @@ +{ + "version": "1.1", + "capabilities": { + "task": { + "number_shots_min": 1, + "number_shots_max": 1000 + }, + "lattice": { + "number_qubits_max": 256, + "area": { + "width": 7.5E-5, + "height": 1.28E-4 + }, + "geometry": { + "spacing_radial_min": 4.0E-6, + "spacing_vertical_min": 2.0E-6, + "position_resolution": 1.0E-8, + "number_sites_max": 256 + } + }, + "rydberg": { + "c6_coefficient": 5.42E-24, + "global": { + "rabi_frequency_min": 0.0, + "rabi_frequency_max": 1.58E7, + "rabi_frequency_resolution": 400.0, + "rabi_frequency_slew_rate_max": 4.0E14, + "detuning_min": -1.25E8, + "detuning_max": 1.25E8, + "detuning_resolution": 0.2, + "detuning_slew_rate_max": 6.0E15, + "phase_min": -99.0, + "phase_max": 99.0, + "phase_resolution": 5.0E-7, + "time_min": 0.0, + "time_max": 4.0E-6, + "time_resolution": 1.0E-9, + "time_delta_min": 5.0E-8 + }, + "local": { + "detuning_min": 0.0, + "detuning_max": 1.25E8, + "detuning_slew_rate_max": 1.2566E15, + "site_coefficient_min": 0.0, + "site_coefficient_max": 1.0, + "number_local_detuning_sites": 200, + "spacing_radial_min": 5.0E-6, + "time_resolution": 1.0E-9, + "time_delta_min": 5.0E-8 + } + } + } +} \ No newline at end of file