diff --git a/Homework3/src/compute_temperature.cc b/Homework3/src/compute_temperature.cc index e2b72db..0b9aeed 100644 --- a/Homework3/src/compute_temperature.cc +++ b/Homework3/src/compute_temperature.cc @@ -1,66 +1,66 @@ #include "compute_temperature.hh" #include "fft.hh" #include "material_point.hh" #include ComputeTemperature::ComputeTemperature(Real dt) : dt(dt) {} /* -------------------------------------------------------------------------- */ void ComputeTemperature::setDeltaT(Real dt) { this->dt = dt; } /* -------------------------------------------------------------------------- */ void ComputeTemperature::compute(System& system) { UInt Nb = system.getNbParticles(); UInt dim = UInt(sqrt(Nb)); Matrix theta(dim); Matrix h_v(dim); Matrix theta_fourier(dim); Matrix h_v_fourier(dim); Matrix> wave_nb(dim); Matrix dthetadt(dim); // Initialize matrices for (auto&& par : index(theta)){ int i = std::get<0>(par); int j = std::get<1>(par); //UInt id = i + j*dim; UInt id = i*dim + j; auto& ic = dynamic_cast(system.getParticle(id)); theta(i,j) = complex(ic.getTemperature(),0); h_v(i,j) = complex(ic.getHeatRate() ,0); } theta_fourier = FFT::transform(theta); h_v_fourier = FFT::transform(h_v); wave_nb = FFT::computeFrequencies(dim); Real factor = pow(2.0*M_PI/L,2); for(int j=0; j(par); int j = std::get<1>(par); //UInt id = i + j*dim; UInt id = i*dim + j; auto& value = std::get<2>(par); dynamic_cast(system.getParticle(id)).getTemperature() += value.real()*this->dt; } } /* -------------------------------------------------------------------------- */