I'd suggest Cc:ing libmesh-users on your emails; I'm probably the only
main developer who can meet with you in person right now, but for
simple questions there's typically decent odds of you getting a faster
answer from others.

On Tue, 27 Nov 2012, Ernesto Lima wrote:

> After our meeting I started using libmesh and already managed to implement 
> the Cahn-Hilliard equation with adapatative mesh.

Nice job!

> Now I tried to implement a system with 6 equations and with homogeneous 
> neumann boundary condition everything worked. But I need to have a dirichlet 
> boundary condition for one of the equations and I didn't manage to do that 
> until now. With the penalty method I am not able to get the correct result.

Proper BCs for Cahn-Hilliard are a bit tricky regardless of whether
you handle the terms - IIRC you have to do both a zeroth-or-first
order BC (same as you'd have to do with a second-order PDE) but you
also have to have a second-or-third order BC to close things out.
Depending on how you did the mixed formulation, handling the
second-order term as a true Dirichlet constraint may be either trivial
or may require some significant coding on your part, depending on
whether it ends up looking like "w = g" or "f(w) = g" for your
solution laplacian-like variable "w".

You should be able to get half-decent results with the penalty method,
though... if you're getting convergence plateaus or solver failures
after several orders of magnitude convergence, and you can't squeak
under your tolerances by tweaking the penalty epsilon, then you
definitely need true Dirichlet conditions, but any more serious
failures probably have a different underlying problem.

> I wonder if I could meet you sometime for a little help for the bc

I'm currently telecommuting and getting over a cold, but late this
week (Thursday afternoon?) will probably be fine.

> or if you could suggest a example of libmesh to do that.

We changed practically all our previous penalty examples to use true
dirichlet boundary conditions; try fem_system_ex1 for some simple
constant BCs or adjoints_ex3 for a parabolic inflow.

> I tried to print the system matrix and right-hand-side to see if I
> am doing right the bc but I also didn't find how to do that in the
> examples.

You can spit out the right hand side with 
"libMesh::out << *system.rhs;".  With sparse matrices using << on
*system.matrix should work, but there are also more options to govern
how they get printed; take a look at the _matlab, _personal,
print(sparse=true) etc. options in sparse_matrix.h

> Thank you for the help

You're welcome,
---
Roy

------------------------------------------------------------------------------
Keep yourself connected to Go Parallel: 
DESIGN Expert tips on starting your parallel project right.
http://goparallel.sourceforge.net
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to