tweaked parameters to be more realistic -> coffee cup cools down early (as expected)

This commit is contained in:
jakob.schratter 2026-01-28 11:36:32 +01:00
commit 5ae5e5ed03
5 changed files with 10742 additions and 10731 deletions

View file

@ -32,7 +32,7 @@ int main(int argc, char **argv )
// ##########################################
double dt = 1.0; // time step
int steps = 100; // number of time iterations
int max_it = 600; // number of max iterations
double u0_mug = 18.0;
double u0_fluid = 80.0;
@ -88,9 +88,11 @@ int main(int argc, char **argv )
double goal_temp = 67.0;
double goal_perc = 60.0;
double prev_temp = u0_mug;
double time_count = 0;
//while (average_cup_temperature < goal_temp)
while (percentage_temp_reached < goal_perc)
while (average_cup_temperature < goal_temp && prev_temp <= average_cup_temperature)
//while (percentage_temp_reached < goal_perc)
//for (int step = 0; step < steps; ++step)
{
vector<double> G(Mdt.Nrows(), 0.0);
@ -105,6 +107,8 @@ int main(int argc, char **argv )
JacobiSolve(SK, H, uv); // solve: (M/dt + K + C) * u_{n+1} = F + M/dt * u_{n}
// ----- SK ----- ------ H -------
prev_temp = average_cup_temperature;
average_cup_temperature = mesh_c.AverageVectorFunction_perSubdomain(uv, 0);
percentage_temp_reached = mesh_c.CheckTemp_mult(uv, 0, goal_temp);
cout << "Average cup temperature: " << average_cup_temperature << " after " << time_count << " seconds. " << endl;
@ -143,8 +147,9 @@ int main(int argc, char **argv )
percentage_temp_reached = mesh_c.CheckTemp_mult(uv, 1, goal_temp);
time_count = 0;
//while (average_coffee_temperature > goal_temp)
while (percentage_temp_reached > goal_perc)
int step = 0;
while (average_coffee_temperature > goal_temp && step < max_it)
//while (percentage_temp_reached > goal_perc)
{
vector<double> G(Mdt.Nrows(), 0.0);
Mdt.Mult(G, uv); // G = M/dt * u_{n}
@ -163,6 +168,7 @@ int main(int argc, char **argv )
cout << "Average coffee temperature: " << average_coffee_temperature << " after " << time_count << " seconds. " << endl;
cout << "% of elements above temperature " << goal_temp << "ºC: " << percentage_temp_reached << endl;
time_count += dt;
++step;
}
t4 = system_clock::now(); // stop timer