This file is indexed.

/usr/include/Gyoto/GyotoDynamicalDisk3D.h is in libgyoto4-dev 1.0.2-2ubuntu1.

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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/**
 * \file GyotoDynamicalDisk3D.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-2015 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 __GyotoDynamicalDisk3D_H_ 
#define __GyotoDynamicalDisk3D_H_ 

#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstring>

namespace Gyoto{
  namespace Astrobj { class DynamicalDisk3D; }
}

#include <GyotoDisk3D.h>
#include <GyotoBlackBodySpectrum.h>

/**
 * \class Gyoto::Astrobj::DynamicalDisk3D
 * \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::DynamicalDisk3D : public Astrobj::Disk3D {
  friend class Gyoto::SmartPointer<Gyoto::Astrobj::DynamicalDisk3D>;
 protected:
  SmartPointer<Spectrum::BlackBody> spectrumBB_; ///< disk black body
  ///< emission law
 private:
  bool temperature_; ///< 1 if temperature is given in fits data file, 0 if emission coef is directly given
  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
  double PLindex_; ///< power law index such that density_elec(E) &prop; E<SUP>-p</SUP>
  bool novel_; ///< put to true if velocity of emitting particle is not provided
  double floortemperature_; ///< if non-zero, emission and absorption are 0 for temperatures below this floor, emission=blackbody and absorption is infty for temperatures above (this is a kind of fake optically thick case, when the emitting surface is inside the grid, not at the boundary of the grid)

  /**
   * 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 emission coef, or a closely related quantity.
   */
  double ** emission_array_;

  /**
   * 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 absorption coef, or a closely related quantity.
   */
  double ** absorption_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:
  GYOTO_OBJECT;

  DynamicalDisk3D(); ///< Standard constructor
  
  DynamicalDisk3D(const DynamicalDisk3D& ) ;///< Copy constructor
  virtual DynamicalDisk3D* clone () const; ///< Cloner
  
  virtual ~DynamicalDisk3D() ;                        ///< Destructor
  
  // Accessors
  // ---------
 public:
  using Generic::metric;
  void metric(SmartPointer<Metric::Generic> gg);
  void file(std::string const &f);
  std::string file() const;
  void tinit(double t);
  double tinit()const;
  void dt(double t);
  double dt()const;
  void PLindex(double t);
  double PLindex()const;
  void floorTemperature(double t);
  double floorTemperature()const;
  void temperature(bool t);
  bool temperature() const;
  void withVelocity(bool t);
  bool withVelocity() const;

  // Stuff
  // -----
  /// 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]=NULL) 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) ;

};

#endif