[petsc-dev] The question about TS^pseudo-timestepping
Lulu Liu
lulu.liu at kaust.edu.sa
Sun Sep 14 10:54:31 CDT 2014
Hi,
I looked at the example /petsc/src/ts/examples/tutorials/ex1.c, which is to
solve a 2D Bratu nonlinear PDE with pseudo-timestepping.
ierr = TSSetRHSFunction(ts,NULL,*FormFunction*,&user);CHKERRQ(ierr);
*Q1:In the FormFunction(), I do not understand why this example uses 1D
array, not 2D array x[j][i]? Is it necessary to use 1D array when we use
the pseudo-timestepping method?*
#undef __FUNCT__
#define __FUNCT__ "FormFunction"
PetscErrorCode FormFunction(TS ts,PetscReal t,Vec X,Vec F,void *ptr)
{
…….
for (j=0; j<my; j++) {
for (i=0; i<mx; i++) {
row = i + j*mx;
if (i == 0 || j == 0 || i == mx-1 || j == my-1) {
f[row] = x[row];
continue;
}
u = x[row];
ub = x[row - mx];
ul = x[row - 1];
ut = x[row + mx];
ur = x[row + 1];
uxx = (-ur + two*u - ul)*hydhx;
uyy = (-ut + two*u - ub)*hxdhy;
f[row] = -uxx + -uyy + sc*lambda*PetscExpScalar(u);
}
}
……..
}
*Q2: I try to modify this function using local 2D array x[j][i], but got
some errors:*
[0]PETSC ERROR:
[0]PETSC ERROR: Must call DMShellSetLocalVector() or
DMShellSetCreateLocalVector()
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for
trouble shooting.
[0]PETSC ERROR: Petsc Release Version 3.5.1, Jul, 24, 2014
[0]PETSC ERROR: ./test on a arch-darwin-c-debug named kl-12681.local by
liul Sun Sep 14 18:42:38 2014
[0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++
--with-fc=gfortran --download-fblaslapack --download-mpich
[0]PETSC ERROR: #1 DMCreateLocalVector_Shell() line 271 in
/Users/liul/soft/petsc-3.5.1/petsc/src/dm/impls/shell/dmshell.c
[0]PETSC ERROR: #2 DMCreateLocalVector() line 709 in
/Users/liul/soft/petsc-3.5.1/petsc/src/dm/interface/dm.c
[0]PETSC ERROR: #3 DMGetLocalVector() line 49 in
/Users/liul/soft/petsc-3.5.1/petsc/src/dm/interface/dmget.c
[0]PETSC ERROR: #4 FormFunction() line 253 in
/Users/liul/Desktop/Combustion/test.c
[0]PETSC ERROR: #5 TSComputeRHSFunction() line 475 in
/Users/liul/soft/petsc-3.5.1/petsc/src/ts/interface/ts.c
[0]PETSC ERROR: #6 TSComputeIFunction() line 688 in
/Users/liul/soft/petsc-3.5.1/petsc/src/ts/interface/ts.c
[0]PETSC ERROR: #7 TSPseudoMonitorDefault() line 330 in
/Users/liul/soft/petsc-3.5.1/petsc/src/ts/impls/pseudo/posindep.c
[0]PETSC ERROR: #8 TSMonitor() line 2809 in
/Users/liul/soft/petsc-3.5.1/petsc/src/ts/interface/ts.c
[0]PETSC ERROR: #9 TSSolve() line 2751 in
/Users/liul/soft/petsc-3.5.1/petsc/src/ts/interface/ts.c
[0]PETSC ERROR: #10 main() line 162 in /Users/liul/Desktop/Combustion/test.c
--
------------------------------
This message and its contents, including attachments are intended solely
for the original recipient. If you are not the intended recipient or have
received this message in error, please notify me immediately and delete
this message from your computer system. Any unauthorized use or
distribution is prohibited. Please consider the environment before printing
this email.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20140914/1170b5a4/attachment.html>
More information about the petsc-dev
mailing list