From ef1b6f58a04e14c8e30bbbb368d79f6d8a05fa9c Mon Sep 17 00:00:00 2001 From: fredrikr79 Date: Mon, 22 Sep 2025 16:28:44 +0200 Subject: [PATCH] ex3: style --- exercise3/wave_1d_parallel.c | 206 +++++++++++++++-------------------- 1 file changed, 88 insertions(+), 118 deletions(-) diff --git a/exercise3/wave_1d_parallel.c b/exercise3/wave_1d_parallel.c index 48f22e5..ef9847c 100644 --- a/exercise3/wave_1d_parallel.c +++ b/exercise3/wave_1d_parallel.c @@ -1,9 +1,9 @@ #define _XOPEN_SOURCE 600 +#include +#include #include #include #include -#include -#include #include // TASK: T1a @@ -12,19 +12,16 @@ ; // END: T1a - // Option to change numerical precision. typedef int64_t int_t; typedef double real_t; - // TASK: T1b // Declare variables each MPI process will need // BEGIN: T1b ; // END: T1b - // Simulation parameters: size, step count, and how often to save the state. const int_t N = 65536, @@ -33,7 +30,7 @@ const int_t // Wave equation parameters, time step is derived from the space step. const real_t - c = 1.0, + c = 1.0, dx = 1.0; real_t dt; @@ -42,164 +39,137 @@ real_t real_t *buffers[3] = { NULL, NULL, NULL }; - -#define U_prv(i) buffers[0][(i)+1] -#define U(i) buffers[1][(i)+1] -#define U_nxt(i) buffers[2][(i)+1] - +#define U_prv(i) buffers[0][(i) + 1] +#define U(i) buffers[1][(i) + 1] +#define U_nxt(i) buffers[2][(i) + 1] // Convert 'struct timeval' into seconds in double prec. floating point #define WALLTIME(t) ((double)(t).tv_sec + 1e-6 * (double)(t).tv_usec) - // TASK: T8 // Save the present time step in a numbered file under 'data/'. -void domain_save ( int_t step ) -{ -// BEGIN: T8 - char filename[256]; - sprintf ( filename, "data/%.5ld.dat", step ); - FILE *out = fopen ( filename, "wb" ); - fwrite ( &U(0), sizeof(real_t), N, out ); - fclose ( out ); -// END: T8 +void domain_save(int_t step) { + // BEGIN: T8 + char filename[256]; + sprintf(filename, "data/%.5ld.dat", step); + FILE *out = fopen(filename, "wb"); + fwrite(&U(0), sizeof(real_t), N, out); + fclose(out); + // END: T8 } - // TASK: T3 // Allocate space for each process' sub-grids // Set up our three buffers, fill two with an initial cosine wave, // and set the time step. -void domain_initialize ( void ) -{ -// BEGIN: T3 - buffers[0] = malloc ( (N+2)*sizeof(real_t) ); - buffers[1] = malloc ( (N+2)*sizeof(real_t) ); - buffers[2] = malloc ( (N+2)*sizeof(real_t) ); +void domain_initialize(void) { + // BEGIN: T3 + buffers[0] = malloc((N + 2) * sizeof(real_t)); + buffers[1] = malloc((N + 2) * sizeof(real_t)); + buffers[2] = malloc((N + 2) * sizeof(real_t)); - for ( int_t i=0; i