edited comments

This commit is contained in:
mejjete 2024-03-13 11:06:11 +01:00
parent 6a4ded9ca7
commit 86a23af45e

View file

@ -8,21 +8,34 @@ using namespace std;
int main() int main()
{ {
int l = 1925; // Edge length int l = 1925; // Edge length
int dx = 40; // Spatial step int dx = 5; // Spatial step
int dt = 100000; // Euler's step
int kmax = l / dx; // Number of spatial steps int kmax = l / dx; // Number of spatial steps
// Parameters /**
double alpha = 0.093; * Coefficients alpha and gamma are different for different
* edges. It depends on the edge's lenght, cross-sectional area etc.
*/
double alpha = 0.744;
double beta = 0.004; double beta = 0.004;
double gamma = 728.6; double gamma = 5829;
/**
* dt - the number of approximation in Euler method
* h - discretization step in Euler method
*
* Those two values work well with all existing steps and give us
* result that satisfies the initial condition pretty close.
*
* Changing of any of them might result in NaN error.
*/
int dt = 100000;
double h = 0.007; double h = 0.007;
// Arrays to store data // Stores the approximated values for each step
double Q[kmax][dt]; double Q[kmax][dt];
double P[kmax][dt]; double P[kmax][dt];
// Loop over time steps // Prepare initial condition
for (int i = 0; i < dt; i++) for (int i = 0; i < dt; i++)
{ {
// Loop over spatial steps // Loop over spatial steps
@ -41,7 +54,11 @@ int main()
} }
} }
// Main calculation loop /**
* In fact, we have two 'steps'. The first step represents the approximation
* criteria in Euler's method (dt) and the second one represents the actual
* spatial step along the edge (dx).
*/
for (int i = 2; i < dt; i++) for (int i = 2; i < dt; i++)
{ {
// Loop over spatial steps // Loop over spatial steps
@ -55,7 +72,7 @@ int main()
} }
} }
// Print out the first 10 of Q for each spatial step // Print out the first 10 values of Q for each spatial step
std::cout << "FIRST 10 VALUES\n"; std::cout << "FIRST 10 VALUES\n";
for(int i = 0; i < kmax; i++) for(int i = 0; i < kmax; i++)
{ {
@ -68,7 +85,7 @@ int main()
std::cout << std::endl; std::cout << std::endl;
} }
// Print out the first 10 of Q for each spatial step // Print out the last 10 values of Q for each spatial step
std::cout << "LAST 10 VALUES:\n"; std::cout << "LAST 10 VALUES:\n";
for(int i = 1; i < kmax; i++) for(int i = 1; i < kmax; i++)
{ {
@ -81,6 +98,5 @@ int main()
std::cout << std::endl; std::cout << std::endl;
} }
return 0; return 0;
} }