diff --git a/.github/workflows b/.github/workflows new file mode 160000 index 0000000..9208e86 --- /dev/null +++ b/.github/workflows @@ -0,0 +1 @@ +Subproject commit 9208e8663ef7707ad74ebf4ea44b1f4e045b25c9 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..85c3f68 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +*.jl.*.cov +*.jl.cov +*.jl.mem +/Manifest.toml +/deps/build.log +/docs/build/ + +/.history diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..92d9e90 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Hauiming Yu and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Project.toml b/Project.toml new file mode 100644 index 0000000..f9bddce --- /dev/null +++ b/Project.toml @@ -0,0 +1,22 @@ +name = "QuanEstimation" +uuid = "088c8dff-a786-4a66-974c-03d3f6773f87" +authors = ["Hauiming Yu and contributors"] +version = "0.1.0" + +[deps] +DifferentialEquations = "0c46a032-eb83-5123-abaf-570d42b7fbaa" +JLD = "4138dd39-2aa7-5051-a626-17a0bb65d9c8" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +SharedArrays = "1a1011a3-84de-559e-8e89-a11a2f7dc383" +SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[compat] +julia = "1.6.2" + +[extras] +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[targets] +test = ["Test"] diff --git a/README.md b/README.md index dc9c6a9..6af71d0 100644 --- a/README.md +++ b/README.md @@ -1 +1,6 @@ -# QuanEstimation.jl \ No newline at end of file +# QuanEstimation + +[![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://HuaimingYuuu.github.io/QuanEstimation.jl/stable) +[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://HuaimingYuuu.github.io/QuanEstimation.jl/dev) +[![Build Status](https://github.com/HuaimingYuuu/QuanEstimation.jl/workflows/CI/badge.svg)](https://github.com/HuaimingYuuu/QuanEstimation.jl/actions) +[![Coverage](https://codecov.io/gh/HuaimingYuuu/QuanEstimation.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/HuaimingYuuu/QuanEstimation.jl) diff --git a/docs/Manifest.toml b/docs/Manifest.toml new file mode 100644 index 0000000..7c574be --- /dev/null +++ b/docs/Manifest.toml @@ -0,0 +1,97 @@ +# This file is machine-generated - editing it directly is not advised + +[[ANSIColoredPrinters]] +git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c" +uuid = "a4c015fc-c6ff-483c-b24f-f7ea428134e9" +version = "0.0.1" + +[[Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "a32185f5428d3986f47c2ab78b1f216d5e6cc96f" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.8.5" + +[[Documenter]] +deps = ["ANSIColoredPrinters", "Base64", "Dates", "DocStringExtensions", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "REPL", "Test", "Unicode"] +git-tree-sha1 = "350dced36c11f794c6c4da5dc6493ec894e50c16" +uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +version = "0.27.5" + +[[IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "f7be53659ab06ddc986428d3a9dcc95f6fa6705a" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.2" + +[[InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "8076680b162ada2a031f707ac7b4953e30667a37" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.2" + +[[LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" + +[[Parsers]] +deps = ["Dates"] +git-tree-sha1 = "477bf42b4d1496b454c10cce46645bb5b8a0cf2c" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.0.2" + +[[Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[QuanEstimation]] +path = ".." +uuid = "088c8dff-a786-4a66-974c-03d3f6773f87" +version = "0.1.0" + +[[REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[Random]] +deps = ["Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" + +[[Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" diff --git a/docs/Project.toml b/docs/Project.toml new file mode 100644 index 0000000..5f54614 --- /dev/null +++ b/docs/Project.toml @@ -0,0 +1,3 @@ +[deps] +Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +QuanEstimation = "088c8dff-a786-4a66-974c-03d3f6773f87" diff --git a/docs/make.jl b/docs/make.jl new file mode 100644 index 0000000..d356f6d --- /dev/null +++ b/docs/make.jl @@ -0,0 +1,23 @@ +using QuanEstimation +using Documenter + +DocMeta.setdocmeta!(QuanEstimation, :DocTestSetup, :(using QuanEstimation); recursive=true) + +makedocs(; + modules=[QuanEstimation], + authors="Hauiming Yu and contributors", + repo="https://github.com/HuaimingYuuu/QuanEstimation.jl/blob/{commit}{path}#{line}", + sitename="QuanEstimation.jl", + format=Documenter.HTML(; + prettyurls=get(ENV, "CI", "false") == "true", + canonical="https://HuaimingYuuu.github.io/QuanEstimation.jl", + assets=String[], + ), + pages=[ + "Home" => "index.md", + ], +) + +deploydocs(; + repo="github.com/HuaimingYuuu/QuanEstimation.jl", +) diff --git a/docs/src/index.md b/docs/src/index.md new file mode 100644 index 0000000..7d82778 --- /dev/null +++ b/docs/src/index.md @@ -0,0 +1,12 @@ +```@meta +CurrentModule = QuanEstimation +``` + +# QuanEstimation + +```@index +``` + +```@autodocs +Modules = [QuanEstimation] +``` diff --git a/src/QuanEstimation.jl b/src/QuanEstimation.jl new file mode 100644 index 0000000..bca0012 --- /dev/null +++ b/src/QuanEstimation.jl @@ -0,0 +1,3 @@ +module QuanEstimation + +end \ No newline at end of file diff --git a/src/opt_target.jl b/src/opt_target.jl new file mode 100644 index 0000000..f7a5864 --- /dev/null +++ b/src/opt_target.jl @@ -0,0 +1,20 @@ +abstract type AbstractOpt end + +struct Opt <: AbstractOpt + opt_target::Symbol +end + +struct ControlOpt<:Opt end +struct StateOpt<:Opt end +struct MeasurementOpt<:Opt end +struct CompOpt<:Opt end +struct StateControlOpt<:CompOpt end +struct StateMeasurementOpt<:CompOpt end +struct StateControlMeasurementOpt<:CompOpt end + +ControlOpt() = ControlOpt(:Copt) +StateOpt() = StateOpt(:Sopt) +MeasurementOpt() = MeasurementOpt(:Mopt) +StateControlOpt() = StateControlOpt(:SCopt) +StateMeasurementOpt() = StateMeasurementOpt(:SMopt) +StateControlMeasurementOpt() = StateControlMeasurementOpt(:SCMOpt) \ No newline at end of file diff --git a/src/struct.jl b/src/struct.jl new file mode 100644 index 0000000..d10af0d --- /dev/null +++ b/src/struct.jl @@ -0,0 +1,12 @@ +abstract type AbstractSystem end + +mutable struct QuanEstSystem{T<:AbstractOpt, F<:AbstractObjective, A<:AbstractAlogrithm, D<:AbstractDynamics, O<:AbstractOutput} <:AbstractSystem + opt::T + objective::F + algorithm::A + dynamics::D + output::O +end + + + diff --git a/test/runtests.jl b/test/runtests.jl new file mode 100644 index 0000000..d251e80 --- /dev/null +++ b/test/runtests.jl @@ -0,0 +1,6 @@ +using QuanEstimation +using Test + +@testset "QuanEstimation.jl" begin + # Write your tests here. +end