Yingjie:
Dear Petsc developers:
Hi,
I am currently using Petsc to solve a two-dimensional system of non-linear 
PDEs, which is a thermal problem, including pressure field, temperature field 
and velocity field. Since it is not easy to construct Jacobian matrix 
explicitly, I adopt snes_mf method and provide a preconditioning matrix. Now I 
want to adapt the program to parallel version.
The main steps of the current procedure are as fellows:

  *   A solution vector U is constructed. The dimension is the sum of the 
meshed of each physical field.
  *   FormFunction is provided to calculate residual.
  *   Preconditioning matrix Pmat is assembled using FormJacibian, but Amat 
(Jacobian matrix) is not assembled.
  *   Compute with -snes_mf_operator.

There are following questions about the development of parallel version:

  1.  If one processor is assigned to each physical field, such as pressure 
field P,velocity field V, temperature field T, belongs to three processors. 
Because the problem is nonlinear, the information of temperature T may be used 
in the calculation of pressure P(in FormFunction). How to transfer the 
information?

Parallelization should be done to the domain, not physic components. See 
example petsc/src/snes/examples/tutorials/ex19.c

  1.  Since the snes_mf method needs a good preconditioning matrix to ensure 
convergence. How to use preconditioning matrix in parallel? As far as I know, 
BJACOBI can run in parallel. How can it be used in snes_mf method?

Because there are few snes_mf examples with parallel computation, I need some 
advice from you.
petsc/src/snes/examples/tutorials/ex19.c incudes a test on '-snes_mf_operator':
...
test:
      suffix: 13
      nsize: 3
      args: -snes_monitor_short -ksp_monitor_short -pc_type fieldsplit 
-pc_fieldsplit_type multiplicative -snes_view -da_refine 1 -ksp_type fgmres 
-snes_mf_operator

Hong

Reply via email to