コード例 #1
0
ファイル: PetscTSExecutioner.C プロジェクト: ChaliZhg/moose
 virtual TimeStepperStatus step(Real *ftime) {
   PetscErrorCode ierr;
   TSConvergedReason reason;
   ierr = TSStep(_ts);
   CHKERRABORT(libMesh::COMM_WORLD,ierr);
   ierr = TSGetConvergedReason(_ts,&reason);
   CHKERRABORT(libMesh::COMM_WORLD,ierr);
   ierr = TSGetTime(_ts,ftime);
   CHKERRABORT(libMesh::COMM_WORLD,ierr);
   return (TimeStepperStatus)reason;
 }
コード例 #2
0
ファイル: TimeIntegration_PETSc.cpp プロジェクト: xyuan/gkc
double TimeIntegration_PETSc::solveTimeStep(Vlasov *vlasov, Fields *fields, TestParticles *particles, Timing &timing)
{
            if(timeIntegrationScheme == "Implicit_RK4") {
                    PETScMatrixVector pMV(vlasov, fields);
                    TSSetTimeStep(ts, dt);
                    TSStep(ts); 
                    // Get Solution
    Vec    Vec_F1;   
    cmplxd  *x_F1; 
    

                    TSGetSolution(ts, &Vec_F1);
                    VecGetArray(Vec_F1, &x_F1);

            // copy whole phase space function (waste but starting point) (important due to bounday conditions
           // we can built wrapper around this and directly pass it
   for(int x = NxLlD, n = 0; x <= NxLuD; x++) { for(int y_k = NkyLlD; y_k <= NkyLuD; y_k++) { for(int z = NzLlD; z <= NzLuD; z++) {
   for(int v = NvLlD       ; v <= NvLuD; v++) { for(int m   = NmLlD ; m   <= NmLuD ; m++  ) { for(int s = NsLlD; s <= NsLuD; s++) {

                vlasov->fs(x,y_k,z,v,m,s) = x_F1[n];
                vlasov->f(x,y_k,z,v,m,s) = x_F1[n++];

           }}} }}}
           
           fields->solve(vlasov->f0,  vlasov->f); 
           VecRestoreArray    (Vec_F1, &x_F1);
            
           timing.time += dt;
            timing.step++;
            writeTimeStep(timing, maxTiming, dt);
        
            }
            else TimeIntegration::solveTimeStep(vlasov, fields, particles, timing);

      return dt;
}
コード例 #3
0
ファイル: tsf.c プロジェクト: Kun-Qu/petsc
void PETSC_STDCALL  tsstep_(TS ts, int *__ierr ){
*__ierr = TSStep(
	(TS)PetscToPointer((ts) ));
}