* they do have a vocal mesh, so perhaps They want DM Plex. * they want ghost particle communication, that also might want a mesh
* DM swarm does not have a notion of ghost particle, as far as I know, but it could use one On Tue, Jul 30, 2024 at 7:58 AM Matthew Knepley <knep...@gmail.com> wrote: > On Tue, Jul 30, 2024 at 12: 24 AM Marco Seiz <marco@ kit. ac. jp> wrote: > Hello, I'd like to solve transient heat transport at a particle scale using > TS, with the per-particle equation being something like dT_i / dt = (S(T_i) > + sum(F(T_j, > ZjQcmQRYFpfptBannerStart > This Message Is From an External Sender > This message came from outside your organization. > > ZjQcmQRYFpfptBannerEnd > On Tue, Jul 30, 2024 at 12:24 AM Marco Seiz <ma...@kit.ac.jp> wrote: > >> Hello, I'd like to solve transient heat transport at a particle scale >> using TS, with the per-particle equation being something like dT_i / dt = >> (S(T_i) + sum(F(T_j, T_i), j connecting to i)) with a nonlinear source term >> S and a conduction term >> ZjQcmQRYFpfptBannerStart >> This Message Is From an External Sender >> This message came from outside your organization. >> >> ZjQcmQRYFpfptBannerEnd >> >> Hello, >> >> I'd like to solve transient heat transport at a particle scale using TS, >> with the per-particle equation being something like >> >> dT_i / dt = (S(T_i) + sum(F(T_j, T_i), j connecting to i)) >> >> with a nonlinear source term S and a conduction term F. The particles can >> move, deform and grow/shrink/vanish on a voxel grid, but for the temperature >> a particle-scale resolution should be sufficient. The particles' >> connectivity will change during the simulation, but is assumed constant >> during a single timestep. I have a data structure tracking the particles' >> connectivity, so I can say which particles should conduct heat to each >> other. I exploit symmetry and so only save the "forward" edges, so e.g. for >> touching particles 1->2->3, I only store [[2], [3], []], from which the full >> list [[2], [1, 3], [2]] could be reconstructed but which I'd like to avoid. >> In parallel each worker would own some of the particle data, so e.g. for the >> 1->2->3 example and 2 workers, worker 0 could own [[2]] and worker 1 >> [[3],[]]. >> >> Looking over the DM variants, either DMNetwork or some manual mesh build >> with DMPlex seem suited for this. I'd especially like it if the adjacency >> information is handled by the DM automagically based on the edges so I don't >> have to deal with ghost particle communication myself. I already tried >> something basic with DMNetwork, though for some reason the offsets I get >> from DMNetworkGetGlobalVecOffset() are larger than the actual network. I've >> attached what I have so far but comparing to e.g. >> src/snes/tutorials/network/ex1.c I don't see what I'm doing wrong if I don't >> need data at the edges. I might not be seeing the trees for the forest >> though. The output with -dmnetwork_view looks reasonable to me. Any help in >> fixing this approach, or if it would seem suitable pointers to using DMPlex >> for this problem, would be appreciated. >> >> To me, this sounds like you should built it with DMSwarm. Why? > > 1) We only have vertices and edges, so a mesh does not buy us anything. > > 2) You are managing the parallel particle connectivity, so DMPlex topology > is not buying us anything. Unless I am misunderstanding. > > 3) DMNetwork has a lot of support for vertices with different > characteristics. Your particles all have the same attributes, so this is > unnecessary. > > How would you set this up? > > 1) Declare all particle attributes. There are many Swarm examples, but say > ex6 which simulates particles moving under a central force. > > 2) That example decides when to move particles using a parallel background > mesh. However, you know which particles you want to move, > so you just change the _rank_ field to the new rank and call > DMSwarmMigrate() with migration type _basic_. > > It should be straightforward to setup a tiny example moving around a few > particles to see if it does everything you want. > > Thanks, > > Matt > > >> Best regards, >> Marco >> >> -- > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which their > experiments lead. > -- Norbert Wiener > > https://urldefense.us/v3/__https://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!ZZf2CYk1CsN2Q43ocye-8RrM6OO4A88bnH3Z4v_lyS33IuTwZEAglC2goNp7wyWJr6cONppAYIh0DQ0qFGzNNYg$ > > <https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!bLVHnoUGooYpdfGD8zNQrHTY2ln70W082hEc6pG7vdjA2fCvs77tcI9d7QOA0i_FjGK1of3nNOKXCE-4Rwb0$> >