Skip to content

Commit f00606b

Browse files
authored
v0.12.0 (#114)
* performance improvements * optimizations * WIP * fixed printing string slicing for exceptions during training * FD tests * inc threshold
1 parent fae8ac4 commit f00606b

33 files changed

+3415
-693
lines changed

Project.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "FMIFlux"
22
uuid = "fabad875-0d53-4e47-9446-963b74cae21f"
3-
version = "0.11.0"
3+
version = "0.12.0"
44

55
[deps]
66
Colors = "5ae59095-9a9b-59fe-a467-6f913c188581"
@@ -19,9 +19,9 @@ ThreadPools = "b189fb0b-2eb5-4ed4-bc0c-d34c51242431"
1919
[compat]
2020
Colors = "0.12.8"
2121
DifferentiableEigen = "0.2.0"
22-
DifferentialEquations = "7.10.0 - 7.11"
23-
FMIImport = "0.16.2"
24-
FMISensitivity = "0.1.2"
22+
DifferentialEquations = "7.7.0 - 7.12"
23+
FMIImport = "0.16.4"
24+
FMISensitivity = "0.1.4"
2525
Flux = "0.13.0 - 0.14"
2626
Optim = "1.7.0"
2727
ProgressMeter = "1.7.0 - 1.9"

README.md

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,28 @@ You can evaluate FMUs inside of your loss function.
4242
- building and training FMUINNs (PINNs)
4343
- different AD-frameworks: ForwardDiff.jl (CI-tested), ReverseDiff.jl (CI-tested, default setting), FiniteDiff.jl (not CI-tested) and Zygote.jl (not CI-tested)
4444
- use `Flux.jl` optimisers as well as the ones from `Optim.jl`
45+
- using the entire *DifferentialEquations.jl* solver suite (`autodiff=false` for implicit solvers)
4546
- ...
4647

48+
## (Current) Limitations
49+
50+
- Sensitivity information over state change by event $\partial x^{+} / \partial x^{-}$ can't be accessed in FMI.
51+
These sensitivities are simplified on basis of one of the following assumptions (defined by user):
52+
(1) the state after event depends on nothing, so sensitivities are zero or
53+
(2) the state after event instance only depends on the same state before the event instance
54+
The second is often correct for e.g. mechanical contacts, but may lead to wrong gradients for arbitrary discontinuous systems.
55+
However even if the gradient might not be 100% correct in any case, gradients are often usable for optimization tasks.
56+
This issue is also part of the [*OpenScaling*](https://itea4.org/project/openscaling.html) research project.
57+
58+
- Discontinuous systems with implicite solvers use continuous adjoints instead of automatic differentiation through the ODE solver.
59+
This might lead to issues, because FMUs are by design not simulatable backward in time.
60+
On the other hand, many FMUs are capabale of doing so.
61+
This issue is also part of the [*OpenScaling*](https://itea4.org/project/openscaling.html) research project.
62+
63+
- Implicit solvers using `autodiff=true` is not supported (now), but you can use implicit solvers with `autodiff=false`.
64+
65+
- For now, only FMI version 2.0 is supported, but FMI 3.0 support is coming with the [*OpenScaling*](https://itea4.org/project/openscaling.html) research project.
66+
4767
## What is under development in FMIFlux.jl?
4868
- performance optimizations
4969
- multi threaded CPU training
@@ -54,7 +74,6 @@ You can evaluate FMUs inside of your loss function.
5474

5575
## What Platforms are supported?
5676
[*FMIFlux.jl*](https://github.com/ThummeTo/FMIFlux.jl) is tested (and testing) under Julia versions *v1.6* (LTS) and *v1* (latest) on Windows (latest) and Ubuntu (latest). MacOS should work, but untested.
57-
[*FMIFlux.jl*](https://github.com/ThummeTo/FMIFlux.jl) currently only works with FMI2-FMUs.
5877
All shipped examples are automatically tested under Julia version *v1* (latest) on Windows (latest).
5978

6079
## What FMI.jl-Library should I use?

examples/src/.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
params/
2-
*.png
1+
params/

0 commit comments

Comments
 (0)