@@ -16,9 +16,25 @@ function adapt_structure(to,
16
16
adapt (to, prob. kwargs)... )
17
17
end
18
18
19
- function adapt_structure (to, f:: ODEFunction{iip} ) where {iip}
20
- if f. mass_matrix != = I && f. initialization_data != = nothing
21
- error (" Adaptation to GPU failed: DAEs of ModelingToolkit currently not supported." )
22
- end
23
- ODEFunction {iip, FullSpecialize} (f. f, jac = f. jac, mass_matrix = f. mass_matrix)
19
+ # Allow DAE adaptation for GPU kernels
20
+ function adapt_structure (to, f:: SciMLBase.ODEFunction{iip} ) where {iip}
21
+ # For GPU kernels, we now support DAEs with mass matrices and initialization
22
+ SciMLBase. ODEFunction {iip, SciMLBase.FullSpecialize} (
23
+ f. f,
24
+ jac = f. jac,
25
+ mass_matrix = f. mass_matrix,
26
+ initialization_data = f. initialization_data
27
+ )
28
+ end
29
+
30
+ # Adapt OverrideInitData for GPU compatibility
31
+ function adapt_structure (to, f:: SciMLBase.OverrideInitData )
32
+ SciMLBase. OverrideInitData (
33
+ adapt (to, f. initializeprob), # Also adapt initializeprob
34
+ f. update_initializeprob!,
35
+ f. initializeprobmap,
36
+ f. initializeprobpmap,
37
+ nothing , # Set metadata to nothing for GPU compatibility
38
+ f. is_update_oop
39
+ )
24
40
end
0 commit comments