From 614dc2962f9b5b576b4f734532c969b89f1316c0 Mon Sep 17 00:00:00 2001 From: Revathi Jambunathan <41089244+RevathiJambunathan@users.noreply.github.com> Date: Wed, 9 Sep 2020 19:58:24 -0700 Subject: Variation of macroscopic properties for E-update (#1016) * Adding macro-E Push and new file * Add macroEvolveE, call it, and include algo selection in utils * fix eol * Fixing bug in macroE for sigma method 1 * changing MacroEvolveE to MacroscopicEvolveE * add class for macroscopicproperties and an object in WarpX class * fix eol * adding templated ckc call with comment that EvolveE is same for yee and ckc * add header file pointing to ckc algorithm * adding obejct m_macroscopic_properties to access sigma,eps,mu * some cleaning * Adding comments * adding documentation * spelling wandroff to wendroff * fixing eol * eol * const in the right place. Thanks bot! * profiler for macroscopic evolveE * MultiFab macroproperties with constant init, templated macroEvolveE, * call macroparameter init * eol fix * add parser for macroscopic properties * fix eol * adding input file * __device__ lambda cannot be private in class * fix grown tilebox declaration for init data * [skip ci] some more merge conflicts * some comments * removing redundant calls to Macroscopic EvolveE * [skip ci] fix growntilebox for initializing macro mf * clean and fix BackwardEuler call for ckc * commenting out old alpha and beta implementations * temporarily commiting local changes with calls in Interp. * fixing a typo * clean and add documentation * remove the test input file * fix typo * eol fix * Update Docs/source/running_cpp/parameters.rst Co-authored-by: Andy Nonaka * PR suggestions * Update Source/FieldSolver/WarpXPushFieldsEM.cpp Co-authored-by: Andy Nonaka * removing unnecessary includes * adding 2D initialization for stag arrays * removing init_style input parameter for material properties * eol fix * Adding dE/dt eq curl of (B/mu) * PhysConst ep0 and mu0 * Add functor for field access for macro and vacuum (B/mu) * fix eol * Update Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/FieldAccessorFunctors.H Co-authored-by: Remi Lehe * Apply suggestions from code review Co-authored-by: Remi Lehe * Update Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H Co-authored-by: Remi Lehe * Apply suggestions from code review Co-authored-by: Remi Lehe * fixing compilation errors and removing Gpu ManagedVector Co-authored-by: Andy Nonaka Co-authored-by: Remi Lehe --- .../FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H') diff --git a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H index ef6d53416..b688110b7 100644 --- a/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H +++ b/Source/FieldSolver/FiniteDifferenceSolver/FiniteDifferenceAlgorithms/CartesianCKCAlgorithm.H @@ -143,9 +143,10 @@ struct CartesianCKCAlgorithm { /** * Perform derivative along x on a nodal grid, from a cell-centered field `F` */ + template< typename T_Field> AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE static amrex::Real DownwardDx ( - amrex::Array4 const& F, + T_Field const& F, amrex::Real const * const coefs_x, int const /*n_coefs_x*/, int const i, int const j, int const k, int const ncomp=0 ) { @@ -189,15 +190,16 @@ struct CartesianCKCAlgorithm { /** * Perform derivative along y on a nodal grid, from a cell-centered field `F` */ + template< typename T_Field> AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE static amrex::Real DownwardDy ( - amrex::Array4 const& F, + T_Field const& F, amrex::Real const * const coefs_y, int const n_coefs_y, int const i, int const j, int const k, int const ncomp=0 ) { using namespace amrex; #if defined WARPX_DIM_3D - Real const inv_dy = coefs_y[0]; + amrex::Real const inv_dy = coefs_y[0]; return inv_dy*( F(i,j,k,ncomp) - F(i,j-1,k,ncomp) ); amrex::ignore_unused(n_coefs_y); #elif (defined WARPX_DIM_XZ) @@ -248,11 +250,12 @@ struct CartesianCKCAlgorithm { /** * Perform derivative along z on a nodal grid, from a cell-centered field `F` */ + template< typename T_Field> AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE static amrex::Real DownwardDz ( - amrex::Array4 const& F, + T_Field const& F, amrex::Real const * const coefs_z, int const /*n_coefs_z*/, - int const i, int const j, int const k, int const ncomp=0 ) { + int const i, int const j, int const k, int const ncomp=0) { amrex::Real const inv_dz = coefs_z[0]; #if defined WARPX_DIM_3D -- cgit v1.2.3