From b9b4951ee5f7c3ab66dbc365f1a884fbc7fc9bce Mon Sep 17 00:00:00 2001 From: Remi Lehe Date: Thu, 4 Jan 2018 12:09:36 -0800 Subject: Update documentation on particle initialization --- Source/CustomDensityProb.cpp | 55 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 8 deletions(-) (limited to 'Source/CustomDensityProb.cpp') diff --git a/Source/CustomDensityProb.cpp b/Source/CustomDensityProb.cpp index 1df3d75ad..2f6005bc2 100644 --- a/Source/CustomDensityProb.cpp +++ b/Source/CustomDensityProb.cpp @@ -1,13 +1,52 @@ #include -#include +using namespace amrex; -#include +/// +/// This "custom" density profile just does constant +/// +Real CustomDensityProfile::getDensity(Real x, Real y, Real z) const { + const Real on_axis_density = params[0]; + const Real plasma_zmin = params[1]; + const Real plasma_zmax = params[2]; + const Real plasma_lramp_start = params[3]; + const Real plasma_lramp_end = params[4]; + const Real plasma_rcap = params[5]; + const Real plasma_rdownramp = params[6]; + const Real plasma_rchannel = params[7]; + static const Real re = 2.8178403227e-15; // Electron classical radius + static const Real pi = 3.14159265359; -amrex::Real CustomDensityProfile::getDensity(amrex::Real x, - amrex::Real y, - amrex::Real z) const -{ - amrex::Abort("If running with a custom density profile, you must supply a CustomDensityProb.cpp file"); - return 0.0; + Real r2 = x*x + y*y; + Real r = std::sqrt( r2 ); + + // Transverse part of the profile + Real nr; + if (r 4.) { + n = 4.; + } + + return on_axis_density*n; } -- cgit v1.2.3