diff --git a/Homework3/src/compute_temperature.cc b/Homework3/src/compute_temperature.cc index 91ccae5..b7a5fae 100644 --- a/Homework3/src/compute_temperature.cc +++ b/Homework3/src/compute_temperature.cc @@ -1,65 +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) = ic.getTemperature(); h_v(i,j) = ic.getHeatRate(); } theta_fourier = FFT::transform(theta); h_v_fourier = FFT::transform(h_v); wave_nb = FFT::computeFrequencies(dim); Real factor = 4.0*M_PI*M_PI/(L*L); for(int j=0; j(par); int j = std::get<1>(par); UInt id = i + j*dim; auto& value = std::get<2>(par); dynamic_cast(system.getParticle(id)).getTemperature() += value.real()*this->dt; } } /* -------------------------------------------------------------------------- */