在 2008-08-01五的 08:00 -0500,Roy Stogner写道: > On Fri, 1 Aug 2008, luyi wrote: > > > Because I want to use Jacobian_free Newton_Krylov method to solve the > > problem, if I setup two EquationSystems for each domain, I will get two > > rhs and connect them, with a matrix_free preconditioner I can get the > > full implicit solver, is that advisable? > > Hmmm.. That is an interesting idea, anyway. No need to worry about > whether the sparsity pattern is constructed correctly if you're not > using a sparse matrix. > > > If it is OK, the only thing I need to do is write a suitable send_list > > for parellel like the unconformed mesh? > > I don't think you can do this with just a send_list. Both systems > will assume that the DofMap has told them about every degree of > freedom they need to directly worry about, and you can't construct a > proper send_list when your systems are giving you rhs vectors that > aren't even the proper size. You'd have to do the parallel > synchronization yourself, and considering that the partitionings of > each mesh aren't guaranteed to correspond to each other in any way, I > think it could get tricky. > > On the other hand, doing things Jacobian-free makes my "define all > variables everywhere" suggestion slightly less retarded; the memory > waste in your vectors might be tolerable with no waste in a sparse > matrix to worry about. > > And of course, the "right" thing to do is still to modify DofMap to > handle different variables on different subdomains, but I completely > understand if you don't want to try to figure out *that* code. I > could do it myself, but I don't know when my schedule will permit. > I'd also need to know what sort of API/representation to use. Assume > when variables are created that they're defined everywhere, but let > users "turn off" variables on certain subdomains before > initialization? Store the "turned off" data as a set of pairs of > subdomain id and variable number? Because the JFNK method, if I can define different variables on different subdomains, and the dof_map can set the rhs arrangement like this : [rhs(fluid),rhs(heat transfer)]', then the matrix-free preconditioner will sweep elem by elem, fluid subdomain and heat transfer subdomain can be handled by different methods. As you said, it is difficult for me to modify "dof_map.C",haha, I am impassioned if libmesh can deal with this in future. > > > By the way, because my implicit discontinuous code need so much memory, > > so I want to use Jacobian_free Newton_Krylov method and write a matrix > > free preconditioner, can you give me some suggestions about this? Do I > > need to write a JFNK_systems inherit from the class "explicit_system"? > > You might want to talk to Derek Gaston. He's started using JFNK, > although I think he's currently keeping the sparse matrix around to > fill with an inexact Jacobian for preconditioning. I believe he's > using NonlinearImplicitSystem and PetscNonlinearSolver to do it. > > The trouble with that is the dependency on NonlinearImplicitSystem, > which inherits from ImplicitSystem and which therefore will construct > a memory-hogging matrix whether you plan to use it or not. But > looking over the code, I don't see any reference to a > NonlinearImplicitSystem which couldn't be replaced with a reference to > System without breaking anything. You could just make those > replacements, then create a NonlinearExplicitSystem which has the same > sort of NonlinearSolver member and ::solve() behavior as NIS. > --- > Roy >
Thank you for your suggestion! Luyi -- Gas Turbine Research Center email: [EMAIL PROTECTED] ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
