Can't get the @named pde_system to work with a ode system
geriatricvibes opened this issue · comments
equations, bcs and domain, the parameters are some constants
eq = [u(t) ~ ocv - icell*rs - irst(t)*rst - irlt(t)*rlt,
icell ~ irst(t) + Dt(rst*cst*irst(t)),
icell ~ irlt(t) + Dt(rlt*clt*irlt(t)),
mcp*Dt(temp(t)) ~ (temp(t) - tenv)/rth + icell*(u(t)-ocv)]
bcs = [u(0.0)~0.0, irst(0.0)~0.0, irlt(0.0)~0.0,temp(0.0)~25.0]
domains = [t ∈ Interval(0.0, 10.0)]
@named pde_system = PDESystem(eq, bcs, domains, [t], [u(t), temp(t), irst(t), irlt(t)])
prob = NeuralPDE.discretize(pde_system, discretization)
callback = function (p, l)
println("loss: $l")
return false
end
res = Optimization.solve(prob, BFGS(); callback = callback, maxiters = 100)
phi = discretization.phi
returns error
type NamedTuple has no field irlt
Stacktrace:
[1] getproperty
@ [.\Base.jl:37](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/rnath/roboticai/git/RoboticAI/multiapp/jl_multiapp/Base.jl:37) [inlined]
[2] getindex(::ComponentArrays.Axis{(u = ViewAxis(1:286, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), temp = ViewAxis(287:572, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), irst = ViewAxis(573:858, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))))}, s::Symbol)
@ ComponentArrays [C:\Users\rnath\.julia\packages\ComponentArrays\nfnS3\src\axis.jl:158](file:///C:/Users/rnath/.julia/packages/ComponentArrays/nfnS3/src/axis.jl:158)
[3] _broadcast_getindex_evalf
@ [.\broadcast.jl:709](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/rnath/roboticai/git/RoboticAI/multiapp/jl_multiapp/broadcast.jl:709) [inlined]
[4] _broadcast_getindex
@ [.\broadcast.jl:682](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/rnath/roboticai/git/RoboticAI/multiapp/jl_multiapp/broadcast.jl:682) [inlined]
[5] (::Base.Broadcast.var"#31#32"{Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple}, Nothing, typeof(getindex), Tuple{Tuple{ComponentArrays.Axis{(u = ViewAxis(1:286, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), temp = ViewAxis(287:572, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), irst = ViewAxis(573:858, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))))}}, Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple}, Nothing, typeof(ComponentArrays.getval), Tuple{Tuple{DataType}}}}}})(k::Int64)
@ Base.Broadcast [.\broadcast.jl:1118](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/rnath/roboticai/git/RoboticAI/multiapp/jl_multiapp/broadcast.jl:1118)
[6] ntuple
@ [.\ntuple.jl:48](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/rnath/roboticai/git/RoboticAI/multiapp/jl_multiapp/ntuple.jl:48) [inlined]
[7] copy
@ [.\broadcast.jl:1118](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/rnath/roboticai/git/RoboticAI/multiapp/jl_multiapp/broadcast.jl:1118) [inlined]
[8] materialize(bc::Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple}, Nothing, typeof(getindex), Tuple{Tuple{ComponentArrays.Axis{(u = ViewAxis(1:286, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), temp = ViewAxis(287:572, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), irst = ViewAxis(573:858, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))))}}, Base.Broadcast.Broadcasted{Base.Broadcast.Style{Tuple}, Nothing, typeof(ComponentArrays.getval), Tuple{Tuple{DataType}}}}})
@ Base.Broadcast [.\broadcast.jl:903](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/rnath/roboticai/git/RoboticAI/multiapp/jl_multiapp/broadcast.jl:903)
[9] #s39#57
@ [C:\Users\rnath\.julia\packages\ComponentArrays\nfnS3\src\array_interface.jl:120](file:///C:/Users/rnath/.julia/packages/ComponentArrays/nfnS3/src/array_interface.jl:120) [inlined]
[10] var"#s39#57"(::Any, index_fun::Any, x::Any, idx::Any)
@ ComponentArrays [.\none:0](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/rnath/roboticai/git/RoboticAI/multiapp/jl_multiapp/none:0)
[11] (::Core.GeneratedFunctionStub)(::UInt64, ::LineNumberNode, ::Any, ::Vararg{Any})
@ Core [.\boot.jl:602](https://file+.vscode-resource.vscode-cdn.net/c%3A/Users/rnath/roboticai/git/RoboticAI/multiapp/jl_multiapp/boot.jl:602)
...
@ OptimizationOptimJL [C:\Users\rnath\.julia\packages\OptimizationOptimJL\yMF3E\src\OptimizationOptimJL.jl:212](file:///C:/Users/rnath/.julia/packages/OptimizationOptimJL/yMF3E/src/OptimizationOptimJL.jl:212)
[76] solve!(cache::OptimizationCache{OptimizationFunction{true, AutoZygote, NeuralPDE.var"#full_loss_function#344"{NeuralPDE.var"#null_nonadaptive_loss#147", Vector{NeuralPDE.var"#133#136"{loss_function, DataType} where loss_function}, Vector{NeuralPDE.var"#135#139"{loss_function, Vector{Float64}, Vector{Float64}, NeuralPDE.var"#134#137"{QuadratureTraining{Integrals.CubatureJLh, Float64}}, Float64} where loss_function}, NeuralPDE.PINNRepresentation, Bool, Vector{Int64}, Int64, Vector{NeuralPDE.Phi{Chain{@NamedTuple{layer_1::Dense{true, typeof(sigmoid_fast), typeof(glorot_uniform), typeof(zeros32)}, layer_2::Dense{true, typeof(sigmoid_fast), typeof(glorot_uniform), typeof(zeros32)}, layer_3::Dense{true, typeof(identity), typeof(glorot_uniform), typeof(zeros32)}}, Nothing}, @NamedTuple{layer_1::@NamedTuple{}, layer_2::@NamedTuple{}, layer_3::@NamedTuple{}}}}, Nothing, Bool}, OptimizationZygoteExt.var"#38#56"{OptimizationZygoteExt.var"#37#55"{OptimizationFunction{true, AutoZygote, NeuralPDE.var"#full_loss_function#344"{NeuralPDE.var"#null_nonadaptive_loss#147", Vector{NeuralPDE.var"#133#136"{loss_function, DataType} where loss_function}, Vector{NeuralPDE.var"#135#139"{loss_function, Vector{Float64}, Vector{Float64}, NeuralPDE.var"#134#137"{QuadratureTraining{Integrals.CubatureJLh, Float64}}, Float64} where loss_function}, NeuralPDE.PINNRepresentation, Bool, Vector{Int64}, Int64, Vector{NeuralPDE.Phi{Chain{@NamedTuple{layer_1::Dense{true, typeof(sigmoid_fast), typeof(glorot_uniform), typeof(zeros32)}, layer_2::Dense{true, typeof(sigmoid_fast), typeof(glorot_uniform), typeof(zeros32)}, layer_3::Dense{true, typeof(identity), typeof(glorot_uniform), typeof(zeros32)}}, Nothing}, @NamedTuple{layer_1::@NamedTuple{}, layer_2::@NamedTuple{}, layer_3::@NamedTuple{}}}}, Nothing, Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Optimization.ReInitCache{ComponentArrays.ComponentVector{Float64, Vector{Float64}, Tuple{ComponentArrays.Axis{(depvar = ViewAxis(1:858, Axis(u = ViewAxis(1:286, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), temp = ViewAxis(287:572, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), irst = ViewAxis(573:858, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))))),)}}}, SciMLBase.NullParameters}}}, OptimizationZygoteExt.var"#41#59"{OptimizationZygoteExt.var"#37#55"{OptimizationFunction{true, AutoZygote, NeuralPDE.var"#full_loss_function#344"{NeuralPDE.var"#null_nonadaptive_loss#147", Vector{NeuralPDE.var"#133#136"{loss_function, DataType} where loss_function}, Vector{NeuralPDE.var"#135#139"{loss_function, Vector{Float64}, Vector{Float64}, NeuralPDE.var"#134#137"{QuadratureTraining{Integrals.CubatureJLh, Float64}}, Float64} where loss_function}, NeuralPDE.PINNRepresentation, Bool, Vector{Int64}, Int64, Vector{NeuralPDE.Phi{Chain{@NamedTuple{layer_1::Dense{true, typeof(sigmoid_fast), typeof(glorot_uniform), typeof(zeros32)}, layer_2::Dense{true, typeof(sigmoid_fast), typeof(glorot_uniform), typeof(zeros32)}, layer_3::Dense{true, typeof(identity), typeof(glorot_uniform), typeof(zeros32)}}, Nothing}, @NamedTuple{layer_1::@NamedTuple{}, layer_2::@NamedTuple{}, layer_3::@NamedTuple{}}}}, Nothing, Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Optimization.ReInitCache{ComponentArrays.ComponentVector{Float64, Vector{Float64}, Tuple{ComponentArrays.Axis{(depvar = ViewAxis(1:858, Axis(u = ViewAxis(1:286, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), temp = ViewAxis(287:572, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), irst = ViewAxis(573:858, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))))),)}}}, SciMLBase.NullParameters}}}, OptimizationZygoteExt.var"#45#63", Nothing, OptimizationZygoteExt.var"#49#67"{OptimizationFunction{true, AutoZygote, NeuralPDE.var"#full_loss_function#344"{NeuralPDE.var"#null_nonadaptive_loss#147", Vector{NeuralPDE.var"#133#136"{loss_function, DataType} where loss_function}, Vector{NeuralPDE.var"#135#139"{loss_function, Vector{Float64}, Vector{Float64}, NeuralPDE.var"#134#137"{QuadratureTraining{Integrals.CubatureJLh, Float64}}, Float64} where loss_function}, NeuralPDE.PINNRepresentation, Bool, Vector{Int64}, Int64, Vector{NeuralPDE.Phi{Chain{@NamedTuple{layer_1::Dense{true, typeof(sigmoid_fast), typeof(glorot_uniform), typeof(zeros32)}, layer_2::Dense{true, typeof(sigmoid_fast), typeof(glorot_uniform), typeof(zeros32)}, layer_3::Dense{true, typeof(identity), typeof(glorot_uniform), typeof(zeros32)}}, Nothing}, @NamedTuple{layer_1::@NamedTuple{}, layer_2::@NamedTuple{}, layer_3::@NamedTuple{}}}}, Nothing, Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Optimization.ReInitCache{ComponentArrays.ComponentVector{Float64, Vector{Float64}, Tuple{ComponentArrays.Axis{(depvar = ViewAxis(1:858, Axis(u = ViewAxis(1:286, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), temp = ViewAxis(287:572, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), irst = ViewAxis(573:858, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))))),)}}}, SciMLBase.NullParameters}}, OptimizationZygoteExt.var"#53#71"{OptimizationFunction{true, AutoZygote, NeuralPDE.var"#full_loss_function#344"{NeuralPDE.var"#null_nonadaptive_loss#147", Vector{NeuralPDE.var"#133#136"{loss_function, DataType} where loss_function}, Vector{NeuralPDE.var"#135#139"{loss_function, Vector{Float64}, Vector{Float64}, NeuralPDE.var"#134#137"{QuadratureTraining{Integrals.CubatureJLh, Float64}}, Float64} where loss_function}, NeuralPDE.PINNRepresentation, Bool, Vector{Int64}, Int64, Vector{NeuralPDE.Phi{Chain{@NamedTuple{layer_1::Dense{true, typeof(sigmoid_fast), typeof(glorot_uniform), typeof(zeros32)}, layer_2::Dense{true, typeof(sigmoid_fast), typeof(glorot_uniform), typeof(zeros32)}, layer_3::Dense{true, typeof(identity), typeof(glorot_uniform), typeof(zeros32)}}, Nothing}, @NamedTuple{layer_1::@NamedTuple{}, layer_2::@NamedTuple{}, layer_3::@NamedTuple{}}}}, Nothing, Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Optimization.ReInitCache{ComponentArrays.ComponentVector{Float64, Vector{Float64}, Tuple{ComponentArrays.Axis{(depvar = ViewAxis(1:858, Axis(u = ViewAxis(1:286, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), temp = ViewAxis(287:572, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), irst = ViewAxis(573:858, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))))),)}}}, SciMLBase.NullParameters}}, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Optimization.ReInitCache{ComponentArrays.ComponentVector{Float64, Vector{Float64}, Tuple{ComponentArrays.Axis{(depvar = ViewAxis(1:858, Axis(u = ViewAxis(1:286, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), temp = ViewAxis(287:572, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), irst = ViewAxis(573:858, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))))),)}}}, SciMLBase.NullParameters}, Nothing, Nothing, Nothing, Nothing, Nothing, BFGS{InitialStatic{Float64}, HagerZhang{Float64, Base.RefValue{Bool}}, Nothing, Nothing, Flat}, Base.Iterators.Cycle{Tuple{Optimization.NullData}}, Bool, var"#97#98"})
@ SciMLBase [C:\Users\rnath\.julia\packages\SciMLBase\wVDwN\src\solve.jl:179](file:///C:/Users/rnath/.julia/packages/SciMLBase/wVDwN/src/solve.jl:179)
[77] solve(::OptimizationProblem{true, OptimizationFunction{true, AutoZygote, NeuralPDE.var"#full_loss_function#344"{NeuralPDE.var"#null_nonadaptive_loss#147", Vector{NeuralPDE.var"#133#136"{loss_function, DataType} where loss_function}, Vector{NeuralPDE.var"#135#139"{loss_function, Vector{Float64}, Vector{Float64}, NeuralPDE.var"#134#137"{QuadratureTraining{Integrals.CubatureJLh, Float64}}, Float64} where loss_function}, NeuralPDE.PINNRepresentation, Bool, Vector{Int64}, Int64, Vector{NeuralPDE.Phi{Chain{@NamedTuple{layer_1::Dense{true, typeof(sigmoid_fast), typeof(glorot_uniform), typeof(zeros32)}, layer_2::Dense{true, typeof(sigmoid_fast), typeof(glorot_uniform), typeof(zeros32)}, layer_3::Dense{true, typeof(identity), typeof(glorot_uniform), typeof(zeros32)}}, Nothing}, @NamedTuple{layer_1::@NamedTuple{}, layer_2::@NamedTuple{}, layer_3::@NamedTuple{}}}}, Nothing, Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, ComponentArrays.ComponentVector{Float64, Vector{Float64}, Tuple{ComponentArrays.Axis{(depvar = ViewAxis(1:858, Axis(u = ViewAxis(1:286, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), temp = ViewAxis(287:572, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))), irst = ViewAxis(573:858, Axis(layer_1 = ViewAxis(1:30, Axis(weight = ViewAxis(1:15, ShapedAxis((15, 1), NamedTuple())), bias = ViewAxis(16:30, ShapedAxis((15, 1), NamedTuple())))), layer_2 = ViewAxis(31:270, Axis(weight = ViewAxis(1:225, ShapedAxis((15, 15), NamedTuple())), bias = ViewAxis(226:240, ShapedAxis((15, 1), NamedTuple())))), layer_3 = ViewAxis(271:286, Axis(weight = ViewAxis(1:15, ShapedAxis((1, 15), NamedTuple())), bias = ViewAxis(16:16, ShapedAxis((1, 1), NamedTuple())))))))),)}}}, SciMLBase.NullParameters, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, @Kwargs{}}, ::BFGS{InitialStatic{Float64}, HagerZhang{Float64, Base.RefValue{Bool}}, Nothing, Nothing, Flat}; kwargs::@Kwargs{callback::var"#97#98", maxiters::Int64})
@ SciMLBase [C:\Users\rnath\.julia\packages\SciMLBase\wVDwN\src\solve.jl:96](file:///C:/Users/rnath/.julia/packages/SciMLBase/wVDwN/src/solve.jl:96)
Can you post the whole script including where you have defined discretization
and defining all variables?
using NeuralPDE, Lux, ModelingToolkit, Optimization, OptimizationOptimJL, DomainSets, LineSearches
import ModelingToolkit: Interval, infimum, supremum
#constants
soc0 = 100.0
t0, tfinal = 0.0, 100.0
mcp, rth, tenv = 0.1, 0.1, 273.0
icell = 1.0
@variables u(..), irst(..), irlt(..), temp(..)
@parameters t
Dt = Differential(t)
ocv,rs, rst, cst, rlt, clt = 1, 1, 1, 1, 1 , 1
eq = [u(t) ~ ocv - icell*rs - irst(t)*rst - irlt(t)*rlt,
icell ~ irst(t) + Dt(rst*cst*irst(t)),
icell ~ irlt(t) + Dt(rlt*clt*irlt(t)),
mcp*Dt(temp(t)) ~ (temp(t) - tenv)/rth + icell*(u(t)-ocv)]
bcs = [u(0.0)~0.0, irst(0.0)~0.0, irlt(0.0)~0.0,temp(0.0)~25.0]
domains = [t ∈ Interval(0.0, 10.0)]
input_ = length(domains)
n = 15
chain = [Lux.Chain(Dense(1, n, Lux.σ), Dense(n, n, Lux.σ), Dense(n, 1)) for _ in 1:3]
strategy = NeuralPDE.QuadratureTraining()
discretization = PhysicsInformedNN(chain, strategy, adaptive_loss = NeuralPDE.GradientScaleAdaptiveLoss(10))
@named pde_system = PDESystem(eq, bcs, domains, [t], [u(t), temp(t), irst(t), irlt(t)])
prob = NeuralPDE.discretize(pde_system, discretization)
callback = function (p, l)
println("loss: $l")
return false
end
res = Optimization.solve(prob, BFGS(); callback = callback, maxiters = 100)
phi = discretization.phi
Here is the script
There are four states, so need four chains.
chain = [Lux.Chain(Dense(1, n, Lux.σ), Dense(n, n, Lux.σ), Dense(n, 1)) for _ in 1:4]
should fix it.
It works now, thank you!