Skip to content

Commit

Permalink
update star tracker, ah finder, structure of folders
Browse files Browse the repository at this point in the history
  • Loading branch information
tamaraevst committed Oct 7, 2024
1 parent 18b3d16 commit 43ced06
Show file tree
Hide file tree
Showing 41 changed files with 1,163 additions and 813 deletions.
29 changes: 20 additions & 9 deletions Examples/BBSEqualMassFix/BosonStarLevel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,7 @@ void BosonStarLevel::specificAdvance()
void BosonStarLevel::initialData()
{
CH_TIME("BosonStarLevel::initialData");
if (m_verbosity)
pout() << "BosonStarLevel::initialData " << m_level << endl;
pout() << "BosonStarLevel::initialData " << m_level << endl;

// First initalise a BosonStar object
BinaryEqualMassFix boson_star(m_p.bosonstar_params, m_p.bosonstar2_params,
Expand All @@ -73,6 +72,18 @@ void BosonStarLevel::initialData()
// the max radius the code might need to calculate out to is L*sqrt(3)
boson_star.compute_1d_solution(4. * m_p.L);

if (m_level == 0)
{
pout() << "Star 1 has A[0] " << boson_star.central_amplitude1
<< " mass " << boson_star.mass1 << " radius "
<< boson_star.radius1 << " and compactness "
<< boson_star.compactness1 << endl;
pout() << "Star 2 has A[0] " << boson_star.central_amplitude2
<< " mass " << boson_star.mass2 << " radius "
<< boson_star.radius2 << " and compactness "
<< boson_star.compactness2 << endl;
}

// First set everything to zero ... we don't want undefined values in
// constraints etc, then initial conditions for Boson Star
BoxLoops::loop(make_compute_pack(SetValue(0.0), boson_star), m_state_new,
Expand Down Expand Up @@ -302,11 +313,11 @@ void BosonStarLevel::specificPostTimeStep()
#ifdef USE_AHFINDER
if (m_p.AH_activate && m_level == m_p.AH_params.level_to_run)
{
// if (m_p.AH_set_origins_to_punctures && m_p.track_punctures)
// {
// m_bh_amr.m_ah_finder.set_origins(
// m_bh_amr.m_puncture_tracker.get_puncture_coords());
// }
if (m_p.AH_set_origins_to_punctures && m_p.do_star_track)
{
m_st_amr.m_ah_finder.set_origins(
m_st_amr.m_star_tracker.get_puncture_coords());
}
m_st_amr.m_ah_finder.solve(m_dt, m_time, m_restart_time);
}
#endif
Expand Down Expand Up @@ -338,13 +349,13 @@ void BosonStarLevel::computeTaggingCriterion(
const vector<double> puncture_masses = {m_p.bosonstar_params.mass,
m_p.bosonstar2_params.mass};

const std::vector<double> star_coords =
const std::vector<std::array<double, CH_SPACEDIM>> puncture_coords =
m_st_amr.m_star_tracker.get_puncture_coords();

BoxLoops::loop(BosonChiPunctureExtractionTaggingCriterion(
m_dx, m_level, m_p.tag_horizons_max_levels,
m_p.tag_punctures_max_levels, m_p.extraction_params,
star_coords, m_p.activate_extraction,
puncture_coords, m_p.activate_extraction,
m_p.do_star_track, puncture_radii, puncture_masses,
m_p.tag_buffer),
current_state, tagging_criterion);
Expand Down
9 changes: 6 additions & 3 deletions Examples/BBSEqualMassFix/Main_BosonStar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
* Please refer to LICENSE in GRChombo's root directory.
*/

// Chombo includes
#include "CH_Timer.H"
#include "parstream.H" //Gives us pout()

// System includes
#include <chrono>
#include <iostream>

Expand Down Expand Up @@ -33,7 +37,7 @@ int runGRChombo(int argc, char *argv[])
// and an associated LevelFactory)
STAMR st_amr;

st_amr.m_star_tracker.initial_setup(
st_amr.m_star_tracker.initialise_star_tracking(
sim_params.do_star_track, sim_params.number_of_stars,
{sim_params.positionA, sim_params.positionB}, sim_params.star_points,
sim_params.star_track_width_A, sim_params.star_track_width_B,
Expand Down Expand Up @@ -75,8 +79,7 @@ int runGRChombo(int argc, char *argv[])
std::chrono::time_point<Clock> start_time = Clock::now();

// Add a scheduler to call specificPostTimeStep on every AMRLevel at t=0
auto task = [](GRAMRLevel *level)
{
auto task = [](GRAMRLevel *level) {
if (level->time() == 0.)
level->specificPostTimeStep();
};
Expand Down
30 changes: 18 additions & 12 deletions Examples/BBSEqualMassFix/SimulationParameters.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ class SimulationParameters : public SimulationParametersBase

void readParams(GRParmParse &pp)
{
pout() << "---------------------------------" << endl;
pout() << "Hello! You are running a boson star binary with the "
"'equal-mass fix'!"
<< endl;

// Gravitional constant
pp.load("G_Newton", G_Newton, 1.0);

Expand All @@ -41,6 +46,7 @@ class SimulationParameters : public SimulationParametersBase
pp.load("BS_solver_omc", bosonstar_params.OMC, 0.5);
pp.load("BS_solver_verbosity", bosonstar_params.BS_solver_verbosity,
false);
pp.load("BS_solver_niter", bosonstar_params.niter, 17);

pp.load("star_centre", bosonstar_params.star_centre, center);

Expand Down Expand Up @@ -68,27 +74,27 @@ class SimulationParameters : public SimulationParametersBase
// Boson Star 2 parameters
pp.load("central_amplitude_CSF2",
bosonstar2_params.central_amplitude_CSF);
if (bosonstar_params.central_amplitude_CSF !=
bosonstar2_params.central_amplitude_CSF)
{
MayDay::Error("Ooof... You are trying to simulate an unequal mass "
"BS binary with the 'equal-mass fix'!");
}
pp.load("BS_rapidity2", bosonstar2_params.BS_rapidity);
pp.load("BS_mass2", bosonstar2_params.mass, 1.0);

// std::array<double, CH_SPACEDIM> positionA, positionB;

positionA[0] =
(bosonstar_params.star_centre[0] +
bosonstar_params.mass_ratio * bosonstar_params.BS_separation /
(bosonstar_params.mass_ratio + 1.));
positionA[0] = bosonstar_params.star_centre[0] +
bosonstar_params.BS_separation / 2.;
positionA[1] = bosonstar_params.star_centre[1] -
bosonstar_params.mass_ratio *
bosonstar_params.BS_impact_parameter /
(bosonstar_params.mass_ratio + 1.);
bosonstar_params.BS_impact_parameter / 2.;
positionA[2] = bosonstar_params.star_centre[2];

positionB[0] = (bosonstar_params.star_centre[0] -
bosonstar_params.BS_separation /
(bosonstar_params.mass_ratio + 1.));
positionB[0] = bosonstar_params.star_centre[0] -
bosonstar_params.BS_separation / 2.;
positionB[1] = bosonstar_params.star_centre[1] +
bosonstar_params.BS_impact_parameter /
(bosonstar_params.mass_ratio + 1.);
bosonstar_params.BS_impact_parameter / 2.;
positionB[2] = bosonstar_params.star_centre[2];

pout() << "Star A is at x-position " << positionA[0] << endl;
Expand Down
10 changes: 5 additions & 5 deletions Examples/BBSPlainSuperposition/BosonStarLevel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -307,11 +307,11 @@ void BosonStarLevel::specificPostTimeStep()
#ifdef USE_AHFINDER
if (m_p.AH_activate && m_level == m_p.AH_params.level_to_run)
{
// if (m_p.AH_set_origins_to_punctures && m_p.track_punctures)
// {
// m_bh_amr.m_ah_finder.set_origins(
// m_bh_amr.m_puncture_tracker.get_puncture_coords());
// }
if (m_p.AH_set_origins_to_punctures && m_p.do_star_track)
{
m_st_amr.m_ah_finder.set_origins(
m_st_amr.m_star_tracker.get_puncture_coords_v2());
}
m_st_amr.m_ah_finder.solve(m_dt, m_time, m_restart_time);
}
#endif
Expand Down
9 changes: 6 additions & 3 deletions Examples/BBSPlainSuperposition/Main_BosonStar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
* Please refer to LICENSE in GRChombo's root directory.
*/

// Chombo includes
#include "CH_Timer.H"
#include "parstream.H" //Gives us pout()

// System includes
#include <chrono>
#include <iostream>

Expand Down Expand Up @@ -33,7 +37,7 @@ int runGRChombo(int argc, char *argv[])
// and an associated LevelFactory)
STAMR st_amr;

st_amr.m_star_tracker.initial_setup(
st_amr.m_star_tracker.initialise_star_tracking(
sim_params.do_star_track, sim_params.number_of_stars,
{sim_params.positionA, sim_params.positionB}, sim_params.star_points,
sim_params.star_track_width_A, sim_params.star_track_width_B,
Expand Down Expand Up @@ -75,8 +79,7 @@ int runGRChombo(int argc, char *argv[])
std::chrono::time_point<Clock> start_time = Clock::now();

// Add a scheduler to call specificPostTimeStep on every AMRLevel at t=0
auto task = [](GRAMRLevel *level)
{
auto task = [](GRAMRLevel *level) {
if (level->time() == 0.)
level->specificPostTimeStep();
};
Expand Down
6 changes: 6 additions & 0 deletions Examples/BBSPlainSuperposition/SimulationParameters.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ class SimulationParameters : public SimulationParametersBase

void readParams(GRParmParse &pp)
{
pout() << "---------------------------------" << endl;
pout() << "Hello! You are running a boson star binary with plain "
"superposition!"
<< endl;

// Gravitional constant
pp.load("G_Newton", G_Newton, 1.0);

Expand All @@ -41,6 +46,7 @@ class SimulationParameters : public SimulationParametersBase
pp.load("BS_solver_omc", bosonstar_params.OMC, 0.5);
pp.load("BS_solver_verbosity", bosonstar_params.BS_solver_verbosity,
false);
pp.load("BS_solver_niter", bosonstar_params.niter, 17);

pp.load("star_centre", bosonstar_params.star_centre, center);

Expand Down
7 changes: 5 additions & 2 deletions Examples/BBSUnequalMassFix/Main_BosonStar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
* Please refer to LICENSE in GRChombo's root directory.
*/

// Chombo includes
#include "CH_Timer.H"
#include "parstream.H" //Gives us pout()

// System includes
#include <chrono>
#include <iostream>

Expand Down Expand Up @@ -75,8 +79,7 @@ int runGRChombo(int argc, char *argv[])
std::chrono::time_point<Clock> start_time = Clock::now();

// Add a scheduler to call specificPostTimeStep on every AMRLevel at t=0
auto task = [](GRAMRLevel *level)
{
auto task = [](GRAMRLevel *level) {
if (level->time() == 0.)
level->specificPostTimeStep();
};
Expand Down
6 changes: 6 additions & 0 deletions Examples/BBSUnequalMassFix/SimulationParameters.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ class SimulationParameters : public SimulationParametersBase

void readParams(GRParmParse &pp)
{
pout() << "---------------------------------" << endl;
pout() << "Hello! You are running a boson star binary with the "
"'unequal-mass fix'!"
<< endl;

// Gravitional constant
pp.load("G_Newton", G_Newton, 1.0);

Expand All @@ -38,6 +43,7 @@ class SimulationParameters : public SimulationParametersBase
pp.load("BS_solver_omc", bosonstar_params.OMC, 0.5);
pp.load("BS_solver_verbosity", bosonstar_params.BS_solver_verbosity,
false);
pp.load("BS_solver_niter", bosonstar_params.niter, 17);

pp.load("star_centre", bosonstar_params.star_centre, center);

Expand Down
20 changes: 0 additions & 20 deletions Examples/SingleBosonStar/BosonStarLevel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -259,29 +259,9 @@ void BosonStarLevel::specificPostTimeStep()
constraints_file.write_time_data_line({L2_Ham, L2_Mom, L1_Ham, L1_Mom});
}

if (m_p.do_star_track && m_level == m_p.star_track_level)
{
pout() << "Running a star tracker now" << endl;
// if at restart time read data from dat file,
// will default to param file if restart time is 0
if (fabs(m_time - m_restart_time) < m_dt * 1.1)
{
m_st_amr.m_star_tracker.read_old_centre_from_dat(
"StarCentres", m_dt, m_time, m_restart_time, first_step);
}
m_st_amr.m_star_tracker.update_star_centres(m_dt);
m_st_amr.m_star_tracker.write_to_dat("StarCentres", m_dt, m_time,
m_restart_time, first_step);
}

#ifdef USE_AHFINDER
if (m_p.AH_activate && m_level == m_p.AH_params.level_to_run)
{
// if (m_p.AH_set_origins_to_punctures && m_p.track_punctures)
// {
// m_bh_amr.m_ah_finder.set_origins(
// m_bh_amr.m_puncture_tracker.get_puncture_coords());
// }
m_st_amr.m_ah_finder.solve(m_dt, m_time, m_restart_time);
}
#endif
Expand Down
3 changes: 2 additions & 1 deletion Examples/SingleBosonStar/GNUmakefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ src_dirs := $(GRCHOMBO_SOURCE)/utils \
$(GRCHOMBO_SOURCE)/GRChomboCore \
$(GRCHOMBO_SOURCE)/TaggingCriteria \
$(GRCHOMBO_SOURCE)/AMRInterpolator \
$(GRCHOMBO_SOURCE)/InitialConditions/BosonStars \
$(GRCHOMBO_SOURCE)/BosonStars \
$(GRCHOMBO_SOURCE)/InitialConditions/BosonStars \
$(GRCHOMBO_SOURCE)/InitialConditions/BosonStars/SingleBosonStar \
$(GRCHOMBO_SOURCE)/ApparentHorizonFinder

Expand Down
29 changes: 14 additions & 15 deletions Examples/SingleBosonStar/Main_BosonStar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
* Please refer to LICENSE in GRChombo's root directory.
*/

// Chombo includes
#include "CH_Timer.H"
#include "parstream.H" //Gives us pout()

// System includes
#include <chrono>
#include <iostream>

Expand Down Expand Up @@ -31,13 +35,14 @@ int runGRChombo(int argc, char *argv[])
// The line below selects the problem that is simulated
// (To simulate a different problem, define a new child of AMRLevel
// and an associated LevelFactory)
STAMR st_amr;
// STAMR st_amr;

st_amr.m_star_tracker.initial_setup(
sim_params.do_star_track, sim_params.number_of_stars,
{sim_params.positionA, sim_params.positionB}, sim_params.star_points,
sim_params.star_track_width_A, sim_params.star_track_width_B,
sim_params.star_track_direction_of_motion);
// st_amr.m_star_tracker.initialise_star_tracking(
// sim_params.do_star_track, sim_params.number_of_stars,
// {sim_params.positionA, sim_params.positionB}, sim_params.star_points,
// sim_params.star_track_width_A, sim_params.star_track_width_B,
// sim_params.star_track_direction_of_motion);
STAMR st_amr;
DefaultLevelFactory<BosonStarLevel> boson_star_level_fact(st_amr,
sim_params);
setupAMRObject(st_amr, boson_star_level_fact);
Expand All @@ -58,14 +63,9 @@ int runGRChombo(int argc, char *argv[])
#ifdef USE_AHFINDER
if (sim_params.AH_activate)
{
AHSurfaceGeometry sph1(sim_params.positionA);
AHSurfaceGeometry sph2(sim_params.positionB);

st_amr.m_ah_finder.add_ah(sph1, sim_params.AH_1_initial_guess,
sim_params.AH_params);
st_amr.m_ah_finder.add_ah(sph2, sim_params.AH_2_initial_guess,
AHSurfaceGeometry sph(sim_params.positionA);
st_amr.m_ah_finder.add_ah(sph, sim_params.AH_initial_guess,
sim_params.AH_params);
st_amr.m_ah_finder.add_ah_merger(0, 1, sim_params.AH_params);
}
#endif

Expand All @@ -75,8 +75,7 @@ int runGRChombo(int argc, char *argv[])
std::chrono::time_point<Clock> start_time = Clock::now();

// Add a scheduler to call specificPostTimeStep on every AMRLevel at t=0
auto task = [](GRAMRLevel *level)
{
auto task = [](GRAMRLevel *level) {
if (level->time() == 0.)
level->specificPostTimeStep();
};
Expand Down
Loading

0 comments on commit 43ced06

Please sign in to comment.