From 814bcc0193a30abc231d90850ae1bfb8f3f587af Mon Sep 17 00:00:00 2001
From: Tom Theuns <tom.theuns@durham.ac.uk>
Date: Thu, 7 Apr 2016 15:48:30 +0100
Subject: [PATCH] point mass potential parameters are read from a parameter
 file

---
 examples/ExternalGravity/externalGravity.yml | 10 +++++++-
 examples/ExternalGravity/makeIC.py           |  4 ++++
 examples/main.c                              |  2 +-
 src/potentials.c                             | 24 ++++++++++++--------
 src/potentials.h                             |  3 ++-
 src/runner.c                                 |  3 ++-
 6 files changed, 33 insertions(+), 13 deletions(-)

diff --git a/examples/ExternalGravity/externalGravity.yml b/examples/ExternalGravity/externalGravity.yml
index 857bba0068..959d7c1c28 100644
--- a/examples/ExternalGravity/externalGravity.yml
+++ b/examples/ExternalGravity/externalGravity.yml
@@ -1,7 +1,7 @@
 
 # Define the system of units to use internally. 
 UnitSystem:
-  UnitMass_in_cgs:     1.898e33      # Grams
+  UnitMass_in_cgs:     1.989e33      # Grams
   UnitLength_in_cgs:   3.0856776e21  # Centimeters
   UnitVelocity_in_cgs: 1e5           # Centimeters per second
   UnitCurrent_in_cgs:  1   # Amperes
@@ -46,3 +46,11 @@ DomainDecomposition:
   initial_grid_z:    10
   repartition_type:   b     # The re-decomposition strategy ("n", "b", "v", "e" or "x"). See documentation for details.
  
+
+# External potential parameters
+PointMass:
+	position_x:      50.     # location of external point mass in internal units
+	position_y:      50.
+	position_z:      50.	
+	mass:            1e10     # mass of external point mass in internal units
+
diff --git a/examples/ExternalGravity/makeIC.py b/examples/ExternalGravity/makeIC.py
index 1bb4c69b75..e82d970eba 100644
--- a/examples/ExternalGravity/makeIC.py
+++ b/examples/ExternalGravity/makeIC.py
@@ -38,6 +38,10 @@ const_unit_length_in_cgs   =   (1000*PARSEC_IN_CGS)
 const_unit_mass_in_cgs     =   (SOLAR_MASS_IN_CGS)
 const_unit_velocity_in_cgs =   (1e5)
 
+print "UnitMass_in_cgs:     ", const_unit_mass_in_cgs 
+print "UnitLength_in_cgs:   ", const_unit_length_in_cgs
+print "UnitVelocity_in_cgs: ", const_unit_velocity_in_cgs
+
 # derived units
 const_unit_time_in_cgs = (const_unit_length_in_cgs / const_unit_velocity_in_cgs)
 const_G                = ((NEWTON_GRAVITY_CGS*const_unit_mass_in_cgs*const_unit_time_in_cgs*const_unit_time_in_cgs/(const_unit_length_in_cgs*const_unit_length_in_cgs*const_unit_length_in_cgs)))
diff --git a/examples/main.c b/examples/main.c
index 3e4101c2d1..4631a09aa1 100644
--- a/examples/main.c
+++ b/examples/main.c
@@ -264,7 +264,7 @@ int main(int argc, char *argv[]) {
   struct external_potential potential;
   units_init(&us, params);
   initPhysicalConstants(&us, &prog_const);
-  initPotentialProperties(&us, &potential);
+  initPotentialProperties(params, &us, &potential);
   if (myrank == 0) {
     message("Unit system: U_M = %e g.", us.UnitMass_in_cgs);
     message("Unit system: U_L = %e cm.", us.UnitLength_in_cgs);
diff --git a/src/potentials.c b/src/potentials.c
index 856bdac3dc..772289e7b5 100644
--- a/src/potentials.c
+++ b/src/potentials.c
@@ -31,17 +31,23 @@
  * @param us The current internal system of units
  * @param potential The external potential properties to initialize
  */
-void initPotentialProperties(struct UnitSystem* us,
+void initPotentialProperties(const struct swift_params * parameter_file,
+									  struct UnitSystem* us,
                              struct external_potential* potential) {
   message(" %e\t %e", PARSEC_IN_CGS, units_conversion_factor(us, UNIT_CONV_LENGTH));
 
+
+  potential->point_mass.x    = parser_get_param_double(parameter_file, "PointMass:position_x");
+  potential->point_mass.y    = parser_get_param_double(parameter_file, "PointMass:position_y");
+  potential->point_mass.z    = parser_get_param_double(parameter_file, "PointMass:position_z");
+  potential->point_mass.mass = parser_get_param_double(parameter_file, "PointMass:mass");
 			 
-  potential->point_mass.x =
-      50000 * PARSEC_IN_CGS / units_conversion_factor(us, UNIT_CONV_LENGTH);
-  potential->point_mass.y =
-      50000 * PARSEC_IN_CGS / units_conversion_factor(us, UNIT_CONV_LENGTH);
-  potential->point_mass.z =
-      50000 * PARSEC_IN_CGS / units_conversion_factor(us, UNIT_CONV_LENGTH);
-  potential->point_mass.mass =
-      1e10 * SOLAR_MASS_IN_CGS / units_conversion_factor(us, UNIT_CONV_MASS);
+  /* potential->point_mass.x =  */
+  /*     50000 * PARSEC_IN_CGS / units_conversion_factor(us, UNIT_CONV_LENGTH); */
+  /* potential->point_mass.y = */
+  /*     50000 * PARSEC_IN_CGS / units_conversion_factor(us, UNIT_CONV_LENGTH); */
+  /* potential->point_mass.z = */
+  /*     50000 * PARSEC_IN_CGS / units_conversion_factor(us, UNIT_CONV_LENGTH); */
+  /* potential->point_mass.mass = */
+  /*     1e10 * SOLAR_MASS_IN_CGS / units_conversion_factor(us, UNIT_CONV_MASS); */
 }
diff --git a/src/potentials.h b/src/potentials.h
index 2c75669539..318daeb8df 100644
--- a/src/potentials.h
+++ b/src/potentials.h
@@ -115,7 +115,8 @@ __attribute__((always_inline)) INLINE static void external_gravity_pointmass(con
  * @param us The current internal system of units
  * @param potential The external potential properties to initialize
  */
-void initPotentialProperties(struct UnitSystem* us,
+void initPotentialProperties(const struct swift_params * paramter_file,
+									  struct UnitSystem* us,
                              struct external_potential* potential);
 
 #endif /* SWIFT_POTENTIALS_H */
diff --git a/src/runner.c b/src/runner.c
index 8ac4bc7538..af1a489b07 100644
--- a/src/runner.c
+++ b/src/runner.c
@@ -176,7 +176,8 @@ void runner_dograv_external(struct runner *r, struct cell *c) {
         // g->x[1], vx, vy);
         message("%f\t %f %f %f %f %f %f %f %f %f %f %f %f %f\n", r->e->time, g->tx,
                 g->tv, dt, v2, fg, fga, dr, E, L[2], g->x[0], g->x[1], vx, vy);
-        // message(" G=%e M=%e\n", const_G, External_Potential_Mass);
+        message(" G=%e M=%e\n", r->e->physical_constants->newton_gravity, r->e->potential->point_mass.mass);
+		  exit(-1);
       }
     }
   }
-- 
GitLab