aboutsummaryrefslogtreecommitdiff
path: root/Source/Initialization/PlasmaInjector.cpp
diff options
context:
space:
mode:
authorGravatar Weiqun Zhang <weiqunzhang@lbl.gov> 2019-03-13 15:36:46 -0700
committerGravatar Weiqun Zhang <weiqunzhang@lbl.gov> 2019-03-13 15:41:13 -0700
commit77a53d41a63f06089ecc83c84fccd7c4a42a89af (patch)
tree4e7fa36f324dba48dea0aebb158ba7c9ff045ce2 /Source/Initialization/PlasmaInjector.cpp
parent56104548c321aa1d26f6773091e2801c47626dea (diff)
downloadWarpX-77a53d41a63f06089ecc83c84fccd7c4a42a89af.tar.gz
WarpX-77a53d41a63f06089ecc83c84fccd7c4a42a89af.tar.zst
WarpX-77a53d41a63f06089ecc83c84fccd7c4a42a89af.zip
switch to WarpXParser
Diffstat (limited to 'Source/Initialization/PlasmaInjector.cpp')
-rw-r--r--Source/Initialization/PlasmaInjector.cpp36
1 files changed, 12 insertions, 24 deletions
diff --git a/Source/Initialization/PlasmaInjector.cpp b/Source/Initialization/PlasmaInjector.cpp
index 3c120a7c1..01d122ac6 100644
--- a/Source/Initialization/PlasmaInjector.cpp
+++ b/Source/Initialization/PlasmaInjector.cpp
@@ -74,17 +74,13 @@ ParseDensityProfile::ParseDensityProfile(std::string parse_density_function)
{
my_constants.ReadParameters();
parse_density_function = my_constants.replaceStringValue(parse_density_function);
- const std::string s_var = "x,y,z";
- parser_instance_number = parser_initialize_function(parse_density_function.c_str(),
- parse_density_function.length(),
- s_var.c_str(),
- s_var.length());
+ parser_density.define(parse_density_function);
+ parser_density.registerVariables({"x","y","z"});
}
Real ParseDensityProfile::getDensity(Real x, Real y, Real z) const
{
- std::array<amrex::Real, 3> list_var = {x,y,z};
- return parser_evaluate_function(list_var.data(), 3, parser_instance_number);
+ return parser_density.eval(x,y,z);
}
ConstantMomentumDistribution::ConstantMomentumDistribution(Real ux,
@@ -141,31 +137,23 @@ ParseMomentumFunction::ParseMomentumFunction(std::string parse_momentum_function
_parse_momentum_function_uy(parse_momentum_function_uy),
_parse_momentum_function_uz(parse_momentum_function_uz)
{
- const std::string s_var = "x,y,z";
my_constants.ReadParameters();
parse_momentum_function_ux = my_constants.replaceStringValue(parse_momentum_function_ux);
parse_momentum_function_uy = my_constants.replaceStringValue(parse_momentum_function_uy);
parse_momentum_function_uz = my_constants.replaceStringValue(parse_momentum_function_uz);
- parser_instance_number_ux = parser_initialize_function(parse_momentum_function_ux.c_str(),
- parse_momentum_function_ux.length(),
- s_var.c_str(),
- s_var.length());
- parser_instance_number_uy = parser_initialize_function(parse_momentum_function_uy.c_str(),
- parse_momentum_function_uy.length(),
- s_var.c_str(),
- s_var.length());
- parser_instance_number_uz = parser_initialize_function(parse_momentum_function_uz.c_str(),
- parse_momentum_function_uz.length(),
- s_var.c_str(),
- s_var.length());
+ parser_ux.define(parse_momentum_function_ux);
+ parser_uy.define(parse_momentum_function_uy);
+ parser_uz.define(parse_momentum_function_uz);
+ parser_ux.registerVariables({"x","y","z"});
+ parser_uy.registerVariables({"x","y","z"});
+ parser_uz.registerVariables({"x","y","z"});
}
void ParseMomentumFunction::getMomentum(vec3& u, Real x, Real y, Real z)
{
- std::array<amrex::Real, 3> list_var = {x,y,z};
- u[0] = parser_evaluate_function(list_var.data(), 3, parser_instance_number_ux);
- u[1] = parser_evaluate_function(list_var.data(), 3, parser_instance_number_uy);
- u[2] = parser_evaluate_function(list_var.data(), 3, parser_instance_number_uz);
+ u[0] = parser_ux.eval(x,y,z);
+ u[1] = parser_uy.eval(x,y,z);
+ u[2] = parser_uz.eval(x,y,z);
}
RandomPosition::RandomPosition(int num_particles_per_cell):