On Wed, 4 Jun 2008, Maxime Debon wrote:

> Quoting Roy Stogner :
>> I can't tell for sure, but it looks like there may be a bit of conflict
>> between your time discretization and your Neumann boundary conditions?
>> Make sure you're really solving "du/dx|xmax = g", not "d^2 u/dxdt|xmax = g"

Looking over your code, since you're solving directly for u_n+1 rather
than solving for delta_u_n and adding it to u_n, it looks like my
guess here was wrong.

> You are right, the Neumann condition returns good results in static mode but 
> not in transient. As I was using the theta method, I tried with the Newmark 
> system (from ex. 8) to figure out a way to implement this Neumann boundary, 
> but the problem still exists. Therefore, I replaced the Dirichlet condition 
> in the dirichlet function by a Neumann condition.
>
>
> // ------------------------------------------------------ //
>
>     if (fabs(curr_node(0)-Xmax) < TOLERANCE)
>     {
>         unsigned int dn = curr_node.dof_number(0,0,0);
>         double neumann_value = 1.0;
>         force.add(dn,neumann_value);
>     }

This looks like it's just basically doing the same side "integration"
that we normally do for Neumann conditions, just with lower level
APIs.

I can't see anything obviously wrong on second glance either, but if
you can whittle this down to a system where libMesh gives results that
differ from what you can calculate by hand, let us know.
---
Roy

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to