Gyoto
GyotoComplexAstrobj.h
Go to the documentation of this file.
1
8/*
9 Copyright 2011, 2013-2014, 2016 Thibaut Paumard
10
11 This file is part of Gyoto.
12
13 Gyoto is free software: you can redistribute it and/or modify
14 it under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 Gyoto is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with Gyoto. If not, see <http://www.gnu.org/licenses/>.
25 */
26
27
28#ifndef __GyotoComplexAstrobj_H_
29#define __GyotoComplexAstrobj_H_
30
31#include <GyotoAstrobj.h>
32
33namespace Gyoto{
34 namespace Astrobj {
35 class Complex;
36 }
37}
38
75
76 // Data :
77 // -----
78 protected:
79
84
88 Gyoto::SmartPointer<Gyoto::Astrobj::Generic> * elements_;
89
93 double step_max_;
94
95 public:
98 Complex(const Complex& ) ;
99 virtual Complex* clone() const;
100
101 virtual double deltaMax(double coord[8]);
102
106 virtual double rMax();
107
111 virtual ~Complex() ;
112
113 // Mutators
114 // --------
115 public:
124 void append(Gyoto::SmartPointer<Gyoto::Astrobj::Generic> element);
126 void remove(size_t i);
130 using Generic::metric;
131 void metric(SmartPointer<Metric::Generic> gg);
133
134 public:
135#ifdef GYOTO_USE_XERCES
136 virtual void fillElement(FactoryMessenger *fmp) const ;
137 virtual void setParameters(FactoryMessenger *fmp);
138#endif
139
140 // Outputs
141 // -------
142 public:
143
160 virtual int Impact(Gyoto::Photon* ph, size_t index,
161 Astrobj::Properties *data=NULL) ;
163
164
175 Gyoto::SmartPointer<Gyoto::Astrobj::Generic>& operator[](size_t i) ;
177 Gyoto::SmartPointer<Gyoto::Astrobj::Generic> const&operator[](size_t i) const;
179
180};
181
182#endif
Astronomical objects (light emitters)
#define size_t
If not defined in <sys/types.h>.
Definition: GyotoConfig.h:390
#define GYOTO_OBJECT_THREAD_SAFETY
Declare virtual bool isThreadSafe() const.
Definition: GyotoObject.h:99
Complex astronomical object.
Definition: GyotoComplexAstrobj.h:73
virtual int Impact(Gyoto::Photon *ph, size_t index, Astrobj::Properties *data=NULL)
Call Impact() for each of the elements.
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
virtual double rMax()
virtual void setParameters(FactoryMessenger *fmp)
Main loop in Subcontractor_t function.
virtual void fillElement(FactoryMessenger *fmp) const
Fill the XML element for this Object.
void append(Gyoto::SmartPointer< Gyoto::Astrobj::Generic > element)
Add element at the end of the array.
void remove(size_t i)
Remove i-th element from the array.
size_t cardinal_
Number of objects.
Definition: GyotoComplexAstrobj.h:83
double step_max_
Maximum δ step inside the Astrobj.
Definition: GyotoComplexAstrobj.h:93
virtual double deltaMax(double coord[8])
Get max step constraint for adaptive integration.
virtual Complex * clone() const
"Virtual" copy constructor
Gyoto::SmartPointer< Gyoto::Astrobj::Generic > * elements_
Array of Astrobj::Generic.
Definition: GyotoComplexAstrobj.h:88
size_t getCardinal() const
Get the number of elements in the array.
Base class for astronomical object.
Definition: GyotoAstrobj.h:199
virtual SmartPointer< Metric::Generic > metric() const
Get the Metric gg_.
Pointers performing reference counting.
Definition: GyotoSmartPointer.h:135
Namespace for the Gyoto library.
Definition: GyotoAstrobj.h:43