From c822f8b98d6eadac867e77919d3bb82e545e6fb4 Mon Sep 17 00:00:00 2001
From: Sam Yates <yates@cscs.ch>
Date: Mon, 15 Oct 2018 15:49:35 +0200
Subject: [PATCH] Patch up Julia scripts for Julia 1.0 (#629)

* Use `Unitful.uconvert` for scalar conversions (Float64 cast apparently does not work at the moment).
* Use .+ for scalar/array addition.
* Replace `immutable` with `struct`.
* Qualify included modules with `Main.` for using statements.
* Add informational note to FindJulia as component identification can take a long time as Julia may compile them from source.
---
 cmake/FindJulia.cmake                       | 3 +++
 validation/ref/numeric/HHChannels.jl        | 5 ++---
 validation/ref/numeric/LVAChannels.jl       | 4 ++--
 validation/ref/numeric/PassiveCable.jl      | 4 +++-
 validation/ref/numeric/numeric_kin1.jl      | 2 +-
 validation/ref/numeric/numeric_kinlva.jl    | 2 +-
 validation/ref/numeric/numeric_rallpack1.jl | 2 +-
 validation/ref/numeric/numeric_soma.jl      | 2 +-
 8 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/cmake/FindJulia.cmake b/cmake/FindJulia.cmake
index b9c91377..b6ce48dd 100644
--- a/cmake/FindJulia.cmake
+++ b/cmake/FindJulia.cmake
@@ -14,6 +14,9 @@ include(FindPackageHandleStandardArgs)
 if(NOT Julia_FOUND)
     find_program(Julia_EXECUTABLE julia)
     if(Julia_EXECUTABLE)
+        if(Julia_FIND_COMPONENTS)
+            message(STATUS "Checking for Julia components: ${Julia_FIND_COMPONENTS}")
+        endif()
         foreach(component ${Julia_FIND_COMPONENTS})
             set(_found_var "Julia_${component}_FOUND")
             if(NOT ${_found_var})
diff --git a/validation/ref/numeric/HHChannels.jl b/validation/ref/numeric/HHChannels.jl
index f68a7aa1..317b8d76 100644
--- a/validation/ref/numeric/HHChannels.jl
+++ b/validation/ref/numeric/HHChannels.jl
@@ -6,7 +6,7 @@ using Sundials
 using Unitful
 using Unitful.DefaultSymbols
 
-immutable HHParam
+struct HHParam
     c_m       # membrane spacific capacitance
     gnabar    # Na channel cross-membrane conductivity
     gkbar     # K channel cross-membrane conductivity
@@ -47,7 +47,7 @@ immutable HHParam
 
 end
 
-immutable Stim
+struct Stim
     t0        # start time of stimulus
     t1        # stop time of stimulus
     i_e       # stimulus current density
@@ -144,7 +144,6 @@ function run_hh(t_end; v0=-65mV, stim=Stim(), param=HHParam(), sample_dt=0.01ms)
 
         ydot[1], ydot[2], ydot[3], ydot[4] =
             vdot*t_scale/v_scale, mdot*t_scale, hdot*t_scale, ndot*t_scale
-#            Float64(vdot*t_scale/v_scale), Float64(mdot*t_scale), Float64(hdot*t_scale), Float64(ndot*t_scale)
 
         return Sundials.CV_SUCCESS
     end
diff --git a/validation/ref/numeric/LVAChannels.jl b/validation/ref/numeric/LVAChannels.jl
index a1f4e865..46ec1cd3 100644
--- a/validation/ref/numeric/LVAChannels.jl
+++ b/validation/ref/numeric/LVAChannels.jl
@@ -6,7 +6,7 @@ using Sundials
 using Unitful
 using Unitful.DefaultSymbols
 
-immutable LVAParam
+struct LVAParam
     c_m       # membrane spacific capacitance
     gbar      # Ca channel cross-membrane conductivity
     eca       # Ca channel reversal potential
@@ -32,7 +32,7 @@ immutable LVAParam
 
 end
 
-immutable Stim
+struct Stim
     t0        # start time of stimulus
     t1        # stop time of stimulus
     i_e       # stimulus current density
diff --git a/validation/ref/numeric/PassiveCable.jl b/validation/ref/numeric/PassiveCable.jl
index 56eded5a..9f5858bf 100644
--- a/validation/ref/numeric/PassiveCable.jl
+++ b/validation/ref/numeric/PassiveCable.jl
@@ -1,5 +1,7 @@
 module PassiveCable
 
+using Unitful: uconvert, NoUnits
+
 export cable_normalize, cable, rallpack1
 
 # Compute solution g(x, t) to
@@ -94,7 +96,7 @@ function cable(x, t, L, lambda, tau, r, V, I; tol=1e-8)
         return V
     else
         tol_n = abs(tol/scale)
-        return scale*cable_normalized(Float64(x/lambda), Float64(t/tau), Float64(L/lambda), tol=tol_n) + V
+        return scale*cable_normalized(uconvert(NoUnits, x/lambda), uconvert(NoUnits, t/tau), uconvert(NoUnits, L/lambda), tol=tol_n) + V
     end
 end
 
diff --git a/validation/ref/numeric/numeric_kin1.jl b/validation/ref/numeric/numeric_kin1.jl
index 4437c3c8..42508dc9 100644
--- a/validation/ref/numeric/numeric_kin1.jl
+++ b/validation/ref/numeric/numeric_kin1.jl
@@ -19,7 +19,7 @@ c  = 0.01mA/cm^2
 tau = 10ms
 
 ts = collect(0s: sample_dt: t_end)
-is = area*(1/3*c + (a0-1/3*c)*exp.(-ts/tau))
+is = area*(1/3*c .+ (a0-1/3*c)*exp.(-ts/tau))
 
 trace = Dict(
     :name => "membrane current",
diff --git a/validation/ref/numeric/numeric_kinlva.jl b/validation/ref/numeric/numeric_kinlva.jl
index 108612e7..55bf6773 100644
--- a/validation/ref/numeric/numeric_kinlva.jl
+++ b/validation/ref/numeric/numeric_kinlva.jl
@@ -5,7 +5,7 @@ include("LVAChannels.jl")
 using JSON
 using Unitful
 using Unitful.DefaultSymbols
-using LVAChannels
+using Main.LVAChannels
 
 scale(quantity, unit) = uconvert(NoUnits, quantity/unit)
 
diff --git a/validation/ref/numeric/numeric_rallpack1.jl b/validation/ref/numeric/numeric_rallpack1.jl
index 9830d81c..41c54f80 100644
--- a/validation/ref/numeric/numeric_rallpack1.jl
+++ b/validation/ref/numeric/numeric_rallpack1.jl
@@ -5,7 +5,7 @@ include("PassiveCable.jl")
 using JSON
 using Unitful
 using Unitful.DefaultSymbols
-using PassiveCable
+using Main.PassiveCable
 
 scale(quantity, unit) = uconvert(NoUnits, quantity/unit)
 
diff --git a/validation/ref/numeric/numeric_soma.jl b/validation/ref/numeric/numeric_soma.jl
index 7c5e1336..36370b2e 100644
--- a/validation/ref/numeric/numeric_soma.jl
+++ b/validation/ref/numeric/numeric_soma.jl
@@ -5,7 +5,7 @@ include("HHChannels.jl")
 using JSON
 using Unitful
 using Unitful.DefaultSymbols
-using HHChannels
+using Main.HHChannels
 
 scale(quantity, unit) = uconvert(NoUnits, quantity/unit)
 
-- 
GitLab