From ef01e3f4730e569034beb194765c0138879e2c06 Mon Sep 17 00:00:00 2001 From: philippun Date: Thu, 20 Jul 2023 16:09:59 +0200 Subject: [PATCH] added functions for the summands of the different directions --- src/FTCS.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/src/FTCS.cpp b/src/FTCS.cpp index 6db41de..815a665 100644 --- a/src/FTCS.cpp +++ b/src/FTCS.cpp @@ -12,6 +12,59 @@ double calc_alpha_intercell(double alpha1, double alpha2, bool useHarmonic = fal } } +// IN PROGRESS +double verticalChange(Grid grid, int row, int col) { + + double result = + calc_alpha_intercell(grid.getAlphaY()(row+1,col), grid.getAlphaY()(row,col)) + * grid.getConcentrations()(row+1,col) + - (calc_alpha_intercell(grid.getAlphaY()(row+1,col), grid.getAlphaY()(row,col)) + + calc_alpha_intercell(grid.getAlphaY()(row-1,col), grid.getAlphaY()(row,col))) + * grid.getConcentrations()(row,col) + + calc_alpha_intercell(grid.getAlphaY()(row-1,col), grid.getAlphaY()(row,col)) + * grid.getConcentrations()(row-1,col); + + return result; +} + +// IN PROGRESS +double horizontalChange(Grid grid, int row, int col) { + + double result = + calc_alpha_intercell(grid.getAlphaX()(row,col+1), grid.getAlphaX()(row,col)) + * grid.getConcentrations()(row,col+1) + - (calc_alpha_intercell(grid.getAlphaX()(row,col+1), grid.getAlphaX()(row,col)) + + calc_alpha_intercell(grid.getAlphaX()(row,col-1), grid.getAlphaX()(row,col))) + * grid.getConcentrations()(row,col) + + calc_alpha_intercell(grid.getAlphaX()(row,col-1), grid.getAlphaX()(row,col)) + * grid.getConcentrations()(row,col-1); + + return result; +} + +// IN PROGRESS +MatrixXd FTCS_1D_constant(Grid grid, Boundary bc, double timestep) { + int colMax = grid.getCol(); + double deltaCol = grid.getDeltaCol(); + + MatrixXd concentrations_t1 = MatrixXd::Constant(1, colMax, 0); + + int row = 0; + // for (int col = 1; col < colMax-1; col++) { + // concentrations_t1 = grid.getConcentrations()(row,col) + // + horizontal_term(); + // } +} + +// IN PROGRESS +MatrixXd FTCS_2D_constant(Grid grid, Boundary bc, double timestep) { + int rowMax = grid.getRow(); + int colMax = grid.getCol(); + double deltaRow = grid.getDeltaRow(); + double deltaCol = grid.getDeltaCol(); + +} + MatrixXd FTCS_constant(Grid grid, Boundary bc, double timestep) { int rowMax = grid.getRow(); int colMax = grid.getCol(); @@ -20,7 +73,7 @@ MatrixXd FTCS_constant(Grid grid, Boundary bc, double timestep) { // Matrix with concentrations at time t+1 // TODO profiler / only use 2 matrices - MatrixXd concentrations_t1 = MatrixXd::Constant(rowMax, colMax, 1); + MatrixXd concentrations_t1 = MatrixXd::Constant(rowMax, colMax, 0); // inner cells // (should have 7 calls to current concentration)