/usr/include/Gyoto/GyotoDisk3D_BB.h is in libgyoto1-dev 0.1.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | /**
* \file GyotoDisk3D_BB.h
* \brief A geometrically thick, optically thin disk, evolving dynamically,
* with black body emission.
*
* The disk is described by a set of FITS files for a set of different times
*/
/*
Copyright 2011 Frederic Vincent, Thibaut Paumard
This file is part of Gyoto.
Gyoto is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gyoto is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __GyotoDisk3D_BB_H_
#define __GyotoDisk3D_BB_H_
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstring>
namespace Gyoto{
namespace Astrobj { class Disk3D_BB; }
}
#include <GyotoDisk3D.h>
#include <GyotoBlackBodySpectrum.h>
/**
* \class Gyoto::Astrobj::Disk3D_BB
* \brief Geometrically thick optically thin disk
* read from a set of FITS files.
*
* This class describes a PatternDiskBB that evolves dynamically.
* It is described by a set of FITS files for different times.
* Its emission is blackbody.
*
* The disk is assumed to be described by a regular,
* constant in time, grid.
*
* The metric must be Kerr in BL coordinates.
*
*/
class Gyoto::Astrobj::Disk3D_BB : public Astrobj::Disk3D {
friend class Gyoto::SmartPointer<Gyoto::Astrobj::Disk3D_BB>;
protected:
SmartPointer<Spectrum::BlackBody> spectrumBB_; ///< disk black body
///< emission law
private:
char* dirname_; ///< FITS files directory
double tinit_; ///< Time of the first FITS file
double dt_; ///< Time increment between two FITS (assumed constant)
int nb_times_; ///< Number of times
/**
* An array of arrays of dimensionality double[nr_][nz_][nphi_][nnu_].
* In FITS format, the first dimension is nu, the second phi, the third
* z, the last r. It contains temperature.
*/
double ** temperature_array_;
/**
* An array of arrays of dimensionality double[nr_][nz_][nphi_][3].
* In FITS format, the second dimension is phi, and the third r.
* The first plane in the first FITS dimention is dphi/dt,
* the second dz/dt, the third dr/dt.
*/
double ** velocity_array_; ///< velocity(r, z, phi)
// Constructors - Destructor
// -------------------------
public:
Disk3D_BB(); ///< Standard constructor
Disk3D_BB(const Disk3D_BB& ) ;///< Copy constructor
virtual Disk3D_BB* clone () const; ///< Cloner
virtual ~Disk3D_BB() ; ///< Destructor
// Accessors
// ---------
public:
void setMetric(SmartPointer<Metric::Generic> gg);
virtual int setParameter(std::string name,
std::string content,
std::string unit);
/// Compute emission at one grid date.
double emission1date(double nu_em, double dsem,
double c_ph[8], double c_obj[8]) const;
using Disk3D::emission;
/// Interpolate emission between grid dates.
virtual double emission(double nu_em, double dsem,
double c_ph[8], double c_obj[8]) const;
/// Compute transmission at one grid date.
double transmission1date(double nu_em, double dsem,
double c_ph[8], double c_obj[8]) const;
/// Interpolate transmission between grid dates.
double transmission(double nu_em, double dsem,
double c_obj[8]) const;
void getVelocity(double const pos[4], double vel[4]);
double const * getVelocity() const;
protected:
/// Set underlying Disk3D pointers to a specific date slice.
/**
* \param iq Index of the date slice.
*/
void copyQuantities(int iq) ;
public:
#ifdef GYOTO_USE_XERCES
virtual void fillElement(FactoryMessenger *fmp) const ;
#endif
};
#endif
|