From c2bd22038ad07585d16d91031016e6e5de7048ea Mon Sep 17 00:00:00 2001
From: Cristian <cw14@inf.ufpr.br>
Date: Sun, 15 Nov 2015 14:33:21 -0200
Subject: [PATCH] Working

Signed-off-by: Cristian <cw14@inf.ufpr.br>
---
 header.h    |  1 -
 pdeSolver.c | 60 ++++++++++++++++++++++++++++++++++-------------------
 2 files changed, 39 insertions(+), 22 deletions(-)

diff --git a/header.h b/header.h
index 315fb84..1434831 100644
--- a/header.h
+++ b/header.h
@@ -10,7 +10,6 @@
 int Nx, Ny, MaxI;
 double Hx, Hy, W;
 double UDivisor;
-double Pipi = M_PI * M_PI; // Pipi = Pi * Pi
 
 double timestamp(void);
 void getParams(int argc, char* argv[]);
diff --git a/pdeSolver.c b/pdeSolver.c
index cc6f4b1..01be0cf 100644
--- a/pdeSolver.c
+++ b/pdeSolver.c
@@ -1,11 +1,13 @@
 #include "header.h"
 
-/* Final version of simplified equation:
+/*
+Final version of simplified equation:
 u(i,j) = f(x,y) + (u(i+1,j) + u(i-1,j))/Δx² + (u(i,j+1) + u(i,j-1))/Δy² + (-u(i+1,j)+u(i-1,j))/2Δx + (-u(i,j+1)+u(i,j-1))/2Δy
          --------------------------------------------------------------------------------------------------------------------
                                                           2/Δx² + 2/Δy² + 4π²
 Residue:
-f(x,y) = (2/Δx² + 2/Δy² + 4π²) * u(i,j) - ((u(i+1,j) + u(i-1,j))/Δx² + (u(i,j+1) + u(i,j-1))/Δy² + (-u(i+1,j)+u(i-1,j))/2Δx + (-u(i,j+1)+u(i,j-1))/2Δy)
+f(x,y) =
+(2/Δx² + 2/Δy² + 4π²)*u(i,j) - ( (u(i+1,j)+u(i-1,j))/Δx² + (u(i,j+1)+u(i,j-1))/Δy² + (-u(i+1,j)+u(i-1,j))/2Δx + (-u(i,j+1)+u(i,j-1))/2Δy )
 */
 
 double timestamp(void) {
@@ -44,10 +46,6 @@ double f(int n) {
 	return (4 * M_PI * M_PI * ( (sin(2 * M_PI * x)) * (sinh(M_PI * y)) + (sin(2 * M_PI * (M_PI - x))) * (sinh(M_PI * (M_PI - y))) ));
 }
 
-inline int in(int i, int j) { // Calculate vector index, like its a matrix.
-	return i*Ny + j;
-}
-
 double calcU(int n, double *u) {
 /*
 u(i,j) = f(x,y) + (u(i+1,j) + u(i-1,j))/Δx² + (u(i,j+1) + u(i,j-1))/Δy² + (-u(i+1,j)+u(i-1,j))/2Δx + (-u(i,j+1)+u(i,j-1))/2Δy
@@ -112,9 +110,9 @@ int main(int argc, char *argv[]) {
 	timeResNorm = calloc(1,sizeof(double));
 	fpExit = fopen("solution.dat","w");
 
-	sigma = sinh(Pipi);
+	sigma = sinh(M_PI * M_PI);
 
-	for(i = Nx; i < Nx*(Ny-1); ++i) {
+	for(i = Nx; i < Nx*Ny - Nx; ++i) { // Initialize central points (with left and right borders) as 0.
 		x[i] = 0.0f;
 	}
 
@@ -130,29 +128,49 @@ int main(int argc, char *argv[]) {
 		fprintf(fpExit,"# i=%d: %lf\n",i,r[i]);
 	}
 	fprintf(fpExit,"###########\n");
-	//FILE *expected = fopen("expected.txt","w");
-
+	FILE *expected = fopen("expected.txt","w");
+/*
 	for(i = 0; i < Nx; ++i) { // Print bottom border.
+		printf("1- Salvando no indice %d %d, ponto %f %f\n",i,0,i*Hx,0.0f);
 		fprintf(fpExit, "%lf %lf %lf\n", i*Hx, 0.0f, x[i]);
-		//fprintf(expected, "%lf %lf %lf\n", i*Hx, 0.0f, f(i));
-	}
+		fprintf(expected, "%lf %lf %lf\n", i*Hx, 0.0f, f(i));
+	}*/
 	for(i = 1; i < Ny - 1; ++i) { // Since im using subsRow, I cant start at position 0.
+		/*printf("2- Salvando no indice %d %d, ponto %f %f\n",0,i,0.0f,i*Hy);
 		fprintf(fpExit,"%lf %lf %lf\n", 0.0f, i*Hy, x[i*Nx]); // Left border.
-		//fprintf(expected,"%lf %lf %lf\n", 0.0f, i*Hy, f(i*Nx)); // Left border.
+		fprintf(expected,"%lf %lf %lf\n", 0.0f, i*Hy, f(i*Nx)); // Left border.*/
 		for(j = 1; j < Nx - 1; ++j) {
-			fprintf(fpExit,"%lf %lf %lf\n",j*Hx,i*Hy,subsRow(i*Nx+j, x));
-			//fprintf(fpExit,"%lf %lf %lf\n",j*Hx,i*Hy,f(i*Nx+j));
+			//printf("3- Salvando no indice %d %d, ponto %f %f\n",j,i,j*Hx,i*Hy);
+			fprintf(fpExit,"%.15lf %.15lf %.15lf\n",j*Hx,i*Hy,subsRow(i*Nx+j, x));
+			fprintf(fpExit,"%.15lf %.15lf %.15lf\n",j*Hx,i*Hy,f(i*Nx+j));
 		}
+		/*printf("4- Salvando no indice %d %d, ponto %f %f\n",Ny,i,M_PI,i*Hy);
 		fprintf(fpExit,"%lf %lf %lf\n", M_PI, i*Hy, x[i*Nx+Nx-1]); // Right border.
-		//fprintf(expected,"%lf %lf %lf\n", M_PI, i*Hy, f(i*Nx+Nx-1)); // Right border.
-	}
+		fprintf(expected,"%lf %lf %lf\n", M_PI, i*Hy, f(i*Nx+Nx-1)); // Right border.*/
+	}/*
 	for(i = 0; i < Nx; ++i) { // Print top border. We should check it.
+		printf("5- Salvando no indice %d %d, ponto %f %f\n",i,Ny,i*Hx,M_PI);
 		fprintf(fpExit, "%lf %lf %lf\n", i*Hx, M_PI, x[Nx*Ny - Nx + i]); // Top border.
-		//fprintf(expected, "%lf %lf %lf\n", i*Hx, M_PI, f(Nx*Ny - Nx + i)); // Top border.
-	}
+		fprintf(expected, "%lf %lf %lf\n", i*Hx, M_PI, f(Nx*Ny - Nx + i)); // Top border.
+	}*/
 
 	fclose(fpExit);
-	//fclose(expected);
+	fclose(expected);
 
 	return 0;
-}
\ No newline at end of file
+}
+
+/*
+
+6 A30 A31 A32 A33 A34
+5 A25 A26 A27 A28 A29
+4 A20 A21 A22 A23 A24
+3 A15 A16 A17 A18 A19
+2 A10 A11 A12 A13 A14
+1  A5  A6  A7  A8  A9
+0  A0  A1  A2  A3  A4
+    0   1   2   3   4
+
+Nx = 5
+Ny = 7
+*/
\ No newline at end of file
-- 
GitLab