Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
ddb03ab
feat: implement symbolic PINN parser MVP with datafree and Zygote com…
ajatshatru01 May 29, 2026
169a698
Implement batched evaluation and update MVP test cases
ajatshatru01 Jun 8, 2026
4c3c8c0
Add mixed derivative and multi-DV support to symbolic PINN parser
ajatshatru01 Jun 8, 2026
49e20eb
feat: integrate symbolic PINN parser (Tier 2) and fix Zygote gradient…
ajatshatru01 Jun 18, 2026
77cd8cf
added Project.toml
ajatshatru01 Jun 18, 2026
febdc91
Simplify Symbolic PINN Parser to a pure finite-difference pipeline
ajatshatru01 Jun 27, 2026
ff62da8
Implemented equation-parameter support in symbolic PINN parser path a…
ajatshatru01 Jun 28, 2026
e32f4ad
feat: add integral and integro-differential support to symbolic parser
ajatshatru01 Jul 1, 2026
e9a6ce7
compiled function is coordinate-free and dynamic for strategies that …
ajatshatru01 Jul 14, 2026
f00fe19
Update src/symbolic_pinn_parser.jl
ajatshatru01 Jul 20, 2026
9da0a08
Update src/symbolic_pinn_parser.jl
ajatshatru01 Jul 20, 2026
41ff674
Update src/symbolic_pinn_parser.jl
ajatshatru01 Jul 20, 2026
1ca98d3
Update src/symbolic_pinn_parser.jl
ajatshatru01 Jul 20, 2026
549a451
added required tests as directed by sattvic and did the mentioned opt…
ajatshatru01 Jul 23, 2026
7160816
fixed type-instability for integrals, removed dead codes
ajatshatru01 Jul 23, 2026
e23f7d5
deleted the code of legacy parser, made the symbolic parser the defau…
ajatshatru01 Jul 29, 2026
a95aee5
made tests modular, removed mvp and symbolic terms
ajatshatru01 Jul 31, 2026
51d2b4d
Merge origin/master and resolve conflicts in Project.toml and test paths
ajatshatru01 Jul 31, 2026
64c723c
doc changes
ajatshatru01 Jul 31, 2026
7db64c7
Merge branch 'master' into symbolic-parser-mvp
ajatshatru01 Jul 31, 2026
86b3283
build and maintain loss functions as pure SymbolicUtils.BasicSymbolic…
ajatshatru01 Aug 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ authors = ["Chris Rackauckas <accounts@chrisrackauckas.com>"]
[deps]
ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b"
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
AdvancedHMC = "0bf59076-c3b1-5ca4-86bd-e02cd72cde3d"
ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
ComponentArrays = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66"
Expand All @@ -16,22 +17,28 @@ DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
DomainSets = "5b8099bc-c8ec-5219-889f-1d9e522a28bf"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
Functors = "d9f16b24-f501-4c13-a1f2-28368ffc5196"
Hwloc = "0e44f5e4-bd66-52a0-8798-143a42290a1d"
Integrals = "de52edbc-65ea-441a-8357-d3a637375a31"
IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
LogDensityProblems = "6fdf6af0-433a-55f7-b3ed-c6c6e0b8df7c"
Lux = "b2108857-7c20-44ae-9111-449ecde12c47"
LuxCore = "bb33d45b-7691-41d6-9220-0943567d0623"
MCMCChains = "c7f686f2-ff18-58e9-bc7b-31028e88f75d"
MLDataDevices = "7e8f7934-dd98-4c1a-8fe8-92b47a384d40"
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
ModelingToolkitBase = "7771a370-6774-4173-bd38-47e70ca0b839"
ModelingToolkitNeuralNets = "f162e290-f571-43a6-83d9-22ecc16da15f"
MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca"
NeuralOperators = "ea5c82af-86e5-48da-8ee1-382d6ad7af4b"
Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2"
Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
OptimizationOptimisers = "42dfb2eb-d2b4-4451-abcd-913932933ac1"
OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
QuasiMonteCarlo = "8a4e6c94-4038-4cdc-81c3-7e6ffdb2a71b"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
ReTestItems = "817f1d60-ba6b-4fd5-9520-3cf149f6a823"
RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
RuntimeGeneratedFunctions = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47"
Expand All @@ -45,9 +52,6 @@ WeightInitializers = "d49dbf32-c5c2-4618-8acc-27bb2598ef2d"
Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"

[weakdeps]
AdvancedHMC = "0bf59076-c3b1-5ca4-86bd-e02cd72cde3d"
LogDensityProblems = "6fdf6af0-433a-55f7-b3ed-c6c6e0b8df7c"
MCMCChains = "c7f686f2-ff18-58e9-bc7b-31028e88f75d"
TensorBoardLogger = "899adc3e-224a-11e9-021f-63837185c80f"

[extensions]
Expand Down Expand Up @@ -87,6 +91,7 @@ MCMCChains = "7"
MLDataDevices = "1.17.10"
ModelingToolkit = "11.26.8"
ModelingToolkitBase = "1.42.2"
ModelingToolkitNeuralNets = "2.5.1"
MonteCarloMeasurements = "1.5.2"
NeuralOperators = "0.5, 0.6"
Optimisers = "0.4.7"
Expand Down
12 changes: 3 additions & 9 deletions docs/src/developer/debugging.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,8 @@ dim = length(domains)
dx = 0.1
multioutput = chain isa AbstractArray
strategy = NeuralPDE.GridTraining(dx)
integral = NeuralPDE.get_numeric_integral(strategy, indvars, multioutput, chain, derivative)

_pde_loss_function = NeuralPDE.build_loss_function(eq, indvars, depvars, phi, derivative,
integral, multioutput, init_params,
strategy)
sym_loss_data = NeuralPDE.build_symbolic_pinn_loss(pde_sys, chain)
```

```
Expand All @@ -96,11 +93,8 @@ julia> bc_indvars = NeuralPDE.get_variables(bcs,indvars,depvars)
```

```julia
_bc_loss_functions = [NeuralPDE.build_loss_function(bc, indvars, depvars,
phi, derivative, integral, multioutput,
init_params, strategy,
bc_indvars = bc_indvar)
for (bc, bc_indvar) in zip(bcs, bc_indvars)]
sym_loss_data = NeuralPDE.build_symbolic_pinn_loss(pde_sys, chain)
_bc_loss_functions = sym_loss_data.datafree_bc_loss_functions
```

```
Expand Down
2 changes: 1 addition & 1 deletion ext/NeuralPDEBPINNExt.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module NeuralPDEBPINNExt
using NeuralPDE
using NeuralPDE: NeuralPDE, AbstractTrainingStrategy, GridTraining, StochasticTraining,
QuadratureTraining, WeightedIntervalTraining, BNNODE, BPINNstats,
BPINNsolution, vector_to_parameters, build_loss_function,
BPINNsolution, vector_to_parameters, build_symbolic_pinn_loss,
get_dataset_train_points, merge_strategy_with_loglikelihood_function,
safe_get_device, safe_expand

Expand Down
8 changes: 7 additions & 1 deletion ext/bpinn/PDE_BPINN.jl
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,15 @@ function get_lossy(pinnrep, dataset, Dict_differentials)
# nested vector of data_pde_loss_functions (as in discretize.jl)
# each sub vector has dataset's indvar coord's datafree_colloc_loss_function, n_subvectors = n_rows_dataset(or n_indvar_coords_dataset)
# zip each colloc equation with args for each build_loss call per equation vector
function _build_loss_function(pinnrep, eq, pde_indvar)
pde_sys = PDESystem([eq], pinnrep.bcs, pinnrep.domains, pinnrep.ivs, pinnrep.dvs)
loss_data = build_symbolic_pinn_loss(pde_sys, pinnrep.chain)
return first(loss_data.datafree_pde_loss_functions)
end

data_colloc_loss_functions = [
[
build_loss_function(pinnrep, eq, pde_indvar)
_build_loss_function(pinnrep, eq, pde_indvar)
for (eq, pde_indvar, integration_indvar) in zip(
colloc_equation,
pinnrep.pde_indvars,
Expand Down
12 changes: 9 additions & 3 deletions src/NeuralPDE.jl
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ using Zygote: Zygote
# Symbolic Stuff
using ModelingToolkit: ModelingToolkit, PDESystem, Differential, toexpr
using ModelingToolkitBase: @named, @parameters
using ModelingToolkitNeuralNets: SymbolicNeuralNetwork
using Symbolics: Symbolics, arguments, Num, expand_derivatives, @variables
using SymbolicUtils: SymbolicUtils, unwrap
using SymbolicIndexingInterface: SymbolicIndexingInterface
Expand Down Expand Up @@ -70,14 +71,18 @@ const cdev = CPUDevice()
include("eltype_matching.jl")

include("pinn_types.jl")
include("pinn_parser.jl")
include("symbolic_utilities.jl")
include("pinn_ir_structure.jl")

export SymbolicPINNIRStructure

include("training_strategies.jl")
include("adaptive_losses.jl")

include("ode_solve.jl")
include("dae_solve.jl")
include("pino_ode_solve.jl")
include("transform_inf_integral.jl")
include("discretize.jl")

include("neural_adapter.jl")
Expand All @@ -101,9 +106,10 @@ export neural_adapter
export GridTraining, StochasticTraining, QuadratureTraining, QuasiRandomTraining,
WeightedIntervalTraining

export build_loss_function, get_loss_function,
export get_loss_function,
generate_training_sets, get_variables, get_argument, get_bounds,
get_numeric_integral, symbolic_discretize, vector_to_parameters
symbolic_discretize, vector_to_parameters,
build_symbolic_pinn_loss, build_symbolic_pinn_ir, symbolic_pinn_loss_expression

export AbstractAdaptiveLoss, NonAdaptiveLoss, GradientScaleAdaptiveLoss,
MiniMaxAdaptiveLoss, SoftAdaptAdaptiveLoss, ReLoBRaLoAdaptiveLoss
Expand Down
Loading
Loading