From 82efe9b0a34b351d4d76004ba20160e06a61a45f Mon Sep 17 00:00:00 2001 From: antoinehoff Date: Fri, 15 May 2026 09:26:35 -0400 Subject: [PATCH 1/4] Update the kernels with `float(expand(` instead of `float(fullratsimp(` and comment out the print statement in the unit test for bc sheath --- .../bc_sheath_gyrokinetic_ser_p1.c | 84 +++++++++---------- .../unit/ctest_bc_sheath_gyrokinetic.c | 8 +- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/gyrokinetic/ker/bc_sheath_gyrokinetic/bc_sheath_gyrokinetic_ser_p1.c b/gyrokinetic/ker/bc_sheath_gyrokinetic/bc_sheath_gyrokinetic_ser_p1.c index 319b7df3f3..d71d0a200a 100644 --- a/gyrokinetic/ker/bc_sheath_gyrokinetic/bc_sheath_gyrokinetic_ser_p1.c +++ b/gyrokinetic/ker/bc_sheath_gyrokinetic/bc_sheath_gyrokinetic_ser_p1.c @@ -180,14 +180,14 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double double vparAbsSqLo = vmap[0]>0.? vparLo*vparLo : vparUp*vparUp; double vparAbsSqUp = vmap[0]>0.? vparUp*vparUp : vparLo*vparLo; - double wv = 0.5*(vparUp+vparLo); + double wv = 0.5*vparUp+0.5*vparLo; double dv = vparUp-1.0*vparLo; double xBar, xSqBar; double fReflSurfMu[2][3] = {0.}; // node (mu)_0 - vcutSq = 0.5*((1.7320508075688772*phiWall[1]-1.7320508075688772*phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[1]+vcut_fact[0]*(-(1.7320508075688772*phiWall[1])+1.7320508075688772*phi[1]+phiWall[0]-1.0*phi[0]))*q2Dm; + vcutSq = ((0.8660254037844386*phiWall[1]-0.8660254037844386*phi[1]-0.5*phiWall[0]+0.5*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.8660254037844386*phiWall[1])+0.8660254037844386*phi[1]+0.5*phiWall[0]-0.5*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -248,7 +248,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double } // node (mu)_1 - vcutSq = -(0.5*(1.7320508075688772*phiWall[1]-1.7320508075688772*phi[1]-1.0*phiWall[0]+phi[0])*(vcut_fact[1]+vcut_fact[0])*q2Dm); + vcutSq = ((-(0.8660254037844386*phiWall[1])+0.8660254037844386*phi[1]+0.5*phiWall[0]-0.5*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.8660254037844386*phiWall[1])+0.8660254037844386*phi[1]+0.5*phiWall[0]-0.5*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -340,14 +340,14 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double double vparAbsSqLo = vmap[0]>0.? vparLo*vparLo : vparUp*vparUp; double vparAbsSqUp = vmap[0]>0.? vparUp*vparUp : vparLo*vparLo; - double wv = 0.5*(vparUp+vparLo); + double wv = 0.5*vparUp+0.5*vparLo; double dv = vparUp-1.0*vparLo; double xBar, xSqBar; double fReflSurfMu[2][3] = {0.}; // node (mu)_0 - vcutSq = -(0.5*((1.7320508075688772*phiWall[1]-1.7320508075688772*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(1.7320508075688772*phiWall[1])+1.7320508075688772*phi[1]-1.0*phiWall[0]+phi[0]))*q2Dm); + vcutSq = ((-(0.8660254037844386*phiWall[1])+0.8660254037844386*phi[1]-0.5*phiWall[0]+0.5*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.8660254037844386*phiWall[1]-0.8660254037844386*phi[1]+0.5*phiWall[0]-0.5*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -408,7 +408,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double } // node (mu)_1 - vcutSq = 0.5*(1.7320508075688772*phiWall[1]-1.7320508075688772*phi[1]+phiWall[0]-1.0*phi[0])*(vcut_fact[1]+vcut_fact[0])*q2Dm; + vcutSq = ((0.8660254037844386*phiWall[1]-0.8660254037844386*phi[1]+0.5*phiWall[0]-0.5*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.8660254037844386*phiWall[1]-0.8660254037844386*phi[1]+0.5*phiWall[0]-0.5*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -507,11 +507,11 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double // node (x)_0 - wv = 0.5*(vparUp+vparLo); + wv = 0.5*vparUp+0.5*vparLo; dv = vparUp-1.0*vparLo; // node (mu)_0 - vcutSq = 0.25*((1.7320508075688772*phiWall[3]-1.7320508075688772*(phi[3]+phiWall[2])+1.7320508075688772*phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[3]+(1.7320508075688772*vcut_fact[0]-1.7320508075688772*(vcut_fact[2]+vcut_fact[1]))*phiWall[3]+(1.7320508075688772*(vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phi[3]+(1.7320508075688772*phiWall[2]-1.7320508075688772*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[2]+(1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phiWall[2]+(1.7320508075688772*vcut_fact[0]-1.7320508075688772*vcut_fact[1])*phi[2]+(phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[1]+vcut_fact[0]*(-(1.0*phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0]))*q2Dm; + vcutSq = ((0.4330127018922193*phiWall[3]-0.4330127018922193*(phi[3]+phiWall[2])+0.4330127018922193*phi[2]-0.25*phiWall[1]+0.25*(phi[1]+phiWall[0])-0.25*phi[0])*vcut_fact[3]+(0.4330127018922193*vcut_fact[0]-0.4330127018922193*(vcut_fact[2]+vcut_fact[1]))*phiWall[3]+(0.4330127018922193*(vcut_fact[2]+vcut_fact[1])-0.4330127018922193*vcut_fact[0])*phi[3]+(0.4330127018922193*phiWall[2]-0.4330127018922193*phi[2]+0.25*phiWall[1]-0.25*(phi[1]+phiWall[0])+0.25*phi[0])*vcut_fact[2]+(0.4330127018922193*vcut_fact[1]-0.4330127018922193*vcut_fact[0])*phiWall[2]+(0.4330127018922193*vcut_fact[0]-0.4330127018922193*vcut_fact[1])*phi[2]+(0.25*phiWall[1]-0.25*(phi[1]+phiWall[0])+0.25*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.25*phiWall[1])+0.25*(phi[1]+phiWall[0])-0.25*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -572,7 +572,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double } // node (mu)_1 - vcutSq = -(0.25*((1.7320508075688772*phiWall[3]-1.7320508075688772*(phi[3]+phiWall[2])+1.7320508075688772*phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[3]+(-(1.7320508075688772*vcut_fact[2])+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phiWall[3]+(1.7320508075688772*vcut_fact[2]-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phi[3]+(1.7320508075688772*phiWall[2]-1.7320508075688772*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[2]+(1.7320508075688772*vcut_fact[0]-1.7320508075688772*vcut_fact[1])*phiWall[2]+(1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phi[2]+(-(1.0*phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[1]+vcut_fact[0]*(phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0]))*q2Dm); + vcutSq = ((-(0.4330127018922193*phiWall[3])+0.4330127018922193*(phi[3]+phiWall[2])-0.4330127018922193*phi[2]+0.25*phiWall[1]-0.25*(phi[1]+phiWall[0])+0.25*phi[0])*vcut_fact[3]+(0.4330127018922193*vcut_fact[2]-0.4330127018922193*vcut_fact[1]+0.4330127018922193*vcut_fact[0])*phiWall[3]+(-(0.4330127018922193*vcut_fact[2])+0.4330127018922193*vcut_fact[1]-0.4330127018922193*vcut_fact[0])*phi[3]+(-(0.4330127018922193*phiWall[2])+0.4330127018922193*phi[2]-0.25*phiWall[1]+0.25*(phi[1]+phiWall[0])-0.25*phi[0])*vcut_fact[2]+(0.4330127018922193*vcut_fact[1]-0.4330127018922193*vcut_fact[0])*phiWall[2]+(0.4330127018922193*vcut_fact[0]-0.4330127018922193*vcut_fact[1])*phi[2]+(0.25*phiWall[1]-0.25*(phi[1]+phiWall[0])+0.25*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.25*phiWall[1])+0.25*(phi[1]+phiWall[0])-0.25*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -641,11 +641,11 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double // node (x)_1 - wv = 0.5*(vparUp+vparLo); + wv = 0.5*vparUp+0.5*vparLo; dv = vparUp-1.0*vparLo; // node (mu)_0 - vcutSq = 0.25*((1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+1.7320508075688772*phiWall[2]-1.7320508075688772*phi[2]-1.0*phiWall[1]+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[3]+(1.7320508075688772*vcut_fact[2]-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[3]+(1.7320508075688772*(vcut_fact[1]+vcut_fact[0])-1.7320508075688772*vcut_fact[2])*phi[3]+(1.7320508075688772*phiWall[2]-1.7320508075688772*phi[2]-1.0*phiWall[1]+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[2]+(vcut_fact[1]+vcut_fact[0])*(-(1.7320508075688772*phiWall[2])+1.7320508075688772*phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0]))*q2Dm; + vcutSq = ((0.4330127018922193*phiWall[3]-0.4330127018922193*phi[3]+0.4330127018922193*phiWall[2]-0.4330127018922193*phi[2]-0.25*phiWall[1]+0.25*phi[1]-0.25*phiWall[0]+0.25*phi[0])*vcut_fact[3]+(0.4330127018922193*vcut_fact[2]-0.4330127018922193*(vcut_fact[1]+vcut_fact[0]))*phiWall[3]+(0.4330127018922193*(vcut_fact[1]+vcut_fact[0])-0.4330127018922193*vcut_fact[2])*phi[3]+(0.4330127018922193*phiWall[2]-0.4330127018922193*phi[2]-0.25*phiWall[1]+0.25*phi[1]-0.25*phiWall[0]+0.25*phi[0])*vcut_fact[2]-0.4330127018922193*(vcut_fact[1]+vcut_fact[0])*phiWall[2]+0.4330127018922193*(vcut_fact[1]+vcut_fact[0])*phi[2]+(0.25*phiWall[1]-0.25*phi[1]+0.25*phiWall[0]-0.25*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.25*phiWall[1]-0.25*phi[1]+0.25*phiWall[0]-0.25*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -706,7 +706,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double } // node (mu)_1 - vcutSq = -(0.25*(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+1.7320508075688772*phiWall[2]-1.7320508075688772*phi[2]-1.0*phiWall[1]+phi[1]-1.0*phiWall[0]+phi[0])*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*q2Dm); + vcutSq = ((-(0.4330127018922193*phiWall[3])+0.4330127018922193*phi[3]-0.4330127018922193*phiWall[2]+0.4330127018922193*phi[2]+0.25*phiWall[1]-0.25*phi[1]+0.25*phiWall[0]-0.25*phi[0])*vcut_fact[3]-0.4330127018922193*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[3]+0.4330127018922193*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[3]+(-(0.4330127018922193*phiWall[2])+0.4330127018922193*phi[2]+0.25*phiWall[1]-0.25*phi[1]+0.25*phiWall[0]-0.25*phi[0])*vcut_fact[2]-0.4330127018922193*(vcut_fact[1]+vcut_fact[0])*phiWall[2]+0.4330127018922193*(vcut_fact[1]+vcut_fact[0])*phi[2]+(0.25*phiWall[1]-0.25*phi[1]+0.25*phiWall[0]-0.25*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.25*phiWall[1]-0.25*phi[1]+0.25*phiWall[0]-0.25*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -817,11 +817,11 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double // node (x)_0 - wv = 0.5*(vparUp+vparLo); + wv = 0.5*vparUp+0.5*vparLo; dv = vparUp-1.0*vparLo; // node (mu)_0 - vcutSq = -(0.25*((1.7320508075688772*phiWall[3]-1.7320508075688772*(phi[3]+phiWall[2])+1.7320508075688772*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[3]+(1.7320508075688772*vcut_fact[0]-1.7320508075688772*(vcut_fact[2]+vcut_fact[1]))*phiWall[3]+(1.7320508075688772*(vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phi[3]+(1.7320508075688772*phiWall[2]-1.7320508075688772*phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[2]+(1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phiWall[2]+(1.7320508075688772*vcut_fact[0]-1.7320508075688772*vcut_fact[1])*phi[2]+(-(1.0*phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[1]+vcut_fact[0]*(phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0]))*q2Dm); + vcutSq = ((-(0.4330127018922193*phiWall[3])+0.4330127018922193*(phi[3]+phiWall[2])-0.4330127018922193*phi[2]-0.25*phiWall[1]+0.25*(phi[1]+phiWall[0])-0.25*phi[0])*vcut_fact[3]+(0.4330127018922193*(vcut_fact[2]+vcut_fact[1])-0.4330127018922193*vcut_fact[0])*phiWall[3]+(0.4330127018922193*vcut_fact[0]-0.4330127018922193*(vcut_fact[2]+vcut_fact[1]))*phi[3]+(-(0.4330127018922193*phiWall[2])+0.4330127018922193*phi[2]+0.25*phiWall[1]-0.25*(phi[1]+phiWall[0])+0.25*phi[0])*vcut_fact[2]+(0.4330127018922193*vcut_fact[0]-0.4330127018922193*vcut_fact[1])*phiWall[2]+(0.4330127018922193*vcut_fact[1]-0.4330127018922193*vcut_fact[0])*phi[2]+(0.25*phiWall[1]-0.25*(phi[1]+phiWall[0])+0.25*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.25*phiWall[1])+0.25*(phi[1]+phiWall[0])-0.25*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -882,7 +882,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double } // node (mu)_1 - vcutSq = 0.25*((1.7320508075688772*phiWall[3]-1.7320508075688772*(phi[3]+phiWall[2])+1.7320508075688772*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[3]+(-(1.7320508075688772*vcut_fact[2])+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phiWall[3]+(1.7320508075688772*vcut_fact[2]-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phi[3]+(1.7320508075688772*phiWall[2]-1.7320508075688772*phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[2]+(1.7320508075688772*vcut_fact[0]-1.7320508075688772*vcut_fact[1])*phiWall[2]+(1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phi[2]+(phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[1]+vcut_fact[0]*(-(1.0*phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0]))*q2Dm; + vcutSq = ((0.4330127018922193*phiWall[3]-0.4330127018922193*(phi[3]+phiWall[2])+0.4330127018922193*phi[2]+0.25*phiWall[1]-0.25*(phi[1]+phiWall[0])+0.25*phi[0])*vcut_fact[3]+(-(0.4330127018922193*vcut_fact[2])+0.4330127018922193*vcut_fact[1]-0.4330127018922193*vcut_fact[0])*phiWall[3]+(0.4330127018922193*vcut_fact[2]-0.4330127018922193*vcut_fact[1]+0.4330127018922193*vcut_fact[0])*phi[3]+(0.4330127018922193*phiWall[2]-0.4330127018922193*phi[2]-0.25*phiWall[1]+0.25*(phi[1]+phiWall[0])-0.25*phi[0])*vcut_fact[2]+(0.4330127018922193*vcut_fact[0]-0.4330127018922193*vcut_fact[1])*phiWall[2]+(0.4330127018922193*vcut_fact[1]-0.4330127018922193*vcut_fact[0])*phi[2]+(0.25*phiWall[1]-0.25*(phi[1]+phiWall[0])+0.25*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.25*phiWall[1])+0.25*(phi[1]+phiWall[0])-0.25*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -951,11 +951,11 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double // node (x)_1 - wv = 0.5*(vparUp+vparLo); + wv = 0.5*vparUp+0.5*vparLo; dv = vparUp-1.0*vparLo; // node (mu)_0 - vcutSq = -(0.25*((1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+1.7320508075688772*phiWall[2]-1.7320508075688772*phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[3]+(1.7320508075688772*vcut_fact[2]-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[3]+(1.7320508075688772*(vcut_fact[1]+vcut_fact[0])-1.7320508075688772*vcut_fact[2])*phi[3]+(1.7320508075688772*phiWall[2]-1.7320508075688772*phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[2]+(vcut_fact[1]+vcut_fact[0])*(-(1.7320508075688772*phiWall[2])+1.7320508075688772*phi[2]-1.0*phiWall[1]+phi[1]-1.0*phiWall[0]+phi[0]))*q2Dm); + vcutSq = ((-(0.4330127018922193*phiWall[3])+0.4330127018922193*phi[3]-0.4330127018922193*phiWall[2]+0.4330127018922193*phi[2]-0.25*phiWall[1]+0.25*phi[1]-0.25*phiWall[0]+0.25*phi[0])*vcut_fact[3]+(0.4330127018922193*(vcut_fact[1]+vcut_fact[0])-0.4330127018922193*vcut_fact[2])*phiWall[3]+(0.4330127018922193*vcut_fact[2]-0.4330127018922193*(vcut_fact[1]+vcut_fact[0]))*phi[3]+(-(0.4330127018922193*phiWall[2])+0.4330127018922193*phi[2]-0.25*phiWall[1]+0.25*phi[1]-0.25*phiWall[0]+0.25*phi[0])*vcut_fact[2]+0.4330127018922193*(vcut_fact[1]+vcut_fact[0])*phiWall[2]-0.4330127018922193*(vcut_fact[1]+vcut_fact[0])*phi[2]+(0.25*phiWall[1]-0.25*phi[1]+0.25*phiWall[0]-0.25*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.25*phiWall[1]-0.25*phi[1]+0.25*phiWall[0]-0.25*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1016,7 +1016,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double } // node (mu)_1 - vcutSq = 0.25*(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+1.7320508075688772*phiWall[2]-1.7320508075688772*phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*q2Dm; + vcutSq = ((0.4330127018922193*phiWall[3]-0.4330127018922193*phi[3]+0.4330127018922193*phiWall[2]-0.4330127018922193*phi[2]+0.25*phiWall[1]-0.25*phi[1]+0.25*phiWall[0]-0.25*phi[0])*vcut_fact[3]+0.4330127018922193*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[3]-0.4330127018922193*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[3]+(0.4330127018922193*phiWall[2]-0.4330127018922193*phi[2]+0.25*phiWall[1]-0.25*phi[1]+0.25*phiWall[0]-0.25*phi[0])*vcut_fact[2]+0.4330127018922193*(vcut_fact[1]+vcut_fact[0])*phiWall[2]-0.4330127018922193*(vcut_fact[1]+vcut_fact[0])*phi[2]+(0.25*phiWall[1]-0.25*phi[1]+0.25*phiWall[0]-0.25*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.25*phiWall[1]-0.25*phi[1]+0.25*phiWall[0]-0.25*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1126,11 +1126,11 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double // node (x,y)_0 - wv = 0.5*(vparUp+vparLo); + wv = 0.5*vparUp+0.5*vparLo; dv = vparUp-1.0*vparLo; // node (mu)_0 - vcutSq = 0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*(phi[7]+phiWall[6])+1.7320508075688772*phi[6]-1.7320508075688772*phiWall[5]+1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[7]+(-(1.7320508075688772*(vcut_fact[6]+vcut_fact[5]+vcut_fact[4]))+1.7320508075688772*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phiWall[7]+(1.7320508075688772*(vcut_fact[6]+vcut_fact[5]+vcut_fact[4])-1.7320508075688772*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])+1.7320508075688772*vcut_fact[0])*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*phi[6]+1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[6]+(1.7320508075688772*(vcut_fact[5]+vcut_fact[4])-1.7320508075688772*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])+1.7320508075688772*vcut_fact[0])*phiWall[6]+(-(1.7320508075688772*(vcut_fact[5]+vcut_fact[4]))+1.7320508075688772*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[5]+(1.7320508075688772*vcut_fact[4]-1.7320508075688772*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])+1.7320508075688772*vcut_fact[0])*phiWall[5]+(-(1.7320508075688772*vcut_fact[4])+1.7320508075688772*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phi[5]+(phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[4]+(vcut_fact[0]-1.0*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1]))*phiWall[4]+(vcut_fact[3]+vcut_fact[2]+vcut_fact[1]-1.0*vcut_fact[0])*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[3]+(1.7320508075688772*(vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phiWall[3]+(1.7320508075688772*vcut_fact[0]-1.7320508075688772*(vcut_fact[2]+vcut_fact[1]))*phi[3]+(phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[2]+(vcut_fact[1]-1.0*vcut_fact[0])*phiWall[2]+(vcut_fact[0]-1.0*vcut_fact[1])*phi[2]+(phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[1]+vcut_fact[0]*(-(1.0*phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0]))*q2Dm; + vcutSq = ((0.21650635094610965*phiWall[7]-0.21650635094610965*(phi[7]+phiWall[6])+0.21650635094610965*phi[6]-0.21650635094610965*phiWall[5]+0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[7]+(-(0.21650635094610965*(vcut_fact[6]+vcut_fact[5]+vcut_fact[4]))+0.21650635094610965*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phiWall[7]+(0.21650635094610965*(vcut_fact[6]+vcut_fact[5]+vcut_fact[4])-0.21650635094610965*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])+0.21650635094610965*vcut_fact[0])*phi[7]+(0.21650635094610965*phiWall[6]-0.21650635094610965*phi[6]+0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[6]+(0.21650635094610965*(vcut_fact[5]+vcut_fact[4])-0.21650635094610965*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])+0.21650635094610965*vcut_fact[0])*phiWall[6]+(-(0.21650635094610965*(vcut_fact[5]+vcut_fact[4]))+0.21650635094610965*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phi[6]+(0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[5]+(0.21650635094610965*vcut_fact[4]-0.21650635094610965*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])+0.21650635094610965*vcut_fact[0])*phiWall[5]+(-(0.21650635094610965*vcut_fact[4])+0.21650635094610965*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phi[5]+(0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[4]+(0.125*vcut_fact[0]-0.125*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1]))*phiWall[4]+(0.125*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-0.125*vcut_fact[0])*phi[4]+(0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[3]+(0.21650635094610965*(vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phiWall[3]+(0.21650635094610965*vcut_fact[0]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]))*phi[3]+(0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[2]+(0.125*vcut_fact[1]-0.125*vcut_fact[0])*phiWall[2]+(0.125*vcut_fact[0]-0.125*vcut_fact[1])*phi[2]+(0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.125*phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1191,7 +1191,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double } // node (mu)_1 - vcutSq = -(0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*(phi[7]+phiWall[6])+1.7320508075688772*phi[6]-1.7320508075688772*phiWall[5]+1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[7]+(-(1.7320508075688772*(vcut_fact[6]+vcut_fact[5]))+1.7320508075688772*(vcut_fact[4]+vcut_fact[3])-1.7320508075688772*(vcut_fact[2]+vcut_fact[1])+1.7320508075688772*vcut_fact[0])*phiWall[7]+(1.7320508075688772*(vcut_fact[6]+vcut_fact[5])-1.7320508075688772*(vcut_fact[4]+vcut_fact[3])+1.7320508075688772*(vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*phi[6]+1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[6]+(1.7320508075688772*vcut_fact[5]-1.7320508075688772*(vcut_fact[4]+vcut_fact[3])+1.7320508075688772*(vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phiWall[6]+(-(1.7320508075688772*vcut_fact[5])+1.7320508075688772*(vcut_fact[4]+vcut_fact[3])-1.7320508075688772*(vcut_fact[2]+vcut_fact[1])+1.7320508075688772*vcut_fact[0])*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[5]+(-(1.7320508075688772*(vcut_fact[4]+vcut_fact[3]))+1.7320508075688772*(vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phiWall[5]+(1.7320508075688772*(vcut_fact[4]+vcut_fact[3])-1.7320508075688772*(vcut_fact[2]+vcut_fact[1])+1.7320508075688772*vcut_fact[0])*phi[5]+(-(1.0*phiWall[4])+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[4]+(-(1.0*vcut_fact[3])+vcut_fact[2]+vcut_fact[1]-1.0*vcut_fact[0])*phiWall[4]+(vcut_fact[3]-1.0*(vcut_fact[2]+vcut_fact[1])+vcut_fact[0])*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[3]+(1.7320508075688772*vcut_fact[0]-1.7320508075688772*(vcut_fact[2]+vcut_fact[1]))*phiWall[3]+(1.7320508075688772*(vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phi[3]+(-(1.0*phiWall[2])+phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[2]+(vcut_fact[0]-1.0*vcut_fact[1])*phiWall[2]+(vcut_fact[1]-1.0*vcut_fact[0])*phi[2]+(-(1.0*phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[1]+vcut_fact[0]*(phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0]))*q2Dm); + vcutSq = ((-(0.21650635094610965*phiWall[7])+0.21650635094610965*(phi[7]+phiWall[6])-0.21650635094610965*phi[6]+0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[7]+(0.21650635094610965*(vcut_fact[6]+vcut_fact[5])-0.21650635094610965*(vcut_fact[4]+vcut_fact[3])+0.21650635094610965*(vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phiWall[7]+(-(0.21650635094610965*(vcut_fact[6]+vcut_fact[5]))+0.21650635094610965*(vcut_fact[4]+vcut_fact[3])-0.21650635094610965*(vcut_fact[2]+vcut_fact[1])+0.21650635094610965*vcut_fact[0])*phi[7]+(-(0.21650635094610965*phiWall[6])+0.21650635094610965*phi[6]-0.21650635094610965*phiWall[5]+0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[6]+(-(0.21650635094610965*vcut_fact[5])+0.21650635094610965*(vcut_fact[4]+vcut_fact[3])-0.21650635094610965*(vcut_fact[2]+vcut_fact[1])+0.21650635094610965*vcut_fact[0])*phiWall[6]+(0.21650635094610965*vcut_fact[5]-0.21650635094610965*(vcut_fact[4]+vcut_fact[3])+0.21650635094610965*(vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phi[6]+(-(0.21650635094610965*phiWall[5])+0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[5]+(0.21650635094610965*(vcut_fact[4]+vcut_fact[3])-0.21650635094610965*(vcut_fact[2]+vcut_fact[1])+0.21650635094610965*vcut_fact[0])*phiWall[5]+(-(0.21650635094610965*(vcut_fact[4]+vcut_fact[3]))+0.21650635094610965*(vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phi[5]+(0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[4]+(0.125*vcut_fact[3]-0.125*(vcut_fact[2]+vcut_fact[1])+0.125*vcut_fact[0])*phiWall[4]+(-(0.125*vcut_fact[3])+0.125*(vcut_fact[2]+vcut_fact[1])-0.125*vcut_fact[0])*phi[4]+(-(0.21650635094610965*phiWall[3])+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[3]+(0.21650635094610965*(vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phiWall[3]+(0.21650635094610965*vcut_fact[0]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]))*phi[3]+(0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[2]+(0.125*vcut_fact[1]-0.125*vcut_fact[0])*phiWall[2]+(0.125*vcut_fact[0]-0.125*vcut_fact[1])*phi[2]+(0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.125*phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1260,11 +1260,11 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double // node (x,y)_1 - wv = 0.5*(vparUp+vparLo); + wv = 0.5*vparUp+0.5*vparLo; dv = vparUp-1.0*vparLo; // node (mu)_0 - vcutSq = 0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*(phi[7]+phiWall[6])+1.7320508075688772*(phi[6]+phiWall[5])-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[7]+(-(1.7320508075688772*vcut_fact[6])+1.7320508075688772*vcut_fact[5]-1.7320508075688772*(vcut_fact[4]+vcut_fact[3])+1.7320508075688772*vcut_fact[2]-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phiWall[7]+(1.7320508075688772*vcut_fact[6]-1.7320508075688772*vcut_fact[5]+1.7320508075688772*(vcut_fact[4]+vcut_fact[3])-1.7320508075688772*vcut_fact[2]+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*(phi[6]+phiWall[5])+1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[6]+(-(1.7320508075688772*vcut_fact[5])+1.7320508075688772*(vcut_fact[4]+vcut_fact[3])-1.7320508075688772*vcut_fact[2]+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phiWall[6]+(1.7320508075688772*vcut_fact[5]-1.7320508075688772*(vcut_fact[4]+vcut_fact[3])+1.7320508075688772*vcut_fact[2]-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[5]+(-(1.7320508075688772*(vcut_fact[4]+vcut_fact[3]))+1.7320508075688772*vcut_fact[2]-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phiWall[5]+(1.7320508075688772*(vcut_fact[4]+vcut_fact[3])-1.7320508075688772*vcut_fact[2]+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phi[5]+(phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[4]+(vcut_fact[3]-1.0*vcut_fact[2]+vcut_fact[1]-1.0*vcut_fact[0])*phiWall[4]+(-(1.0*vcut_fact[3])+vcut_fact[2]-1.0*vcut_fact[1]+vcut_fact[0])*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[3]+(-(1.7320508075688772*vcut_fact[2])+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phiWall[3]+(1.7320508075688772*vcut_fact[2]-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phi[3]+(phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[2]+(vcut_fact[0]-1.0*vcut_fact[1])*phiWall[2]+(vcut_fact[1]-1.0*vcut_fact[0])*phi[2]+(phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[1]+vcut_fact[0]*(-(1.0*phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0]))*q2Dm; + vcutSq = ((0.21650635094610965*phiWall[7]-0.21650635094610965*(phi[7]+phiWall[6])+0.21650635094610965*(phi[6]+phiWall[5])-0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[7]+(-(0.21650635094610965*vcut_fact[6])+0.21650635094610965*vcut_fact[5]-0.21650635094610965*(vcut_fact[4]+vcut_fact[3])+0.21650635094610965*vcut_fact[2]-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phiWall[7]+(0.21650635094610965*vcut_fact[6]-0.21650635094610965*vcut_fact[5]+0.21650635094610965*(vcut_fact[4]+vcut_fact[3])-0.21650635094610965*vcut_fact[2]+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phi[7]+(0.21650635094610965*phiWall[6]-0.21650635094610965*(phi[6]+phiWall[5])+0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[6]+(-(0.21650635094610965*vcut_fact[5])+0.21650635094610965*(vcut_fact[4]+vcut_fact[3])-0.21650635094610965*vcut_fact[2]+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phiWall[6]+(0.21650635094610965*vcut_fact[5]-0.21650635094610965*(vcut_fact[4]+vcut_fact[3])+0.21650635094610965*vcut_fact[2]-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phi[6]+(0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[5]+(-(0.21650635094610965*(vcut_fact[4]+vcut_fact[3]))+0.21650635094610965*vcut_fact[2]-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phiWall[5]+(0.21650635094610965*(vcut_fact[4]+vcut_fact[3])-0.21650635094610965*vcut_fact[2]+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phi[5]+(0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[4]+(0.125*vcut_fact[3]-0.125*vcut_fact[2]+0.125*vcut_fact[1]-0.125*vcut_fact[0])*phiWall[4]+(-(0.125*vcut_fact[3])+0.125*vcut_fact[2]-0.125*vcut_fact[1]+0.125*vcut_fact[0])*phi[4]+(0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[3]+(-(0.21650635094610965*vcut_fact[2])+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phiWall[3]+(0.21650635094610965*vcut_fact[2]-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phi[3]+(0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[2]+(0.125*vcut_fact[0]-0.125*vcut_fact[1])*phiWall[2]+(0.125*vcut_fact[1]-0.125*vcut_fact[0])*phi[2]+(0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.125*phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1325,7 +1325,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double } // node (mu)_1 - vcutSq = -(0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*(phi[7]+phiWall[6])+1.7320508075688772*(phi[6]+phiWall[5])-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[7]+(-(1.7320508075688772*vcut_fact[6])+1.7320508075688772*(vcut_fact[5]+vcut_fact[4])-1.7320508075688772*(vcut_fact[3]+vcut_fact[2])+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phiWall[7]+(1.7320508075688772*vcut_fact[6]-1.7320508075688772*(vcut_fact[5]+vcut_fact[4])+1.7320508075688772*(vcut_fact[3]+vcut_fact[2])-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*(phi[6]+phiWall[5])+1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[6]+(-(1.7320508075688772*(vcut_fact[5]+vcut_fact[4]))+1.7320508075688772*(vcut_fact[3]+vcut_fact[2])-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phiWall[6]+(1.7320508075688772*(vcut_fact[5]+vcut_fact[4])-1.7320508075688772*(vcut_fact[3]+vcut_fact[2])+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[5]+(1.7320508075688772*vcut_fact[4]-1.7320508075688772*(vcut_fact[3]+vcut_fact[2])+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phiWall[5]+(-(1.7320508075688772*vcut_fact[4])+1.7320508075688772*(vcut_fact[3]+vcut_fact[2])-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phi[5]+(-(1.0*phiWall[4])+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[4]+(vcut_fact[3]+vcut_fact[2]-1.0*vcut_fact[1]+vcut_fact[0])*phiWall[4]+(-(1.0*(vcut_fact[3]+vcut_fact[2]))+vcut_fact[1]-1.0*vcut_fact[0])*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[3]+(1.7320508075688772*vcut_fact[2]-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phiWall[3]+(-(1.7320508075688772*vcut_fact[2])+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phi[3]+(-(1.0*phiWall[2])+phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[2]+(vcut_fact[1]-1.0*vcut_fact[0])*phiWall[2]+(vcut_fact[0]-1.0*vcut_fact[1])*phi[2]+(-(1.0*phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[1]+vcut_fact[0]*(phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0]))*q2Dm); + vcutSq = ((-(0.21650635094610965*phiWall[7])+0.21650635094610965*(phi[7]+phiWall[6])-0.21650635094610965*(phi[6]+phiWall[5])+0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[7]+(0.21650635094610965*vcut_fact[6]-0.21650635094610965*(vcut_fact[5]+vcut_fact[4])+0.21650635094610965*(vcut_fact[3]+vcut_fact[2])-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phiWall[7]+(-(0.21650635094610965*vcut_fact[6])+0.21650635094610965*(vcut_fact[5]+vcut_fact[4])-0.21650635094610965*(vcut_fact[3]+vcut_fact[2])+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phi[7]+(-(0.21650635094610965*phiWall[6])+0.21650635094610965*(phi[6]+phiWall[5])-0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[6]+(0.21650635094610965*(vcut_fact[5]+vcut_fact[4])-0.21650635094610965*(vcut_fact[3]+vcut_fact[2])+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phiWall[6]+(-(0.21650635094610965*(vcut_fact[5]+vcut_fact[4]))+0.21650635094610965*(vcut_fact[3]+vcut_fact[2])-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phi[6]+(-(0.21650635094610965*phiWall[5])+0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[5]+(-(0.21650635094610965*vcut_fact[4])+0.21650635094610965*(vcut_fact[3]+vcut_fact[2])-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phiWall[5]+(0.21650635094610965*vcut_fact[4]-0.21650635094610965*(vcut_fact[3]+vcut_fact[2])+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phi[5]+(0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[4]+(-(0.125*(vcut_fact[3]+vcut_fact[2]))+0.125*vcut_fact[1]-0.125*vcut_fact[0])*phiWall[4]+(0.125*(vcut_fact[3]+vcut_fact[2])-0.125*vcut_fact[1]+0.125*vcut_fact[0])*phi[4]+(-(0.21650635094610965*phiWall[3])+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[3]+(-(0.21650635094610965*vcut_fact[2])+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phiWall[3]+(0.21650635094610965*vcut_fact[2]-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phi[3]+(0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[2]+(0.125*vcut_fact[0]-0.125*vcut_fact[1])*phiWall[2]+(0.125*vcut_fact[1]-0.125*vcut_fact[0])*phi[2]+(0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.125*phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1394,11 +1394,11 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double // node (x,y)_2 - wv = 0.5*(vparUp+vparLo); + wv = 0.5*vparUp+0.5*vparLo; dv = vparUp-1.0*vparLo; // node (mu)_0 - vcutSq = 0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*phi[7]+1.7320508075688772*phiWall[6]-1.7320508075688772*(phi[6]+phiWall[5])+1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[7]+(1.7320508075688772*vcut_fact[6]-1.7320508075688772*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2])+1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[7]+(-(1.7320508075688772*vcut_fact[6])+1.7320508075688772*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2])-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*(phi[6]+phiWall[5])+1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[6]+(1.7320508075688772*(vcut_fact[1]+vcut_fact[0])-1.7320508075688772*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]))*phiWall[6]+(1.7320508075688772*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2])-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[5]+(1.7320508075688772*(vcut_fact[4]+vcut_fact[3]+vcut_fact[2])-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[5]+(1.7320508075688772*(vcut_fact[1]+vcut_fact[0])-1.7320508075688772*(vcut_fact[4]+vcut_fact[3]+vcut_fact[2]))*phi[5]+(phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[4]+(vcut_fact[3]+vcut_fact[2]-1.0*(vcut_fact[1]+vcut_fact[0]))*phiWall[4]+(-(1.0*(vcut_fact[3]+vcut_fact[2]))+vcut_fact[1]+vcut_fact[0])*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[3]+(1.7320508075688772*vcut_fact[2]-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[3]+(1.7320508075688772*(vcut_fact[1]+vcut_fact[0])-1.7320508075688772*vcut_fact[2])*phi[3]+(phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[2]+(vcut_fact[1]+vcut_fact[0])*(-(1.0*phiWall[2])+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0]))*q2Dm; + vcutSq = ((0.21650635094610965*phiWall[7]-0.21650635094610965*phi[7]+0.21650635094610965*phiWall[6]-0.21650635094610965*(phi[6]+phiWall[5])+0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[7]+(0.21650635094610965*vcut_fact[6]-0.21650635094610965*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2])+0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phiWall[7]+(-(0.21650635094610965*vcut_fact[6])+0.21650635094610965*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2])-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phi[7]+(0.21650635094610965*phiWall[6]-0.21650635094610965*(phi[6]+phiWall[5])+0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[6]+(0.21650635094610965*(vcut_fact[1]+vcut_fact[0])-0.21650635094610965*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]))*phiWall[6]+(0.21650635094610965*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2])-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phi[6]+(0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[5]+(0.21650635094610965*(vcut_fact[4]+vcut_fact[3]+vcut_fact[2])-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phiWall[5]+(0.21650635094610965*(vcut_fact[1]+vcut_fact[0])-0.21650635094610965*(vcut_fact[4]+vcut_fact[3]+vcut_fact[2]))*phi[5]+(0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[4]+(0.125*(vcut_fact[3]+vcut_fact[2])-0.125*(vcut_fact[1]+vcut_fact[0]))*phiWall[4]+(0.125*(vcut_fact[1]+vcut_fact[0])-0.125*(vcut_fact[3]+vcut_fact[2]))*phi[4]+(0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[3]+(0.21650635094610965*vcut_fact[2]-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phiWall[3]+(0.21650635094610965*(vcut_fact[1]+vcut_fact[0])-0.21650635094610965*vcut_fact[2])*phi[3]+(0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[2]-0.125*(vcut_fact[1]+vcut_fact[0])*phiWall[2]+0.125*(vcut_fact[1]+vcut_fact[0])*phi[2]+(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1459,7 +1459,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double } // node (mu)_1 - vcutSq = -(0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*phi[7]+1.7320508075688772*phiWall[6]-1.7320508075688772*(phi[6]+phiWall[5])+1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[7]+(1.7320508075688772*vcut_fact[6]-1.7320508075688772*vcut_fact[5]+1.7320508075688772*vcut_fact[4]-1.7320508075688772*vcut_fact[3]+1.7320508075688772*vcut_fact[2]-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[7]+(-(1.7320508075688772*vcut_fact[6])+1.7320508075688772*vcut_fact[5]-1.7320508075688772*vcut_fact[4]+1.7320508075688772*vcut_fact[3]-1.7320508075688772*vcut_fact[2]+1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*(phi[6]+phiWall[5])+1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[6]+(-(1.7320508075688772*vcut_fact[5])+1.7320508075688772*vcut_fact[4]-1.7320508075688772*vcut_fact[3]+1.7320508075688772*vcut_fact[2]-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[6]+(1.7320508075688772*vcut_fact[5]-1.7320508075688772*vcut_fact[4]+1.7320508075688772*vcut_fact[3]-1.7320508075688772*vcut_fact[2]+1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[5]+(-(1.7320508075688772*vcut_fact[4])+1.7320508075688772*vcut_fact[3]-1.7320508075688772*vcut_fact[2]+1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[5]+(1.7320508075688772*vcut_fact[4]-1.7320508075688772*vcut_fact[3]+1.7320508075688772*vcut_fact[2]-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phi[5]+(-(1.0*phiWall[4])+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[4]+(vcut_fact[3]-1.0*vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[4]+(-(1.0*vcut_fact[3])+vcut_fact[2]-1.0*(vcut_fact[1]+vcut_fact[0]))*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[3]+(1.7320508075688772*(vcut_fact[1]+vcut_fact[0])-1.7320508075688772*vcut_fact[2])*phiWall[3]+(1.7320508075688772*vcut_fact[2]-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phi[3]+(-(1.0*phiWall[2])+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[2]+(vcut_fact[1]+vcut_fact[0])*(phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0]))*q2Dm); + vcutSq = ((-(0.21650635094610965*phiWall[7])+0.21650635094610965*phi[7]-0.21650635094610965*phiWall[6]+0.21650635094610965*(phi[6]+phiWall[5])-0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[7]+(-(0.21650635094610965*vcut_fact[6])+0.21650635094610965*vcut_fact[5]-0.21650635094610965*vcut_fact[4]+0.21650635094610965*vcut_fact[3]-0.21650635094610965*vcut_fact[2]+0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phiWall[7]+(0.21650635094610965*vcut_fact[6]-0.21650635094610965*vcut_fact[5]+0.21650635094610965*vcut_fact[4]-0.21650635094610965*vcut_fact[3]+0.21650635094610965*vcut_fact[2]-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phi[7]+(-(0.21650635094610965*phiWall[6])+0.21650635094610965*(phi[6]+phiWall[5])-0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[6]+(0.21650635094610965*vcut_fact[5]-0.21650635094610965*vcut_fact[4]+0.21650635094610965*vcut_fact[3]-0.21650635094610965*vcut_fact[2]+0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phiWall[6]+(-(0.21650635094610965*vcut_fact[5])+0.21650635094610965*vcut_fact[4]-0.21650635094610965*vcut_fact[3]+0.21650635094610965*vcut_fact[2]-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phi[6]+(-(0.21650635094610965*phiWall[5])+0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[5]+(0.21650635094610965*vcut_fact[4]-0.21650635094610965*vcut_fact[3]+0.21650635094610965*vcut_fact[2]-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phiWall[5]+(-(0.21650635094610965*vcut_fact[4])+0.21650635094610965*vcut_fact[3]-0.21650635094610965*vcut_fact[2]+0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phi[5]+(0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[4]+(-(0.125*vcut_fact[3])+0.125*vcut_fact[2]-0.125*(vcut_fact[1]+vcut_fact[0]))*phiWall[4]+(0.125*vcut_fact[3]-0.125*vcut_fact[2]+0.125*(vcut_fact[1]+vcut_fact[0]))*phi[4]+(-(0.21650635094610965*phiWall[3])+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[3]+(0.21650635094610965*vcut_fact[2]-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phiWall[3]+(0.21650635094610965*(vcut_fact[1]+vcut_fact[0])-0.21650635094610965*vcut_fact[2])*phi[3]+(0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[2]-0.125*(vcut_fact[1]+vcut_fact[0])*phiWall[2]+0.125*(vcut_fact[1]+vcut_fact[0])*phi[2]+(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1528,11 +1528,11 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double // node (x,y)_3 - wv = 0.5*(vparUp+vparLo); + wv = 0.5*vparUp+0.5*vparLo; dv = vparUp-1.0*vparLo; // node (mu)_0 - vcutSq = 0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*phi[7]+1.7320508075688772*phiWall[6]-1.7320508075688772*phi[6]+1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[7]+(1.7320508075688772*(vcut_fact[6]+vcut_fact[5])-1.7320508075688772*vcut_fact[4]+1.7320508075688772*vcut_fact[3]-1.7320508075688772*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[7]+(-(1.7320508075688772*(vcut_fact[6]+vcut_fact[5]))+1.7320508075688772*vcut_fact[4]-1.7320508075688772*vcut_fact[3]+1.7320508075688772*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*phi[6]+1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[6]+(1.7320508075688772*vcut_fact[5]-1.7320508075688772*vcut_fact[4]+1.7320508075688772*vcut_fact[3]-1.7320508075688772*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[6]+(-(1.7320508075688772*vcut_fact[5])+1.7320508075688772*vcut_fact[4]-1.7320508075688772*vcut_fact[3]+1.7320508075688772*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[5]+(-(1.7320508075688772*vcut_fact[4])+1.7320508075688772*vcut_fact[3]-1.7320508075688772*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[5]+(1.7320508075688772*vcut_fact[4]-1.7320508075688772*vcut_fact[3]+1.7320508075688772*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[5]+(phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[4]+(-(1.0*vcut_fact[3])+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[4]+(vcut_fact[3]-1.0*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[3]+(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*(-(1.7320508075688772*phiWall[3])+1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0]))*q2Dm; + vcutSq = ((0.21650635094610965*phiWall[7]-0.21650635094610965*phi[7]+0.21650635094610965*phiWall[6]-0.21650635094610965*phi[6]+0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[7]+(0.21650635094610965*(vcut_fact[6]+vcut_fact[5])-0.21650635094610965*vcut_fact[4]+0.21650635094610965*vcut_fact[3]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[7]+(-(0.21650635094610965*(vcut_fact[6]+vcut_fact[5]))+0.21650635094610965*vcut_fact[4]-0.21650635094610965*vcut_fact[3]+0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[7]+(0.21650635094610965*phiWall[6]-0.21650635094610965*phi[6]+0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[6]+(0.21650635094610965*vcut_fact[5]-0.21650635094610965*vcut_fact[4]+0.21650635094610965*vcut_fact[3]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[6]+(-(0.21650635094610965*vcut_fact[5])+0.21650635094610965*vcut_fact[4]-0.21650635094610965*vcut_fact[3]+0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[6]+(0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[5]+(-(0.21650635094610965*vcut_fact[4])+0.21650635094610965*vcut_fact[3]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[5]+(0.21650635094610965*vcut_fact[4]-0.21650635094610965*vcut_fact[3]+0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[5]+(0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[4]+(0.125*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])-0.125*vcut_fact[3])*phiWall[4]+(0.125*vcut_fact[3]-0.125*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[4]+(0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[3]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[3]+0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[3]+(0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[2]+0.125*(vcut_fact[1]+vcut_fact[0])*phiWall[2]-0.125*(vcut_fact[1]+vcut_fact[0])*phi[2]+(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1593,7 +1593,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double } // node (mu)_1 - vcutSq = -(0.125*(1.7320508075688772*phiWall[7]-1.7320508075688772*phi[7]+1.7320508075688772*phiWall[6]-1.7320508075688772*phi[6]+1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]-1.0*phiWall[0]+phi[0])*(vcut_fact[7]+vcut_fact[6]+vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*q2Dm); + vcutSq = ((-(0.21650635094610965*phiWall[7])+0.21650635094610965*phi[7]-0.21650635094610965*phiWall[6]+0.21650635094610965*phi[6]-0.21650635094610965*phiWall[5]+0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[7]-0.21650635094610965*(vcut_fact[6]+vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[7]+0.21650635094610965*(vcut_fact[6]+vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[7]+(-(0.21650635094610965*phiWall[6])+0.21650635094610965*phi[6]-0.21650635094610965*phiWall[5]+0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[6]-0.21650635094610965*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[6]+0.21650635094610965*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[6]+(-(0.21650635094610965*phiWall[5])+0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[5]-0.21650635094610965*(vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[5]+0.21650635094610965*(vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[5]+(0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[4]+0.125*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[4]-0.125*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[4]+(-(0.21650635094610965*phiWall[3])+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[3]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[3]+0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[3]+(0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[2]+0.125*(vcut_fact[1]+vcut_fact[0])*phiWall[2]-0.125*(vcut_fact[1]+vcut_fact[0])*phi[2]+(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1727,11 +1727,11 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double // node (x,y)_0 - wv = 0.5*(vparUp+vparLo); + wv = 0.5*vparUp+0.5*vparLo; dv = vparUp-1.0*vparLo; // node (mu)_0 - vcutSq = -(0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*(phi[7]+phiWall[6])+1.7320508075688772*phi[6]-1.7320508075688772*phiWall[5]+1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[7]+(-(1.7320508075688772*(vcut_fact[6]+vcut_fact[5]+vcut_fact[4]))+1.7320508075688772*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phiWall[7]+(1.7320508075688772*(vcut_fact[6]+vcut_fact[5]+vcut_fact[4])-1.7320508075688772*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])+1.7320508075688772*vcut_fact[0])*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*phi[6]+1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[6]+(1.7320508075688772*(vcut_fact[5]+vcut_fact[4])-1.7320508075688772*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])+1.7320508075688772*vcut_fact[0])*phiWall[6]+(-(1.7320508075688772*(vcut_fact[5]+vcut_fact[4]))+1.7320508075688772*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[5]+(1.7320508075688772*vcut_fact[4]-1.7320508075688772*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])+1.7320508075688772*vcut_fact[0])*phiWall[5]+(-(1.7320508075688772*vcut_fact[4])+1.7320508075688772*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phi[5]+(-(1.0*phiWall[4])+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[4]+(vcut_fact[3]+vcut_fact[2]+vcut_fact[1]-1.0*vcut_fact[0])*phiWall[4]+(vcut_fact[0]-1.0*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1]))*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[3]+(1.7320508075688772*(vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phiWall[3]+(1.7320508075688772*vcut_fact[0]-1.7320508075688772*(vcut_fact[2]+vcut_fact[1]))*phi[3]+(-(1.0*phiWall[2])+phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[2]+(vcut_fact[0]-1.0*vcut_fact[1])*phiWall[2]+(vcut_fact[1]-1.0*vcut_fact[0])*phi[2]+(-(1.0*phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[1]+vcut_fact[0]*(phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0]))*q2Dm); + vcutSq = ((-(0.21650635094610965*phiWall[7])+0.21650635094610965*(phi[7]+phiWall[6])-0.21650635094610965*phi[6]+0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[7]+(0.21650635094610965*(vcut_fact[6]+vcut_fact[5]+vcut_fact[4])-0.21650635094610965*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])+0.21650635094610965*vcut_fact[0])*phiWall[7]+(-(0.21650635094610965*(vcut_fact[6]+vcut_fact[5]+vcut_fact[4]))+0.21650635094610965*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phi[7]+(-(0.21650635094610965*phiWall[6])+0.21650635094610965*phi[6]-0.21650635094610965*phiWall[5]+0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[6]+(-(0.21650635094610965*(vcut_fact[5]+vcut_fact[4]))+0.21650635094610965*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phiWall[6]+(0.21650635094610965*(vcut_fact[5]+vcut_fact[4])-0.21650635094610965*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])+0.21650635094610965*vcut_fact[0])*phi[6]+(-(0.21650635094610965*phiWall[5])+0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[5]+(-(0.21650635094610965*vcut_fact[4])+0.21650635094610965*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phiWall[5]+(0.21650635094610965*vcut_fact[4]-0.21650635094610965*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])+0.21650635094610965*vcut_fact[0])*phi[5]+(0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[4]+(0.125*vcut_fact[0]-0.125*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1]))*phiWall[4]+(0.125*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1])-0.125*vcut_fact[0])*phi[4]+(-(0.21650635094610965*phiWall[3])+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[3]+(0.21650635094610965*vcut_fact[0]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]))*phiWall[3]+(0.21650635094610965*(vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phi[3]+(0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[2]+(0.125*vcut_fact[1]-0.125*vcut_fact[0])*phiWall[2]+(0.125*vcut_fact[0]-0.125*vcut_fact[1])*phi[2]+(0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.125*phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1792,7 +1792,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double } // node (mu)_1 - vcutSq = 0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*(phi[7]+phiWall[6])+1.7320508075688772*phi[6]-1.7320508075688772*phiWall[5]+1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[7]+(-(1.7320508075688772*(vcut_fact[6]+vcut_fact[5]))+1.7320508075688772*(vcut_fact[4]+vcut_fact[3])-1.7320508075688772*(vcut_fact[2]+vcut_fact[1])+1.7320508075688772*vcut_fact[0])*phiWall[7]+(1.7320508075688772*(vcut_fact[6]+vcut_fact[5])-1.7320508075688772*(vcut_fact[4]+vcut_fact[3])+1.7320508075688772*(vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*phi[6]+1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[6]+(1.7320508075688772*vcut_fact[5]-1.7320508075688772*(vcut_fact[4]+vcut_fact[3])+1.7320508075688772*(vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phiWall[6]+(-(1.7320508075688772*vcut_fact[5])+1.7320508075688772*(vcut_fact[4]+vcut_fact[3])-1.7320508075688772*(vcut_fact[2]+vcut_fact[1])+1.7320508075688772*vcut_fact[0])*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[5]+(-(1.7320508075688772*(vcut_fact[4]+vcut_fact[3]))+1.7320508075688772*(vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phiWall[5]+(1.7320508075688772*(vcut_fact[4]+vcut_fact[3])-1.7320508075688772*(vcut_fact[2]+vcut_fact[1])+1.7320508075688772*vcut_fact[0])*phi[5]+(phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[4]+(vcut_fact[3]-1.0*(vcut_fact[2]+vcut_fact[1])+vcut_fact[0])*phiWall[4]+(-(1.0*vcut_fact[3])+vcut_fact[2]+vcut_fact[1]-1.0*vcut_fact[0])*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[3]+(1.7320508075688772*vcut_fact[0]-1.7320508075688772*(vcut_fact[2]+vcut_fact[1]))*phiWall[3]+(1.7320508075688772*(vcut_fact[2]+vcut_fact[1])-1.7320508075688772*vcut_fact[0])*phi[3]+(phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[2]+(vcut_fact[1]-1.0*vcut_fact[0])*phiWall[2]+(vcut_fact[0]-1.0*vcut_fact[1])*phi[2]+(phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[1]+vcut_fact[0]*(-(1.0*phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0]))*q2Dm; + vcutSq = ((0.21650635094610965*phiWall[7]-0.21650635094610965*(phi[7]+phiWall[6])+0.21650635094610965*phi[6]-0.21650635094610965*phiWall[5]+0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[7]+(-(0.21650635094610965*(vcut_fact[6]+vcut_fact[5]))+0.21650635094610965*(vcut_fact[4]+vcut_fact[3])-0.21650635094610965*(vcut_fact[2]+vcut_fact[1])+0.21650635094610965*vcut_fact[0])*phiWall[7]+(0.21650635094610965*(vcut_fact[6]+vcut_fact[5])-0.21650635094610965*(vcut_fact[4]+vcut_fact[3])+0.21650635094610965*(vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phi[7]+(0.21650635094610965*phiWall[6]-0.21650635094610965*phi[6]+0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[6]+(0.21650635094610965*vcut_fact[5]-0.21650635094610965*(vcut_fact[4]+vcut_fact[3])+0.21650635094610965*(vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phiWall[6]+(-(0.21650635094610965*vcut_fact[5])+0.21650635094610965*(vcut_fact[4]+vcut_fact[3])-0.21650635094610965*(vcut_fact[2]+vcut_fact[1])+0.21650635094610965*vcut_fact[0])*phi[6]+(0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[5]+(-(0.21650635094610965*(vcut_fact[4]+vcut_fact[3]))+0.21650635094610965*(vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phiWall[5]+(0.21650635094610965*(vcut_fact[4]+vcut_fact[3])-0.21650635094610965*(vcut_fact[2]+vcut_fact[1])+0.21650635094610965*vcut_fact[0])*phi[5]+(0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[4]+(0.125*vcut_fact[3]-0.125*(vcut_fact[2]+vcut_fact[1])+0.125*vcut_fact[0])*phiWall[4]+(-(0.125*vcut_fact[3])+0.125*(vcut_fact[2]+vcut_fact[1])-0.125*vcut_fact[0])*phi[4]+(0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[3]+(0.21650635094610965*vcut_fact[0]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]))*phiWall[3]+(0.21650635094610965*(vcut_fact[2]+vcut_fact[1])-0.21650635094610965*vcut_fact[0])*phi[3]+(0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[2]+(0.125*vcut_fact[1]-0.125*vcut_fact[0])*phiWall[2]+(0.125*vcut_fact[0]-0.125*vcut_fact[1])*phi[2]+(0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.125*phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1861,11 +1861,11 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double // node (x,y)_1 - wv = 0.5*(vparUp+vparLo); + wv = 0.5*vparUp+0.5*vparLo; dv = vparUp-1.0*vparLo; // node (mu)_0 - vcutSq = -(0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*(phi[7]+phiWall[6])+1.7320508075688772*(phi[6]+phiWall[5])-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[7]+(-(1.7320508075688772*vcut_fact[6])+1.7320508075688772*vcut_fact[5]-1.7320508075688772*(vcut_fact[4]+vcut_fact[3])+1.7320508075688772*vcut_fact[2]-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phiWall[7]+(1.7320508075688772*vcut_fact[6]-1.7320508075688772*vcut_fact[5]+1.7320508075688772*(vcut_fact[4]+vcut_fact[3])-1.7320508075688772*vcut_fact[2]+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*(phi[6]+phiWall[5])+1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[6]+(-(1.7320508075688772*vcut_fact[5])+1.7320508075688772*(vcut_fact[4]+vcut_fact[3])-1.7320508075688772*vcut_fact[2]+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phiWall[6]+(1.7320508075688772*vcut_fact[5]-1.7320508075688772*(vcut_fact[4]+vcut_fact[3])+1.7320508075688772*vcut_fact[2]-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[5]+(-(1.7320508075688772*(vcut_fact[4]+vcut_fact[3]))+1.7320508075688772*vcut_fact[2]-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phiWall[5]+(1.7320508075688772*(vcut_fact[4]+vcut_fact[3])-1.7320508075688772*vcut_fact[2]+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phi[5]+(-(1.0*phiWall[4])+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[4]+(-(1.0*vcut_fact[3])+vcut_fact[2]-1.0*vcut_fact[1]+vcut_fact[0])*phiWall[4]+(vcut_fact[3]-1.0*vcut_fact[2]+vcut_fact[1]-1.0*vcut_fact[0])*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[3]+(-(1.7320508075688772*vcut_fact[2])+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phiWall[3]+(1.7320508075688772*vcut_fact[2]-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phi[3]+(-(1.0*phiWall[2])+phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[2]+(vcut_fact[1]-1.0*vcut_fact[0])*phiWall[2]+(vcut_fact[0]-1.0*vcut_fact[1])*phi[2]+(-(1.0*phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[1]+vcut_fact[0]*(phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0]))*q2Dm); + vcutSq = ((-(0.21650635094610965*phiWall[7])+0.21650635094610965*(phi[7]+phiWall[6])-0.21650635094610965*(phi[6]+phiWall[5])+0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[7]+(0.21650635094610965*vcut_fact[6]-0.21650635094610965*vcut_fact[5]+0.21650635094610965*(vcut_fact[4]+vcut_fact[3])-0.21650635094610965*vcut_fact[2]+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phiWall[7]+(-(0.21650635094610965*vcut_fact[6])+0.21650635094610965*vcut_fact[5]-0.21650635094610965*(vcut_fact[4]+vcut_fact[3])+0.21650635094610965*vcut_fact[2]-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phi[7]+(-(0.21650635094610965*phiWall[6])+0.21650635094610965*(phi[6]+phiWall[5])-0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[6]+(0.21650635094610965*vcut_fact[5]-0.21650635094610965*(vcut_fact[4]+vcut_fact[3])+0.21650635094610965*vcut_fact[2]-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phiWall[6]+(-(0.21650635094610965*vcut_fact[5])+0.21650635094610965*(vcut_fact[4]+vcut_fact[3])-0.21650635094610965*vcut_fact[2]+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phi[6]+(-(0.21650635094610965*phiWall[5])+0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[5]+(0.21650635094610965*(vcut_fact[4]+vcut_fact[3])-0.21650635094610965*vcut_fact[2]+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phiWall[5]+(-(0.21650635094610965*(vcut_fact[4]+vcut_fact[3]))+0.21650635094610965*vcut_fact[2]-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phi[5]+(0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[4]+(0.125*vcut_fact[3]-0.125*vcut_fact[2]+0.125*vcut_fact[1]-0.125*vcut_fact[0])*phiWall[4]+(-(0.125*vcut_fact[3])+0.125*vcut_fact[2]-0.125*vcut_fact[1]+0.125*vcut_fact[0])*phi[4]+(-(0.21650635094610965*phiWall[3])+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[3]+(0.21650635094610965*vcut_fact[2]-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phiWall[3]+(-(0.21650635094610965*vcut_fact[2])+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phi[3]+(0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[2]+(0.125*vcut_fact[0]-0.125*vcut_fact[1])*phiWall[2]+(0.125*vcut_fact[1]-0.125*vcut_fact[0])*phi[2]+(0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.125*phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1926,7 +1926,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double } // node (mu)_1 - vcutSq = 0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*(phi[7]+phiWall[6])+1.7320508075688772*(phi[6]+phiWall[5])-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[7]+(-(1.7320508075688772*vcut_fact[6])+1.7320508075688772*(vcut_fact[5]+vcut_fact[4])-1.7320508075688772*(vcut_fact[3]+vcut_fact[2])+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phiWall[7]+(1.7320508075688772*vcut_fact[6]-1.7320508075688772*(vcut_fact[5]+vcut_fact[4])+1.7320508075688772*(vcut_fact[3]+vcut_fact[2])-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*(phi[6]+phiWall[5])+1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[6]+(-(1.7320508075688772*(vcut_fact[5]+vcut_fact[4]))+1.7320508075688772*(vcut_fact[3]+vcut_fact[2])-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phiWall[6]+(1.7320508075688772*(vcut_fact[5]+vcut_fact[4])-1.7320508075688772*(vcut_fact[3]+vcut_fact[2])+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[5]+(1.7320508075688772*vcut_fact[4]-1.7320508075688772*(vcut_fact[3]+vcut_fact[2])+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phiWall[5]+(-(1.7320508075688772*vcut_fact[4])+1.7320508075688772*(vcut_fact[3]+vcut_fact[2])-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phi[5]+(phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[4]+(-(1.0*(vcut_fact[3]+vcut_fact[2]))+vcut_fact[1]-1.0*vcut_fact[0])*phiWall[4]+(vcut_fact[3]+vcut_fact[2]-1.0*vcut_fact[1]+vcut_fact[0])*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[3]+(1.7320508075688772*vcut_fact[2]-1.7320508075688772*vcut_fact[1]+1.7320508075688772*vcut_fact[0])*phiWall[3]+(-(1.7320508075688772*vcut_fact[2])+1.7320508075688772*vcut_fact[1]-1.7320508075688772*vcut_fact[0])*phi[3]+(phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[2]+(vcut_fact[0]-1.0*vcut_fact[1])*phiWall[2]+(vcut_fact[1]-1.0*vcut_fact[0])*phi[2]+(phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*vcut_fact[1]+vcut_fact[0]*(-(1.0*phiWall[1])+phi[1]+phiWall[0]-1.0*phi[0]))*q2Dm; + vcutSq = ((0.21650635094610965*phiWall[7]-0.21650635094610965*(phi[7]+phiWall[6])+0.21650635094610965*(phi[6]+phiWall[5])-0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[7]+(-(0.21650635094610965*vcut_fact[6])+0.21650635094610965*(vcut_fact[5]+vcut_fact[4])-0.21650635094610965*(vcut_fact[3]+vcut_fact[2])+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phiWall[7]+(0.21650635094610965*vcut_fact[6]-0.21650635094610965*(vcut_fact[5]+vcut_fact[4])+0.21650635094610965*(vcut_fact[3]+vcut_fact[2])-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phi[7]+(0.21650635094610965*phiWall[6]-0.21650635094610965*(phi[6]+phiWall[5])+0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[6]+(-(0.21650635094610965*(vcut_fact[5]+vcut_fact[4]))+0.21650635094610965*(vcut_fact[3]+vcut_fact[2])-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phiWall[6]+(0.21650635094610965*(vcut_fact[5]+vcut_fact[4])-0.21650635094610965*(vcut_fact[3]+vcut_fact[2])+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phi[6]+(0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[5]+(0.21650635094610965*vcut_fact[4]-0.21650635094610965*(vcut_fact[3]+vcut_fact[2])+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phiWall[5]+(-(0.21650635094610965*vcut_fact[4])+0.21650635094610965*(vcut_fact[3]+vcut_fact[2])-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phi[5]+(0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[4]+(-(0.125*(vcut_fact[3]+vcut_fact[2]))+0.125*vcut_fact[1]-0.125*vcut_fact[0])*phiWall[4]+(0.125*(vcut_fact[3]+vcut_fact[2])-0.125*vcut_fact[1]+0.125*vcut_fact[0])*phi[4]+(0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[3]+(0.21650635094610965*vcut_fact[2]-0.21650635094610965*vcut_fact[1]+0.21650635094610965*vcut_fact[0])*phiWall[3]+(-(0.21650635094610965*vcut_fact[2])+0.21650635094610965*vcut_fact[1]-0.21650635094610965*vcut_fact[0])*phi[3]+(0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0])*vcut_fact[2]+(0.125*vcut_fact[0]-0.125*vcut_fact[1])*phiWall[2]+(0.125*vcut_fact[1]-0.125*vcut_fact[0])*phi[2]+(0.125*phiWall[1]-0.125*(phi[1]+phiWall[0])+0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(-(0.125*phiWall[1])+0.125*(phi[1]+phiWall[0])-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -1995,11 +1995,11 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double // node (x,y)_2 - wv = 0.5*(vparUp+vparLo); + wv = 0.5*vparUp+0.5*vparLo; dv = vparUp-1.0*vparLo; // node (mu)_0 - vcutSq = -(0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*phi[7]+1.7320508075688772*phiWall[6]-1.7320508075688772*(phi[6]+phiWall[5])+1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[7]+(1.7320508075688772*vcut_fact[6]-1.7320508075688772*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2])+1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[7]+(-(1.7320508075688772*vcut_fact[6])+1.7320508075688772*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2])-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*(phi[6]+phiWall[5])+1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[6]+(1.7320508075688772*(vcut_fact[1]+vcut_fact[0])-1.7320508075688772*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]))*phiWall[6]+(1.7320508075688772*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2])-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[5]+(1.7320508075688772*(vcut_fact[4]+vcut_fact[3]+vcut_fact[2])-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[5]+(1.7320508075688772*(vcut_fact[1]+vcut_fact[0])-1.7320508075688772*(vcut_fact[4]+vcut_fact[3]+vcut_fact[2]))*phi[5]+(-(1.0*phiWall[4])+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[4]+(-(1.0*(vcut_fact[3]+vcut_fact[2]))+vcut_fact[1]+vcut_fact[0])*phiWall[4]+(vcut_fact[3]+vcut_fact[2]-1.0*(vcut_fact[1]+vcut_fact[0]))*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[3]+(1.7320508075688772*vcut_fact[2]-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[3]+(1.7320508075688772*(vcut_fact[1]+vcut_fact[0])-1.7320508075688772*vcut_fact[2])*phi[3]+(-(1.0*phiWall[2])+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[2]+(vcut_fact[1]+vcut_fact[0])*(phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0]))*q2Dm); + vcutSq = ((-(0.21650635094610965*phiWall[7])+0.21650635094610965*phi[7]-0.21650635094610965*phiWall[6]+0.21650635094610965*(phi[6]+phiWall[5])-0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[7]+(-(0.21650635094610965*vcut_fact[6])+0.21650635094610965*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2])-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phiWall[7]+(0.21650635094610965*vcut_fact[6]-0.21650635094610965*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2])+0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phi[7]+(-(0.21650635094610965*phiWall[6])+0.21650635094610965*(phi[6]+phiWall[5])-0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[6]+(0.21650635094610965*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2])-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phiWall[6]+(0.21650635094610965*(vcut_fact[1]+vcut_fact[0])-0.21650635094610965*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]))*phi[6]+(-(0.21650635094610965*phiWall[5])+0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[5]+(0.21650635094610965*(vcut_fact[1]+vcut_fact[0])-0.21650635094610965*(vcut_fact[4]+vcut_fact[3]+vcut_fact[2]))*phiWall[5]+(0.21650635094610965*(vcut_fact[4]+vcut_fact[3]+vcut_fact[2])-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phi[5]+(0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[4]+(0.125*(vcut_fact[3]+vcut_fact[2])-0.125*(vcut_fact[1]+vcut_fact[0]))*phiWall[4]+(0.125*(vcut_fact[1]+vcut_fact[0])-0.125*(vcut_fact[3]+vcut_fact[2]))*phi[4]+(-(0.21650635094610965*phiWall[3])+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[3]+(0.21650635094610965*(vcut_fact[1]+vcut_fact[0])-0.21650635094610965*vcut_fact[2])*phiWall[3]+(0.21650635094610965*vcut_fact[2]-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phi[3]+(0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[2]-0.125*(vcut_fact[1]+vcut_fact[0])*phiWall[2]+0.125*(vcut_fact[1]+vcut_fact[0])*phi[2]+(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -2060,7 +2060,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double } // node (mu)_1 - vcutSq = 0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*phi[7]+1.7320508075688772*phiWall[6]-1.7320508075688772*(phi[6]+phiWall[5])+1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[7]+(1.7320508075688772*vcut_fact[6]-1.7320508075688772*vcut_fact[5]+1.7320508075688772*vcut_fact[4]-1.7320508075688772*vcut_fact[3]+1.7320508075688772*vcut_fact[2]-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[7]+(-(1.7320508075688772*vcut_fact[6])+1.7320508075688772*vcut_fact[5]-1.7320508075688772*vcut_fact[4]+1.7320508075688772*vcut_fact[3]-1.7320508075688772*vcut_fact[2]+1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*(phi[6]+phiWall[5])+1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[6]+(-(1.7320508075688772*vcut_fact[5])+1.7320508075688772*vcut_fact[4]-1.7320508075688772*vcut_fact[3]+1.7320508075688772*vcut_fact[2]-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[6]+(1.7320508075688772*vcut_fact[5]-1.7320508075688772*vcut_fact[4]+1.7320508075688772*vcut_fact[3]-1.7320508075688772*vcut_fact[2]+1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]-1.0*phiWall[4]+phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[5]+(-(1.7320508075688772*vcut_fact[4])+1.7320508075688772*vcut_fact[3]-1.7320508075688772*vcut_fact[2]+1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phiWall[5]+(1.7320508075688772*vcut_fact[4]-1.7320508075688772*vcut_fact[3]+1.7320508075688772*vcut_fact[2]-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phi[5]+(phiWall[4]-1.0*phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]+phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[4]+(-(1.0*vcut_fact[3])+vcut_fact[2]-1.0*(vcut_fact[1]+vcut_fact[0]))*phiWall[4]+(vcut_fact[3]-1.0*vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[3]+(1.7320508075688772*(vcut_fact[1]+vcut_fact[0])-1.7320508075688772*vcut_fact[2])*phiWall[3]+(1.7320508075688772*vcut_fact[2]-1.7320508075688772*(vcut_fact[1]+vcut_fact[0]))*phi[3]+(phiWall[2]-1.0*(phi[2]+phiWall[1])+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[2]+(vcut_fact[1]+vcut_fact[0])*(-(1.0*phiWall[2])+phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0]))*q2Dm; + vcutSq = ((0.21650635094610965*phiWall[7]-0.21650635094610965*phi[7]+0.21650635094610965*phiWall[6]-0.21650635094610965*(phi[6]+phiWall[5])+0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[7]+(0.21650635094610965*vcut_fact[6]-0.21650635094610965*vcut_fact[5]+0.21650635094610965*vcut_fact[4]-0.21650635094610965*vcut_fact[3]+0.21650635094610965*vcut_fact[2]-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phiWall[7]+(-(0.21650635094610965*vcut_fact[6])+0.21650635094610965*vcut_fact[5]-0.21650635094610965*vcut_fact[4]+0.21650635094610965*vcut_fact[3]-0.21650635094610965*vcut_fact[2]+0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phi[7]+(0.21650635094610965*phiWall[6]-0.21650635094610965*(phi[6]+phiWall[5])+0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[6]+(-(0.21650635094610965*vcut_fact[5])+0.21650635094610965*vcut_fact[4]-0.21650635094610965*vcut_fact[3]+0.21650635094610965*vcut_fact[2]-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phiWall[6]+(0.21650635094610965*vcut_fact[5]-0.21650635094610965*vcut_fact[4]+0.21650635094610965*vcut_fact[3]-0.21650635094610965*vcut_fact[2]+0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phi[6]+(0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[5]+(-(0.21650635094610965*vcut_fact[4])+0.21650635094610965*vcut_fact[3]-0.21650635094610965*vcut_fact[2]+0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phiWall[5]+(0.21650635094610965*vcut_fact[4]-0.21650635094610965*vcut_fact[3]+0.21650635094610965*vcut_fact[2]-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phi[5]+(0.125*phiWall[4]-0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[4]+(-(0.125*vcut_fact[3])+0.125*vcut_fact[2]-0.125*(vcut_fact[1]+vcut_fact[0]))*phiWall[4]+(0.125*vcut_fact[3]-0.125*vcut_fact[2]+0.125*(vcut_fact[1]+vcut_fact[0]))*phi[4]+(0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*(phi[2]+phiWall[1])-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[3]+(0.21650635094610965*(vcut_fact[1]+vcut_fact[0])-0.21650635094610965*vcut_fact[2])*phiWall[3]+(0.21650635094610965*vcut_fact[2]-0.21650635094610965*(vcut_fact[1]+vcut_fact[0]))*phi[3]+(0.125*phiWall[2]-0.125*(phi[2]+phiWall[1])+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[2]-0.125*(vcut_fact[1]+vcut_fact[0])*phiWall[2]+0.125*(vcut_fact[1]+vcut_fact[0])*phi[2]+(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -2129,11 +2129,11 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double // node (x,y)_3 - wv = 0.5*(vparUp+vparLo); + wv = 0.5*vparUp+0.5*vparLo; dv = vparUp-1.0*vparLo; // node (mu)_0 - vcutSq = -(0.125*((1.7320508075688772*phiWall[7]-1.7320508075688772*phi[7]+1.7320508075688772*phiWall[6]-1.7320508075688772*phi[6]+1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[7]+(1.7320508075688772*(vcut_fact[6]+vcut_fact[5])-1.7320508075688772*vcut_fact[4]+1.7320508075688772*vcut_fact[3]-1.7320508075688772*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[7]+(-(1.7320508075688772*(vcut_fact[6]+vcut_fact[5]))+1.7320508075688772*vcut_fact[4]-1.7320508075688772*vcut_fact[3]+1.7320508075688772*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[7]+(1.7320508075688772*phiWall[6]-1.7320508075688772*phi[6]+1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[6]+(1.7320508075688772*vcut_fact[5]-1.7320508075688772*vcut_fact[4]+1.7320508075688772*vcut_fact[3]-1.7320508075688772*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[6]+(-(1.7320508075688772*vcut_fact[5])+1.7320508075688772*vcut_fact[4]-1.7320508075688772*vcut_fact[3]+1.7320508075688772*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[6]+(1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[5]+(-(1.7320508075688772*vcut_fact[4])+1.7320508075688772*vcut_fact[3]-1.7320508075688772*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[5]+(1.7320508075688772*vcut_fact[4]-1.7320508075688772*vcut_fact[3]+1.7320508075688772*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[5]+(-(1.0*phiWall[4])+phi[4]-1.7320508075688772*phiWall[3]+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]-1.0*phiWall[0]+phi[0])*vcut_fact[4]+(vcut_fact[3]-1.0*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[4]+(-(1.0*vcut_fact[3])+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[4]+(1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*vcut_fact[3]+(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*(-(1.7320508075688772*phiWall[3])+1.7320508075688772*phi[3]-1.0*phiWall[2]+phi[2]-1.0*phiWall[1]+phi[1]-1.0*phiWall[0]+phi[0]))*q2Dm); + vcutSq = ((-(0.21650635094610965*phiWall[7])+0.21650635094610965*phi[7]-0.21650635094610965*phiWall[6]+0.21650635094610965*phi[6]-0.21650635094610965*phiWall[5]+0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[7]+(-(0.21650635094610965*(vcut_fact[6]+vcut_fact[5]))+0.21650635094610965*vcut_fact[4]-0.21650635094610965*vcut_fact[3]+0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[7]+(0.21650635094610965*(vcut_fact[6]+vcut_fact[5])-0.21650635094610965*vcut_fact[4]+0.21650635094610965*vcut_fact[3]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[7]+(-(0.21650635094610965*phiWall[6])+0.21650635094610965*phi[6]-0.21650635094610965*phiWall[5]+0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[6]+(-(0.21650635094610965*vcut_fact[5])+0.21650635094610965*vcut_fact[4]-0.21650635094610965*vcut_fact[3]+0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[6]+(0.21650635094610965*vcut_fact[5]-0.21650635094610965*vcut_fact[4]+0.21650635094610965*vcut_fact[3]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[6]+(-(0.21650635094610965*phiWall[5])+0.21650635094610965*phi[5]-0.125*phiWall[4]+0.125*phi[4]-0.21650635094610965*phiWall[3]+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[5]+(0.21650635094610965*vcut_fact[4]-0.21650635094610965*vcut_fact[3]+0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phiWall[5]+(-(0.21650635094610965*vcut_fact[4])+0.21650635094610965*vcut_fact[3]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[5]+(0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[4]+(0.125*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])-0.125*vcut_fact[3])*phiWall[4]+(0.125*vcut_fact[3]-0.125*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0]))*phi[4]+(-(0.21650635094610965*phiWall[3])+0.21650635094610965*phi[3]-0.125*phiWall[2]+0.125*phi[2]-0.125*phiWall[1]+0.125*phi[1]-0.125*phiWall[0]+0.125*phi[0])*vcut_fact[3]+0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[3]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[3]+(0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[2]+0.125*(vcut_fact[1]+vcut_fact[0])*phiWall[2]-0.125*(vcut_fact[1]+vcut_fact[0])*phi[2]+(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -2194,7 +2194,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double } // node (mu)_1 - vcutSq = 0.125*(1.7320508075688772*phiWall[7]-1.7320508075688772*phi[7]+1.7320508075688772*phiWall[6]-1.7320508075688772*phi[6]+1.7320508075688772*phiWall[5]-1.7320508075688772*phi[5]+phiWall[4]-1.0*phi[4]+1.7320508075688772*phiWall[3]-1.7320508075688772*phi[3]+phiWall[2]-1.0*phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*(vcut_fact[7]+vcut_fact[6]+vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*q2Dm; + vcutSq = ((0.21650635094610965*phiWall[7]-0.21650635094610965*phi[7]+0.21650635094610965*phiWall[6]-0.21650635094610965*phi[6]+0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[7]+0.21650635094610965*(vcut_fact[6]+vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[7]-0.21650635094610965*(vcut_fact[6]+vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[7]+(0.21650635094610965*phiWall[6]-0.21650635094610965*phi[6]+0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[6]+0.21650635094610965*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[6]-0.21650635094610965*(vcut_fact[5]+vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[6]+(0.21650635094610965*phiWall[5]-0.21650635094610965*phi[5]+0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[5]+0.21650635094610965*(vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[5]-0.21650635094610965*(vcut_fact[4]+vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[5]+(0.125*phiWall[4]-0.125*phi[4]+0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[4]+0.125*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[4]-0.125*(vcut_fact[3]+vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[4]+(0.21650635094610965*phiWall[3]-0.21650635094610965*phi[3]+0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[3]+0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phiWall[3]-0.21650635094610965*(vcut_fact[2]+vcut_fact[1]+vcut_fact[0])*phi[3]+(0.125*phiWall[2]-0.125*phi[2]+0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[2]+0.125*(vcut_fact[1]+vcut_fact[0])*phiWall[2]-0.125*(vcut_fact[1]+vcut_fact[0])*phi[2]+(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0])*vcut_fact[1]+vcut_fact[0]*(0.125*phiWall[1]-0.125*phi[1]+0.125*phiWall[0]-0.125*phi[0]))*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) diff --git a/gyrokinetic/unit/ctest_bc_sheath_gyrokinetic.c b/gyrokinetic/unit/ctest_bc_sheath_gyrokinetic.c index d6182e160b..995c82e3a6 100644 --- a/gyrokinetic/unit/ctest_bc_sheath_gyrokinetic.c +++ b/gyrokinetic/unit/ctest_bc_sheath_gyrokinetic.c @@ -190,10 +190,10 @@ check_function(double phi_mpe, double phi_wall, double charge, double mass, int } } // Uncomment for debugging. - printf("\n"); - printf("Edge: %s | Charge: %.1e | Delta phi: %.2e\n", - edge == GKYL_LOWER_EDGE? "lower" : "upper", charge, delta_phi); - printf("resulting zero cells = %d | fully outside cells = %d | crossing cells = %d | total cells = %d\n", num_zero_cells, num_zero_cells_expected, num_uknown_cells, num_cells); + // printf("\n"); + // printf("Edge: %s | Charge: %.1e | Delta phi: %.2e\n", + // edge == GKYL_LOWER_EDGE? "lower" : "upper", charge, delta_phi); + // printf("resulting zero cells = %d | fully outside cells = %d | crossing cells = %d | total cells = %d\n", num_zero_cells, num_zero_cells_expected, num_uknown_cells, num_cells); } void write_out_fields(int cdim, int vdim, enum gkyl_edge_loc edge, bool use_gpu, From 6025a4edb3673b8c806703058b6b44a87f8bc557 Mon Sep 17 00:00:00 2001 From: antoinehoff Date: Fri, 15 May 2026 09:38:20 -0400 Subject: [PATCH 2/4] add temp variable for vcut_fact dimensions and rename acquisition function for clarity --- gyrokinetic/zero/bc_sheath_gyrokinetic.c | 21 +++++++++++-------- gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic.h | 4 ++-- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/gyrokinetic/zero/bc_sheath_gyrokinetic.c b/gyrokinetic/zero/bc_sheath_gyrokinetic.c index 1cbedfffaf..5b0edb1f51 100644 --- a/gyrokinetic/zero/bc_sheath_gyrokinetic.c +++ b/gyrokinetic/zero/bc_sheath_gyrokinetic.c @@ -33,22 +33,24 @@ gkyl_bc_sheath_gyrokinetic_new(int dir, enum gkyl_edge_loc edge, const struct gk up->ghost_r = ghost_r; up->vel_map = gkyl_velocity_map_acquire(vel_map); + // dimensions of vcut_fact array, i.e. config space perp directions -1 + mu. + int vcut_fact_dim = up->cdim - 1 + up->basis->ndim - 1; + // Create a special phase space basis and range for the vcut_fact array. // Function of perpendicular config space coordinates and magnetic moment, i.e. // [mu],[x,mu],[x,y,mu] for 1x2v, 2x2v, 3x2v respectively. - // (we set cdim because it is pdim-2, could be set to cdim-1 + vdim-1 as well). - up->vcut_fact_basis = gkyl_cart_modal_serendip_new(cdim, basis->poly_order); + up->vcut_fact_basis = gkyl_cart_modal_serendip_new(vcut_fact_dim, basis->poly_order); // Initialize the vcut fact range. - int lower[cdim], upper[cdim]; + int lower[vcut_fact_dim], upper[vcut_fact_dim]; // Perpendicular config space directions. - for (int d=0; d < cdim-1; d++) { + for (int d=0; d < vcut_fact_dim-1; d++) { lower[d] = skin_r->lower[d]; upper[d] = skin_r->upper[d]; } // The last direction is mu. - lower[cdim-1] = skin_r->lower[skin_r->ndim-1]; - upper[cdim-1] = skin_r->upper[skin_r->ndim-1]; + lower[vcut_fact_dim-1] = skin_r->lower[skin_r->ndim-1]; + upper[vcut_fact_dim-1] = skin_r->upper[skin_r->ndim-1]; gkyl_range_init(&up->vcut_fact_local, up->vcut_fact_basis->ndim, lower, upper); up->vcut_fact = mkarr(use_gpu, up->vcut_fact_basis->num_basis, up->vcut_fact_local.volume); @@ -120,8 +122,9 @@ gkyl_bc_sheath_gyrokinetic_advance(const struct gkyl_bc_sheath_gyrokinetic *up, const double *phi_wall_p = (const double*) gkyl_array_cfetch(phi_wall, conf_loc); const double *vmap_p = (const double*) gkyl_array_cfetch(up->vel_map->vmap, vel_loc); - for (int d=0; dcdim-1; d++) vcut_fact_idx[d] = iter.idx[d]; // config space perp directions. - vcut_fact_idx[up->cdim-1] = iter.idx[pdim-1]; // mu direction. + int vcut_fact_dim = up->vcut_fact_local.ndim; + for (int d=0; dvcut_fact_local, vcut_fact_idx); const double *vcut_fact_p = (const double*) gkyl_array_cfetch(up->vcut_fact, vcut_fact_loc); @@ -143,7 +146,7 @@ void gkyl_bc_sheath_gyrokinetic_set_vcut_fact(const struct gkyl_bc_sheath_gyroki gkyl_array_copy_range(up->vcut_fact, vcut_fact, &up->vcut_fact_local); } -struct gkyl_array* gkyl_bc_sheath_gyrokinetic_get_vcut_fact(struct gkyl_bc_sheath_gyrokinetic *up) +struct gkyl_array* gkyl_bc_sheath_gyrokinetic_acquire_vcut_fact(struct gkyl_bc_sheath_gyrokinetic *up) { return gkyl_array_acquire(up->vcut_fact); } diff --git a/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic.h b/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic.h index 730914b43b..23f6ec26ff 100644 --- a/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic.h +++ b/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic.h @@ -51,12 +51,12 @@ void gkyl_bc_sheath_gyrokinetic_advance(const struct gkyl_bc_sheath_gyrokinetic void gkyl_bc_sheath_gyrokinetic_set_vcut_fact(const struct gkyl_bc_sheath_gyrokinetic *up, const struct gkyl_array *vcut_fact); /** - * Get the vcut_fact array used in the sheath BC. + * Acquire the vcut_fact array used in the sheath BC. The pointer needs to be released by the caller using gkyl_array_release. * * @param up BC updater. * @return The vcut_fact array used in the sheath BC. */ -struct gkyl_array* gkyl_bc_sheath_gyrokinetic_get_vcut_fact(struct gkyl_bc_sheath_gyrokinetic *up); +struct gkyl_array* gkyl_bc_sheath_gyrokinetic_acquire_vcut_fact(struct gkyl_bc_sheath_gyrokinetic *up); /** * Get the basis of the vcut_fact array used in the sheath BC. From 4d8fb3102c2426da6fbf111dff36fb9de7950a37 Mon Sep 17 00:00:00 2001 From: Antoinehoff Date: Fri, 15 May 2026 08:08:45 -0700 Subject: [PATCH 3/4] The GPU implementation was done on the sheath_ai branch but not on this one. I cherry picked the code and the ctest runs fine on GPU now. --- .../unit/ctest_bc_sheath_gyrokinetic.c | 18 ++++---- gyrokinetic/zero/bc_sheath_gyrokinetic.c | 45 ++++++++++--------- gyrokinetic/zero/bc_sheath_gyrokinetic_cu.cu | 22 ++++++--- gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic.h | 2 +- .../zero/gkyl_bc_sheath_gyrokinetic_priv.h | 6 +-- 5 files changed, 52 insertions(+), 41 deletions(-) diff --git a/gyrokinetic/unit/ctest_bc_sheath_gyrokinetic.c b/gyrokinetic/unit/ctest_bc_sheath_gyrokinetic.c index 995c82e3a6..207655a39e 100644 --- a/gyrokinetic/unit/ctest_bc_sheath_gyrokinetic.c +++ b/gyrokinetic/unit/ctest_bc_sheath_gyrokinetic.c @@ -368,9 +368,9 @@ test_bc_sheath_gyrokinetic_1x2v(const int *cells, enum gkyl_edge_loc edge, basis, &skin_r, &ghost_r, gvm, cdim, 2.*charge/mass, use_gpu); // Build the vcut_fact DG array to make vpar cut vary. - struct gkyl_basis *vcut_fact_basis = gkyl_bc_sheath_gyrokinetic_get_vcut_fact_basis(bcsheath); + struct gkyl_basis vcut_fact_basis = gkyl_bc_sheath_gyrokinetic_get_vcut_fact_basis(bcsheath); struct gkyl_range *vcut_fact_local = gkyl_bc_sheath_gyrokinetic_get_vcut_fact_range(bcsheath); - struct gkyl_array *vcut_fact = mkarr(use_gpu, vcut_fact_basis->num_basis, vcut_fact_local->volume); + struct gkyl_array *vcut_fact = mkarr(use_gpu, vcut_fact_basis.num_basis, vcut_fact_local->volume); struct gkyl_array *vcut_fact_ho = use_gpu? mkarr(false, vcut_fact->ncomp, vcut_fact->size) : gkyl_array_acquire(vcut_fact); struct gkyl_rect_grid vcut_grid; @@ -384,7 +384,7 @@ test_bc_sheath_gyrokinetic_1x2v(const int *cells, enum gkyl_edge_loc edge, gkyl_rect_grid_init(&vcut_grid, cdim, vcut_lower, vcut_upper, cells); gkyl_proj_on_basis *projVcut = gkyl_proj_on_basis_inew( &(struct gkyl_proj_on_basis_inp) { .grid = &vcut_grid, - .basis = vcut_fact_basis, + .basis = &vcut_fact_basis, .num_ret_vals = 1, .eval = eval_func_vcut_fact, .ctx = &(struct eval_vcut_fact_ctx) {.cdim = cdim}, @@ -574,9 +574,9 @@ test_bc_sheath_gyrokinetic_2x2v(const int *cells, enum gkyl_edge_loc edge, basis, &skin_r, &ghost_r, gvm, cdim, 2.*charge/mass, use_gpu); // Build the vcut_fact DG array to make vpar cut vary. - struct gkyl_basis *vcut_fact_basis = gkyl_bc_sheath_gyrokinetic_get_vcut_fact_basis(bcsheath); + struct gkyl_basis vcut_fact_basis = gkyl_bc_sheath_gyrokinetic_get_vcut_fact_basis(bcsheath); struct gkyl_range *vcut_fact_local = gkyl_bc_sheath_gyrokinetic_get_vcut_fact_range(bcsheath); - struct gkyl_array *vcut_fact = mkarr(use_gpu, vcut_fact_basis->num_basis, vcut_fact_local->volume); + struct gkyl_array *vcut_fact = mkarr(use_gpu, vcut_fact_basis.num_basis, vcut_fact_local->volume); struct gkyl_array *vcut_fact_ho = use_gpu? mkarr(false, vcut_fact->ncomp, vcut_fact->size) : gkyl_array_acquire(vcut_fact); struct gkyl_rect_grid vcut_grid; @@ -590,7 +590,7 @@ test_bc_sheath_gyrokinetic_2x2v(const int *cells, enum gkyl_edge_loc edge, gkyl_rect_grid_init(&vcut_grid, cdim, vcut_lower, vcut_upper, cells); gkyl_proj_on_basis *projVcut = gkyl_proj_on_basis_inew( &(struct gkyl_proj_on_basis_inp) { .grid = &vcut_grid, - .basis = vcut_fact_basis, + .basis = &vcut_fact_basis, .num_ret_vals = 1, .eval = eval_func_vcut_fact, .ctx = &(struct eval_vcut_fact_ctx) {.cdim = cdim}, @@ -784,9 +784,9 @@ test_bc_sheath_gyrokinetic_3x2v(const int *cells, enum gkyl_edge_loc edge, basis, &skin_r, &ghost_r, gvm, cdim, 2.*charge/mass, use_gpu); // Build the vcut_fact DG array to make vpar cut vary. - struct gkyl_basis *vcut_fact_basis = gkyl_bc_sheath_gyrokinetic_get_vcut_fact_basis(bcsheath); + struct gkyl_basis vcut_fact_basis = gkyl_bc_sheath_gyrokinetic_get_vcut_fact_basis(bcsheath); struct gkyl_range *vcut_fact_local = gkyl_bc_sheath_gyrokinetic_get_vcut_fact_range(bcsheath); - struct gkyl_array *vcut_fact = mkarr(use_gpu, vcut_fact_basis->num_basis, vcut_fact_local->volume); + struct gkyl_array *vcut_fact = mkarr(use_gpu, vcut_fact_basis.num_basis, vcut_fact_local->volume); struct gkyl_array *vcut_fact_ho = use_gpu? mkarr(false, vcut_fact->ncomp, vcut_fact->size) : gkyl_array_acquire(vcut_fact); struct gkyl_rect_grid vcut_grid; @@ -800,7 +800,7 @@ test_bc_sheath_gyrokinetic_3x2v(const int *cells, enum gkyl_edge_loc edge, gkyl_rect_grid_init(&vcut_grid, cdim, vcut_lower, vcut_upper, cells); gkyl_proj_on_basis *projVcut = gkyl_proj_on_basis_inew( &(struct gkyl_proj_on_basis_inp) { .grid = &vcut_grid, - .basis = vcut_fact_basis, + .basis = &vcut_fact_basis, .num_ret_vals = 1, .eval = eval_func_vcut_fact, .ctx = &(struct eval_vcut_fact_ctx) {.cdim = cdim}, diff --git a/gyrokinetic/zero/bc_sheath_gyrokinetic.c b/gyrokinetic/zero/bc_sheath_gyrokinetic.c index 5b0edb1f51..8e90ebf7cc 100644 --- a/gyrokinetic/zero/bc_sheath_gyrokinetic.c +++ b/gyrokinetic/zero/bc_sheath_gyrokinetic.c @@ -32,34 +32,36 @@ gkyl_bc_sheath_gyrokinetic_new(int dir, enum gkyl_edge_loc edge, const struct gk up->skin_r = skin_r; up->ghost_r = ghost_r; up->vel_map = gkyl_velocity_map_acquire(vel_map); + int vdim = skin_r->ndim - cdim; - // dimensions of vcut_fact array, i.e. config space perp directions -1 + mu. - int vcut_fact_dim = up->cdim - 1 + up->basis->ndim - 1; + up->vcut_fact_dim = cdim-1 + vdim-1; - // Create a special phase space basis and range for the vcut_fact array. - // Function of perpendicular config space coordinates and magnetic moment, i.e. - // [mu],[x,mu],[x,y,mu] for 1x2v, 2x2v, 3x2v respectively. - up->vcut_fact_basis = gkyl_cart_modal_serendip_new(vcut_fact_dim, basis->poly_order); + // Get polynomial order + int poly_order; + if (use_gpu) { + struct gkyl_basis *basis_ho; + basis_ho = gkyl_malloc(sizeof(struct gkyl_basis)); + gkyl_cu_memcpy(basis_ho, basis, sizeof(struct gkyl_basis), GKYL_CU_MEMCPY_D2H); + poly_order = basis_ho->poly_order; + gkyl_free(basis_ho); + } else { + poly_order = basis->poly_order; + } + gkyl_cart_modal_serendip(&up->vcut_fact_basis, up->vcut_fact_dim, poly_order); - // Initialize the vcut fact range. - int lower[vcut_fact_dim], upper[vcut_fact_dim]; - // Perpendicular config space directions. - for (int d=0; d < vcut_fact_dim-1; d++) { + int lower[up->vcut_fact_dim], upper[up->vcut_fact_dim]; + for (int d=0; d < cdim-1; d++) { lower[d] = skin_r->lower[d]; upper[d] = skin_r->upper[d]; } - // The last direction is mu. - lower[vcut_fact_dim-1] = skin_r->lower[skin_r->ndim-1]; - upper[vcut_fact_dim-1] = skin_r->upper[skin_r->ndim-1]; - gkyl_range_init(&up->vcut_fact_local, up->vcut_fact_basis->ndim, lower, upper); - - up->vcut_fact = mkarr(use_gpu, up->vcut_fact_basis->num_basis, up->vcut_fact_local.volume); - // Set the vcut_fact array to 1 by default (constant vcut). - double dg_norm = pow(sqrt(2), up->vcut_fact_basis->ndim); + lower[up->vcut_fact_dim-1] = skin_r->lower[skin_r->ndim-1]; + upper[up->vcut_fact_dim-1] = skin_r->upper[skin_r->ndim-1]; + gkyl_range_init(&up->vcut_fact_local, up->vcut_fact_basis.ndim, lower, upper); + up->vcut_fact = mkarr(use_gpu, up->vcut_fact_basis.num_basis, up->vcut_fact_local.volume); + double dg_norm = pow(sqrt(2), up->vcut_fact_basis.ndim); gkyl_array_shiftc_range(up->vcut_fact, dg_norm, 0, &up->vcut_fact_local); - // Choose the kernel that does the reflection/no reflection/partial - // reflection. + // Choose the kernels that does the reflection/no reflection/partial reflection, up->kernels = gkyl_malloc(sizeof(struct gkyl_bc_sheath_gyrokinetic_kernels)); #ifdef GKYL_HAVE_CUDA if (use_gpu) { @@ -151,7 +153,7 @@ struct gkyl_array* gkyl_bc_sheath_gyrokinetic_acquire_vcut_fact(struct gkyl_bc_s return gkyl_array_acquire(up->vcut_fact); } -struct gkyl_basis* gkyl_bc_sheath_gyrokinetic_get_vcut_fact_basis(struct gkyl_bc_sheath_gyrokinetic *up) +struct gkyl_basis gkyl_bc_sheath_gyrokinetic_get_vcut_fact_basis(struct gkyl_bc_sheath_gyrokinetic *up) { return up->vcut_fact_basis; } @@ -171,7 +173,6 @@ void gkyl_bc_sheath_gyrokinetic_release(struct gkyl_bc_sheath_gyrokinetic *up) #endif gkyl_velocity_map_release(up->vel_map); gkyl_array_release(up->vcut_fact); - gkyl_cart_modal_basis_release(up->vcut_fact_basis); gkyl_free(up->kernels); gkyl_free(up); } diff --git a/gyrokinetic/zero/bc_sheath_gyrokinetic_cu.cu b/gyrokinetic/zero/bc_sheath_gyrokinetic_cu.cu index 59f89886cc..beff374000 100644 --- a/gyrokinetic/zero/bc_sheath_gyrokinetic_cu.cu +++ b/gyrokinetic/zero/bc_sheath_gyrokinetic_cu.cu @@ -32,14 +32,17 @@ gkyl_bc_gksheath_choose_reflectedf_kernel_cu(const struct gkyl_basis *basis, } __global__ static void -gkyl_bc_sheath_gyrokinetic_advance_cu_ker(int cdim, int dir, const struct gkyl_range skin_r, const struct gkyl_range ghost_r, - const struct gkyl_range conf_r, const struct gkyl_range vel_r, const struct gkyl_basis *basis, - const struct gkyl_array *vmap, double q2Dm, const struct gkyl_array *phi, - const struct gkyl_array *phi_wall, struct gkyl_bc_sheath_gyrokinetic_kernels *kers, struct gkyl_array *distf) +gkyl_bc_sheath_gyrokinetic_advance_cu_ker(int cdim, int dir, const struct gkyl_range skin_r, + const struct gkyl_range ghost_r, const struct gkyl_range conf_r, const struct gkyl_range vcut_r, + const struct gkyl_range vel_r, const struct gkyl_basis *basis, const struct gkyl_array *vmap, + double q2Dm, const struct gkyl_array *phi, const struct gkyl_array *phi_wall, + const struct gkyl_array *vcut_fact, struct gkyl_bc_sheath_gyrokinetic_kernels *kers, + struct gkyl_array *distf) { int fidx[GKYL_MAX_DIM]; // Flipped index. int pidx[GKYL_MAX_DIM]; int vidx[2]; + int vcut_fact_idx[GKYL_MAX_CDIM]; int pdim = skin_r.ndim; int vpar_dir = cdim; @@ -53,6 +56,7 @@ gkyl_bc_sheath_gyrokinetic_advance_cu_ker(int cdim, int dir, const struct gkyl_r // since update_range is a subrange gkyl_sub_range_inv_idx(&skin_r, linc, pidx); + // gkyl_sub_range_inv_idx(&vcut_r, linc, vcut_fact_idx); gkyl_copy_int_arr(pdim, pidx, fidx); fidx[vpar_dir] = uplo - pidx[vpar_dir]; @@ -73,13 +77,19 @@ gkyl_bc_sheath_gyrokinetic_advance_cu_ker(int cdim, int dir, const struct gkyl_r const double *phi_wall_p = (const double*) gkyl_array_cfetch(phi_wall, conf_loc); const double *vmap_p = (const double*) gkyl_array_cfetch(vmap, vel_loc); + // Get vcut factor. + for (int d=0; dreflectedf(vmap_p, q2Dm, phi_p, phi_wall_p, inp, fhat); + kers->reflectedf(vmap_p, q2Dm, phi_p, phi_wall_p, vcut_fact_p, inp, fhat); // Reflect fhat into skin cells. bc_gksheath_reflect(dir, basis, cdim, out, fhat); @@ -94,7 +104,7 @@ gkyl_bc_sheath_gyrokinetic_advance_cu(const struct gkyl_bc_sheath_gyrokinetic *u int nblocks = up->skin_r->nblocks, nthreads = up->skin_r->nthreads; gkyl_bc_sheath_gyrokinetic_advance_cu_ker<<>>(up->cdim, up->dir, *up->skin_r, *up->ghost_r, - *conf_r, up->vel_map->local_vel, up->basis, up->vel_map->vmap->on_dev, up->q2Dm, phi->on_dev, phi_wall->on_dev, + *conf_r, up->vcut_fact_local, up->vel_map->local_vel, up->basis, up->vel_map->vmap->on_dev, up->q2Dm, phi->on_dev, phi_wall->on_dev, up->vcut_fact->on_dev, up->kernels_cu, distf->on_dev); } } diff --git a/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic.h b/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic.h index 23f6ec26ff..5c3109962c 100644 --- a/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic.h +++ b/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic.h @@ -64,7 +64,7 @@ struct gkyl_array* gkyl_bc_sheath_gyrokinetic_acquire_vcut_fact(struct gkyl_bc_s * @param up BC updater. * @return The basis of the vcut_fact array used in the sheath BC. */ -struct gkyl_basis* gkyl_bc_sheath_gyrokinetic_get_vcut_fact_basis(struct gkyl_bc_sheath_gyrokinetic *up); +struct gkyl_basis gkyl_bc_sheath_gyrokinetic_get_vcut_fact_basis(struct gkyl_bc_sheath_gyrokinetic *up); /** * Get the range of the vcut_fact array used in the sheath BC. diff --git a/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic_priv.h b/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic_priv.h index 74fcaf61b4..445418d442 100644 --- a/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic_priv.h +++ b/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic_priv.h @@ -48,8 +48,9 @@ struct gkyl_bc_sheath_gyrokinetic { struct gkyl_bc_sheath_gyrokinetic_kernels *kernels_cu; // device copy. const struct gkyl_range *skin_r, *ghost_r; // Skin and ghost ranges. const struct gkyl_velocity_map *vel_map; // Velocity space mapping. + int vcut_fact_dim; // Dimensionality of vcut_fact array. struct gkyl_array *vcut_fact; // factor for mu dependent vcut in sheath BC. - struct gkyl_basis *vcut_fact_basis; // Basis for vcut_fact array (gk hybrid basis in velocity space). + struct gkyl_basis vcut_fact_basis; // Basis for vcut_fact array (expansion in perpendicular config space and mu). struct gkyl_range vcut_fact_local; // Range for vcut_fact array. }; @@ -90,11 +91,10 @@ bc_gksheath_reflect(int dir, const struct gkyl_basis *basis, int cdim, double *o * @param up BC updater. * @param phi Electrostatic potential. * @param phi_wall Wall potential. - * @param vcut_fact Alpha(mu) factor for mu dependent reflection. * @param distf Distribution function array to apply BC to. * @param conf_r Configuration space range (to index phi). */ void gkyl_bc_sheath_gyrokinetic_advance_cu(const struct gkyl_bc_sheath_gyrokinetic *up, const struct gkyl_array *phi, - const struct gkyl_array *phi_wall, const struct gkyl_array *vcut_fact, struct gkyl_array *distf, const struct gkyl_range *conf_r); + const struct gkyl_array *phi_wall, struct gkyl_array *distf, const struct gkyl_range *conf_r); #endif From b65b4510a291d19a6c47e1b6645535203e7d12f5 Mon Sep 17 00:00:00 2001 From: Antoinehoff Date: Fri, 15 May 2026 11:22:07 -0700 Subject: [PATCH 4/4] define and use vcut_fact_dim instead of cdim --- gyrokinetic/zero/bc_sheath_gyrokinetic_cu.cu | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gyrokinetic/zero/bc_sheath_gyrokinetic_cu.cu b/gyrokinetic/zero/bc_sheath_gyrokinetic_cu.cu index beff374000..80ad50c14f 100644 --- a/gyrokinetic/zero/bc_sheath_gyrokinetic_cu.cu +++ b/gyrokinetic/zero/bc_sheath_gyrokinetic_cu.cu @@ -78,8 +78,9 @@ gkyl_bc_sheath_gyrokinetic_advance_cu_ker(int cdim, int dir, const struct gkyl_r const double *vmap_p = (const double*) gkyl_array_cfetch(vmap, vel_loc); // Get vcut factor. - for (int d=0; d