Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Parallelization of a concentrated load using GridapDistributed

Abierto
#132 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
25/100
Tipo de issue
Error
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
julia

Línea de trabajo

Comienza con el ejemplo distribuido de local_views(model) y la aserción _point_to_cell!(cache, p) indicada en el issue, y compara después este flujo con la implementación serial de DiracDelta. Determina por qué no se encuentra el punto en una celda local activa y documenta o implementa un enfoque paralelo compatible para cargas concentradas, con un ejemplo reproducible de elasticidad lineal que muestre la finalización.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

I'm trying to parallelize a linear elastic problem solver with a concentrated load applied on the middle point of ine boundary. In series code the load is described using DiracDelta function as following:

function DiracDelta(model::DiscreteModel{D}, pvec::Vector{Point{D,T}}) where {D,T}
trian = Triangulation(model)
cell_to_pindices = _cell_to_pindices(pvec,trian)
cell_ids = collect(keys(cell_to_pindices))
cell_points = collect(values(cell_to_pindices))
points = map(i->pvec[cell_points[i]], 1:length(cell_ids))
weights_x_cell = Fill.(one(T),length.(cell_points))
pquad = map(i -> GenericQuadrature(points[i],weights_x_cell[i]), 1:length(cell_ids))
trianv = view(trian,cell_ids)
pmeas = Measure(CellQuadrature(pquad,points,weights_x_cell,trianv,PhysicalDomain(),PhysicalDomain()))
GenericDiracDelta{0,D,NotGridEntity}(trianv,pmeas)
end

Since in parallel mode, the model is a GenericDistributedDiscreteModel() which is not supported in original definition, I tried to write a parallel version of it:

tmp = map(local_views(model)) do model
p = Point(1.0,0.5)
trian = Triangulation(model)
cache = _point_to_cell_cache(KDTreeSearch(),trian)
cell = _point_to_cell!(cache, p)
...
end

Yet the _point_to_cell!(cache,p) throughs an error: ERROR: AssertionError: Point (1.0, 0.5) is not inside any active cell
I'm quite sure that point p is in the grid and the serial code runs well. Any idea how this problem results from? Or is there any other parallel application of a concentrated load on a point or a line?

Lenguaje dominante
Julia
Estrellas
150
Forks
28
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de gridap/GridapDistributed.jl

Todos los issues de gridap/GridapDistributed.jl

Issues similares

Más issues de Julia

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.