I am building a new package for the first time, and I’m running into a problem when I call one of the functions exported by my package, SimpleNavierStokes.jl.
The package exports a function,
LidDrivenCavity(). This function returns an object of type
Results, which I have defined inside the
SimpleNavierStokes module like this:
struct Results ψ::Array ω::Array hist::Array x::Array y::Array ... end
This works as expected. Next, I have defined a custom “plotting function”. Rather than redefining
plot() with my new type
Results, I decided to define my own function, which does something like this:
ShowStreamlines(sol::Results) = contour(sol.x,sol.y,sol.ψ)
(I have also tried replacing
sol:SimpleNavierStokes.Results; this doesn’t appear to help.) Aside: I know this looks like a trivial function, but I plan to make it more useful and so I would like to do something like this rather than expecting the user to call
plot on the different constituent parts of
This function does get exported, but when I call it on an object of type
Results, like this:
Pkg.add("https://github.com/emadmasroor/SimpleNavierStokes.jl") using Plots, SimpleNavierStokes a = LidDrivenCavity() ShowStreamlines(a)
ERROR: UndefVarError: contour not defined Stacktrace:  ShowStreamlines(::Results) at /home/emad/.julia/packages/SimpleNavierStokes/JTjDG/src/plot_utils.jl:12  top-level scope at REPL:1
Just to be clear, my REPL does recognize the function
contour, because immediately after the above, if I type:
I get the expected:
contour (generic function with 1 method).
Why does this happen, and how can I fix it? I don’t think I should have to put a
using Plots inside my own package, other packages don’t really do this. But why does my code not recognize
contour, when my current environment contains
Plots and the functions are immediately available?
Note: If I subsequently define a function like
ShowStreamlines inside the REPL, say by doing this at the REPL
Show2(sol::SimpleNavierStokes.Results) = contour(sol.x,sol.y,sol.ψ) Show2(a)
it works as expected, and I get the output of the contour plot. So I am probably doing something wrong inside my package.
I appreciate any help!