#include <iostream>
#include <vector>
// Constants
const double INITIAL_TEMPERATURE = 20.0; // Initial temperature in degrees Celsius
const double WELDING_TEMPERATURE = 1500.0; // Temperature during welding in degrees Celsius
const double COOLING_RATE = 0.05; // Cooling rate per second
const double WELDING_DURATION = 5.0; // Duration of welding in seconds
const double TIME_STEP = 0.1; // Time step for the simulation in seconds
// Function to simulate the welding process
std::vector<double> simulateWelding(double weldingTemperature, double weldingDuration, double coolingRate, double timeStep) {
std::vector<double> temperatures;
double currentTemperature = INITIAL_TEMPERATURE;
double timeElapsed = 0.0;
// Heating phase
while (timeElapsed < weldingDuration) {
currentTemperature = weldingTemperature;
temperatures.push_back(currentTemperature);
timeElapsed += timeStep;
}
// Cooling phase
while (currentTemperature > INITIAL_TEMPERATURE) {
currentTemperature -= coolingRate * timeStep;
if (currentTemperature < INITIAL_TEMPERATURE) {
currentTemperature = INITIAL_TEMPERATURE;
}
temperatures.push_back(currentTemperature);
}
return temperatures;
}
int main() {
std::vector<double> temperatures = simulateWelding(WELDING_TEMPERATURE, WELDING_DURATION, COOLING_RATE, TIME_STEP);
std::cout << "Time (s) Temperature (°C)\n";
double timeElapsed = 0.0;
for (double temp : temperatures) {
std::cout << timeElapsed << " " << temp << "\n";
timeElapsed += TIME_STEP;
}
return 0;
}