@@ -687,8 +687,13 @@ Herimte Interpolation, chosen if no other dispatch for ode_interpolant
687
687
@muladd function hermite_interpolant (Θ, dt, y₀, y₁, k, :: Type{Val{false}} , idxs:: Nothing ,
688
688
T:: Type{Val{0}} , differential_vars) # Default interpolant is Hermite
689
689
# @.. broadcast=false (1-Θ)*y₀+Θ*y₁+Θ*(Θ-1)*((1-2Θ)*(y₁-y₀)+(Θ-1)*dt*k[1] + Θ*dt*k[2])
690
- @inbounds (1 - Θ) * y₀ + Θ * y₁ +
691
- differential_vars .* (Θ * (Θ - 1 ) * ((1 - 2 Θ) * (y₁ - y₀) + (Θ - 1 ) * dt * k[1 ] + Θ * dt * k[2 ]))
690
+ if all (differential_vars)
691
+ @inbounds (1 - Θ) * y₀ + Θ * y₁ +
692
+ (Θ * (Θ - 1 ) * ((1 - 2 Θ) * (y₁ - y₀) + (Θ - 1 ) * dt * k[1 ] + Θ * dt * k[2 ]))
693
+ else
694
+ @inbounds (1 - Θ) * y₀ + Θ * y₁ +
695
+ differential_vars .* (Θ * (Θ - 1 ) * ((1 - 2 Θ) * (y₁ - y₀) + (Θ - 1 ) * dt * k[1 ] + Θ * dt * k[2 ]))
696
+ end
692
697
end
693
698
694
699
@muladd function hermite_interpolant (Θ, dt, y₀, y₁, k, :: Type{Val{true}} , idxs:: Nothing ,
@@ -755,10 +760,17 @@ Herimte Interpolation, chosen if no other dispatch for ode_interpolant
755
760
@muladd function hermite_interpolant (Θ, dt, y₀, y₁, k, :: Type{Val{false}} , idxs:: Nothing ,
756
761
T:: Type{Val{1}} , differential_vars) # Default interpolant is Hermite
757
762
# @.. broadcast=false k[1] + Θ*(-4*dt*k[1] - 2*dt*k[2] - 6*y₀ + Θ*(3*dt*k[1] + 3*dt*k[2] + 6*y₀ - 6*y₁) + 6*y₁)/dt
758
- @inbounds (.! differential_vars). * (y₁ - y₀)/ dt + differential_vars .* (
759
- k[1 ] +
760
- Θ * (- 4 * dt * k[1 ] - 2 * dt * k[2 ] - 6 * y₀ +
761
- Θ * (3 * dt * k[1 ] + 3 * dt * k[2 ] + 6 * y₀ - 6 * y₁) + 6 * y₁) / dt)
763
+ if all (differential_vars)
764
+ @inbounds (
765
+ k[1 ] +
766
+ Θ * (- 4 * dt * k[1 ] - 2 * dt * k[2 ] - 6 * y₀ +
767
+ Θ * (3 * dt * k[1 ] + 3 * dt * k[2 ] + 6 * y₀ - 6 * y₁) + 6 * y₁) / dt)
768
+ else
769
+ @inbounds (.! differential_vars). * (y₁ - y₀)/ dt + differential_vars .* (
770
+ k[1 ] +
771
+ Θ * (- 4 * dt * k[1 ] - 2 * dt * k[2 ] - 6 * y₀ +
772
+ Θ * (3 * dt * k[1 ] + 3 * dt * k[2 ] + 6 * y₀ - 6 * y₁) + 6 * y₁) / dt)
773
+ end
762
774
end
763
775
764
776
@muladd function hermite_interpolant (Θ, dt, y₀, y₁, k, :: Type{Val{true}} , idxs:: Nothing ,
@@ -826,8 +838,13 @@ Herimte Interpolation, chosen if no other dispatch for ode_interpolant
826
838
@muladd function hermite_interpolant (Θ, dt, y₀, y₁, k, :: Type{Val{false}} , idxs:: Nothing ,
827
839
T:: Type{Val{2}} , differential_vars) # Default interpolant is Hermite
828
840
# @.. broadcast=false (-4*dt*k[1] - 2*dt*k[2] - 6*y₀ + Θ*(6*dt*k[1] + 6*dt*k[2] + 12*y₀ - 12*y₁) + 6*y₁)/(dt*dt)
829
- @inbounds differential_vars .* (- 4 * dt * k[1 ] - 2 * dt * k[2 ] - 6 * y₀ +
830
- Θ * (6 * dt * k[1 ] + 6 * dt * k[2 ] + 12 * y₀ - 12 * y₁) + 6 * y₁) / (dt * dt)
841
+ if all (differential_vars)
842
+ @inbounds (- 4 * dt * k[1 ] - 2 * dt * k[2 ] - 6 * y₀ +
843
+ Θ * (6 * dt * k[1 ] + 6 * dt * k[2 ] + 12 * y₀ - 12 * y₁) + 6 * y₁) / (dt * dt)
844
+ else
845
+ @inbounds differential_vars .* (- 4 * dt * k[1 ] - 2 * dt * k[2 ] - 6 * y₀ +
846
+ Θ * (6 * dt * k[1 ] + 6 * dt * k[2 ] + 12 * y₀ - 12 * y₁) + 6 * y₁) / (dt * dt)
847
+ end
831
848
end
832
849
833
850
@muladd function hermite_interpolant (Θ, dt, y₀, y₁, k, :: Type{Val{true}} , idxs:: Nothing ,
@@ -887,7 +904,11 @@ Herimte Interpolation, chosen if no other dispatch for ode_interpolant
887
904
@muladd function hermite_interpolant (Θ, dt, y₀, y₁, k, :: Type{Val{false}} , idxs:: Nothing ,
888
905
T:: Type{Val{3}} , differential_vars) # Default interpolant is Hermite
889
906
# @.. broadcast=false (6*dt*k[1] + 6*dt*k[2] + 12*y₀ - 12*y₁)/(dt*dt*dt)
890
- @inbounds differential_vars .* (6 * dt * k[1 ] + 6 * dt * k[2 ] + 12 * y₀ - 12 * y₁) / (dt * dt * dt)
907
+ if all (differential_vars)
908
+ @inbounds (6 * dt * k[1 ] + 6 * dt * k[2 ] + 12 * y₀ - 12 * y₁) / (dt * dt * dt)
909
+ else
910
+ @inbounds differential_vars .* (6 * dt * k[1 ] + 6 * dt * k[2 ] + 12 * y₀ - 12 * y₁) / (dt * dt * dt)
911
+ end
891
912
end
892
913
893
914
@muladd function hermite_interpolant (Θ, dt, y₀, y₁, k, :: Type{Val{true}} , idxs:: Nothing ,
0 commit comments