[petsc-users] Solution update is not working in TS
    Konstantinos Kontzialis 
    ckontzialis at lycos.com
       
    Mon Nov  7 08:02:20 CST 2011
    
    
  
Dear all,
  I have moved to petsc version 3.2 from 3.1 and I did the modifications 
needed
for running my code. However, I see that some things are not working in 
v3.2.
For instance, if I want to apply and explicit euler method to the Euler 
equations of
gas dynamics discretized with a high order method I do the following:
/* Initialize the solution vector */
     ierr = VecCreateGhost(sys.comm, sys.ldof, sys.gdof, sys.ghdof,
             sys.dof_gloInd, &sys.gsv);
     CHKERRQ(ierr);
/* Initialize the residual vector*/
ierr = VecCreateMPI(sys.comm, sys.ldof, sys.gdof, &sys.gres0);
     CHKERRQ(ierr);
/*Apply the initial conditions*/
/* Set up TS*/
         ierr = TSCreate(sys.comm, &sys.ts);
     CHKERRQ(ierr);
     ierr = TSSetProblemType(sys.ts, TS_NONLINEAR);
     CHKERRQ(ierr);
     ierr = TSSetSolution(sys.ts, sys.gsv);
     CHKERRQ(ierr);
     ierr = TSSetRHSFunction(sys.ts, sys.gres0, base_residual_explicit, 
&sys);
     CHKERRQ(ierr);
     ierr = TSSetInitialTimeStep(sys.ts, sys.con->tm, sys.con->dt);
     CHKERRQ(ierr);
     ierr = TSSetDuration(sys.ts, 100e+6, sys.con->etime);
     CHKERRQ(ierr);
     ierr = TSSetFromOptions(sys.ts);
     CHKERRQ(ierr);
     ierr = TSMonitorSet(sys.ts, monitor, &sys, PETSC_NULL);
     CHKERRQ(ierr);
     ierr = TSSolve(sys.ts, sys.gsv, &sys.con->etime);
     CHKERRQ(ierr);
I run with:
mpiexec -n 8 valgrind ./hoac cylinder -llf_flux -n_out 5 -end_time 1.0 
-dt 0.01 -ts_type euler -gl
and I get:
Timestep   0: dt = 0.01, T = 0, Res[rho] = 0.0647535, Res[rhou] = 
0.0561559, Res[rhov] = 0.0327505, Res[E] = 0.162518, CFL = 0.414652
Timestep   1: dt = 0.01, T = 0.01, Res[rho] = 0.0647535, Res[rhou] = 
0.0561559, Res[rhov] = 0.0327505, Res[E] = 0.162518, CFL = 0.414652
Timestep   2: dt = 0.01, T = 0.02, Res[rho] = 0.0647535, Res[rhou] = 
0.0561559, Res[rhov] = 0.0327505, Res[E] = 0.162518, CFL = 0.414652
Timestep   3: dt = 0.01, T = 0.03, Res[rho] = 0.0647535, Res[rhou] = 
0.0561559, Res[rhov] = 0.0327505, Res[E] = 0.162518, CFL = 0.414652
Timestep   4: dt = 0.01, T = 0.04, Res[rho] = 0.0647535, Res[rhou] = 
0.0561559, Res[rhov] = 0.0327505, Res[E] = 0.162518, CFL = 0.414652
Timestep   5: dt = 0.01, T = 0.05, Res[rho] = 0.0647535, Res[rhou] = 
0.0561559, Res[rhov] = 0.0327505, Res[E] = 0.162518, CFL = 0.414652
Timestep   6: dt = 0.01, T = 0.06, Res[rho] = 0.0647535, Res[rhou] = 
0.0561559, Res[rhov] = 0.0327505, Res[E] = 0.162518, CFL = 0.414652
Timestep   7: dt = 0.01, T = 0.07, Res[rho] = 0.0647535, Res[rhou] = 
0.0561559, Res[rhov] = 0.0327505, Res[E] = 0.162518, CFL = 0.414652
Timestep   8: dt = 0.01, T = 0.08, Res[rho] = 0.0647535, Res[rhou] = 
0.0561559, Res[rhov] = 0.0327505, Res[E] = 0.162518, CFL = 0.414652
Timestep   9: dt = 0.01, T = 0.09, Res[rho] = 0.0647535, Res[rhou] = 
0.0561559, Res[rhov] = 0.0327505, Res[E] = 0.162518, CFL = 0.414652
Timestep  10: dt = 0.01, T = 0.1, Res[rho] = 0.0647535, Res[rhou] = 
0.0561559, Res[rhov] = 0.0327505, Res[E] = 0.162518, CFL = 0.414652
which seems that my solution vector sys.gsv is not updated at every 
step, and moreover, when I print the solution ,I see the values got from 
the initial conditions.
What am I doing wrong?
Thanks
Kostas
    
    
More information about the petsc-users
mailing list