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