Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 14 additions & 7 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "GridVisualize"
uuid = "5eed8a63-0fb0-45eb-886d-8d5a387d12b8"
version = "1.14.0"
authors = ["Juergen Fuhrmann <juergen.fuhrmann@wias-berlin.de>", "Patrick Jaap <patrick.jaap@wias-berlin.de>"]
version = "1.13.0"

[deps]
ColorSchemes = "35d6a980-a343-548e-a6ea-1d62b119f2f4"
Expand All @@ -21,36 +21,43 @@ Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"

[weakdeps]
CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
GLMakie = "e9467ef8-e4e7-5192-8a1a-b1aee30e663a"
Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
MeshCat = "283c5d60-a78f-5afe-a0af-af636b173e11"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
PlutoVista = "646e1f28-b900-46d7-9d87-d554eb38a413"
PyPlot = "d330b81b-6aea-500a-939a-2ce795aea3ee"
WGLMakie = "276b4fcb-3e11-5398-bf8b-a0c2d153d008"
VTKView = "63b67fce-66f7-11ea-1808-1361d8c55bf4"

[extensions]
GridVisualizeMakieExt = "Makie"
GridVisualizeVTKViewExt = "VTKView"
GridVisualizeMeshCatExt = "MeshCat"
GridVisualizePyPlotExt = "PyPlot"
GridVisualizePlotsExt = "Plots"
GridVisualizePlutoVistaExt = "PlutoVista"

[compat]
CairoMakie = "0.11.3, 0.12, 0.13, 0.14, 0.15"
ColorSchemes = "3"
Colors = "0.12,0.13,1"
DocStringExtensions = "0.8,0.9"
ElasticArrays = "1"
ExtendableGrids = "1.10"
GLMakie = "0.9, 0.10, 0.11, 0.12, 0.13"
GeometryBasics = "0.4.1, 0.5"
GridVisualizeTools = "3"
HypertextLiteral = "0.9"
Interpolations = "0.14, 0.15"
IntervalSets = "0.7"
LinearAlgebra = "1.6"
Makie = "0.21, 0.22.10, 0.23"
MeshCat = "1"
Observables = "0.5"
OrderedCollections = "1"
Plots = "1"
PlutoVista = "0.8.24,1"
Printf = "1.6"
PyPlot = "2"
StaticArrays = "1"
WGLMakie = "0.10, 0.11, 0.12, 0.13"
VTKView = "0.1"
julia = "1.9"

[extras]
Expand Down
5 changes: 2 additions & 3 deletions docs/Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@ ExtendableGrids = "cfc395e8-590f-11e8-1f13-43a2532b2fa8"
GridVisualize = "5eed8a63-0fb0-45eb-886d-8d5a387d12b8"
HypertextLiteral = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2"
Literate = "98b081ad-f1c9-55d3-8b20-4c87d4299306"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
Pluto = "c3e4b0f8-55cb-11ea-2926-15256bba5781"
PlutoSliderServer = "2fc8631c-6f24-4c5b-bca7-cbb509c42db4"
PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8"
PlutoVista = "646e1f28-b900-46d7-9d87-d554eb38a413"
PyPlot = "d330b81b-6aea-500a-939a-2ce795aea3ee"
Revise = "295af30f-e4ad-537b-8983-00126c2a3abe"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[compat]
Documenter = "1"
32 changes: 25 additions & 7 deletions docs/make.jl
Original file line number Diff line number Diff line change
@@ -1,25 +1,42 @@
using Documenter, ExtendableGrids, GridVisualize
using GridVisualize.FlippableLayout
using Documenter, GridVisualize
import PlutoSliderServer # LoadError: Please import/use PlutoSliderServer.jl in order to use docplutonotebooks with `iframe=true`
using ExampleJuggler
import CairoMakie
import CairoMakie, PlutoVista # for docstrings and graphics generated by documentet
import Plots, PyPlot # for docstrings only
using ExtendableGrids
ExampleJuggler.verbose!(true)
using Test

GridVisualizeMakieExt = Base.get_extension(GridVisualize, :GridVisualizeMakieExt)
GridVisualizePlotsExt = Base.get_extension(GridVisualize, :GridVisualizePlotsExt)
GridVisualizePlutoVistaExt = Base.get_extension(GridVisualize, :GridVisualizePlutoVistaExt)
GridVisualizePyPlotExt = Base.get_extension(GridVisualize, :GridVisualizePyPlotExt)

# These are experimental, we exclude them from the documentation.
# GridVisualizeMeshCatExt = Base.get_extension(GridVisualize, :GridVisualizeMeshCatExt)
# GridVisualizeVTKViewExt = Base.get_extension(GridVisualize, :GridVisualizeVTKViewExt)


function mkdocs()
cleanexamples()
example_dir = joinpath(@__DIR__, "..", "examples")
notebook_dir = joinpath(@__DIR__, "..", "examples")

generated_examples = @docscripts(example_dir, ["Plotting Examples" => "plotting.jl"], Plotter = CairoMakie)
notebook_examples = @docplutonotebooks(notebook_dir, ["plutovista.jl"], iframe = true, iframe_height = "2000px")

makedocs(;
sitename = "GridVisualize.jl",
modules = [GridVisualize],
modules = [
GridVisualize,
GridVisualizeMakieExt,
GridVisualizePlutoVistaExt,
GridVisualizePyPlotExt,
GridVisualizePlotsExt,
# GridVisualizeVTKViewExt,
# GridVisualizeMeshCatExt,
],
doctest = false,
clean = false,
authors = "J. Fuhrmann",
authors = "J. Fuhrmann and contributors",
repo = "https://github.com/WIAS-PDELib/GridVisualize.jl",
pages = [
"Home" => "index.md",
Expand All @@ -31,6 +48,7 @@ function mkdocs()
]
)
return nothing

end

mkdocs()
Expand Down
56 changes: 28 additions & 28 deletions docs/src/privapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,44 +17,44 @@ ismakie
isvtkview
```


## PyPlot
```@autodocs
Modules = [GridVisualize]
Private = true
Public = false
Pages = ["pyplot.jl"]
```

## Makie
```@autodocs
Modules = [GridVisualize,FlippableLayout]
Private = true
Public = false
Pages = ["makie.jl", "flippablelayout.jl"]
```@docs
GridVisualizeMakieExt
GridVisualizeMakieExt.makescene2d
GridVisualizeMakieExt.makescene3d
GridVisualizeMakieExt.makeaxis3d
GridVisualizeMakieExt.scene_interaction
```
### FlippableLayout

```@docs
FlippableLayout
GridVisualizeMakieExt.FlippableLayout
GridVisualizeMakieExt.FlippableLayout.FLayout
GridVisualizeMakieExt.FlippableLayout.setmakie!
GridVisualizeMakieExt.FlippableLayout.yieldwait
GridVisualizeMakieExt.FlippableLayout.flayoutscene
```

## Plots
```@autodocs
Modules = [GridVisualize]
Private = true
Public = false
Pages = [joinpath("src","plots.jl")] # https://github.com/JuliaDocs/Documenter.jl/issues/2639
## PlutoVista
```@docs
GridVisualizePlutoVistaExt
```

## VTKView
```@autodocs
Modules = [GridVisualize]
Private = true
Public = false
Pages = ["vtkview.jl"]
## PyPlot
```@docs
GridVisualizePyPlotExt
GridVisualizePyPlotExt.tridata
```
## Plots
```@docs
GridVisualizePlotsExt
GridVisualizePlotsExt.rectdata
```

## Internals
## ImplEvalSlice
```@docs
GridVisualize.ImplEvalSlice
```

## Experimental
There are experimental extensions for VTKView and MeshCat which are not part of the "official" API.
29 changes: 24 additions & 5 deletions src/makie.jl → ext/GridVisualizeMakieExt.jl
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
"""
module GridVisualizeMakieExt

Makie extension module for GridVisualize.jl. This is almost fully supported and works with GLMakie,
CairoMalie and WGLMakie.
"""
module GridVisualizeMakieExt

using Colors
using ColorSchemes
using DocStringExtensions
using Printf
using GeometryBasics
using Interpolations: linear_interpolation
using IntervalSets

import GridVisualize: initialize!, save, reveal, gridplot!, scalarplot!, vectorplot!, streamplot!, customplot!, movie
using GridVisualize: MakieType, GridVisualizer, SubVisualizer
using GridVisualize: isolevels, cellcolors, num_cellcolors, vectorsample, quiverdata, regionmesh, bfacesegments

using ExtendableGrids
using GridVisualizeTools
using Observables

include("flippablelayout.jl")
Expand Down Expand Up @@ -78,11 +100,6 @@ function save(fname, scene, XMakie, ::Type{MakieType})
end


"""
movie( func, vis::GridVisualizer, ::Type{MakieType}; file = nothing, format = "gif", kwargs... )

Record a movie with GLMakie backend. MP4 files and gifs can be created.
"""
function movie(
func,
vis::GridVisualizer,
Expand Down Expand Up @@ -1489,3 +1506,5 @@ function customplot!(ctx, TP::Type{MakieType}, func)
func(ctx[:scene])
return reveal(ctx, TP)
end

end
44 changes: 31 additions & 13 deletions src/meshcat.jl → ext/GridVisualizeMeshCatExt.jl
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
"""
module GridVisualizeMeshCatExt

Extension module for MeshCat.jl. Experimental.
"""
module GridVisualizeMeshCatExt

using Colors
using ColorSchemes
using DocStringExtensions
using GeometryBasics
import GridVisualize: initialize!, save, reveal, gridplot!, scalarplot!, vectorplot!, streamplot!, customplot!
using GridVisualize: MeshCatType, GridVisualizer, SubVisualizer
using GridVisualize: isolevels, cellcolors, num_cellcolors, regionmesh, bfacesegments3
using ExtendableGrids
using GridVisualizeTools

function initialize!(p::GridVisualizer, ::Type{MeshCatType})
MeshCat = p.context[:Plotter]
layout = p.context[:layout]
Expand Down Expand Up @@ -42,7 +59,7 @@ function gridplot!(ctx, TP::Type{MeshCatType}, ::Type{Val{2}}, grid)
cmap = region_cmap(nregions)
bcmap = bregion_cmap(nbregions)
for i in 1:nregions
mesh = regionmesh(grid, i; cellcoloring = ctx[:cellcoloring])
mesh = regionmesh(grid, 1.0, i; cellcoloring = ctx[:cellcoloring])
MeshCat.setobject!(
vis["interior"]["r$(i)"],
mesh,
Expand All @@ -59,7 +76,7 @@ function gridplot!(ctx, TP::Type{MeshCatType}, ::Type{Val{2}}, grid)
end

for i in 1:nbregions
points = bfacesegments3(grid, i)
points = bfacesegments3(grid, 1.0, i)
mat = MeshCat.MeshLambertMaterial(; color = RGBA{Float32}(bcmap[i], 1.0))
ls = MeshCat.LineSegments(points, mat)
MeshCat.setobject!(vis["boundary"]["b$(i)"], ls)
Expand All @@ -86,9 +103,9 @@ function gridplot!(ctx, TP::Type{MeshCatType}, ::Type{Val{3}}, grid)
xyzmax[idim] = maximum(coord[idim, :])
end

ctx[:xplane] = max(xyzmin[1], min(xyzmax[1], ctx[:xplane]))
ctx[:yplane] = max(xyzmin[2], min(xyzmax[2], ctx[:yplane]))
ctx[:zplane] = max(xyzmin[3], min(xyzmax[3], ctx[:zplane]))
ctx[:xplane] = max(xyzmin[1], min(xyzmax[1], ctx[:xplanes][1]))
ctx[:yplane] = max(xyzmin[2], min(xyzmax[2], ctx[:yplanes][1]))
ctx[:zplane] = max(xyzmin[3], min(xyzmax[3], ctx[:zplanes][1]))

xyzcut = [ctx[:xplane], ctx[:yplane], ctx[:zplane]]

Expand Down Expand Up @@ -164,13 +181,13 @@ function scalarplot!(ctx, TP::Type{MeshCatType}, ::Type{Val{3}}, grids, parentgr
xyzmin[idim] = minimum(coord[idim, :])
xyzmax[idim] = maximum(coord[idim, :])
end
xyzcut = [ctx[:xplane], ctx[:yplane], ctx[:zplane]]
xyzcut = [ctx[:xplanes][1], ctx[:yplanes][1], ctx[:zplanes][1]]
fminmax = extrema(func)

ctx[:xplane] = max(xyzmin[1], min(xyzmax[1], ctx[:xplane]))
ctx[:yplane] = max(xyzmin[2], min(xyzmax[2], ctx[:yplane]))
ctx[:zplane] = max(xyzmin[3], min(xyzmax[3], ctx[:zplane]))
ctx[:flevel] = max(fminmax[1], min(fminmax[2], ctx[:flevel]))
ctx[:xplane] = max(xyzmin[1], min(xyzmax[1], ctx[:xplanes][1]))
ctx[:yplane] = max(xyzmin[2], min(xyzmax[2], ctx[:yplanes][1]))
ctx[:zplane] = max(xyzmin[3], min(xyzmax[3], ctx[:zplanes][1]))
ctx[:flevel] = max(fminmax[1], min(fminmax[2], ctx[:levels][1]))

makeplanes(x, y, z) = [[1, 0, 0, -x], [0, 1, 0, -y], [0, 0, 1, -z]]

Expand All @@ -191,12 +208,12 @@ function scalarplot!(ctx, TP::Type{MeshCatType}, ::Type{Val{3}}, grids, parentgr
rgb(v) = RGB(v, 0.0, 1.0 - v)

vcmap = colorschemes[ctx[:colormap]]
mesh_meta = meta(mesh; vertexColors = [get(vcmap, values[i]) for i in 1:length(values)])
mesh = GeometryBasics.Mesh(ccoord, faces; color = [get(vcmap, values[i]) for i in 1:length(values)], normal = normals(ccoord, faces))
material = MeshCat.MeshLambertMaterial(; vertexColors = true)

MeshCat.setobject!(vis[:marching_tets], mesh_meta, material)
MeshCat.setobject!(vis[:marching_tets], mesh, material)

if ctx[:outline]
if ctx[:outlinealpha] > 0
pts, fcs = extract_visible_bfaces3D(
grid,
xyzmax;
Expand All @@ -217,3 +234,4 @@ function scalarplot!(ctx, TP::Type{MeshCatType}, ::Type{Val{3}}, grids, parentgr
end
return reveal(ctx, TP)
end
end
23 changes: 18 additions & 5 deletions src/plots.jl → ext/GridVisualizePlotsExt.jl
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
"""
module GridVisualizePlotsExt

Extension module for Plots.jl. Supports part of the frontend methods.
"""
module GridVisualizePlotsExt

using Colors
using ColorSchemes
using DocStringExtensions
import GridVisualize: initialize!, save, reveal, gridplot!, scalarplot!, vectorplot!, streamplot!, customplot!, movie
using GridVisualize: PlotsType, GridVisualizer, SubVisualizer
using GridVisualize: isolevels, cellcolors, num_cellcolors, vectorsample, quiverdata
using ExtendableGrids
using GridVisualizeTools

#=

reveal=true anstelle von show=true ?
Expand Down Expand Up @@ -46,11 +62,6 @@ function save(fname, scene, Plots, ::Type{PlotsType})
return isnothing(scene) ? nothing : Plots.savefig(scene, fname)
end

"""
movie( func, vis::GridVisualizer, ::Type{PlotsType}; file = nothing, format = "gif", kwargs... )

Record a movie with Plots backend. MP4 files and gifs can be created.
"""
function movie(
func,
vis::GridVisualizer,
Expand Down Expand Up @@ -444,3 +455,5 @@ function customplot!(ctx, TP::Type{PlotsType}, func)
func(ctx[:ax])
return reveal(ctx, TP)
end

end
Loading
Loading