|
WarpX
|
#include "Particles/Deposition/SharedDepositionUtils.H"#include "Particles/Pusher/GetAndSetPosition.H"#include "Particles/Pusher/UpdatePosition.H"#include "Particles/Gather/FieldGather.H"#include "Particles/ShapeFactors.H"#include "Utils/TextMsg.H"#include "Utils/WarpXAlgorithmSelection.H"#include "Utils/WarpXConst.H"#include "Utils/WarpX_Complex.H"#include <AMReX.H>#include <AMReX_Arena.H>#include <AMReX_Array4.H>#include <AMReX_Dim3.H>#include <AMReX_REAL.H>Go to the source code of this file.
Functions | |
| AMREX_GPU_HOST_DEVICE AMREX_INLINE void | setMassMatricesKernels (const amrex::ParticleReal qs, const amrex::ParticleReal ms, const amrex::ParticleReal dt, const amrex::ParticleReal rhop, const amrex::ParticleReal uxp, const amrex::ParticleReal uyp, const amrex::ParticleReal uzp, const amrex::ParticleReal Bxp, const amrex::ParticleReal Byp, const amrex::ParticleReal Bzp, amrex::ParticleReal &fpxx, amrex::ParticleReal &fpxy, amrex::ParticleReal &fpxz, amrex::ParticleReal &fpyx, amrex::ParticleReal &fpyy, amrex::ParticleReal &fpyz, amrex::ParticleReal &fpzx, amrex::ParticleReal &fpzy, amrex::ParticleReal &fpzz) |
| Set the mass matrices kernels for thread thread_num. | |
| template<int depos_order> | |
| AMREX_GPU_HOST_DEVICE AMREX_INLINE void | doDirectJandSigmaDepositionKernel (const amrex::ParticleReal xp, const amrex::ParticleReal yp, const amrex::ParticleReal zp, const amrex::ParticleReal wqx, const amrex::ParticleReal wqy, const amrex::ParticleReal wqz, const amrex::ParticleReal fpxx, const amrex::ParticleReal fpxy, const amrex::ParticleReal fpxz, const amrex::ParticleReal fpyx, const amrex::ParticleReal fpyy, const amrex::ParticleReal fpyz, const amrex::ParticleReal fpzx, const amrex::ParticleReal fpzy, const amrex::ParticleReal fpzz, amrex::Array4< amrex::Real > const &jx_arr, amrex::Array4< amrex::Real > const &jy_arr, amrex::Array4< amrex::Real > const &jz_arr, int Sxx_nComp, int Syy_nComp, int Szz_nComp, amrex::Array4< amrex::Real > const &Sxx_arr, amrex::Array4< amrex::Real > const &Sxy_arr, amrex::Array4< amrex::Real > const &Sxz_arr, amrex::Array4< amrex::Real > const &Syx_arr, amrex::Array4< amrex::Real > const &Syy_arr, amrex::Array4< amrex::Real > const &Syz_arr, amrex::Array4< amrex::Real > const &Szx_arr, amrex::Array4< amrex::Real > const &Szy_arr, amrex::Array4< amrex::Real > const &Szz_arr, const amrex::IntVect &jx_type, const amrex::IntVect &jy_type, const amrex::IntVect &jz_type, const amrex::XDim3 &dinv, const amrex::XDim3 &xyzmin, const amrex::Dim3 lo) |
| Kernel for the direct deposition of J and S (mass matrices) for thread thread_num. | |
| template<int depos_order> | |
| void | doDirectJandSigmaDeposition (const GetParticlePosition< PIdx > &GetPosition, const amrex::ParticleReal *wp, const amrex::ParticleReal *uxp_n, const amrex::ParticleReal *uyp_n, const amrex::ParticleReal *uzp_n, const amrex::ParticleReal *uxp_nph, const amrex::ParticleReal *uyp_nph, const amrex::ParticleReal *uzp_nph, amrex::FArrayBox &jx_fab, amrex::FArrayBox &jy_fab, amrex::FArrayBox &jz_fab, int Sxx_nComp, int Syy_nComp, int Szz_nComp, amrex::Array4< amrex::Real > const &Sxx_arr, amrex::Array4< amrex::Real > const &Sxy_arr, amrex::Array4< amrex::Real > const &Sxz_arr, amrex::Array4< amrex::Real > const &Syx_arr, amrex::Array4< amrex::Real > const &Syy_arr, amrex::Array4< amrex::Real > const &Syz_arr, amrex::Array4< amrex::Real > const &Szx_arr, amrex::Array4< amrex::Real > const &Szy_arr, amrex::Array4< amrex::Real > const &Szz_arr, const amrex::Array4< amrex::Real const > &Bx_arr, const amrex::Array4< amrex::Real const > &By_arr, const amrex::Array4< amrex::Real const > &Bz_arr, const amrex::IndexType Bx_type, const amrex::IndexType By_type, const amrex::IndexType Bz_type, const long np_to_deposit, const amrex::Real dt, const amrex::XDim3 &dinv, const amrex::XDim3 &xyzmin, const amrex::Dim3 lo, const amrex::Real qs, const amrex::Real ms) |
| direct deposition of J and mass matrices for thread thread_num | |
| template<int depos_order, bool full_mass_matrices> | |
| AMREX_GPU_HOST_DEVICE AMREX_INLINE void | doVillasenorJandSigmaDepositionKernel (const amrex::ParticleReal xp_old, const amrex::ParticleReal yp_old, const amrex::ParticleReal zp_old, const amrex::ParticleReal xp_new, const amrex::ParticleReal yp_new, const amrex::ParticleReal zp_new, const amrex::ParticleReal wq_invvol, const amrex::ParticleReal uxp_mid, const amrex::ParticleReal uyp_mid, const amrex::ParticleReal uzp_mid, const amrex::ParticleReal gaminv, const amrex::ParticleReal fpxx, const amrex::ParticleReal fpxy, const amrex::ParticleReal fpxz, const amrex::ParticleReal fpyx, const amrex::ParticleReal fpyy, const amrex::ParticleReal fpyz, const amrex::ParticleReal fpzx, const amrex::ParticleReal fpzy, const amrex::ParticleReal fpzz, amrex::Array4< amrex::Real > const &Jx_arr, amrex::Array4< amrex::Real > const &Jy_arr, amrex::Array4< amrex::Real > const &Jz_arr, int max_crossings, amrex::Array4< amrex::Real > const &Sxx_arr, amrex::Array4< amrex::Real > const &Sxy_arr, amrex::Array4< amrex::Real > const &Sxz_arr, amrex::Array4< amrex::Real > const &Syx_arr, amrex::Array4< amrex::Real > const &Syy_arr, amrex::Array4< amrex::Real > const &Syz_arr, amrex::Array4< amrex::Real > const &Szx_arr, amrex::Array4< amrex::Real > const &Szy_arr, amrex::Array4< amrex::Real > const &Szz_arr, const amrex::Real dt, const amrex::XDim3 &dinv, const amrex::XDim3 &xyzmin, const amrex::Dim3 lo) |
| Kernel for the Villasenor deposition of J and S (mass matrices) for thread thread_num. | |
| template<int depos_order, bool full_mass_matrices> | |
| void | doVillasenorJandSigmaDeposition (const amrex::ParticleReal *xp_n_data, const amrex::ParticleReal *yp_n_data, const amrex::ParticleReal *zp_n_data, const GetParticlePosition< PIdx > &GetPosition, const amrex::ParticleReal *wp, const amrex::ParticleReal *uxp_n, const amrex::ParticleReal *uyp_n, const amrex::ParticleReal *uzp_n, const amrex::ParticleReal *uxp_nph, const amrex::ParticleReal *uyp_nph, const amrex::ParticleReal *uzp_nph, amrex::Array4< amrex::Real > const &Jx_arr, amrex::Array4< amrex::Real > const &Jy_arr, amrex::Array4< amrex::Real > const &Jz_arr, const int max_crossings, amrex::Array4< amrex::Real > const &Sxx_arr, amrex::Array4< amrex::Real > const &Sxy_arr, amrex::Array4< amrex::Real > const &Sxz_arr, amrex::Array4< amrex::Real > const &Syx_arr, amrex::Array4< amrex::Real > const &Syy_arr, amrex::Array4< amrex::Real > const &Syz_arr, amrex::Array4< amrex::Real > const &Szx_arr, amrex::Array4< amrex::Real > const &Szy_arr, amrex::Array4< amrex::Real > const &Szz_arr, const amrex::Array4< amrex::Real const > &Bx_arr, const amrex::Array4< amrex::Real const > &By_arr, const amrex::Array4< amrex::Real const > &Bz_arr, const amrex::IndexType Bx_type, const amrex::IndexType By_type, const amrex::IndexType Bz_type, const long np_to_deposit, const amrex::Real dt, const amrex::XDim3 &dinv, const amrex::XDim3 &xyzmin, const amrex::Dim3 lo, const amrex::Real qs, const amrex::Real ms) |
| Villasenor and Buneman deposition of J and mass matrices for thread thread_num. | |
| void doDirectJandSigmaDeposition | ( | const GetParticlePosition< PIdx > & | GetPosition, |
| const amrex::ParticleReal * | wp, | ||
| const amrex::ParticleReal * | uxp_n, | ||
| const amrex::ParticleReal * | uyp_n, | ||
| const amrex::ParticleReal * | uzp_n, | ||
| const amrex::ParticleReal * | uxp_nph, | ||
| const amrex::ParticleReal * | uyp_nph, | ||
| const amrex::ParticleReal * | uzp_nph, | ||
| amrex::FArrayBox & | jx_fab, | ||
| amrex::FArrayBox & | jy_fab, | ||
| amrex::FArrayBox & | jz_fab, | ||
| int | Sxx_nComp, | ||
| int | Syy_nComp, | ||
| int | Szz_nComp, | ||
| amrex::Array4< amrex::Real > const & | Sxx_arr, | ||
| amrex::Array4< amrex::Real > const & | Sxy_arr, | ||
| amrex::Array4< amrex::Real > const & | Sxz_arr, | ||
| amrex::Array4< amrex::Real > const & | Syx_arr, | ||
| amrex::Array4< amrex::Real > const & | Syy_arr, | ||
| amrex::Array4< amrex::Real > const & | Syz_arr, | ||
| amrex::Array4< amrex::Real > const & | Szx_arr, | ||
| amrex::Array4< amrex::Real > const & | Szy_arr, | ||
| amrex::Array4< amrex::Real > const & | Szz_arr, | ||
| const amrex::Array4< amrex::Real const > & | Bx_arr, | ||
| const amrex::Array4< amrex::Real const > & | By_arr, | ||
| const amrex::Array4< amrex::Real const > & | Bz_arr, | ||
| const amrex::IndexType | Bx_type, | ||
| const amrex::IndexType | By_type, | ||
| const amrex::IndexType | Bz_type, | ||
| const long | np_to_deposit, | ||
| const amrex::Real | dt, | ||
| const amrex::XDim3 & | dinv, | ||
| const amrex::XDim3 & | xyzmin, | ||
| const amrex::Dim3 | lo, | ||
| const amrex::Real | qs, | ||
| const amrex::Real | ms ) |
direct deposition of J and mass matrices for thread thread_num
| depos_order | deposition order |
| GetPosition | A functor for returning the particle position. |
| wp | Pointer to array of particle weights. |
| uxp_n,uyp_n,uzp_n | Pointer to arrays of particle momentum at time n. |
| uxp_nph,uyp_nph,uzp_nph | Pointer to arrays of particle momentum at time n+1/2. |
| jx_fab,jy_fab,jz_fab | FArrayBox of current density, either full array or tile. |
| Sxx_nComp | number of Sxx components |
| Syy_nComp | number of Syy components |
| Szz_nComp | number of Szz components |
| Sxx_arr,Sxy_arr,Sxz_arr | Array4 of mass matrices for Jx, either full array or tile. |
| Syx_arr,Syy_arr,Syz_arr | Array4 of mass matrices for Jy, either full array or tile. |
| Szx_arr,Szy_arr,Szz_arr | Array4 of mass matrices for Jz, either full array or tile. |
| Bx_arr,By_arr,Bz_arr | Array4 of the magnetic field, either full array or tile. |
| Bx_type,By_type,Bz_type | IndexType of the magnetic field |
| np_to_deposit | Number of particles for which current is deposited. |
| dt | Time step for particle. |
| dinv | 3D cell size inverse. |
| xyzmin | Physical lower bounds of domain. |
| lo | Index lower bounds of domain. |
| qs | Species charge. |
| ms | Species mass. |
| AMREX_GPU_HOST_DEVICE AMREX_INLINE void doDirectJandSigmaDepositionKernel | ( | const amrex::ParticleReal | xp, |
| const amrex::ParticleReal | yp, | ||
| const amrex::ParticleReal | zp, | ||
| const amrex::ParticleReal | wqx, | ||
| const amrex::ParticleReal | wqy, | ||
| const amrex::ParticleReal | wqz, | ||
| const amrex::ParticleReal | fpxx, | ||
| const amrex::ParticleReal | fpxy, | ||
| const amrex::ParticleReal | fpxz, | ||
| const amrex::ParticleReal | fpyx, | ||
| const amrex::ParticleReal | fpyy, | ||
| const amrex::ParticleReal | fpyz, | ||
| const amrex::ParticleReal | fpzx, | ||
| const amrex::ParticleReal | fpzy, | ||
| const amrex::ParticleReal | fpzz, | ||
| amrex::Array4< amrex::Real > const & | jx_arr, | ||
| amrex::Array4< amrex::Real > const & | jy_arr, | ||
| amrex::Array4< amrex::Real > const & | jz_arr, | ||
| int | Sxx_nComp, | ||
| int | Syy_nComp, | ||
| int | Szz_nComp, | ||
| amrex::Array4< amrex::Real > const & | Sxx_arr, | ||
| amrex::Array4< amrex::Real > const & | Sxy_arr, | ||
| amrex::Array4< amrex::Real > const & | Sxz_arr, | ||
| amrex::Array4< amrex::Real > const & | Syx_arr, | ||
| amrex::Array4< amrex::Real > const & | Syy_arr, | ||
| amrex::Array4< amrex::Real > const & | Syz_arr, | ||
| amrex::Array4< amrex::Real > const & | Szx_arr, | ||
| amrex::Array4< amrex::Real > const & | Szy_arr, | ||
| amrex::Array4< amrex::Real > const & | Szz_arr, | ||
| const amrex::IntVect & | jx_type, | ||
| const amrex::IntVect & | jy_type, | ||
| const amrex::IntVect & | jz_type, | ||
| const amrex::XDim3 & | dinv, | ||
| const amrex::XDim3 & | xyzmin, | ||
| const amrex::Dim3 | lo ) |
Kernel for the direct deposition of J and S (mass matrices) for thread thread_num.
| depos_order | deposition order |
| xp,yp,zp | The particle positions. |
| wqx,wqy,wqz | The particle velocity multiplied by the charge / volume |
| fpxx,fpxy,fpxz | Mass matrix kernels for Jx |
| fpyx,fpyy,fpyz | Mass matrix kernels for Jy |
| fpzx,fpzy,fpzz | Mass matrix kernels for Jz |
| jx_arr,jy_arr,jz_arr | Array4 of current density, either full array or tile. |
| Sxx_nComp | number of Sxx components |
| Syy_nComp | number of Syy components |
| Szz_nComp | number of Szz components |
| Sxx_arr,Sxy_arr,Sxz_arr | Array4 of mass matrices for Jx, either full array or tile. |
| Syx_arr,Syy_arr,Syz_arr | Array4 of mass matrices for Jy, either full array or tile. |
| Szx_arr,Szy_arr,Szz_arr | Array4 of mass matrices for Jz, either full array or tile. |
| jx_type,jy_type,jz_type | The j (and S) grid types along each direction, either NODE or CELL |
| dinv | 3D cell size inverse |
| xyzmin | The lower bounds of the domain |
| lo | Index lower bounds of domain. |
defined(WARPX_DIM_1D_Z)
| void doVillasenorJandSigmaDeposition | ( | const amrex::ParticleReal * | xp_n_data, |
| const amrex::ParticleReal * | yp_n_data, | ||
| const amrex::ParticleReal * | zp_n_data, | ||
| const GetParticlePosition< PIdx > & | GetPosition, | ||
| const amrex::ParticleReal * | wp, | ||
| const amrex::ParticleReal * | uxp_n, | ||
| const amrex::ParticleReal * | uyp_n, | ||
| const amrex::ParticleReal * | uzp_n, | ||
| const amrex::ParticleReal * | uxp_nph, | ||
| const amrex::ParticleReal * | uyp_nph, | ||
| const amrex::ParticleReal * | uzp_nph, | ||
| amrex::Array4< amrex::Real > const & | Jx_arr, | ||
| amrex::Array4< amrex::Real > const & | Jy_arr, | ||
| amrex::Array4< amrex::Real > const & | Jz_arr, | ||
| const int | max_crossings, | ||
| amrex::Array4< amrex::Real > const & | Sxx_arr, | ||
| amrex::Array4< amrex::Real > const & | Sxy_arr, | ||
| amrex::Array4< amrex::Real > const & | Sxz_arr, | ||
| amrex::Array4< amrex::Real > const & | Syx_arr, | ||
| amrex::Array4< amrex::Real > const & | Syy_arr, | ||
| amrex::Array4< amrex::Real > const & | Syz_arr, | ||
| amrex::Array4< amrex::Real > const & | Szx_arr, | ||
| amrex::Array4< amrex::Real > const & | Szy_arr, | ||
| amrex::Array4< amrex::Real > const & | Szz_arr, | ||
| const amrex::Array4< amrex::Real const > & | Bx_arr, | ||
| const amrex::Array4< amrex::Real const > & | By_arr, | ||
| const amrex::Array4< amrex::Real const > & | Bz_arr, | ||
| const amrex::IndexType | Bx_type, | ||
| const amrex::IndexType | By_type, | ||
| const amrex::IndexType | Bz_type, | ||
| const long | np_to_deposit, | ||
| const amrex::Real | dt, | ||
| const amrex::XDim3 & | dinv, | ||
| const amrex::XDim3 & | xyzmin, | ||
| const amrex::Dim3 | lo, | ||
| const amrex::Real | qs, | ||
| const amrex::Real | ms ) |
Villasenor and Buneman deposition of J and mass matrices for thread thread_num.
| depos_order | Deposition order |
| full_mass_matrices | Whether to deposit the full mass matrices (can only be true for depos_order = 2) |
| xp_n_data,yp_n_data,zp_n_data | Pointer to arrays of particle position at time level n. |
| GetPosition | A functor for returning the particle position. |
| wp | Pointer to array of particle weights. |
| uxp_n,uyp_n,uzp_n | Pointer to arrays of particle momentum at time level n. |
| uxp_nph,uyp_nph,uzp_nph | Pointer to arrays of particle momentum at time level n + 1/2. |
| Jx_arr,Jy_arr,Jz_arr | Array4 of the current density, either full array or tile. |
| max_crossings | Maximum number of particle cell crossings in each dir |
| Sxx_arr,Sxy_arr,Sxz_arr | Array4 of mass matrices for Jx, either full array or tile. |
| Syx_arr,Syy_arr,Syz_arr | Array4 of mass matrices for Jy, either full array or tile. |
| Szx_arr,Szy_arr,Szz_arr | Array4 of mass matrices for Jz, either full array or tile. |
| Bx_arr,By_arr,Bz_arr | Array4 of the magnetic field, either full array or tile. |
| Bx_type,By_type,Bz_type | IndexType of the magnetic field |
| np_to_deposit | Number of particles for which current is deposited. |
| dt | Time step for particle level |
| dinv | 3D cell size inverse |
| xyzmin | Physical lower bounds of domain. |
| lo | Index lower bounds of domain. |
| qs | Species charge. |
| ms | Species mass. |
| AMREX_GPU_HOST_DEVICE AMREX_INLINE void doVillasenorJandSigmaDepositionKernel | ( | const amrex::ParticleReal | xp_old, |
| const amrex::ParticleReal | yp_old, | ||
| const amrex::ParticleReal | zp_old, | ||
| const amrex::ParticleReal | xp_new, | ||
| const amrex::ParticleReal | yp_new, | ||
| const amrex::ParticleReal | zp_new, | ||
| const amrex::ParticleReal | wq_invvol, | ||
| const amrex::ParticleReal | uxp_mid, | ||
| const amrex::ParticleReal | uyp_mid, | ||
| const amrex::ParticleReal | uzp_mid, | ||
| const amrex::ParticleReal | gaminv, | ||
| const amrex::ParticleReal | fpxx, | ||
| const amrex::ParticleReal | fpxy, | ||
| const amrex::ParticleReal | fpxz, | ||
| const amrex::ParticleReal | fpyx, | ||
| const amrex::ParticleReal | fpyy, | ||
| const amrex::ParticleReal | fpyz, | ||
| const amrex::ParticleReal | fpzx, | ||
| const amrex::ParticleReal | fpzy, | ||
| const amrex::ParticleReal | fpzz, | ||
| amrex::Array4< amrex::Real > const & | Jx_arr, | ||
| amrex::Array4< amrex::Real > const & | Jy_arr, | ||
| amrex::Array4< amrex::Real > const & | Jz_arr, | ||
| int | max_crossings, | ||
| amrex::Array4< amrex::Real > const & | Sxx_arr, | ||
| amrex::Array4< amrex::Real > const & | Sxy_arr, | ||
| amrex::Array4< amrex::Real > const & | Sxz_arr, | ||
| amrex::Array4< amrex::Real > const & | Syx_arr, | ||
| amrex::Array4< amrex::Real > const & | Syy_arr, | ||
| amrex::Array4< amrex::Real > const & | Syz_arr, | ||
| amrex::Array4< amrex::Real > const & | Szx_arr, | ||
| amrex::Array4< amrex::Real > const & | Szy_arr, | ||
| amrex::Array4< amrex::Real > const & | Szz_arr, | ||
| const amrex::Real | dt, | ||
| const amrex::XDim3 & | dinv, | ||
| const amrex::XDim3 & | xyzmin, | ||
| const amrex::Dim3 | lo ) |
Kernel for the Villasenor deposition of J and S (mass matrices) for thread thread_num.
| depos_order | Deposition order |
| full_mass_matrices | Whether to deposit the full mass matrices (can only be true for depos_order = 2) |
| xp_old,yp_old,zp_old | Old particle positions (nominally at start of step) |
| xp_new,yp_new,zp_new | New particle positions (nominally at end of step) |
| wq_invvol | Particle charge / volume |
| uxp_mid,uyp_mid,uzp_mid | Particle momentum at middle of step |
| gaminv | One over gamma for particle at middle of step |
| fpxx,fpxy,fpxz | Mass matrix kernels for Jx |
| fpyx,fpyy,fpyz | Mass matrix kernels for Jy |
| fpzx,fpzy,fpzz | Mass matrix kernels for Jz |
| Jx_arr,Jy_arr,Jz_arr | Array4 of current density, either full array or tile |
| max_crossings | Maximum number of particle cell crossings in each dir |
| Sxx_arr,Sxy_arr,Sxz_arr | Array4 of mass matrices for Jx, either full array or tile |
| Syx_arr,Syy_arr,Syz_arr | Array4 of mass matrices for Jy, either full array or tile |
| Szx_arr,Szy_arr,Szz_arr | Array4 of mass matrices for Jz, either full array or tile |
| dt | Time step for particle level |
| dinv | 3D cell size inverse |
| xyzmin | Physical lower bounds of domain |
| lo | Index lower bounds of domain |
| AMREX_GPU_HOST_DEVICE AMREX_INLINE void setMassMatricesKernels | ( | const amrex::ParticleReal | qs, |
| const amrex::ParticleReal | ms, | ||
| const amrex::ParticleReal | dt, | ||
| const amrex::ParticleReal | rhop, | ||
| const amrex::ParticleReal | uxp, | ||
| const amrex::ParticleReal | uyp, | ||
| const amrex::ParticleReal | uzp, | ||
| const amrex::ParticleReal | Bxp, | ||
| const amrex::ParticleReal | Byp, | ||
| const amrex::ParticleReal | Bzp, | ||
| amrex::ParticleReal & | fpxx, | ||
| amrex::ParticleReal & | fpxy, | ||
| amrex::ParticleReal & | fpxz, | ||
| amrex::ParticleReal & | fpyx, | ||
| amrex::ParticleReal & | fpyy, | ||
| amrex::ParticleReal & | fpyz, | ||
| amrex::ParticleReal & | fpzx, | ||
| amrex::ParticleReal & | fpzy, | ||
| amrex::ParticleReal & | fpzz ) |
Set the mass matrices kernels for thread thread_num.
| qs | Species charge |
| ms | Species mass |
| dt | Simulation time step |
| rhop | qs*wp*invvol*2.0/(gamma_n + gamma_np1) |
| uxp,uyp,uzp | Proper velocity of particle (time-centered) |
| Bxp,Byp,Bzp | Magnetic field vector components on particle |
| fpxx,fpxy,fpxz | Mass matrices kernels corresponding to dJx |
| fpyx,fpyy,fpyz | Mass matrices kernels corresponding to dJy |
| fpzx,fpzy,fpzz | Mass matrices kernels corresponding to dJz |