Post-time-step function: this function is called at the end of each time step.
32 int ns, nsims = TS->
nsims;
39 #if defined(HAVE_CUDA) 40 if (sim[0].solver.use_gpu) {
47 for (ns = 0; ns < nsims; ns++) {
51 sim[ns].solver.dim_local,
52 sim[ns].solver.ghosts,
55 npts += (double)sim[ns].solver.npoints_global;
58 double global_sum = 0;
61 &(sim[0].mpi.world) );
63 TS->
norm = sqrt(global_sum/npts);
64 #if defined(HAVE_CUDA) 76 #if defined(HAVE_CUDA) 77 if (!sim[0].solver.use_gpu) {
79 for (ns = 0; ns < nsims; ns++) {
81 if (!strcmp(sim[ns].solver.ConservationCheck,
"yes")) {
95 if (sim[ns].solver.PostStep) {
100 #if defined(HAVE_CUDA) 111 double global_total = 0, global_wctime = 0, global_mpi_total = 0, global_mpi_wctime = 0;
116 #if defined(HAVE_CUDA) 117 MPIMax_double(&global_mpi_wctime, &sim[0].mpi.wctime, 1, &(sim[0].mpi.world));
118 MPIMax_double(&global_mpi_total, &sim[0].mpi.wctime_total, 1, &(sim[0].mpi.world));
Structure of variables/parameters and function pointers for time integration.
Structure defining a simulation.
int MPISum_double(double *, double *, int, void *)
long sum(const std::vector< int > &a_iv)
int(* CalculateConservationError)(void *, void *)
int(* VolumeIntegralFunction)(double *, double *, void *, void *)
int MPIMax_double(double *, double *, int, void *)
#define _ArrayAXPY_(x, a, y, size)
int(* BoundaryIntegralFunction)(void *, void *)
int(* PostStep)(double *, void *, void *, double, int)
INLINE double ArraySumSquarenD(int, int, int *, int, int *, double *)
struct timeval iter_start_time
struct timeval iter_end_time