Hi, Thanks for getting back to me.
Yes, I think you are right. The Newmark system doesn't seem to be compatible with what I wanted. It was appealing because it seemed like the easiest way to implement a time-dependent system with the benefit of not having to implement my own time integration. I have worked around the issue by writing Crank-Nicolson time-stepper (like one of the other examples). By "wrong magnitude" I meant that when I expected a specific solution (say linear in x and constant in y), the system evolved to the expected "shape" but the range was wrong. Specifically, I had something like u(x)=10x (x in [0,1]) rather than u(x)=x. The Crank-Nicolson time-stepper I have works the way I expect. I just couldn't figure out how to properly add the Neumann conditions into the the Newmark implementation. If anyone knows happens to know that would be helpful, but the method I have is working great for now. Thanks! Andrew On Mon, Sep 23, 2013 at 12:43 PM, John Peterson <[email protected]>wrote: > Hi Andrew, > > Sorry for the lack of response. I don't think any of the active > developers are very familiar with the Newmark system, hence their silence. > > > On Wed, Sep 18, 2013 at 1:43 PM, Andrew Davis <[email protected]>wrote: > >> Hi all, >> >> Apologies if this is somewhere in the documentation and I missed it. I am >> trying to update the "Newmark system and the Wave Equation" example. I >> have successfully updated the example to use time dependent Dirichlet >> (essential) boundary conditions and I am working on doing something >> similar >> in the Neumann (natural) case. >> >> The problem with just updating the assemble function to make the Neumann >> BCs time dependent in the example is the matrix is only assembled once so >> instead of having time dependent boundary conditions the initial >> evaluation >> is treated as constant Neumann BCs. Doing a reinit() and assemble() each >> timestep doesn't work for the Newmark case (and seems inefficient). >> > > It sounds like the Newmark system (as it's implemented in libmesh) may be > incompatible with what you are attempting to do? I think you'd be better > off with either implementing something more general (either with FEMSystem > or by following one of the other time-dependent examples) or generalizing > the existing Newmark system class so that it actually does what you want. > > >> Finally, I tried to change the "fill_dirichlet_bc" function to >> "fill_neumann_bc". The new version ingrates the Neumann BC over the >> boundary sides of each boundary element and adds the result to the RHS >> vector. This seems to make the BC time dependent but the wrong magnitude. >> > > Not sure what you mean by "wrong magnitude" exactly. Note that the > current fill_dirichlet_bc() function uses the penalty method to enforce a > Dirichlet boundary condition, which is not appropriate for Neumann... > > -- > John > ------------------------------------------------------------------------------ October Webinars: Code for Performance Free Intel webinars can help you accelerate application performance. Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from the latest Intel processors and coprocessors. See abstracts and register > http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
