Skip to content

Commit c65811f

Browse files
committed
Drafting output in parallel
1 parent 5200568 commit c65811f

File tree

1 file changed

+48
-2
lines changed

1 file changed

+48
-2
lines changed

src/AlgoimUtils/AlgoimUtils.jl

+48-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ using GridapDistributed: DistributedTriangulation
2929
using GridapDistributed: DistributedMeasure
3030
using GridapDistributed: DistributedCellField
3131
using GridapDistributed: DistributedFESpace
32+
using GridapDistributed: DistributedVisualizationData
3233
import GridapDistributed: local_views
3334

3435
using GridapEmbedded.Interfaces
@@ -206,7 +207,7 @@ end
206207

207208
function _cell_quadrature_and_active_mask(trian::Grid,
208209
::Algoim,phi,args;kwargs)
209-
cell_quad = Quadrature(trian,algoim,args...;kwargs...)
210+
cell_quad = Quadrature(trian,algoim,phi,args...;kwargs...)
210211
cell_to_is_active = is_cell_active(cell_quad)
211212
cell_quad, cell_to_is_active
212213
end
@@ -854,7 +855,9 @@ get_dimension(::QhullType,dim) = @abstractmethod
854855
get_dimension(::DelaunayTrian,dim) = dim
855856
get_dimension(::ConvexHull,dim) = dim-1
856857

858+
using Gridap.Visualization
857859
import Gridap.Visualization: visualization_data
860+
import Gridap.Visualization: writevtk
858861

859862
function visualization_data(meas::Measure,filename;cellfields=Dict(),qhulltype=DelaunayTrian())
860863
node_coordinates = collect(Iterators.flatten(meas.quad.cell_point.values))
@@ -882,11 +885,54 @@ end
882885

883886
function _to_grid(node_coordinates::Vector{<:Point{Dp,Tp}},qhulltype) where {Dp,Tp}
884887
d = get_dimension(qhulltype,Dp)
885-
connectivity = delaunay(reinterpret(node_coordinates),get_flags(qhulltype))[1:(d+1),:]
888+
connectivity = length(node_coordinates) == 0 ? Matrix{Int32}(undef,0,0) :
889+
delaunay(reinterpret(node_coordinates),get_flags(qhulltype))[1:(d+1),:]
886890
cell_node_ids = Table(collect(eachcol(connectivity)))
887891
reffes = [LagrangianRefFE(Float64,Simplex(Val{d}()),1)]
888892
cell_types = collect(Fill(Int8(1),length(cell_node_ids)))
889893
UnstructuredGrid(node_coordinates,cell_node_ids,reffes,cell_types)
890894
end
891895

896+
function visualization_data(meas::DistributedMeasure,
897+
filename;
898+
cellfields=Dict(),
899+
qhulltype=DelaunayTrian())
900+
trian = meas.trian
901+
cell_gids = get_cell_gids(trian.model)
902+
vd = map(
903+
partition(cell_gids),local_views(meas)) do lindices,meas
904+
node_coordinates = collect(Iterators.flatten(meas.quad.cell_point.values))
905+
grid = _to_grid(node_coordinates,qhulltype)
906+
part = part_id(lindices)
907+
celldata = Dict{Any,Any}()
908+
# we do not use "part" since it is likely to be used by the user
909+
if haskey(celldata,"piece")
910+
@unreachable "piece is a reserved cell data name"
911+
end
912+
celldata["piece"] = fill(part,num_cells(grid))
913+
# ndata = Dict()
914+
# for (k,v) in cellfields
915+
# pts = get_cell_points(meas)
916+
# eval = evaluate(v,pts)
917+
# ndata[k] = collect(Iterators.flatten(eval))
918+
# end
919+
vd = visualization_data(grid,filename,celldata=celldata) # ,nodaldata=ndata)
920+
@assert length(vd) == 1
921+
vd[1]
922+
end
923+
[DistributedVisualizationData(vd)]
924+
end
925+
926+
function writevtk(
927+
arg::DistributedMeasure,args...;
928+
compress=false,append=true,ascii=false,vtkversion=:default,kwargs...)
929+
parts=get_parts(arg.trian)
930+
map(visualization_data(arg,args...;kwargs...)) do visdata
931+
write_vtk_file(
932+
parts,visdata.grid,visdata.filebase,celldata=visdata.celldata,nodaldata=visdata.nodaldata,
933+
compress=compress, append=append, ascii=ascii, vtkversion=vtkversion
934+
)
935+
end
936+
end
937+
892938
end # module

0 commit comments

Comments
 (0)