void PanDustSystem::setupSelfAfter() { DustSystem::setupSelfAfter(); PeerToPeerCommunicator* comm = find<PeerToPeerCommunicator>(); bool dataParallel = comm->dataParallel(); if (dataParallel) // assign this process to work with a subset of dust cells _assigner = new StaggeredAssigner(_Ncells, this); WavelengthGrid* wg = find<WavelengthGrid>(); // resize the tables that hold the absorbed energies for each dust cell and wavelength // - absorbed stellar emission is relevant for calculating dust emission // - absorbed dust emission is relevant for calculating dust self-absorption _haveLabsStel = false; _haveLabsDust = false; if (dustemission()) { if (dataParallel) _LabsStelvv.initialize("Absorbed Stellar Luminosity Table", ParallelTable::WriteState::COLUMN, wg->assigner(), _assigner, comm); else _LabsStelvv.initialize("Absorbed Stellar Luminosity Table", ParallelTable::WriteState::COLUMN, _Nlambda, _Ncells, comm); _haveLabsStel = true; if (selfAbsorption()) { if (dataParallel) _LabsDustvv.initialize("Absorbed Dust Luminosity Table", ParallelTable::WriteState::COLUMN, wg->assigner(), _assigner, comm); else _LabsDustvv.initialize("Absorbed Dust Luminosity Table", ParallelTable::WriteState::COLUMN, _Nlambda, _Ncells, comm); _haveLabsDust = true; } } // write emissivities if so requested if (writeEmissivity()) { // write emissivities for a range of scaled Mathis ISRF input fields Array Jv = ISRF::mathis(this); for (int i=-4; i<7; i++) { double U = pow(10.,i); writeEmissivitiesForField(this, U*Jv, "Mathis_U_" + QString::number(U,'e',0), QString::number(U) + " * Mathis ISRF"); } // write emissivities for a range of diluted Black Body input fields const int Tv[] = { 3000, 6000, 9000, 12000, 15000, 18000 }; const double Dv[] = { 8.28e-12, 2.23e-13, 2.99e-14, 7.23e-15, 2.36e-15, 9.42e-16 }; for (int i=0; i<6; i++) { Jv = Dv[i] * ISRF::blackbody(this, Tv[i]); writeEmissivitiesForField(this, Jv, QString("BlackBody_T_%1").arg(Tv[i], 5, 10, QChar('0')), QString("%1 * B(%2K)").arg(Dv[i],0,'e',2).arg(Tv[i]) ); } find<Log>()->info("Done writing emissivities."); } }