Thanks Roy. > On Sep 14, 2018, at 1:06 PM, Roy Stogner <royst...@ices.utexas.edu> wrote: > > > On Fri, 14 Sep 2018, gmail wrote: > >> I’ve recently added plasticity with implicit integration to my code. >> This requires keeping track of so called “history variables” (i.e. >> internal parameters of plasticity such as back stresses, equivalent >> plastic strain,..) on each quadrature point. I have come up with a >> crude work around that works currently simply defining each history >> variable for each quadrature point (in a uniform mesh) as a DG0 >> variable. I was wondering: >> 1) if there’s a better way to do this within the libMesh framework? >> i.e., a way to attach to a NonlinearImplicitSystem an array of N >> variables (where N is not necessarily the number of knowns in the >> system) with a correct parallel layout. > > Generally the best thing to do for auxilliary variables is use a > vector in a separate ExplicitSystem... > > But the reason to do it that way is so that they're kept straight for > you through repartitioning, ghosting, refinement and coarsening, etc. > In this case, with the DG0 variables idea, you do get repartitioning > and ghosting handled. > > But if you have a variable per quadrature point, you don't get the > AMR/C benefits, because the quadrature point on a child element won't > be at the same place as the parent point was and probably shouldn't > have the same value. If you're never going to refine or coarsen > that's fine. If you are, and you're using simplices, then you could > pick a MONOMIAL basis order that matches your implicit system's > quadrature rule, interpolate that onto quadrature points, and use > that. If you're not on simplices, but you're using a low p, you can > probably get an L2_LAGRANGE order to match. If you're using high p > and not on simplices then we probably don't have anything that can > help you with AMR.
OK. I’m sticking with my DG0 implementation then. I already do projections of these variables when I want to write the output. > >> 2) Even though I set the hideoutput flag on, on the ExplicitSystem >> that contains these variables, it’s still being written to when I >> call ExodusII_IO::write_timestep(). > > That... looks like an unimplemented feature that isn't marked as > unimplemented? Looks like hide_output is only respected by our > XDR/XDA I/O, and for other formats we have a container-of-strings > system_names variable to accomplish the same task? That seems... > inconsistent. John and I probably should have noticed that before > accepting https://github.com/libMesh/libmesh/pull/611 > > I suppose it would make sense to, when system_names is left NULL, > check hide_output() instead of defaulting to all systems? I see, I thought I might be missing something. I will try to create a patch that does the same in ExodusII_IO. > --- > Roy Ata _______________________________________________ Libmesh-users mailing list Libmesh-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmesh-users