[Debian-astro-commits] [gyoto] 134/221: Start converting Scenery to Object/Property

Thibaut Jean-Claude Paumard thibaut at moszumanska.debian.org
Fri May 22 20:52:40 UTC 2015


This is an automated email from the git hooks/post-receive script.

thibaut pushed a commit to branch master
in repository gyoto.

commit 59c4103f87cb6e920b90ada84fa4047c9f1b8a9b
Author: Thibaut Paumard <paumard at users.sourceforge.net>
Date:   Mon Dec 8 10:28:18 2014 +0100

    Start converting Scenery to Object/Property
---
 include/GyotoScenery.h |  6 ++++++
 lib/Scenery.C          | 45 +++++++++++++++++++--------------------------
 2 files changed, 25 insertions(+), 26 deletions(-)

diff --git a/include/GyotoScenery.h b/include/GyotoScenery.h
index 4f6b4ac..f6385ab 100644
--- a/include/GyotoScenery.h
+++ b/include/GyotoScenery.h
@@ -255,6 +255,8 @@ class Gyoto::Scenery
   // Constructors - Destructor
   // -------------------------
  public:
+  GYOTO_OBJECT;
+  GYOTO_WORLDLINE;
   Scenery(); ///< Set everything to defaults
   Scenery (const Scenery& o); ///< Copy constructor
   Scenery * clone() const; ///< Cloner
@@ -298,6 +300,10 @@ class Gyoto::Scenery
   void delta(double); ///< set default step in geometrical units
   void delta(double, const std::string &unit);   ///< set default step in specified units
 
+  void initCoord(std::vector<double> c);
+  std::vector<double> initCoord() const;
+
+
   /// Set Scenery::quantities_
   /**
    * \param quant Bitwise OR of desired quantities, e.g. \code GYOTO_QUANTITY_SPECTRUM | GYOTO_QUANTITY_MIN_DISTANCE \endcode
diff --git a/lib/Scenery.C b/lib/Scenery.C
index b7d6cb9..2e4a84f 100644
--- a/lib/Scenery.C
+++ b/lib/Scenery.C
@@ -49,6 +49,14 @@ namespace mpi = boost::mpi;
 using namespace Gyoto;
 using namespace std;
 
+/// Properties
+
+#include "GyotoProperty.h"
+GYOTO_PROPERTY_START(Scenery)
+GYOTO_WORLDLINE_PROPERTY_END(Scenery, Object::properties)
+
+///
+
 Scenery::Scenery() :
   screen_(NULL), delta_(GYOTO_DEFAULT_DELTA),
   quantities_(0), ph_(), nthreads_(0), nprocesses_(0)
@@ -125,6 +133,9 @@ void Scenery::delta(double d, const string &unit) {
   delta(Units::ToGeometrical(d, unit, metric()));
 }
 
+void Scenery::initCoord(std::vector<double> c) { ph_ . initCoord(c); }
+std::vector<double> Scenery::initCoord() const { return ph_.initCoord();}
+
 void  Scenery::nThreads(size_t n) { nthreads_ = n; }
 size_t Scenery::nThreads() const { return nthreads_; }
 
@@ -824,25 +835,17 @@ size_t Scenery::maxiter() const { return ph_.maxiter(); }
 #ifdef GYOTO_USE_XERCES
 void Scenery::fillElement(FactoryMessenger *fmp) {
   if (metric())     fmp -> metric (metric()) ;
-  if (screen_) fmp -> screen (screen_) ;
+  if (screen_)      fmp -> screen (screen_) ;
   if (astrobj())    fmp -> astrobj (astrobj()) ;
 
-  fmp -> setParameter("Integrator", ph_.integrator());
-  fmp -> setParameter("DeltaMin", ph_.deltaMin());
-  fmp -> setParameter("DeltaMax", ph_.deltaMax());
-  fmp -> setParameter("DeltaMaxOverR", ph_.deltaMaxOverR());
-  fmp -> setParameter("AbsTol", ph_.absTol());
-  fmp -> setParameter("RelTol", ph_.relTol());
-  fmp -> setParameter ("Delta", delta_);
-  fmp -> setParameter (adaptive()?"Adaptive":"NonAdaptive");
-  fmp -> setParameter("MaxIter", maxiter());
-
   if (getRequestedQuantities())
     fmp -> setParameter("Quantities", getRequestedQuantitiesString());
 
   fmp -> setParameter("MinimumTime", tMin());
   fmp -> setParameter("NThreads", nthreads_);
   fmp -> setParameter("NProcesses", nprocesses_);
+
+  Object::fillElement(fmp);
 }
 
 SmartPointer<Scenery> Gyoto::Scenery::Subcontractor(FactoryMessenger* fmp) {
@@ -863,22 +866,12 @@ SmartPointer<Scenery> Gyoto::Scenery::Subcontractor(FactoryMessenger* fmp) {
 
   while (fmp->getNextParameter(&name, &content, &unit)) {
     char* tc = const_cast<char*>(content.c_str());
-    if (name=="Delta")       sc -> delta(atof(tc), unit);;
     if (name=="Quantities")  sc -> setRequestedQuantities(tc);
-    if (name=="MinimumTime") sc -> tMin(atof(tc), unit);
-    if (name=="NThreads")    sc -> nThreads(atoi(tc));
-    if (name=="MaxIter")     sc -> maxiter(atoi(tc));
-    if (name=="Adaptive")    sc -> adaptive(true);
-    if (name=="NonAdaptive") sc -> adaptive(false);
-    if (name=="PrimaryOnly") sc -> secondary(false);
-    if (name=="Integrator")  sc -> ph_ . integrator(content); 
-    if (name=="DeltaMin")    sc -> ph_ . deltaMin(atof(content.c_str()));
-    if (name=="DeltaMax")    sc -> ph_ . deltaMax(atof(content.c_str()));
-    if (name=="DeltaMaxOverR") sc -> ph_ . deltaMaxOverR (atof(content.c_str()));
-    if (name=="AbsTol")    sc -> ph_ . absTol(atof(content.c_str()));
-    if (name=="RelTol")    sc -> ph_ . relTol(atof(content.c_str()));
-    if (name=="NProcesses")  sc -> nProcesses(atoi(content.c_str()));
-
+    else if (name=="MinimumTime") sc -> tMin(atof(tc), unit);
+    else if (name=="NThreads")    sc -> nThreads(atoi(tc));
+    else if (name=="NProcesses")  sc -> nProcesses(atoi(content.c_str()));
+    else if (name=="Metric" || name=="Screen" || name=="Astrobj") ;
+    else sc -> setParameter(name, content, unit);
   }
   return sc;
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-astro/packages/gyoto.git



More information about the Debian-astro-commits mailing list