From f593a6c4f69aa11986b2a3836d90f013c25b8cc4 Mon Sep 17 00:00:00 2001
From: Xin Li <lixin.reco@gmail.com>
Date: Mon, 23 Aug 2021 17:33:03 +0200
Subject: [PATCH] updated advanced_lab

---
 advanced_lab/c/Makefile    | 16 +++++++---------
 advanced_lab/c/shwater2d.c | 36 ++++++++++++++++++------------------
 advanced_lab/f90/Makefile  | 19 +++++++------------
 3 files changed, 32 insertions(+), 39 deletions(-)

diff --git a/advanced_lab/c/Makefile b/advanced_lab/c/Makefile
index e0e17db..f7d4303 100644
--- a/advanced_lab/c/Makefile
+++ b/advanced_lab/c/Makefile
@@ -1,13 +1,11 @@
-CC = cc
-ifeq ($(CRAY_PRGENVCRAY), loaded)
-CFLAGS = -O2 -openmp
-else ifeq ($(CRAY_PRGENVINTEL), loaded)
-CFLAGS = -O2 -openmp -D_Float128=__float128
-else ifeq ($(CRAY_PRGENVGNU), loaded)
+# for GNU compiler
+CC = gcc
 CFLAGS = -O2 -fopenmp
-else
-CFLAGS = -O2
-endif
+
+# for Intel compiler
+#CC = icc
+#CFLAGS = -O2 -qopenmp
+
 SRC = vtk_export.c shwater2d.c
 OBJS = ${SRC:.c=.o}
 DEST = shwater2d
diff --git a/advanced_lab/c/shwater2d.c b/advanced_lab/c/shwater2d.c
index 94748ee..902c357 100644
--- a/advanced_lab/c/shwater2d.c
+++ b/advanced_lab/c/shwater2d.c
@@ -30,10 +30,10 @@ void validate(double *Q, int m, int n) {
   for (i = 0; i < n; i++) 
     for (j = 0; j < m; j++) 
       for (k = 0; k < cell_size;  k++)
-	if (!isfinite(Q(k, j, i))) {
-	  fprintf(stderr, "Invalid solution\n");
-	  exit(-1);
-	}
+        if (!isfinite(Q(k, j, i))) {
+          fprintf(stderr, "Invalid solution\n");
+          exit(-1);
+        }
 }
 
 /* Flux function in the x-direction */
@@ -69,7 +69,7 @@ void fy(double *Q, double **fq, int m, int n, int i) {
   Try to parallelize it in an efficient way!
 */
 void laxf_scheme_2d(double *Q, double **ffx, double **ffy, double **nFx, double **nFy,
-		    int m, int n, double dx, double dy, double dt) {
+                    int m, int n, double dx, double dy, double dt) {
   int i, j, k;
     
   /* Calculate and update fluxes in the x-direction */
@@ -77,11 +77,11 @@ void laxf_scheme_2d(double *Q, double **ffx, double **ffy, double **nFx, double
     fx(Q, ffx, m, n, i);
     for (j = 1; j < m; j++) 
       for (k = 0; k < cell_size;  k++) 
-	nFx[k][j] = 0.5 * ((ffx[k][j-1] + ffx[k][j]) -
-			   dx/dt * (Q(k, j, i) - Q(k, j-1, i)));
+        nFx[k][j] = 0.5 * ((ffx[k][j-1] + ffx[k][j]) -
+                           dx/dt * (Q(k, j, i) - Q(k, j-1, i)));
     for (j = 1; j < m-1; j++)
       for (k = 0; k < cell_size;  k++) 
-	Q(k, j, i) = Q(k, j, i)  - dt/dx * ((nFx[k][j+1] - nFx[k][j]));
+        Q(k, j, i) = Q(k, j, i)  - dt/dx * ((nFx[k][j+1] - nFx[k][j]));
       
   }
 
@@ -90,11 +90,11 @@ void laxf_scheme_2d(double *Q, double **ffx, double **ffy, double **nFx, double
     fy(Q, ffy, m, n, i);
     for (j = 1; j < n; j++)
       for (k = 0; k < cell_size; k++)
-	nFy[k][j] = 0.5 * ((ffy[k][j-1] + ffy[k][j]) - 
-			   dy/dt * (Q(k, i, j) - Q(k, i, j -1)));
+        nFy[k][j] = 0.5 * ((ffy[k][j-1] + ffy[k][j]) - 
+                           dy/dt * (Q(k, i, j) - Q(k, i, j -1)));
     for (j = 1; j <  n-1; j++) 
       for (k = 0; k < cell_size; k++)
-	Q(k,i,j) = Q(k,i,j) -  dt/dy * ((nFy[k][j+1]  -  nFy[k][j]));
+        Q(k,i,j) = Q(k,i,j) -  dt/dy * ((nFy[k][j+1]  -  nFy[k][j]));
   }
 
 }
@@ -104,7 +104,7 @@ void laxf_scheme_2d(double *Q, double **ffx, double **ffy, double **nFx, double
   But don't forget the subroutine laxf_scheme_2d
 */
 void solver(double *Q, double **ffx, double **ffy, double **nFx, double **nFy,
-	    int m, int n, double tend, double dx, double dy, double dt) {
+            int m, int n, double tend, double dx, double dy, double dt) {
   double bc_mask[3] = {1.0, -1.0, -1.0};
   double time;
   int i, j, k, steps;
@@ -115,15 +115,15 @@ void solver(double *Q, double **ffx, double **ffy, double **nFx, double **nFy,
     /* Apply boundary condition */
     for (j = 1; j < n - 1 ; j++) {
       for (k = 0; k < cell_size; k++) {
-	Q(k, 0, j) = bc_mask[k] *  Q(k, 1, j);
-	Q(k, m-1, j) = bc_mask[k] *  Q(k, m-2, j);
+        Q(k, 0, j) = bc_mask[k] *  Q(k, 1, j);
+        Q(k, m-1, j) = bc_mask[k] *  Q(k, m-2, j);
       }
     }
 
     for (j = 0; j < m; j++)  {
       for (k = 0; k < cell_size; k++) {
-	Q(k, j, 0) = bc_mask[k] * Q(k, j, 1);
-	Q(k, j, n-1) = bc_mask[k] * Q(k, j, n-2);
+        Q(k, j, 0) = bc_mask[k] * Q(k, j, 1);
+        Q(k, j, n-1) = bc_mask[k] * Q(k, j, n-2);
       }
     }
      
@@ -178,7 +178,7 @@ int main(int argc, char **argv) {
   Q = (double *) malloc(m * n * cell_size *  sizeof(double));
 
   x = (double *) malloc(m * sizeof(double));
-  y = (double *) malloc(n * sizeof(double));	
+  y = (double *) malloc(n * sizeof(double));
 
   /* Allocate memory for fluxes */
   ffx = (double **) malloc(cell_size * sizeof(double *));
@@ -216,7 +216,7 @@ int main(int argc, char **argv) {
   for (i = 1; i < m-1; i++) {
     for (j = 1; j < n-1; j++) {
       Q(0, i, j) = 4.0 + epsi * exp(-(pow(x[i] - xend / 4.0, 2) + pow(y[j] - yend / 4.0, 2)) /
-					  (pow(delta, 2)));
+                                         (pow(delta, 2)));
     }
   }
 
diff --git a/advanced_lab/f90/Makefile b/advanced_lab/f90/Makefile
index f902430..16c5b00 100644
--- a/advanced_lab/f90/Makefile
+++ b/advanced_lab/f90/Makefile
@@ -1,16 +1,11 @@
-FC = ftn
-ifeq ($(CRAY_PRGENVCRAY), loaded)
-FFLAGS = -O2 -openmp
-else ifeq ($(CRAY_PRGENVINTEL), loaded)
-FFLAGS = -O2 -openmp
-else ifeq ($(CRAY_PRGENVGNU), loaded)
-ifeq ($(shell expr $(GCC_VERSION) '<' 5.0), 1)
-$(error Unsupported GCC version, use at least v5.x (module swap gcc gcc/5.1.0))
-endif
+# for GNU compiler
+FC = gfortran
 FFLAGS = -O2 -fopenmp
-else
-FFLAGS = -O2
-endif
+
+# for Intel compiler
+#FC = ifort
+#FFLAGS = -O2 -fopenmp
+
 SRC = vtk_export.f90 shwater2d.f90
 OBJS = ${SRC:.f90=.o}
 DEST = shwater2d
-- 
GitLab