From: John P. <jwp...@gm...> - 2013-09-23 16:43:34
|
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 <and...@gm...> 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 |