From 26167ad36ba76e3436852a150a01ca0a4e80ff2c Mon Sep 17 00:00:00 2001 From: jingx <50790703+chooron@users.noreply.github.com> Date: Thu, 5 Dec 2024 10:58:56 +0800 Subject: [PATCH] rm all --- .cursorrules | 122 -- .github/workflows/TagBot.yml | 33 - .github/workflows/documentation.yml | 30 - .vscode/launch.json | 17 - .vscode/settings.json | 3 - DesignMind.md | 114 -- WorkLog.md | 166 -- doc/.vscode/settings.json | 1 - index.md | 123 -- project/KAN-Embed/Manifest.toml | 2217 --------------------------- project/KAN-Embed/Project.toml | 5 - project/KAN-Embed/src/KANEmbed.jl | 17 - project/KAN-Embed/src/models.jl | 0 temp/build_statefunc.jl | 94 -- temp/estimator.jl | 57 - temp/graph.jl | 129 -- temp/muskingum_disc.jl | 76 - temp/optimize.jl | 89 -- temp/test_lag_ele.jl | 23 - temp/test_lag_flux.jl | 50 - temp/test_msk.jl | 95 -- temp/test_routeflux.jl | 48 - temp/test_something.jl | 16 - temp/train_lstm_in_opt.jl | 73 - 24 files changed, 3598 deletions(-) delete mode 100644 .cursorrules delete mode 100644 .github/workflows/TagBot.yml delete mode 100644 .github/workflows/documentation.yml delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/settings.json delete mode 100644 DesignMind.md delete mode 100644 WorkLog.md delete mode 100644 doc/.vscode/settings.json delete mode 100644 index.md delete mode 100644 project/KAN-Embed/Manifest.toml delete mode 100644 project/KAN-Embed/Project.toml delete mode 100644 project/KAN-Embed/src/KANEmbed.jl delete mode 100644 project/KAN-Embed/src/models.jl delete mode 100644 temp/build_statefunc.jl delete mode 100644 temp/estimator.jl delete mode 100644 temp/graph.jl delete mode 100644 temp/muskingum_disc.jl delete mode 100644 temp/optimize.jl delete mode 100644 temp/test_lag_ele.jl delete mode 100644 temp/test_lag_flux.jl delete mode 100644 temp/test_msk.jl delete mode 100644 temp/test_routeflux.jl delete mode 100644 temp/test_something.jl delete mode 100644 temp/train_lstm_in_opt.jl diff --git a/.cursorrules b/.cursorrules deleted file mode 100644 index e4708b1..0000000 --- a/.cursorrules +++ /dev/null @@ -1,122 +0,0 @@ - -You are an expert in Julia language programming, data science, and numerical computing. - -Key Principles -- Write concise, technical responses with accurate Julia examples. -- Leverage Julia's multiple dispatch and type system for clear, performant code. -- Prefer functions and immutable structs over mutable state where possible. -- Use descriptive variable names with auxiliary verbs (e.g., is_active, has_permission). -- Use lowercase with underscores for directories and files (e.g., src/data_processing.jl). -- Favor named exports for functions and types. -- Embrace Julia's functional programming features while maintaining readability. - -Julia-Specific Guidelines -- Use snake_case for function and variable names. -- Use PascalCase for type names (structs and abstract types). -- Add docstrings to all functions and types, reflecting the signature and purpose. -- Use type annotations in function signatures for clarity and performance. -- Leverage Julia's multiple dispatch by defining methods for specific type combinations. -- Use the `@kwdef` macro for structs to enable keyword constructors. -- Implement custom `show` methods for user-defined types. -- Use modules to organize code and control namespace. - -Function Definitions -- Use descriptive names that convey the function's purpose. -- Add a docstring that reflects the function signature and describes its purpose in one sentence. -- Describe the return value in the docstring. -- Example: - ```julia - """ - process_data(data::Vector{Float64}, threshold::Float64) -> Vector{Float64} - - Process the input `data` by applying a `threshold` filter and return the filtered result. - """ - function process_data(data::Vector{Float64}, threshold::Float64) - # Function implementation - end - ``` - -Struct Definitions -- Always use the `@kwdef` macro to enable keyword constructors. -- Add a docstring above the struct describing each field's type and purpose. -- Implement a custom `show` method using `dump`. -- Example: - ```julia - """ - Represents a data point with x and y coordinates. - - Fields: - - `x::Float64`: The x-coordinate of the data point. - - `y::Float64`: The y-coordinate of the data point. - """ - @kwdef struct DataPoint - x::Float64 - y::Float64 - end - - Base.show(io::IO, obj::DataPoint) = dump(io, obj; maxdepth=1) - ``` - -Error Handling and Validation -- Use Julia's exception system for error handling. -- Create custom exception types for specific error cases. -- Use guard clauses to handle preconditions and invalid states early. -- Implement proper error logging and user-friendly error messages. -- Example: - ```julia - struct InvalidInputError <: Exception - msg::String - end - - function process_positive_number(x::Number) - x <= 0 && throw(InvalidInputError("Input must be positive")) - # Process the number - end - ``` - -Performance Optimization -- Use type annotations to avoid type instabilities. -- Prefer statically sized arrays (SArray) for small, fixed-size collections. -- Use views (@views macro) to avoid unnecessary array copies. -- Leverage Julia's built-in parallelism features for computationally intensive tasks. -- Use benchmarking tools (BenchmarkTools.jl) to identify and optimize bottlenecks. - -Testing -- Use the `Test` module for unit testing. -- Create one top-level `@testset` block per test file. -- Write test cases of increasing difficulty with comments explaining what is being tested. -- Use individual `@test` calls for each assertion, not for blocks. -- Example: - ```julia - using Test - - @testset "MyModule tests" begin - # Test basic functionality - @test add(2, 3) == 5 - - # Test edge cases - @test add(0, 0) == 0 - @test add(-1, 1) == 0 - - # Test type stability - @test typeof(add(2.0, 3.0)) == Float64 - end - ``` - -Dependencies -- Use the built-in package manager (Pkg) for managing dependencies. -- Specify version constraints in the Project.toml file. -- Consider using compatibility bounds (e.g., "Package" = "1.2, 2") to balance stability and updates. - -Code Organization -- Use modules to organize related functionality. -- Separate implementation from interface by using abstract types and multiple dispatch. -- Use include() to split large modules into multiple files. -- Follow a consistent project structure (e.g., src/, test/, docs/). - -Documentation -- Write comprehensive docstrings for all public functions and types. -- Use Julia's built-in documentation system (Documenter.jl) for generating documentation. -- Include examples in docstrings to demonstrate usage. -- Keep documentation up-to-date with code changes. - \ No newline at end of file diff --git a/.github/workflows/TagBot.yml b/.github/workflows/TagBot.yml deleted file mode 100644 index ba6db9e..0000000 --- a/.github/workflows/TagBot.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: TagBot -on: - issue_comment: - types: - - created - workflow_dispatch: - inputs: - lookback: - default: "3" -permissions: - actions: read - checks: read - contents: write - deployments: read - issues: read - discussions: read - packages: read - pages: read - pull-requests: read - repository-projects: read - security-events: read - statuses: read -jobs: - TagBot: - if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot' - runs-on: ubuntu-latest - steps: - - uses: JuliaRegistries/TagBot@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - # Edit the following line to reflect the actual name of the GitHub Secret containing your private key - ssh: ${{ secrets.DOCUMENTER_KEY }} - # ssh: ${{ secrets.NAME_OF_MY_SSH_PRIVATE_KEY_SECRET }} \ No newline at end of file diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml deleted file mode 100644 index b01909c..0000000 --- a/.github/workflows/documentation.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Documentation - -on: - push: - branches: - - main - tags: '*' - pull_request: - -jobs: - build: - permissions: - contents: write - statuses: write - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: julia-actions/setup-julia@v1 - with: - version: '1.10' - - name: Install dependencies - run: | - julia --project=doc/ -e ' - using Pkg - Pkg.develop(PackageSpec(path=pwd())) - Pkg.instantiate()' - - name: Build and deploy - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: julia --project=doc/ doc/make.jl diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 526954d..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - // 使用 IntelliSense 了解相关属性。 - // 悬停以查看现有属性的描述。 - // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "julia", - "request": "launch", - "name": "Run active Julia file", - "program": "${file}", - "stopOnEntry": false, - "cwd": "${workspaceFolder}", - "juliaEnv": "${command:activeJuliaEnvironment}" - } - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 6107323..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "editor.fontSize": 16 -} \ No newline at end of file diff --git a/DesignMind.md b/DesignMind.md deleted file mode 100644 index 0d74040..0000000 --- a/DesignMind.md +++ /dev/null @@ -1,114 +0,0 @@ -# LumpedHydro.jl 设计思路 - -## 这个包的目标是什么? - -- 适用于概念性水文模型搭建,以及物理耦合的深度学习模型搭建 -- 继承superflex和MARRMoT各自的优缺点,构建新的水文模型构建框架,具体来说: - - 沿用superflex的构建框架,即element,node,network等 - - 沿用MARRMoT的flux function构建思路,使不同计算模块实现分类管理 - - **保证各模块的随机组合的可行性,当前计算模块可粗略分为SnowWater, SoilWater和RoutingStore三种** -- 提供区域多模型按权重预测(Node),提供半分布式水文模型搭建(Network) - -## 这个包的使用风格应该是什么样子的? - -`flux -> Element -> Node -> Network` - -- Function根据参数不同分派不同函数计算 - - ``` - baseflow(i::NamedTuple, p::NamedTuple, sf::Function) - ``` -- 让概念性水文模型的搭建像torch,lux这样,每个中间通量的计算都应该是一个层 - - ```julia - model = build_unit( - name=name, - elements=elements - ) - - model = Unit( - name=name, - surface=surf_ele, - soil=soil_eles, - route=route_ele, - ) - ``` -- 每个element又是由多个flux function所组成的,包中已经内置了大量的flux function和构成的element - - ``` - func1 = flux_func(input...;params...) - element = Element( - func1, - func2; - params..., - config... - ) - ``` -- 构建模型中,应该有构建合理性的校验和提示功能,主要的提示功能就是对模型各层计算数据是否存在缺失的功能,并对于缺失的模块提出增加建议 -- 深度学习模型嵌入应该是作为特殊的function进行嵌入 -- Element是由多个function组合而成,要保证能使用既有的func也能使用自定义的func -- 一般而言模型自身不携带任何数据,一般通过外界参数输入或参数估计器输入 - -## Unit的特性 - -- unit将分为三个基础层:~~surface,soil,route~~ snow,surface, soil, free water, route -- surface层可以对应于,深度学习模型的input层,其中可能就是简单的信息传输,也可能会存在融雪模块需要ode计算 -- soil层可以包含多个element层,通常土壤的element都会认为时非线性水库,通常需要ode模块求解 -- route层由于lagflux的限制,无法参与其他element进行联合计算,同样部分route层也会涉及ode计算 - -### Surface层特性 - -- surface层接受气象要素的输入,包括降雨,潜在蒸发,气温,日照时常等 -- surface层的输出,全部统一名称为infiltration -- surface层还可以考虑一些不透水的情况,直接产出地表径流 - -### Soil层特性 - -- 受水箱模型的启发,soil层设计为可以包括多个element,设定为上下层等土壤分层 -- soil层第一层的输入需要与surface层对接,所以接受变量必须为infiltration -- soil层会根据层数得出不同数量的出流量,每个层基本对应一个中间计算模块 -- 水文模型的核心计算模块,通常代表模型的基本输入 -- 模型输出为flow,包括: - 1. 单一flow,如Exphydro - 2. Fastflow和Slowflow, 如GR4J - 3. Surfaceflow, Interflow, Baseflow三层 -- 模型输入需要统一,比如Infiltration,Pet - -### State Element的特性(或者是需求) - -influxes, outfluxes, statefluxes - -state elmement 有时候会有需求,即添加input flux和output flux从而灵活改变state flux的计算结果, - -但是这种可能会引入一些难以命名的变量(m50) - - -## 以后的一种构建方式 - -```julia - -bucket = @hydrobucket begin - @varaibles a b c d e f - @parameters k1 k2 - - @fluxes begin - b ~ a + k1 - c ~ b + k2 - [e, f] ~ model([b, c]) - end - - @states begin - d ~ b - c - end -end - -route = @hydroroute begin - @variables q - @parameters k - q ~ k * d -end - -model = @hydromodel begin - bucket, route -end -``` \ No newline at end of file diff --git a/WorkLog.md b/WorkLog.md deleted file mode 100644 index 0566f88..0000000 --- a/WorkLog.md +++ /dev/null @@ -1,166 +0,0 @@ -# Coding Log - -- [X] 模型构建中需要调整fluxes的输入变量名称和输出变量名称 -- [X] fluxes的function返回值过于固定,不够灵活 -- [X] LAG Element无法参与整体ode的计算(可以参与计算但是兼容性很差,lagflux需要中间状态的缓冲计算) -- [X] SimpleFlux和HydroFlux无明显差异性 -- [X] 构建多个function时,系统无法实现根据不同参数实现function的参数分配 -- [X] 计算成本相对于普通计算成本显著加大 - - [X] 原element计算产生的时间成本为2s, 直接构建一个简单的方程为38ms左右, 采用mtk.jl为40ms左右,另加mtk系统构建时间8ms -- [X] 各种ODE如何各自进行计算的话会加大插值产生的计算成本多余 - - [X] 采用mtk.jl对element公式进行整合 -- [ ] ~~lagflux如何改造成mtk.jl~~ - - [ ] ~~lagflux改造成mtk的equations,在计算过程中其公式会不断发生改变~~ -- [X] mtk.jl貌似只能支持一对一输入输出(已解决) -- [X] **由于component的参数存在多重嵌套,在参数优化的定义中存在问题** -- [X] 当前需要找出ODEProblem在用ForwardDifferetial求解时存在的问题,需要构建一个demo来重现这个问题,猜测这个问题应该是可调参数与不可调参数引起的问题 -- [X] 需要将水文的三种模型进行拆分,LumpedHydro.jl, SpatialHydro.jl, ~~GridedHydro.jl~~ -- [X] routing function编写 -- [X] 创建模型搭建基础类 -- [X] 针对之前的模型进行ComponentArrays改造 -- [X] 0实参构建模型 -- [ ] 构建模型中,应该有构建合理性的校验和提示功能,主要的提示功能就是对模型各层计算数据是否存在缺失的功能,并对于缺失的模块提出增加建议 -- [X] 复现当前部分模型 -- [ ] web端口构造 -- [X] 在julia 1.10上完成部署 -- [ ] ~~StaticArrays或能够将性能进一步提升~~ - -- ~~ routing function的weight使用GuadGK.jl求解~~ - -- [X] 针对之前的模型进行ModelingToolkit改造 -- [X] **完善参数优化模块,包括模型参数优化,神经网络参数优化和混合参数优化** -- [ ] **提供自定义ODE求解,人为通过离散的方式求解,适应多数论文的计算,需要对比与DiscreteProblem之间的求解速度差距** -- [X] 将lag function嵌入至Node模块中 -- [ ] Node中添加参数共享的设置 -- [X] 将多个unit糅合到一块后应该如何表示参数,中间状态等参数,可以像lux.jl那样表示,比较清楚 -- [ ] Node和Network的并行计算 -- [ ] 搭建参数动态估计问题 -- [ ] 如何将水文通量(Flux)转换成一系列类似于MTKstandarylibrary.jl那样的模块 -- [X] input数据采用namedtuple类型,参数采用ComponentArray类型 -- [X] superflexpy中unit是否具有存在意义, unit简单来说就是多个element的组合,可以考虑直接用elements list替代 -- [X] 将input_names, output_names等信息通过函数调度,不作为模型存储的属性 -- [X] Node将取消坡面汇流功能,将坡面汇流功能直接写在elements中 -- [X] 参数信息的提取,可能需要进一步改进 -- [X] 模型输入包括输入和参数,其中输入类型为NamedTuple,而参数为ComponentArray -- [X] 增加flux的图计算功能,保证即使flux顺序是混乱的也能够得到结果,并提供element增加出入通量的能力 -- [ ] 构建node时提供构建信息 -- [ ] HBV计算结果有问题 -- [X] M50无法实现在mtk下计算,以及step=false下计算 -- [X] 将输入数据修改为StructArray类型 -- [ ] **~~根据macro提供一个自动生成模型计算的函数~~** -- [X] 根据计算网络结构迭代计算模型 -- [X] LumpedHydro.jl中不考虑Node这个结构了,这个结构直接移至到SpatialHydro.jl -- [X] stateflux生成临时函数时存在问题 -- [ ] sort_elements_by_topograph函数异常,或考虑不使用自动判断element计算顺序 -- [X] 新增dPL-HBV, ENN, ~~PRNN~~ -- [X] **~~NeuralFlux嵌入到dfunc无法生成耦合函数~~** - - 当前输入变量只能是@varaibles (v(t))[1:4]这种类型,但这种类型或无法实现变量的替换 - - 考虑的方法是将nnflux前所有flux套入至nnflux中,但这种方式不行,因为nnflux前面可能还有nnflux -- [X] 我想让Flux的构建方式能够更有可读性,就是输入输出变量用键值对来连接 - -- ~~ 我记得当前在mtk框架下仍然难以通过AutoZygote的测试,这一块需要进一步完善~~ - -- [X] 非mtk框架下由于多次使用namedtuple,模型的计算性能还是不够好 -- [ ] ~~记得本来采用StructArray,能够有效的避免反复计算带来的问题~~ -- [ ] 自定义base.show -- [ ] ~~Zygote虽然不能用于mutable array, 但是可以通过chainrule执行自定义的rrule规则~~(不能对矩阵内部进行替换) -- [X] optimize需要提供多组数据训练的功能 -- [ ] 当前optimization只针对于参数率定功能,后续可能会考虑 -- [ ] 提供实时更新、添加、删除以及提示信息(包括当前element的输入输出) -- [X] 当前lagflux仅起到了信息记录作用,或可以删除=>改成routeflux可以用于各种汇流计算 -- [X] neuralflux的参数或需要与其他参数独立出来,在分布式计算中不能对每个单元格都分配一个神经网络参数,故一般是一个统一的神经网络,所以参数类型为(ps=..., st=...., nn=...,) -- [ ] ~~模型输入的pas,三个主要键名:ps,st,nn~~ -- [ ] 参数输入校验工作 -- [X] Route 类型的构建 - - [X] 马斯京跟 - - [X] 单位线 - - [X] hydrodischarge -- [ ] 使用macro构建simpleflux, @simpleflux var => expr, @lagflux var=> (flux, unithydro, lagtime), @stateflux var => expr, @neuralflux var => (input, nn) ,参考代码(temp/mtk_marco.jl): -- [X] 当前DataInterpolations.jl在v5.0.0版本才兼容,其他版本存在问题 -- [ ] DiscreteProblem似乎无法通过梯度优化 -- [X] 构建了flux的计算匿名函数与state一致,**这时候就需要额外构建针对lag flux的element了** -- [X] 中间计算转为matrix合并的方式存储信息,效率显著提高 -- [ ] 值得注意的是route flux可以分为两种,第一种类似于单位线这种,是在所有数据输入后才能计算出最终结果,第二种可以在一个时段后就可以得到汇流结果,比如马斯京根和cascade -- [X] 发现route这个过程可以理解成q_out转换为new_q_in的一个过程,不同就在于这个转换过程的不同 -- [X] 完成了routeflux的核心构建,实现route模块与routeflux模块的拆分 -- [X] 将routeflux细化成routeflux和unithydroflux两种类型 -- [ ] vectorflux求解方式好像更倾向于discrete求解 -- [ ] ~~将径流深(mm)转换为流量之后(m3/s),好像都不适用于continous solve, 这个需要进一步明确~~ -- [ ] 运行需要额外的需求,比如:分段运行(保存上一次运行的中间状态); 持续运行(更新每次计算状态) -- [ ] 需要添加log信息和运行状态展示,用于前端展示 -- [X] 马斯京根算法的连续性方程求解 -- [ ] 插值方法这类的时变函数,可以设计成一个TimeVaryingFlux, 这样就可以直接参与连续性方程的求解了,没有构建的必要,需要在生成function时注意t的输入 -- [X] 设置基于TimeVaryingFlux的插值Flux的可行性,由于对于不同模块,需要重新构建插值函数了,所以插值函数这块我认为是没必要构建的 -- [ ] 不同组的参数可能会分在不同组的ptypes下这个时候应该如何处理 -- [X] 可以将flux, implements, 这些内容单独弄一个库, 名为HydroModelLibrary.jl -- [ ] route这个涉及的计算大多是离散计算,因此不能执着于用连续方程的求解 -- [ ] SciMLOperators.jl待进一步研究,但是他还是不支持u的存储(限制于Zygote.jl) -- [X] routeflux可以采用一个route计算,每个routeflux能够反馈出不同的func,dfunc -- [ ] 加入macro编程,让书写更加简单 -- [ ] 需要考虑rapid这种类型的route如何写 -- [ ] GPU 支持 -- [ ] batch优化器功能的扩展 -- [ ] 计算状态非零设置 - -## 关键功能和实现技术 - -* [X] 基于julia多重分派的名称驱动代码风格,根据名称调用对应的flux - * [X] 该项目是以命名驱动为核心,但是在一些情况中创建一些并没有实际含义的变量 -* [X] Component基本计算实现, 涉及从某计算模块至整个流域汇流网络的计算 - * [X] 常微分方程求解(ModelingToolkit.jl, DifferentialEquations.jl) - * [X] 网络拓扑计算(Graphs.jl) -* [X] Component基础的param_optimize参数优化功能实现 - * [X] 参数优化 -* [X] 参数动态模拟估计,Time-vary parameter estimation -* [X] 神经网络耦合物理公式计算的混合参数优化(包括普通参数和神经网络参数) - -## 关于汇流计算的一些思考 - -vector-based河网汇流计算中, 设定了q_in, q_out, q_gen, 以及riv_st四种变量, - -在计算中: - -- 设定上游流域为i,下游为j, q_out(i,t-1)应该是作为下游入流量q_in(j,t), -- 其中q_out的计算应该包括两个部分,首先是该流域的入流的汇流计算结果,即: -- q_out(i,t) = route_func(q_in(i,t), riv_st(i,t)) + q_gen(i,t) -- q_out可以根据流域入流和河床状态计算出流量,此外还应当包括流域本身的产流量. - -在平衡计算中: - -- q_out(i,t-1)就可以作为q_in(j,t)来替换q_in(j,t-1) -- riv_st(i,t)=riv_st(i,t-1)+q_in(i,t)-q_out(i,t), 注q_gen没有显式参与计算,但其包括在下游j的q_in中参与计算的 - -关于汇流计算问题的定义,我认为河流汇流问题由于需要执行q_out在一定途径下转换为q_in的过程,而这个过程是不符合常微分方程的 - -### 关于汇流计算的一些新的思考 - -汇流计算可以分为两种,一种是离散型的计算,一种是连续型的计算: - -1. 离散型计算 - 离散性计算,是以马斯京根算法为代表,这类代码是根据上一个时段数据来计算当前时段的流量 - Qout(i,t+1) = Func(Qin(i,t+1), Qin(i,t), Qout(i,t),Qgen(i,t), spatial_info) - Qout(i,t+1) = Func(spatial(Qout(i,t+1)),spatial(Qout(i,t)),Qgen(i,t)) - 式中可以看出,Qin是由Qout转换而来,通常是根据空间的拓扑关系计算得到 - 这种问题的计算方式是采用DiscreteProblem来求解 -2. 连续型计算 - 连续型计算,是以单位线为代表,这类代码是根据当前时段数据来计算当前时段的流量 - Qout(i,t+1) = Func(Qin(i,t+1), Qin(i,t), Qout(i,t),Qgen(i,t), spatial_info) - Qout(i,t+1) = Func(spatial(Qout(i,t+1)),spatial(Qout(i,t)),Qgen(i,t)) - -### RouteFlux分类 - -RouteFlux可以分为两种类型: - -- 包括虚构状态,构建常微分方程的RouteFlux,命名为StateRouteFlux - 如: - 基于状态方程:ds/dt = I-Q - 然后Q是由S计算得到,Q=f(S;ps) -- 不包括虚构状态,构建的是流量的自相关关系的RouteFlux,命名为DynamicRouteFlux - 如Q(t+1) = f(Q(t);ps) - -## 类型的一些信息展示功能 - -类型信息展示可以分为两个大类: - -- 一种是应用层面的,给出模型输入需求,还有就是给出模型的输出成果信息,这种在编程上起到的作用会更多 -- 一种是理论层面的,需要给出计算公式,涉及的变量,参数有哪些,分别有什么作用 diff --git a/doc/.vscode/settings.json b/doc/.vscode/settings.json deleted file mode 100644 index 9e26dfe..0000000 --- a/doc/.vscode/settings.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/index.md b/index.md deleted file mode 100644 index 6f8ef08..0000000 --- a/index.md +++ /dev/null @@ -1,123 +0,0 @@ -```@meta -CurrentModule = HydroModels -``` - -# HydroModels.jl Documentation - -Welcome to the documentation of HydroModels.jl! - -## Overview - -HydroModels.jl is a Julia package for hydrological modeling. It provides a flexible framework for implementing and running various hydrological models. - -## Features - -- Flexible model structure -- Support for both single-node and multi-node simulations -- Various built-in hydrological models -- Easy-to-use interface for model implementation and execution - -## Getting Started - -To get started with HydroModels.jl, check out our tutorials: - - - -## Installation - -To install HydroModels.jl, use Julia's package manager: - -```julia -using Pkg -Pkg.add("HydroModels") -``` - -## Quick Example - -```julia -using HydroModels - -# Load model configuration -params = ComponentVector(f=0.01674478, Smax=1709.461015, Qmax=18.46996175, - Df=2.674548848, Tmax=0.175739196, Tmin=-2.092959084) -init_states = ComponentVector(snowpack=0.0, soilwater=1303.004248) - -# Run simulation -results = model(input_data, params, init_states) -``` - -## 运行一个ExpHydro水文模型 - -```julia -# import lib -using CSV -using DataFrames -using CairoMakie -using BenchmarkTools -using ComponentArrays -using HydroModels - -# load data -file_path = "data/exphydro/01013500.csv" -data = CSV.File(file_path); -df = DataFrame(data); -ts = collect(1:10000) -lday_vec = df[ts, "dayl(day)"] -prcp_vec = df[ts, "prcp(mm/day)"] -temp_vec = df[ts, "tmean(C)"] -flow_vec = df[ts, "flow(mm)"] - -# build model -model = LumpedHydro.ExpHydro.Unit(name=:exphydro, mtk=false) - -# setup parameters and initstates -f, Smax, Qmax, Df, Tmax, Tmin = 0.01674478, 1709.461015, 18.46996175, 2.674548848, 0.175739196, -2.092959084 -unit_params = (f=f, Smax=Smax, Qmax=Qmax, Df=Df, Tmax=Tmax, Tmin=Tmin) -unit_init_states = (snowwater=0.0, soilwater=1303.004248) -pas = ComponentVector((params=unit_params, initstates=unit_init_states, weight=1.0)) - -# run model -input = (prcp=prcp_vec, lday=lday_vec, temp=temp_vec) -solver = HydroModels.ODESolver(reltol=1e-3, abstol=1e-3) -result = model(input, pas, timeidx=ts, solver=solver); -result_df = DataFrame(result) - -# plot result -fig = Figure(size=(400, 300)) -ax = CairoMakie.Axis(fig[1, 1], title="predict results", xlabel="time", ylabel="flow(mm)") -lines!(ax, ts, flow_vec, color=:red) -lines!(ax, ts, result_df[!,"flow"], color=:blue) -fig -``` - - - -## 特性 - -* [X] 基于julia语言面向函数、多重分派的编程特性,形成了名称驱动的模型构建方式(见自定义模型构建) - - * [X] 通过输入输出以及参数名称快速搜索某一个通量的计算函数(见名称驱动的函数搜索方式) - * [X] 获取模块或模型的输入输出以及参数名称自动生成模型运行/优化所需参数的规范 - * [X] 能够实现在无实际参数情况下完成模型的构建,实现模型与模型参数的完全解耦 - * [X] 但是在一些情况中可能会创建一些并没有实际含义的变量 -* [X] 构建No MTK和MTK风格(MTK风格参见ModelingToolkit.jl)的常微分方程求解方法,适应不同需求的模型应用需求 - - * [X] No MTK风格通常确保最基础的计算能力,能够保证复杂情况的运行,但是计算性能略低于MTK风格 - * [X] MTK风格基于ModelingToolkit.jl构建ODESystem,有着更高的计算性能,但未知错误较多(见性能比较) -* [X] 统一式与逐步式的多模块或模型求解方式 - - * [X] 统一式求解方式是将多个模块中的通量计算函数整合到一个常微分方程中,减小中间变量的插值损失与计算成本 - * [X] 逐步式求解方式则是针对不同模块进行独立求解 -* [X] 基于网络拓扑计算的通量函数自动匹配计算和水文元素自动匹配计算 - - * [X] 通量函数之间可以通过输入输出的变量名称构建计算网,在搭建模块时能够不考虑通量函数的顺序,支撑模块临时添加通量函数的功能 - * [X] 河网汇流计算是基于各个节点的拓扑连接关系实现,需要并行计算各个节点的内置计算过程后按河网网络顺序计算实现各子流域汇流计算 -* [X] 提供NeuralFlux对象支持神经网络模型耦合水文模型,主要包括计算公式替换,模型参数估计 - - * [X] 在计算公式替换中,这个包可以根据Lux.jl构建的神经网络构建NeuralFlux并用于计算水文模型中某些通量,典型模型由m50 - * [X] 在模型参数估计中,这个包将参数作为一种无量纲的通量,并根据NeuralFlux作出预测,典型的有dPL模型 -* [X] 基于Optimization.jl提供模型参数的全局搜索(黑箱)和局部搜索(梯度)的优化算法 - - * [X] 提供BoxOptimization或更多算法,用于初步的模型参数优化 - * [X] 局部搜索或梯度则更多的用于神经网络内部权重的优化 diff --git a/project/KAN-Embed/Manifest.toml b/project/KAN-Embed/Manifest.toml deleted file mode 100644 index b79bb5a..0000000 --- a/project/KAN-Embed/Manifest.toml +++ /dev/null @@ -1,2217 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.10.4" -manifest_format = "2.0" -project_hash = "4f448e774a86a9b4f49775b85c93202adf1751cd" - -[[deps.ADTypes]] -git-tree-sha1 = "30bb95a372787af850addf28ac937f1be7b79173" -uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "1.10.0" -weakdeps = ["ChainRulesCore", "ConstructionBase", "EnzymeCore"] - - [deps.ADTypes.extensions] - ADTypesChainRulesCoreExt = "ChainRulesCore" - ADTypesConstructionBaseExt = "ConstructionBase" - ADTypesEnzymeCoreExt = "EnzymeCore" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" -weakdeps = ["ChainRulesCore", "Test"] - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - -[[deps.AbstractTrees]] -git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.5" - -[[deps.Accessors]] -deps = ["CompositionsBase", "ConstructionBase", "InverseFunctions", "LinearAlgebra", "MacroTools", "Markdown"] -git-tree-sha1 = "b392ede862e506d451fc1616e79aa6f4c673dab8" -uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" -version = "0.1.38" - - [deps.Accessors.extensions] - AccessorsAxisKeysExt = "AxisKeys" - AccessorsDatesExt = "Dates" - AccessorsIntervalSetsExt = "IntervalSets" - AccessorsStaticArraysExt = "StaticArrays" - AccessorsStructArraysExt = "StructArrays" - AccessorsTestExt = "Test" - AccessorsUnitfulExt = "Unitful" - - [deps.Accessors.weakdeps] - AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" - Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - Requires = "ae029012-a4dd-5104-9daa-d747884805df" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "50c3c56a52972d78e8be9fd135bfb91c9574c140" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.1.1" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AliasTables]] -deps = ["PtrArrays", "Random"] -git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" -uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" -version = "1.1.3" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.ArnoldiMethod]] -deps = ["LinearAlgebra", "Random", "StaticArrays"] -git-tree-sha1 = "d57bd3762d308bded22c3b82d033bff85f6195c6" -uuid = "ec485272-7323-5ecc-a04f-4719b315124d" -version = "0.4.0" - -[[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra"] -git-tree-sha1 = "d5140b60b87473df18cf4fe66382b7c3596df047" -uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.17.1" - - [deps.ArrayInterface.extensions] - ArrayInterfaceBandedMatricesExt = "BandedMatrices" - ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" - ArrayInterfaceCUDAExt = "CUDA" - ArrayInterfaceCUDSSExt = "CUDSS" - ArrayInterfaceChainRulesCoreExt = "ChainRulesCore" - ArrayInterfaceChainRulesExt = "ChainRules" - ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" - ArrayInterfaceReverseDiffExt = "ReverseDiff" - ArrayInterfaceSparseArraysExt = "SparseArrays" - ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" - ArrayInterfaceTrackerExt = "Tracker" - - [deps.ArrayInterface.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" - ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ArrayLayouts]] -deps = ["FillArrays", "LinearAlgebra"] -git-tree-sha1 = "492681bc44fac86804706ddb37da10880a2bd528" -uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" -version = "1.10.4" -weakdeps = ["SparseArrays"] - - [deps.ArrayLayouts.extensions] - ArrayLayoutsSparseArraysExt = "SparseArrays" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "0.1.0" - -[[deps.BFloat16s]] -deps = ["LinearAlgebra", "Printf", "Random", "Test"] -git-tree-sha1 = "2c7cc21e8678eff479978a0a2ef5ce2f51b63dff" -uuid = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" -version = "0.5.0" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Bijections]] -git-tree-sha1 = "d8b0439d2be438a5f2cd68ec158fe08a7b2595b7" -uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" -version = "0.1.9" - -[[deps.BitTwiddlingConvenienceFunctions]] -deps = ["Static"] -git-tree-sha1 = "f21cfd4950cb9f0587d5067e69405ad2acd27b87" -uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" -version = "0.1.6" - -[[deps.BlockArrays]] -deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra"] -git-tree-sha1 = "d434647f798823bcae510aee0bc0401927f64391" -uuid = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" -version = "1.1.1" - - [deps.BlockArrays.extensions] - BlockArraysBandedMatricesExt = "BandedMatrices" - - [deps.BlockArrays.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - -[[deps.BracketingNonlinearSolve]] -deps = ["CommonSolve", "ConcreteStructs", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] -git-tree-sha1 = "95cb19c37ea427617e9795655667712f03058d98" -uuid = "70df07ce-3d50-431d-a3e7-ca6ddb60ac1e" -version = "1.1.0" -weakdeps = ["ForwardDiff"] - - [deps.BracketingNonlinearSolve.extensions] - BracketingNonlinearSolveForwardDiffExt = "ForwardDiff" - -[[deps.CEnum]] -git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.5.0" - -[[deps.CPUSummary]] -deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] -git-tree-sha1 = "5a97e67919535d6841172016c9530fd69494e5ec" -uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" -version = "0.2.6" - -[[deps.CSTParser]] -deps = ["Tokenize"] -git-tree-sha1 = "0157e592151e39fa570645e2b2debcdfb8a0f112" -uuid = "00ebfdb7-1f24-5e51-bd34-a7502290713f" -version = "3.4.3" - -[[deps.CUDA]] -deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "Crayons", "DataFrames", "ExprTools", "GPUArrays", "GPUCompiler", "KernelAbstractions", "LLVM", "LLVMLoopInfo", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "NVTX", "Preferences", "PrettyTables", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "StaticArrays", "Statistics", "demumble_jll"] -git-tree-sha1 = "e0725a467822697171af4dae15cec10b4fc19053" -uuid = "052768ef-5323-5732-b1bb-66c8b64840ba" -version = "5.5.2" -weakdeps = ["ChainRulesCore", "EnzymeCore", "SpecialFunctions"] - - [deps.CUDA.extensions] - ChainRulesCoreExt = "ChainRulesCore" - EnzymeCoreExt = "EnzymeCore" - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.CUDA_Driver_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ccd1e54610c222fadfd4737dac66bff786f63656" -uuid = "4ee394cb-3365-5eb0-8335-949819d2adfc" -version = "0.10.3+0" - -[[deps.CUDA_Runtime_Discovery]] -deps = ["Libdl"] -git-tree-sha1 = "33576c7c1b2500f8e7e6baa082e04563203b3a45" -uuid = "1af6417a-86b4-443c-805f-a4643ffb695f" -version = "0.3.5" - -[[deps.CUDA_Runtime_jll]] -deps = ["Artifacts", "CUDA_Driver_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "ed8a056a88f5b852df94046060f6770a57334728" -uuid = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" -version = "0.15.4+0" - -[[deps.CUDNN_jll]] -deps = ["Artifacts", "CUDA_Runtime_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "9851af16a2f357a793daa0f13634c82bc7e40419" -uuid = "62b44479-cb7b-5706-934f-f13b2eb2e645" -version = "9.4.0+0" - -[[deps.Cassette]] -git-tree-sha1 = "f8764df8d9d2aec2812f009a1ac39e46c33354b8" -uuid = "7057c7e9-c182-5462-911a-8362d720325c" -version = "0.3.14" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "3e4b134270b372f2ed4d4d0e936aabaefc1802bc" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.25.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.CloseOpenIntervals]] -deps = ["Static", "StaticArrayInterface"] -git-tree-sha1 = "05ba0d07cd4fd8b7a39541e31a7b0254704ea581" -uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9" -version = "0.1.13" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "c7acce7a7e1078a20a285211dd73cd3941a871d6" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.12.0" - - [deps.ColorTypes.extensions] - StyledStringsExt = "StyledStrings" - - [deps.ColorTypes.weakdeps] - StyledStrings = "f489334b-da3d-4c2e-b8f0-e476e12c162b" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "64e15186f0aa277e174aa81798f7eb8598e0157e" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.13.0" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonMark]] -deps = ["Crayons", "PrecompileTools"] -git-tree-sha1 = "3faae67b8899797592335832fccf4b3c80bb04fa" -uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" -version = "0.8.15" - -[[deps.CommonSolve]] -git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" -uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" -version = "0.2.4" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools"] -git-tree-sha1 = "cda2cfaebb4be89c9084adaca7dd7333369715c5" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.1" - -[[deps.CommonWorldInvalidations]] -git-tree-sha1 = "ae52d1c52048455e85a387fbee9be553ec2b68d0" -uuid = "f70d9fcc-98c5-4d4a-abd7-e4cdeebd8ca8" -version = "1.0.0" - -[[deps.Compat]] -deps = ["TOML", "UUIDs"] -git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.16.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" - -[[deps.CompositeTypes]] -git-tree-sha1 = "bce26c3dab336582805503bed209faab1c279768" -uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" -version = "0.1.4" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" -weakdeps = ["InverseFunctions"] - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - -[[deps.ConcreteStructs]] -git-tree-sha1 = "f749037478283d372048690eb3b5f92a79432b34" -uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" -version = "0.2.3" - -[[deps.ConstructionBase]] -git-tree-sha1 = "76219f1ed5771adbb096743bff43fb5fdd4c1157" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.8" -weakdeps = ["IntervalSets", "LinearAlgebra", "StaticArrays"] - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseLinearAlgebraExt = "LinearAlgebra" - ConstructionBaseStaticArraysExt = "StaticArrays" - -[[deps.CpuId]] -deps = ["Markdown"] -git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406" -uuid = "adafc99b-e345-5852-983c-f28acb93d879" -version = "0.3.1" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.16.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "fb61b4812c49343d7ef0b533ba982c46021938a6" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.7.0" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DiffEqBase]] -deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "TruncatedStacktraces"] -git-tree-sha1 = "b7dbeaa770bad0980ddddf606de814cff2acb3bc" -uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.160.0" - - [deps.DiffEqBase.extensions] - DiffEqBaseCUDAExt = "CUDA" - DiffEqBaseChainRulesCoreExt = "ChainRulesCore" - DiffEqBaseDistributionsExt = "Distributions" - DiffEqBaseEnzymeExt = ["ChainRulesCore", "Enzyme"] - DiffEqBaseGeneralizedGeneratedExt = "GeneralizedGenerated" - DiffEqBaseMPIExt = "MPI" - DiffEqBaseMeasurementsExt = "Measurements" - DiffEqBaseMonteCarloMeasurementsExt = "MonteCarloMeasurements" - DiffEqBaseReverseDiffExt = "ReverseDiff" - DiffEqBaseSparseArraysExt = "SparseArrays" - DiffEqBaseTrackerExt = "Tracker" - DiffEqBaseUnitfulExt = "Unitful" - - [deps.DiffEqBase.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - GeneralizedGenerated = "6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" - MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" - Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" - MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.DiffEqCallbacks]] -deps = ["ConcreteStructs", "DataStructures", "DiffEqBase", "DifferentiationInterface", "Functors", "LinearAlgebra", "Markdown", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"] -git-tree-sha1 = "0b99b7d5b938a3f09b1552c304ff70e8d0379efd" -uuid = "459566f4-90b8-5000-8ac3-15dfb0a30def" -version = "4.2.1" - -[[deps.DiffEqNoiseProcess]] -deps = ["DiffEqBase", "Distributions", "GPUArraysCore", "LinearAlgebra", "Markdown", "Optim", "PoissonRandom", "QuadGK", "Random", "Random123", "RandomNumbers", "RecipesBase", "RecursiveArrayTools", "ResettableStacks", "SciMLBase", "StaticArraysCore", "Statistics"] -git-tree-sha1 = "ab1e6515ce15f01316a9825b02729fefa51726bd" -uuid = "77a26b50-5914-5dd7-bc55-306e6241c503" -version = "5.23.0" - - [deps.DiffEqNoiseProcess.extensions] - DiffEqNoiseProcessReverseDiffExt = "ReverseDiff" - - [deps.DiffEqNoiseProcess.weakdeps] - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.DifferentiationInterface]] -deps = ["ADTypes", "LinearAlgebra"] -git-tree-sha1 = "0c99576d0b93df0aff1bed9d9adddef14e4e658f" -uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -version = "0.6.22" - - [deps.DifferentiationInterface.extensions] - DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" - DifferentiationInterfaceDiffractorExt = "Diffractor" - DifferentiationInterfaceEnzymeExt = "Enzyme" - DifferentiationInterfaceFastDifferentiationExt = "FastDifferentiation" - DifferentiationInterfaceFiniteDiffExt = "FiniteDiff" - DifferentiationInterfaceFiniteDifferencesExt = "FiniteDifferences" - DifferentiationInterfaceForwardDiffExt = "ForwardDiff" - DifferentiationInterfaceMooncakeExt = "Mooncake" - DifferentiationInterfacePolyesterForwardDiffExt = "PolyesterForwardDiff" - DifferentiationInterfaceReverseDiffExt = "ReverseDiff" - DifferentiationInterfaceSparseArraysExt = "SparseArrays" - DifferentiationInterfaceSparseMatrixColoringsExt = "SparseMatrixColorings" - DifferentiationInterfaceStaticArraysExt = "StaticArrays" - DifferentiationInterfaceSymbolicsExt = "Symbolics" - DifferentiationInterfaceTrackerExt = "Tracker" - DifferentiationInterfaceZygoteExt = ["Zygote", "ForwardDiff"] - - [deps.DifferentiationInterface.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - Diffractor = "9f5e2b26-1114-432f-b630-d3fe2085c51c" - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - FastDifferentiation = "eb9bf01b-bf85-4b60-bf87-ee5de06c00be" - FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" - FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" - PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.DispatchDoctor]] -deps = ["MacroTools", "Preferences"] -git-tree-sha1 = "453df2ce2aef7de59c69a56d31dcd2ec3384dd77" -uuid = "8d63f2c5-f18a-4cf2-ba9d-b3f60fc568c8" -version = "0.4.17" -weakdeps = ["ChainRulesCore", "EnzymeCore"] - - [deps.DispatchDoctor.extensions] - DispatchDoctorChainRulesCoreExt = "ChainRulesCore" - DispatchDoctorEnzymeCoreExt = "EnzymeCore" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "3101c32aab536e7a27b1763c0797dba151b899ad" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.113" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.DomainSets]] -deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "Random", "StaticArrays"] -git-tree-sha1 = "490392af2c7d63183bfa2c8aaa6ab981c5ba7561" -uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" -version = "0.7.14" - - [deps.DomainSets.extensions] - DomainSetsMakieExt = "Makie" - - [deps.DomainSets.weakdeps] - Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DynamicPolynomials]] -deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Reexport", "Test"] -git-tree-sha1 = "bbf1ace0781d9744cb697fb856bd2c3f6568dadb" -uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" -version = "0.6.0" - -[[deps.DynamicQuantities]] -deps = ["DispatchDoctor", "TestItems", "Tricks"] -git-tree-sha1 = "192f34efd3912f4020b225e01d896f567f5f03e8" -uuid = "06fc5a27-2a28-4c7c-a15d-362465fb6821" -version = "1.3.0" - - [deps.DynamicQuantities.extensions] - DynamicQuantitiesLinearAlgebraExt = "LinearAlgebra" - DynamicQuantitiesMeasurementsExt = "Measurements" - DynamicQuantitiesScientificTypesExt = "ScientificTypes" - DynamicQuantitiesUnitfulExt = "Unitful" - - [deps.DynamicQuantities.weakdeps] - LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" - ScientificTypes = "321657f4-b219-11e9-178b-2701a2544e81" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.EnumX]] -git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237" -uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" -version = "1.0.4" - -[[deps.EnzymeCore]] -git-tree-sha1 = "e333ffd38ecffcf5c6c2dafd10788404ac46fb9f" -uuid = "f151be2c-9106-41f4-ab19-57ee4f262869" -version = "0.8.6" -weakdeps = ["Adapt"] - - [deps.EnzymeCore.extensions] - AdaptExt = "Adapt" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.Expronicon]] -deps = ["MLStyle", "Pkg", "TOML"] -git-tree-sha1 = "fc3951d4d398b5515f91d7fe5d45fc31dccb3c9b" -uuid = "6b7a57c9-7cc1-4fdf-b7f5-e857abae3636" -version = "0.8.5" - -[[deps.FastBroadcast]] -deps = ["ArrayInterface", "LinearAlgebra", "Polyester", "Static", "StaticArrayInterface", "StrideArraysCore"] -git-tree-sha1 = "ab1b34570bcdf272899062e1a56285a53ecaae08" -uuid = "7034ab61-46d4-4ed7-9d0f-46aef9175898" -version = "0.3.5" - -[[deps.FastClosures]] -git-tree-sha1 = "acebe244d53ee1b461970f8910c235b259e772ef" -uuid = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a" -version = "0.3.2" - -[[deps.FastLapackInterface]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "cbf5edddb61a43669710cbc2241bc08b36d9e660" -uuid = "29a986be-02c6-4525-aec4-84b980013641" -version = "2.0.4" - -[[deps.FastPower]] -git-tree-sha1 = "58c3431137131577a7c379d00fea00be524338fb" -uuid = "a4df4552-cc26-4903-aec0-212e50a0e84b" -version = "1.1.1" - - [deps.FastPower.extensions] - FastPowerEnzymeExt = "Enzyme" - FastPowerForwardDiffExt = "ForwardDiff" - FastPowerMeasurementsExt = "Measurements" - FastPowerMonteCarloMeasurementsExt = "MonteCarloMeasurements" - FastPowerReverseDiffExt = "ReverseDiff" - FastPowerTrackerExt = "Tracker" - - [deps.FastPower.weakdeps] - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" - MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "6a70198746448456524cb442b8af316927ff3e1a" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.13.0" -weakdeps = ["PDMats", "SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysPDMatsExt = "PDMats" - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FindFirstFunctions]] -git-tree-sha1 = "670e1d9ceaa4a3161d32fe2d2fb2177f8d78b330" -uuid = "64ca27bc-2ba2-4a57-88aa-44e436879224" -version = "1.4.1" - -[[deps.FiniteDiff]] -deps = ["ArrayInterface", "LinearAlgebra", "Setfield"] -git-tree-sha1 = "84e3a47db33be7248daa6274b287507dd6ff84e8" -uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.26.2" - - [deps.FiniteDiff.extensions] - FiniteDiffBandedMatricesExt = "BandedMatrices" - FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" - FiniteDiffSparseArraysExt = "SparseArrays" - FiniteDiffStaticArraysExt = "StaticArrays" - - [deps.FiniteDiff.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.5" - -[[deps.Format]] -git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" -uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" -version = "1.3.7" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "a2df1b776752e3f344e5116c06d75a10436ab853" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.38" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.FunctionProperties]] -deps = ["Cassette", "DiffRules"] -git-tree-sha1 = "bf7c740307eb0ee80e05d8aafbd0c5a901578398" -uuid = "f62d2435-5019-4c03-9749-2d4c77af0cbc" -version = "0.1.2" - -[[deps.FunctionWrappers]] -git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" -uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" -version = "1.1.3" - -[[deps.FunctionWrappersWrappers]] -deps = ["FunctionWrappers"] -git-tree-sha1 = "b104d487b34566608f8b4e1c39fb0b10aa279ff8" -uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" -version = "0.1.3" - -[[deps.Functors]] -deps = ["Compat", "ConstructionBase", "LinearAlgebra", "Random"] -git-tree-sha1 = "15e5397dd1cea034c7c772d9748cdee461fb5496" -uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.5.1" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "62ee71528cca49be797076a76bdc654a170a523e" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "10.3.1" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" - -[[deps.GPUCompiler]] -deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "PrecompileTools", "Preferences", "Scratch", "Serialization", "TOML", "TimerOutputs", "UUIDs"] -git-tree-sha1 = "1d6f290a5eb1201cd63574fbc4440c788d5cb38f" -uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" -version = "0.27.8" - -[[deps.Glob]] -git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" -uuid = "c27321d9-0574-5035-807b-f59d2c89b15c" -version = "1.3.1" - -[[deps.Graphs]] -deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "1dc470db8b1131cfc7fb4c115de89fe391b9e780" -uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" -version = "1.12.0" - -[[deps.HostCPUFeatures]] -deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"] -git-tree-sha1 = "8e070b599339d622e9a081d17230d74a5c473293" -uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0" -version = "0.1.17" - -[[deps.Hwloc]] -deps = ["CEnum", "Hwloc_jll", "Printf"] -git-tree-sha1 = "6a3d80f31ff87bc94ab22a7b8ec2f263f9a6a583" -uuid = "0e44f5e4-bd66-52a0-8798-143a42290a1d" -version = "3.3.0" -weakdeps = ["AbstractTrees"] - - [deps.Hwloc.extensions] - HwlocTrees = "AbstractTrees" - -[[deps.Hwloc_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "50aedf345a709ab75872f80a2779568dc0bb461b" -uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.11.2+1" - -[[deps.HypergeometricFunctions]] -deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "b1c2585431c382e3fe5805874bda6aea90a95de9" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.25" - -[[deps.IfElse]] -git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" -uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" -version = "0.1.1" - -[[deps.Inflate]] -git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d" -uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" -version = "0.1.5" - -[[deps.InlineStrings]] -git-tree-sha1 = "45521d31238e87ee9f9732561bfee12d4eebd52d" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.2" - - [deps.InlineStrings.extensions] - ArrowTypesExt = "ArrowTypes" - ParsersExt = "Parsers" - - [deps.InlineStrings.weakdeps] - ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" - Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" - -[[deps.IntegerMathUtils]] -git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30" -uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" -version = "0.1.2" - -[[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] -git-tree-sha1 = "10bd689145d2c3b2a9844005d01087cc1194e79e" -uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2024.2.1+0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.IntervalSets]] -git-tree-sha1 = "dba9ddf07f77f60450fe5d2e2beb9854d9a49bd0" -uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.10" -weakdeps = ["Random", "RecipesBase", "Statistics"] - - [deps.IntervalSets.extensions] - IntervalSetsRandomExt = "Random" - IntervalSetsRecipesBaseExt = "RecipesBase" - IntervalSetsStatisticsExt = "Statistics" - -[[deps.InverseFunctions]] -git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" -uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.17" -weakdeps = ["Dates", "Test"] - - [deps.InverseFunctions.extensions] - InverseFunctionsDatesExt = "Dates" - InverseFunctionsTestExt = "Test" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "be3dc50a92e5a386872a493a10050136d4703f9b" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.6.1" - -[[deps.JuliaFormatter]] -deps = ["CSTParser", "CommonMark", "DataStructures", "Glob", "PrecompileTools", "TOML", "Tokenize"] -git-tree-sha1 = "59cf7ad64f1b0708a4fa4369879d33bad3239b56" -uuid = "98e50ef6-434e-11e9-1051-2b60c6c9e899" -version = "1.0.62" - -[[deps.JuliaNVTXCallbacks_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "af433a10f3942e882d3c671aacb203e006a5808f" -uuid = "9c1d0b0a-7046-5b2e-a33f-ea22f176ac7e" -version = "0.2.1+0" - -[[deps.JumpProcesses]] -deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "Markdown", "PoissonRandom", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "StaticArrays", "SymbolicIndexingInterface", "UnPack"] -git-tree-sha1 = "c3a2cb6f968404ed3b1d5382bbdd7b7d83966598" -uuid = "ccbc3e58-028d-4f4c-8cd5-9ae44345cda5" -version = "9.14.0" -weakdeps = ["FastBroadcast"] - -[[deps.KLU]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] -git-tree-sha1 = "07649c499349dad9f08dde4243a4c597064663e9" -uuid = "ef3ab10e-7fda-4108-b977-705223b18434" -version = "0.6.0" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "MacroTools", "PrecompileTools", "Requires", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "e73a077abc7fe798fe940deabe30ef6c66bdde52" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.29" -weakdeps = ["EnzymeCore", "LinearAlgebra", "SparseArrays"] - - [deps.KernelAbstractions.extensions] - EnzymeExt = "EnzymeCore" - LinearAlgebraExt = "LinearAlgebra" - SparseArraysExt = "SparseArrays" - -[[deps.KolmogorovArnold]] -deps = ["ChainRulesCore", "ConcreteStructs", "LinearAlgebra", "LuxCore", "NNlib", "Random", "TensorOperations", "WeightInitializers"] -git-tree-sha1 = "9ddfb845daa58d43ec6e0bd77e1cad49bb89f382" -uuid = "eec8b66d-f71a-4a43-b228-0fe5d6721cd3" -version = "0.0.1" - -[[deps.Krylov]] -deps = ["LinearAlgebra", "Printf", "SparseArrays"] -git-tree-sha1 = "4f20a2df85a9e5d55c9e84634bbf808ed038cabd" -uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" -version = "0.9.8" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Unicode"] -git-tree-sha1 = "d422dfd9707bec6617335dc2ea3c5172a87d5908" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "9.1.3" -weakdeps = ["BFloat16s"] - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "05a8bd5a42309a9ec82f700876903abce1017dd3" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.34+0" - -[[deps.LLVMLoopInfo]] -git-tree-sha1 = "2e5c102cfc41f48ae4740c7eca7743cc7e7b75ea" -uuid = "8b046642-f1f6-4319-8d3c-209ddc03c586" -version = "1.0.0" - -[[deps.LRUCache]] -git-tree-sha1 = "b3cc6698599b10e652832c2f23db3cab99d51b59" -uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" -version = "1.6.1" -weakdeps = ["Serialization"] - - [deps.LRUCache.extensions] - SerializationExt = ["Serialization"] - -[[deps.LaTeXStrings]] -git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.4.0" - -[[deps.Latexify]] -deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] -git-tree-sha1 = "ce5f5621cac23a86011836badfedf664a612cee4" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.5" - - [deps.Latexify.extensions] - DataFramesExt = "DataFrames" - SparseArraysExt = "SparseArrays" - SymEngineExt = "SymEngine" - - [deps.Latexify.weakdeps] - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" - -[[deps.LayoutPointers]] -deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "a9eaadb366f5493a5654e843864c13d8b107548c" -uuid = "10f19ff3-798f-405d-979b-55457f8fc047" -version = "0.1.17" - -[[deps.LazyArrays]] -deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "MacroTools", "SparseArrays"] -git-tree-sha1 = "376bc148ae72e68a08f0d5d8a69e287025a37687" -uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02" -version = "2.2.2" - - [deps.LazyArrays.extensions] - LazyArraysBandedMatricesExt = "BandedMatrices" - LazyArraysBlockArraysExt = "BlockArrays" - LazyArraysBlockBandedMatricesExt = "BlockBandedMatrices" - LazyArraysStaticArraysExt = "StaticArrays" - - [deps.LazyArrays.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.4" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] -uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.LineSearch]] -deps = ["ADTypes", "CommonSolve", "ConcreteStructs", "FastClosures", "LinearAlgebra", "MaybeInplace", "SciMLBase", "SciMLJacobianOperators", "StaticArraysCore"] -git-tree-sha1 = "97d502765cc5cf3a722120f50da03c2474efce04" -uuid = "87fe0de2-c867-4266-b59a-2f0a94fc965b" -version = "0.1.4" -weakdeps = ["LineSearches"] - - [deps.LineSearch.extensions] - LineSearchLineSearchesExt = "LineSearches" - -[[deps.LineSearches]] -deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] -git-tree-sha1 = "e4c3be53733db1051cc15ecf573b1042b3a712a1" -uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" -version = "7.3.0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LinearSolve]] -deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "StaticArraysCore", "UnPack"] -git-tree-sha1 = "6b79df6e803fb62b79a364b86c790e7e21bd38ce" -uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "2.37.0" - - [deps.LinearSolve.extensions] - LinearSolveBandedMatricesExt = "BandedMatrices" - LinearSolveBlockDiagonalsExt = "BlockDiagonals" - LinearSolveCUDAExt = "CUDA" - LinearSolveCUDSSExt = "CUDSS" - LinearSolveEnzymeExt = "EnzymeCore" - LinearSolveFastAlmostBandedMatricesExt = "FastAlmostBandedMatrices" - LinearSolveHYPREExt = "HYPRE" - LinearSolveIterativeSolversExt = "IterativeSolvers" - LinearSolveKernelAbstractionsExt = "KernelAbstractions" - LinearSolveKrylovKitExt = "KrylovKit" - LinearSolveMetalExt = "Metal" - LinearSolvePardisoExt = "Pardiso" - LinearSolveRecursiveArrayToolsExt = "RecursiveArrayTools" - - [deps.LinearSolve.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockDiagonals = "0a1fb500-61f7-11e9-3c65-f5ef3456f9f0" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - FastAlmostBandedMatrices = "9d29842c-ecb8-4973-b1e9-a27b1157504e" - HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771" - IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153" - KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" - KrylovKit = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - Pardiso = "46dd5b70-b6fb-5a00-ae2d-e8fea33afaf2" - RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoopVectorization]] -deps = ["ArrayInterface", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] -git-tree-sha1 = "8084c25a250e00ae427a379a5b607e7aed96a2dd" -uuid = "bdcacae8-1622-11e9-2a5c-532679323890" -version = "0.12.171" -weakdeps = ["ChainRulesCore", "ForwardDiff", "SpecialFunctions"] - - [deps.LoopVectorization.extensions] - ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"] - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.Lux]] -deps = ["ADTypes", "Adapt", "ArgCheck", "ArrayInterface", "ChainRulesCore", "Compat", "ConcreteStructs", "DispatchDoctor", "EnzymeCore", "FastClosures", "ForwardDiff", "Functors", "GPUArraysCore", "LinearAlgebra", "LuxCore", "LuxLib", "MLDataDevices", "MacroTools", "Markdown", "NNlib", "Optimisers", "Preferences", "Random", "Reexport", "SIMDTypes", "Setfield", "Static", "StaticArraysCore", "Statistics", "WeightInitializers"] -git-tree-sha1 = "601dd5020a7d4caa7e4cc683a38b54945d6f9651" -uuid = "b2108857-7c20-44ae-9111-449ecde12c47" -version = "1.3.3" - - [deps.Lux.extensions] - LuxComponentArraysExt = "ComponentArrays" - LuxEnzymeExt = "Enzyme" - LuxFluxExt = "Flux" - LuxLossFunctionsExt = "LossFunctions" - LuxMLUtilsExt = "MLUtils" - LuxMPIExt = "MPI" - LuxMPINCCLExt = ["CUDA", "MPI", "NCCL"] - LuxReactantExt = ["Enzyme", "Reactant"] - LuxReverseDiffExt = ["FunctionWrappers", "ReverseDiff"] - LuxSimpleChainsExt = "SimpleChains" - LuxTrackerExt = "Tracker" - LuxZygoteExt = "Zygote" - - [deps.Lux.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - ComponentArrays = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66" - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" - FunctionWrappers = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" - LossFunctions = "30fc2ffe-d236-52d8-8643-a9d8f7c094a7" - MLUtils = "f1d291b0-491e-4a28-83b9-f70985020b54" - MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" - NCCL = "3fe64909-d7a1-4096-9b7d-7a0f12cf0f6b" - Reactant = "3c362404-f566-11ee-1572-e11a4b42c853" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - SimpleChains = "de6bee2f-e2f4-4ec7-b6ed-219cc6f6e9e5" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.LuxCUDA]] -deps = ["CUDA", "Reexport", "cuDNN"] -git-tree-sha1 = "a8a5906be27c42ea0705a2daed04fd57fd12d055" -uuid = "d0bbae9a-e099-4d5b-a835-1c6931763bda" -version = "0.3.3" - -[[deps.LuxCore]] -deps = ["Compat", "DispatchDoctor", "Random"] -git-tree-sha1 = "e1f6a43c5e8ab3524ab42472e57e382a74d45bd5" -uuid = "bb33d45b-7691-41d6-9220-0943567d0623" -version = "1.2.0" - - [deps.LuxCore.extensions] - LuxCoreArrayInterfaceReverseDiffExt = ["ArrayInterface", "ReverseDiff"] - LuxCoreArrayInterfaceTrackerExt = ["ArrayInterface", "Tracker"] - LuxCoreChainRulesCoreExt = "ChainRulesCore" - LuxCoreEnzymeCoreExt = "EnzymeCore" - LuxCoreFunctorsExt = "Functors" - LuxCoreMLDataDevicesExt = "MLDataDevices" - LuxCoreReactantExt = "Reactant" - LuxCoreSetfieldExt = "Setfield" - - [deps.LuxCore.weakdeps] - ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - Functors = "d9f16b24-f501-4c13-a1f2-28368ffc5196" - MLDataDevices = "7e8f7934-dd98-4c1a-8fe8-92b47a384d40" - Reactant = "3c362404-f566-11ee-1572-e11a4b42c853" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - Setfield = "efcf1570-3423-57d1-acb7-fd33fddbac46" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.LuxLib]] -deps = ["ArrayInterface", "ChainRulesCore", "Compat", "CpuId", "DispatchDoctor", "EnzymeCore", "FastClosures", "ForwardDiff", "Hwloc", "KernelAbstractions", "LinearAlgebra", "LuxCore", "MLDataDevices", "Markdown", "NNlib", "Polyester", "Preferences", "Random", "Reexport", "Static", "StaticArraysCore", "Statistics"] -git-tree-sha1 = "17f5d8c93394786fe3a79e363e59cf94b395c71f" -uuid = "82251201-b29d-42c6-8e01-566dec8acb11" -version = "1.3.8" - - [deps.LuxLib.extensions] - LuxLibAppleAccelerateExt = "AppleAccelerate" - LuxLibBLISBLASExt = "BLISBLAS" - LuxLibCUDAExt = "CUDA" - LuxLibEnzymeExt = "Enzyme" - LuxLibLoopVectorizationExt = "LoopVectorization" - LuxLibMKLExt = "MKL" - LuxLibOctavianExt = ["Octavian", "LoopVectorization"] - LuxLibReverseDiffExt = "ReverseDiff" - LuxLibSLEEFPiratesExt = "SLEEFPirates" - LuxLibTrackerAMDGPUExt = ["AMDGPU", "Tracker"] - LuxLibTrackerExt = "Tracker" - LuxLibcuDNNExt = ["CUDA", "cuDNN"] - - [deps.LuxLib.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - AppleAccelerate = "13e28ba4-7ad8-5781-acae-3021b1ed3924" - BLISBLAS = "6f275bd8-fec0-4d39-945b-7e95a765fa1e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - LoopVectorization = "bdcacae8-1622-11e9-2a5c-532679323890" - MKL = "33e6dc65-8f57-5167-99aa-e5a354878fb2" - Octavian = "6fd5a793-0b7e-452c-907f-f8bfe9c57db4" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - SLEEFPirates = "476501e8-09a2-5ece-8869-fb82de89a1fa" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] -git-tree-sha1 = "f046ccd0c6db2832a9f639e2c669c6fe867e5f4f" -uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2024.2.0+0" - -[[deps.MLDataDevices]] -deps = ["Adapt", "Compat", "Functors", "Preferences", "Random"] -git-tree-sha1 = "65cac17924edbe88e13eef135fac513330c48d9b" -uuid = "7e8f7934-dd98-4c1a-8fe8-92b47a384d40" -version = "1.6.2" - - [deps.MLDataDevices.extensions] - MLDataDevicesAMDGPUExt = "AMDGPU" - MLDataDevicesCUDAExt = "CUDA" - MLDataDevicesChainRulesCoreExt = "ChainRulesCore" - MLDataDevicesChainRulesExt = "ChainRules" - MLDataDevicesFillArraysExt = "FillArrays" - MLDataDevicesGPUArraysExt = "GPUArrays" - MLDataDevicesMLUtilsExt = "MLUtils" - MLDataDevicesMetalExt = ["GPUArrays", "Metal"] - MLDataDevicesOneHotArraysExt = "OneHotArrays" - MLDataDevicesReactantExt = "Reactant" - MLDataDevicesRecursiveArrayToolsExt = "RecursiveArrayTools" - MLDataDevicesReverseDiffExt = "ReverseDiff" - MLDataDevicesSparseArraysExt = "SparseArrays" - MLDataDevicesTrackerExt = "Tracker" - MLDataDevicesZygoteExt = "Zygote" - MLDataDevicescuDNNExt = ["CUDA", "cuDNN"] - MLDataDevicesoneAPIExt = ["GPUArrays", "oneAPI"] - - [deps.MLDataDevices.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b" - GPUArrays = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" - MLUtils = "f1d291b0-491e-4a28-83b9-f70985020b54" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - OneHotArrays = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" - Reactant = "3c362404-f566-11ee-1572-e11a4b42c853" - RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" - -[[deps.MLStyle]] -git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" -uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.17" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" - -[[deps.ManualMemory]] -git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" -uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667" -version = "0.1.8" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MaybeInplace]] -deps = ["ArrayInterface", "LinearAlgebra", "MacroTools"] -git-tree-sha1 = "54e2fdc38130c05b42be423e90da3bade29b74bd" -uuid = "bb5d69b7-63fc-4a16-80bd-7e42200c7bdb" -version = "0.1.4" -weakdeps = ["SparseArrays"] - - [deps.MaybeInplace.extensions] - MaybeInplaceSparseArraysExt = "SparseArrays" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.2.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.ModelingToolkit]] -deps = ["AbstractTrees", "ArrayInterface", "BlockArrays", "Combinatorics", "CommonSolve", "Compat", "ConstructionBase", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DiffEqNoiseProcess", "DiffRules", "Distributed", "Distributions", "DocStringExtensions", "DomainSets", "DynamicQuantities", "EnumX", "ExprTools", "Expronicon", "FindFirstFunctions", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "Graphs", "InteractiveUtils", "JuliaFormatter", "JumpProcesses", "Latexify", "Libdl", "LinearAlgebra", "MLStyle", "NaNMath", "NonlinearSolve", "OffsetArrays", "OrderedCollections", "PrecompileTools", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "SciMLStructures", "Serialization", "Setfield", "SimpleNonlinearSolve", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "SymbolicUtils", "Symbolics", "URIs", "UnPack", "Unitful"] -git-tree-sha1 = "c5c654842aa99b6ce5175eb877654bba9ea5c981" -uuid = "961ee093-0014-501f-94e3-6117800e7a78" -version = "9.51.0" - - [deps.ModelingToolkit.extensions] - MTKBifurcationKitExt = "BifurcationKit" - MTKChainRulesCoreExt = "ChainRulesCore" - MTKDeepDiffsExt = "DeepDiffs" - MTKHomotopyContinuationExt = "HomotopyContinuation" - MTKLabelledArraysExt = "LabelledArrays" - - [deps.ModelingToolkit.weakdeps] - BifurcationKit = "0f109fa4-8a5d-4b75-95aa-f515264e7665" - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DeepDiffs = "ab62b9b5-e342-54a8-a765-a90f495de1a6" - HomotopyContinuation = "f213a82b-91d6-5c5d-acf7-10f1c761b327" - LabelledArrays = "2ee39098-c373-598a-b85f-a56591580800" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" - -[[deps.MuladdMacro]] -git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" -uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" -version = "0.2.4" - -[[deps.MultivariatePolynomials]] -deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] -git-tree-sha1 = "8d39779e29f80aa6c071e7ac17101c6e31f075d7" -uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" -version = "0.5.7" - -[[deps.MutableArithmetics]] -deps = ["LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "a2710df6b0931f987530f59427441b21245d8f5e" -uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" -version = "1.6.0" - -[[deps.NLSolversBase]] -deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] -git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c" -uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" -version = "7.8.3" - -[[deps.NNlib]] -deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "da09a1e112fd75f9af2a5229323f01b56ec96a4c" -uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.9.24" - - [deps.NNlib.extensions] - NNlibAMDGPUExt = "AMDGPU" - NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] - NNlibCUDAExt = "CUDA" - NNlibEnzymeCoreExt = "EnzymeCore" - NNlibFFTWExt = "FFTW" - NNlibForwardDiffExt = "ForwardDiff" - - [deps.NNlib.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" - FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.NVTX]] -deps = ["Colors", "JuliaNVTXCallbacks_jll", "Libdl", "NVTX_jll"] -git-tree-sha1 = "6a6f8bfaa91bb2e40ff562ab9f30dc827741daef" -uuid = "5da4648a-3479-48b8-97b9-01cb529c0a1f" -version = "0.3.5" - -[[deps.NVTX_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ce3269ed42816bf18d500c9f63418d4b0d9f5a3b" -uuid = "e98f9f5b-d649-5603-91fd-7774390e6439" -version = "3.1.0+2" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.NonlinearSolve]] -deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "NonlinearSolveBase", "NonlinearSolveFirstOrder", "NonlinearSolveQuasiNewton", "NonlinearSolveSpectralMethods", "PrecompileTools", "Preferences", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseMatrixColorings", "StaticArraysCore", "SymbolicIndexingInterface"] -git-tree-sha1 = "e646d238e65928630a5f557c0676051a11504c9d" -uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" -version = "4.2.0" - - [deps.NonlinearSolve.extensions] - NonlinearSolveFastLevenbergMarquardtExt = "FastLevenbergMarquardt" - NonlinearSolveFixedPointAccelerationExt = "FixedPointAcceleration" - NonlinearSolveLeastSquaresOptimExt = "LeastSquaresOptim" - NonlinearSolveMINPACKExt = "MINPACK" - NonlinearSolveNLSolversExt = "NLSolvers" - NonlinearSolveNLsolveExt = ["NLsolve", "LineSearches"] - NonlinearSolvePETScExt = ["PETSc", "MPI"] - NonlinearSolveSIAMFANLEquationsExt = "SIAMFANLEquations" - NonlinearSolveSpeedMappingExt = "SpeedMapping" - NonlinearSolveSundialsExt = "Sundials" - - [deps.NonlinearSolve.weakdeps] - FastLevenbergMarquardt = "7a0df574-e128-4d35-8cbd-3d84502bf7ce" - FixedPointAcceleration = "817d07cb-a79a-5c30-9a31-890123675176" - LeastSquaresOptim = "0fc2ff8b-aaa3-5acd-a817-1944a5e08891" - LineSearches = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" - MINPACK = "4854310b-de5a-5eb6-a2a5-c1dee2bd17f9" - MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" - NLSolvers = "337daf1e-9722-11e9-073e-8b9effe078ba" - NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" - PETSc = "ace2c81b-2b5f-4b1e-a30d-d662738edfe0" - SIAMFANLEquations = "084e46ad-d928-497d-ad5e-07fa361a48c4" - SpeedMapping = "f1835b91-879b-4a3f-a438-e4baacf14412" - Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" - -[[deps.NonlinearSolveBase]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "FunctionProperties", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLOperators", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] -git-tree-sha1 = "46772fc296d9f16c3ab78a8ef00008ab075de677" -uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0" -version = "1.3.3" - - [deps.NonlinearSolveBase.extensions] - NonlinearSolveBaseBandedMatricesExt = "BandedMatrices" - NonlinearSolveBaseDiffEqBaseExt = "DiffEqBase" - NonlinearSolveBaseForwardDiffExt = "ForwardDiff" - NonlinearSolveBaseLineSearchExt = "LineSearch" - NonlinearSolveBaseLinearSolveExt = "LinearSolve" - NonlinearSolveBaseSparseArraysExt = "SparseArrays" - NonlinearSolveBaseSparseMatrixColoringsExt = "SparseMatrixColorings" - - [deps.NonlinearSolveBase.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - LineSearch = "87fe0de2-c867-4266-b59a-2f0a94fc965b" - LinearSolve = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" - -[[deps.NonlinearSolveFirstOrder]] -deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLJacobianOperators", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "05a42691900f8f14e930478d5638a5f0fc973601" -uuid = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d" -version = "1.1.0" - -[[deps.NonlinearSolveQuasiNewton]] -deps = ["ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLOperators", "StaticArraysCore"] -git-tree-sha1 = "066d4940938f4bb5fd1ce146e61a373f40b89d31" -uuid = "9a2c21bd-3a47-402d-9113-8faf9a0ee114" -version = "1.0.0" - -[[deps.NonlinearSolveSpectralMethods]] -deps = ["CommonSolve", "ConcreteStructs", "DiffEqBase", "LineSearch", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] -git-tree-sha1 = "cc97c44e396ab820401c8c404bc1fd18d4c884bd" -uuid = "26075421-4e9a-44e1-8bd1-420ed7ad02b2" -version = "1.0.0" - -[[deps.OffsetArrays]] -git-tree-sha1 = "1a27764e945a152f7ca7efa04de513d473e9542e" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.14.1" -weakdeps = ["Adapt"] - - [deps.OffsetArrays.extensions] - OffsetArraysAdaptExt = "Adapt" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optim]] -deps = ["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] -git-tree-sha1 = "ab7edad78cdef22099f43c54ef77ac63c2c9cc64" -uuid = "429524aa-4258-5aef-a3af-852621145aeb" -version = "1.10.0" - - [deps.Optim.extensions] - OptimMOIExt = "MathOptInterface" - - [deps.Optim.weakdeps] - MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" - -[[deps.Optimisers]] -deps = ["ChainRulesCore", "Functors", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "09000e0bdec3aed6e3dff553c9fb010d27de56ee" -uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" -version = "0.4.1" -weakdeps = ["EnzymeCore"] - - [deps.Optimisers.extensions] - OptimisersEnzymeCoreExt = "EnzymeCore" - -[[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.31" - -[[deps.PackageExtensionCompat]] -git-tree-sha1 = "fb28e33b8a95c4cee25ce296c817d89cc2e53518" -uuid = "65ce6f38-6b18-4e1d-a461-8949797d7930" -version = "1.0.2" -weakdeps = ["Requires", "TOML"] - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" - -[[deps.PoissonRandom]] -deps = ["Random"] -git-tree-sha1 = "a0f1159c33f846aa77c3f30ebbc69795e5327152" -uuid = "e409e4f3-bfea-5376-8464-e040bb5c01ab" -version = "0.4.4" - -[[deps.Polyester]] -deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Static", "StaticArrayInterface", "StrideArraysCore", "ThreadingUtilities"] -git-tree-sha1 = "6d38fea02d983051776a856b7df75b30cf9a3c1f" -uuid = "f517fe37-dbe3-4b94-8317-1923a5111588" -version = "0.7.16" - -[[deps.PolyesterWeave]] -deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] -git-tree-sha1 = "645bed98cd47f72f67316fd42fc47dee771aefcd" -uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" -version = "0.2.2" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PositiveFactorizations]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" -uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" -version = "0.2.4" - -[[deps.PreallocationTools]] -deps = ["Adapt", "ArrayInterface", "ForwardDiff"] -git-tree-sha1 = "6c62ce45f268f3f958821a1e5192cf91c75ae89c" -uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" -version = "0.4.24" - - [deps.PreallocationTools.extensions] - PreallocationToolsReverseDiffExt = "ReverseDiff" - - [deps.PreallocationTools.weakdeps] - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.3" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.4.0" - -[[deps.Primes]] -deps = ["IntegerMathUtils"] -git-tree-sha1 = "cb420f77dc474d23ee47ca8d14c90810cafe69e7" -uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" -version = "0.5.6" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.PtrArrays]] -git-tree-sha1 = "77a42d78b6a92df47ab37e177b2deac405e1c88f" -uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.1" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "cda3b045cf9ef07a08ad46731f5a3165e56cf3da" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.11.1" - - [deps.QuadGK.extensions] - QuadGKEnzymeExt = "Enzyme" - - [deps.QuadGK.weakdeps] - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.Random123]] -deps = ["Random", "RandomNumbers"] -git-tree-sha1 = "4743b43e5a9c4a2ede372de7061eed81795b12e7" -uuid = "74087812-796a-5b5d-8853-05524746bad3" -version = "1.7.0" - -[[deps.RandomNumbers]] -deps = ["Random"] -git-tree-sha1 = "c6ec94d2aaba1ab2ff983052cf6a606ca5985902" -uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143" -version = "1.6.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.RecursiveArrayTools]] -deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "6f4dca5fd8e97087a76b7ab8384d1c3086ace0b7" -uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "3.27.3" - - [deps.RecursiveArrayTools.extensions] - RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" - RecursiveArrayToolsForwardDiffExt = "ForwardDiff" - RecursiveArrayToolsMeasurementsExt = "Measurements" - RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" - RecursiveArrayToolsReverseDiffExt = ["ReverseDiff", "Zygote"] - RecursiveArrayToolsSparseArraysExt = ["SparseArrays"] - RecursiveArrayToolsTrackerExt = "Tracker" - RecursiveArrayToolsZygoteExt = "Zygote" - - [deps.RecursiveArrayTools.weakdeps] - FastBroadcast = "7034ab61-46d4-4ed7-9d0f-46aef9175898" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" - MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.RecursiveFactorization]] -deps = ["LinearAlgebra", "LoopVectorization", "Polyester", "PrecompileTools", "StrideArraysCore", "TriangularSolve"] -git-tree-sha1 = "6db1a75507051bc18bfa131fbc7c3f169cc4b2f6" -uuid = "f2c3362d-daeb-58d1-803e-2bc74f2840b4" -version = "0.2.23" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.ResettableStacks]] -deps = ["StaticArrays"] -git-tree-sha1 = "256eeeec186fa7f26f2801732774ccf277f05db9" -uuid = "ae5879a3-cd67-5da8-be7f-38c6eb64a37b" -version = "1.1.1" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "852bd0f55565a9e973fcfee83a84413270224dc4" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.8.0" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.5.1+0" - -[[deps.RuntimeGeneratedFunctions]] -deps = ["ExprTools", "SHA", "Serialization"] -git-tree-sha1 = "04c968137612c4a5629fa531334bb81ad5680f00" -uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" -version = "0.5.13" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.SIMDTypes]] -git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" -uuid = "94e857df-77ce-4151-89e5-788b33177be4" -version = "0.1.0" - -[[deps.SLEEFPirates]] -deps = ["IfElse", "Static", "VectorizationBase"] -git-tree-sha1 = "456f610ca2fbd1c14f5fcf31c6bfadc55e7d66e0" -uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" -version = "0.6.43" - -[[deps.SciMLBase]] -deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "Expronicon", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "57db8ea2a39fc25c11f44d46c52b7a8d110f5324" -uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.62.0" - - [deps.SciMLBase.extensions] - SciMLBaseChainRulesCoreExt = "ChainRulesCore" - SciMLBaseMakieExt = "Makie" - SciMLBasePartialFunctionsExt = "PartialFunctions" - SciMLBasePyCallExt = "PyCall" - SciMLBasePythonCallExt = "PythonCall" - SciMLBaseRCallExt = "RCall" - SciMLBaseZygoteExt = "Zygote" - - [deps.SciMLBase.weakdeps] - ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" - PartialFunctions = "570af359-4316-4cb7-8c74-252c00c2016b" - PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" - PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" - RCall = "6f49c342-dc21-5d91-9882-a32aef131414" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.SciMLJacobianOperators]] -deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DifferentiationInterface", "FastClosures", "LinearAlgebra", "SciMLBase", "SciMLOperators"] -git-tree-sha1 = "f66048bb969e67bd7d1bdd03cd0b81219642bbd0" -uuid = "19f34311-ddf3-4b8b-af20-060888a46c0e" -version = "0.1.1" - -[[deps.SciMLOperators]] -deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] -git-tree-sha1 = "6149620767866d4b0f0f7028639b6e661b6a1e44" -uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" -version = "0.3.12" -weakdeps = ["SparseArrays", "StaticArraysCore"] - - [deps.SciMLOperators.extensions] - SciMLOperatorsSparseArraysExt = "SparseArrays" - SciMLOperatorsStaticArraysCoreExt = "StaticArraysCore" - -[[deps.SciMLStructures]] -deps = ["ArrayInterface"] -git-tree-sha1 = "4cce08f7f8f9501edb1ea7b15360529745580e96" -uuid = "53ae85a6-f571-4167-b2af-e1d143709226" -version = "1.6.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "d0553ce4031a081cc42387a9b9c8441b7d99f32d" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.7" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.SharedArrays]] -deps = ["Distributed", "Mmap", "Random", "Serialization"] -uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" - -[[deps.SimpleNonlinearSolve]] -deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "f7e2042e0b68c6bb19a0a1594839792737f51d84" -uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7" -version = "2.0.0" - - [deps.SimpleNonlinearSolve.extensions] - SimpleNonlinearSolveChainRulesCoreExt = "ChainRulesCore" - SimpleNonlinearSolveDiffEqBaseExt = "DiffEqBase" - SimpleNonlinearSolveReverseDiffExt = "ReverseDiff" - SimpleNonlinearSolveTrackerExt = "Tracker" - - [deps.SimpleNonlinearSolve.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" - -[[deps.SparseMatrixColorings]] -deps = ["ADTypes", "DataStructures", "DocStringExtensions", "LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "76b44c879661552d64f382acf66faa29ab56b3d9" -uuid = "0a514795-09f3-496d-8182-132a7b665d35" -version = "0.4.10" -weakdeps = ["Colors"] - - [deps.SparseMatrixColorings.extensions] - SparseMatrixColoringsColorsExt = "Colors" - -[[deps.Sparspak]] -deps = ["Libdl", "LinearAlgebra", "Logging", "OffsetArrays", "Printf", "SparseArrays", "Test"] -git-tree-sha1 = "342cf4b449c299d8d1ceaf00b7a49f4fbc7940e7" -uuid = "e56a9233-b9d6-4f03-8d0f-1825330902ac" -version = "0.3.9" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.Static]] -deps = ["CommonWorldInvalidations", "IfElse", "PrecompileTools"] -git-tree-sha1 = "87d51a3ee9a4b0d2fe054bdd3fc2436258db2603" -uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" -version = "1.1.1" - -[[deps.StaticArrayInterface]] -deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Static"] -git-tree-sha1 = "96381d50f1ce85f2663584c8e886a6ca97e60554" -uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" -version = "1.8.0" -weakdeps = ["OffsetArrays", "StaticArrays"] - - [deps.StaticArrayInterface.extensions] - StaticArrayInterfaceOffsetArraysExt = "OffsetArrays" - StaticArrayInterfaceStaticArraysExt = "StaticArrays" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "777657803913ffc7e8cc20f0fd04b634f871af8f" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.8" -weakdeps = ["ChainRulesCore", "Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysChainRulesCoreExt = "ChainRulesCore" - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.3" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.3" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "b423576adc27097764a90e163157bcfc9acf0f46" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.2" -weakdeps = ["ChainRulesCore", "InverseFunctions"] - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - -[[deps.StrideArraysCore]] -deps = ["ArrayInterface", "CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface", "ThreadingUtilities"] -git-tree-sha1 = "f35f6ab602df8413a50c4a25ca14de821e8605fb" -uuid = "7792a7ef-975c-4747-a70f-980b88e8d1da" -version = "0.5.7" - -[[deps.Strided]] -deps = ["LinearAlgebra", "StridedViews", "TupleTools"] -git-tree-sha1 = "f9ce8284e6eec72a21de3603493eb5355fcf7f39" -uuid = "5e0ebb24-38b0-5f93-81fe-25c709ecae67" -version = "2.2.0" - -[[deps.StridedViews]] -deps = ["LinearAlgebra", "PackageExtensionCompat"] -git-tree-sha1 = "b60baf1998bcdccc57e1cc2c6703df1f619a3754" -uuid = "4db3bf67-4bd7-4b4e-b153-31dc3fb37143" -version = "0.3.2" -weakdeps = ["CUDA"] - - [deps.StridedViews.extensions] - StridedViewsCUDAExt = "CUDA" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "a6b1675a536c5ad1a60e5a5153e1fee12eb146e3" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.4.0" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" - -[[deps.SymbolicIndexingInterface]] -deps = ["Accessors", "ArrayInterface", "RuntimeGeneratedFunctions", "StaticArraysCore"] -git-tree-sha1 = "6c6761e08bf5a270905cdd065be633abfa1b155b" -uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" -version = "0.3.35" - -[[deps.SymbolicLimits]] -deps = ["SymbolicUtils"] -git-tree-sha1 = "fabf4650afe966a2ba646cabd924c3fd43577fc3" -uuid = "19f23fe9-fdab-4a78-91af-e7b7767979c3" -version = "0.2.2" - -[[deps.SymbolicUtils]] -deps = ["AbstractTrees", "ArrayInterface", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TermInterface", "TimerOutputs", "Unityper"] -git-tree-sha1 = "04e9157537ba51dad58336976f8d04b9ab7122f0" -uuid = "d1185830-fcd6-423d-90d6-eec64667417b" -version = "3.7.2" - - [deps.SymbolicUtils.extensions] - SymbolicUtilsLabelledArraysExt = "LabelledArrays" - SymbolicUtilsReverseDiffExt = "ReverseDiff" - - [deps.SymbolicUtils.weakdeps] - LabelledArrays = "2ee39098-c373-598a-b85f-a56591580800" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - -[[deps.Symbolics]] -deps = ["ADTypes", "ArrayInterface", "Bijections", "CommonWorldInvalidations", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "IfElse", "LaTeXStrings", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "Primes", "RecipesBase", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "SymbolicIndexingInterface", "SymbolicLimits", "SymbolicUtils", "TermInterface"] -git-tree-sha1 = "d5c0ea92aa7b14b0ffca575e07af48ecb9e83f7b" -uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" -version = "6.21.0" - - [deps.Symbolics.extensions] - SymbolicsForwardDiffExt = "ForwardDiff" - SymbolicsGroebnerExt = "Groebner" - SymbolicsLuxExt = "Lux" - SymbolicsNemoExt = "Nemo" - SymbolicsPreallocationToolsExt = ["PreallocationTools", "ForwardDiff"] - SymbolicsSymPyExt = "SymPy" - - [deps.Symbolics.weakdeps] - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - Groebner = "0b43b601-686d-58a3-8a1c-6623616c7cd4" - Lux = "b2108857-7c20-44ae-9111-449ecde12c47" - Nemo = "2edaba10-b0f1-5616-af89-8c11ac63239a" - PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46" - SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "598cd7c1f68d1e205689b1c2fe65a9f85846f297" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.12.0" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TensorOperations]] -deps = ["LRUCache", "LinearAlgebra", "PackageExtensionCompat", "PtrArrays", "Strided", "StridedViews", "TupleTools", "VectorInterface"] -git-tree-sha1 = "d08a24e2cb67aa0cbfcd68d0acdf2879e571126f" -uuid = "6aa20fa7-93e2-5fca-9bc0-fbd0db3c71a2" -version = "5.1.3" - - [deps.TensorOperations.extensions] - TensorOperationsBumperExt = "Bumper" - TensorOperationsChainRulesCoreExt = "ChainRulesCore" - TensorOperationscuTENSORExt = ["cuTENSOR", "CUDA"] - - [deps.TensorOperations.weakdeps] - Bumper = "8ce10254-0962-460f-a3d8-1f77fea1446e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - cuTENSOR = "011b41b2-24ef-40a8-b3eb-fa098493e9e1" - -[[deps.TermInterface]] -git-tree-sha1 = "d673e0aca9e46a2f63720201f55cc7b3e7169b16" -uuid = "8ea1fca8-c5ef-4a55-8b96-4e9afe9c9a3c" -version = "2.0.0" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TestItems]] -git-tree-sha1 = "42fd9023fef18b9b78c8343a4e2f3813ffbcefcb" -uuid = "1c621080-faea-4a02-84b6-bbd5e436b8fe" -version = "1.0.0" - -[[deps.ThreadingUtilities]] -deps = ["ManualMemory"] -git-tree-sha1 = "eda08f7e9818eb53661b3deb74e3159460dfbc27" -uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" -version = "0.5.2" - -[[deps.TimerOutputs]] -deps = ["ExprTools", "Printf"] -git-tree-sha1 = "3a6f063d690135f5c1ba351412c82bae4d1402bf" -uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" -version = "0.5.25" - -[[deps.Tokenize]] -git-tree-sha1 = "468b4685af4abe0e9fd4d7bf495a6554a6276e75" -uuid = "0796e94c-ce3b-5d07-9a54-7f471281c624" -version = "0.5.29" - -[[deps.TriangularSolve]] -deps = ["CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "LoopVectorization", "Polyester", "Static", "VectorizationBase"] -git-tree-sha1 = "be986ad9dac14888ba338c2554dcfec6939e1393" -uuid = "d5829a12-d9aa-46ab-831f-fb7c9ab06edf" -version = "0.2.1" - -[[deps.Tricks]] -git-tree-sha1 = "7822b97e99a1672bfb1b49b668a6d46d58d8cbcb" -uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" -version = "0.1.9" - -[[deps.TruncatedStacktraces]] -deps = ["InteractiveUtils", "MacroTools", "Preferences"] -git-tree-sha1 = "ea3e54c2bdde39062abf5a9758a23735558705e1" -uuid = "781d530d-4396-4725-bb49-402e4bee1e77" -version = "1.4.0" - -[[deps.TupleTools]] -git-tree-sha1 = "41e43b9dc950775eac654b9f845c839cd2f1821e" -uuid = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6" -version = "1.6.0" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "d95fe458f26209c66a187b1114df96fd70839efd" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.21.0" -weakdeps = ["ConstructionBase", "InverseFunctions"] - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - InverseFunctionsUnitfulExt = "InverseFunctions" - -[[deps.Unityper]] -deps = ["ConstructionBase"] -git-tree-sha1 = "25008b734a03736c41e2a7dc314ecb95bd6bbdb0" -uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415" -version = "0.1.6" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.2.1" - -[[deps.UnsafeAtomicsLLVM]] -deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "2d17fabcd17e67d7625ce9c531fb9f40b7c42ce4" -uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.2.1" - -[[deps.VectorInterface]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9166406dedd38c111a6574e9814be83d267f8aec" -uuid = "409d34a3-91d5-4945-b6ec-7529ddf182d8" -version = "0.5.0" - -[[deps.VectorizationBase]] -deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "4ab62a49f1d8d9548a1c8d1a75e5f55cf196f64e" -uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" -version = "0.21.71" - -[[deps.WeightInitializers]] -deps = ["ArgCheck", "ConcreteStructs", "GPUArraysCore", "LinearAlgebra", "Random", "SpecialFunctions", "Statistics"] -git-tree-sha1 = "0b935265795ccccf12bc89e693b6380934451780" -uuid = "d49dbf32-c5c2-4618-8acc-27bb2598ef2d" -version = "1.0.4" - - [deps.WeightInitializers.extensions] - WeightInitializersAMDGPUExt = ["AMDGPU", "GPUArrays"] - WeightInitializersCUDAExt = ["CUDA", "GPUArrays"] - WeightInitializersChainRulesCoreExt = "ChainRulesCore" - WeightInitializersGPUArraysExt = "GPUArrays" - WeightInitializersMetalExt = ["Metal", "GPUArrays"] - WeightInitializersoneAPIExt = ["oneAPI", "GPUArrays"] - - [deps.WeightInitializers.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - GPUArrays = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" - Metal = "dde4c033-4e86-420c-a63e-0dd931031962" - oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" - -[[deps.cuDNN]] -deps = ["CEnum", "CUDA", "CUDA_Runtime_Discovery", "CUDNN_jll"] -git-tree-sha1 = "4b3ac62501ca73263eaa0d034c772f13c647fba6" -uuid = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" -version = "1.4.0" - -[[deps.demumble_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6498e3581023f8e530f34760d18f75a69e3a4ea8" -uuid = "1e29f10c-031c-5a83-9565-69cddfc27673" -version = "1.3.0+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" - -[[deps.oneTBB_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493" -uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" -version = "2021.12.0+0" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" diff --git a/project/KAN-Embed/Project.toml b/project/KAN-Embed/Project.toml deleted file mode 100644 index 060d0b5..0000000 --- a/project/KAN-Embed/Project.toml +++ /dev/null @@ -1,5 +0,0 @@ -[deps] -KolmogorovArnold = "eec8b66d-f71a-4a43-b228-0fe5d6721cd3" -Lux = "b2108857-7c20-44ae-9111-449ecde12c47" -LuxCUDA = "d0bbae9a-e099-4d5b-a835-1c6931763bda" -ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" diff --git a/project/KAN-Embed/src/KANEmbed.jl b/project/KAN-Embed/src/KANEmbed.jl deleted file mode 100644 index 90a6d7f..0000000 --- a/project/KAN-Embed/src/KANEmbed.jl +++ /dev/null @@ -1,17 +0,0 @@ -# include("../../../src/HydroModels.jl") - - -using Random, KolmogorovArnold,ComponentArrays -using Lux -rng = Random.default_rng() - -in_dim, out_dim, grid_len = 4, 4, 8 -layer = KDense(in_dim, out_dim, grid_len) -p, st = Lux.setup(rng, layer) - -length(collect(ComponentArray(p))) - -x = rand32(rng, in_dim, 10) -y = layer(x, p, st) - - diff --git a/project/KAN-Embed/src/models.jl b/project/KAN-Embed/src/models.jl deleted file mode 100644 index e69de29..0000000 diff --git a/temp/build_statefunc.jl b/temp/build_statefunc.jl deleted file mode 100644 index 3057653..0000000 --- a/temp/build_statefunc.jl +++ /dev/null @@ -1,94 +0,0 @@ -function build_state_funcv1( - funcs::Vector{<:AbstractFlux}, - dfunc::AbstractStateFlux, - input_names::Vector{Symbol}, -) - fluxes_vars_ntp = reduce(merge, [merge(func.input_info, func.output_info) for func in vcat(funcs, [dfunc])]) - funcs_params_ntp = reduce(merge, [func.param_info for func in vcat(funcs, [dfunc])]) - #* 构建state计算的函数并将所有中间状态替换 - substitute_vars_dict = Dict() - for var_nm in keys(fluxes_vars_ntp) - for func in funcs - tmp_output_names = get_output_names(func) - for j in eachindex(tmp_output_names) - if var_nm == tmp_output_names[j] - substitute_vars_dict[fluxes_vars_ntp[var_nm]] = func.flux_exprs[j] - end - end - end - end - state_expr_sub = dfunc.state_expr - for _ in 1:length(substitute_vars_dict) - state_expr_sub = substitute(state_expr_sub, substitute_vars_dict) - end - state_func = build_function(state_expr_sub, collect(fluxes_vars_ntp[input_names]), collect(funcs_params_ntp), expression=Val{false}) - state_func -end - - -function build_state_funcv2( - funcs::Vector{<:AbstractFlux}, - dfunc::AbstractStateFlux, - input_names::Vector{Symbol}, -) - fluxes_vars_ntp = reduce(merge, [merge(func.input_info, func.output_info) for func in vcat(funcs, [dfunc])]) - funcs_params_ntp = reduce(merge, [func.param_info for func in vcat(funcs, [dfunc])]) - - assign_list = Assignment[] - for func in funcs - if func isa AbstractNeuralFlux - push!(assign_list, Assignment(func.nn_info[:input], MakeArray(collect(func.input_info), Vector))) - push!(assign_list, Assignment(func.nn_info[:output], func.flux_expr)) - for (idx, output) in enumerate(collect(func.output_info)) - push!(assign_list, Assignment(output, func.nn_info[:output][idx])) - end - else - for (output, expr) in zip(collect(func.output_info), func.flux_exprs) - push!(assign_list, Assignment(output, expr)) - end - end - end - - func_args = [ - DestructuredArgs(collect(fluxes_vars_ntp[input_names])), - DestructuredArgs(collect(funcs_params_ntp)), - DestructuredArgs([func.nn_info[:chain_ptype] for func in funcs if func isa AbstractNeuralFlux]) - ] - - merged_state_func = @RuntimeGeneratedFunction( - toexpr(Func(func_args, [], Let(assign_list, dfunc.state_expr, false))) - ) - merged_state_func -end - - -function build_state_funcv3( - funcs::Vector{<:AbstractFlux}, - dfunc::AbstractStateFlux, - input_names::Vector{Symbol}, -) - total_param_names = keys(reduce(hcat, [func.param_info for func in vcat(funcs, dfunc)])) - state_input_names = keys(dfunc.input_info) - state_param_names = keys(dfunc.param_info) - - func_input_names = [get_input_names(func) for func in funcs] - func_output_names = [get_output_names(func) for func in funcs] - func_param_names = [get_param_names(func) for func in funcs] - - flux_exprs = [ - :(($(output_name...),) = $flux([$(input_name...),], [$(param_name...)])) - for (input_name, output_name, param_name, flux) in zip(func_input_names, func_output_names, func_param_names, funcs) - ] - - state_func = build_function(dfunc.state_expr, collect(dfunc.input_info), collect(dfunc.param_info), expression=Val{true}) - - state_func_expr = :((i, p) -> begin - ($(input_names...),) = i - ($(total_param_names...),) = p - $(flux_exprs...) - return $(state_func)([$(state_input_names...)], [$(state_param_names...)]) - end) - - merged_state_func = @RuntimeGeneratedFunction(state_func_expr) - merged_state_func -end \ No newline at end of file diff --git a/temp/estimator.jl b/temp/estimator.jl deleted file mode 100644 index df3969b..0000000 --- a/temp/estimator.jl +++ /dev/null @@ -1,57 +0,0 @@ -""" -# 参数估计的输入类型是比较多样的,包括单节点输入,时段输入 -# 这个类的面向的问题在于: -# 1. 初始状态的确定,一般来说在参数优化中可能会考虑初始状态的影响, -# 但是比如土壤初始含水量的估计是与其最大含水量挂钩的,所以一般来说是用初始百分比来确定的,这时候就需要estimator设置一个百分比的参数 -# 2. 然后就是一些参数的确定,比如马斯京根算法k,这些是可以直接根据河道长度推算的,所以可以采用estimator设置输入参数为河长,依次估计k -# 3. 还有一些参数的估计是根据数据确定的,比如说前期降雨序列,通过这个输入到神经网络中可以估计初始土壤含水 - -# 总之这个estimator是为了避免在原模型上大幅度魔改,使其有规范性,且降低修改门槛,灵活性也更强 -# estimator的实质是将计算结果替换参数或状态,而其余类型都是计算结果给出新的变量 -""" -struct HydroEstimator <: AbstractEstimator - "用于预测的方法,一般来说一个Flux就够了" - eflux::AbstractFlux - "待用于预测的params" - params::Vector{Num} - "输出的参数尺度" - initstates::Vector{Num} - "MetaData" - meta::HydroMeta - - function HydroEstimator(eflux::AbstractFlux, output_axes, data_stats::Function) - #* Extract all variable names of funcs and dfuncs - input_names, output_names, state_names = get_var_names(eflux) - #* Extract all parameters names of funcs and dfuncs - param_names = get_param_names(eflux) - #* Extract all neuralnetwork names of the funcs - nn_names = get_nn_names(eflux) - #* Setup the name information of the hydrobucket - meta = HydroMeta(name=name, input=input_names, output=output_names, state=state_names, param=param_names, nn=nn_names) - - return new(eflux, params, meta) - end -end - -function (est::HydroEstimator)(input::Matrix, params::ComponentVector, timeidx::Vector{<:Number}) - #* 处理input数据 - stats_input = est.data_stats(input, dims=2) - #* 计算参数 - predict_params = est.eflux(stats_input, params, timeidx) - @assert length(predict_params) == length(typeof(est.output_axes).parameters) "predict_params length must be equal to output_axes length" - #* 构建ComponentVector - return ComponentVector(predict_params, est.output_axes) -end - -function (est::HydroEstimator)(input::Array, params::ComponentVector, timeidx::Vector{<:Number}) - #* 处理input数据 - stats_input = est.data_stats(input, dims=3) - #* 计算参数 - predict_params_vec = est.eflux.(eachslice(stats_input, dims=2), Ref(params), Ref(timeidx)) - params_ca_vec = [ComponentVector(predict_params, est.output_axes) for predict_params in predict_params_vec] - #! 这一块,根据输入数据的维度,会生成针对多个node的参数值,这里的node的key很有可能是跟ptypes不匹配的, - #! 也就是说不同组的参数可能会分在不同组的ptypes下这个时候应该如何处理? - #* 构建ComponentVector - return params_ca_vec -end - diff --git a/temp/graph.jl b/temp/graph.jl deleted file mode 100644 index d78bc44..0000000 --- a/temp/graph.jl +++ /dev/null @@ -1,129 +0,0 @@ - - -""" -32 64 128 -16 1 -8 4 2 -""" -d8_codes = [1, 2, 4, 8, 16, 32, 64, 128] -d8_nn_pads = [(1, 1, 2, 0), (2, 0, 2, 0), (2, 0, 1, 1), (2, 0, 0, 2), (1, 1, 0, 2), (0, 2, 0, 2), (0, 2, 1, 1), (0, 2, 2, 0),] - - -#! nodeinfo: node_id => row_idx, col_idx -function cal_grid_sort(nodeinfo::NamedTuple, flwacc::AbstractMatrix) - #* 先转换为vec类型 - acc_num = reduce(*, size(flwacc)) - flwacc_vec = vec(reshape(flwacc, 1, acc_num)) - sortperm_vec = sortperm(flwacc_vec) - #* 按大小计算顺序 - flwacc_sortidx = similar(sortperm_vec) - for i in 1:length(flwacc_sortidx) - flwacc_sortidx[sortperm_vec[i]] = i - end - #* 生成每个节点的计算顺序 - sortidx_mat = reshape(flwacc_sortidx, size(flwacc)...) - #* 节点与之对应计算次序的namedtuple - node_pairs = map(zip(keys(nodeinfo), collect(nodeinfo))) do (k, v) - k => sortidx_mat[v...] - end - #* 根据计算次序对ntp重新排序 - NamedTuple(sort(node_pairs, by=x -> x[2])) -end - -function cal_grid_relation(nodeinfo::NamedTuple, flwdir::AbstractMatrix; return_graph=false) - #* d8的一些基础信息 - d8_direction = [32, 64, 128, 16, 1, 8, 4, 2] - d8_moveidx = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)] - d8_dict = Dict([dir => midx for (dir, midx) in zip(d8_direction, d8_moveidx)]) - - flwdir_size = size(flwdir) - di_graph = SimpleDiGraph(length(nodeinfo)) - node_dir_vec = collect(nodeinfo) - position_dict = Dict([v => i for (i, v) in enumerate(node_dir_vec)]) - #* 根据flwdir构建graphs - for row_idx in 1:size(flwdir)[1] - for col_idx in 1:size(flwdir)[2] - if !(flwdir[row_idx, col_idx] in d8_direction) - continue - end - move_idx_ = d8_dict[flwdir[row_idx, col_idx]] - target_row_idx, target_col_idx = row_idx + move_idx_[1], col_idx + move_idx_[2] - if (target_row_idx < 1) | (target_row_idx > flwdir_size[1]) - continue - end - if (target_col_idx < 1) | (target_col_idx > flwdir_size[2]) - continue - end - add_edge!(di_graph, position_dict[(row_idx, col_idx)], position_dict[(target_row_idx, target_col_idx)]) - end - end - - if return_graph - di_graph - else - #* 获取graph所有点 - all_vertices = Graphs.vertices(di_graph) - #* 获取每个点的matidx和其对应的输入点的mat idx - inflow_relation = NamedTuple(map(all_vertices) do vertice - keys(nodeinfo)[vertice] => [keys(nodeinfo)[up_vert] for up_vert in Graphs.inneighbors(di_graph, vertice)] - end) - inflow_relation - end -end - -function build_grid_graph(nodeinfo::NamedTuple, flwdir::AbstractMatrix) - d8_direction = [32, 64, 128, 16, 1, 8, 4, 2] - d8_moveidx = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)] - d8_dict = Dict([dir => midx for (dir, midx) in zip(d8_direction, d8_moveidx)]) - - flwdir_size = size(flwdir) - di_graph = SimpleDiGraph(length(nodeinfo)) - node_dir_vec = collect(nodeinfo) - position_dict = Dict([v => i for (i, v) in enumerate(node_dir_vec)]) - #* 根据flwdir构建graphs - for row_idx in 1:size(flwdir)[1] - for col_idx in 1:size(flwdir)[2] - if !(flwdir[row_idx, col_idx] in d8_direction) - continue - end - move_idx_ = d8_dict[flwdir[row_idx, col_idx]] - target_row_idx, target_col_idx = row_idx + move_idx_[1], col_idx + move_idx_[2] - if (target_row_idx < 1) | (target_row_idx > flwdir_size[1]) - continue - end - if (target_col_idx < 1) | (target_col_idx > flwdir_size[2]) - continue - end - add_edge!(di_graph, position_dict[(row_idx, col_idx)], position_dict[(target_row_idx, target_col_idx)]) - end - end - di_graph -end - -function get_route_len(graph::Graphs.DiGraph, target::Int) - route_len_dict = Dict() - for vt in Graphs.vertices(di_graph) - route_len_dict[vt] = length(Graphs.a_star(graph, vt, target)) - end - route_len_dict -end - - -function grid_routing(flow::AbstractMatrix, flwdir::AbstractMatrix) - flow_routed = sum(collect([pad_zeros(flow .* (flwdir .== code), arg) - for (code, arg) in zip(d8_codes, d8_nn_pads)])) - - flow_routed[2:size(flow)[1]+1, 2:size(flow)[2]+1] -end - -function grid_routingv2(flow::AbstractMatrix, flwdir::AbstractMatrix) - flow_routed = sum(collect([pad(flow .* (flwdir .== code), eltype(flow)(0.0), arg1, arg2) - for (code, arg1, arg2) in zip(d8_codes, d8_pads_args1, d8_pads_args2)])) - - flow_routed[2:size(flow)[1]+1, 2:size(flow)[2]+1] -end - -function matrix_idx(arr_size::Tuple, idx::Tuple) - n = arr_size[2] - (idx[1] - 1) * n + idx[2] -end diff --git a/temp/muskingum_disc.jl b/temp/muskingum_disc.jl deleted file mode 100644 index ae7188c..0000000 --- a/temp/muskingum_disc.jl +++ /dev/null @@ -1,76 +0,0 @@ -function MuskingumRouteFlux( - input::Num, - output::Union{Num,Nothing}=nothing, -) - @parameters k, x, dt - - if isnothing(output) - input_name = Symbolics.tosymbol(input, escape=false) - output_name = Symbol(input_name, :_routed) - output = first(@variables $output_name) - end - - return VectorRouteFlux( - input, - [k, x, dt], - routetype=:muskingum, - output=output - ) -end - -function (flux::VectorRouteFlux{:muskingum})(input::AbstractMatrix, pas::ComponentVector; kwargs::NamedTuple=NamedTuple()) - input_len = size(input)[2] - input_vec = input[1, :] - params = pas[:params] - - k, x, dt = params.k, params.x, params.dt - c0 = ((dt / k) - (2 * x)) / ((2 * (1 - x)) + (dt / k)) - c1 = ((dt / k) + (2 * x)) / ((2 * (1 - x)) + (dt / k)) - c2 = ((2 * (1 - x)) - (dt / k)) / ((2 * (1 - x)) + (dt / k)) - - function msk_prob(u, p, t) - q_in, q_out = u[1], u[2] - c0, c1, c2 = p - new_q = (c0 * input_vec[Int(t)]) + (c1 * q_in) + (c2 * q_out) - [input_vec[Int(t)], new_q] - end - - prob = DiscreteProblem(msk_prob, [input_vec[1], input_vec[1]], (1, input_len), ComponentVector(c0=c0, c1=c1, c2=c2)) - sol = solve(prob, FunctionMap()) - Array(sol[2,:]) -end - -function get_rflux_initstates(::VectorRouteFlux{:muskingum}; pas::ComponentVector, ptypes::AbstractVector{Symbol}) - [pas[:initstates][ptype][:s_river] for ptype in ptypes] -end - -function get_rflux_func(::VectorRouteFlux{:muskingum}; pas::ComponentVector, ptypes::AbstractVector{Symbol}) - function cal_q_out!(du, q_out, q_in, q_gen, p) - k_ps = [p[ptype][:k] for ptype in ptypes] - x_ps = [p[ptype][:x] for ptype in ptypes] - dt_ps = [p[ptype][:dt] for ptype in ptypes] - - c0_ps = @. ((dt_ps / k_ps) - (2 * x_ps)) / ((2 * (1 - x_ps)) + (dt_ps / k_ps)) - c1_ps = @. ((dt_ps / k_ps) + (2 * x_ps)) / ((2 * (1 - x_ps)) + (dt_ps / k_ps)) - c2_ps = @. ((2 * (1 - x_ps)) - (dt_ps / k_ps)) / ((2 * (1 - x_ps)) + (dt_ps / k_ps)) - - new_q_out = @.((c0_ps * q_in) + (c1_ps * q_in[Int(t)-1]) + (c2_ps * (q_out + q_gen))) - du[:flux_states] = new_q_out - new_q_out - end - - function cal_q_out(q_out, q_in, q_gen, p) - k_ps = [p[ptype][:k] for ptype in ptypes] - x_ps = [p[ptype][:x] for ptype in ptypes] - dt_ps = [p[ptype][:dt] for ptype in ptypes] - - c0_ps = @.(((dt_ps / k_ps) - (2 * x_ps)) / ((2 * (1 - x_ps)) + (dt_ps / k_ps))) - c1_ps = @.(((dt_ps / k_ps) + (2 * x_ps)) / ((2 * (1 - x_ps)) + (dt_ps / k_ps))) - c2_ps = @.(((2 * (1 - x_ps)) - (dt_ps / k_ps)) / ((2 * (1 - x_ps)) + (dt_ps / k_ps))) - - new_q_out = @.((c0_ps * q_in) + (c1_ps * q_in[Int(t)-1]) + (c2_ps * (q_out + q_gen))) - new_q_out - end - - return cal_q_out!, cal_q_out -end diff --git a/temp/optimize.jl b/temp/optimize.jl deleted file mode 100644 index d4d034f..0000000 --- a/temp/optimize.jl +++ /dev/null @@ -1,89 +0,0 @@ - -function param_batch_optim( - component::AbstractComponent; - tunable_pas::ComponentVector, - const_pas::ComponentVector, - input::Vector, - target::Vector, - config::Vector{<:NamedTuple}=[NamedTuple()], - run_kwargs::NamedTuple=(convert_to_ntp=true,), - opt_kwargs..., -) - #* Get the argument for parameter optimization - loss_func = get(opt_kwargs, :loss_func, (obs, sim) -> sum((obs .- sim) .^ 2) / length(obs)) - adtype = get(opt_kwargs, :adtype, Optimization.AutoZygote()) - maxiters = get(opt_kwargs, :maxiters, 100) - warmup = get(opt_kwargs, :warmup, 100) - solve_alg = get(opt_kwargs, :solve_alg, Adam()) - - #* prepare the batch data - train_batch = [(input_i, target_i, cfg_i) for (input_i, target_i, cfg_i) in zip(input, target, config)] - - #* Construct default model parameters based on tunbale parameters and constant parameters for subsequent merging - default_model_pas = ComponentArray(merge_recursive(NamedTuple(tunable_pas), NamedTuple(const_pas))) - - #* Constructing the objective function for optimization - function objective(x::AbstractVector{T}, p, batch_input, batch_target, batch_cfg) where {T} - #* Optimization arguments: hydro component, input data, time index, ode solver, - #* tunable parameters axes and default model params - #* Use merge_ca to replace the tunable parameters inner the model parameters - _component, __default_model_pas = p - tmp_pas = update_ca(__default_model_pas, x) - tmp_pred = _component(batch_input, tmp_pas; config=batch_cfg, run_kwargs...) - loss = mean([loss_func(batch_target[key][warmup:end], tmp_pred[key][warmup:end]) for key in keys(batch_target)]) - loss - end - - # todo 添加earlystop功能 - # if all([k in keys(opt_kwargs) for k in [:val_input, :val_target, :val_timeidx]]) - # #* validation arguments - # patience = get(opt_kwargs, :patience, 10) - # min_epoch = get(opt_kwargs, :min_epoch, 5) - # val_input = get(opt_kwargs, :val_input, input) - # val_target = get(opt_kwargs, :val_target, target) - # val_timeidx = get(opt_kwargs, :val_timeidx, timeidx) - # val_dataset = [val_input, val_target, val_timeidx] - # loss_recorder = NamedTuple[] - # callback_func = get(opt_kwargs, :callback_func, get_batch_callback_func_with_earlystop(length(input), loss_recorder, val_dataset, patience, min_epoch)) - loss_recorder = NamedTuple[] - callback_func = get(opt_kwargs, :callback_func, get_batch_callback_func(length(input), loss_recorder)) - - #* Constructing and solving optimization problems - optf = Optimization.OptimizationFunction(objective, adtype) - optprob = Optimization.OptimizationProblem(optf, tunable_pas, (component, default_model_pas)) - sol = Optimization.solve(optprob, solve_alg, ncycle(train_batch, maxiters), callback=callback_func) - #* Returns the optimized model parameters - sol.u -end - -function nn_param_optim( - flux::AbstractNeuralFlux; - input::AbstractMatrix, - target::NamedTuple, - init_params::ComponentVector, - kwargs... -) - #* Get the argument for parameter optimization - solve_alg = get(kwargs, :solve_alg, Adam(0.01)) - adtype = get(kwargs, :adtype, Optimization.AutoZygote()) - maxiters = get(kwargs, :maxiters, 100) - loss_func = get(kwargs, :loss_func, (obs, sim) -> sum((obs .- sim) .^ 2) / length(obs)) - callback_func = get(kwargs, :callback_func, default_callback_func) - - #* Integrate nn's input variables - flux_nn_name = get_param_names(flux)[1] - flux_output_name = get_output_names(flux) - - #* Constructing the objective function for optimization - function objective(u, p) - predict = flux(input, [u[flux_nn_name]]) - predict_ntp = NamedTuple{Tuple(flux_output_name)}(eachcol(predict)) - mean([loss_func(predict_ntp[nm], target[nm]) for nm in keys(target)]) - end - - #* Constructing and solving optimization problems - optf = Optimization.OptimizationFunction(objective, adtype) - optprob = Optimization.OptimizationProblem(optf, init_params) - sol = Optimization.solve(optprob, solve_alg, callback=callback_func, maxiters=maxiters) - sol.u -end \ No newline at end of file diff --git a/temp/test_lag_ele.jl b/temp/test_lag_ele.jl deleted file mode 100644 index a886503..0000000 --- a/temp/test_lag_ele.jl +++ /dev/null @@ -1,23 +0,0 @@ -include("../src/HydroModels.jl") -using ModelingToolkit: @variables, @parameters -using ComponentArrays - -@variables slowflow fastflow slowflow_lag fastflow_lag -@parameters x1 x2 - -lag_funcs = [ - LumpedHydro.LagFlux(slowflow => slowflow_lag, x1, LumpedHydro.uh_3_half), - LumpedHydro.LagFlux(fastflow => fastflow_lag, x2, LumpedHydro.uh_3_half), -] - -lag_ele = LumpedHydro.LagElement(:lag, lfuncs=lag_funcs); -input_matrix = [1 2 3 2 3 4 1 2;] # 1 2 3 2 3 4 1 2 - -input_arr = reduce((m1, m2) -> cat(m1, m2, dims=3), repeat([[1 2 3 2 3 4 1 2; 1 2 3 2 3 4 1 2]], 5)) -input_arr = permutedims(input_arr, (1, 3, 2)) -# input_arr = input_arr[1:1, :, :] -#* input_num * ts len * node num -cv = ComponentVector(NamedTuple{Tuple([Symbol(:node_, i) for i in 1:5])}(repeat([(x1=2.39, x2=5.39)], 5))) - -output = LumpedHydro.run_multi_fluxes(lag_ele, input=input_arr, params=cv) -# output[1,1,:] \ No newline at end of file diff --git a/temp/test_lag_flux.jl b/temp/test_lag_flux.jl deleted file mode 100644 index c65784f..0000000 --- a/temp/test_lag_flux.jl +++ /dev/null @@ -1,50 +0,0 @@ -using OrdinaryDiffEq - -ifelse_func(x) = ifelse(x > 0, 1, 0) - -uh_1_half(input, lag) = (ifelse_func(input - lag) + ifelse_func(lag - input) * ifelse_func(input) * (input / lag)^2.5) - -uh_2_full(input, lag) = begin - half_lag = lag ./ 2 - (ifelse_func(input - lag) * 1 + - ifelse_func(lag - input) * ifelse_func(input - half_lag) * (1 - 0.5 * abs(2 - input / half_lag)^2.5) + - ifelse_func(half_lag - input) * ifelse_func(input) * (0.5 * abs(input / half_lag)^2.5)) -end - -function flux_unit_routing(flux::Vector, timeidx::Vector, lag_func::Function, lag_time::T, num_uh::Int) where {T} - ts = 1:num_uh - lag_weights = [lag_func(t, lag_time) for t in ts] - lag_weights = vcat([lag_weights[1]], (circshift(lag_weights, -1).-lag_weights)[1:end-1]) - - function lag_disc_func(u, p, t) - u = circshift(u, -1) - u[end] = 0.0 - tmp_u = flux[Int(t)] .* p[:weights] .+ u - tmp_u - end - - prob = DiscreteProblem(lag_disc_func, lag_weights, (timeidx[1], timeidx[end]), ComponentVector(weights=lag_weights)) - sol = solve(prob, FunctionMap()) - if !SciMLBase.successful_retcode(sol) - println("Error in GR4J routing ") - return flux - end - # sol[1, :] - sol -end - -re = flux_unit_routing([1, 2, 3, 4, 2, 3, 2, 4, 2, 1], collect(1:10), uh_1_half, 3.5, 10) - -f(u, p, t) = 1.01 * u -u0 = 1 / 2 -tspan = (0.0, 1.0) -prob = ODEProblem(f, u0, tspan) - -function ff(u, p, t) - u1, u2 = u[:u1], u[:u2] - ComponentVector(u1=u1 .* 1.02, u1=u2 ./ 1.02) -end - -tspan = (0.0, 1.0) -prob = ODEProblem(f, ComponentVector(u1=[2 3 4;], u2=[2 3;]), tspan) -solve(prob, Tsit5()) \ No newline at end of file diff --git a/temp/test_msk.jl b/temp/test_msk.jl deleted file mode 100644 index f21ba30..0000000 --- a/temp/test_msk.jl +++ /dev/null @@ -1,95 +0,0 @@ -using OrdinaryDiffEq -using DataInterpolations -using Plots - -# 输入流量函数 I(t) -I_vec = [2, 3, 4, 3, 5, 6, 7, 8, 9, 10, 5, 3, 2] -I_vec_copy = copy(I_vec) -# timeidx = collect(0:length(I_vec)-1) .* 24 -timeidx = 1:length(I_vec) -# 参数 -k = K = 1.0 # 蓄泄常数 -x = 0.5 # 权重系数 - -function route1(I_vec, timeidx) - itp_func = LinearInterpolation(I_vec, timeidx) - # 定义 ODE 的右侧函数 - function muskingum_ode!(dS, S, p, t) - I = itp_func(t) # 输入流量作为时间的函数 - K, x = p.K, p.x - S_ = S[1] - # 计算出流量 Q - Q = (S_ - K * x * I) / (K * (1 - x)) - # 计算 dS/dt - dS[1] = I - Q - end - - p = (K=K, x=x) - - # 初始条件 - S0 = [K * I_vec[1]] # 初始储水量 - - # 构建 ODE 问题 - prob = ODEProblem(muskingum_ode!, S0, (timeidx[1], timeidx[end]), p) - - # 求解 ODE 问题 - sol = solve(prob, Tsit5(), saveat=timeidx) - sol_vec = Vector(sol) - I_vec_2 = [itp_func(t) for t in sol.t] - Q_vec = @. (sol_vec - K * x * I_vec_2) / (K * (1 - x)) - return Q_vec -end - -function route2(I_vec, dt) - - c0 = ((dt / k) - (2 * x)) / ((2 * (1 - x)) + (dt / k)) - c1 = ((dt / k) + (2 * x)) / ((2 * (1 - x)) + (dt / k)) - c2 = ((2 * (1 - x)) - (dt / k)) / ((2 * (1 - x)) + (dt / k)) - - function msk_prob(u, p, t) - q_in, q_out = u[1], u[2] - c0, c1, c2 = p - new_q = (c0 * I_vec[Int(t)]) + (c1 * q_in) + (c2 * q_out) - [I_vec[Int(t)], new_q] - end - - prob = DiscreteProblem(msk_prob, [I_vec[1], I_vec[1]], (1, length(I_vec)), (c0, c1, c2)) - sol = solve(prob, FunctionMap()) - sol_arr = Array(sol) - return sol_arr[2, :] -end - -I_vec = Float64[2, 3, 4, 3, 5, 6, 7, 8, 9, 10, 5, 3, 2] -Q_vec_list = [I_vec] -for i in 1:10 - @info Q_vec_list[i] - push!(Q_vec_list, route1(Q_vec_list[i], timeidx)) - # 输出结果 - # plot(sol, xlabel="Time", ylabel="Storage S(t)", title="Muskingum Method ODE Solution") -end - -I_vec = Float64[2, 3, 4, 3, 5, 6, 7, 8, 9, 10, 5, 3, 2] -Q_vec_list2 = [I_vec] -for i in 1:10 - @info Q_vec_list2[i] - push!(Q_vec_list2, route2(Q_vec_list2[i], 1)) - # 输出结果 - # plot(sol, xlabel="Time", ylabel="Storage S(t)", title="Muskingum Method ODE Solution") -end - -plot() -for i in 1:length(Q_vec_list) - plot!(Q_vec_list[i], color="red") -end -savefig("Q_vec.png") - - -plot() -for i in 1:length(Q_vec_list2) - plot!(Q_vec_list2[i], color="blue") -end -savefig("Q_vec2.png") - - -plot(Q_vec_list[4], color="red") -plot!(Q_vec_list2[4], color="blue") diff --git a/temp/test_routeflux.jl b/temp/test_routeflux.jl deleted file mode 100644 index 3d7b988..0000000 --- a/temp/test_routeflux.jl +++ /dev/null @@ -1,48 +0,0 @@ -using DataInterpolations -using OrdinaryDiffEq -using Zygote -using Plots - -input_arr = [3 4 4 5 6 10 23 24 38 40 59 63 49 32 22 12 9 4] -input_itp = LinearInterpolation(input_arr[1, :], collect(1:length(input_arr))) - - - -function discharge2!(du, u, p, t) - s_river, q_in = u[1], u[2] - q_out = (s_river+q_in) / (p[1] + 1) - du[1] = q_in - q_out - du[2] = q_out + input_itp(t) - q_in -end - -prob = ODEProblem(discharge2!, [0.1, 3], (1, length(input_arr)), [0.3]) -sol3 = solve(prob, Tsit5(), saveat=1.0) - -function discharge2(u, p, t) - s_river, q_in = u[1], u[2] - @info [s_river q_in] - q_out = (s_river+q_in) / (p[1] + 1) - [s_river + q_in - q_out, q_out + input_itp(t)] -end - -prob2 = DiscreteProblem(discharge2, [0.1, 3], (1, length(input_arr)), [0.3]) -sol4 = solve(prob2, FunctionMap()) - -input_arr = [3 4 4 5 6 10 23 24 38 40 59 63 49 32 22 12 9 4] -s_river = zeros(length(input_arr)) -q_in = zeros(length(input_arr)) -q_out = zeros(length(input_arr)) -s_river0, q_in0 = 0.1, 3 -p = [0.3] -for i in eachindex(input_arr) - q_out[i] = (s_river0) / (p[1] + 1) - s_river[i] = s_river0 + q_in0 - q_out[i] - q_in[i] = q_out[i] + input_arr[i] - s_river0, q_in0 = s_river[i], q_in[i] - @info [q_out[i] q_in[i] s_river[i]] -end - - -plot(sol3) -plot!(sol4) -savefig("test_routeflux.png") diff --git a/temp/test_something.jl b/temp/test_something.jl deleted file mode 100644 index 84bd24e..0000000 --- a/temp/test_something.jl +++ /dev/null @@ -1,16 +0,0 @@ -using Zygote -using BenchmarkTools - -function single_iteration(state, p) - # Perform your calculation here - # This is where you would use the input mat and create a new mat - mat, history = state - new_mat = mat .* p - return new_mat, vcat(history, [new_mat]) -end - -mat = ones(3, 3) -final_mat, history = reduce((acc, _) -> single_iteration(acc, 2), 1:10, init=(mat, (mat,))) - - - diff --git a/temp/train_lstm_in_opt.jl b/temp/train_lstm_in_opt.jl deleted file mode 100644 index cf3ee86..0000000 --- a/temp/train_lstm_in_opt.jl +++ /dev/null @@ -1,73 +0,0 @@ -using Lux -using LuxCore -using Zygote -using StableRNGs -using ComponentArrays -using Optimization -using OptimizationOptimisers - -# function LSTMCompact(in_dims, hidden_dims, out_dims) -# lstm_cell = LSTMCell(in_dims => hidden_dims) -# classifier = Dense(hidden_dims => out_dims, sigmoid) -# return @compact(; lstm_cell, classifier) do x::AbstractArray{T,2} where {T} -# x = reshape(x, size(x)..., 1) -# x_init, x_rest = Iterators.peel(LuxOps.eachslice(x, Val(2))) -# y, carry = lstm_cell(x_init) -# output = [vec(classifier(y))] -# for x in x_rest -# y, carry = lstm_cell((x, carry)) -# output = vcat(output, [vec(classifier(y))]) -# end -# @return hcat(output...) -# end -# end - -function LSTMCompact(in_dims, hidden_dims, out_dims) - lstm_cell = LSTMCell(in_dims => hidden_dims) - classifier = Dense(hidden_dims => out_dims, sigmoid) - return @compact(; lstm_cell, classifier) do x::AbstractArray{T, 2} where {T} - x = reshape(x, size(x)..., 1) - x_init, x_rest = Iterators.peel(LuxOps.eachslice(x, Val(2))) - y, carry = lstm_cell(x_init) - output = [vec(classifier(y))] - for x in x_rest - y, carry = lstm_cell((x, carry)) - output = vcat(output, [vec(classifier(y))]) - end - @return reduce(hcat, output) # <--- This is the different line - end -end - -model = LSTMCompact(3, 10, 1) -ps, st = Lux.setup(StableRNGs.LehmerRNG(1234), model) -smodel = StatefulLuxLayer{true}(model, nothing, st) - -# smodel(rand(3, 10), ComponentVector(ps)) -# LuxCore.apply(smodel, rand(3, 10), ComponentVector(ps)) -ps_axes = getaxes(ComponentVector(ps)) -x = rand(3, 10) -y = rand(1, 10) -function object(u, p) - ps = ComponentVector(u, ps_axes) - sum((smodel(x, ps) .- y) .^ 2) -end - -function objectv2(u, p) - st = p[1] - ps = ComponentVector(u, ps_axes) - sum((model(x, ps, st)[1] .- y) .^ 2) -end - -opt_func = Optimization.OptimizationFunction(objectv2, Optimization.AutoZygote()) -opt_prob = Optimization.OptimizationProblem(opt_func, Vector(ComponentVector(ps)), [st]) -opt_sol = Optimization.solve(opt_prob, OptimizationOptimisers.Adam(0.1), maxiters=100) - - -function MLPCompact(in_dims, hidden_dims, out_dims) - mlp_cell = Dense(in_dims => hidden_dims) - classifier = Dense(hidden_dims => out_dims, sigmoid) - return @compact(; mlp_cell, classifier) do x::AbstractArray{T,2} where {T} - output = classifier(mlp_cell(x)) - @return output - end -end