From 3631f861eaf1bebd598716eca75cf354ba1888f1 Mon Sep 17 00:00:00 2001 From: JCAurre Date: Tue, 21 May 2024 16:53:07 +0100 Subject: [PATCH] 1D interpolation to grid from readin initial data --- Examples/Fluid_Kerr/InitialFluidData.hpp | 3 +++ Examples/Fluid_Kerr/InitialFluidData.impl.hpp | 7 +++++++ Examples/Fluid_Kerr/PerfectFluidLevel.cpp | 2 +- Examples/Fluid_Kerr/SimulationParameters.hpp | 16 ++++++++++++++++ Examples/Fluid_Kerr/params.txt | 4 +++- 5 files changed, 30 insertions(+), 2 deletions(-) diff --git a/Examples/Fluid_Kerr/InitialFluidData.hpp b/Examples/Fluid_Kerr/InitialFluidData.hpp index 22b158f5b..5ef4f4e2f 100644 --- a/Examples/Fluid_Kerr/InitialFluidData.hpp +++ b/Examples/Fluid_Kerr/InitialFluidData.hpp @@ -15,6 +15,7 @@ #include "UserVariables.hpp" //This files needs NUM_VARS - total no. components #include "VarsTools.hpp" #include "simd.hpp" +#include //! Class which sets the initial fluid matter config class InitialFluidData : public EoS @@ -32,6 +33,8 @@ class InitialFluidData : public EoS double rho0; double awidth; double delta; + double spacing; + double *rho_1D; }; //! The constructor diff --git a/Examples/Fluid_Kerr/InitialFluidData.impl.hpp b/Examples/Fluid_Kerr/InitialFluidData.impl.hpp index ef8bf02a5..2ecd8537a 100644 --- a/Examples/Fluid_Kerr/InitialFluidData.impl.hpp +++ b/Examples/Fluid_Kerr/InitialFluidData.impl.hpp @@ -27,6 +27,13 @@ void InitialFluidData::compute(Cell current_cell) const double y = coords.y; double z = coords.z; + int ind_L = static_cast(floor(rr / m_params.spacing)); + int ind_H = static_cast(ceil(rr / m_params.spacing)); + double rho_L = *(m_params.rho_1D + ind_L); + double rho_H = *(m_params.rho_1D + ind_H); + double rho_interp = + rho_L + (rr / m_params.spacing - ind_L) * (rho_H - rho_L); + // Tensor<1, data_t> vi, Sj; data_t chi_regularised = simd_max(metric_vars.chi, 1e-6); diff --git a/Examples/Fluid_Kerr/PerfectFluidLevel.cpp b/Examples/Fluid_Kerr/PerfectFluidLevel.cpp index b7cba57cf..d7cd0e85c 100644 --- a/Examples/Fluid_Kerr/PerfectFluidLevel.cpp +++ b/Examples/Fluid_Kerr/PerfectFluidLevel.cpp @@ -59,7 +59,7 @@ void PerfectFluidLevel::initialData() BoxLoops::loop( make_compute_pack(SetValue(0.), KerrBH(m_p.kerr_params, m_dx), InitialFluidData(m_p.initial_params, m_dx)), - m_state_new, m_state_new, INCLUDE_GHOST_CELLS); + m_state_new, m_state_new, INCLUDE_GHOST_CELLS, disable_simd()); fillAllGhosts(); BoxLoops::loop(GammaCalculator(m_dx), m_state_new, m_state_new, diff --git a/Examples/Fluid_Kerr/SimulationParameters.hpp b/Examples/Fluid_Kerr/SimulationParameters.hpp index 0383a5415..1d97303b8 100644 --- a/Examples/Fluid_Kerr/SimulationParameters.hpp +++ b/Examples/Fluid_Kerr/SimulationParameters.hpp @@ -37,6 +37,21 @@ class SimulationParameters : public SimulationParametersBase pp.load("fluid_delta", initial_params.delta, 0.2); pp.load("lambda", lambda, 1.); // eigenvalue for numerical flux + // Reading data + pp.load("spacing", initial_params.spacing); + pp.load("lines", lines); + double rho_1D[lines]; + + double tmp_data; + ifstream read_file("rho_vs_r.csv"); + + for (int i = 0; i < lines; ++i) + { + read_file >> tmp_data; + rho_1D[i] = tmp_data; + } + initial_params.rho_1D = rho_1D; + // Initial Kerr data pp.load("kerr_mass", kerr_params.mass); pp.load("kerr_spin", kerr_params.spin); @@ -65,6 +80,7 @@ class SimulationParameters : public SimulationParametersBase // Initial data for matter and potential and BH double G_Newton; double lambda; + int lines; InitialFluidData::params_t initial_params; KerrBH::params_t kerr_params; }; diff --git a/Examples/Fluid_Kerr/params.txt b/Examples/Fluid_Kerr/params.txt index 6ac48473a..d90c72834 100644 --- a/Examples/Fluid_Kerr/params.txt +++ b/Examples/Fluid_Kerr/params.txt @@ -47,7 +47,9 @@ G_Newton = 1.0 fluid_rho0 = 1.0 fluid_width = 5. fluid_delta = 0.2 - +lines = 10000 +spacing = 1e-3 + # Kerr BH data kerr_mass = 1.0 kerr_spin = 0.5