First, I can confirm that I get about the same numbers as... Lagrange without CM is 3357!

    average/max on-processor bandwidth (n_elem=10, n_vars=150):
                        without CM    with CM
    LAGRANGE(FIRST)     3357.36/4050  22.3824/27
MONOMIAL(CONSTANT) 960/1050 811/901


Clearly you have more RAM than I do :)



Second, I don't really know what the problem is, but could it have something to do with this use_coupled_neighbor_dofs() function? We assume that MONOMIAL implies DG/FV, and therefore set implicit_neighbor_dofs = true. I guess what you are saying is that this is not always the case... for example in the mass matrix.

Yep, in my case I want a block diagonal mass matrix for computing L2 projections (of many variables simultaneously) into the DG space.




    bool DofMap::use_coupled_neighbor_dofs(const MeshBase& mesh) const
    {
      // If we were asked on the command line, then we need to
      // include sensitivities between neighbor degrees of freedom
      bool implicit_neighbor_dofs =
        libMesh::on_command_line ("--implicit_neighbor_dofs");
      // look at all the variables in this system.  If every one is
      // discontinuous then the user must be doing DG/FVM, so be nice
      // and  force implicit_neighbor_dofs=true
      {
        bool all_discontinuous_dofs = true;
        for (unsigned int var=0; var<this->n_variables(); var++)
          if (FEAbstract::build (mesh.mesh_dimension(),
    this->variable_type(var))->get_continuity() !=  DISCONTINUOUS)
    all_discontinuous_dofs = false;
        if (all_discontinuous_dofs)
          implicit_neighbor_dofs = true;
      }
      return implicit_neighbor_dofs;
    }



Ah, good catch! If I change use_coupled_neighbor_dofs to do "return libMesh::on_command_line ("--implicit_neighbor_dofs")", then it works fine, e.g. the bandwidth in my test code with FIRST MONOMIAL becomes 4.

So I'd like to be able to enforce --implicit_neighbor_dofs=false, even if all variables are DISCONTINUOUS.

Any preferences on how to change the API to allow that? Perhaps a second boolean argument to use_coupled_neighbor_dofs called "use_commandline_value"?

Thanks!
David


------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to