Azzera filtri
Azzera filtri

cell linked method in matlab with parallelization trough domain splitting

3 visualizzazioni (ultimi 30 giorni)
I want to perform particle dynamics integration with cell linked method (all particles are assigned to different cells to speed up the calculation of the forces as in figure)
I am easily able to split paricles in cells trough the following function, where the grid stores the left vertex of the cells in x and y coordinates and ptcls.x stores the position of the particles as a 2 by NP (number of particles) mesh
function grd_to_ptcl = init_ptcl_mesh (grd, ptcls)
h = [grd.x(2) - grd.x(1); grd.y(2) - grd.y(1)];
idx = floor(ptcls.x./h) + 1;
indexPtcls = 1:size(ptcls.x,2);
grd_to_ptcl = accumarray(idx',indexPtcls(:),[grd.ncx grd.ncy],@(x) {x});
end
Once I have the cell array I am easily able to run trough not empty cells and perform force calculation
index = cellfun(@numel, grd_to_ptcl, 'UniformOutput', true);
index = find(index >=1);
for i=index(:)
% calculation of the force
end
My question is how I can split the domain and perform the calculation in parallel updating the boundaries of each of the splitted domains as in figure in an efficient way
If possible would be usefull to have a simple example, thanks in advance

Risposte (1)

UDAYA PEDDIRAJU
UDAYA PEDDIRAJU il 8 Mag 2024
Hi Andrea,
Parallelize cell-linked method with domain splitting in MATLAB:
  1. Split domain & assign particles: Use :"spmd":https://www.mathworks.com/help/parallel-computing/spmd.html and array partitioning to create subdomains with overlap for boundary handling. Distribute particles based on subdomain membership.
  2. Force calculation (parallel): Within each worker, use the cell-linked method for forces within the subdomain.
  3. Boundary correction (centralized): Gather info on boundary particles, calculate & accumulate forces due to neighboring subdomains.
  4. Combine results: Gather partial force calculations and combine for final forces on all particles.
This should give you an idea on how to work around.

Prodotti


Release

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by