It is certainly true that MeshWorker has a very flexible interface for faces and multigrid that should be reused whenever possible. In fact, Martin has looked at this at some point but we decided that the focus was quite different and that it would take a bigger effort to integrate our work to the MeshWorker. Essentially, there are three choices in the MeshWorker framework that do not fit with our strategy:
1. The MeshWorker is centered around the usage of FEValuesBase objects for all local evaluations. While this is very general (all of the deal.II assembly code gets channeled through it), it turned out to be too slow for our purposes: When you only assemble vectors like in a matrix-free approach, FEValues eats just too much time. 2. The parallel loop over cells for MeshWorker is based WorkStream which does local computations in parallel but serializes writing into vectors or matrices. This, again, was severely impacting performance, in particular on multicore machines. 3. The looping in deal.II is based on the topology of the mesh. Again, this does not really fit well with parallel algorithms where one wants to use vectorization which processes several cells with a single CPU instruction. In order to be able to support DG, it might be advantageous to integrate the MeshWorker. However, one would at least need to find a way to implement the caching of the face data efficiently. Best, Katharina On 29 maj 2012, at 21.52, Guido Kanschat wrote: > Considerable effort went into devising an expandable structure for > MeshWorker, which can work with a lot of different data structures, > and relieves you of all the hassle of integrating face terms on > locally refined meshes, even with multigrid. I think it would be very > advisable to use it. > > Best, > Guido > > On Wed, May 23, 2012 at 1:33 PM, Katharina Kormann > <[email protected]> wrote: >> Dear Saul, >> >> The MatrixFree class has its own loop structure that is not based on the >> MeshWorker since it uses its own data structures and parallelization >> strategy. These data structures are necessary since we need the precomputed >> transformation data for each cell. >> Face loops are not supported at the moment. I am using face terms for error >> estimation in my research but for cartesian cells only. Including faces in a >> general setting with the same efficiency as volume terms would require >> considerable enhancement of the matrix free data structures. >> >> Best regards, >> Katharina >> >> On 23 maj 2012, at 16.33, Saul Teukolsky wrote: >> >> Hi Guido, >> >> No, it has it's own cell_loop function that does volume terms. It is not >> obvious to me how to do face terms. >> >> Saul >> >> Guido Kanschat wrote: >> >> I have not had a chance to check out the MatrixFree class. Does it use the >> MeshWorker loop? In that case, it would be easy. If not, it should. >> >> Guido >> >> On May 23, 2012 8:14 AM, "Saul Teukolsky" <[email protected]> wrote: >>> >>> Hi, >>> >>> I am trying to solve a DG problem with the MatrixFree class. The cell_loop >>> function provides a convenient way to compute volume terms. Is there a >>> convenient way to loop over the faces of each cell to compute the flux >>> terms? If so, a simple example of the syntax would be very helpful! >>> >>> Thanks, >>> Saul >>> _______________________________________________ >>> dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii >> >> _______________________________________________ >> dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii >> >> >> >> _______________________________________________ >> dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii >> > > > > -- > Guido Kanschat, Department of Mathematics, Texas A&M University > > In accordance with the Texas Public Information Act all email sent to > and from my Texas A&M email account can be obtained through a Public > Information Request. If you do not want your correspondence public, > please arrange a phone conversation with me. _______________________________________________ dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii
