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 998b64c168..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 @@ -1,7 +1,7 @@ #include -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x1v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl) +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x1v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl) { double vcutSq; double fReflSurf[3] = {0.}; @@ -12,7 +12,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x1v_ser_p1(const double double vparAbsSqLo = vmap[0]>0.? vparLo*vparLo : vparUp*vparUp; double vparAbsSqUp = vmap[0]>0.? vparUp*vparUp : vparLo*vparLo; - vcutSq = -0.5*(2.449489742783178*phiWall[1]-2.449489742783178*phi[1]-1.414213562373095*phiWall[0]+1.414213562373095*phi[0])*q2Dm; + vcutSq = -(0.5*(2.4494897427831783*phiWall[1]-2.4494897427831783*phi[1]-1.4142135623730951*phiWall[0]+1.4142135623730951*phi[0])*q2Dm); if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -22,9 +22,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x1v_ser_p1(const double } else if (vcutSq > vparAbsSqUp) { // full reflection - fReflSurf[0] = -0.7071067811865475*(1.732050807568877*f[1]-1.0*f[0]); - fReflSurf[1] = -0.7071067811865475*(1.732050807568877*f[3]-1.0*f[2]); - fReflSurf[2] = -0.1414213562373095*(8.660254037844387*f[5]-5.0*f[4]); + fReflSurf[0] = -(0.7071067811865475*(1.7320508075688772*f[1]-1.0*f[0])); + fReflSurf[1] = -(0.7071067811865475*(1.7320508075688772*f[3]-1.0*f[2])); + fReflSurf[2] = -(0.1414213562373095*(8.660254037844387*f[5]-5.0*f[4])); } else { // partial reflection @@ -42,9 +42,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x1v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurf[0] = -0.07905694150420944*((8.660254037844387*f[5]-5.0*f[4])*vcut_lR3+(6.708203932499369*f[3]-3.872983346207417*f[2])*vcut_lR2+((-8.660254037844387*f[5])+5.0*f[4]+7.745966692414834*f[1]-4.47213595499958*f[0])*vcut_l-6.708203932499369*f[3]+3.872983346207417*f[2]+7.745966692414834*f[1]-4.47213595499958*f[0]); - fReflSurf[1] = -0.0441941738241592*((20.1246117974981*f[5]-11.61895003862225*f[4])*vcut_lR4+(13.85640646055102*f[3]-8.0*f[2])*vcut_lR3+((-13.41640786499874*f[5])+7.745966692414834*f[4]+12.0*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[5]+3.872983346207417*f[4]+13.85640646055102*f[3]-8.0*f[2]-12.0*f[1]+6.928203230275509*f[0]); - fReflSurf[2] = -0.008838834764831839*((155.884572681199*f[5]-90.0*f[4])*vcut_lR5+(100.6230589874906*f[3]-58.09475019311126*f[2])*vcut_lR4+((-173.2050807568878*f[5])+100.0*f[4]+77.45966692414835*f[1]-44.7213595499958*f[0])*vcut_lR3+(38.72983346207418*f[2]-67.0820393249937*f[3])*vcut_lR2+(86.60254037844389*f[5]-50.0*f[4]-77.45966692414835*f[1]+44.7213595499958*f[0])*vcut_l+69.2820323027551*f[5]-40.0*f[4]-33.54101966249685*f[3]+19.36491673103709*f[2]); + fReflSurf[0] = -(0.07905694150420944*((8.660254037844387*f[5]-5.0*f[4])*vcut_lR3+(6.708203932499369*f[3]-3.872983346207417*f[2])*vcut_lR2+(-(8.660254037844387*f[5])+5.0*f[4]+7.745966692414834*f[1]-4.47213595499958*f[0])*vcut_l-6.708203932499369*f[3]+3.872983346207417*f[2]+7.745966692414834*f[1]-4.47213595499958*f[0])); + fReflSurf[1] = -(0.044194173824159196*((20.124611797498105*f[5]-11.61895003862225*f[4])*vcut_lR4+(13.856406460551018*f[3]-8.0*f[2])*vcut_lR3+(-(13.416407864998737*f[5])+7.745966692414834*f[4]+12.0*f[1]-6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[5]+3.872983346207417*f[4]+13.856406460551018*f[3]-8.0*f[2]-12.0*f[1]+6.928203230275509*f[0])); + fReflSurf[2] = -(0.008838834764831839*((155.88457268119896*f[5]-90.0*f[4])*vcut_lR5+(100.62305898749055*f[3]-58.09475019311126*f[2])*vcut_lR4+(-(173.20508075688778*f[5])+100.0*f[4]+77.45966692414835*f[1]-44.7213595499958*f[0])*vcut_lR3+(38.729833462074176*f[2]-67.0820393249937*f[3])*vcut_lR2+(86.60254037844389*f[5]-50.0*f[4]-77.45966692414835*f[1]+44.7213595499958*f[0])*vcut_l+69.2820323027551*f[5]-40.0*f[4]-33.54101966249685*f[3]+19.364916731037088*f[2])); } else { // vcut in logical space. @@ -55,9 +55,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x1v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurf[0] = 0.07905694150420944*((8.660254037844387*f[5]-5.0*f[4])*vcut_lR3+(6.708203932499369*f[3]-3.872983346207417*f[2])*vcut_lR2+((-8.660254037844387*f[5])+5.0*f[4]+7.745966692414834*f[1]-4.47213595499958*f[0])*vcut_l-6.708203932499369*f[3]+3.872983346207417*f[2]-7.745966692414834*f[1]+4.47213595499958*f[0]); - fReflSurf[1] = 0.0441941738241592*((20.1246117974981*f[5]-11.61895003862225*f[4])*vcut_lR4+(13.85640646055102*f[3]-8.0*f[2])*vcut_lR3+((-13.41640786499874*f[5])+7.745966692414834*f[4]+12.0*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[5]+3.872983346207417*f[4]-13.85640646055102*f[3]+8.0*f[2]-12.0*f[1]+6.928203230275509*f[0]); - fReflSurf[2] = 0.008838834764831839*((155.884572681199*f[5]-90.0*f[4])*vcut_lR5+(100.6230589874906*f[3]-58.09475019311126*f[2])*vcut_lR4+((-173.2050807568878*f[5])+100.0*f[4]+77.45966692414835*f[1]-44.7213595499958*f[0])*vcut_lR3+(38.72983346207418*f[2]-67.0820393249937*f[3])*vcut_lR2+(86.60254037844389*f[5]-50.0*f[4]-77.45966692414835*f[1]+44.7213595499958*f[0])*vcut_l-69.2820323027551*f[5]+40.0*f[4]-33.54101966249685*f[3]+19.36491673103709*f[2]); + fReflSurf[0] = 0.07905694150420944*((8.660254037844387*f[5]-5.0*f[4])*vcut_lR3+(6.708203932499369*f[3]-3.872983346207417*f[2])*vcut_lR2+(-(8.660254037844387*f[5])+5.0*f[4]+7.745966692414834*f[1]-4.47213595499958*f[0])*vcut_l-6.708203932499369*f[3]+3.872983346207417*f[2]-7.745966692414834*f[1]+4.47213595499958*f[0]); + fReflSurf[1] = 0.044194173824159196*((20.124611797498105*f[5]-11.61895003862225*f[4])*vcut_lR4+(13.856406460551018*f[3]-8.0*f[2])*vcut_lR3+(-(13.416407864998737*f[5])+7.745966692414834*f[4]+12.0*f[1]-6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[5]+3.872983346207417*f[4]-13.856406460551018*f[3]+8.0*f[2]-12.0*f[1]+6.928203230275509*f[0]); + fReflSurf[2] = 0.008838834764831839*((155.88457268119896*f[5]-90.0*f[4])*vcut_lR5+(100.62305898749055*f[3]-58.09475019311126*f[2])*vcut_lR4+(-(173.20508075688778*f[5])+100.0*f[4]+77.45966692414835*f[1]-44.7213595499958*f[0])*vcut_lR3+(38.729833462074176*f[2]-67.0820393249937*f[3])*vcut_lR2+(86.60254037844389*f[5]-50.0*f[4]-77.45966692414835*f[1]+44.7213595499958*f[0])*vcut_l-69.2820323027551*f[5]+40.0*f[4]-33.54101966249685*f[3]+19.364916731037088*f[2]); } @@ -77,15 +77,15 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x1v_ser_p1(const double } - fRefl[0] = 1.414213562373095*fReflSurf[0]; + fRefl[0] = 1.4142135623730951*fReflSurf[0]; fRefl[1] = 0.0; - fRefl[2] = 1.414213562373095*fReflSurf[1]; + fRefl[2] = 1.4142135623730951*fReflSurf[1]; fRefl[3] = 0.0; - fRefl[4] = 1.414213562373095*fReflSurf[2]; + fRefl[4] = 1.4142135623730951*fReflSurf[2]; fRefl[5] = 0.0; } -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x1v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl) +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x1v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl) { double vcutSq; double fReflSurf[3] = {0.}; @@ -96,7 +96,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x1v_ser_p1(const double double vparAbsSqLo = vmap[0]>0.? vparLo*vparLo : vparUp*vparUp; double vparAbsSqUp = vmap[0]>0.? vparUp*vparUp : vparLo*vparLo; - vcutSq = 0.5*(2.449489742783178*phiWall[1]-2.449489742783178*phi[1]+1.414213562373095*phiWall[0]-1.414213562373095*phi[0])*q2Dm; + vcutSq = 0.5*(2.4494897427831783*phiWall[1]-2.4494897427831783*phi[1]+1.4142135623730951*phiWall[0]-1.4142135623730951*phi[0])*q2Dm; if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) @@ -106,8 +106,8 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x1v_ser_p1(const double } else if (vcutSq > vparAbsSqUp) { // full reflection - fReflSurf[0] = 0.7071067811865475*(1.732050807568877*f[1]+f[0]); - fReflSurf[1] = 0.7071067811865475*(1.732050807568877*f[3]+f[2]); + fReflSurf[0] = 0.7071067811865475*(1.7320508075688772*f[1]+f[0]); + fReflSurf[1] = 0.7071067811865475*(1.7320508075688772*f[3]+f[2]); fReflSurf[2] = 0.1414213562373095*(8.660254037844387*f[5]+5.0*f[4]); } else { // partial reflection @@ -126,9 +126,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x1v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurf[0] = 0.07905694150420944*((8.660254037844387*f[5]+5.0*f[4])*vcut_lR3+(6.708203932499369*f[3]+3.872983346207417*f[2])*vcut_lR2+((-8.660254037844387*f[5])-5.0*f[4]+7.745966692414834*f[1]+4.47213595499958*f[0])*vcut_l-6.708203932499369*f[3]-3.872983346207417*f[2]+7.745966692414834*f[1]+4.47213595499958*f[0]); - fReflSurf[1] = 0.0441941738241592*((20.1246117974981*f[5]+11.61895003862225*f[4])*vcut_lR4+(13.85640646055102*f[3]+8.0*f[2])*vcut_lR3+((-13.41640786499874*f[5])-7.745966692414834*f[4]+12.0*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[5]-3.872983346207417*f[4]+13.85640646055102*f[3]+8.0*f[2]-12.0*f[1]-6.928203230275509*f[0]); - fReflSurf[2] = 0.008838834764831839*((155.884572681199*f[5]+90.0*f[4])*vcut_lR5+(100.6230589874906*f[3]+58.09475019311126*f[2])*vcut_lR4+((-173.2050807568878*f[5])-100.0*f[4]+77.45966692414835*f[1]+44.7213595499958*f[0])*vcut_lR3+((-67.0820393249937*f[3])-38.72983346207418*f[2])*vcut_lR2+(86.60254037844389*f[5]+50.0*f[4]-77.45966692414835*f[1]-44.7213595499958*f[0])*vcut_l+69.2820323027551*f[5]+40.0*f[4]-33.54101966249685*f[3]-19.36491673103709*f[2]); + fReflSurf[0] = 0.07905694150420944*((8.660254037844387*f[5]+5.0*f[4])*vcut_lR3+(6.708203932499369*f[3]+3.872983346207417*f[2])*vcut_lR2+(-(8.660254037844387*f[5])-5.0*f[4]+7.745966692414834*f[1]+4.47213595499958*f[0])*vcut_l-6.708203932499369*f[3]-3.872983346207417*f[2]+7.745966692414834*f[1]+4.47213595499958*f[0]); + fReflSurf[1] = 0.044194173824159196*((20.124611797498105*f[5]+11.61895003862225*f[4])*vcut_lR4+(13.856406460551018*f[3]+8.0*f[2])*vcut_lR3+(-(13.416407864998737*f[5])-7.745966692414834*f[4]+12.0*f[1]+6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[5]-3.872983346207417*f[4]+13.856406460551018*f[3]+8.0*f[2]-12.0*f[1]-6.928203230275509*f[0]); + fReflSurf[2] = 0.008838834764831839*((155.88457268119896*f[5]+90.0*f[4])*vcut_lR5+(100.62305898749055*f[3]+58.09475019311126*f[2])*vcut_lR4+(-(173.20508075688778*f[5])-100.0*f[4]+77.45966692414835*f[1]+44.7213595499958*f[0])*vcut_lR3+(-(67.0820393249937*f[3])-38.729833462074176*f[2])*vcut_lR2+(86.60254037844389*f[5]+50.0*f[4]-77.45966692414835*f[1]-44.7213595499958*f[0])*vcut_l+69.2820323027551*f[5]+40.0*f[4]-33.54101966249685*f[3]-19.364916731037088*f[2]); } else { // vcut in logical space. @@ -139,9 +139,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x1v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurf[0] = -0.07905694150420944*((8.660254037844387*f[5]+5.0*f[4])*vcut_lR3+(6.708203932499369*f[3]+3.872983346207417*f[2])*vcut_lR2+((-8.660254037844387*f[5])-5.0*f[4]+7.745966692414834*f[1]+4.47213595499958*f[0])*vcut_l-6.708203932499369*f[3]-3.872983346207417*f[2]-7.745966692414834*f[1]-4.47213595499958*f[0]); - fReflSurf[1] = -0.0441941738241592*((20.1246117974981*f[5]+11.61895003862225*f[4])*vcut_lR4+(13.85640646055102*f[3]+8.0*f[2])*vcut_lR3+((-13.41640786499874*f[5])-7.745966692414834*f[4]+12.0*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[5]-3.872983346207417*f[4]-13.85640646055102*f[3]-8.0*f[2]-12.0*f[1]-6.928203230275509*f[0]); - fReflSurf[2] = -0.008838834764831839*((155.884572681199*f[5]+90.0*f[4])*vcut_lR5+(100.6230589874906*f[3]+58.09475019311126*f[2])*vcut_lR4+((-173.2050807568878*f[5])-100.0*f[4]+77.45966692414835*f[1]+44.7213595499958*f[0])*vcut_lR3+((-67.0820393249937*f[3])-38.72983346207418*f[2])*vcut_lR2+(86.60254037844389*f[5]+50.0*f[4]-77.45966692414835*f[1]-44.7213595499958*f[0])*vcut_l-69.2820323027551*f[5]-40.0*f[4]-33.54101966249685*f[3]-19.36491673103709*f[2]); + fReflSurf[0] = -(0.07905694150420944*((8.660254037844387*f[5]+5.0*f[4])*vcut_lR3+(6.708203932499369*f[3]+3.872983346207417*f[2])*vcut_lR2+(-(8.660254037844387*f[5])-5.0*f[4]+7.745966692414834*f[1]+4.47213595499958*f[0])*vcut_l-6.708203932499369*f[3]-3.872983346207417*f[2]-7.745966692414834*f[1]-4.47213595499958*f[0])); + fReflSurf[1] = -(0.044194173824159196*((20.124611797498105*f[5]+11.61895003862225*f[4])*vcut_lR4+(13.856406460551018*f[3]+8.0*f[2])*vcut_lR3+(-(13.416407864998737*f[5])-7.745966692414834*f[4]+12.0*f[1]+6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[5]-3.872983346207417*f[4]-13.856406460551018*f[3]-8.0*f[2]-12.0*f[1]-6.928203230275509*f[0])); + fReflSurf[2] = -(0.008838834764831839*((155.88457268119896*f[5]+90.0*f[4])*vcut_lR5+(100.62305898749055*f[3]+58.09475019311126*f[2])*vcut_lR4+(-(173.20508075688778*f[5])-100.0*f[4]+77.45966692414835*f[1]+44.7213595499958*f[0])*vcut_lR3+(-(67.0820393249937*f[3])-38.729833462074176*f[2])*vcut_lR2+(86.60254037844389*f[5]+50.0*f[4]-77.45966692414835*f[1]-44.7213595499958*f[0])*vcut_l-69.2820323027551*f[5]-40.0*f[4]-33.54101966249685*f[3]-19.364916731037088*f[2])); } @@ -161,15 +161,15 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x1v_ser_p1(const double } - fRefl[0] = 1.414213562373095*fReflSurf[0]; + fRefl[0] = 1.4142135623730951*fReflSurf[0]; fRefl[1] = 0.0; - fRefl[2] = 1.414213562373095*fReflSurf[1]; + fRefl[2] = 1.4142135623730951*fReflSurf[1]; fRefl[3] = 0.0; - fRefl[4] = 1.414213562373095*fReflSurf[2]; + fRefl[4] = 1.4142135623730951*fReflSurf[2]; fRefl[5] = 0.0; } -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl) +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl) { double vcutSq; double fReflSurf[6] = {0.}; @@ -180,35 +180,29 @@ 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; - vcutSq = -0.5*(2.449489742783178*phiWall[1]-2.449489742783178*phi[1]-1.414213562373095*phiWall[0]+1.414213562373095*phi[0])*q2Dm; + 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.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) - fReflSurf[0] = 0.0; - fReflSurf[1] = 0.0; - fReflSurf[2] = 0.0; - fReflSurf[3] = 0.0; - fReflSurf[4] = 0.0; - fReflSurf[5] = 0.0; + fReflSurfMu[0][0] = 0.0; + fReflSurfMu[0][1] = 0.0; + fReflSurfMu[0][2] = 0.0; } else if (vcutSq > vparAbsSqUp) { // full reflection - fReflSurf[0] = -0.7071067811865475*(1.732050807568877*f[1]-1.0*f[0]); - fReflSurf[1] = -0.7071067811865475*(1.732050807568877*f[4]-1.0*f[2]); - fReflSurf[2] = -0.7071067811865475*(1.732050807568877*f[5]-1.0*f[3]); - fReflSurf[3] = -0.7071067811865475*(1.732050807568877*f[7]-1.0*f[6]); - fReflSurf[4] = -0.1414213562373095*(8.660254037844387*f[9]-5.0*f[8]); - fReflSurf[5] = -0.1414213562373095*(8.660254037844387*f[11]-5.0*f[10]); + fReflSurfMu[0][0] = 0.5*(1.7320508075688772*f[5]-1.0*(f[3]+1.7320508075688772*f[1])+f[0]); + fReflSurfMu[0][1] = 0.5*(1.7320508075688772*f[7]-1.0*(f[6]+1.7320508075688772*f[4])+f[2]); + fReflSurfMu[0][2] = 0.03333333333333333*(1.7320508075688772*(15.0*f[11]-8.660254037844387*f[10])+3.0*(5.0*f[8]-8.660254037844387*f[9])); } else { // partial reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; - - double xBar, xSqBar; - double fReflSurfMu[2][3] = {0.}; - - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -218,9 +212,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfMu[0][0] = 0.01863389981249824*((25.98076211353316*f[11]-15.0*f[10]-25.98076211353316*f[9]+15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]-11.61895003862225*f[6]-20.12461179749811*f[4]+11.61895003862225*f[2])*vcut_lR2+((-25.98076211353316*f[11])+15.0*f[10]+25.98076211353316*f[9]-15.0*f[8]+23.2379000772445*f[5]-13.41640786499874*f[3]-23.2379000772445*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[7]+11.61895003862225*f[6]+23.2379000772445*f[5]+20.12461179749811*f[4]-13.41640786499874*f[3]-11.61895003862225*f[2]-23.2379000772445*f[1]+13.41640786499874*f[0]); - fReflSurfMu[0][1] = 0.03125*((20.12461179749811*f[11]-11.61895003862225*f[10]-20.1246117974981*f[9]+11.61895003862225*f[8])*vcut_lR4+(13.85640646055102*f[7]-8.0*f[6]-13.85640646055102*f[4]+8.0*f[2])*vcut_lR3+((-13.41640786499874*f[11])+7.745966692414834*f[10]+13.41640786499874*f[9]-7.745966692414834*f[8]+12.0*f[5]-6.928203230275509*f[3]-12.0*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]+3.872983346207417*f[10]+6.708203932499369*f[9]-3.872983346207417*f[8]+13.85640646055102*f[7]-8.0*f[6]-12.0*f[5]-13.85640646055102*f[4]+6.928203230275509*f[3]+8.0*f[2]+12.0*f[1]-6.928203230275509*f[0]); - fReflSurfMu[0][2] = 0.002083333333333333*((467.6537180435967*f[11]-269.9999999999999*f[10]-467.6537180435969*f[9]+270.0*f[8])*vcut_lR5+(301.8691769624717*f[7]-174.2842505793337*f[6]-301.8691769624717*f[4]+174.2842505793337*f[2])*vcut_lR4+((-519.6152422706631*f[11])+300.0000000000001*f[10]+519.6152422706633*f[9]-300.0*f[8]+232.379000772445*f[5]-134.1640786499874*f[3]-232.379000772445*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[7])+116.1895003862225*f[6]+201.2461179749811*f[4]-116.1895003862225*f[2])*vcut_lR2+(259.8076211353315*f[11]-150.0*f[10]-259.8076211353317*f[9]+150.0*f[8]-232.379000772445*f[5]+134.1640786499874*f[3]+232.379000772445*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[11]-120.0*f[10]-207.8460969082653*f[9]+120.0*f[8]-100.6230589874906*f[7]+58.09475019311126*f[6]+100.6230589874906*f[4]-58.09475019311126*f[2]); + fReflSurfMu[0][0] = 0.018633899812498245*((25.980762113533157*f[11]-15.000000000000002*f[10]-25.98076211353316*f[9]+15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]-11.61895003862225*f[6]-20.12461179749811*f[4]+11.61895003862225*f[2])*vcut_lR2+(-(25.980762113533157*f[11])+15.000000000000002*f[10]+25.98076211353316*f[9]-15.0*f[8]+23.2379000772445*f[5]-13.416407864998739*f[3]-23.2379000772445*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[7]+11.61895003862225*f[6]+23.2379000772445*f[5]+20.12461179749811*f[4]-13.416407864998739*f[3]-11.61895003862225*f[2]-23.2379000772445*f[1]+13.416407864998739*f[0]); + fReflSurfMu[0][1] = 0.03125*((20.12461179749811*f[11]-11.618950038622252*f[10]-20.124611797498105*f[9]+11.61895003862225*f[8])*vcut_lR4+(13.856406460551018*f[7]-8.0*f[6]-13.856406460551018*f[4]+8.0*f[2])*vcut_lR3+(-(13.416407864998739*f[11])+7.745966692414834*f[10]+13.416407864998737*f[9]-7.745966692414834*f[8]+12.0*f[5]-6.928203230275509*f[3]-12.0*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]+3.872983346207417*f[10]+6.7082039324993685*f[9]-3.872983346207417*f[8]+13.856406460551018*f[7]-8.0*f[6]-12.0*f[5]-13.856406460551018*f[4]+6.928203230275509*f[3]+8.0*f[2]+12.0*f[1]-6.928203230275509*f[0]); + fReflSurfMu[0][2] = 0.0020833333333333333*((467.65371804359665*f[11]-269.99999999999994*f[10]-467.65371804359694*f[9]+270.0*f[8])*vcut_lR5+(301.86917696247167*f[7]-174.28425057933373*f[6]-301.86917696247167*f[4]+174.28425057933373*f[2])*vcut_lR4+(-(519.6152422706631*f[11])+300.00000000000006*f[10]+519.6152422706633*f[9]-300.0*f[8]+232.37900077244504*f[5]-134.1640786499874*f[3]-232.37900077244504*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[7])+116.18950038622252*f[6]+201.2461179749811*f[4]-116.18950038622252*f[2])*vcut_lR2+(259.80762113533154*f[11]-150.00000000000003*f[10]-259.80762113533166*f[9]+150.0*f[8]-232.37900077244504*f[5]+134.1640786499874*f[3]+232.37900077244504*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826525*f[11]-120.00000000000001*f[10]-207.84609690826528*f[9]+120.0*f[8]-100.62305898749055*f[7]+58.09475019311126*f[6]+100.62305898749055*f[4]-58.09475019311126*f[2]); } else { // vcut in logical space. @@ -231,9 +225,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfMu[0][0] = -0.01863389981249824*((25.98076211353316*f[11]-15.0*f[10]-25.98076211353316*f[9]+15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]-11.61895003862225*f[6]-20.12461179749811*f[4]+11.61895003862225*f[2])*vcut_lR2+((-25.98076211353316*f[11])+15.0*f[10]+25.98076211353316*f[9]-15.0*f[8]+23.2379000772445*f[5]-13.41640786499874*f[3]-23.2379000772445*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[7]+11.61895003862225*f[6]-23.2379000772445*f[5]+20.12461179749811*f[4]+13.41640786499874*f[3]-11.61895003862225*f[2]+23.2379000772445*f[1]-13.41640786499874*f[0]); - fReflSurfMu[0][1] = -0.03125*((20.12461179749811*f[11]-11.61895003862225*f[10]-20.1246117974981*f[9]+11.61895003862225*f[8])*vcut_lR4+(13.85640646055102*f[7]-8.0*f[6]-13.85640646055102*f[4]+8.0*f[2])*vcut_lR3+((-13.41640786499874*f[11])+7.745966692414834*f[10]+13.41640786499874*f[9]-7.745966692414834*f[8]+12.0*f[5]-6.928203230275509*f[3]-12.0*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]+3.872983346207417*f[10]+6.708203932499369*f[9]-3.872983346207417*f[8]-13.85640646055102*f[7]+8.0*f[6]-12.0*f[5]+13.85640646055102*f[4]+6.928203230275509*f[3]-8.0*f[2]+12.0*f[1]-6.928203230275509*f[0]); - fReflSurfMu[0][2] = -0.002083333333333333*((467.6537180435967*f[11]-269.9999999999999*f[10]-467.6537180435969*f[9]+270.0*f[8])*vcut_lR5+(301.8691769624717*f[7]-174.2842505793337*f[6]-301.8691769624717*f[4]+174.2842505793337*f[2])*vcut_lR4+((-519.6152422706631*f[11])+300.0000000000001*f[10]+519.6152422706633*f[9]-300.0*f[8]+232.379000772445*f[5]-134.1640786499874*f[3]-232.379000772445*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[7])+116.1895003862225*f[6]+201.2461179749811*f[4]-116.1895003862225*f[2])*vcut_lR2+(259.8076211353315*f[11]-150.0*f[10]-259.8076211353317*f[9]+150.0*f[8]-232.379000772445*f[5]+134.1640786499874*f[3]+232.379000772445*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[11]+120.0*f[10]+207.8460969082653*f[9]-120.0*f[8]-100.6230589874906*f[7]+58.09475019311126*f[6]+100.6230589874906*f[4]-58.09475019311126*f[2]); + fReflSurfMu[0][0] = -(0.018633899812498245*((25.980762113533157*f[11]-15.000000000000002*f[10]-25.98076211353316*f[9]+15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]-11.61895003862225*f[6]-20.12461179749811*f[4]+11.61895003862225*f[2])*vcut_lR2+(-(25.980762113533157*f[11])+15.000000000000002*f[10]+25.98076211353316*f[9]-15.0*f[8]+23.2379000772445*f[5]-13.416407864998739*f[3]-23.2379000772445*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[7]+11.61895003862225*f[6]-23.2379000772445*f[5]+20.12461179749811*f[4]+13.416407864998739*f[3]-11.61895003862225*f[2]+23.2379000772445*f[1]-13.416407864998739*f[0])); + fReflSurfMu[0][1] = -(0.03125*((20.12461179749811*f[11]-11.618950038622252*f[10]-20.124611797498105*f[9]+11.61895003862225*f[8])*vcut_lR4+(13.856406460551018*f[7]-8.0*f[6]-13.856406460551018*f[4]+8.0*f[2])*vcut_lR3+(-(13.416407864998739*f[11])+7.745966692414834*f[10]+13.416407864998737*f[9]-7.745966692414834*f[8]+12.0*f[5]-6.928203230275509*f[3]-12.0*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]+3.872983346207417*f[10]+6.7082039324993685*f[9]-3.872983346207417*f[8]-13.856406460551018*f[7]+8.0*f[6]-12.0*f[5]+13.856406460551018*f[4]+6.928203230275509*f[3]-8.0*f[2]+12.0*f[1]-6.928203230275509*f[0])); + fReflSurfMu[0][2] = -(0.0020833333333333333*((467.65371804359665*f[11]-269.99999999999994*f[10]-467.65371804359694*f[9]+270.0*f[8])*vcut_lR5+(301.86917696247167*f[7]-174.28425057933373*f[6]-301.86917696247167*f[4]+174.28425057933373*f[2])*vcut_lR4+(-(519.6152422706631*f[11])+300.00000000000006*f[10]+519.6152422706633*f[9]-300.0*f[8]+232.37900077244504*f[5]-134.1640786499874*f[3]-232.37900077244504*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[7])+116.18950038622252*f[6]+201.2461179749811*f[4]-116.18950038622252*f[2])*vcut_lR2+(259.80762113533154*f[11]-150.00000000000003*f[10]-259.80762113533166*f[9]+150.0*f[8]-232.37900077244504*f[5]+134.1640786499874*f[3]+232.37900077244504*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826525*f[11]+120.00000000000001*f[10]+207.84609690826528*f[9]-120.0*f[8]-100.62305898749055*f[7]+58.09475019311126*f[6]+100.62305898749055*f[4]-58.09475019311126*f[2])); } @@ -251,7 +245,25 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double fReflSurfMu[0][2] = 0.0; } - // node (mu)_1 + } + + // node (mu)_1 + 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) + + fReflSurfMu[1][0] = 0.0; + fReflSurfMu[1][1] = 0.0; + fReflSurfMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfMu[1][0] = -(0.5*(1.7320508075688772*f[5]-1.0*f[3]+1.7320508075688772*f[1]-1.0*f[0])); + fReflSurfMu[1][1] = -(0.5*(1.7320508075688772*f[7]-1.0*f[6]+1.7320508075688772*f[4]-1.0*f[2])); + fReflSurfMu[1][2] = -(0.03333333333333333*(1.7320508075688772*(15.0*f[11]-8.660254037844387*f[10])+3.0*(8.660254037844387*f[9]-5.0*f[8]))); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -261,9 +273,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfMu[1][0] = -0.01863389981249824*((25.98076211353316*f[11]-15.0*f[10]+25.98076211353316*f[9]-15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]-11.61895003862225*f[6]+20.12461179749811*f[4]-11.61895003862225*f[2])*vcut_lR2+((-25.98076211353316*f[11])+15.0*f[10]-25.98076211353316*f[9]+15.0*f[8]+23.2379000772445*f[5]-13.41640786499874*f[3]+23.2379000772445*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[7]+11.61895003862225*f[6]+23.2379000772445*f[5]-20.12461179749811*f[4]-13.41640786499874*f[3]+11.61895003862225*f[2]+23.2379000772445*f[1]-13.41640786499874*f[0]); - fReflSurfMu[1][1] = -0.03125*((20.12461179749811*f[11]-11.61895003862225*f[10]+20.1246117974981*f[9]-11.61895003862225*f[8])*vcut_lR4+(13.85640646055102*f[7]-8.0*f[6]+13.85640646055102*f[4]-8.0*f[2])*vcut_lR3+((-13.41640786499874*f[11])+7.745966692414834*f[10]-13.41640786499874*f[9]+7.745966692414834*f[8]+12.0*f[5]-6.928203230275509*f[3]+12.0*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]+3.872983346207417*f[10]-6.708203932499369*f[9]+3.872983346207417*f[8]+13.85640646055102*f[7]-8.0*f[6]-12.0*f[5]+13.85640646055102*f[4]+6.928203230275509*f[3]-8.0*f[2]-12.0*f[1]+6.928203230275509*f[0]); - fReflSurfMu[1][2] = -0.002083333333333333*((467.6537180435967*f[11]-269.9999999999999*f[10]+467.6537180435969*f[9]-270.0*f[8])*vcut_lR5+(301.8691769624717*f[7]-174.2842505793337*f[6]+301.8691769624717*f[4]-174.2842505793337*f[2])*vcut_lR4+((-519.6152422706631*f[11])+300.0000000000001*f[10]-519.6152422706633*f[9]+300.0*f[8]+232.379000772445*f[5]-134.1640786499874*f[3]+232.379000772445*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[7])+116.1895003862225*f[6]-201.2461179749811*f[4]+116.1895003862225*f[2])*vcut_lR2+(259.8076211353315*f[11]-150.0*f[10]+259.8076211353317*f[9]-150.0*f[8]-232.379000772445*f[5]+134.1640786499874*f[3]-232.379000772445*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[11]-120.0*f[10]+207.8460969082653*f[9]-120.0*f[8]-100.6230589874906*f[7]+58.09475019311126*f[6]-100.6230589874906*f[4]+58.09475019311126*f[2]); + fReflSurfMu[1][0] = -(0.018633899812498245*((25.980762113533157*f[11]-15.000000000000002*f[10]+25.98076211353316*f[9]-15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]-11.61895003862225*f[6]+20.12461179749811*f[4]-11.61895003862225*f[2])*vcut_lR2+(-(25.980762113533157*f[11])+15.000000000000002*f[10]-25.98076211353316*f[9]+15.0*f[8]+23.2379000772445*f[5]-13.416407864998739*f[3]+23.2379000772445*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[7]+11.61895003862225*f[6]+23.2379000772445*f[5]-20.12461179749811*f[4]-13.416407864998739*f[3]+11.61895003862225*f[2]+23.2379000772445*f[1]-13.416407864998739*f[0])); + fReflSurfMu[1][1] = -(0.03125*((20.12461179749811*f[11]-11.618950038622252*f[10]+20.124611797498105*f[9]-11.61895003862225*f[8])*vcut_lR4+(13.856406460551018*f[7]-8.0*f[6]+13.856406460551018*f[4]-8.0*f[2])*vcut_lR3+(-(13.416407864998739*f[11])+7.745966692414834*f[10]-13.416407864998737*f[9]+7.745966692414834*f[8]+12.0*f[5]-6.928203230275509*f[3]+12.0*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]+3.872983346207417*f[10]-6.7082039324993685*f[9]+3.872983346207417*f[8]+13.856406460551018*f[7]-8.0*f[6]-12.0*f[5]+13.856406460551018*f[4]+6.928203230275509*f[3]-8.0*f[2]-12.0*f[1]+6.928203230275509*f[0])); + fReflSurfMu[1][2] = -(0.0020833333333333333*((467.65371804359665*f[11]-269.99999999999994*f[10]+467.65371804359694*f[9]-270.0*f[8])*vcut_lR5+(301.86917696247167*f[7]-174.28425057933373*f[6]+301.86917696247167*f[4]-174.28425057933373*f[2])*vcut_lR4+(-(519.6152422706631*f[11])+300.00000000000006*f[10]-519.6152422706633*f[9]+300.0*f[8]+232.37900077244504*f[5]-134.1640786499874*f[3]+232.37900077244504*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[7])+116.18950038622252*f[6]-201.2461179749811*f[4]+116.18950038622252*f[2])*vcut_lR2+(259.80762113533154*f[11]-150.00000000000003*f[10]+259.80762113533166*f[9]-150.0*f[8]-232.37900077244504*f[5]+134.1640786499874*f[3]-232.37900077244504*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826525*f[11]-120.00000000000001*f[10]+207.84609690826528*f[9]-120.0*f[8]-100.62305898749055*f[7]+58.09475019311126*f[6]-100.62305898749055*f[4]+58.09475019311126*f[2])); } else { // vcut in logical space. @@ -274,9 +286,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfMu[1][0] = 0.01863389981249824*((25.98076211353316*f[11]-15.0*f[10]+25.98076211353316*f[9]-15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]-11.61895003862225*f[6]+20.12461179749811*f[4]-11.61895003862225*f[2])*vcut_lR2+((-25.98076211353316*f[11])+15.0*f[10]-25.98076211353316*f[9]+15.0*f[8]+23.2379000772445*f[5]-13.41640786499874*f[3]+23.2379000772445*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[7]+11.61895003862225*f[6]-23.2379000772445*f[5]-20.12461179749811*f[4]+13.41640786499874*f[3]+11.61895003862225*f[2]-23.2379000772445*f[1]+13.41640786499874*f[0]); - fReflSurfMu[1][1] = 0.03125*((20.12461179749811*f[11]-11.61895003862225*f[10]+20.1246117974981*f[9]-11.61895003862225*f[8])*vcut_lR4+(13.85640646055102*f[7]-8.0*f[6]+13.85640646055102*f[4]-8.0*f[2])*vcut_lR3+((-13.41640786499874*f[11])+7.745966692414834*f[10]-13.41640786499874*f[9]+7.745966692414834*f[8]+12.0*f[5]-6.928203230275509*f[3]+12.0*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]+3.872983346207417*f[10]-6.708203932499369*f[9]+3.872983346207417*f[8]-13.85640646055102*f[7]+8.0*f[6]-12.0*f[5]-13.85640646055102*f[4]+6.928203230275509*f[3]+8.0*f[2]-12.0*f[1]+6.928203230275509*f[0]); - fReflSurfMu[1][2] = 0.002083333333333333*((467.6537180435967*f[11]-269.9999999999999*f[10]+467.6537180435969*f[9]-270.0*f[8])*vcut_lR5+(301.8691769624717*f[7]-174.2842505793337*f[6]+301.8691769624717*f[4]-174.2842505793337*f[2])*vcut_lR4+((-519.6152422706631*f[11])+300.0000000000001*f[10]-519.6152422706633*f[9]+300.0*f[8]+232.379000772445*f[5]-134.1640786499874*f[3]+232.379000772445*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[7])+116.1895003862225*f[6]-201.2461179749811*f[4]+116.1895003862225*f[2])*vcut_lR2+(259.8076211353315*f[11]-150.0*f[10]+259.8076211353317*f[9]-150.0*f[8]-232.379000772445*f[5]+134.1640786499874*f[3]-232.379000772445*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[11]+120.0*f[10]-207.8460969082653*f[9]+120.0*f[8]-100.6230589874906*f[7]+58.09475019311126*f[6]-100.6230589874906*f[4]+58.09475019311126*f[2]); + fReflSurfMu[1][0] = 0.018633899812498245*((25.980762113533157*f[11]-15.000000000000002*f[10]+25.98076211353316*f[9]-15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]-11.61895003862225*f[6]+20.12461179749811*f[4]-11.61895003862225*f[2])*vcut_lR2+(-(25.980762113533157*f[11])+15.000000000000002*f[10]-25.98076211353316*f[9]+15.0*f[8]+23.2379000772445*f[5]-13.416407864998739*f[3]+23.2379000772445*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[7]+11.61895003862225*f[6]-23.2379000772445*f[5]-20.12461179749811*f[4]+13.416407864998739*f[3]+11.61895003862225*f[2]-23.2379000772445*f[1]+13.416407864998739*f[0]); + fReflSurfMu[1][1] = 0.03125*((20.12461179749811*f[11]-11.618950038622252*f[10]+20.124611797498105*f[9]-11.61895003862225*f[8])*vcut_lR4+(13.856406460551018*f[7]-8.0*f[6]+13.856406460551018*f[4]-8.0*f[2])*vcut_lR3+(-(13.416407864998739*f[11])+7.745966692414834*f[10]-13.416407864998737*f[9]+7.745966692414834*f[8]+12.0*f[5]-6.928203230275509*f[3]+12.0*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]+3.872983346207417*f[10]-6.7082039324993685*f[9]+3.872983346207417*f[8]-13.856406460551018*f[7]+8.0*f[6]-12.0*f[5]-13.856406460551018*f[4]+6.928203230275509*f[3]+8.0*f[2]-12.0*f[1]+6.928203230275509*f[0]); + fReflSurfMu[1][2] = 0.0020833333333333333*((467.65371804359665*f[11]-269.99999999999994*f[10]+467.65371804359694*f[9]-270.0*f[8])*vcut_lR5+(301.86917696247167*f[7]-174.28425057933373*f[6]+301.86917696247167*f[4]-174.28425057933373*f[2])*vcut_lR4+(-(519.6152422706631*f[11])+300.00000000000006*f[10]-519.6152422706633*f[9]+300.0*f[8]+232.37900077244504*f[5]-134.1640786499874*f[3]+232.37900077244504*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[7])+116.18950038622252*f[6]-201.2461179749811*f[4]+116.18950038622252*f[2])*vcut_lR2+(259.80762113533154*f[11]-150.00000000000003*f[10]+259.80762113533166*f[9]-150.0*f[8]-232.37900077244504*f[5]+134.1640786499874*f[3]-232.37900077244504*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826525*f[11]+120.00000000000001*f[10]-207.84609690826528*f[9]+120.0*f[8]-100.62305898749055*f[7]+58.09475019311126*f[6]-100.62305898749055*f[4]+58.09475019311126*f[2]); } @@ -294,6 +306,8 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double fReflSurfMu[1][2] = 0.0; } + } + fReflSurf[0] = 0.7071067811865475*(fReflSurfMu[1][0]+fReflSurfMu[0][0]); fReflSurf[1] = 0.7071067811865475*(fReflSurfMu[1][1]+fReflSurfMu[0][1]); fReflSurf[2] = 0.7071067811865475*(fReflSurfMu[1][0]-1.0*fReflSurfMu[0][0]); @@ -301,23 +315,21 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double fReflSurf[4] = 0.7071067811865475*(fReflSurfMu[1][2]+fReflSurfMu[0][2]); fReflSurf[5] = 0.7071067811865475*(fReflSurfMu[1][2]-1.0*fReflSurfMu[0][2]); - } - - fRefl[0] = 1.414213562373095*fReflSurf[0]; + fRefl[0] = 1.4142135623730951*fReflSurf[0]; fRefl[1] = 0.0; - fRefl[2] = 1.414213562373095*fReflSurf[1]; - fRefl[3] = 1.414213562373095*fReflSurf[2]; + fRefl[2] = 1.4142135623730951*fReflSurf[1]; + fRefl[3] = 1.4142135623730951*fReflSurf[2]; fRefl[4] = 0.0; fRefl[5] = 0.0; - fRefl[6] = 1.414213562373095*fReflSurf[3]; + fRefl[6] = 1.4142135623730951*fReflSurf[3]; fRefl[7] = 0.0; - fRefl[8] = 1.414213562373095*fReflSurf[4]; + fRefl[8] = 1.4142135623730951*fReflSurf[4]; fRefl[9] = 0.0; - fRefl[10] = 1.414213562373095*fReflSurf[5]; + fRefl[10] = 1.4142135623730951*fReflSurf[5]; fRefl[11] = 0.0; } -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl) +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl) { double vcutSq; double fReflSurf[6] = {0.}; @@ -328,35 +340,29 @@ 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; - vcutSq = 0.5*(2.449489742783178*phiWall[1]-2.449489742783178*phi[1]+1.414213562373095*phiWall[0]-1.414213562373095*phi[0])*q2Dm; + 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.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) - fReflSurf[0] = 0.0; - fReflSurf[1] = 0.0; - fReflSurf[2] = 0.0; - fReflSurf[3] = 0.0; - fReflSurf[4] = 0.0; - fReflSurf[5] = 0.0; + fReflSurfMu[0][0] = 0.0; + fReflSurfMu[0][1] = 0.0; + fReflSurfMu[0][2] = 0.0; } else if (vcutSq > vparAbsSqUp) { // full reflection - fReflSurf[0] = 0.7071067811865475*(1.732050807568877*f[1]+f[0]); - fReflSurf[1] = 0.7071067811865475*(1.732050807568877*f[4]+f[2]); - fReflSurf[2] = 0.7071067811865475*(1.732050807568877*f[5]+f[3]); - fReflSurf[3] = 0.7071067811865475*(1.732050807568877*f[7]+f[6]); - fReflSurf[4] = 0.1414213562373095*(8.660254037844387*f[9]+5.0*f[8]); - fReflSurf[5] = 0.1414213562373095*(8.660254037844387*f[11]+5.0*f[10]); + fReflSurfMu[0][0] = -(0.5*(1.7320508075688772*f[5]+f[3]-1.0*(1.7320508075688772*f[1]+f[0]))); + fReflSurfMu[0][1] = -(0.5*(1.7320508075688772*f[7]+f[6]-1.0*(1.7320508075688772*f[4]+f[2]))); + fReflSurfMu[0][2] = -(0.03333333333333333*(1.7320508075688772*(15.0*f[11]+8.660254037844387*f[10])-3.0*(8.660254037844387*f[9]+5.0*f[8]))); } else { // partial reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; - - double xBar, xSqBar; - double fReflSurfMu[2][3] = {0.}; - - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -366,9 +372,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfMu[0][0] = -0.01863389981249824*((25.98076211353316*f[11]+15.0*f[10]-25.98076211353316*f[9]-15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]+11.61895003862225*f[6]-20.12461179749811*f[4]-11.61895003862225*f[2])*vcut_lR2+((-25.98076211353316*f[11])-15.0*f[10]+25.98076211353316*f[9]+15.0*f[8]+23.2379000772445*f[5]+13.41640786499874*f[3]-23.2379000772445*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[7]-11.61895003862225*f[6]+23.2379000772445*f[5]+20.12461179749811*f[4]+13.41640786499874*f[3]+11.61895003862225*f[2]-23.2379000772445*f[1]-13.41640786499874*f[0]); - fReflSurfMu[0][1] = -0.03125*((20.12461179749811*f[11]+11.61895003862225*f[10]-20.1246117974981*f[9]-11.61895003862225*f[8])*vcut_lR4+(13.85640646055102*f[7]+8.0*f[6]-13.85640646055102*f[4]-8.0*f[2])*vcut_lR3+((-13.41640786499874*f[11])-7.745966692414834*f[10]+13.41640786499874*f[9]+7.745966692414834*f[8]+12.0*f[5]+6.928203230275509*f[3]-12.0*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]-3.872983346207417*f[10]+6.708203932499369*f[9]+3.872983346207417*f[8]+13.85640646055102*f[7]+8.0*f[6]-12.0*f[5]-13.85640646055102*f[4]-6.928203230275509*f[3]-8.0*f[2]+12.0*f[1]+6.928203230275509*f[0]); - fReflSurfMu[0][2] = -0.002083333333333333*((467.6537180435967*f[11]+269.9999999999999*f[10]-467.6537180435969*f[9]-270.0*f[8])*vcut_lR5+(301.8691769624717*f[7]+174.2842505793337*f[6]-301.8691769624717*f[4]-174.2842505793337*f[2])*vcut_lR4+((-519.6152422706631*f[11])-300.0000000000001*f[10]+519.6152422706633*f[9]+300.0*f[8]+232.379000772445*f[5]+134.1640786499874*f[3]-232.379000772445*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[7])-116.1895003862225*f[6]+201.2461179749811*f[4]+116.1895003862225*f[2])*vcut_lR2+(259.8076211353315*f[11]+150.0*f[10]-259.8076211353317*f[9]-150.0*f[8]-232.379000772445*f[5]-134.1640786499874*f[3]+232.379000772445*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[11]+120.0*f[10]-207.8460969082653*f[9]-120.0*f[8]-100.6230589874906*f[7]-58.09475019311126*f[6]+100.6230589874906*f[4]+58.09475019311126*f[2]); + fReflSurfMu[0][0] = -(0.018633899812498245*((25.980762113533157*f[11]+15.000000000000002*f[10]-25.98076211353316*f[9]-15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]+11.61895003862225*f[6]-20.12461179749811*f[4]-11.61895003862225*f[2])*vcut_lR2+(-(25.980762113533157*f[11])-15.000000000000002*f[10]+25.98076211353316*f[9]+15.0*f[8]+23.2379000772445*f[5]+13.416407864998739*f[3]-23.2379000772445*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[7]-11.61895003862225*f[6]+23.2379000772445*f[5]+20.12461179749811*f[4]+13.416407864998739*f[3]+11.61895003862225*f[2]-23.2379000772445*f[1]-13.416407864998739*f[0])); + fReflSurfMu[0][1] = -(0.03125*((20.12461179749811*f[11]+11.618950038622252*f[10]-20.124611797498105*f[9]-11.61895003862225*f[8])*vcut_lR4+(13.856406460551018*f[7]+8.0*f[6]-13.856406460551018*f[4]-8.0*f[2])*vcut_lR3+(-(13.416407864998739*f[11])-7.745966692414834*f[10]+13.416407864998737*f[9]+7.745966692414834*f[8]+12.0*f[5]+6.928203230275509*f[3]-12.0*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]-3.872983346207417*f[10]+6.7082039324993685*f[9]+3.872983346207417*f[8]+13.856406460551018*f[7]+8.0*f[6]-12.0*f[5]-13.856406460551018*f[4]-6.928203230275509*f[3]-8.0*f[2]+12.0*f[1]+6.928203230275509*f[0])); + fReflSurfMu[0][2] = -(0.0020833333333333333*((467.65371804359665*f[11]+269.99999999999994*f[10]-467.65371804359694*f[9]-270.0*f[8])*vcut_lR5+(301.86917696247167*f[7]+174.28425057933373*f[6]-301.86917696247167*f[4]-174.28425057933373*f[2])*vcut_lR4+(-(519.6152422706631*f[11])-300.00000000000006*f[10]+519.6152422706633*f[9]+300.0*f[8]+232.37900077244504*f[5]+134.1640786499874*f[3]-232.37900077244504*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[7])-116.18950038622252*f[6]+201.2461179749811*f[4]+116.18950038622252*f[2])*vcut_lR2+(259.80762113533154*f[11]+150.00000000000003*f[10]-259.80762113533166*f[9]-150.0*f[8]-232.37900077244504*f[5]-134.1640786499874*f[3]+232.37900077244504*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826525*f[11]+120.00000000000001*f[10]-207.84609690826528*f[9]-120.0*f[8]-100.62305898749055*f[7]-58.09475019311126*f[6]+100.62305898749055*f[4]+58.09475019311126*f[2])); } else { // vcut in logical space. @@ -379,9 +385,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfMu[0][0] = 0.01863389981249824*((25.98076211353316*f[11]+15.0*f[10]-25.98076211353316*f[9]-15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]+11.61895003862225*f[6]-20.12461179749811*f[4]-11.61895003862225*f[2])*vcut_lR2+((-25.98076211353316*f[11])-15.0*f[10]+25.98076211353316*f[9]+15.0*f[8]+23.2379000772445*f[5]+13.41640786499874*f[3]-23.2379000772445*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[7]-11.61895003862225*f[6]-23.2379000772445*f[5]+20.12461179749811*f[4]-13.41640786499874*f[3]+11.61895003862225*f[2]+23.2379000772445*f[1]+13.41640786499874*f[0]); - fReflSurfMu[0][1] = 0.03125*((20.12461179749811*f[11]+11.61895003862225*f[10]-20.1246117974981*f[9]-11.61895003862225*f[8])*vcut_lR4+(13.85640646055102*f[7]+8.0*f[6]-13.85640646055102*f[4]-8.0*f[2])*vcut_lR3+((-13.41640786499874*f[11])-7.745966692414834*f[10]+13.41640786499874*f[9]+7.745966692414834*f[8]+12.0*f[5]+6.928203230275509*f[3]-12.0*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]-3.872983346207417*f[10]+6.708203932499369*f[9]+3.872983346207417*f[8]-13.85640646055102*f[7]-8.0*f[6]-12.0*f[5]+13.85640646055102*f[4]-6.928203230275509*f[3]+8.0*f[2]+12.0*f[1]+6.928203230275509*f[0]); - fReflSurfMu[0][2] = 0.002083333333333333*((467.6537180435967*f[11]+269.9999999999999*f[10]-467.6537180435969*f[9]-270.0*f[8])*vcut_lR5+(301.8691769624717*f[7]+174.2842505793337*f[6]-301.8691769624717*f[4]-174.2842505793337*f[2])*vcut_lR4+((-519.6152422706631*f[11])-300.0000000000001*f[10]+519.6152422706633*f[9]+300.0*f[8]+232.379000772445*f[5]+134.1640786499874*f[3]-232.379000772445*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[7])-116.1895003862225*f[6]+201.2461179749811*f[4]+116.1895003862225*f[2])*vcut_lR2+(259.8076211353315*f[11]+150.0*f[10]-259.8076211353317*f[9]-150.0*f[8]-232.379000772445*f[5]-134.1640786499874*f[3]+232.379000772445*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[11]-120.0*f[10]+207.8460969082653*f[9]+120.0*f[8]-100.6230589874906*f[7]-58.09475019311126*f[6]+100.6230589874906*f[4]+58.09475019311126*f[2]); + fReflSurfMu[0][0] = 0.018633899812498245*((25.980762113533157*f[11]+15.000000000000002*f[10]-25.98076211353316*f[9]-15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]+11.61895003862225*f[6]-20.12461179749811*f[4]-11.61895003862225*f[2])*vcut_lR2+(-(25.980762113533157*f[11])-15.000000000000002*f[10]+25.98076211353316*f[9]+15.0*f[8]+23.2379000772445*f[5]+13.416407864998739*f[3]-23.2379000772445*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[7]-11.61895003862225*f[6]-23.2379000772445*f[5]+20.12461179749811*f[4]-13.416407864998739*f[3]+11.61895003862225*f[2]+23.2379000772445*f[1]+13.416407864998739*f[0]); + fReflSurfMu[0][1] = 0.03125*((20.12461179749811*f[11]+11.618950038622252*f[10]-20.124611797498105*f[9]-11.61895003862225*f[8])*vcut_lR4+(13.856406460551018*f[7]+8.0*f[6]-13.856406460551018*f[4]-8.0*f[2])*vcut_lR3+(-(13.416407864998739*f[11])-7.745966692414834*f[10]+13.416407864998737*f[9]+7.745966692414834*f[8]+12.0*f[5]+6.928203230275509*f[3]-12.0*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]-3.872983346207417*f[10]+6.7082039324993685*f[9]+3.872983346207417*f[8]-13.856406460551018*f[7]-8.0*f[6]-12.0*f[5]+13.856406460551018*f[4]-6.928203230275509*f[3]+8.0*f[2]+12.0*f[1]+6.928203230275509*f[0]); + fReflSurfMu[0][2] = 0.0020833333333333333*((467.65371804359665*f[11]+269.99999999999994*f[10]-467.65371804359694*f[9]-270.0*f[8])*vcut_lR5+(301.86917696247167*f[7]+174.28425057933373*f[6]-301.86917696247167*f[4]-174.28425057933373*f[2])*vcut_lR4+(-(519.6152422706631*f[11])-300.00000000000006*f[10]+519.6152422706633*f[9]+300.0*f[8]+232.37900077244504*f[5]+134.1640786499874*f[3]-232.37900077244504*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[7])-116.18950038622252*f[6]+201.2461179749811*f[4]+116.18950038622252*f[2])*vcut_lR2+(259.80762113533154*f[11]+150.00000000000003*f[10]-259.80762113533166*f[9]-150.0*f[8]-232.37900077244504*f[5]-134.1640786499874*f[3]+232.37900077244504*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826525*f[11]-120.00000000000001*f[10]+207.84609690826528*f[9]+120.0*f[8]-100.62305898749055*f[7]-58.09475019311126*f[6]+100.62305898749055*f[4]+58.09475019311126*f[2]); } @@ -399,7 +405,25 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double fReflSurfMu[0][2] = 0.0; } - // node (mu)_1 + } + + // node (mu)_1 + 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) + + fReflSurfMu[1][0] = 0.0; + fReflSurfMu[1][1] = 0.0; + fReflSurfMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfMu[1][0] = 0.5*(1.7320508075688772*f[5]+f[3]+1.7320508075688772*f[1]+f[0]); + fReflSurfMu[1][1] = 0.5*(1.7320508075688772*f[7]+f[6]+1.7320508075688772*f[4]+f[2]); + fReflSurfMu[1][2] = 0.03333333333333333*(1.7320508075688772*(15.0*f[11]+8.660254037844387*f[10])+3.0*(8.660254037844387*f[9]+5.0*f[8])); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -409,9 +433,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfMu[1][0] = 0.01863389981249824*((25.98076211353316*f[11]+15.0*f[10]+25.98076211353316*f[9]+15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]+11.61895003862225*f[6]+20.12461179749811*f[4]+11.61895003862225*f[2])*vcut_lR2+((-25.98076211353316*f[11])-15.0*f[10]-25.98076211353316*f[9]-15.0*f[8]+23.2379000772445*f[5]+13.41640786499874*f[3]+23.2379000772445*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[7]-11.61895003862225*f[6]+23.2379000772445*f[5]-20.12461179749811*f[4]+13.41640786499874*f[3]-11.61895003862225*f[2]+23.2379000772445*f[1]+13.41640786499874*f[0]); - fReflSurfMu[1][1] = 0.03125*((20.12461179749811*f[11]+11.61895003862225*f[10]+20.1246117974981*f[9]+11.61895003862225*f[8])*vcut_lR4+(13.85640646055102*f[7]+8.0*f[6]+13.85640646055102*f[4]+8.0*f[2])*vcut_lR3+((-13.41640786499874*f[11])-7.745966692414834*f[10]-13.41640786499874*f[9]-7.745966692414834*f[8]+12.0*f[5]+6.928203230275509*f[3]+12.0*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]-3.872983346207417*f[10]-6.708203932499369*f[9]-3.872983346207417*f[8]+13.85640646055102*f[7]+8.0*f[6]-12.0*f[5]+13.85640646055102*f[4]-6.928203230275509*f[3]+8.0*f[2]-12.0*f[1]-6.928203230275509*f[0]); - fReflSurfMu[1][2] = 0.002083333333333333*((467.6537180435967*f[11]+269.9999999999999*f[10]+467.6537180435969*f[9]+270.0*f[8])*vcut_lR5+(301.8691769624717*f[7]+174.2842505793337*f[6]+301.8691769624717*f[4]+174.2842505793337*f[2])*vcut_lR4+((-519.6152422706631*f[11])-300.0000000000001*f[10]-519.6152422706633*f[9]-300.0*f[8]+232.379000772445*f[5]+134.1640786499874*f[3]+232.379000772445*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[7])-116.1895003862225*f[6]-201.2461179749811*f[4]-116.1895003862225*f[2])*vcut_lR2+(259.8076211353315*f[11]+150.0*f[10]+259.8076211353317*f[9]+150.0*f[8]-232.379000772445*f[5]-134.1640786499874*f[3]-232.379000772445*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[11]+120.0*f[10]+207.8460969082653*f[9]+120.0*f[8]-100.6230589874906*f[7]-58.09475019311126*f[6]-100.6230589874906*f[4]-58.09475019311126*f[2]); + fReflSurfMu[1][0] = 0.018633899812498245*((25.980762113533157*f[11]+15.000000000000002*f[10]+25.98076211353316*f[9]+15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]+11.61895003862225*f[6]+20.12461179749811*f[4]+11.61895003862225*f[2])*vcut_lR2+(-(25.980762113533157*f[11])-15.000000000000002*f[10]-25.98076211353316*f[9]-15.0*f[8]+23.2379000772445*f[5]+13.416407864998739*f[3]+23.2379000772445*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[7]-11.61895003862225*f[6]+23.2379000772445*f[5]-20.12461179749811*f[4]+13.416407864998739*f[3]-11.61895003862225*f[2]+23.2379000772445*f[1]+13.416407864998739*f[0]); + fReflSurfMu[1][1] = 0.03125*((20.12461179749811*f[11]+11.618950038622252*f[10]+20.124611797498105*f[9]+11.61895003862225*f[8])*vcut_lR4+(13.856406460551018*f[7]+8.0*f[6]+13.856406460551018*f[4]+8.0*f[2])*vcut_lR3+(-(13.416407864998739*f[11])-7.745966692414834*f[10]-13.416407864998737*f[9]-7.745966692414834*f[8]+12.0*f[5]+6.928203230275509*f[3]+12.0*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]-3.872983346207417*f[10]-6.7082039324993685*f[9]-3.872983346207417*f[8]+13.856406460551018*f[7]+8.0*f[6]-12.0*f[5]+13.856406460551018*f[4]-6.928203230275509*f[3]+8.0*f[2]-12.0*f[1]-6.928203230275509*f[0]); + fReflSurfMu[1][2] = 0.0020833333333333333*((467.65371804359665*f[11]+269.99999999999994*f[10]+467.65371804359694*f[9]+270.0*f[8])*vcut_lR5+(301.86917696247167*f[7]+174.28425057933373*f[6]+301.86917696247167*f[4]+174.28425057933373*f[2])*vcut_lR4+(-(519.6152422706631*f[11])-300.00000000000006*f[10]-519.6152422706633*f[9]-300.0*f[8]+232.37900077244504*f[5]+134.1640786499874*f[3]+232.37900077244504*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[7])-116.18950038622252*f[6]-201.2461179749811*f[4]-116.18950038622252*f[2])*vcut_lR2+(259.80762113533154*f[11]+150.00000000000003*f[10]+259.80762113533166*f[9]+150.0*f[8]-232.37900077244504*f[5]-134.1640786499874*f[3]-232.37900077244504*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826525*f[11]+120.00000000000001*f[10]+207.84609690826528*f[9]+120.0*f[8]-100.62305898749055*f[7]-58.09475019311126*f[6]-100.62305898749055*f[4]-58.09475019311126*f[2]); } else { // vcut in logical space. @@ -422,9 +446,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfMu[1][0] = -0.01863389981249824*((25.98076211353316*f[11]+15.0*f[10]+25.98076211353316*f[9]+15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]+11.61895003862225*f[6]+20.12461179749811*f[4]+11.61895003862225*f[2])*vcut_lR2+((-25.98076211353316*f[11])-15.0*f[10]-25.98076211353316*f[9]-15.0*f[8]+23.2379000772445*f[5]+13.41640786499874*f[3]+23.2379000772445*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[7]-11.61895003862225*f[6]-23.2379000772445*f[5]-20.12461179749811*f[4]-13.41640786499874*f[3]-11.61895003862225*f[2]-23.2379000772445*f[1]-13.41640786499874*f[0]); - fReflSurfMu[1][1] = -0.03125*((20.12461179749811*f[11]+11.61895003862225*f[10]+20.1246117974981*f[9]+11.61895003862225*f[8])*vcut_lR4+(13.85640646055102*f[7]+8.0*f[6]+13.85640646055102*f[4]+8.0*f[2])*vcut_lR3+((-13.41640786499874*f[11])-7.745966692414834*f[10]-13.41640786499874*f[9]-7.745966692414834*f[8]+12.0*f[5]+6.928203230275509*f[3]+12.0*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]-3.872983346207417*f[10]-6.708203932499369*f[9]-3.872983346207417*f[8]-13.85640646055102*f[7]-8.0*f[6]-12.0*f[5]-13.85640646055102*f[4]-6.928203230275509*f[3]-8.0*f[2]-12.0*f[1]-6.928203230275509*f[0]); - fReflSurfMu[1][2] = -0.002083333333333333*((467.6537180435967*f[11]+269.9999999999999*f[10]+467.6537180435969*f[9]+270.0*f[8])*vcut_lR5+(301.8691769624717*f[7]+174.2842505793337*f[6]+301.8691769624717*f[4]+174.2842505793337*f[2])*vcut_lR4+((-519.6152422706631*f[11])-300.0000000000001*f[10]-519.6152422706633*f[9]-300.0*f[8]+232.379000772445*f[5]+134.1640786499874*f[3]+232.379000772445*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[7])-116.1895003862225*f[6]-201.2461179749811*f[4]-116.1895003862225*f[2])*vcut_lR2+(259.8076211353315*f[11]+150.0*f[10]+259.8076211353317*f[9]+150.0*f[8]-232.379000772445*f[5]-134.1640786499874*f[3]-232.379000772445*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[11]-120.0*f[10]-207.8460969082653*f[9]-120.0*f[8]-100.6230589874906*f[7]-58.09475019311126*f[6]-100.6230589874906*f[4]-58.09475019311126*f[2]); + fReflSurfMu[1][0] = -(0.018633899812498245*((25.980762113533157*f[11]+15.000000000000002*f[10]+25.98076211353316*f[9]+15.0*f[8])*vcut_lR3+(20.12461179749811*f[7]+11.61895003862225*f[6]+20.12461179749811*f[4]+11.61895003862225*f[2])*vcut_lR2+(-(25.980762113533157*f[11])-15.000000000000002*f[10]-25.98076211353316*f[9]-15.0*f[8]+23.2379000772445*f[5]+13.416407864998739*f[3]+23.2379000772445*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[7]-11.61895003862225*f[6]-23.2379000772445*f[5]-20.12461179749811*f[4]-13.416407864998739*f[3]-11.61895003862225*f[2]-23.2379000772445*f[1]-13.416407864998739*f[0])); + fReflSurfMu[1][1] = -(0.03125*((20.12461179749811*f[11]+11.618950038622252*f[10]+20.124611797498105*f[9]+11.61895003862225*f[8])*vcut_lR4+(13.856406460551018*f[7]+8.0*f[6]+13.856406460551018*f[4]+8.0*f[2])*vcut_lR3+(-(13.416407864998739*f[11])-7.745966692414834*f[10]-13.416407864998737*f[9]-7.745966692414834*f[8]+12.0*f[5]+6.928203230275509*f[3]+12.0*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[11]-3.872983346207417*f[10]-6.7082039324993685*f[9]-3.872983346207417*f[8]-13.856406460551018*f[7]-8.0*f[6]-12.0*f[5]-13.856406460551018*f[4]-6.928203230275509*f[3]-8.0*f[2]-12.0*f[1]-6.928203230275509*f[0])); + fReflSurfMu[1][2] = -(0.0020833333333333333*((467.65371804359665*f[11]+269.99999999999994*f[10]+467.65371804359694*f[9]+270.0*f[8])*vcut_lR5+(301.86917696247167*f[7]+174.28425057933373*f[6]+301.86917696247167*f[4]+174.28425057933373*f[2])*vcut_lR4+(-(519.6152422706631*f[11])-300.00000000000006*f[10]-519.6152422706633*f[9]-300.0*f[8]+232.37900077244504*f[5]+134.1640786499874*f[3]+232.37900077244504*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[7])-116.18950038622252*f[6]-201.2461179749811*f[4]-116.18950038622252*f[2])*vcut_lR2+(259.80762113533154*f[11]+150.00000000000003*f[10]+259.80762113533166*f[9]+150.0*f[8]-232.37900077244504*f[5]-134.1640786499874*f[3]-232.37900077244504*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826525*f[11]-120.00000000000001*f[10]-207.84609690826528*f[9]-120.0*f[8]-100.62305898749055*f[7]-58.09475019311126*f[6]-100.62305898749055*f[4]-58.09475019311126*f[2])); } @@ -442,6 +466,8 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double fReflSurfMu[1][2] = 0.0; } + } + fReflSurf[0] = 0.7071067811865475*(fReflSurfMu[1][0]+fReflSurfMu[0][0]); fReflSurf[1] = 0.7071067811865475*(fReflSurfMu[1][1]+fReflSurfMu[0][1]); fReflSurf[2] = 0.7071067811865475*(fReflSurfMu[1][0]-1.0*fReflSurfMu[0][0]); @@ -449,23 +475,21 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double fReflSurf[4] = 0.7071067811865475*(fReflSurfMu[1][2]+fReflSurfMu[0][2]); fReflSurf[5] = 0.7071067811865475*(fReflSurfMu[1][2]-1.0*fReflSurfMu[0][2]); - } - - fRefl[0] = 1.414213562373095*fReflSurf[0]; + fRefl[0] = 1.4142135623730951*fReflSurf[0]; fRefl[1] = 0.0; - fRefl[2] = 1.414213562373095*fReflSurf[1]; - fRefl[3] = 1.414213562373095*fReflSurf[2]; + fRefl[2] = 1.4142135623730951*fReflSurf[1]; + fRefl[3] = 1.4142135623730951*fReflSurf[2]; fRefl[4] = 0.0; fRefl[5] = 0.0; - fRefl[6] = 1.414213562373095*fReflSurf[3]; + fRefl[6] = 1.4142135623730951*fReflSurf[3]; fRefl[7] = 0.0; - fRefl[8] = 1.414213562373095*fReflSurf[4]; + fRefl[8] = 1.4142135623730951*fReflSurf[4]; fRefl[9] = 0.0; - fRefl[10] = 1.414213562373095*fReflSurf[5]; + fRefl[10] = 1.4142135623730951*fReflSurf[5]; fRefl[11] = 0.0; } -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double *vmap, double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl) +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double *vmap, double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl) { double vcutSq; double fReflSurfX[2][6] = {0.}; @@ -475,36 +499,34 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double double vparAbsSqLo = vmap[0]>0.? vparLo*vparLo : vparUp*vparUp; double vparAbsSqUp = vmap[0]>0.? vparUp*vparUp : vparLo*vparLo; + double wv; + double dv; + + double xBar, xSqBar; + double fReflSurfXMu[2][3] = {0.}; + // node (x)_0 - vcutSq = 0.5*(1.732050807568877*phiWall[3]-1.732050807568877*(phi[3]+phiWall[2])+1.732050807568877*phi[2]-1.0*phiWall[1]+phi[1]+phiWall[0]-1.0*phi[0])*q2Dm; - if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) + wv = 0.5*vparUp+0.5*vparLo; + dv = vparUp-1.0*vparLo; - fReflSurfX[0][0] = 0.0; - fReflSurfX[0][1] = 0.0; - fReflSurfX[0][2] = 0.0; - fReflSurfX[0][3] = 0.0; - fReflSurfX[0][4] = 0.0; - fReflSurfX[0][5] = 0.0; + // node (mu)_0 + 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; - } else if (vcutSq > vparAbsSqUp) { // full reflection + if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) - fReflSurfX[0][0] = 0.5*(1.732050807568877*f[5]-1.0*(1.732050807568877*f[2]+f[1])+f[0]); - fReflSurfX[0][1] = 0.5*(1.732050807568877*f[11]-1.0*(1.732050807568877*f[7]+f[6])+f[3]); - fReflSurfX[0][2] = 0.5*(1.732050807568877*f[12]-1.0*(1.732050807568877*f[9]+f[8])+f[4]); - fReflSurfX[0][3] = 0.5*(1.732050807568877*f[15]-1.0*(1.732050807568877*f[14]+f[13])+f[10]); - fReflSurfX[0][4] = 0.03333333333333333*(25.98076211353316*f[20]-8.660254037844387*(3.0*f[18]+1.732050807568877*f[17])+15.0*f[16]); - fReflSurfX[0][5] = 0.03333333333333333*(25.98076211353316*f[23]-8.660254037844387*(3.0*f[22]+1.732050807568877*f[21])+15.0*f[19]); + fReflSurfXMu[0][0] = 0.0; + fReflSurfXMu[0][1] = 0.0; + fReflSurfXMu[0][2] = 0.0; - } else { // partial reflection + } else if (vcutSq > vparAbsSqUp) { // full reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; + fReflSurfXMu[0][0] = -(0.3535533905932737*(1.7320508075688772*f[12]-1.0*(1.7320508075688772*f[9]+f[8]+1.7320508075688772*f[5])+f[4]+1.7320508075688772*f[2]+f[1]-1.0*f[0])); + fReflSurfXMu[0][1] = -(0.3535533905932737*(1.7320508075688772*f[15]-1.0*(1.7320508075688772*f[14]+f[13]+1.7320508075688772*f[11])+f[10]+1.7320508075688772*f[7]+f[6]-1.0*f[3])); + fReflSurfXMu[0][2] = -(0.023570226039551577*(25.98076211353316*f[23]-5.0*(5.196152422706631*f[22]+3.0*f[21]+5.196152422706631*f[20])+8.660254037844387*(1.7320508075688772*f[19]+3.0*f[18]+1.7320508075688772*f[17])-15.0*f[16])); - double xBar, xSqBar; - double fReflSurfXMu[2][3] = {0.}; + } else { // partial reflection - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -514,9 +536,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[0][0] = -0.01317615691736824*((25.98076211353316*f[23]-25.98076211353316*f[22]-15.0*f[21]-25.98076211353316*f[20]+15.0*f[19]+25.98076211353316*f[18]+15.0*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]-20.12461179749811*f[11]+11.61895003862225*f[10]+20.12461179749811*f[7]+11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])+25.98076211353316*f[22]+15.0*f[21]+25.98076211353316*f[20]-15.0*f[19]-25.98076211353316*f[18]-15.0*f[17]+15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]-13.41640786499874*f[8]-23.2379000772445*f[5]+13.41640786499874*f[4]+23.2379000772445*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]+23.2379000772445*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]-23.2379000772445*f[9]-13.41640786499874*f[8]-20.12461179749811*f[7]-11.61895003862225*f[6]-23.2379000772445*f[5]+13.41640786499874*f[4]+11.61895003862225*f[3]+23.2379000772445*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXMu[0][1] = -0.02209708691207959*((20.1246117974981*f[23]-20.12461179749811*f[22]-11.61895003862225*f[21]-20.12461179749811*f[20]+11.61895003862225*f[19]+20.1246117974981*f[18]+11.61895003862225*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]-13.85640646055102*f[14]-8.0*f[13]-13.85640646055102*f[11]+8.0*f[10]+13.85640646055102*f[7]+8.0*f[6]-8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])+13.41640786499874*f[22]+7.745966692414834*f[21]+13.41640786499874*f[20]-7.745966692414834*f[19]-13.41640786499874*f[18]-7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]-6.928203230275509*f[8]-12.0*f[5]+6.928203230275509*f[4]+12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]+6.708203932499369*f[22]+3.872983346207417*f[21]+6.708203932499369*f[20]-3.872983346207417*f[19]-6.708203932499369*f[18]-3.872983346207417*f[17]+3.872983346207417*f[16]+13.85640646055102*f[15]-13.85640646055102*f[14]-8.0*f[13]-12.0*f[12]-13.85640646055102*f[11]+8.0*f[10]+12.0*f[9]+6.928203230275509*f[8]+13.85640646055102*f[7]+8.0*f[6]+12.0*f[5]-6.928203230275509*f[4]-8.0*f[3]-12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXMu[0][2] = -0.001473139127471973*((467.6537180435969*f[23]-467.6537180435967*f[22]-270.0*f[21]-467.6537180435967*f[20]+269.9999999999999*f[19]+467.6537180435969*f[18]+269.9999999999999*f[17]-270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]-301.8691769624717*f[14]-174.2842505793337*f[13]-301.8691769624717*f[11]+174.2842505793337*f[10]+301.8691769624717*f[7]+174.2842505793337*f[6]-174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])+519.6152422706631*f[22]+300.0*f[21]+519.6152422706631*f[20]-300.0000000000001*f[19]-519.6152422706633*f[18]-300.0000000000001*f[17]+300.0*f[16]+232.379000772445*f[12]-232.379000772445*f[9]-134.1640786499874*f[8]-232.379000772445*f[5]+134.1640786499874*f[4]+232.379000772445*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])+201.2461179749811*f[14]+116.1895003862225*f[13]+201.2461179749811*f[11]-116.1895003862225*f[10]-201.2461179749811*f[7]-116.1895003862225*f[6]+116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]-259.8076211353315*f[22]-150.0*f[21]-259.8076211353315*f[20]+150.0*f[19]+259.8076211353317*f[18]+150.0*f[17]-150.0*f[16]-232.379000772445*f[12]+232.379000772445*f[9]+134.1640786499874*f[8]+232.379000772445*f[5]-134.1640786499874*f[4]-232.379000772445*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[23]-207.8460969082653*f[22]-120.0*f[21]-207.8460969082653*f[20]+120.0*f[19]+207.8460969082653*f[18]+120.0*f[17]-120.0*f[16]-100.6230589874906*f[15]+100.6230589874906*f[14]+58.09475019311126*f[13]+100.6230589874906*f[11]-58.09475019311126*f[10]-100.6230589874906*f[7]-58.09475019311126*f[6]+58.09475019311126*f[3]); + fReflSurfXMu[0][0] = -(0.01317615691736824*((25.98076211353316*f[23]-25.980762113533157*f[22]-15.0*f[21]-25.980762113533157*f[20]+15.000000000000002*f[19]+25.98076211353316*f[18]+15.000000000000002*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]-20.12461179749811*f[11]+11.61895003862225*f[10]+20.12461179749811*f[7]+11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])+25.980762113533157*f[22]+15.0*f[21]+25.980762113533157*f[20]-15.000000000000002*f[19]-25.98076211353316*f[18]-15.000000000000002*f[17]+15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]-13.416407864998739*f[8]-23.2379000772445*f[5]+13.416407864998739*f[4]+23.2379000772445*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]+23.2379000772445*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]-23.2379000772445*f[9]-13.416407864998739*f[8]-20.12461179749811*f[7]-11.61895003862225*f[6]-23.2379000772445*f[5]+13.416407864998739*f[4]+11.61895003862225*f[3]+23.2379000772445*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXMu[0][1] = -(0.022097086912079594*((20.124611797498105*f[23]-20.12461179749811*f[22]-11.61895003862225*f[21]-20.12461179749811*f[20]+11.618950038622252*f[19]+20.124611797498105*f[18]+11.618950038622252*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]-13.856406460551018*f[14]-8.0*f[13]-13.856406460551018*f[11]+8.0*f[10]+13.856406460551018*f[7]+8.0*f[6]-8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])+13.416407864998739*f[22]+7.745966692414834*f[21]+13.416407864998739*f[20]-7.745966692414834*f[19]-13.416407864998737*f[18]-7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]-6.928203230275509*f[8]-12.0*f[5]+6.928203230275509*f[4]+12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]+6.708203932499369*f[22]+3.872983346207417*f[21]+6.708203932499369*f[20]-3.872983346207417*f[19]-6.7082039324993685*f[18]-3.872983346207417*f[17]+3.872983346207417*f[16]+13.856406460551018*f[15]-13.856406460551018*f[14]-8.0*f[13]-12.0*f[12]-13.856406460551018*f[11]+8.0*f[10]+12.0*f[9]+6.928203230275509*f[8]+13.856406460551018*f[7]+8.0*f[6]+12.0*f[5]-6.928203230275509*f[4]-8.0*f[3]-12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])); + fReflSurfXMu[0][2] = -(0.001473139127471973*((467.65371804359694*f[23]-467.65371804359665*f[22]-270.0*f[21]-467.65371804359665*f[20]+269.99999999999994*f[19]+467.65371804359694*f[18]+269.99999999999994*f[17]-270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]-301.86917696247167*f[14]-174.28425057933373*f[13]-301.86917696247167*f[11]+174.28425057933373*f[10]+301.86917696247167*f[7]+174.28425057933373*f[6]-174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])+519.6152422706631*f[22]+300.0*f[21]+519.6152422706631*f[20]-300.00000000000006*f[19]-519.6152422706633*f[18]-300.00000000000006*f[17]+300.0*f[16]+232.37900077244504*f[12]-232.37900077244504*f[9]-134.1640786499874*f[8]-232.37900077244504*f[5]+134.1640786499874*f[4]+232.37900077244504*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])+201.2461179749811*f[14]+116.18950038622252*f[13]+201.2461179749811*f[11]-116.18950038622252*f[10]-201.2461179749811*f[7]-116.18950038622252*f[6]+116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]-259.80762113533154*f[22]-150.0*f[21]-259.80762113533154*f[20]+150.00000000000003*f[19]+259.80762113533166*f[18]+150.00000000000003*f[17]-150.0*f[16]-232.37900077244504*f[12]+232.37900077244504*f[9]+134.1640786499874*f[8]+232.37900077244504*f[5]-134.1640786499874*f[4]-232.37900077244504*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826528*f[23]-207.84609690826525*f[22]-120.0*f[21]-207.84609690826525*f[20]+120.00000000000001*f[19]+207.84609690826528*f[18]+120.00000000000001*f[17]-120.0*f[16]-100.62305898749055*f[15]+100.62305898749055*f[14]+58.09475019311126*f[13]+100.62305898749055*f[11]-58.09475019311126*f[10]-100.62305898749055*f[7]-58.09475019311126*f[6]+58.09475019311126*f[3])); } else { // vcut in logical space. @@ -527,27 +549,45 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[0][0] = 0.01317615691736824*((25.98076211353316*f[23]-25.98076211353316*f[22]-15.0*f[21]-25.98076211353316*f[20]+15.0*f[19]+25.98076211353316*f[18]+15.0*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]-20.12461179749811*f[11]+11.61895003862225*f[10]+20.12461179749811*f[7]+11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])+25.98076211353316*f[22]+15.0*f[21]+25.98076211353316*f[20]-15.0*f[19]-25.98076211353316*f[18]-15.0*f[17]+15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]-13.41640786499874*f[8]-23.2379000772445*f[5]+13.41640786499874*f[4]+23.2379000772445*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]-23.2379000772445*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]+23.2379000772445*f[9]+13.41640786499874*f[8]-20.12461179749811*f[7]-11.61895003862225*f[6]+23.2379000772445*f[5]-13.41640786499874*f[4]+11.61895003862225*f[3]-23.2379000772445*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXMu[0][1] = 0.02209708691207959*((20.1246117974981*f[23]-20.12461179749811*f[22]-11.61895003862225*f[21]-20.12461179749811*f[20]+11.61895003862225*f[19]+20.1246117974981*f[18]+11.61895003862225*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]-13.85640646055102*f[14]-8.0*f[13]-13.85640646055102*f[11]+8.0*f[10]+13.85640646055102*f[7]+8.0*f[6]-8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])+13.41640786499874*f[22]+7.745966692414834*f[21]+13.41640786499874*f[20]-7.745966692414834*f[19]-13.41640786499874*f[18]-7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]-6.928203230275509*f[8]-12.0*f[5]+6.928203230275509*f[4]+12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]+6.708203932499369*f[22]+3.872983346207417*f[21]+6.708203932499369*f[20]-3.872983346207417*f[19]-6.708203932499369*f[18]-3.872983346207417*f[17]+3.872983346207417*f[16]-13.85640646055102*f[15]+13.85640646055102*f[14]+8.0*f[13]-12.0*f[12]+13.85640646055102*f[11]-8.0*f[10]+12.0*f[9]+6.928203230275509*f[8]-13.85640646055102*f[7]-8.0*f[6]+12.0*f[5]-6.928203230275509*f[4]+8.0*f[3]-12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXMu[0][2] = 0.001473139127471973*((467.6537180435969*f[23]-467.6537180435967*f[22]-270.0*f[21]-467.6537180435967*f[20]+269.9999999999999*f[19]+467.6537180435969*f[18]+269.9999999999999*f[17]-270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]-301.8691769624717*f[14]-174.2842505793337*f[13]-301.8691769624717*f[11]+174.2842505793337*f[10]+301.8691769624717*f[7]+174.2842505793337*f[6]-174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])+519.6152422706631*f[22]+300.0*f[21]+519.6152422706631*f[20]-300.0000000000001*f[19]-519.6152422706633*f[18]-300.0000000000001*f[17]+300.0*f[16]+232.379000772445*f[12]-232.379000772445*f[9]-134.1640786499874*f[8]-232.379000772445*f[5]+134.1640786499874*f[4]+232.379000772445*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])+201.2461179749811*f[14]+116.1895003862225*f[13]+201.2461179749811*f[11]-116.1895003862225*f[10]-201.2461179749811*f[7]-116.1895003862225*f[6]+116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]-259.8076211353315*f[22]-150.0*f[21]-259.8076211353315*f[20]+150.0*f[19]+259.8076211353317*f[18]+150.0*f[17]-150.0*f[16]-232.379000772445*f[12]+232.379000772445*f[9]+134.1640786499874*f[8]+232.379000772445*f[5]-134.1640786499874*f[4]-232.379000772445*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[23]+207.8460969082653*f[22]+120.0*f[21]+207.8460969082653*f[20]-120.0*f[19]-207.8460969082653*f[18]-120.0*f[17]+120.0*f[16]-100.6230589874906*f[15]+100.6230589874906*f[14]+58.09475019311126*f[13]+100.6230589874906*f[11]-58.09475019311126*f[10]-100.6230589874906*f[7]-58.09475019311126*f[6]+58.09475019311126*f[3]); + fReflSurfXMu[0][0] = 0.01317615691736824*((25.98076211353316*f[23]-25.980762113533157*f[22]-15.0*f[21]-25.980762113533157*f[20]+15.000000000000002*f[19]+25.98076211353316*f[18]+15.000000000000002*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]-20.12461179749811*f[11]+11.61895003862225*f[10]+20.12461179749811*f[7]+11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])+25.980762113533157*f[22]+15.0*f[21]+25.980762113533157*f[20]-15.000000000000002*f[19]-25.98076211353316*f[18]-15.000000000000002*f[17]+15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]-13.416407864998739*f[8]-23.2379000772445*f[5]+13.416407864998739*f[4]+23.2379000772445*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]-23.2379000772445*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]+23.2379000772445*f[9]+13.416407864998739*f[8]-20.12461179749811*f[7]-11.61895003862225*f[6]+23.2379000772445*f[5]-13.416407864998739*f[4]+11.61895003862225*f[3]-23.2379000772445*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXMu[0][1] = 0.022097086912079594*((20.124611797498105*f[23]-20.12461179749811*f[22]-11.61895003862225*f[21]-20.12461179749811*f[20]+11.618950038622252*f[19]+20.124611797498105*f[18]+11.618950038622252*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]-13.856406460551018*f[14]-8.0*f[13]-13.856406460551018*f[11]+8.0*f[10]+13.856406460551018*f[7]+8.0*f[6]-8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])+13.416407864998739*f[22]+7.745966692414834*f[21]+13.416407864998739*f[20]-7.745966692414834*f[19]-13.416407864998737*f[18]-7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]-6.928203230275509*f[8]-12.0*f[5]+6.928203230275509*f[4]+12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]+6.708203932499369*f[22]+3.872983346207417*f[21]+6.708203932499369*f[20]-3.872983346207417*f[19]-6.7082039324993685*f[18]-3.872983346207417*f[17]+3.872983346207417*f[16]-13.856406460551018*f[15]+13.856406460551018*f[14]+8.0*f[13]-12.0*f[12]+13.856406460551018*f[11]-8.0*f[10]+12.0*f[9]+6.928203230275509*f[8]-13.856406460551018*f[7]-8.0*f[6]+12.0*f[5]-6.928203230275509*f[4]+8.0*f[3]-12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); + fReflSurfXMu[0][2] = 0.001473139127471973*((467.65371804359694*f[23]-467.65371804359665*f[22]-270.0*f[21]-467.65371804359665*f[20]+269.99999999999994*f[19]+467.65371804359694*f[18]+269.99999999999994*f[17]-270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]-301.86917696247167*f[14]-174.28425057933373*f[13]-301.86917696247167*f[11]+174.28425057933373*f[10]+301.86917696247167*f[7]+174.28425057933373*f[6]-174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])+519.6152422706631*f[22]+300.0*f[21]+519.6152422706631*f[20]-300.00000000000006*f[19]-519.6152422706633*f[18]-300.00000000000006*f[17]+300.0*f[16]+232.37900077244504*f[12]-232.37900077244504*f[9]-134.1640786499874*f[8]-232.37900077244504*f[5]+134.1640786499874*f[4]+232.37900077244504*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])+201.2461179749811*f[14]+116.18950038622252*f[13]+201.2461179749811*f[11]-116.18950038622252*f[10]-201.2461179749811*f[7]-116.18950038622252*f[6]+116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]-259.80762113533154*f[22]-150.0*f[21]-259.80762113533154*f[20]+150.00000000000003*f[19]+259.80762113533166*f[18]+150.00000000000003*f[17]-150.0*f[16]-232.37900077244504*f[12]+232.37900077244504*f[9]+134.1640786499874*f[8]+232.37900077244504*f[5]-134.1640786499874*f[4]-232.37900077244504*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826528*f[23]+207.84609690826525*f[22]+120.0*f[21]+207.84609690826525*f[20]-120.00000000000001*f[19]-207.84609690826528*f[18]-120.00000000000001*f[17]+120.0*f[16]-100.62305898749055*f[15]+100.62305898749055*f[14]+58.09475019311126*f[13]+100.62305898749055*f[11]-58.09475019311126*f[10]-100.62305898749055*f[7]-58.09475019311126*f[6]+58.09475019311126*f[3]); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXMu[0][1])/fReflSurfXMu[0][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[0][2]+5.0*fReflSurfXMu[0][0]))/fReflSurfXMu[0][0]; - if (fReflSurfXMu[0][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXMu[0][1])/fReflSurfXMu[0][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[0][2]+5.0*fReflSurfXMu[0][0]))/fReflSurfXMu[0][0]; + if (fReflSurfXMu[0][0]<0.) { fReflSurfXMu[0][0] = 0.0; fReflSurfXMu[0][1] = 0.0; fReflSurfXMu[0][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXMu[0][0] = 0.0; fReflSurfXMu[0][1] = 0.0; fReflSurfXMu[0][2] = 0.0; + } + } - // node (mu)_1 + // node (mu)_1 + 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) + + fReflSurfXMu[1][0] = 0.0; + fReflSurfXMu[1][1] = 0.0; + fReflSurfXMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfXMu[1][0] = 0.3535533905932737*(1.7320508075688772*f[12]-1.0*(1.7320508075688772*f[9]+f[8])+1.7320508075688772*f[5]+f[4]-1.0*(1.7320508075688772*f[2]+f[1])+f[0]); + fReflSurfXMu[1][1] = 0.3535533905932737*(1.7320508075688772*f[15]-1.0*(1.7320508075688772*f[14]+f[13])+1.7320508075688772*f[11]+f[10]-1.0*(1.7320508075688772*f[7]+f[6])+f[3]); + fReflSurfXMu[1][2] = 0.023570226039551577*(25.98076211353316*f[23]+5.0*(5.196152422706631*f[20]-1.0*(5.196152422706631*f[22]+3.0*f[21]))+8.660254037844387*(1.7320508075688772*f[19]-1.0*(3.0*f[18]+1.7320508075688772*f[17]))+15.0*f[16]); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -557,9 +597,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[1][0] = 0.01317615691736824*((25.98076211353316*f[23]-25.98076211353316*f[22]-15.0*f[21]+25.98076211353316*f[20]+15.0*f[19]-25.98076211353316*f[18]-15.0*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]+20.12461179749811*f[11]+11.61895003862225*f[10]-20.12461179749811*f[7]-11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])+25.98076211353316*f[22]+15.0*f[21]-25.98076211353316*f[20]-15.0*f[19]+25.98076211353316*f[18]+15.0*f[17]-15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]-13.41640786499874*f[8]+23.2379000772445*f[5]+13.41640786499874*f[4]-23.2379000772445*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]+23.2379000772445*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]-23.2379000772445*f[9]-13.41640786499874*f[8]+20.12461179749811*f[7]+11.61895003862225*f[6]+23.2379000772445*f[5]+13.41640786499874*f[4]-11.61895003862225*f[3]-23.2379000772445*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXMu[1][1] = 0.02209708691207959*((20.1246117974981*f[23]-20.12461179749811*f[22]-11.61895003862225*f[21]+20.12461179749811*f[20]+11.61895003862225*f[19]-20.1246117974981*f[18]-11.61895003862225*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]-13.85640646055102*f[14]-8.0*f[13]+13.85640646055102*f[11]+8.0*f[10]-13.85640646055102*f[7]-8.0*f[6]+8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])+13.41640786499874*f[22]+7.745966692414834*f[21]-13.41640786499874*f[20]-7.745966692414834*f[19]+13.41640786499874*f[18]+7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]-6.928203230275509*f[8]+12.0*f[5]+6.928203230275509*f[4]-12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]+6.708203932499369*f[22]+3.872983346207417*f[21]-6.708203932499369*f[20]-3.872983346207417*f[19]+6.708203932499369*f[18]+3.872983346207417*f[17]-3.872983346207417*f[16]+13.85640646055102*f[15]-13.85640646055102*f[14]-8.0*f[13]-12.0*f[12]+13.85640646055102*f[11]+8.0*f[10]+12.0*f[9]+6.928203230275509*f[8]-13.85640646055102*f[7]-8.0*f[6]-12.0*f[5]-6.928203230275509*f[4]+8.0*f[3]+12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXMu[1][2] = 0.001473139127471973*((467.6537180435969*f[23]-467.6537180435967*f[22]-270.0*f[21]+467.6537180435967*f[20]+269.9999999999999*f[19]-467.6537180435969*f[18]-269.9999999999999*f[17]+270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]-301.8691769624717*f[14]-174.2842505793337*f[13]+301.8691769624717*f[11]+174.2842505793337*f[10]-301.8691769624717*f[7]-174.2842505793337*f[6]+174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])+519.6152422706631*f[22]+300.0*f[21]-519.6152422706631*f[20]-300.0000000000001*f[19]+519.6152422706633*f[18]+300.0000000000001*f[17]-300.0*f[16]+232.379000772445*f[12]-232.379000772445*f[9]-134.1640786499874*f[8]+232.379000772445*f[5]+134.1640786499874*f[4]-232.379000772445*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])+201.2461179749811*f[14]+116.1895003862225*f[13]-201.2461179749811*f[11]-116.1895003862225*f[10]+201.2461179749811*f[7]+116.1895003862225*f[6]-116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]-259.8076211353315*f[22]-150.0*f[21]+259.8076211353315*f[20]+150.0*f[19]-259.8076211353317*f[18]-150.0*f[17]+150.0*f[16]-232.379000772445*f[12]+232.379000772445*f[9]+134.1640786499874*f[8]-232.379000772445*f[5]-134.1640786499874*f[4]+232.379000772445*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[23]-207.8460969082653*f[22]-120.0*f[21]+207.8460969082653*f[20]+120.0*f[19]-207.8460969082653*f[18]-120.0*f[17]+120.0*f[16]-100.6230589874906*f[15]+100.6230589874906*f[14]+58.09475019311126*f[13]-100.6230589874906*f[11]-58.09475019311126*f[10]+100.6230589874906*f[7]+58.09475019311126*f[6]-58.09475019311126*f[3]); + fReflSurfXMu[1][0] = 0.01317615691736824*((25.98076211353316*f[23]-25.980762113533157*f[22]-15.0*f[21]+25.980762113533157*f[20]+15.000000000000002*f[19]-25.98076211353316*f[18]-15.000000000000002*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]+20.12461179749811*f[11]+11.61895003862225*f[10]-20.12461179749811*f[7]-11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])+25.980762113533157*f[22]+15.0*f[21]-25.980762113533157*f[20]-15.000000000000002*f[19]+25.98076211353316*f[18]+15.000000000000002*f[17]-15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]-13.416407864998739*f[8]+23.2379000772445*f[5]+13.416407864998739*f[4]-23.2379000772445*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]+23.2379000772445*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]-23.2379000772445*f[9]-13.416407864998739*f[8]+20.12461179749811*f[7]+11.61895003862225*f[6]+23.2379000772445*f[5]+13.416407864998739*f[4]-11.61895003862225*f[3]-23.2379000772445*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXMu[1][1] = 0.022097086912079594*((20.124611797498105*f[23]-20.12461179749811*f[22]-11.61895003862225*f[21]+20.12461179749811*f[20]+11.618950038622252*f[19]-20.124611797498105*f[18]-11.618950038622252*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]-13.856406460551018*f[14]-8.0*f[13]+13.856406460551018*f[11]+8.0*f[10]-13.856406460551018*f[7]-8.0*f[6]+8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])+13.416407864998739*f[22]+7.745966692414834*f[21]-13.416407864998739*f[20]-7.745966692414834*f[19]+13.416407864998737*f[18]+7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]-6.928203230275509*f[8]+12.0*f[5]+6.928203230275509*f[4]-12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]+6.708203932499369*f[22]+3.872983346207417*f[21]-6.708203932499369*f[20]-3.872983346207417*f[19]+6.7082039324993685*f[18]+3.872983346207417*f[17]-3.872983346207417*f[16]+13.856406460551018*f[15]-13.856406460551018*f[14]-8.0*f[13]-12.0*f[12]+13.856406460551018*f[11]+8.0*f[10]+12.0*f[9]+6.928203230275509*f[8]-13.856406460551018*f[7]-8.0*f[6]-12.0*f[5]-6.928203230275509*f[4]+8.0*f[3]+12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); + fReflSurfXMu[1][2] = 0.001473139127471973*((467.65371804359694*f[23]-467.65371804359665*f[22]-270.0*f[21]+467.65371804359665*f[20]+269.99999999999994*f[19]-467.65371804359694*f[18]-269.99999999999994*f[17]+270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]-301.86917696247167*f[14]-174.28425057933373*f[13]+301.86917696247167*f[11]+174.28425057933373*f[10]-301.86917696247167*f[7]-174.28425057933373*f[6]+174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])+519.6152422706631*f[22]+300.0*f[21]-519.6152422706631*f[20]-300.00000000000006*f[19]+519.6152422706633*f[18]+300.00000000000006*f[17]-300.0*f[16]+232.37900077244504*f[12]-232.37900077244504*f[9]-134.1640786499874*f[8]+232.37900077244504*f[5]+134.1640786499874*f[4]-232.37900077244504*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])+201.2461179749811*f[14]+116.18950038622252*f[13]-201.2461179749811*f[11]-116.18950038622252*f[10]+201.2461179749811*f[7]+116.18950038622252*f[6]-116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]-259.80762113533154*f[22]-150.0*f[21]+259.80762113533154*f[20]+150.00000000000003*f[19]-259.80762113533166*f[18]-150.00000000000003*f[17]+150.0*f[16]-232.37900077244504*f[12]+232.37900077244504*f[9]+134.1640786499874*f[8]-232.37900077244504*f[5]-134.1640786499874*f[4]+232.37900077244504*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826528*f[23]-207.84609690826525*f[22]-120.0*f[21]+207.84609690826525*f[20]+120.00000000000001*f[19]-207.84609690826528*f[18]-120.00000000000001*f[17]+120.0*f[16]-100.62305898749055*f[15]+100.62305898749055*f[14]+58.09475019311126*f[13]-100.62305898749055*f[11]-58.09475019311126*f[10]+100.62305898749055*f[7]+58.09475019311126*f[6]-58.09475019311126*f[3]); } else { // vcut in logical space. @@ -570,24 +610,26 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[1][0] = -0.01317615691736824*((25.98076211353316*f[23]-25.98076211353316*f[22]-15.0*f[21]+25.98076211353316*f[20]+15.0*f[19]-25.98076211353316*f[18]-15.0*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]+20.12461179749811*f[11]+11.61895003862225*f[10]-20.12461179749811*f[7]-11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])+25.98076211353316*f[22]+15.0*f[21]-25.98076211353316*f[20]-15.0*f[19]+25.98076211353316*f[18]+15.0*f[17]-15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]-13.41640786499874*f[8]+23.2379000772445*f[5]+13.41640786499874*f[4]-23.2379000772445*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]-23.2379000772445*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]+23.2379000772445*f[9]+13.41640786499874*f[8]+20.12461179749811*f[7]+11.61895003862225*f[6]-23.2379000772445*f[5]-13.41640786499874*f[4]-11.61895003862225*f[3]+23.2379000772445*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXMu[1][1] = -0.02209708691207959*((20.1246117974981*f[23]-20.12461179749811*f[22]-11.61895003862225*f[21]+20.12461179749811*f[20]+11.61895003862225*f[19]-20.1246117974981*f[18]-11.61895003862225*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]-13.85640646055102*f[14]-8.0*f[13]+13.85640646055102*f[11]+8.0*f[10]-13.85640646055102*f[7]-8.0*f[6]+8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])+13.41640786499874*f[22]+7.745966692414834*f[21]-13.41640786499874*f[20]-7.745966692414834*f[19]+13.41640786499874*f[18]+7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]-6.928203230275509*f[8]+12.0*f[5]+6.928203230275509*f[4]-12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]+6.708203932499369*f[22]+3.872983346207417*f[21]-6.708203932499369*f[20]-3.872983346207417*f[19]+6.708203932499369*f[18]+3.872983346207417*f[17]-3.872983346207417*f[16]-13.85640646055102*f[15]+13.85640646055102*f[14]+8.0*f[13]-12.0*f[12]-13.85640646055102*f[11]-8.0*f[10]+12.0*f[9]+6.928203230275509*f[8]+13.85640646055102*f[7]+8.0*f[6]-12.0*f[5]-6.928203230275509*f[4]-8.0*f[3]+12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXMu[1][2] = -0.001473139127471973*((467.6537180435969*f[23]-467.6537180435967*f[22]-270.0*f[21]+467.6537180435967*f[20]+269.9999999999999*f[19]-467.6537180435969*f[18]-269.9999999999999*f[17]+270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]-301.8691769624717*f[14]-174.2842505793337*f[13]+301.8691769624717*f[11]+174.2842505793337*f[10]-301.8691769624717*f[7]-174.2842505793337*f[6]+174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])+519.6152422706631*f[22]+300.0*f[21]-519.6152422706631*f[20]-300.0000000000001*f[19]+519.6152422706633*f[18]+300.0000000000001*f[17]-300.0*f[16]+232.379000772445*f[12]-232.379000772445*f[9]-134.1640786499874*f[8]+232.379000772445*f[5]+134.1640786499874*f[4]-232.379000772445*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])+201.2461179749811*f[14]+116.1895003862225*f[13]-201.2461179749811*f[11]-116.1895003862225*f[10]+201.2461179749811*f[7]+116.1895003862225*f[6]-116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]-259.8076211353315*f[22]-150.0*f[21]+259.8076211353315*f[20]+150.0*f[19]-259.8076211353317*f[18]-150.0*f[17]+150.0*f[16]-232.379000772445*f[12]+232.379000772445*f[9]+134.1640786499874*f[8]-232.379000772445*f[5]-134.1640786499874*f[4]+232.379000772445*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[23]+207.8460969082653*f[22]+120.0*f[21]-207.8460969082653*f[20]-120.0*f[19]+207.8460969082653*f[18]+120.0*f[17]-120.0*f[16]-100.6230589874906*f[15]+100.6230589874906*f[14]+58.09475019311126*f[13]-100.6230589874906*f[11]-58.09475019311126*f[10]+100.6230589874906*f[7]+58.09475019311126*f[6]-58.09475019311126*f[3]); + fReflSurfXMu[1][0] = -(0.01317615691736824*((25.98076211353316*f[23]-25.980762113533157*f[22]-15.0*f[21]+25.980762113533157*f[20]+15.000000000000002*f[19]-25.98076211353316*f[18]-15.000000000000002*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]+20.12461179749811*f[11]+11.61895003862225*f[10]-20.12461179749811*f[7]-11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])+25.980762113533157*f[22]+15.0*f[21]-25.980762113533157*f[20]-15.000000000000002*f[19]+25.98076211353316*f[18]+15.000000000000002*f[17]-15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]-13.416407864998739*f[8]+23.2379000772445*f[5]+13.416407864998739*f[4]-23.2379000772445*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]-23.2379000772445*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]+23.2379000772445*f[9]+13.416407864998739*f[8]+20.12461179749811*f[7]+11.61895003862225*f[6]-23.2379000772445*f[5]-13.416407864998739*f[4]-11.61895003862225*f[3]+23.2379000772445*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXMu[1][1] = -(0.022097086912079594*((20.124611797498105*f[23]-20.12461179749811*f[22]-11.61895003862225*f[21]+20.12461179749811*f[20]+11.618950038622252*f[19]-20.124611797498105*f[18]-11.618950038622252*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]-13.856406460551018*f[14]-8.0*f[13]+13.856406460551018*f[11]+8.0*f[10]-13.856406460551018*f[7]-8.0*f[6]+8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])+13.416407864998739*f[22]+7.745966692414834*f[21]-13.416407864998739*f[20]-7.745966692414834*f[19]+13.416407864998737*f[18]+7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]-6.928203230275509*f[8]+12.0*f[5]+6.928203230275509*f[4]-12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]+6.708203932499369*f[22]+3.872983346207417*f[21]-6.708203932499369*f[20]-3.872983346207417*f[19]+6.7082039324993685*f[18]+3.872983346207417*f[17]-3.872983346207417*f[16]-13.856406460551018*f[15]+13.856406460551018*f[14]+8.0*f[13]-12.0*f[12]-13.856406460551018*f[11]-8.0*f[10]+12.0*f[9]+6.928203230275509*f[8]+13.856406460551018*f[7]+8.0*f[6]-12.0*f[5]-6.928203230275509*f[4]-8.0*f[3]+12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])); + fReflSurfXMu[1][2] = -(0.001473139127471973*((467.65371804359694*f[23]-467.65371804359665*f[22]-270.0*f[21]+467.65371804359665*f[20]+269.99999999999994*f[19]-467.65371804359694*f[18]-269.99999999999994*f[17]+270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]-301.86917696247167*f[14]-174.28425057933373*f[13]+301.86917696247167*f[11]+174.28425057933373*f[10]-301.86917696247167*f[7]-174.28425057933373*f[6]+174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])+519.6152422706631*f[22]+300.0*f[21]-519.6152422706631*f[20]-300.00000000000006*f[19]+519.6152422706633*f[18]+300.00000000000006*f[17]-300.0*f[16]+232.37900077244504*f[12]-232.37900077244504*f[9]-134.1640786499874*f[8]+232.37900077244504*f[5]+134.1640786499874*f[4]-232.37900077244504*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])+201.2461179749811*f[14]+116.18950038622252*f[13]-201.2461179749811*f[11]-116.18950038622252*f[10]+201.2461179749811*f[7]+116.18950038622252*f[6]-116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]-259.80762113533154*f[22]-150.0*f[21]+259.80762113533154*f[20]+150.00000000000003*f[19]-259.80762113533166*f[18]-150.00000000000003*f[17]+150.0*f[16]-232.37900077244504*f[12]+232.37900077244504*f[9]+134.1640786499874*f[8]-232.37900077244504*f[5]-134.1640786499874*f[4]+232.37900077244504*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826528*f[23]+207.84609690826525*f[22]+120.0*f[21]-207.84609690826525*f[20]-120.00000000000001*f[19]+207.84609690826528*f[18]+120.00000000000001*f[17]-120.0*f[16]-100.62305898749055*f[15]+100.62305898749055*f[14]+58.09475019311126*f[13]-100.62305898749055*f[11]-58.09475019311126*f[10]+100.62305898749055*f[7]+58.09475019311126*f[6]-58.09475019311126*f[3])); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXMu[1][1])/fReflSurfXMu[1][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[1][2]+5.0*fReflSurfXMu[1][0]))/fReflSurfXMu[1][0]; - if (fReflSurfXMu[1][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXMu[1][1])/fReflSurfXMu[1][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[1][2]+5.0*fReflSurfXMu[1][0]))/fReflSurfXMu[1][0]; + if (fReflSurfXMu[1][0]<0.) { fReflSurfXMu[1][0] = 0.0; fReflSurfXMu[1][1] = 0.0; fReflSurfXMu[1][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXMu[1][0] = 0.0; fReflSurfXMu[1][1] = 0.0; fReflSurfXMu[1][2] = 0.0; + } + } fReflSurfX[0][0] = 0.7071067811865475*(fReflSurfXMu[1][0]+fReflSurfXMu[0][0]); @@ -597,38 +639,28 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double fReflSurfX[0][4] = 0.7071067811865475*(fReflSurfXMu[1][2]+fReflSurfXMu[0][2]); fReflSurfX[0][5] = 0.7071067811865475*(fReflSurfXMu[1][2]-1.0*fReflSurfXMu[0][2]); - } - // node (x)_1 - vcutSq = -0.5*(1.732050807568877*phiWall[3]-1.732050807568877*phi[3]+1.732050807568877*phiWall[2]-1.732050807568877*phi[2]-1.0*phiWall[1]+phi[1]-1.0*phiWall[0]+phi[0])*q2Dm; - if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) + wv = 0.5*vparUp+0.5*vparLo; + dv = vparUp-1.0*vparLo; - fReflSurfX[1][0] = 0.0; - fReflSurfX[1][1] = 0.0; - fReflSurfX[1][2] = 0.0; - fReflSurfX[1][3] = 0.0; - fReflSurfX[1][4] = 0.0; - fReflSurfX[1][5] = 0.0; + // node (mu)_0 + 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; - } else if (vcutSq > vparAbsSqUp) { // full reflection + if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) - fReflSurfX[1][0] = -0.5*(1.732050807568877*(f[5]+f[2])-1.0*(f[1]+f[0])); - fReflSurfX[1][1] = -0.5*(1.732050807568877*(f[11]+f[7])-1.0*(f[6]+f[3])); - fReflSurfX[1][2] = -0.5*(1.732050807568877*(f[12]+f[9])-1.0*(f[8]+f[4])); - fReflSurfX[1][3] = -0.5*(1.732050807568877*(f[15]+f[14])-1.0*(f[13]+f[10])); - fReflSurfX[1][4] = -0.03333333333333333*(25.98076211353316*f[20]+25.98076211353316*f[18]-1.0*(15.0*f[17]+15.0*f[16])); - fReflSurfX[1][5] = -0.03333333333333333*(25.98076211353316*f[23]+25.98076211353316*f[22]-1.0*(15.0*f[21]+15.0*f[19])); + fReflSurfXMu[0][0] = 0.0; + fReflSurfXMu[0][1] = 0.0; + fReflSurfXMu[0][2] = 0.0; - } else { // partial reflection + } else if (vcutSq > vparAbsSqUp) { // full reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; + fReflSurfXMu[0][0] = 0.3535533905932737*(1.7320508075688772*(f[12]+f[9])-1.0*(f[8]+1.7320508075688772*f[5]+f[4]+1.7320508075688772*f[2])+f[1]+f[0]); + fReflSurfXMu[0][1] = 0.3535533905932737*(1.7320508075688772*(f[15]+f[14])-1.0*(f[13]+1.7320508075688772*f[11]+f[10]+1.7320508075688772*f[7])+f[6]+f[3]); + fReflSurfXMu[0][2] = 0.023570226039551577*(25.98076211353316*f[23]+5.0*(5.196152422706631*f[22]-1.0*(3.0*f[21]+5.196152422706631*f[20]))+8.660254037844387*(1.7320508075688772*f[17]-1.0*(1.7320508075688772*f[19]+3.0*f[18]))+15.0*f[16]); - double xBar, xSqBar; - double fReflSurfXMu[2][3] = {0.}; + } else { // partial reflection - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -638,9 +670,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[0][0] = 0.01317615691736824*((25.98076211353316*f[23]+25.98076211353316*f[22]-15.0*f[21]-25.98076211353316*f[20]-15.0*f[19]-25.98076211353316*f[18]+15.0*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]-20.12461179749811*f[11]-11.61895003862225*f[10]-20.12461179749811*f[7]+11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])-25.98076211353316*f[22]+15.0*f[21]+25.98076211353316*f[20]+15.0*f[19]+25.98076211353316*f[18]-15.0*f[17]-15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]-13.41640786499874*f[8]-23.2379000772445*f[5]-13.41640786499874*f[4]-23.2379000772445*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]+23.2379000772445*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]+23.2379000772445*f[9]-13.41640786499874*f[8]+20.12461179749811*f[7]-11.61895003862225*f[6]-23.2379000772445*f[5]-13.41640786499874*f[4]-11.61895003862225*f[3]-23.2379000772445*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXMu[0][1] = 0.02209708691207959*((20.1246117974981*f[23]+20.12461179749811*f[22]-11.61895003862225*f[21]-20.12461179749811*f[20]-11.61895003862225*f[19]-20.1246117974981*f[18]+11.61895003862225*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]+13.85640646055102*f[14]-8.0*f[13]-13.85640646055102*f[11]-8.0*f[10]-13.85640646055102*f[7]+8.0*f[6]+8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])-13.41640786499874*f[22]+7.745966692414834*f[21]+13.41640786499874*f[20]+7.745966692414834*f[19]+13.41640786499874*f[18]-7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]-6.928203230275509*f[8]-12.0*f[5]-6.928203230275509*f[4]-12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]-6.708203932499369*f[22]+3.872983346207417*f[21]+6.708203932499369*f[20]+3.872983346207417*f[19]+6.708203932499369*f[18]-3.872983346207417*f[17]-3.872983346207417*f[16]+13.85640646055102*f[15]+13.85640646055102*f[14]-8.0*f[13]-12.0*f[12]-13.85640646055102*f[11]-8.0*f[10]-12.0*f[9]+6.928203230275509*f[8]-13.85640646055102*f[7]+8.0*f[6]+12.0*f[5]+6.928203230275509*f[4]+8.0*f[3]+12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXMu[0][2] = 0.001473139127471973*((467.6537180435969*f[23]+467.6537180435967*f[22]-270.0*f[21]-467.6537180435967*f[20]-269.9999999999999*f[19]-467.6537180435969*f[18]+269.9999999999999*f[17]+270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]+301.8691769624717*f[14]-174.2842505793337*f[13]-301.8691769624717*f[11]-174.2842505793337*f[10]-301.8691769624717*f[7]+174.2842505793337*f[6]+174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])-519.6152422706631*f[22]+300.0*f[21]+519.6152422706631*f[20]+300.0000000000001*f[19]+519.6152422706633*f[18]-300.0000000000001*f[17]-300.0*f[16]+232.379000772445*f[12]+232.379000772445*f[9]-134.1640786499874*f[8]-232.379000772445*f[5]-134.1640786499874*f[4]-232.379000772445*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])-201.2461179749811*f[14]+116.1895003862225*f[13]+201.2461179749811*f[11]+116.1895003862225*f[10]+201.2461179749811*f[7]-116.1895003862225*f[6]-116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]+259.8076211353315*f[22]-150.0*f[21]-259.8076211353315*f[20]-150.0*f[19]-259.8076211353317*f[18]+150.0*f[17]+150.0*f[16]-232.379000772445*f[12]-232.379000772445*f[9]+134.1640786499874*f[8]+232.379000772445*f[5]+134.1640786499874*f[4]+232.379000772445*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[23]+207.8460969082653*f[22]-120.0*f[21]-207.8460969082653*f[20]-120.0*f[19]-207.8460969082653*f[18]+120.0*f[17]+120.0*f[16]-100.6230589874906*f[15]-100.6230589874906*f[14]+58.09475019311126*f[13]+100.6230589874906*f[11]+58.09475019311126*f[10]+100.6230589874906*f[7]-58.09475019311126*f[6]-58.09475019311126*f[3]); + fReflSurfXMu[0][0] = 0.01317615691736824*((25.98076211353316*f[23]+25.980762113533157*f[22]-15.0*f[21]-25.980762113533157*f[20]-15.000000000000002*f[19]-25.98076211353316*f[18]+15.000000000000002*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]-20.12461179749811*f[11]-11.61895003862225*f[10]-20.12461179749811*f[7]+11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])-25.980762113533157*f[22]+15.0*f[21]+25.980762113533157*f[20]+15.000000000000002*f[19]+25.98076211353316*f[18]-15.000000000000002*f[17]-15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]-13.416407864998739*f[8]-23.2379000772445*f[5]-13.416407864998739*f[4]-23.2379000772445*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]+23.2379000772445*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]+23.2379000772445*f[9]-13.416407864998739*f[8]+20.12461179749811*f[7]-11.61895003862225*f[6]-23.2379000772445*f[5]-13.416407864998739*f[4]-11.61895003862225*f[3]-23.2379000772445*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXMu[0][1] = 0.022097086912079594*((20.124611797498105*f[23]+20.12461179749811*f[22]-11.61895003862225*f[21]-20.12461179749811*f[20]-11.618950038622252*f[19]-20.124611797498105*f[18]+11.618950038622252*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]+13.856406460551018*f[14]-8.0*f[13]-13.856406460551018*f[11]-8.0*f[10]-13.856406460551018*f[7]+8.0*f[6]+8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])-13.416407864998739*f[22]+7.745966692414834*f[21]+13.416407864998739*f[20]+7.745966692414834*f[19]+13.416407864998737*f[18]-7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]-6.928203230275509*f[8]-12.0*f[5]-6.928203230275509*f[4]-12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]-6.708203932499369*f[22]+3.872983346207417*f[21]+6.708203932499369*f[20]+3.872983346207417*f[19]+6.7082039324993685*f[18]-3.872983346207417*f[17]-3.872983346207417*f[16]+13.856406460551018*f[15]+13.856406460551018*f[14]-8.0*f[13]-12.0*f[12]-13.856406460551018*f[11]-8.0*f[10]-12.0*f[9]+6.928203230275509*f[8]-13.856406460551018*f[7]+8.0*f[6]+12.0*f[5]+6.928203230275509*f[4]+8.0*f[3]+12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); + fReflSurfXMu[0][2] = 0.001473139127471973*((467.65371804359694*f[23]+467.65371804359665*f[22]-270.0*f[21]-467.65371804359665*f[20]-269.99999999999994*f[19]-467.65371804359694*f[18]+269.99999999999994*f[17]+270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]+301.86917696247167*f[14]-174.28425057933373*f[13]-301.86917696247167*f[11]-174.28425057933373*f[10]-301.86917696247167*f[7]+174.28425057933373*f[6]+174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])-519.6152422706631*f[22]+300.0*f[21]+519.6152422706631*f[20]+300.00000000000006*f[19]+519.6152422706633*f[18]-300.00000000000006*f[17]-300.0*f[16]+232.37900077244504*f[12]+232.37900077244504*f[9]-134.1640786499874*f[8]-232.37900077244504*f[5]-134.1640786499874*f[4]-232.37900077244504*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])-201.2461179749811*f[14]+116.18950038622252*f[13]+201.2461179749811*f[11]+116.18950038622252*f[10]+201.2461179749811*f[7]-116.18950038622252*f[6]-116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]+259.80762113533154*f[22]-150.0*f[21]-259.80762113533154*f[20]-150.00000000000003*f[19]-259.80762113533166*f[18]+150.00000000000003*f[17]+150.0*f[16]-232.37900077244504*f[12]-232.37900077244504*f[9]+134.1640786499874*f[8]+232.37900077244504*f[5]+134.1640786499874*f[4]+232.37900077244504*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826528*f[23]+207.84609690826525*f[22]-120.0*f[21]-207.84609690826525*f[20]-120.00000000000001*f[19]-207.84609690826528*f[18]+120.00000000000001*f[17]+120.0*f[16]-100.62305898749055*f[15]-100.62305898749055*f[14]+58.09475019311126*f[13]+100.62305898749055*f[11]+58.09475019311126*f[10]+100.62305898749055*f[7]-58.09475019311126*f[6]-58.09475019311126*f[3]); } else { // vcut in logical space. @@ -651,27 +683,45 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[0][0] = -0.01317615691736824*((25.98076211353316*f[23]+25.98076211353316*f[22]-15.0*f[21]-25.98076211353316*f[20]-15.0*f[19]-25.98076211353316*f[18]+15.0*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]-20.12461179749811*f[11]-11.61895003862225*f[10]-20.12461179749811*f[7]+11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])-25.98076211353316*f[22]+15.0*f[21]+25.98076211353316*f[20]+15.0*f[19]+25.98076211353316*f[18]-15.0*f[17]-15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]-13.41640786499874*f[8]-23.2379000772445*f[5]-13.41640786499874*f[4]-23.2379000772445*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]-23.2379000772445*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]-23.2379000772445*f[9]+13.41640786499874*f[8]+20.12461179749811*f[7]-11.61895003862225*f[6]+23.2379000772445*f[5]+13.41640786499874*f[4]-11.61895003862225*f[3]+23.2379000772445*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXMu[0][1] = -0.02209708691207959*((20.1246117974981*f[23]+20.12461179749811*f[22]-11.61895003862225*f[21]-20.12461179749811*f[20]-11.61895003862225*f[19]-20.1246117974981*f[18]+11.61895003862225*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]+13.85640646055102*f[14]-8.0*f[13]-13.85640646055102*f[11]-8.0*f[10]-13.85640646055102*f[7]+8.0*f[6]+8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])-13.41640786499874*f[22]+7.745966692414834*f[21]+13.41640786499874*f[20]+7.745966692414834*f[19]+13.41640786499874*f[18]-7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]-6.928203230275509*f[8]-12.0*f[5]-6.928203230275509*f[4]-12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]-6.708203932499369*f[22]+3.872983346207417*f[21]+6.708203932499369*f[20]+3.872983346207417*f[19]+6.708203932499369*f[18]-3.872983346207417*f[17]-3.872983346207417*f[16]-13.85640646055102*f[15]-13.85640646055102*f[14]+8.0*f[13]-12.0*f[12]+13.85640646055102*f[11]+8.0*f[10]-12.0*f[9]+6.928203230275509*f[8]+13.85640646055102*f[7]-8.0*f[6]+12.0*f[5]+6.928203230275509*f[4]-8.0*f[3]+12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXMu[0][2] = -0.001473139127471973*((467.6537180435969*f[23]+467.6537180435967*f[22]-270.0*f[21]-467.6537180435967*f[20]-269.9999999999999*f[19]-467.6537180435969*f[18]+269.9999999999999*f[17]+270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]+301.8691769624717*f[14]-174.2842505793337*f[13]-301.8691769624717*f[11]-174.2842505793337*f[10]-301.8691769624717*f[7]+174.2842505793337*f[6]+174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])-519.6152422706631*f[22]+300.0*f[21]+519.6152422706631*f[20]+300.0000000000001*f[19]+519.6152422706633*f[18]-300.0000000000001*f[17]-300.0*f[16]+232.379000772445*f[12]+232.379000772445*f[9]-134.1640786499874*f[8]-232.379000772445*f[5]-134.1640786499874*f[4]-232.379000772445*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])-201.2461179749811*f[14]+116.1895003862225*f[13]+201.2461179749811*f[11]+116.1895003862225*f[10]+201.2461179749811*f[7]-116.1895003862225*f[6]-116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]+259.8076211353315*f[22]-150.0*f[21]-259.8076211353315*f[20]-150.0*f[19]-259.8076211353317*f[18]+150.0*f[17]+150.0*f[16]-232.379000772445*f[12]-232.379000772445*f[9]+134.1640786499874*f[8]+232.379000772445*f[5]+134.1640786499874*f[4]+232.379000772445*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[23]-207.8460969082653*f[22]+120.0*f[21]+207.8460969082653*f[20]+120.0*f[19]+207.8460969082653*f[18]-120.0*f[17]-120.0*f[16]-100.6230589874906*f[15]-100.6230589874906*f[14]+58.09475019311126*f[13]+100.6230589874906*f[11]+58.09475019311126*f[10]+100.6230589874906*f[7]-58.09475019311126*f[6]-58.09475019311126*f[3]); + fReflSurfXMu[0][0] = -(0.01317615691736824*((25.98076211353316*f[23]+25.980762113533157*f[22]-15.0*f[21]-25.980762113533157*f[20]-15.000000000000002*f[19]-25.98076211353316*f[18]+15.000000000000002*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]-20.12461179749811*f[11]-11.61895003862225*f[10]-20.12461179749811*f[7]+11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])-25.980762113533157*f[22]+15.0*f[21]+25.980762113533157*f[20]+15.000000000000002*f[19]+25.98076211353316*f[18]-15.000000000000002*f[17]-15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]-13.416407864998739*f[8]-23.2379000772445*f[5]-13.416407864998739*f[4]-23.2379000772445*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]-23.2379000772445*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]-23.2379000772445*f[9]+13.416407864998739*f[8]+20.12461179749811*f[7]-11.61895003862225*f[6]+23.2379000772445*f[5]+13.416407864998739*f[4]-11.61895003862225*f[3]+23.2379000772445*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXMu[0][1] = -(0.022097086912079594*((20.124611797498105*f[23]+20.12461179749811*f[22]-11.61895003862225*f[21]-20.12461179749811*f[20]-11.618950038622252*f[19]-20.124611797498105*f[18]+11.618950038622252*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]+13.856406460551018*f[14]-8.0*f[13]-13.856406460551018*f[11]-8.0*f[10]-13.856406460551018*f[7]+8.0*f[6]+8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])-13.416407864998739*f[22]+7.745966692414834*f[21]+13.416407864998739*f[20]+7.745966692414834*f[19]+13.416407864998737*f[18]-7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]-6.928203230275509*f[8]-12.0*f[5]-6.928203230275509*f[4]-12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]-6.708203932499369*f[22]+3.872983346207417*f[21]+6.708203932499369*f[20]+3.872983346207417*f[19]+6.7082039324993685*f[18]-3.872983346207417*f[17]-3.872983346207417*f[16]-13.856406460551018*f[15]-13.856406460551018*f[14]+8.0*f[13]-12.0*f[12]+13.856406460551018*f[11]+8.0*f[10]-12.0*f[9]+6.928203230275509*f[8]+13.856406460551018*f[7]-8.0*f[6]+12.0*f[5]+6.928203230275509*f[4]-8.0*f[3]+12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])); + fReflSurfXMu[0][2] = -(0.001473139127471973*((467.65371804359694*f[23]+467.65371804359665*f[22]-270.0*f[21]-467.65371804359665*f[20]-269.99999999999994*f[19]-467.65371804359694*f[18]+269.99999999999994*f[17]+270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]+301.86917696247167*f[14]-174.28425057933373*f[13]-301.86917696247167*f[11]-174.28425057933373*f[10]-301.86917696247167*f[7]+174.28425057933373*f[6]+174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])-519.6152422706631*f[22]+300.0*f[21]+519.6152422706631*f[20]+300.00000000000006*f[19]+519.6152422706633*f[18]-300.00000000000006*f[17]-300.0*f[16]+232.37900077244504*f[12]+232.37900077244504*f[9]-134.1640786499874*f[8]-232.37900077244504*f[5]-134.1640786499874*f[4]-232.37900077244504*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])-201.2461179749811*f[14]+116.18950038622252*f[13]+201.2461179749811*f[11]+116.18950038622252*f[10]+201.2461179749811*f[7]-116.18950038622252*f[6]-116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]+259.80762113533154*f[22]-150.0*f[21]-259.80762113533154*f[20]-150.00000000000003*f[19]-259.80762113533166*f[18]+150.00000000000003*f[17]+150.0*f[16]-232.37900077244504*f[12]-232.37900077244504*f[9]+134.1640786499874*f[8]+232.37900077244504*f[5]+134.1640786499874*f[4]+232.37900077244504*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826528*f[23]-207.84609690826525*f[22]+120.0*f[21]+207.84609690826525*f[20]+120.00000000000001*f[19]+207.84609690826528*f[18]-120.00000000000001*f[17]-120.0*f[16]-100.62305898749055*f[15]-100.62305898749055*f[14]+58.09475019311126*f[13]+100.62305898749055*f[11]+58.09475019311126*f[10]+100.62305898749055*f[7]-58.09475019311126*f[6]-58.09475019311126*f[3])); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXMu[0][1])/fReflSurfXMu[0][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[0][2]+5.0*fReflSurfXMu[0][0]))/fReflSurfXMu[0][0]; - if (fReflSurfXMu[0][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXMu[0][1])/fReflSurfXMu[0][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[0][2]+5.0*fReflSurfXMu[0][0]))/fReflSurfXMu[0][0]; + if (fReflSurfXMu[0][0]<0.) { fReflSurfXMu[0][0] = 0.0; fReflSurfXMu[0][1] = 0.0; fReflSurfXMu[0][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXMu[0][0] = 0.0; fReflSurfXMu[0][1] = 0.0; fReflSurfXMu[0][2] = 0.0; + } + } - // node (mu)_1 + // node (mu)_1 + 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) + + fReflSurfXMu[1][0] = 0.0; + fReflSurfXMu[1][1] = 0.0; + fReflSurfXMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfXMu[1][0] = -(0.3535533905932737*(1.7320508075688772*(f[12]+f[9])-1.0*f[8]+1.7320508075688772*f[5]-1.0*f[4]+1.7320508075688772*f[2]-1.0*(f[1]+f[0]))); + fReflSurfXMu[1][1] = -(0.3535533905932737*(1.7320508075688772*(f[15]+f[14])-1.0*f[13]+1.7320508075688772*f[11]-1.0*f[10]+1.7320508075688772*f[7]-1.0*(f[6]+f[3]))); + fReflSurfXMu[1][2] = -(0.023570226039551577*(25.98076211353316*f[23]+5.0*(5.196152422706631*f[22]-3.0*f[21]+5.196152422706631*f[20])+8.660254037844387*(3.0*f[18]-1.7320508075688772*f[19])-1.0*(15.000000000000002*f[17]+15.0*f[16]))); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -681,9 +731,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[1][0] = -0.01317615691736824*((25.98076211353316*f[23]+25.98076211353316*f[22]-15.0*f[21]+25.98076211353316*f[20]-15.0*f[19]+25.98076211353316*f[18]-15.0*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]+20.12461179749811*f[11]-11.61895003862225*f[10]+20.12461179749811*f[7]-11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])-25.98076211353316*f[22]+15.0*f[21]-25.98076211353316*f[20]+15.0*f[19]-25.98076211353316*f[18]+15.0*f[17]+15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]-13.41640786499874*f[8]+23.2379000772445*f[5]-13.41640786499874*f[4]+23.2379000772445*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]+23.2379000772445*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]+23.2379000772445*f[9]-13.41640786499874*f[8]-20.12461179749811*f[7]+11.61895003862225*f[6]+23.2379000772445*f[5]-13.41640786499874*f[4]+11.61895003862225*f[3]+23.2379000772445*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXMu[1][1] = -0.02209708691207959*((20.1246117974981*f[23]+20.12461179749811*f[22]-11.61895003862225*f[21]+20.12461179749811*f[20]-11.61895003862225*f[19]+20.1246117974981*f[18]-11.61895003862225*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]+13.85640646055102*f[14]-8.0*f[13]+13.85640646055102*f[11]-8.0*f[10]+13.85640646055102*f[7]-8.0*f[6]-8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])-13.41640786499874*f[22]+7.745966692414834*f[21]-13.41640786499874*f[20]+7.745966692414834*f[19]-13.41640786499874*f[18]+7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]-6.928203230275509*f[8]+12.0*f[5]-6.928203230275509*f[4]+12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]-6.708203932499369*f[22]+3.872983346207417*f[21]-6.708203932499369*f[20]+3.872983346207417*f[19]-6.708203932499369*f[18]+3.872983346207417*f[17]+3.872983346207417*f[16]+13.85640646055102*f[15]+13.85640646055102*f[14]-8.0*f[13]-12.0*f[12]+13.85640646055102*f[11]-8.0*f[10]-12.0*f[9]+6.928203230275509*f[8]+13.85640646055102*f[7]-8.0*f[6]-12.0*f[5]+6.928203230275509*f[4]-8.0*f[3]-12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXMu[1][2] = -0.001473139127471973*((467.6537180435969*f[23]+467.6537180435967*f[22]-270.0*f[21]+467.6537180435967*f[20]-269.9999999999999*f[19]+467.6537180435969*f[18]-269.9999999999999*f[17]-270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]+301.8691769624717*f[14]-174.2842505793337*f[13]+301.8691769624717*f[11]-174.2842505793337*f[10]+301.8691769624717*f[7]-174.2842505793337*f[6]-174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])-519.6152422706631*f[22]+300.0*f[21]-519.6152422706631*f[20]+300.0000000000001*f[19]-519.6152422706633*f[18]+300.0000000000001*f[17]+300.0*f[16]+232.379000772445*f[12]+232.379000772445*f[9]-134.1640786499874*f[8]+232.379000772445*f[5]-134.1640786499874*f[4]+232.379000772445*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])-201.2461179749811*f[14]+116.1895003862225*f[13]-201.2461179749811*f[11]+116.1895003862225*f[10]-201.2461179749811*f[7]+116.1895003862225*f[6]+116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]+259.8076211353315*f[22]-150.0*f[21]+259.8076211353315*f[20]-150.0*f[19]+259.8076211353317*f[18]-150.0*f[17]-150.0*f[16]-232.379000772445*f[12]-232.379000772445*f[9]+134.1640786499874*f[8]-232.379000772445*f[5]+134.1640786499874*f[4]-232.379000772445*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[23]+207.8460969082653*f[22]-120.0*f[21]+207.8460969082653*f[20]-120.0*f[19]+207.8460969082653*f[18]-120.0*f[17]-120.0*f[16]-100.6230589874906*f[15]-100.6230589874906*f[14]+58.09475019311126*f[13]-100.6230589874906*f[11]+58.09475019311126*f[10]-100.6230589874906*f[7]+58.09475019311126*f[6]+58.09475019311126*f[3]); + fReflSurfXMu[1][0] = -(0.01317615691736824*((25.98076211353316*f[23]+25.980762113533157*f[22]-15.0*f[21]+25.980762113533157*f[20]-15.000000000000002*f[19]+25.98076211353316*f[18]-15.000000000000002*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]+20.12461179749811*f[11]-11.61895003862225*f[10]+20.12461179749811*f[7]-11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])-25.980762113533157*f[22]+15.0*f[21]-25.980762113533157*f[20]+15.000000000000002*f[19]-25.98076211353316*f[18]+15.000000000000002*f[17]+15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]-13.416407864998739*f[8]+23.2379000772445*f[5]-13.416407864998739*f[4]+23.2379000772445*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]+23.2379000772445*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]+23.2379000772445*f[9]-13.416407864998739*f[8]-20.12461179749811*f[7]+11.61895003862225*f[6]+23.2379000772445*f[5]-13.416407864998739*f[4]+11.61895003862225*f[3]+23.2379000772445*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXMu[1][1] = -(0.022097086912079594*((20.124611797498105*f[23]+20.12461179749811*f[22]-11.61895003862225*f[21]+20.12461179749811*f[20]-11.618950038622252*f[19]+20.124611797498105*f[18]-11.618950038622252*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]+13.856406460551018*f[14]-8.0*f[13]+13.856406460551018*f[11]-8.0*f[10]+13.856406460551018*f[7]-8.0*f[6]-8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])-13.416407864998739*f[22]+7.745966692414834*f[21]-13.416407864998739*f[20]+7.745966692414834*f[19]-13.416407864998737*f[18]+7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]-6.928203230275509*f[8]+12.0*f[5]-6.928203230275509*f[4]+12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]-6.708203932499369*f[22]+3.872983346207417*f[21]-6.708203932499369*f[20]+3.872983346207417*f[19]-6.7082039324993685*f[18]+3.872983346207417*f[17]+3.872983346207417*f[16]+13.856406460551018*f[15]+13.856406460551018*f[14]-8.0*f[13]-12.0*f[12]+13.856406460551018*f[11]-8.0*f[10]-12.0*f[9]+6.928203230275509*f[8]+13.856406460551018*f[7]-8.0*f[6]-12.0*f[5]+6.928203230275509*f[4]-8.0*f[3]-12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])); + fReflSurfXMu[1][2] = -(0.001473139127471973*((467.65371804359694*f[23]+467.65371804359665*f[22]-270.0*f[21]+467.65371804359665*f[20]-269.99999999999994*f[19]+467.65371804359694*f[18]-269.99999999999994*f[17]-270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]+301.86917696247167*f[14]-174.28425057933373*f[13]+301.86917696247167*f[11]-174.28425057933373*f[10]+301.86917696247167*f[7]-174.28425057933373*f[6]-174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])-519.6152422706631*f[22]+300.0*f[21]-519.6152422706631*f[20]+300.00000000000006*f[19]-519.6152422706633*f[18]+300.00000000000006*f[17]+300.0*f[16]+232.37900077244504*f[12]+232.37900077244504*f[9]-134.1640786499874*f[8]+232.37900077244504*f[5]-134.1640786499874*f[4]+232.37900077244504*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])-201.2461179749811*f[14]+116.18950038622252*f[13]-201.2461179749811*f[11]+116.18950038622252*f[10]-201.2461179749811*f[7]+116.18950038622252*f[6]+116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]+259.80762113533154*f[22]-150.0*f[21]+259.80762113533154*f[20]-150.00000000000003*f[19]+259.80762113533166*f[18]-150.00000000000003*f[17]-150.0*f[16]-232.37900077244504*f[12]-232.37900077244504*f[9]+134.1640786499874*f[8]-232.37900077244504*f[5]+134.1640786499874*f[4]-232.37900077244504*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826528*f[23]+207.84609690826525*f[22]-120.0*f[21]+207.84609690826525*f[20]-120.00000000000001*f[19]+207.84609690826528*f[18]-120.00000000000001*f[17]-120.0*f[16]-100.62305898749055*f[15]-100.62305898749055*f[14]+58.09475019311126*f[13]-100.62305898749055*f[11]+58.09475019311126*f[10]-100.62305898749055*f[7]+58.09475019311126*f[6]+58.09475019311126*f[3])); } else { // vcut in logical space. @@ -694,24 +744,26 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[1][0] = 0.01317615691736824*((25.98076211353316*f[23]+25.98076211353316*f[22]-15.0*f[21]+25.98076211353316*f[20]-15.0*f[19]+25.98076211353316*f[18]-15.0*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]+20.12461179749811*f[11]-11.61895003862225*f[10]+20.12461179749811*f[7]-11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])-25.98076211353316*f[22]+15.0*f[21]-25.98076211353316*f[20]+15.0*f[19]-25.98076211353316*f[18]+15.0*f[17]+15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]-13.41640786499874*f[8]+23.2379000772445*f[5]-13.41640786499874*f[4]+23.2379000772445*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]-23.2379000772445*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]-23.2379000772445*f[9]+13.41640786499874*f[8]-20.12461179749811*f[7]+11.61895003862225*f[6]-23.2379000772445*f[5]+13.41640786499874*f[4]+11.61895003862225*f[3]-23.2379000772445*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXMu[1][1] = 0.02209708691207959*((20.1246117974981*f[23]+20.12461179749811*f[22]-11.61895003862225*f[21]+20.12461179749811*f[20]-11.61895003862225*f[19]+20.1246117974981*f[18]-11.61895003862225*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]+13.85640646055102*f[14]-8.0*f[13]+13.85640646055102*f[11]-8.0*f[10]+13.85640646055102*f[7]-8.0*f[6]-8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])-13.41640786499874*f[22]+7.745966692414834*f[21]-13.41640786499874*f[20]+7.745966692414834*f[19]-13.41640786499874*f[18]+7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]-6.928203230275509*f[8]+12.0*f[5]-6.928203230275509*f[4]+12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]-6.708203932499369*f[22]+3.872983346207417*f[21]-6.708203932499369*f[20]+3.872983346207417*f[19]-6.708203932499369*f[18]+3.872983346207417*f[17]+3.872983346207417*f[16]-13.85640646055102*f[15]-13.85640646055102*f[14]+8.0*f[13]-12.0*f[12]-13.85640646055102*f[11]+8.0*f[10]-12.0*f[9]+6.928203230275509*f[8]-13.85640646055102*f[7]+8.0*f[6]-12.0*f[5]+6.928203230275509*f[4]+8.0*f[3]-12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXMu[1][2] = 0.001473139127471973*((467.6537180435969*f[23]+467.6537180435967*f[22]-270.0*f[21]+467.6537180435967*f[20]-269.9999999999999*f[19]+467.6537180435969*f[18]-269.9999999999999*f[17]-270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]+301.8691769624717*f[14]-174.2842505793337*f[13]+301.8691769624717*f[11]-174.2842505793337*f[10]+301.8691769624717*f[7]-174.2842505793337*f[6]-174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])-519.6152422706631*f[22]+300.0*f[21]-519.6152422706631*f[20]+300.0000000000001*f[19]-519.6152422706633*f[18]+300.0000000000001*f[17]+300.0*f[16]+232.379000772445*f[12]+232.379000772445*f[9]-134.1640786499874*f[8]+232.379000772445*f[5]-134.1640786499874*f[4]+232.379000772445*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])-201.2461179749811*f[14]+116.1895003862225*f[13]-201.2461179749811*f[11]+116.1895003862225*f[10]-201.2461179749811*f[7]+116.1895003862225*f[6]+116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]+259.8076211353315*f[22]-150.0*f[21]+259.8076211353315*f[20]-150.0*f[19]+259.8076211353317*f[18]-150.0*f[17]-150.0*f[16]-232.379000772445*f[12]-232.379000772445*f[9]+134.1640786499874*f[8]-232.379000772445*f[5]+134.1640786499874*f[4]-232.379000772445*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[23]-207.8460969082653*f[22]+120.0*f[21]-207.8460969082653*f[20]+120.0*f[19]-207.8460969082653*f[18]+120.0*f[17]+120.0*f[16]-100.6230589874906*f[15]-100.6230589874906*f[14]+58.09475019311126*f[13]-100.6230589874906*f[11]+58.09475019311126*f[10]-100.6230589874906*f[7]+58.09475019311126*f[6]+58.09475019311126*f[3]); + fReflSurfXMu[1][0] = 0.01317615691736824*((25.98076211353316*f[23]+25.980762113533157*f[22]-15.0*f[21]+25.980762113533157*f[20]-15.000000000000002*f[19]+25.98076211353316*f[18]-15.000000000000002*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]+20.12461179749811*f[11]-11.61895003862225*f[10]+20.12461179749811*f[7]-11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])-25.980762113533157*f[22]+15.0*f[21]-25.980762113533157*f[20]+15.000000000000002*f[19]-25.98076211353316*f[18]+15.000000000000002*f[17]+15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]-13.416407864998739*f[8]+23.2379000772445*f[5]-13.416407864998739*f[4]+23.2379000772445*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]-23.2379000772445*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]-23.2379000772445*f[9]+13.416407864998739*f[8]-20.12461179749811*f[7]+11.61895003862225*f[6]-23.2379000772445*f[5]+13.416407864998739*f[4]+11.61895003862225*f[3]-23.2379000772445*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXMu[1][1] = 0.022097086912079594*((20.124611797498105*f[23]+20.12461179749811*f[22]-11.61895003862225*f[21]+20.12461179749811*f[20]-11.618950038622252*f[19]+20.124611797498105*f[18]-11.618950038622252*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]+13.856406460551018*f[14]-8.0*f[13]+13.856406460551018*f[11]-8.0*f[10]+13.856406460551018*f[7]-8.0*f[6]-8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])-13.416407864998739*f[22]+7.745966692414834*f[21]-13.416407864998739*f[20]+7.745966692414834*f[19]-13.416407864998737*f[18]+7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]-6.928203230275509*f[8]+12.0*f[5]-6.928203230275509*f[4]+12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]-6.708203932499369*f[22]+3.872983346207417*f[21]-6.708203932499369*f[20]+3.872983346207417*f[19]-6.7082039324993685*f[18]+3.872983346207417*f[17]+3.872983346207417*f[16]-13.856406460551018*f[15]-13.856406460551018*f[14]+8.0*f[13]-12.0*f[12]-13.856406460551018*f[11]+8.0*f[10]-12.0*f[9]+6.928203230275509*f[8]-13.856406460551018*f[7]+8.0*f[6]-12.0*f[5]+6.928203230275509*f[4]+8.0*f[3]-12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); + fReflSurfXMu[1][2] = 0.001473139127471973*((467.65371804359694*f[23]+467.65371804359665*f[22]-270.0*f[21]+467.65371804359665*f[20]-269.99999999999994*f[19]+467.65371804359694*f[18]-269.99999999999994*f[17]-270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]+301.86917696247167*f[14]-174.28425057933373*f[13]+301.86917696247167*f[11]-174.28425057933373*f[10]+301.86917696247167*f[7]-174.28425057933373*f[6]-174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])-519.6152422706631*f[22]+300.0*f[21]-519.6152422706631*f[20]+300.00000000000006*f[19]-519.6152422706633*f[18]+300.00000000000006*f[17]+300.0*f[16]+232.37900077244504*f[12]+232.37900077244504*f[9]-134.1640786499874*f[8]+232.37900077244504*f[5]-134.1640786499874*f[4]+232.37900077244504*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])-201.2461179749811*f[14]+116.18950038622252*f[13]-201.2461179749811*f[11]+116.18950038622252*f[10]-201.2461179749811*f[7]+116.18950038622252*f[6]+116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]+259.80762113533154*f[22]-150.0*f[21]+259.80762113533154*f[20]-150.00000000000003*f[19]+259.80762113533166*f[18]-150.00000000000003*f[17]-150.0*f[16]-232.37900077244504*f[12]-232.37900077244504*f[9]+134.1640786499874*f[8]-232.37900077244504*f[5]+134.1640786499874*f[4]-232.37900077244504*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826528*f[23]-207.84609690826525*f[22]+120.0*f[21]-207.84609690826525*f[20]+120.00000000000001*f[19]-207.84609690826528*f[18]+120.00000000000001*f[17]+120.0*f[16]-100.62305898749055*f[15]-100.62305898749055*f[14]+58.09475019311126*f[13]-100.62305898749055*f[11]+58.09475019311126*f[10]-100.62305898749055*f[7]+58.09475019311126*f[6]+58.09475019311126*f[3]); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXMu[1][1])/fReflSurfXMu[1][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[1][2]+5.0*fReflSurfXMu[1][0]))/fReflSurfXMu[1][0]; - if (fReflSurfXMu[1][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXMu[1][1])/fReflSurfXMu[1][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[1][2]+5.0*fReflSurfXMu[1][0]))/fReflSurfXMu[1][0]; + if (fReflSurfXMu[1][0]<0.) { fReflSurfXMu[1][0] = 0.0; fReflSurfXMu[1][1] = 0.0; fReflSurfXMu[1][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXMu[1][0] = 0.0; fReflSurfXMu[1][1] = 0.0; fReflSurfXMu[1][2] = 0.0; + } + } fReflSurfX[1][0] = 0.7071067811865475*(fReflSurfXMu[1][0]+fReflSurfXMu[0][0]); @@ -721,8 +773,6 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double fReflSurfX[1][4] = 0.7071067811865475*(fReflSurfXMu[1][2]+fReflSurfXMu[0][2]); fReflSurfX[1][5] = 0.7071067811865475*(fReflSurfXMu[1][2]-1.0*fReflSurfXMu[0][2]); - } - fRefl[0] = fReflSurfX[1][0]+fReflSurfX[0][0]; fRefl[1] = fReflSurfX[1][0]-1.0*fReflSurfX[0][0]; fRefl[2] = 0.0; @@ -740,16 +790,16 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double fRefl[14] = 0.0; fRefl[15] = 0.0; fRefl[16] = fReflSurfX[1][4]+fReflSurfX[0][4]; - fRefl[17] = 1.0*(fReflSurfX[1][4]-1.0*fReflSurfX[0][4]); + fRefl[17] = 1.0000000000000002*(fReflSurfX[1][4]-1.0*fReflSurfX[0][4]); fRefl[18] = 0.0; fRefl[19] = fReflSurfX[1][5]+fReflSurfX[0][5]; fRefl[20] = 0.0; - fRefl[21] = 1.0*(fReflSurfX[1][5]-1.0*fReflSurfX[0][5]); + fRefl[21] = 1.0000000000000002*(fReflSurfX[1][5]-1.0*fReflSurfX[0][5]); fRefl[22] = 0.0; fRefl[23] = 0.0; } -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double *vmap, double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl) +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double *vmap, double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl) { double vcutSq; double fReflSurfX[2][6] = {0.}; @@ -759,36 +809,34 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double double vparAbsSqLo = vmap[0]>0.? vparLo*vparLo : vparUp*vparUp; double vparAbsSqUp = vmap[0]>0.? vparUp*vparUp : vparLo*vparLo; + double wv; + double dv; + + double xBar, xSqBar; + double fReflSurfXMu[2][3] = {0.}; + // node (x)_0 - vcutSq = -0.5*(1.732050807568877*phiWall[3]-1.732050807568877*(phi[3]+phiWall[2])+1.732050807568877*phi[2]+phiWall[1]-1.0*(phi[1]+phiWall[0])+phi[0])*q2Dm; - if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) + wv = 0.5*vparUp+0.5*vparLo; + dv = vparUp-1.0*vparLo; - fReflSurfX[0][0] = 0.0; - fReflSurfX[0][1] = 0.0; - fReflSurfX[0][2] = 0.0; - fReflSurfX[0][3] = 0.0; - fReflSurfX[0][4] = 0.0; - fReflSurfX[0][5] = 0.0; + // node (mu)_0 + 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; - } else if (vcutSq > vparAbsSqUp) { // full reflection + if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) - fReflSurfX[0][0] = -0.5*(1.732050807568877*(f[5]-1.0*f[2])+f[1]-1.0*f[0]); - fReflSurfX[0][1] = -0.5*(1.732050807568877*(f[11]-1.0*f[7])+f[6]-1.0*f[3]); - fReflSurfX[0][2] = -0.5*(1.732050807568877*(f[12]-1.0*f[9])+f[8]-1.0*f[4]); - fReflSurfX[0][3] = -0.5*(1.732050807568877*(f[15]-1.0*f[14])+f[13]-1.0*f[10]); - fReflSurfX[0][4] = -0.03333333333333333*(25.98076211353316*f[20]+8.660254037844387*(1.732050807568877*f[17]-3.0*f[18])-15.0*f[16]); - fReflSurfX[0][5] = -0.03333333333333333*(25.98076211353316*f[23]+8.660254037844387*(1.732050807568877*f[21]-3.0*f[22])-15.0*f[19]); + fReflSurfXMu[0][0] = 0.0; + fReflSurfXMu[0][1] = 0.0; + fReflSurfXMu[0][2] = 0.0; - } else { // partial reflection + } else if (vcutSq > vparAbsSqUp) { // full reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; + fReflSurfXMu[0][0] = 0.3535533905932737*(1.7320508075688772*(f[12]-1.0*f[9])+f[8]-1.0*(1.7320508075688772*f[5]+f[4])+1.7320508075688772*f[2]-1.0*f[1]+f[0]); + fReflSurfXMu[0][1] = 0.3535533905932737*(1.7320508075688772*(f[15]-1.0*f[14])+f[13]-1.0*(1.7320508075688772*f[11]+f[10])+1.7320508075688772*f[7]-1.0*f[6]+f[3]); + fReflSurfXMu[0][2] = 0.023570226039551577*(25.98076211353316*f[23]+5.0*(-(5.196152422706631*f[22])+3.0*f[21]-5.196152422706631*f[20])+8.660254037844387*(-(1.7320508075688772*f[19])+3.0*f[18]-1.7320508075688772*f[17])+15.0*f[16]); - double xBar, xSqBar; - double fReflSurfXMu[2][3] = {0.}; + } else { // partial reflection - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -798,9 +846,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[0][0] = 0.01317615691736824*((25.98076211353316*f[23]-25.98076211353316*f[22]+15.0*f[21]-25.98076211353316*f[20]-15.0*f[19]+25.98076211353316*f[18]-15.0*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]-20.12461179749811*f[11]-11.61895003862225*f[10]+20.12461179749811*f[7]-11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])+25.98076211353316*f[22]-15.0*f[21]+25.98076211353316*f[20]+15.0*f[19]-25.98076211353316*f[18]+15.0*f[17]-15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]+13.41640786499874*f[8]-23.2379000772445*f[5]-13.41640786499874*f[4]+23.2379000772445*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]+23.2379000772445*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]-23.2379000772445*f[9]+13.41640786499874*f[8]-20.12461179749811*f[7]+11.61895003862225*f[6]-23.2379000772445*f[5]-13.41640786499874*f[4]-11.61895003862225*f[3]+23.2379000772445*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXMu[0][1] = 0.02209708691207959*((20.1246117974981*f[23]-20.12461179749811*f[22]+11.61895003862225*f[21]-20.12461179749811*f[20]-11.61895003862225*f[19]+20.1246117974981*f[18]-11.61895003862225*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]-13.85640646055102*f[14]+8.0*f[13]-13.85640646055102*f[11]-8.0*f[10]+13.85640646055102*f[7]-8.0*f[6]+8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])+13.41640786499874*f[22]-7.745966692414834*f[21]+13.41640786499874*f[20]+7.745966692414834*f[19]-13.41640786499874*f[18]+7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]+6.928203230275509*f[8]-12.0*f[5]-6.928203230275509*f[4]+12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]+6.708203932499369*f[22]-3.872983346207417*f[21]+6.708203932499369*f[20]+3.872983346207417*f[19]-6.708203932499369*f[18]+3.872983346207417*f[17]-3.872983346207417*f[16]+13.85640646055102*f[15]-13.85640646055102*f[14]+8.0*f[13]-12.0*f[12]-13.85640646055102*f[11]-8.0*f[10]+12.0*f[9]-6.928203230275509*f[8]+13.85640646055102*f[7]-8.0*f[6]+12.0*f[5]+6.928203230275509*f[4]+8.0*f[3]-12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXMu[0][2] = 0.001473139127471973*((467.6537180435969*f[23]-467.6537180435967*f[22]+270.0*f[21]-467.6537180435967*f[20]-269.9999999999999*f[19]+467.6537180435969*f[18]-269.9999999999999*f[17]+270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]-301.8691769624717*f[14]+174.2842505793337*f[13]-301.8691769624717*f[11]-174.2842505793337*f[10]+301.8691769624717*f[7]-174.2842505793337*f[6]+174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])+519.6152422706631*f[22]-300.0*f[21]+519.6152422706631*f[20]+300.0000000000001*f[19]-519.6152422706633*f[18]+300.0000000000001*f[17]-300.0*f[16]+232.379000772445*f[12]-232.379000772445*f[9]+134.1640786499874*f[8]-232.379000772445*f[5]-134.1640786499874*f[4]+232.379000772445*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])+201.2461179749811*f[14]-116.1895003862225*f[13]+201.2461179749811*f[11]+116.1895003862225*f[10]-201.2461179749811*f[7]+116.1895003862225*f[6]-116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]-259.8076211353315*f[22]+150.0*f[21]-259.8076211353315*f[20]-150.0*f[19]+259.8076211353317*f[18]-150.0*f[17]+150.0*f[16]-232.379000772445*f[12]+232.379000772445*f[9]-134.1640786499874*f[8]+232.379000772445*f[5]+134.1640786499874*f[4]-232.379000772445*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[23]-207.8460969082653*f[22]+120.0*f[21]-207.8460969082653*f[20]-120.0*f[19]+207.8460969082653*f[18]-120.0*f[17]+120.0*f[16]-100.6230589874906*f[15]+100.6230589874906*f[14]-58.09475019311126*f[13]+100.6230589874906*f[11]+58.09475019311126*f[10]-100.6230589874906*f[7]+58.09475019311126*f[6]-58.09475019311126*f[3]); + fReflSurfXMu[0][0] = 0.01317615691736824*((25.98076211353316*f[23]-25.980762113533157*f[22]+15.0*f[21]-25.980762113533157*f[20]-15.000000000000002*f[19]+25.98076211353316*f[18]-15.000000000000002*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]-20.12461179749811*f[11]-11.61895003862225*f[10]+20.12461179749811*f[7]-11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])+25.980762113533157*f[22]-15.0*f[21]+25.980762113533157*f[20]+15.000000000000002*f[19]-25.98076211353316*f[18]+15.000000000000002*f[17]-15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]+13.416407864998739*f[8]-23.2379000772445*f[5]-13.416407864998739*f[4]+23.2379000772445*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]+23.2379000772445*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]-23.2379000772445*f[9]+13.416407864998739*f[8]-20.12461179749811*f[7]+11.61895003862225*f[6]-23.2379000772445*f[5]-13.416407864998739*f[4]-11.61895003862225*f[3]+23.2379000772445*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXMu[0][1] = 0.022097086912079594*((20.124611797498105*f[23]-20.12461179749811*f[22]+11.61895003862225*f[21]-20.12461179749811*f[20]-11.618950038622252*f[19]+20.124611797498105*f[18]-11.618950038622252*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]-13.856406460551018*f[14]+8.0*f[13]-13.856406460551018*f[11]-8.0*f[10]+13.856406460551018*f[7]-8.0*f[6]+8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])+13.416407864998739*f[22]-7.745966692414834*f[21]+13.416407864998739*f[20]+7.745966692414834*f[19]-13.416407864998737*f[18]+7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]+6.928203230275509*f[8]-12.0*f[5]-6.928203230275509*f[4]+12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]+6.708203932499369*f[22]-3.872983346207417*f[21]+6.708203932499369*f[20]+3.872983346207417*f[19]-6.7082039324993685*f[18]+3.872983346207417*f[17]-3.872983346207417*f[16]+13.856406460551018*f[15]-13.856406460551018*f[14]+8.0*f[13]-12.0*f[12]-13.856406460551018*f[11]-8.0*f[10]+12.0*f[9]-6.928203230275509*f[8]+13.856406460551018*f[7]-8.0*f[6]+12.0*f[5]+6.928203230275509*f[4]+8.0*f[3]-12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); + fReflSurfXMu[0][2] = 0.001473139127471973*((467.65371804359694*f[23]-467.65371804359665*f[22]+270.0*f[21]-467.65371804359665*f[20]-269.99999999999994*f[19]+467.65371804359694*f[18]-269.99999999999994*f[17]+270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]-301.86917696247167*f[14]+174.28425057933373*f[13]-301.86917696247167*f[11]-174.28425057933373*f[10]+301.86917696247167*f[7]-174.28425057933373*f[6]+174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])+519.6152422706631*f[22]-300.0*f[21]+519.6152422706631*f[20]+300.00000000000006*f[19]-519.6152422706633*f[18]+300.00000000000006*f[17]-300.0*f[16]+232.37900077244504*f[12]-232.37900077244504*f[9]+134.1640786499874*f[8]-232.37900077244504*f[5]-134.1640786499874*f[4]+232.37900077244504*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])+201.2461179749811*f[14]-116.18950038622252*f[13]+201.2461179749811*f[11]+116.18950038622252*f[10]-201.2461179749811*f[7]+116.18950038622252*f[6]-116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]-259.80762113533154*f[22]+150.0*f[21]-259.80762113533154*f[20]-150.00000000000003*f[19]+259.80762113533166*f[18]-150.00000000000003*f[17]+150.0*f[16]-232.37900077244504*f[12]+232.37900077244504*f[9]-134.1640786499874*f[8]+232.37900077244504*f[5]+134.1640786499874*f[4]-232.37900077244504*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826528*f[23]-207.84609690826525*f[22]+120.0*f[21]-207.84609690826525*f[20]-120.00000000000001*f[19]+207.84609690826528*f[18]-120.00000000000001*f[17]+120.0*f[16]-100.62305898749055*f[15]+100.62305898749055*f[14]-58.09475019311126*f[13]+100.62305898749055*f[11]+58.09475019311126*f[10]-100.62305898749055*f[7]+58.09475019311126*f[6]-58.09475019311126*f[3]); } else { // vcut in logical space. @@ -811,27 +859,45 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[0][0] = -0.01317615691736824*((25.98076211353316*f[23]-25.98076211353316*f[22]+15.0*f[21]-25.98076211353316*f[20]-15.0*f[19]+25.98076211353316*f[18]-15.0*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]-20.12461179749811*f[11]-11.61895003862225*f[10]+20.12461179749811*f[7]-11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])+25.98076211353316*f[22]-15.0*f[21]+25.98076211353316*f[20]+15.0*f[19]-25.98076211353316*f[18]+15.0*f[17]-15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]+13.41640786499874*f[8]-23.2379000772445*f[5]-13.41640786499874*f[4]+23.2379000772445*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]-23.2379000772445*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]+23.2379000772445*f[9]-13.41640786499874*f[8]-20.12461179749811*f[7]+11.61895003862225*f[6]+23.2379000772445*f[5]+13.41640786499874*f[4]-11.61895003862225*f[3]-23.2379000772445*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXMu[0][1] = -0.02209708691207959*((20.1246117974981*f[23]-20.12461179749811*f[22]+11.61895003862225*f[21]-20.12461179749811*f[20]-11.61895003862225*f[19]+20.1246117974981*f[18]-11.61895003862225*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]-13.85640646055102*f[14]+8.0*f[13]-13.85640646055102*f[11]-8.0*f[10]+13.85640646055102*f[7]-8.0*f[6]+8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])+13.41640786499874*f[22]-7.745966692414834*f[21]+13.41640786499874*f[20]+7.745966692414834*f[19]-13.41640786499874*f[18]+7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]+6.928203230275509*f[8]-12.0*f[5]-6.928203230275509*f[4]+12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]+6.708203932499369*f[22]-3.872983346207417*f[21]+6.708203932499369*f[20]+3.872983346207417*f[19]-6.708203932499369*f[18]+3.872983346207417*f[17]-3.872983346207417*f[16]-13.85640646055102*f[15]+13.85640646055102*f[14]-8.0*f[13]-12.0*f[12]+13.85640646055102*f[11]+8.0*f[10]+12.0*f[9]-6.928203230275509*f[8]-13.85640646055102*f[7]+8.0*f[6]+12.0*f[5]+6.928203230275509*f[4]-8.0*f[3]-12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXMu[0][2] = -0.001473139127471973*((467.6537180435969*f[23]-467.6537180435967*f[22]+270.0*f[21]-467.6537180435967*f[20]-269.9999999999999*f[19]+467.6537180435969*f[18]-269.9999999999999*f[17]+270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]-301.8691769624717*f[14]+174.2842505793337*f[13]-301.8691769624717*f[11]-174.2842505793337*f[10]+301.8691769624717*f[7]-174.2842505793337*f[6]+174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])+519.6152422706631*f[22]-300.0*f[21]+519.6152422706631*f[20]+300.0000000000001*f[19]-519.6152422706633*f[18]+300.0000000000001*f[17]-300.0*f[16]+232.379000772445*f[12]-232.379000772445*f[9]+134.1640786499874*f[8]-232.379000772445*f[5]-134.1640786499874*f[4]+232.379000772445*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])+201.2461179749811*f[14]-116.1895003862225*f[13]+201.2461179749811*f[11]+116.1895003862225*f[10]-201.2461179749811*f[7]+116.1895003862225*f[6]-116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]-259.8076211353315*f[22]+150.0*f[21]-259.8076211353315*f[20]-150.0*f[19]+259.8076211353317*f[18]-150.0*f[17]+150.0*f[16]-232.379000772445*f[12]+232.379000772445*f[9]-134.1640786499874*f[8]+232.379000772445*f[5]+134.1640786499874*f[4]-232.379000772445*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[23]+207.8460969082653*f[22]-120.0*f[21]+207.8460969082653*f[20]+120.0*f[19]-207.8460969082653*f[18]+120.0*f[17]-120.0*f[16]-100.6230589874906*f[15]+100.6230589874906*f[14]-58.09475019311126*f[13]+100.6230589874906*f[11]+58.09475019311126*f[10]-100.6230589874906*f[7]+58.09475019311126*f[6]-58.09475019311126*f[3]); + fReflSurfXMu[0][0] = -(0.01317615691736824*((25.98076211353316*f[23]-25.980762113533157*f[22]+15.0*f[21]-25.980762113533157*f[20]-15.000000000000002*f[19]+25.98076211353316*f[18]-15.000000000000002*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]-20.12461179749811*f[11]-11.61895003862225*f[10]+20.12461179749811*f[7]-11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])+25.980762113533157*f[22]-15.0*f[21]+25.980762113533157*f[20]+15.000000000000002*f[19]-25.98076211353316*f[18]+15.000000000000002*f[17]-15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]+13.416407864998739*f[8]-23.2379000772445*f[5]-13.416407864998739*f[4]+23.2379000772445*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]-23.2379000772445*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]+23.2379000772445*f[9]-13.416407864998739*f[8]-20.12461179749811*f[7]+11.61895003862225*f[6]+23.2379000772445*f[5]+13.416407864998739*f[4]-11.61895003862225*f[3]-23.2379000772445*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXMu[0][1] = -(0.022097086912079594*((20.124611797498105*f[23]-20.12461179749811*f[22]+11.61895003862225*f[21]-20.12461179749811*f[20]-11.618950038622252*f[19]+20.124611797498105*f[18]-11.618950038622252*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]-13.856406460551018*f[14]+8.0*f[13]-13.856406460551018*f[11]-8.0*f[10]+13.856406460551018*f[7]-8.0*f[6]+8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])+13.416407864998739*f[22]-7.745966692414834*f[21]+13.416407864998739*f[20]+7.745966692414834*f[19]-13.416407864998737*f[18]+7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]+6.928203230275509*f[8]-12.0*f[5]-6.928203230275509*f[4]+12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]+6.708203932499369*f[22]-3.872983346207417*f[21]+6.708203932499369*f[20]+3.872983346207417*f[19]-6.7082039324993685*f[18]+3.872983346207417*f[17]-3.872983346207417*f[16]-13.856406460551018*f[15]+13.856406460551018*f[14]-8.0*f[13]-12.0*f[12]+13.856406460551018*f[11]+8.0*f[10]+12.0*f[9]-6.928203230275509*f[8]-13.856406460551018*f[7]+8.0*f[6]+12.0*f[5]+6.928203230275509*f[4]-8.0*f[3]-12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])); + fReflSurfXMu[0][2] = -(0.001473139127471973*((467.65371804359694*f[23]-467.65371804359665*f[22]+270.0*f[21]-467.65371804359665*f[20]-269.99999999999994*f[19]+467.65371804359694*f[18]-269.99999999999994*f[17]+270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]-301.86917696247167*f[14]+174.28425057933373*f[13]-301.86917696247167*f[11]-174.28425057933373*f[10]+301.86917696247167*f[7]-174.28425057933373*f[6]+174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])+519.6152422706631*f[22]-300.0*f[21]+519.6152422706631*f[20]+300.00000000000006*f[19]-519.6152422706633*f[18]+300.00000000000006*f[17]-300.0*f[16]+232.37900077244504*f[12]-232.37900077244504*f[9]+134.1640786499874*f[8]-232.37900077244504*f[5]-134.1640786499874*f[4]+232.37900077244504*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])+201.2461179749811*f[14]-116.18950038622252*f[13]+201.2461179749811*f[11]+116.18950038622252*f[10]-201.2461179749811*f[7]+116.18950038622252*f[6]-116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]-259.80762113533154*f[22]+150.0*f[21]-259.80762113533154*f[20]-150.00000000000003*f[19]+259.80762113533166*f[18]-150.00000000000003*f[17]+150.0*f[16]-232.37900077244504*f[12]+232.37900077244504*f[9]-134.1640786499874*f[8]+232.37900077244504*f[5]+134.1640786499874*f[4]-232.37900077244504*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826528*f[23]+207.84609690826525*f[22]-120.0*f[21]+207.84609690826525*f[20]+120.00000000000001*f[19]-207.84609690826528*f[18]+120.00000000000001*f[17]-120.0*f[16]-100.62305898749055*f[15]+100.62305898749055*f[14]-58.09475019311126*f[13]+100.62305898749055*f[11]+58.09475019311126*f[10]-100.62305898749055*f[7]+58.09475019311126*f[6]-58.09475019311126*f[3])); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXMu[0][1])/fReflSurfXMu[0][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[0][2]+5.0*fReflSurfXMu[0][0]))/fReflSurfXMu[0][0]; - if (fReflSurfXMu[0][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXMu[0][1])/fReflSurfXMu[0][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[0][2]+5.0*fReflSurfXMu[0][0]))/fReflSurfXMu[0][0]; + if (fReflSurfXMu[0][0]<0.) { fReflSurfXMu[0][0] = 0.0; fReflSurfXMu[0][1] = 0.0; fReflSurfXMu[0][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXMu[0][0] = 0.0; fReflSurfXMu[0][1] = 0.0; fReflSurfXMu[0][2] = 0.0; + } + } - // node (mu)_1 + // node (mu)_1 + 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) + + fReflSurfXMu[1][0] = 0.0; + fReflSurfXMu[1][1] = 0.0; + fReflSurfXMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfXMu[1][0] = -(0.3535533905932737*(1.7320508075688772*(f[12]-1.0*f[9])+f[8]+1.7320508075688772*f[5]-1.0*(f[4]+1.7320508075688772*f[2])+f[1]-1.0*f[0])); + fReflSurfXMu[1][1] = -(0.3535533905932737*(1.7320508075688772*(f[15]-1.0*f[14])+f[13]+1.7320508075688772*f[11]-1.0*(f[10]+1.7320508075688772*f[7])+f[6]-1.0*f[3])); + fReflSurfXMu[1][2] = -(0.023570226039551577*(25.98076211353316*f[23]+5.0*(-(5.196152422706631*f[22])+3.0*f[21]+5.196152422706631*f[20])+8.660254037844387*(1.7320508075688772*f[17]-1.0*(1.7320508075688772*f[19]+3.0*f[18]))-15.0*f[16])); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -841,9 +907,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[1][0] = -0.01317615691736824*((25.98076211353316*f[23]-25.98076211353316*f[22]+15.0*f[21]+25.98076211353316*f[20]-15.0*f[19]-25.98076211353316*f[18]+15.0*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]+20.12461179749811*f[11]-11.61895003862225*f[10]-20.12461179749811*f[7]+11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])+25.98076211353316*f[22]-15.0*f[21]-25.98076211353316*f[20]+15.0*f[19]+25.98076211353316*f[18]-15.0*f[17]+15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]+13.41640786499874*f[8]+23.2379000772445*f[5]-13.41640786499874*f[4]-23.2379000772445*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]+23.2379000772445*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]-23.2379000772445*f[9]+13.41640786499874*f[8]+20.12461179749811*f[7]-11.61895003862225*f[6]+23.2379000772445*f[5]-13.41640786499874*f[4]+11.61895003862225*f[3]-23.2379000772445*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXMu[1][1] = -0.02209708691207959*((20.1246117974981*f[23]-20.12461179749811*f[22]+11.61895003862225*f[21]+20.12461179749811*f[20]-11.61895003862225*f[19]-20.1246117974981*f[18]+11.61895003862225*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]-13.85640646055102*f[14]+8.0*f[13]+13.85640646055102*f[11]-8.0*f[10]-13.85640646055102*f[7]+8.0*f[6]-8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])+13.41640786499874*f[22]-7.745966692414834*f[21]-13.41640786499874*f[20]+7.745966692414834*f[19]+13.41640786499874*f[18]-7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]+6.928203230275509*f[8]+12.0*f[5]-6.928203230275509*f[4]-12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]+6.708203932499369*f[22]-3.872983346207417*f[21]-6.708203932499369*f[20]+3.872983346207417*f[19]+6.708203932499369*f[18]-3.872983346207417*f[17]+3.872983346207417*f[16]+13.85640646055102*f[15]-13.85640646055102*f[14]+8.0*f[13]-12.0*f[12]+13.85640646055102*f[11]-8.0*f[10]+12.0*f[9]-6.928203230275509*f[8]-13.85640646055102*f[7]+8.0*f[6]-12.0*f[5]+6.928203230275509*f[4]-8.0*f[3]+12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXMu[1][2] = -0.001473139127471973*((467.6537180435969*f[23]-467.6537180435967*f[22]+270.0*f[21]+467.6537180435967*f[20]-269.9999999999999*f[19]-467.6537180435969*f[18]+269.9999999999999*f[17]-270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]-301.8691769624717*f[14]+174.2842505793337*f[13]+301.8691769624717*f[11]-174.2842505793337*f[10]-301.8691769624717*f[7]+174.2842505793337*f[6]-174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])+519.6152422706631*f[22]-300.0*f[21]-519.6152422706631*f[20]+300.0000000000001*f[19]+519.6152422706633*f[18]-300.0000000000001*f[17]+300.0*f[16]+232.379000772445*f[12]-232.379000772445*f[9]+134.1640786499874*f[8]+232.379000772445*f[5]-134.1640786499874*f[4]-232.379000772445*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])+201.2461179749811*f[14]-116.1895003862225*f[13]-201.2461179749811*f[11]+116.1895003862225*f[10]+201.2461179749811*f[7]-116.1895003862225*f[6]+116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]-259.8076211353315*f[22]+150.0*f[21]+259.8076211353315*f[20]-150.0*f[19]-259.8076211353317*f[18]+150.0*f[17]-150.0*f[16]-232.379000772445*f[12]+232.379000772445*f[9]-134.1640786499874*f[8]-232.379000772445*f[5]+134.1640786499874*f[4]+232.379000772445*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[23]-207.8460969082653*f[22]+120.0*f[21]+207.8460969082653*f[20]-120.0*f[19]-207.8460969082653*f[18]+120.0*f[17]-120.0*f[16]-100.6230589874906*f[15]+100.6230589874906*f[14]-58.09475019311126*f[13]-100.6230589874906*f[11]+58.09475019311126*f[10]+100.6230589874906*f[7]-58.09475019311126*f[6]+58.09475019311126*f[3]); + fReflSurfXMu[1][0] = -(0.01317615691736824*((25.98076211353316*f[23]-25.980762113533157*f[22]+15.0*f[21]+25.980762113533157*f[20]-15.000000000000002*f[19]-25.98076211353316*f[18]+15.000000000000002*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]+20.12461179749811*f[11]-11.61895003862225*f[10]-20.12461179749811*f[7]+11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])+25.980762113533157*f[22]-15.0*f[21]-25.980762113533157*f[20]+15.000000000000002*f[19]+25.98076211353316*f[18]-15.000000000000002*f[17]+15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]+13.416407864998739*f[8]+23.2379000772445*f[5]-13.416407864998739*f[4]-23.2379000772445*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]+23.2379000772445*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]-23.2379000772445*f[9]+13.416407864998739*f[8]+20.12461179749811*f[7]-11.61895003862225*f[6]+23.2379000772445*f[5]-13.416407864998739*f[4]+11.61895003862225*f[3]-23.2379000772445*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXMu[1][1] = -(0.022097086912079594*((20.124611797498105*f[23]-20.12461179749811*f[22]+11.61895003862225*f[21]+20.12461179749811*f[20]-11.618950038622252*f[19]-20.124611797498105*f[18]+11.618950038622252*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]-13.856406460551018*f[14]+8.0*f[13]+13.856406460551018*f[11]-8.0*f[10]-13.856406460551018*f[7]+8.0*f[6]-8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])+13.416407864998739*f[22]-7.745966692414834*f[21]-13.416407864998739*f[20]+7.745966692414834*f[19]+13.416407864998737*f[18]-7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]+6.928203230275509*f[8]+12.0*f[5]-6.928203230275509*f[4]-12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]+6.708203932499369*f[22]-3.872983346207417*f[21]-6.708203932499369*f[20]+3.872983346207417*f[19]+6.7082039324993685*f[18]-3.872983346207417*f[17]+3.872983346207417*f[16]+13.856406460551018*f[15]-13.856406460551018*f[14]+8.0*f[13]-12.0*f[12]+13.856406460551018*f[11]-8.0*f[10]+12.0*f[9]-6.928203230275509*f[8]-13.856406460551018*f[7]+8.0*f[6]-12.0*f[5]+6.928203230275509*f[4]-8.0*f[3]+12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])); + fReflSurfXMu[1][2] = -(0.001473139127471973*((467.65371804359694*f[23]-467.65371804359665*f[22]+270.0*f[21]+467.65371804359665*f[20]-269.99999999999994*f[19]-467.65371804359694*f[18]+269.99999999999994*f[17]-270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]-301.86917696247167*f[14]+174.28425057933373*f[13]+301.86917696247167*f[11]-174.28425057933373*f[10]-301.86917696247167*f[7]+174.28425057933373*f[6]-174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])+519.6152422706631*f[22]-300.0*f[21]-519.6152422706631*f[20]+300.00000000000006*f[19]+519.6152422706633*f[18]-300.00000000000006*f[17]+300.0*f[16]+232.37900077244504*f[12]-232.37900077244504*f[9]+134.1640786499874*f[8]+232.37900077244504*f[5]-134.1640786499874*f[4]-232.37900077244504*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])+201.2461179749811*f[14]-116.18950038622252*f[13]-201.2461179749811*f[11]+116.18950038622252*f[10]+201.2461179749811*f[7]-116.18950038622252*f[6]+116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]-259.80762113533154*f[22]+150.0*f[21]+259.80762113533154*f[20]-150.00000000000003*f[19]-259.80762113533166*f[18]+150.00000000000003*f[17]-150.0*f[16]-232.37900077244504*f[12]+232.37900077244504*f[9]-134.1640786499874*f[8]-232.37900077244504*f[5]+134.1640786499874*f[4]+232.37900077244504*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826528*f[23]-207.84609690826525*f[22]+120.0*f[21]+207.84609690826525*f[20]-120.00000000000001*f[19]-207.84609690826528*f[18]+120.00000000000001*f[17]-120.0*f[16]-100.62305898749055*f[15]+100.62305898749055*f[14]-58.09475019311126*f[13]-100.62305898749055*f[11]+58.09475019311126*f[10]+100.62305898749055*f[7]-58.09475019311126*f[6]+58.09475019311126*f[3])); } else { // vcut in logical space. @@ -854,24 +920,26 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[1][0] = 0.01317615691736824*((25.98076211353316*f[23]-25.98076211353316*f[22]+15.0*f[21]+25.98076211353316*f[20]-15.0*f[19]-25.98076211353316*f[18]+15.0*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]+20.12461179749811*f[11]-11.61895003862225*f[10]-20.12461179749811*f[7]+11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])+25.98076211353316*f[22]-15.0*f[21]-25.98076211353316*f[20]+15.0*f[19]+25.98076211353316*f[18]-15.0*f[17]+15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]+13.41640786499874*f[8]+23.2379000772445*f[5]-13.41640786499874*f[4]-23.2379000772445*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]-23.2379000772445*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]+23.2379000772445*f[9]-13.41640786499874*f[8]+20.12461179749811*f[7]-11.61895003862225*f[6]-23.2379000772445*f[5]+13.41640786499874*f[4]+11.61895003862225*f[3]+23.2379000772445*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXMu[1][1] = 0.02209708691207959*((20.1246117974981*f[23]-20.12461179749811*f[22]+11.61895003862225*f[21]+20.12461179749811*f[20]-11.61895003862225*f[19]-20.1246117974981*f[18]+11.61895003862225*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]-13.85640646055102*f[14]+8.0*f[13]+13.85640646055102*f[11]-8.0*f[10]-13.85640646055102*f[7]+8.0*f[6]-8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])+13.41640786499874*f[22]-7.745966692414834*f[21]-13.41640786499874*f[20]+7.745966692414834*f[19]+13.41640786499874*f[18]-7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]+6.928203230275509*f[8]+12.0*f[5]-6.928203230275509*f[4]-12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]+6.708203932499369*f[22]-3.872983346207417*f[21]-6.708203932499369*f[20]+3.872983346207417*f[19]+6.708203932499369*f[18]-3.872983346207417*f[17]+3.872983346207417*f[16]-13.85640646055102*f[15]+13.85640646055102*f[14]-8.0*f[13]-12.0*f[12]-13.85640646055102*f[11]+8.0*f[10]+12.0*f[9]-6.928203230275509*f[8]+13.85640646055102*f[7]-8.0*f[6]-12.0*f[5]+6.928203230275509*f[4]+8.0*f[3]+12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXMu[1][2] = 0.001473139127471973*((467.6537180435969*f[23]-467.6537180435967*f[22]+270.0*f[21]+467.6537180435967*f[20]-269.9999999999999*f[19]-467.6537180435969*f[18]+269.9999999999999*f[17]-270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]-301.8691769624717*f[14]+174.2842505793337*f[13]+301.8691769624717*f[11]-174.2842505793337*f[10]-301.8691769624717*f[7]+174.2842505793337*f[6]-174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])+519.6152422706631*f[22]-300.0*f[21]-519.6152422706631*f[20]+300.0000000000001*f[19]+519.6152422706633*f[18]-300.0000000000001*f[17]+300.0*f[16]+232.379000772445*f[12]-232.379000772445*f[9]+134.1640786499874*f[8]+232.379000772445*f[5]-134.1640786499874*f[4]-232.379000772445*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])+201.2461179749811*f[14]-116.1895003862225*f[13]-201.2461179749811*f[11]+116.1895003862225*f[10]+201.2461179749811*f[7]-116.1895003862225*f[6]+116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]-259.8076211353315*f[22]+150.0*f[21]+259.8076211353315*f[20]-150.0*f[19]-259.8076211353317*f[18]+150.0*f[17]-150.0*f[16]-232.379000772445*f[12]+232.379000772445*f[9]-134.1640786499874*f[8]-232.379000772445*f[5]+134.1640786499874*f[4]+232.379000772445*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[23]+207.8460969082653*f[22]-120.0*f[21]-207.8460969082653*f[20]+120.0*f[19]+207.8460969082653*f[18]-120.0*f[17]+120.0*f[16]-100.6230589874906*f[15]+100.6230589874906*f[14]-58.09475019311126*f[13]-100.6230589874906*f[11]+58.09475019311126*f[10]+100.6230589874906*f[7]-58.09475019311126*f[6]+58.09475019311126*f[3]); + fReflSurfXMu[1][0] = 0.01317615691736824*((25.98076211353316*f[23]-25.980762113533157*f[22]+15.0*f[21]+25.980762113533157*f[20]-15.000000000000002*f[19]-25.98076211353316*f[18]+15.000000000000002*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]-20.12461179749811*f[14]+11.61895003862225*f[13]+20.12461179749811*f[11]-11.61895003862225*f[10]-20.12461179749811*f[7]+11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])+25.980762113533157*f[22]-15.0*f[21]-25.980762113533157*f[20]+15.000000000000002*f[19]+25.98076211353316*f[18]-15.000000000000002*f[17]+15.0*f[16]+23.2379000772445*f[12]-23.2379000772445*f[9]+13.416407864998739*f[8]+23.2379000772445*f[5]-13.416407864998739*f[4]-23.2379000772445*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]+20.12461179749811*f[14]-11.61895003862225*f[13]-23.2379000772445*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]+23.2379000772445*f[9]-13.416407864998739*f[8]+20.12461179749811*f[7]-11.61895003862225*f[6]-23.2379000772445*f[5]+13.416407864998739*f[4]+11.61895003862225*f[3]+23.2379000772445*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXMu[1][1] = 0.022097086912079594*((20.124611797498105*f[23]-20.12461179749811*f[22]+11.61895003862225*f[21]+20.12461179749811*f[20]-11.618950038622252*f[19]-20.124611797498105*f[18]+11.618950038622252*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]-13.856406460551018*f[14]+8.0*f[13]+13.856406460551018*f[11]-8.0*f[10]-13.856406460551018*f[7]+8.0*f[6]-8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])+13.416407864998739*f[22]-7.745966692414834*f[21]-13.416407864998739*f[20]+7.745966692414834*f[19]+13.416407864998737*f[18]-7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]-12.0*f[9]+6.928203230275509*f[8]+12.0*f[5]-6.928203230275509*f[4]-12.0*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]+6.708203932499369*f[22]-3.872983346207417*f[21]-6.708203932499369*f[20]+3.872983346207417*f[19]+6.7082039324993685*f[18]-3.872983346207417*f[17]+3.872983346207417*f[16]-13.856406460551018*f[15]+13.856406460551018*f[14]-8.0*f[13]-12.0*f[12]-13.856406460551018*f[11]+8.0*f[10]+12.0*f[9]-6.928203230275509*f[8]+13.856406460551018*f[7]-8.0*f[6]-12.0*f[5]+6.928203230275509*f[4]+8.0*f[3]+12.0*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); + fReflSurfXMu[1][2] = 0.001473139127471973*((467.65371804359694*f[23]-467.65371804359665*f[22]+270.0*f[21]+467.65371804359665*f[20]-269.99999999999994*f[19]-467.65371804359694*f[18]+269.99999999999994*f[17]-270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]-301.86917696247167*f[14]+174.28425057933373*f[13]+301.86917696247167*f[11]-174.28425057933373*f[10]-301.86917696247167*f[7]+174.28425057933373*f[6]-174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])+519.6152422706631*f[22]-300.0*f[21]-519.6152422706631*f[20]+300.00000000000006*f[19]+519.6152422706633*f[18]-300.00000000000006*f[17]+300.0*f[16]+232.37900077244504*f[12]-232.37900077244504*f[9]+134.1640786499874*f[8]+232.37900077244504*f[5]-134.1640786499874*f[4]-232.37900077244504*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])+201.2461179749811*f[14]-116.18950038622252*f[13]-201.2461179749811*f[11]+116.18950038622252*f[10]+201.2461179749811*f[7]-116.18950038622252*f[6]+116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]-259.80762113533154*f[22]+150.0*f[21]+259.80762113533154*f[20]-150.00000000000003*f[19]-259.80762113533166*f[18]+150.00000000000003*f[17]-150.0*f[16]-232.37900077244504*f[12]+232.37900077244504*f[9]-134.1640786499874*f[8]-232.37900077244504*f[5]+134.1640786499874*f[4]+232.37900077244504*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826528*f[23]+207.84609690826525*f[22]-120.0*f[21]-207.84609690826525*f[20]+120.00000000000001*f[19]+207.84609690826528*f[18]-120.00000000000001*f[17]+120.0*f[16]-100.62305898749055*f[15]+100.62305898749055*f[14]-58.09475019311126*f[13]-100.62305898749055*f[11]+58.09475019311126*f[10]+100.62305898749055*f[7]-58.09475019311126*f[6]+58.09475019311126*f[3]); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXMu[1][1])/fReflSurfXMu[1][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[1][2]+5.0*fReflSurfXMu[1][0]))/fReflSurfXMu[1][0]; - if (fReflSurfXMu[1][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXMu[1][1])/fReflSurfXMu[1][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[1][2]+5.0*fReflSurfXMu[1][0]))/fReflSurfXMu[1][0]; + if (fReflSurfXMu[1][0]<0.) { fReflSurfXMu[1][0] = 0.0; fReflSurfXMu[1][1] = 0.0; fReflSurfXMu[1][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXMu[1][0] = 0.0; fReflSurfXMu[1][1] = 0.0; fReflSurfXMu[1][2] = 0.0; + } + } fReflSurfX[0][0] = 0.7071067811865475*(fReflSurfXMu[1][0]+fReflSurfXMu[0][0]); @@ -881,38 +949,28 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double fReflSurfX[0][4] = 0.7071067811865475*(fReflSurfXMu[1][2]+fReflSurfXMu[0][2]); fReflSurfX[0][5] = 0.7071067811865475*(fReflSurfXMu[1][2]-1.0*fReflSurfXMu[0][2]); - } - // node (x)_1 - vcutSq = 0.5*(1.732050807568877*phiWall[3]-1.732050807568877*phi[3]+1.732050807568877*phiWall[2]-1.732050807568877*phi[2]+phiWall[1]-1.0*phi[1]+phiWall[0]-1.0*phi[0])*q2Dm; - if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) + wv = 0.5*vparUp+0.5*vparLo; + dv = vparUp-1.0*vparLo; - fReflSurfX[1][0] = 0.0; - fReflSurfX[1][1] = 0.0; - fReflSurfX[1][2] = 0.0; - fReflSurfX[1][3] = 0.0; - fReflSurfX[1][4] = 0.0; - fReflSurfX[1][5] = 0.0; + // node (mu)_0 + 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; - } else if (vcutSq > vparAbsSqUp) { // full reflection + if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) - fReflSurfX[1][0] = 0.5*(1.732050807568877*(f[5]+f[2])+f[1]+f[0]); - fReflSurfX[1][1] = 0.5*(1.732050807568877*(f[11]+f[7])+f[6]+f[3]); - fReflSurfX[1][2] = 0.5*(1.732050807568877*(f[12]+f[9])+f[8]+f[4]); - fReflSurfX[1][3] = 0.5*(1.732050807568877*(f[15]+f[14])+f[13]+f[10]); - fReflSurfX[1][4] = 0.03333333333333333*(25.98076211353316*f[20]+8.660254037844387*(3.0*f[18]+1.732050807568877*f[17])+15.0*f[16]); - fReflSurfX[1][5] = 0.03333333333333333*(25.98076211353316*f[23]+8.660254037844387*(3.0*f[22]+1.732050807568877*f[21])+15.0*f[19]); + fReflSurfXMu[0][0] = 0.0; + fReflSurfXMu[0][1] = 0.0; + fReflSurfXMu[0][2] = 0.0; - } else { // partial reflection + } else if (vcutSq > vparAbsSqUp) { // full reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; + fReflSurfXMu[0][0] = -(0.3535533905932737*(1.7320508075688772*(f[12]+f[9])+f[8]-1.7320508075688772*f[5]+f[4]-1.0*(1.7320508075688772*f[2]+f[1]+f[0]))); + fReflSurfXMu[0][1] = -(0.3535533905932737*(1.7320508075688772*(f[15]+f[14])+f[13]-1.7320508075688772*f[11]+f[10]-1.0*(1.7320508075688772*f[7]+f[6]+f[3]))); + fReflSurfXMu[0][2] = -(0.023570226039551577*(25.98076211353316*f[23]+5.0*(5.196152422706631*f[22]+3.0*f[21])+1.7320508075688772*(8.660254037844387*f[19]-15.0*f[20])-1.0*(8.660254037844387*(3.0*f[18]+1.7320508075688772*f[17])+15.0*f[16]))); - double xBar, xSqBar; - double fReflSurfXMu[2][3] = {0.}; + } else { // partial reflection - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -922,9 +980,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[0][0] = -0.01317615691736824*((25.98076211353316*f[23]+25.98076211353316*f[22]+15.0*f[21]-25.98076211353316*f[20]+15.0*f[19]-25.98076211353316*f[18]-15.0*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]-20.12461179749811*f[11]+11.61895003862225*f[10]-20.12461179749811*f[7]-11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])-25.98076211353316*f[22]-15.0*f[21]+25.98076211353316*f[20]-15.0*f[19]+25.98076211353316*f[18]+15.0*f[17]+15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]+13.41640786499874*f[8]-23.2379000772445*f[5]+13.41640786499874*f[4]-23.2379000772445*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]+23.2379000772445*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]+23.2379000772445*f[9]+13.41640786499874*f[8]+20.12461179749811*f[7]+11.61895003862225*f[6]-23.2379000772445*f[5]+13.41640786499874*f[4]+11.61895003862225*f[3]-23.2379000772445*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXMu[0][1] = -0.02209708691207959*((20.1246117974981*f[23]+20.12461179749811*f[22]+11.61895003862225*f[21]-20.12461179749811*f[20]+11.61895003862225*f[19]-20.1246117974981*f[18]-11.61895003862225*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]+13.85640646055102*f[14]+8.0*f[13]-13.85640646055102*f[11]+8.0*f[10]-13.85640646055102*f[7]-8.0*f[6]-8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])-13.41640786499874*f[22]-7.745966692414834*f[21]+13.41640786499874*f[20]-7.745966692414834*f[19]+13.41640786499874*f[18]+7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]+6.928203230275509*f[8]-12.0*f[5]+6.928203230275509*f[4]-12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]-6.708203932499369*f[22]-3.872983346207417*f[21]+6.708203932499369*f[20]-3.872983346207417*f[19]+6.708203932499369*f[18]+3.872983346207417*f[17]+3.872983346207417*f[16]+13.85640646055102*f[15]+13.85640646055102*f[14]+8.0*f[13]-12.0*f[12]-13.85640646055102*f[11]+8.0*f[10]-12.0*f[9]-6.928203230275509*f[8]-13.85640646055102*f[7]-8.0*f[6]+12.0*f[5]-6.928203230275509*f[4]-8.0*f[3]+12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXMu[0][2] = -0.001473139127471973*((467.6537180435969*f[23]+467.6537180435967*f[22]+270.0*f[21]-467.6537180435967*f[20]+269.9999999999999*f[19]-467.6537180435969*f[18]-269.9999999999999*f[17]-270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]+301.8691769624717*f[14]+174.2842505793337*f[13]-301.8691769624717*f[11]+174.2842505793337*f[10]-301.8691769624717*f[7]-174.2842505793337*f[6]-174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])-519.6152422706631*f[22]-300.0*f[21]+519.6152422706631*f[20]-300.0000000000001*f[19]+519.6152422706633*f[18]+300.0000000000001*f[17]+300.0*f[16]+232.379000772445*f[12]+232.379000772445*f[9]+134.1640786499874*f[8]-232.379000772445*f[5]+134.1640786499874*f[4]-232.379000772445*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])-201.2461179749811*f[14]-116.1895003862225*f[13]+201.2461179749811*f[11]-116.1895003862225*f[10]+201.2461179749811*f[7]+116.1895003862225*f[6]+116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]+259.8076211353315*f[22]+150.0*f[21]-259.8076211353315*f[20]+150.0*f[19]-259.8076211353317*f[18]-150.0*f[17]-150.0*f[16]-232.379000772445*f[12]-232.379000772445*f[9]-134.1640786499874*f[8]+232.379000772445*f[5]-134.1640786499874*f[4]+232.379000772445*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[23]+207.8460969082653*f[22]+120.0*f[21]-207.8460969082653*f[20]+120.0*f[19]-207.8460969082653*f[18]-120.0*f[17]-120.0*f[16]-100.6230589874906*f[15]-100.6230589874906*f[14]-58.09475019311126*f[13]+100.6230589874906*f[11]-58.09475019311126*f[10]+100.6230589874906*f[7]+58.09475019311126*f[6]+58.09475019311126*f[3]); + fReflSurfXMu[0][0] = -(0.01317615691736824*((25.98076211353316*f[23]+25.980762113533157*f[22]+15.0*f[21]-25.980762113533157*f[20]+15.000000000000002*f[19]-25.98076211353316*f[18]-15.000000000000002*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]-20.12461179749811*f[11]+11.61895003862225*f[10]-20.12461179749811*f[7]-11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])-25.980762113533157*f[22]-15.0*f[21]+25.980762113533157*f[20]-15.000000000000002*f[19]+25.98076211353316*f[18]+15.000000000000002*f[17]+15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]+13.416407864998739*f[8]-23.2379000772445*f[5]+13.416407864998739*f[4]-23.2379000772445*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]+23.2379000772445*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]+23.2379000772445*f[9]+13.416407864998739*f[8]+20.12461179749811*f[7]+11.61895003862225*f[6]-23.2379000772445*f[5]+13.416407864998739*f[4]+11.61895003862225*f[3]-23.2379000772445*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXMu[0][1] = -(0.022097086912079594*((20.124611797498105*f[23]+20.12461179749811*f[22]+11.61895003862225*f[21]-20.12461179749811*f[20]+11.618950038622252*f[19]-20.124611797498105*f[18]-11.618950038622252*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]+13.856406460551018*f[14]+8.0*f[13]-13.856406460551018*f[11]+8.0*f[10]-13.856406460551018*f[7]-8.0*f[6]-8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])-13.416407864998739*f[22]-7.745966692414834*f[21]+13.416407864998739*f[20]-7.745966692414834*f[19]+13.416407864998737*f[18]+7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]+6.928203230275509*f[8]-12.0*f[5]+6.928203230275509*f[4]-12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]-6.708203932499369*f[22]-3.872983346207417*f[21]+6.708203932499369*f[20]-3.872983346207417*f[19]+6.7082039324993685*f[18]+3.872983346207417*f[17]+3.872983346207417*f[16]+13.856406460551018*f[15]+13.856406460551018*f[14]+8.0*f[13]-12.0*f[12]-13.856406460551018*f[11]+8.0*f[10]-12.0*f[9]-6.928203230275509*f[8]-13.856406460551018*f[7]-8.0*f[6]+12.0*f[5]-6.928203230275509*f[4]-8.0*f[3]+12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])); + fReflSurfXMu[0][2] = -(0.001473139127471973*((467.65371804359694*f[23]+467.65371804359665*f[22]+270.0*f[21]-467.65371804359665*f[20]+269.99999999999994*f[19]-467.65371804359694*f[18]-269.99999999999994*f[17]-270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]+301.86917696247167*f[14]+174.28425057933373*f[13]-301.86917696247167*f[11]+174.28425057933373*f[10]-301.86917696247167*f[7]-174.28425057933373*f[6]-174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])-519.6152422706631*f[22]-300.0*f[21]+519.6152422706631*f[20]-300.00000000000006*f[19]+519.6152422706633*f[18]+300.00000000000006*f[17]+300.0*f[16]+232.37900077244504*f[12]+232.37900077244504*f[9]+134.1640786499874*f[8]-232.37900077244504*f[5]+134.1640786499874*f[4]-232.37900077244504*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])-201.2461179749811*f[14]-116.18950038622252*f[13]+201.2461179749811*f[11]-116.18950038622252*f[10]+201.2461179749811*f[7]+116.18950038622252*f[6]+116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]+259.80762113533154*f[22]+150.0*f[21]-259.80762113533154*f[20]+150.00000000000003*f[19]-259.80762113533166*f[18]-150.00000000000003*f[17]-150.0*f[16]-232.37900077244504*f[12]-232.37900077244504*f[9]-134.1640786499874*f[8]+232.37900077244504*f[5]-134.1640786499874*f[4]+232.37900077244504*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826528*f[23]+207.84609690826525*f[22]+120.0*f[21]-207.84609690826525*f[20]+120.00000000000001*f[19]-207.84609690826528*f[18]-120.00000000000001*f[17]-120.0*f[16]-100.62305898749055*f[15]-100.62305898749055*f[14]-58.09475019311126*f[13]+100.62305898749055*f[11]-58.09475019311126*f[10]+100.62305898749055*f[7]+58.09475019311126*f[6]+58.09475019311126*f[3])); } else { // vcut in logical space. @@ -935,27 +993,45 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[0][0] = 0.01317615691736824*((25.98076211353316*f[23]+25.98076211353316*f[22]+15.0*f[21]-25.98076211353316*f[20]+15.0*f[19]-25.98076211353316*f[18]-15.0*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]-20.12461179749811*f[11]+11.61895003862225*f[10]-20.12461179749811*f[7]-11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])-25.98076211353316*f[22]-15.0*f[21]+25.98076211353316*f[20]-15.0*f[19]+25.98076211353316*f[18]+15.0*f[17]+15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]+13.41640786499874*f[8]-23.2379000772445*f[5]+13.41640786499874*f[4]-23.2379000772445*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]-23.2379000772445*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]-23.2379000772445*f[9]-13.41640786499874*f[8]+20.12461179749811*f[7]+11.61895003862225*f[6]+23.2379000772445*f[5]-13.41640786499874*f[4]+11.61895003862225*f[3]+23.2379000772445*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXMu[0][1] = 0.02209708691207959*((20.1246117974981*f[23]+20.12461179749811*f[22]+11.61895003862225*f[21]-20.12461179749811*f[20]+11.61895003862225*f[19]-20.1246117974981*f[18]-11.61895003862225*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]+13.85640646055102*f[14]+8.0*f[13]-13.85640646055102*f[11]+8.0*f[10]-13.85640646055102*f[7]-8.0*f[6]-8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])-13.41640786499874*f[22]-7.745966692414834*f[21]+13.41640786499874*f[20]-7.745966692414834*f[19]+13.41640786499874*f[18]+7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]+6.928203230275509*f[8]-12.0*f[5]+6.928203230275509*f[4]-12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]-6.708203932499369*f[22]-3.872983346207417*f[21]+6.708203932499369*f[20]-3.872983346207417*f[19]+6.708203932499369*f[18]+3.872983346207417*f[17]+3.872983346207417*f[16]-13.85640646055102*f[15]-13.85640646055102*f[14]-8.0*f[13]-12.0*f[12]+13.85640646055102*f[11]-8.0*f[10]-12.0*f[9]-6.928203230275509*f[8]+13.85640646055102*f[7]+8.0*f[6]+12.0*f[5]-6.928203230275509*f[4]+8.0*f[3]+12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXMu[0][2] = 0.001473139127471973*((467.6537180435969*f[23]+467.6537180435967*f[22]+270.0*f[21]-467.6537180435967*f[20]+269.9999999999999*f[19]-467.6537180435969*f[18]-269.9999999999999*f[17]-270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]+301.8691769624717*f[14]+174.2842505793337*f[13]-301.8691769624717*f[11]+174.2842505793337*f[10]-301.8691769624717*f[7]-174.2842505793337*f[6]-174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])-519.6152422706631*f[22]-300.0*f[21]+519.6152422706631*f[20]-300.0000000000001*f[19]+519.6152422706633*f[18]+300.0000000000001*f[17]+300.0*f[16]+232.379000772445*f[12]+232.379000772445*f[9]+134.1640786499874*f[8]-232.379000772445*f[5]+134.1640786499874*f[4]-232.379000772445*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])-201.2461179749811*f[14]-116.1895003862225*f[13]+201.2461179749811*f[11]-116.1895003862225*f[10]+201.2461179749811*f[7]+116.1895003862225*f[6]+116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]+259.8076211353315*f[22]+150.0*f[21]-259.8076211353315*f[20]+150.0*f[19]-259.8076211353317*f[18]-150.0*f[17]-150.0*f[16]-232.379000772445*f[12]-232.379000772445*f[9]-134.1640786499874*f[8]+232.379000772445*f[5]-134.1640786499874*f[4]+232.379000772445*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[23]-207.8460969082653*f[22]-120.0*f[21]+207.8460969082653*f[20]-120.0*f[19]+207.8460969082653*f[18]+120.0*f[17]+120.0*f[16]-100.6230589874906*f[15]-100.6230589874906*f[14]-58.09475019311126*f[13]+100.6230589874906*f[11]-58.09475019311126*f[10]+100.6230589874906*f[7]+58.09475019311126*f[6]+58.09475019311126*f[3]); + fReflSurfXMu[0][0] = 0.01317615691736824*((25.98076211353316*f[23]+25.980762113533157*f[22]+15.0*f[21]-25.980762113533157*f[20]+15.000000000000002*f[19]-25.98076211353316*f[18]-15.000000000000002*f[17]-15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]-20.12461179749811*f[11]+11.61895003862225*f[10]-20.12461179749811*f[7]-11.61895003862225*f[6]-11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])-25.980762113533157*f[22]-15.0*f[21]+25.980762113533157*f[20]-15.000000000000002*f[19]+25.98076211353316*f[18]+15.000000000000002*f[17]+15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]+13.416407864998739*f[8]-23.2379000772445*f[5]+13.416407864998739*f[4]-23.2379000772445*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]-23.2379000772445*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]-23.2379000772445*f[9]-13.416407864998739*f[8]+20.12461179749811*f[7]+11.61895003862225*f[6]+23.2379000772445*f[5]-13.416407864998739*f[4]+11.61895003862225*f[3]+23.2379000772445*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXMu[0][1] = 0.022097086912079594*((20.124611797498105*f[23]+20.12461179749811*f[22]+11.61895003862225*f[21]-20.12461179749811*f[20]+11.618950038622252*f[19]-20.124611797498105*f[18]-11.618950038622252*f[17]-11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]+13.856406460551018*f[14]+8.0*f[13]-13.856406460551018*f[11]+8.0*f[10]-13.856406460551018*f[7]-8.0*f[6]-8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])-13.416407864998739*f[22]-7.745966692414834*f[21]+13.416407864998739*f[20]-7.745966692414834*f[19]+13.416407864998737*f[18]+7.745966692414834*f[17]+7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]+6.928203230275509*f[8]-12.0*f[5]+6.928203230275509*f[4]-12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]-6.708203932499369*f[22]-3.872983346207417*f[21]+6.708203932499369*f[20]-3.872983346207417*f[19]+6.7082039324993685*f[18]+3.872983346207417*f[17]+3.872983346207417*f[16]-13.856406460551018*f[15]-13.856406460551018*f[14]-8.0*f[13]-12.0*f[12]+13.856406460551018*f[11]-8.0*f[10]-12.0*f[9]-6.928203230275509*f[8]+13.856406460551018*f[7]+8.0*f[6]+12.0*f[5]-6.928203230275509*f[4]+8.0*f[3]+12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); + fReflSurfXMu[0][2] = 0.001473139127471973*((467.65371804359694*f[23]+467.65371804359665*f[22]+270.0*f[21]-467.65371804359665*f[20]+269.99999999999994*f[19]-467.65371804359694*f[18]-269.99999999999994*f[17]-270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]+301.86917696247167*f[14]+174.28425057933373*f[13]-301.86917696247167*f[11]+174.28425057933373*f[10]-301.86917696247167*f[7]-174.28425057933373*f[6]-174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])-519.6152422706631*f[22]-300.0*f[21]+519.6152422706631*f[20]-300.00000000000006*f[19]+519.6152422706633*f[18]+300.00000000000006*f[17]+300.0*f[16]+232.37900077244504*f[12]+232.37900077244504*f[9]+134.1640786499874*f[8]-232.37900077244504*f[5]+134.1640786499874*f[4]-232.37900077244504*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])-201.2461179749811*f[14]-116.18950038622252*f[13]+201.2461179749811*f[11]-116.18950038622252*f[10]+201.2461179749811*f[7]+116.18950038622252*f[6]+116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]+259.80762113533154*f[22]+150.0*f[21]-259.80762113533154*f[20]+150.00000000000003*f[19]-259.80762113533166*f[18]-150.00000000000003*f[17]-150.0*f[16]-232.37900077244504*f[12]-232.37900077244504*f[9]-134.1640786499874*f[8]+232.37900077244504*f[5]-134.1640786499874*f[4]+232.37900077244504*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826528*f[23]-207.84609690826525*f[22]-120.0*f[21]+207.84609690826525*f[20]-120.00000000000001*f[19]+207.84609690826528*f[18]+120.00000000000001*f[17]+120.0*f[16]-100.62305898749055*f[15]-100.62305898749055*f[14]-58.09475019311126*f[13]+100.62305898749055*f[11]-58.09475019311126*f[10]+100.62305898749055*f[7]+58.09475019311126*f[6]+58.09475019311126*f[3]); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXMu[0][1])/fReflSurfXMu[0][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[0][2]+5.0*fReflSurfXMu[0][0]))/fReflSurfXMu[0][0]; - if (fReflSurfXMu[0][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXMu[0][1])/fReflSurfXMu[0][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[0][2]+5.0*fReflSurfXMu[0][0]))/fReflSurfXMu[0][0]; + if (fReflSurfXMu[0][0]<0.) { fReflSurfXMu[0][0] = 0.0; fReflSurfXMu[0][1] = 0.0; fReflSurfXMu[0][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXMu[0][0] = 0.0; fReflSurfXMu[0][1] = 0.0; fReflSurfXMu[0][2] = 0.0; + } + } - // node (mu)_1 + // node (mu)_1 + 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) + + fReflSurfXMu[1][0] = 0.0; + fReflSurfXMu[1][1] = 0.0; + fReflSurfXMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfXMu[1][0] = 0.3535533905932737*(1.7320508075688772*(f[12]+f[9])+f[8]+1.7320508075688772*f[5]+f[4]+1.7320508075688772*f[2]+f[1]+f[0]); + fReflSurfXMu[1][1] = 0.3535533905932737*(1.7320508075688772*(f[15]+f[14])+f[13]+1.7320508075688772*f[11]+f[10]+1.7320508075688772*f[7]+f[6]+f[3]); + fReflSurfXMu[1][2] = 0.023570226039551577*(25.98076211353316*f[23]+5.0*(5.196152422706631*f[22]+3.0*f[21]+5.196152422706631*f[20])+8.660254037844387*(1.7320508075688772*f[19]+3.0*f[18]+1.7320508075688772*f[17])+15.0*f[16]); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -965,9 +1041,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[1][0] = 0.01317615691736824*((25.98076211353316*f[23]+25.98076211353316*f[22]+15.0*f[21]+25.98076211353316*f[20]+15.0*f[19]+25.98076211353316*f[18]+15.0*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]+20.12461179749811*f[11]+11.61895003862225*f[10]+20.12461179749811*f[7]+11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])-25.98076211353316*f[22]-15.0*f[21]-25.98076211353316*f[20]-15.0*f[19]-25.98076211353316*f[18]-15.0*f[17]-15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]+13.41640786499874*f[8]+23.2379000772445*f[5]+13.41640786499874*f[4]+23.2379000772445*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]+23.2379000772445*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]+23.2379000772445*f[9]+13.41640786499874*f[8]-20.12461179749811*f[7]-11.61895003862225*f[6]+23.2379000772445*f[5]+13.41640786499874*f[4]-11.61895003862225*f[3]+23.2379000772445*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXMu[1][1] = 0.02209708691207959*((20.1246117974981*f[23]+20.12461179749811*f[22]+11.61895003862225*f[21]+20.12461179749811*f[20]+11.61895003862225*f[19]+20.1246117974981*f[18]+11.61895003862225*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]+13.85640646055102*f[14]+8.0*f[13]+13.85640646055102*f[11]+8.0*f[10]+13.85640646055102*f[7]+8.0*f[6]+8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])-13.41640786499874*f[22]-7.745966692414834*f[21]-13.41640786499874*f[20]-7.745966692414834*f[19]-13.41640786499874*f[18]-7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]+6.928203230275509*f[8]+12.0*f[5]+6.928203230275509*f[4]+12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]-6.708203932499369*f[22]-3.872983346207417*f[21]-6.708203932499369*f[20]-3.872983346207417*f[19]-6.708203932499369*f[18]-3.872983346207417*f[17]-3.872983346207417*f[16]+13.85640646055102*f[15]+13.85640646055102*f[14]+8.0*f[13]-12.0*f[12]+13.85640646055102*f[11]+8.0*f[10]-12.0*f[9]-6.928203230275509*f[8]+13.85640646055102*f[7]+8.0*f[6]-12.0*f[5]-6.928203230275509*f[4]+8.0*f[3]-12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXMu[1][2] = 0.001473139127471973*((467.6537180435969*f[23]+467.6537180435967*f[22]+270.0*f[21]+467.6537180435967*f[20]+269.9999999999999*f[19]+467.6537180435969*f[18]+269.9999999999999*f[17]+270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]+301.8691769624717*f[14]+174.2842505793337*f[13]+301.8691769624717*f[11]+174.2842505793337*f[10]+301.8691769624717*f[7]+174.2842505793337*f[6]+174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])-519.6152422706631*f[22]-300.0*f[21]-519.6152422706631*f[20]-300.0000000000001*f[19]-519.6152422706633*f[18]-300.0000000000001*f[17]-300.0*f[16]+232.379000772445*f[12]+232.379000772445*f[9]+134.1640786499874*f[8]+232.379000772445*f[5]+134.1640786499874*f[4]+232.379000772445*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])-201.2461179749811*f[14]-116.1895003862225*f[13]-201.2461179749811*f[11]-116.1895003862225*f[10]-201.2461179749811*f[7]-116.1895003862225*f[6]-116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]+259.8076211353315*f[22]+150.0*f[21]+259.8076211353315*f[20]+150.0*f[19]+259.8076211353317*f[18]+150.0*f[17]+150.0*f[16]-232.379000772445*f[12]-232.379000772445*f[9]-134.1640786499874*f[8]-232.379000772445*f[5]-134.1640786499874*f[4]-232.379000772445*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[23]+207.8460969082653*f[22]+120.0*f[21]+207.8460969082653*f[20]+120.0*f[19]+207.8460969082653*f[18]+120.0*f[17]+120.0*f[16]-100.6230589874906*f[15]-100.6230589874906*f[14]-58.09475019311126*f[13]-100.6230589874906*f[11]-58.09475019311126*f[10]-100.6230589874906*f[7]-58.09475019311126*f[6]-58.09475019311126*f[3]); + fReflSurfXMu[1][0] = 0.01317615691736824*((25.98076211353316*f[23]+25.980762113533157*f[22]+15.0*f[21]+25.980762113533157*f[20]+15.000000000000002*f[19]+25.98076211353316*f[18]+15.000000000000002*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]+20.12461179749811*f[11]+11.61895003862225*f[10]+20.12461179749811*f[7]+11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])-25.980762113533157*f[22]-15.0*f[21]-25.980762113533157*f[20]-15.000000000000002*f[19]-25.98076211353316*f[18]-15.000000000000002*f[17]-15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]+13.416407864998739*f[8]+23.2379000772445*f[5]+13.416407864998739*f[4]+23.2379000772445*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]+23.2379000772445*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]+23.2379000772445*f[9]+13.416407864998739*f[8]-20.12461179749811*f[7]-11.61895003862225*f[6]+23.2379000772445*f[5]+13.416407864998739*f[4]-11.61895003862225*f[3]+23.2379000772445*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXMu[1][1] = 0.022097086912079594*((20.124611797498105*f[23]+20.12461179749811*f[22]+11.61895003862225*f[21]+20.12461179749811*f[20]+11.618950038622252*f[19]+20.124611797498105*f[18]+11.618950038622252*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]+13.856406460551018*f[14]+8.0*f[13]+13.856406460551018*f[11]+8.0*f[10]+13.856406460551018*f[7]+8.0*f[6]+8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])-13.416407864998739*f[22]-7.745966692414834*f[21]-13.416407864998739*f[20]-7.745966692414834*f[19]-13.416407864998737*f[18]-7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]+6.928203230275509*f[8]+12.0*f[5]+6.928203230275509*f[4]+12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]-6.708203932499369*f[22]-3.872983346207417*f[21]-6.708203932499369*f[20]-3.872983346207417*f[19]-6.7082039324993685*f[18]-3.872983346207417*f[17]-3.872983346207417*f[16]+13.856406460551018*f[15]+13.856406460551018*f[14]+8.0*f[13]-12.0*f[12]+13.856406460551018*f[11]+8.0*f[10]-12.0*f[9]-6.928203230275509*f[8]+13.856406460551018*f[7]+8.0*f[6]-12.0*f[5]-6.928203230275509*f[4]+8.0*f[3]-12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); + fReflSurfXMu[1][2] = 0.001473139127471973*((467.65371804359694*f[23]+467.65371804359665*f[22]+270.0*f[21]+467.65371804359665*f[20]+269.99999999999994*f[19]+467.65371804359694*f[18]+269.99999999999994*f[17]+270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]+301.86917696247167*f[14]+174.28425057933373*f[13]+301.86917696247167*f[11]+174.28425057933373*f[10]+301.86917696247167*f[7]+174.28425057933373*f[6]+174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])-519.6152422706631*f[22]-300.0*f[21]-519.6152422706631*f[20]-300.00000000000006*f[19]-519.6152422706633*f[18]-300.00000000000006*f[17]-300.0*f[16]+232.37900077244504*f[12]+232.37900077244504*f[9]+134.1640786499874*f[8]+232.37900077244504*f[5]+134.1640786499874*f[4]+232.37900077244504*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])-201.2461179749811*f[14]-116.18950038622252*f[13]-201.2461179749811*f[11]-116.18950038622252*f[10]-201.2461179749811*f[7]-116.18950038622252*f[6]-116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]+259.80762113533154*f[22]+150.0*f[21]+259.80762113533154*f[20]+150.00000000000003*f[19]+259.80762113533166*f[18]+150.00000000000003*f[17]+150.0*f[16]-232.37900077244504*f[12]-232.37900077244504*f[9]-134.1640786499874*f[8]-232.37900077244504*f[5]-134.1640786499874*f[4]-232.37900077244504*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826528*f[23]+207.84609690826525*f[22]+120.0*f[21]+207.84609690826525*f[20]+120.00000000000001*f[19]+207.84609690826528*f[18]+120.00000000000001*f[17]+120.0*f[16]-100.62305898749055*f[15]-100.62305898749055*f[14]-58.09475019311126*f[13]-100.62305898749055*f[11]-58.09475019311126*f[10]-100.62305898749055*f[7]-58.09475019311126*f[6]-58.09475019311126*f[3]); } else { // vcut in logical space. @@ -978,24 +1054,26 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXMu[1][0] = -0.01317615691736824*((25.98076211353316*f[23]+25.98076211353316*f[22]+15.0*f[21]+25.98076211353316*f[20]+15.0*f[19]+25.98076211353316*f[18]+15.0*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]+20.12461179749811*f[11]+11.61895003862225*f[10]+20.12461179749811*f[7]+11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+((-25.98076211353316*f[23])-25.98076211353316*f[22]-15.0*f[21]-25.98076211353316*f[20]-15.0*f[19]-25.98076211353316*f[18]-15.0*f[17]-15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]+13.41640786499874*f[8]+23.2379000772445*f[5]+13.41640786499874*f[4]+23.2379000772445*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]-23.2379000772445*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]-23.2379000772445*f[9]-13.41640786499874*f[8]-20.12461179749811*f[7]-11.61895003862225*f[6]-23.2379000772445*f[5]-13.41640786499874*f[4]-11.61895003862225*f[3]-23.2379000772445*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXMu[1][1] = -0.02209708691207959*((20.1246117974981*f[23]+20.12461179749811*f[22]+11.61895003862225*f[21]+20.12461179749811*f[20]+11.61895003862225*f[19]+20.1246117974981*f[18]+11.61895003862225*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.85640646055102*f[15]+13.85640646055102*f[14]+8.0*f[13]+13.85640646055102*f[11]+8.0*f[10]+13.85640646055102*f[7]+8.0*f[6]+8.0*f[3])*vcut_lR3+((-13.41640786499874*f[23])-13.41640786499874*f[22]-7.745966692414834*f[21]-13.41640786499874*f[20]-7.745966692414834*f[19]-13.41640786499874*f[18]-7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]+6.928203230275509*f[8]+12.0*f[5]+6.928203230275509*f[4]+12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[23]-6.708203932499369*f[22]-3.872983346207417*f[21]-6.708203932499369*f[20]-3.872983346207417*f[19]-6.708203932499369*f[18]-3.872983346207417*f[17]-3.872983346207417*f[16]-13.85640646055102*f[15]-13.85640646055102*f[14]-8.0*f[13]-12.0*f[12]-13.85640646055102*f[11]-8.0*f[10]-12.0*f[9]-6.928203230275509*f[8]-13.85640646055102*f[7]-8.0*f[6]-12.0*f[5]-6.928203230275509*f[4]-8.0*f[3]-12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXMu[1][2] = -0.001473139127471973*((467.6537180435969*f[23]+467.6537180435967*f[22]+270.0*f[21]+467.6537180435967*f[20]+269.9999999999999*f[19]+467.6537180435969*f[18]+269.9999999999999*f[17]+270.0*f[16])*vcut_lR5+(301.8691769624717*f[15]+301.8691769624717*f[14]+174.2842505793337*f[13]+301.8691769624717*f[11]+174.2842505793337*f[10]+301.8691769624717*f[7]+174.2842505793337*f[6]+174.2842505793337*f[3])*vcut_lR4+((-519.6152422706633*f[23])-519.6152422706631*f[22]-300.0*f[21]-519.6152422706631*f[20]-300.0000000000001*f[19]-519.6152422706633*f[18]-300.0000000000001*f[17]-300.0*f[16]+232.379000772445*f[12]+232.379000772445*f[9]+134.1640786499874*f[8]+232.379000772445*f[5]+134.1640786499874*f[4]+232.379000772445*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[15])-201.2461179749811*f[14]-116.1895003862225*f[13]-201.2461179749811*f[11]-116.1895003862225*f[10]-201.2461179749811*f[7]-116.1895003862225*f[6]-116.1895003862225*f[3])*vcut_lR2+(259.8076211353317*f[23]+259.8076211353315*f[22]+150.0*f[21]+259.8076211353315*f[20]+150.0*f[19]+259.8076211353317*f[18]+150.0*f[17]+150.0*f[16]-232.379000772445*f[12]-232.379000772445*f[9]-134.1640786499874*f[8]-232.379000772445*f[5]-134.1640786499874*f[4]-232.379000772445*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[23]-207.8460969082653*f[22]-120.0*f[21]-207.8460969082653*f[20]-120.0*f[19]-207.8460969082653*f[18]-120.0*f[17]-120.0*f[16]-100.6230589874906*f[15]-100.6230589874906*f[14]-58.09475019311126*f[13]-100.6230589874906*f[11]-58.09475019311126*f[10]-100.6230589874906*f[7]-58.09475019311126*f[6]-58.09475019311126*f[3]); + fReflSurfXMu[1][0] = -(0.01317615691736824*((25.98076211353316*f[23]+25.980762113533157*f[22]+15.0*f[21]+25.980762113533157*f[20]+15.000000000000002*f[19]+25.98076211353316*f[18]+15.000000000000002*f[17]+15.0*f[16])*vcut_lR3+(20.12461179749811*f[15]+20.12461179749811*f[14]+11.61895003862225*f[13]+20.12461179749811*f[11]+11.61895003862225*f[10]+20.12461179749811*f[7]+11.61895003862225*f[6]+11.61895003862225*f[3])*vcut_lR2+(-(25.98076211353316*f[23])-25.980762113533157*f[22]-15.0*f[21]-25.980762113533157*f[20]-15.000000000000002*f[19]-25.98076211353316*f[18]-15.000000000000002*f[17]-15.0*f[16]+23.2379000772445*f[12]+23.2379000772445*f[9]+13.416407864998739*f[8]+23.2379000772445*f[5]+13.416407864998739*f[4]+23.2379000772445*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[15]-20.12461179749811*f[14]-11.61895003862225*f[13]-23.2379000772445*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]-23.2379000772445*f[9]-13.416407864998739*f[8]-20.12461179749811*f[7]-11.61895003862225*f[6]-23.2379000772445*f[5]-13.416407864998739*f[4]-11.61895003862225*f[3]-23.2379000772445*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXMu[1][1] = -(0.022097086912079594*((20.124611797498105*f[23]+20.12461179749811*f[22]+11.61895003862225*f[21]+20.12461179749811*f[20]+11.618950038622252*f[19]+20.124611797498105*f[18]+11.618950038622252*f[17]+11.61895003862225*f[16])*vcut_lR4+(13.856406460551018*f[15]+13.856406460551018*f[14]+8.0*f[13]+13.856406460551018*f[11]+8.0*f[10]+13.856406460551018*f[7]+8.0*f[6]+8.0*f[3])*vcut_lR3+(-(13.416407864998737*f[23])-13.416407864998739*f[22]-7.745966692414834*f[21]-13.416407864998739*f[20]-7.745966692414834*f[19]-13.416407864998737*f[18]-7.745966692414834*f[17]-7.745966692414834*f[16]+12.0*f[12]+12.0*f[9]+6.928203230275509*f[8]+12.0*f[5]+6.928203230275509*f[4]+12.0*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.7082039324993685*f[23]-6.708203932499369*f[22]-3.872983346207417*f[21]-6.708203932499369*f[20]-3.872983346207417*f[19]-6.7082039324993685*f[18]-3.872983346207417*f[17]-3.872983346207417*f[16]-13.856406460551018*f[15]-13.856406460551018*f[14]-8.0*f[13]-12.0*f[12]-13.856406460551018*f[11]-8.0*f[10]-12.0*f[9]-6.928203230275509*f[8]-13.856406460551018*f[7]-8.0*f[6]-12.0*f[5]-6.928203230275509*f[4]-8.0*f[3]-12.0*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])); + fReflSurfXMu[1][2] = -(0.001473139127471973*((467.65371804359694*f[23]+467.65371804359665*f[22]+270.0*f[21]+467.65371804359665*f[20]+269.99999999999994*f[19]+467.65371804359694*f[18]+269.99999999999994*f[17]+270.0*f[16])*vcut_lR5+(301.86917696247167*f[15]+301.86917696247167*f[14]+174.28425057933373*f[13]+301.86917696247167*f[11]+174.28425057933373*f[10]+301.86917696247167*f[7]+174.28425057933373*f[6]+174.28425057933373*f[3])*vcut_lR4+(-(519.6152422706633*f[23])-519.6152422706631*f[22]-300.0*f[21]-519.6152422706631*f[20]-300.00000000000006*f[19]-519.6152422706633*f[18]-300.00000000000006*f[17]-300.0*f[16]+232.37900077244504*f[12]+232.37900077244504*f[9]+134.1640786499874*f[8]+232.37900077244504*f[5]+134.1640786499874*f[4]+232.37900077244504*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[15])-201.2461179749811*f[14]-116.18950038622252*f[13]-201.2461179749811*f[11]-116.18950038622252*f[10]-201.2461179749811*f[7]-116.18950038622252*f[6]-116.18950038622252*f[3])*vcut_lR2+(259.80762113533166*f[23]+259.80762113533154*f[22]+150.0*f[21]+259.80762113533154*f[20]+150.00000000000003*f[19]+259.80762113533166*f[18]+150.00000000000003*f[17]+150.0*f[16]-232.37900077244504*f[12]-232.37900077244504*f[9]-134.1640786499874*f[8]-232.37900077244504*f[5]-134.1640786499874*f[4]-232.37900077244504*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826528*f[23]-207.84609690826525*f[22]-120.0*f[21]-207.84609690826525*f[20]-120.00000000000001*f[19]-207.84609690826528*f[18]-120.00000000000001*f[17]-120.0*f[16]-100.62305898749055*f[15]-100.62305898749055*f[14]-58.09475019311126*f[13]-100.62305898749055*f[11]-58.09475019311126*f[10]-100.62305898749055*f[7]-58.09475019311126*f[6]-58.09475019311126*f[3])); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXMu[1][1])/fReflSurfXMu[1][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[1][2]+5.0*fReflSurfXMu[1][0]))/fReflSurfXMu[1][0]; - if (fReflSurfXMu[1][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXMu[1][1])/fReflSurfXMu[1][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXMu[1][2]+5.0*fReflSurfXMu[1][0]))/fReflSurfXMu[1][0]; + if (fReflSurfXMu[1][0]<0.) { fReflSurfXMu[1][0] = 0.0; fReflSurfXMu[1][1] = 0.0; fReflSurfXMu[1][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXMu[1][0] = 0.0; fReflSurfXMu[1][1] = 0.0; fReflSurfXMu[1][2] = 0.0; + } + } fReflSurfX[1][0] = 0.7071067811865475*(fReflSurfXMu[1][0]+fReflSurfXMu[0][0]); @@ -1005,8 +1083,6 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double fReflSurfX[1][4] = 0.7071067811865475*(fReflSurfXMu[1][2]+fReflSurfXMu[0][2]); fReflSurfX[1][5] = 0.7071067811865475*(fReflSurfXMu[1][2]-1.0*fReflSurfXMu[0][2]); - } - fRefl[0] = fReflSurfX[1][0]+fReflSurfX[0][0]; fRefl[1] = fReflSurfX[1][0]-1.0*fReflSurfX[0][0]; fRefl[2] = 0.0; @@ -1024,16 +1100,16 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double fRefl[14] = 0.0; fRefl[15] = 0.0; fRefl[16] = fReflSurfX[1][4]+fReflSurfX[0][4]; - fRefl[17] = 1.0*(fReflSurfX[1][4]-1.0*fReflSurfX[0][4]); + fRefl[17] = 1.0000000000000002*(fReflSurfX[1][4]-1.0*fReflSurfX[0][4]); fRefl[18] = 0.0; fRefl[19] = fReflSurfX[1][5]+fReflSurfX[0][5]; fRefl[20] = 0.0; - fRefl[21] = 1.0*(fReflSurfX[1][5]-1.0*fReflSurfX[0][5]); + fRefl[21] = 1.0000000000000002*(fReflSurfX[1][5]-1.0*fReflSurfX[0][5]); fRefl[22] = 0.0; fRefl[23] = 0.0; } -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double *vmap, double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl) +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double *vmap, double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl) { double vcutSq; double fReflSurfXY[4][6] = {0.}; @@ -1043,36 +1119,33 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double double vparAbsSqLo = vmap[0]>0.? vparLo*vparLo : vparUp*vparUp; double vparAbsSqUp = vmap[0]>0.? vparUp*vparUp : vparLo*vparLo; + double wv; + double dv; + double xBar, xSqBar; + double fReflSurfXYMu[2][3] = {0.}; + // node (x,y)_0 - vcutSq = -0.25*(2.449489742783178*phiWall[7]-2.449489742783178*(phi[7]+phiWall[6])+2.449489742783178*phi[6]-2.449489742783178*phiWall[5]+2.449489742783178*phi[5]-1.414213562373095*phiWall[4]+1.414213562373095*phi[4]+2.449489742783178*phiWall[3]-2.449489742783178*phi[3]+1.414213562373095*phiWall[2]-1.414213562373095*phi[2]+1.414213562373095*phiWall[1]-1.414213562373095*(phi[1]+phiWall[0])+1.414213562373095*phi[0])*q2Dm; - if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) + wv = 0.5*vparUp+0.5*vparLo; + dv = vparUp-1.0*vparLo; - fReflSurfXY[0][0] = 0.0; - fReflSurfXY[0][1] = 0.0; - fReflSurfXY[0][2] = 0.0; - fReflSurfXY[0][3] = 0.0; - fReflSurfXY[0][4] = 0.0; - fReflSurfXY[0][5] = 0.0; + // node (mu)_0 + 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; - } else if (vcutSq > vparAbsSqUp) { // full reflection + if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) - fReflSurfXY[0][0] = -0.3535533905932737*(1.732050807568877*f[16]-1.0*(1.732050807568877*(f[8]+f[7])+f[6])+1.732050807568877*f[3]+f[2]+f[1]-1.0*f[0]); - fReflSurfXY[0][1] = -0.3535533905932737*(1.732050807568877*f[26]-1.0*(1.732050807568877*(f[19]+f[18])+f[17])+1.732050807568877*f[11]+f[10]+f[9]-1.0*f[4]); - fReflSurfXY[0][2] = -0.3535533905932737*(1.732050807568877*f[27]-1.0*(1.732050807568877*(f[22]+f[21])+f[20])+1.732050807568877*f[14]+f[13]+f[12]-1.0*f[5]); - fReflSurfXY[0][3] = -0.3535533905932737*(1.732050807568877*f[31]-1.0*(1.732050807568877*(f[30]+f[29])+f[28])+1.732050807568877*f[25]+f[24]+f[23]-1.0*f[15]); - fReflSurfXY[0][4] = -0.02357022603955158*(25.98076211353316*f[43]-5.0*(5.196152422706631*(f[39]+f[38])+3.0*f[37])+8.660254037844387*(3.0*f[35]+1.732050807568877*(f[34]+f[33]))-15.0*f[32]); - fReflSurfXY[0][5] = -0.02357022603955158*(25.98076211353316*f[47]-5.0*(5.196152422706631*(f[46]+f[45])+3.0*f[44])+8.660254037844387*(3.0*f[42]+1.732050807568877*(f[41]+f[40]))-15.0*f[36]); + fReflSurfXYMu[0][0] = 0.0; + fReflSurfXYMu[0][1] = 0.0; + fReflSurfXYMu[0][2] = 0.0; - } else { // partial reflection + } else if (vcutSq > vparAbsSqUp) { // full reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; + fReflSurfXYMu[0][0] = 0.25*(1.7320508075688772*f[27]-1.0*(1.7320508075688772*(f[22]+f[21])+f[20])+1.7320508075688772*(f[14]-1.0*f[16])+f[13]+f[12]+1.7320508075688772*(f[8]+f[7])+f[6]-1.0*(f[5]+1.7320508075688772*f[3]+f[2]+f[1])+f[0]); + fReflSurfXYMu[0][1] = 0.25*(1.7320508075688772*f[31]-1.0*(1.7320508075688772*(f[30]+f[29])+f[28])+1.7320508075688772*(f[25]-1.0*f[26])+f[24]+f[23]+1.7320508075688772*(f[19]+f[18])+f[17]-1.0*(f[15]+1.7320508075688772*f[11]+f[10]+f[9])+f[4]); + fReflSurfXYMu[0][2] = 0.016666666666666666*(25.980762113533157*f[47]-8.660254037844387*(3.0*(f[46]+f[45])+1.7320508075688772*f[44]+3.0*f[43])+5.0*(5.196152422706631*f[42]+3.0*(f[41]+f[40])+5.196152422706631*(f[39]+f[38])+3.0*f[37])-8.660254037844387*(1.7320508075688772*f[36]+3.0*f[35]+1.7320508075688772*(f[34]+f[33]))+15.0*f[32]); - double xBar, xSqBar; - double fReflSurfXYMu[2][3] = {0.}; + } else { // partial reflection - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1082,9 +1155,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = 0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]-23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]-20.1246117974981*f[45]-11.61895003862225*f[44]-20.1246117974981*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]-11.61895003862225*f[36]-20.1246117974981*f[35]-11.61895003862225*f[34]-11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]-13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]+13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]-8.0*f[15]-13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]+13.41640786499874*f[45]+7.745966692414834*f[44]+13.41640786499874*f[43]-13.41640786499874*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]-13.41640786499874*f[39]-13.41640786499874*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.41640786499874*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]+6.708203932499369*f[45]+3.872983346207417*f[44]+6.708203932499369*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.708203932499369*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]+13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]+12.0*f[16]-8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = 0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]-467.6537180435969*f[45]-269.9999999999999*f[44]-467.6537180435969*f[43]+467.6537180435967*f[42]+270.0*f[41]+270.0*f[40]+467.6537180435967*f[39]+467.6537180435967*f[38]+270.0*f[37]-269.9999999999999*f[36]-467.6537180435969*f[35]-269.9999999999999*f[34]-269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]-301.8691769624717*f[29]-174.2842505793337*f[28]-301.8691769624717*f[26]+301.8691769624717*f[25]+174.2842505793337*f[24]+174.2842505793337*f[23]+301.8691769624717*f[19]+301.8691769624717*f[18]+174.2842505793337*f[17]-174.2842505793337*f[15]-301.8691769624717*f[11]-174.2842505793337*f[10]-174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]+300.0000000000001*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]+300.0000000000001*f[36]+519.6152422706633*f[35]+300.0000000000001*f[34]+300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]+116.1895003862225*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]-116.1895003862225*f[24]-116.1895003862225*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]-116.1895003862225*f[17]+116.1895003862225*f[15]+201.2461179749811*f[11]+116.1895003862225*f[10]+116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]-259.8076211353317*f[45]-150.0*f[44]-259.8076211353317*f[43]+259.8076211353315*f[42]+150.0*f[41]+150.0*f[40]+259.8076211353315*f[39]+259.8076211353315*f[38]+150.0*f[37]-150.0*f[36]-259.8076211353317*f[35]-150.0*f[34]-150.0*f[33]+150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]-207.8460969082653*f[46]-207.8460969082653*f[45]-120.0*f[44]-207.8460969082653*f[43]+207.8460969082653*f[42]+120.0*f[41]+120.0*f[40]+207.8460969082653*f[39]+207.8460969082653*f[38]+120.0*f[37]-120.0*f[36]-207.8460969082653*f[35]-120.0*f[34]-120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]+100.6230589874906*f[29]+58.09475019311126*f[28]+100.6230589874906*f[26]-100.6230589874906*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]-100.6230589874906*f[19]-100.6230589874906*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.6230589874906*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = 0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]-23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]-20.124611797498105*f[45]-11.618950038622252*f[44]-20.124611797498105*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]-11.618950038622252*f[36]-20.124611797498105*f[35]-11.618950038622252*f[34]-11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]-13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]+13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]-8.0*f[15]-13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]+13.416407864998737*f[45]+7.745966692414834*f[44]+13.416407864998737*f[43]-13.416407864998739*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]-13.416407864998739*f[39]-13.416407864998739*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.416407864998737*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]+6.7082039324993685*f[45]+3.872983346207417*f[44]+6.7082039324993685*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.7082039324993685*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]+13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]+12.0*f[16]-8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); + fReflSurfXYMu[0][2] = 0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]-467.65371804359694*f[45]-269.99999999999994*f[44]-467.65371804359694*f[43]+467.65371804359665*f[42]+270.0*f[41]+270.0*f[40]+467.65371804359665*f[39]+467.65371804359665*f[38]+270.0*f[37]-269.99999999999994*f[36]-467.65371804359694*f[35]-269.99999999999994*f[34]-269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]-301.86917696247167*f[29]-174.28425057933373*f[28]-301.86917696247167*f[26]+301.86917696247167*f[25]+174.28425057933373*f[24]+174.28425057933373*f[23]+301.86917696247167*f[19]+301.86917696247167*f[18]+174.28425057933373*f[17]-174.28425057933373*f[15]-301.86917696247167*f[11]-174.28425057933373*f[10]-174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]+300.00000000000006*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]+300.00000000000006*f[36]+519.6152422706633*f[35]+300.00000000000006*f[34]+300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]+116.18950038622252*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]-116.18950038622252*f[24]-116.18950038622252*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]-116.18950038622252*f[17]+116.18950038622252*f[15]+201.2461179749811*f[11]+116.18950038622252*f[10]+116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]-259.80762113533166*f[45]-150.00000000000003*f[44]-259.80762113533166*f[43]+259.80762113533154*f[42]+150.0*f[41]+150.0*f[40]+259.80762113533154*f[39]+259.80762113533154*f[38]+150.0*f[37]-150.00000000000003*f[36]-259.80762113533166*f[35]-150.00000000000003*f[34]-150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]-207.84609690826528*f[46]-207.84609690826528*f[45]-120.00000000000001*f[44]-207.84609690826528*f[43]+207.84609690826525*f[42]+120.0*f[41]+120.0*f[40]+207.84609690826525*f[39]+207.84609690826525*f[38]+120.0*f[37]-120.00000000000001*f[36]-207.84609690826528*f[35]-120.00000000000001*f[34]-120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]+100.62305898749055*f[29]+58.09475019311126*f[28]+100.62305898749055*f[26]-100.62305898749055*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]-100.62305898749055*f[19]-100.62305898749055*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.62305898749055*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4]); } else { // vcut in logical space. @@ -1095,27 +1168,45 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = -0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]-23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = -0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]-20.1246117974981*f[45]-11.61895003862225*f[44]-20.1246117974981*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]-11.61895003862225*f[36]-20.1246117974981*f[35]-11.61895003862225*f[34]-11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]-13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]+13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]-8.0*f[15]-13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]+13.41640786499874*f[45]+7.745966692414834*f[44]+13.41640786499874*f[43]-13.41640786499874*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]-13.41640786499874*f[39]-13.41640786499874*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.41640786499874*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]+6.708203932499369*f[45]+3.872983346207417*f[44]+6.708203932499369*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.708203932499369*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]-13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]+12.0*f[16]+8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = -0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]-467.6537180435969*f[45]-269.9999999999999*f[44]-467.6537180435969*f[43]+467.6537180435967*f[42]+270.0*f[41]+270.0*f[40]+467.6537180435967*f[39]+467.6537180435967*f[38]+270.0*f[37]-269.9999999999999*f[36]-467.6537180435969*f[35]-269.9999999999999*f[34]-269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]-301.8691769624717*f[29]-174.2842505793337*f[28]-301.8691769624717*f[26]+301.8691769624717*f[25]+174.2842505793337*f[24]+174.2842505793337*f[23]+301.8691769624717*f[19]+301.8691769624717*f[18]+174.2842505793337*f[17]-174.2842505793337*f[15]-301.8691769624717*f[11]-174.2842505793337*f[10]-174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]+300.0000000000001*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]+300.0000000000001*f[36]+519.6152422706633*f[35]+300.0000000000001*f[34]+300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]+116.1895003862225*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]-116.1895003862225*f[24]-116.1895003862225*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]-116.1895003862225*f[17]+116.1895003862225*f[15]+201.2461179749811*f[11]+116.1895003862225*f[10]+116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]-259.8076211353317*f[45]-150.0*f[44]-259.8076211353317*f[43]+259.8076211353315*f[42]+150.0*f[41]+150.0*f[40]+259.8076211353315*f[39]+259.8076211353315*f[38]+150.0*f[37]-150.0*f[36]-259.8076211353317*f[35]-150.0*f[34]-150.0*f[33]+150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]+207.8460969082653*f[46]+207.8460969082653*f[45]+120.0*f[44]+207.8460969082653*f[43]-207.8460969082653*f[42]-120.0*f[41]-120.0*f[40]-207.8460969082653*f[39]-207.8460969082653*f[38]-120.0*f[37]+120.0*f[36]+207.8460969082653*f[35]+120.0*f[34]+120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]+100.6230589874906*f[29]+58.09475019311126*f[28]+100.6230589874906*f[26]-100.6230589874906*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]-100.6230589874906*f[19]-100.6230589874906*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.6230589874906*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = -(0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]-23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[0][1] = -(0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]-20.124611797498105*f[45]-11.618950038622252*f[44]-20.124611797498105*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]-11.618950038622252*f[36]-20.124611797498105*f[35]-11.618950038622252*f[34]-11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]-13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]+13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]-8.0*f[15]-13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]+13.416407864998737*f[45]+7.745966692414834*f[44]+13.416407864998737*f[43]-13.416407864998739*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]-13.416407864998739*f[39]-13.416407864998739*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.416407864998737*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]+6.7082039324993685*f[45]+3.872983346207417*f[44]+6.7082039324993685*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.7082039324993685*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]-13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]+12.0*f[16]+8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])); + fReflSurfXYMu[0][2] = -(0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]-467.65371804359694*f[45]-269.99999999999994*f[44]-467.65371804359694*f[43]+467.65371804359665*f[42]+270.0*f[41]+270.0*f[40]+467.65371804359665*f[39]+467.65371804359665*f[38]+270.0*f[37]-269.99999999999994*f[36]-467.65371804359694*f[35]-269.99999999999994*f[34]-269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]-301.86917696247167*f[29]-174.28425057933373*f[28]-301.86917696247167*f[26]+301.86917696247167*f[25]+174.28425057933373*f[24]+174.28425057933373*f[23]+301.86917696247167*f[19]+301.86917696247167*f[18]+174.28425057933373*f[17]-174.28425057933373*f[15]-301.86917696247167*f[11]-174.28425057933373*f[10]-174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]+300.00000000000006*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]+300.00000000000006*f[36]+519.6152422706633*f[35]+300.00000000000006*f[34]+300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]+116.18950038622252*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]-116.18950038622252*f[24]-116.18950038622252*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]-116.18950038622252*f[17]+116.18950038622252*f[15]+201.2461179749811*f[11]+116.18950038622252*f[10]+116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]-259.80762113533166*f[45]-150.00000000000003*f[44]-259.80762113533166*f[43]+259.80762113533154*f[42]+150.0*f[41]+150.0*f[40]+259.80762113533154*f[39]+259.80762113533154*f[38]+150.0*f[37]-150.00000000000003*f[36]-259.80762113533166*f[35]-150.00000000000003*f[34]-150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]+207.84609690826528*f[46]+207.84609690826528*f[45]+120.00000000000001*f[44]+207.84609690826528*f[43]-207.84609690826525*f[42]-120.0*f[41]-120.0*f[40]-207.84609690826525*f[39]-207.84609690826525*f[38]-120.0*f[37]+120.00000000000001*f[36]+207.84609690826528*f[35]+120.00000000000001*f[34]+120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]+100.62305898749055*f[29]+58.09475019311126*f[28]+100.62305898749055*f[26]-100.62305898749055*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]-100.62305898749055*f[19]-100.62305898749055*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.62305898749055*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4])); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; - if (fReflSurfXYMu[0][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; + if (fReflSurfXYMu[0][0]<0.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; + } + } - // node (mu)_1 + // node (mu)_1 + 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) + + fReflSurfXYMu[1][0] = 0.0; + fReflSurfXYMu[1][1] = 0.0; + fReflSurfXYMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfXYMu[1][0] = -(0.25*(1.7320508075688772*f[27]-1.0*(1.7320508075688772*(f[22]+f[21])+f[20])+1.7320508075688772*(f[16]+f[14])+f[13]+f[12]-1.0*(1.7320508075688772*(f[8]+f[7])+f[6]+f[5])+1.7320508075688772*f[3]+f[2]+f[1]-1.0*f[0])); + fReflSurfXYMu[1][1] = -(0.25*(1.7320508075688772*f[31]-1.0*(1.7320508075688772*(f[30]+f[29])+f[28])+1.7320508075688772*(f[26]+f[25])+f[24]+f[23]-1.0*(1.7320508075688772*(f[19]+f[18])+f[17]+f[15])+1.7320508075688772*f[11]+f[10]+f[9]-1.0*f[4])); + fReflSurfXYMu[1][2] = -(0.016666666666666666*(25.980762113533157*f[47]-8.660254037844387*(3.0*(f[46]+f[45])+1.7320508075688772*f[44]-3.0*f[43])+5.0*(5.196152422706631*f[42]+3.0*(f[41]+f[40])-1.0*(5.196152422706631*(f[39]+f[38])+3.0*f[37]))+8.660254037844387*(-(1.7320508075688772*f[36])+3.0*f[35]+1.7320508075688772*(f[34]+f[33]))-15.0*f[32])); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1125,9 +1216,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = -0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]+23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = -0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]-20.1246117974981*f[45]-11.61895003862225*f[44]+20.1246117974981*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]-11.61895003862225*f[36]+20.1246117974981*f[35]+11.61895003862225*f[34]+11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]+13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]-13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]-8.0*f[15]+13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]+13.41640786499874*f[45]+7.745966692414834*f[44]-13.41640786499874*f[43]-13.41640786499874*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]+13.41640786499874*f[39]+13.41640786499874*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.41640786499874*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]+6.708203932499369*f[45]+3.872983346207417*f[44]-6.708203932499369*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.708203932499369*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]+13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]-12.0*f[16]-8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = -0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]-467.6537180435969*f[45]-269.9999999999999*f[44]+467.6537180435969*f[43]+467.6537180435967*f[42]+270.0*f[41]+270.0*f[40]-467.6537180435967*f[39]-467.6537180435967*f[38]-270.0*f[37]-269.9999999999999*f[36]+467.6537180435969*f[35]+269.9999999999999*f[34]+269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]-301.8691769624717*f[29]-174.2842505793337*f[28]+301.8691769624717*f[26]+301.8691769624717*f[25]+174.2842505793337*f[24]+174.2842505793337*f[23]-301.8691769624717*f[19]-301.8691769624717*f[18]-174.2842505793337*f[17]-174.2842505793337*f[15]+301.8691769624717*f[11]+174.2842505793337*f[10]+174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]+300.0000000000001*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]+300.0000000000001*f[36]-519.6152422706633*f[35]-300.0000000000001*f[34]-300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]+116.1895003862225*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]-116.1895003862225*f[24]-116.1895003862225*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]+116.1895003862225*f[17]+116.1895003862225*f[15]-201.2461179749811*f[11]-116.1895003862225*f[10]-116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]-259.8076211353317*f[45]-150.0*f[44]+259.8076211353317*f[43]+259.8076211353315*f[42]+150.0*f[41]+150.0*f[40]-259.8076211353315*f[39]-259.8076211353315*f[38]-150.0*f[37]-150.0*f[36]+259.8076211353317*f[35]+150.0*f[34]+150.0*f[33]-150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]-207.8460969082653*f[46]-207.8460969082653*f[45]-120.0*f[44]+207.8460969082653*f[43]+207.8460969082653*f[42]+120.0*f[41]+120.0*f[40]-207.8460969082653*f[39]-207.8460969082653*f[38]-120.0*f[37]-120.0*f[36]+207.8460969082653*f[35]+120.0*f[34]+120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]+100.6230589874906*f[29]+58.09475019311126*f[28]-100.6230589874906*f[26]-100.6230589874906*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]+100.6230589874906*f[19]+100.6230589874906*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.6230589874906*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = -(0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]+23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[1][1] = -(0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]-20.124611797498105*f[45]-11.618950038622252*f[44]+20.124611797498105*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]-11.618950038622252*f[36]+20.124611797498105*f[35]+11.618950038622252*f[34]+11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]+13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]-13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]-8.0*f[15]+13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]+13.416407864998737*f[45]+7.745966692414834*f[44]-13.416407864998737*f[43]-13.416407864998739*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]+13.416407864998739*f[39]+13.416407864998739*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.416407864998737*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]+6.7082039324993685*f[45]+3.872983346207417*f[44]-6.7082039324993685*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.7082039324993685*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]+13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]-12.0*f[16]-8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])); + fReflSurfXYMu[1][2] = -(0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]-467.65371804359694*f[45]-269.99999999999994*f[44]+467.65371804359694*f[43]+467.65371804359665*f[42]+270.0*f[41]+270.0*f[40]-467.65371804359665*f[39]-467.65371804359665*f[38]-270.0*f[37]-269.99999999999994*f[36]+467.65371804359694*f[35]+269.99999999999994*f[34]+269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]-301.86917696247167*f[29]-174.28425057933373*f[28]+301.86917696247167*f[26]+301.86917696247167*f[25]+174.28425057933373*f[24]+174.28425057933373*f[23]-301.86917696247167*f[19]-301.86917696247167*f[18]-174.28425057933373*f[17]-174.28425057933373*f[15]+301.86917696247167*f[11]+174.28425057933373*f[10]+174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]+300.00000000000006*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]+300.00000000000006*f[36]-519.6152422706633*f[35]-300.00000000000006*f[34]-300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]+116.18950038622252*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]-116.18950038622252*f[24]-116.18950038622252*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]+116.18950038622252*f[17]+116.18950038622252*f[15]-201.2461179749811*f[11]-116.18950038622252*f[10]-116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]-259.80762113533166*f[45]-150.00000000000003*f[44]+259.80762113533166*f[43]+259.80762113533154*f[42]+150.0*f[41]+150.0*f[40]-259.80762113533154*f[39]-259.80762113533154*f[38]-150.0*f[37]-150.00000000000003*f[36]+259.80762113533166*f[35]+150.00000000000003*f[34]+150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]-207.84609690826528*f[46]-207.84609690826528*f[45]-120.00000000000001*f[44]+207.84609690826528*f[43]+207.84609690826525*f[42]+120.0*f[41]+120.0*f[40]-207.84609690826525*f[39]-207.84609690826525*f[38]-120.0*f[37]-120.00000000000001*f[36]+207.84609690826528*f[35]+120.00000000000001*f[34]+120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]+100.62305898749055*f[29]+58.09475019311126*f[28]-100.62305898749055*f[26]-100.62305898749055*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]+100.62305898749055*f[19]+100.62305898749055*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.62305898749055*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4])); } else { // vcut in logical space. @@ -1138,24 +1229,26 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = 0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]+23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]-20.1246117974981*f[45]-11.61895003862225*f[44]+20.1246117974981*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]-11.61895003862225*f[36]+20.1246117974981*f[35]+11.61895003862225*f[34]+11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]+13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]-13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]-8.0*f[15]+13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]+13.41640786499874*f[45]+7.745966692414834*f[44]-13.41640786499874*f[43]-13.41640786499874*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]+13.41640786499874*f[39]+13.41640786499874*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.41640786499874*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]+6.708203932499369*f[45]+3.872983346207417*f[44]-6.708203932499369*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.708203932499369*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]-13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]-12.0*f[16]+8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = 0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]-467.6537180435969*f[45]-269.9999999999999*f[44]+467.6537180435969*f[43]+467.6537180435967*f[42]+270.0*f[41]+270.0*f[40]-467.6537180435967*f[39]-467.6537180435967*f[38]-270.0*f[37]-269.9999999999999*f[36]+467.6537180435969*f[35]+269.9999999999999*f[34]+269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]-301.8691769624717*f[29]-174.2842505793337*f[28]+301.8691769624717*f[26]+301.8691769624717*f[25]+174.2842505793337*f[24]+174.2842505793337*f[23]-301.8691769624717*f[19]-301.8691769624717*f[18]-174.2842505793337*f[17]-174.2842505793337*f[15]+301.8691769624717*f[11]+174.2842505793337*f[10]+174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]+300.0000000000001*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]+300.0000000000001*f[36]-519.6152422706633*f[35]-300.0000000000001*f[34]-300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]+116.1895003862225*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]-116.1895003862225*f[24]-116.1895003862225*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]+116.1895003862225*f[17]+116.1895003862225*f[15]-201.2461179749811*f[11]-116.1895003862225*f[10]-116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]-259.8076211353317*f[45]-150.0*f[44]+259.8076211353317*f[43]+259.8076211353315*f[42]+150.0*f[41]+150.0*f[40]-259.8076211353315*f[39]-259.8076211353315*f[38]-150.0*f[37]-150.0*f[36]+259.8076211353317*f[35]+150.0*f[34]+150.0*f[33]-150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]+207.8460969082653*f[46]+207.8460969082653*f[45]+120.0*f[44]-207.8460969082653*f[43]-207.8460969082653*f[42]-120.0*f[41]-120.0*f[40]+207.8460969082653*f[39]+207.8460969082653*f[38]+120.0*f[37]+120.0*f[36]-207.8460969082653*f[35]-120.0*f[34]-120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]+100.6230589874906*f[29]+58.09475019311126*f[28]-100.6230589874906*f[26]-100.6230589874906*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]+100.6230589874906*f[19]+100.6230589874906*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.6230589874906*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = 0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]+23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]-20.124611797498105*f[45]-11.618950038622252*f[44]+20.124611797498105*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]-11.618950038622252*f[36]+20.124611797498105*f[35]+11.618950038622252*f[34]+11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]+13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]-13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]-8.0*f[15]+13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]+13.416407864998737*f[45]+7.745966692414834*f[44]-13.416407864998737*f[43]-13.416407864998739*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]+13.416407864998739*f[39]+13.416407864998739*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.416407864998737*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]+6.7082039324993685*f[45]+3.872983346207417*f[44]-6.7082039324993685*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.7082039324993685*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]-13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]-12.0*f[16]+8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); + fReflSurfXYMu[1][2] = 0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]-467.65371804359694*f[45]-269.99999999999994*f[44]+467.65371804359694*f[43]+467.65371804359665*f[42]+270.0*f[41]+270.0*f[40]-467.65371804359665*f[39]-467.65371804359665*f[38]-270.0*f[37]-269.99999999999994*f[36]+467.65371804359694*f[35]+269.99999999999994*f[34]+269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]-301.86917696247167*f[29]-174.28425057933373*f[28]+301.86917696247167*f[26]+301.86917696247167*f[25]+174.28425057933373*f[24]+174.28425057933373*f[23]-301.86917696247167*f[19]-301.86917696247167*f[18]-174.28425057933373*f[17]-174.28425057933373*f[15]+301.86917696247167*f[11]+174.28425057933373*f[10]+174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]+300.00000000000006*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]+300.00000000000006*f[36]-519.6152422706633*f[35]-300.00000000000006*f[34]-300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]+116.18950038622252*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]-116.18950038622252*f[24]-116.18950038622252*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]+116.18950038622252*f[17]+116.18950038622252*f[15]-201.2461179749811*f[11]-116.18950038622252*f[10]-116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]-259.80762113533166*f[45]-150.00000000000003*f[44]+259.80762113533166*f[43]+259.80762113533154*f[42]+150.0*f[41]+150.0*f[40]-259.80762113533154*f[39]-259.80762113533154*f[38]-150.0*f[37]-150.00000000000003*f[36]+259.80762113533166*f[35]+150.00000000000003*f[34]+150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]+207.84609690826528*f[46]+207.84609690826528*f[45]+120.00000000000001*f[44]-207.84609690826528*f[43]-207.84609690826525*f[42]-120.0*f[41]-120.0*f[40]+207.84609690826525*f[39]+207.84609690826525*f[38]+120.0*f[37]+120.00000000000001*f[36]-207.84609690826528*f[35]-120.00000000000001*f[34]-120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]+100.62305898749055*f[29]+58.09475019311126*f[28]-100.62305898749055*f[26]-100.62305898749055*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]+100.62305898749055*f[19]+100.62305898749055*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.62305898749055*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4]); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; - if (fReflSurfXYMu[1][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; + if (fReflSurfXYMu[1][0]<0.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; + } + } fReflSurfXY[0][0] = 0.7071067811865475*(fReflSurfXYMu[1][0]+fReflSurfXYMu[0][0]); @@ -1165,38 +1258,28 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double fReflSurfXY[0][4] = 0.7071067811865475*(fReflSurfXYMu[1][2]+fReflSurfXYMu[0][2]); fReflSurfXY[0][5] = 0.7071067811865475*(fReflSurfXYMu[1][2]-1.0*fReflSurfXYMu[0][2]); - } - // node (x,y)_1 - vcutSq = 0.25*(2.449489742783178*phiWall[7]-2.449489742783178*(phi[7]+phiWall[6])+2.449489742783178*(phi[6]+phiWall[5])-2.449489742783178*phi[5]-1.414213562373095*phiWall[4]+1.414213562373095*phi[4]-2.449489742783178*phiWall[3]+2.449489742783178*phi[3]+1.414213562373095*phiWall[2]-1.414213562373095*(phi[2]+phiWall[1])+1.414213562373095*(phi[1]+phiWall[0])-1.414213562373095*phi[0])*q2Dm; - if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) + wv = 0.5*vparUp+0.5*vparLo; + dv = vparUp-1.0*vparLo; - fReflSurfXY[1][0] = 0.0; - fReflSurfXY[1][1] = 0.0; - fReflSurfXY[1][2] = 0.0; - fReflSurfXY[1][3] = 0.0; - fReflSurfXY[1][4] = 0.0; - fReflSurfXY[1][5] = 0.0; + // node (mu)_0 + 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; - } else if (vcutSq > vparAbsSqUp) { // full reflection + if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) - fReflSurfXY[1][0] = 0.3535533905932737*(1.732050807568877*(f[16]-1.0*f[8]+f[7])-1.0*(f[6]+1.732050807568877*f[3])+f[2]-1.0*f[1]+f[0]); - fReflSurfXY[1][1] = 0.3535533905932737*(1.732050807568877*(f[26]-1.0*f[19]+f[18])-1.0*(f[17]+1.732050807568877*f[11])+f[10]-1.0*f[9]+f[4]); - fReflSurfXY[1][2] = 0.3535533905932737*(1.732050807568877*(f[27]-1.0*f[22]+f[21])-1.0*(f[20]+1.732050807568877*f[14])+f[13]-1.0*f[12]+f[5]); - fReflSurfXY[1][3] = 0.3535533905932737*(1.732050807568877*(f[31]-1.0*f[30]+f[29])-1.0*(f[28]+1.732050807568877*f[25])+f[24]-1.0*f[23]+f[15]); - fReflSurfXY[1][4] = 0.02357022603955158*(25.98076211353316*f[43]+5.0*(5.196152422706631*(f[38]-1.0*f[39])-3.0*f[37])+8.660254037844387*(1.732050807568877*(f[34]-1.0*f[33])-3.0*f[35])+15.0*f[32]); - fReflSurfXY[1][5] = 0.02357022603955158*(25.98076211353316*f[47]+5.0*(5.196152422706631*(f[45]-1.0*f[46])-3.0*f[44])+8.660254037844387*(1.732050807568877*(f[41]-1.0*f[40])-3.0*f[42])+15.0*f[36]); + fReflSurfXYMu[0][0] = 0.0; + fReflSurfXYMu[0][1] = 0.0; + fReflSurfXYMu[0][2] = 0.0; - } else { // partial reflection + } else if (vcutSq > vparAbsSqUp) { // full reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; + fReflSurfXYMu[0][0] = -(0.25*(1.7320508075688772*(f[27]-1.0*f[22]+f[21])-1.0*(f[20]+1.7320508075688772*(f[16]+f[14]))+f[13]-1.0*f[12]+1.7320508075688772*(f[8]-1.0*f[7])+f[6]+f[5]+1.7320508075688772*f[3]-1.0*f[2]+f[1]-1.0*f[0])); + fReflSurfXYMu[0][1] = -(0.25*(1.7320508075688772*(f[31]-1.0*f[30]+f[29])-1.0*(f[28]+1.7320508075688772*(f[26]+f[25]))+f[24]-1.0*f[23]+1.7320508075688772*(f[19]-1.0*f[18])+f[17]+f[15]+1.7320508075688772*f[11]-1.0*f[10]+f[9]-1.0*f[4])); + fReflSurfXYMu[0][2] = -(0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(3.0*(f[45]-1.0*f[46])-1.0*(1.7320508075688772*f[44]+3.0*f[43]))+5.0*(-(5.196152422706631*f[42])+3.0*(f[41]-1.0*f[40])+5.196152422706631*(f[39]-1.0*f[38])+3.0*f[37])+8.660254037844387*(1.7320508075688772*f[36]+3.0*f[35]+1.7320508075688772*(f[33]-1.0*f[34]))-15.0*f[32])); - double xBar, xSqBar; - double fReflSurfXYMu[2][3] = {0.}; + } else { // partial reflection - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1206,9 +1289,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = -0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]+23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = -0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]+20.1246117974981*f[45]-11.61895003862225*f[44]-20.1246117974981*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]+11.61895003862225*f[36]+20.1246117974981*f[35]-11.61895003862225*f[34]+11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]-13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]+13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]+8.0*f[15]+13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]-13.41640786499874*f[45]+7.745966692414834*f[44]+13.41640786499874*f[43]+13.41640786499874*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]-13.41640786499874*f[39]+13.41640786499874*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.41640786499874*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]-6.708203932499369*f[45]+3.872983346207417*f[44]+6.708203932499369*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.708203932499369*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]+13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]+12.0*f[16]+8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = -0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]+467.6537180435969*f[45]-269.9999999999999*f[44]-467.6537180435969*f[43]-467.6537180435967*f[42]+270.0*f[41]-270.0*f[40]+467.6537180435967*f[39]-467.6537180435967*f[38]+270.0*f[37]+269.9999999999999*f[36]+467.6537180435969*f[35]-269.9999999999999*f[34]+269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]+301.8691769624717*f[29]-174.2842505793337*f[28]-301.8691769624717*f[26]-301.8691769624717*f[25]+174.2842505793337*f[24]-174.2842505793337*f[23]+301.8691769624717*f[19]-301.8691769624717*f[18]+174.2842505793337*f[17]+174.2842505793337*f[15]+301.8691769624717*f[11]-174.2842505793337*f[10]+174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]+300.0000000000001*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]-300.0000000000001*f[36]-519.6152422706633*f[35]+300.0000000000001*f[34]-300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]+116.1895003862225*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]-116.1895003862225*f[24]+116.1895003862225*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]-116.1895003862225*f[17]-116.1895003862225*f[15]-201.2461179749811*f[11]+116.1895003862225*f[10]-116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]+259.8076211353317*f[45]-150.0*f[44]-259.8076211353317*f[43]-259.8076211353315*f[42]+150.0*f[41]-150.0*f[40]+259.8076211353315*f[39]-259.8076211353315*f[38]+150.0*f[37]+150.0*f[36]+259.8076211353317*f[35]-150.0*f[34]+150.0*f[33]-150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]-207.8460969082653*f[46]+207.8460969082653*f[45]-120.0*f[44]-207.8460969082653*f[43]-207.8460969082653*f[42]+120.0*f[41]-120.0*f[40]+207.8460969082653*f[39]-207.8460969082653*f[38]+120.0*f[37]+120.0*f[36]+207.8460969082653*f[35]-120.0*f[34]+120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]-100.6230589874906*f[29]+58.09475019311126*f[28]+100.6230589874906*f[26]+100.6230589874906*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]-100.6230589874906*f[19]+100.6230589874906*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.6230589874906*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = -(0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]+23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[0][1] = -(0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]+20.124611797498105*f[45]-11.618950038622252*f[44]-20.124611797498105*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]+11.618950038622252*f[36]+20.124611797498105*f[35]-11.618950038622252*f[34]+11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]-13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]+13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]+8.0*f[15]+13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]-13.416407864998737*f[45]+7.745966692414834*f[44]+13.416407864998737*f[43]+13.416407864998739*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]-13.416407864998739*f[39]+13.416407864998739*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.416407864998737*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]-6.7082039324993685*f[45]+3.872983346207417*f[44]+6.7082039324993685*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.7082039324993685*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]+13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]+12.0*f[16]+8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])); + fReflSurfXYMu[0][2] = -(0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]+467.65371804359694*f[45]-269.99999999999994*f[44]-467.65371804359694*f[43]-467.65371804359665*f[42]+270.0*f[41]-270.0*f[40]+467.65371804359665*f[39]-467.65371804359665*f[38]+270.0*f[37]+269.99999999999994*f[36]+467.65371804359694*f[35]-269.99999999999994*f[34]+269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]+301.86917696247167*f[29]-174.28425057933373*f[28]-301.86917696247167*f[26]-301.86917696247167*f[25]+174.28425057933373*f[24]-174.28425057933373*f[23]+301.86917696247167*f[19]-301.86917696247167*f[18]+174.28425057933373*f[17]+174.28425057933373*f[15]+301.86917696247167*f[11]-174.28425057933373*f[10]+174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]+300.00000000000006*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]-300.00000000000006*f[36]-519.6152422706633*f[35]+300.00000000000006*f[34]-300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]+116.18950038622252*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]-116.18950038622252*f[24]+116.18950038622252*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]-116.18950038622252*f[17]-116.18950038622252*f[15]-201.2461179749811*f[11]+116.18950038622252*f[10]-116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]+259.80762113533166*f[45]-150.00000000000003*f[44]-259.80762113533166*f[43]-259.80762113533154*f[42]+150.0*f[41]-150.0*f[40]+259.80762113533154*f[39]-259.80762113533154*f[38]+150.0*f[37]+150.00000000000003*f[36]+259.80762113533166*f[35]-150.00000000000003*f[34]+150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]-207.84609690826528*f[46]+207.84609690826528*f[45]-120.00000000000001*f[44]-207.84609690826528*f[43]-207.84609690826525*f[42]+120.0*f[41]-120.0*f[40]+207.84609690826525*f[39]-207.84609690826525*f[38]+120.0*f[37]+120.00000000000001*f[36]+207.84609690826528*f[35]-120.00000000000001*f[34]+120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]-100.62305898749055*f[29]+58.09475019311126*f[28]+100.62305898749055*f[26]+100.62305898749055*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]-100.62305898749055*f[19]+100.62305898749055*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.62305898749055*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4])); } else { // vcut in logical space. @@ -1219,27 +1302,45 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = 0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]+23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]+20.1246117974981*f[45]-11.61895003862225*f[44]-20.1246117974981*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]+11.61895003862225*f[36]+20.1246117974981*f[35]-11.61895003862225*f[34]+11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]-13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]+13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]+8.0*f[15]+13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]-13.41640786499874*f[45]+7.745966692414834*f[44]+13.41640786499874*f[43]+13.41640786499874*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]-13.41640786499874*f[39]+13.41640786499874*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.41640786499874*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]-6.708203932499369*f[45]+3.872983346207417*f[44]+6.708203932499369*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.708203932499369*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]-13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]+12.0*f[16]-8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = 0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]+467.6537180435969*f[45]-269.9999999999999*f[44]-467.6537180435969*f[43]-467.6537180435967*f[42]+270.0*f[41]-270.0*f[40]+467.6537180435967*f[39]-467.6537180435967*f[38]+270.0*f[37]+269.9999999999999*f[36]+467.6537180435969*f[35]-269.9999999999999*f[34]+269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]+301.8691769624717*f[29]-174.2842505793337*f[28]-301.8691769624717*f[26]-301.8691769624717*f[25]+174.2842505793337*f[24]-174.2842505793337*f[23]+301.8691769624717*f[19]-301.8691769624717*f[18]+174.2842505793337*f[17]+174.2842505793337*f[15]+301.8691769624717*f[11]-174.2842505793337*f[10]+174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]+300.0000000000001*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]-300.0000000000001*f[36]-519.6152422706633*f[35]+300.0000000000001*f[34]-300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]+116.1895003862225*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]-116.1895003862225*f[24]+116.1895003862225*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]-116.1895003862225*f[17]-116.1895003862225*f[15]-201.2461179749811*f[11]+116.1895003862225*f[10]-116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]+259.8076211353317*f[45]-150.0*f[44]-259.8076211353317*f[43]-259.8076211353315*f[42]+150.0*f[41]-150.0*f[40]+259.8076211353315*f[39]-259.8076211353315*f[38]+150.0*f[37]+150.0*f[36]+259.8076211353317*f[35]-150.0*f[34]+150.0*f[33]-150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]+207.8460969082653*f[46]-207.8460969082653*f[45]+120.0*f[44]+207.8460969082653*f[43]+207.8460969082653*f[42]-120.0*f[41]+120.0*f[40]-207.8460969082653*f[39]+207.8460969082653*f[38]-120.0*f[37]-120.0*f[36]-207.8460969082653*f[35]+120.0*f[34]-120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]-100.6230589874906*f[29]+58.09475019311126*f[28]+100.6230589874906*f[26]+100.6230589874906*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]-100.6230589874906*f[19]+100.6230589874906*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.6230589874906*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = 0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]+23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]+20.124611797498105*f[45]-11.618950038622252*f[44]-20.124611797498105*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]+11.618950038622252*f[36]+20.124611797498105*f[35]-11.618950038622252*f[34]+11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]-13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]+13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]+8.0*f[15]+13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]-13.416407864998737*f[45]+7.745966692414834*f[44]+13.416407864998737*f[43]+13.416407864998739*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]-13.416407864998739*f[39]+13.416407864998739*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.416407864998737*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]-6.7082039324993685*f[45]+3.872983346207417*f[44]+6.7082039324993685*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.7082039324993685*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]-13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]+12.0*f[16]-8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); + fReflSurfXYMu[0][2] = 0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]+467.65371804359694*f[45]-269.99999999999994*f[44]-467.65371804359694*f[43]-467.65371804359665*f[42]+270.0*f[41]-270.0*f[40]+467.65371804359665*f[39]-467.65371804359665*f[38]+270.0*f[37]+269.99999999999994*f[36]+467.65371804359694*f[35]-269.99999999999994*f[34]+269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]+301.86917696247167*f[29]-174.28425057933373*f[28]-301.86917696247167*f[26]-301.86917696247167*f[25]+174.28425057933373*f[24]-174.28425057933373*f[23]+301.86917696247167*f[19]-301.86917696247167*f[18]+174.28425057933373*f[17]+174.28425057933373*f[15]+301.86917696247167*f[11]-174.28425057933373*f[10]+174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]+300.00000000000006*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]-300.00000000000006*f[36]-519.6152422706633*f[35]+300.00000000000006*f[34]-300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]+116.18950038622252*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]-116.18950038622252*f[24]+116.18950038622252*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]-116.18950038622252*f[17]-116.18950038622252*f[15]-201.2461179749811*f[11]+116.18950038622252*f[10]-116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]+259.80762113533166*f[45]-150.00000000000003*f[44]-259.80762113533166*f[43]-259.80762113533154*f[42]+150.0*f[41]-150.0*f[40]+259.80762113533154*f[39]-259.80762113533154*f[38]+150.0*f[37]+150.00000000000003*f[36]+259.80762113533166*f[35]-150.00000000000003*f[34]+150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]+207.84609690826528*f[46]-207.84609690826528*f[45]+120.00000000000001*f[44]+207.84609690826528*f[43]+207.84609690826525*f[42]-120.0*f[41]+120.0*f[40]-207.84609690826525*f[39]+207.84609690826525*f[38]-120.0*f[37]-120.00000000000001*f[36]-207.84609690826528*f[35]+120.00000000000001*f[34]-120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]-100.62305898749055*f[29]+58.09475019311126*f[28]+100.62305898749055*f[26]+100.62305898749055*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]-100.62305898749055*f[19]+100.62305898749055*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.62305898749055*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4]); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; - if (fReflSurfXYMu[0][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; + if (fReflSurfXYMu[0][0]<0.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; + } + } - // node (mu)_1 + // node (mu)_1 + 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) + + fReflSurfXYMu[1][0] = 0.0; + fReflSurfXYMu[1][1] = 0.0; + fReflSurfXYMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfXYMu[1][0] = 0.25*(1.7320508075688772*(f[27]-1.0*f[22]+f[21])-1.0*f[20]+1.7320508075688772*(f[16]-1.0*f[14])+f[13]-1.0*f[12]+1.7320508075688772*(f[7]-1.0*f[8])-1.0*f[6]+f[5]-1.7320508075688772*f[3]+f[2]-1.0*f[1]+f[0]); + fReflSurfXYMu[1][1] = 0.25*(1.7320508075688772*(f[31]-1.0*f[30]+f[29])-1.0*f[28]+1.7320508075688772*(f[26]-1.0*f[25])+f[24]-1.0*f[23]+1.7320508075688772*(f[18]-1.0*f[19])-1.0*f[17]+f[15]-1.7320508075688772*f[11]+f[10]-1.0*f[9]+f[4]); + fReflSurfXYMu[1][2] = 0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(3.0*(f[45]-1.0*f[46])-1.7320508075688772*f[44]+3.0*f[43])+5.0*(-(5.196152422706631*f[42])+3.0*(f[41]-1.0*f[40])+5.196152422706631*(f[38]-1.0*f[39])-3.0*f[37])+8.660254037844387*(1.7320508075688772*f[36]-3.0*f[35]+1.7320508075688772*(f[34]-1.0*f[33]))+15.0*f[32]); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1249,9 +1350,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = 0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]-23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]+20.1246117974981*f[45]-11.61895003862225*f[44]+20.1246117974981*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]+11.61895003862225*f[36]-20.1246117974981*f[35]+11.61895003862225*f[34]-11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]+13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]-13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]+8.0*f[15]-13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]-13.41640786499874*f[45]+7.745966692414834*f[44]-13.41640786499874*f[43]+13.41640786499874*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]+13.41640786499874*f[39]-13.41640786499874*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.41640786499874*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]-6.708203932499369*f[45]+3.872983346207417*f[44]-6.708203932499369*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.708203932499369*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]+13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]-12.0*f[16]+8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = 0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]+467.6537180435969*f[45]-269.9999999999999*f[44]+467.6537180435969*f[43]-467.6537180435967*f[42]+270.0*f[41]-270.0*f[40]-467.6537180435967*f[39]+467.6537180435967*f[38]-270.0*f[37]+269.9999999999999*f[36]-467.6537180435969*f[35]+269.9999999999999*f[34]-269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]+301.8691769624717*f[29]-174.2842505793337*f[28]+301.8691769624717*f[26]-301.8691769624717*f[25]+174.2842505793337*f[24]-174.2842505793337*f[23]-301.8691769624717*f[19]+301.8691769624717*f[18]-174.2842505793337*f[17]+174.2842505793337*f[15]-301.8691769624717*f[11]+174.2842505793337*f[10]-174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]+300.0000000000001*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]-300.0000000000001*f[36]+519.6152422706633*f[35]-300.0000000000001*f[34]+300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]+116.1895003862225*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]-116.1895003862225*f[24]+116.1895003862225*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]+116.1895003862225*f[17]-116.1895003862225*f[15]+201.2461179749811*f[11]-116.1895003862225*f[10]+116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]+259.8076211353317*f[45]-150.0*f[44]+259.8076211353317*f[43]-259.8076211353315*f[42]+150.0*f[41]-150.0*f[40]-259.8076211353315*f[39]+259.8076211353315*f[38]-150.0*f[37]+150.0*f[36]-259.8076211353317*f[35]+150.0*f[34]-150.0*f[33]+150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]-207.8460969082653*f[46]+207.8460969082653*f[45]-120.0*f[44]+207.8460969082653*f[43]-207.8460969082653*f[42]+120.0*f[41]-120.0*f[40]-207.8460969082653*f[39]+207.8460969082653*f[38]-120.0*f[37]+120.0*f[36]-207.8460969082653*f[35]+120.0*f[34]-120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]-100.6230589874906*f[29]+58.09475019311126*f[28]-100.6230589874906*f[26]+100.6230589874906*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]+100.6230589874906*f[19]-100.6230589874906*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.6230589874906*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = 0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]-23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]+20.124611797498105*f[45]-11.618950038622252*f[44]+20.124611797498105*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]+11.618950038622252*f[36]-20.124611797498105*f[35]+11.618950038622252*f[34]-11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]+13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]-13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]+8.0*f[15]-13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]-13.416407864998737*f[45]+7.745966692414834*f[44]-13.416407864998737*f[43]+13.416407864998739*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]+13.416407864998739*f[39]-13.416407864998739*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.416407864998737*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]-6.7082039324993685*f[45]+3.872983346207417*f[44]-6.7082039324993685*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.7082039324993685*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]+13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]-12.0*f[16]+8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); + fReflSurfXYMu[1][2] = 0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]+467.65371804359694*f[45]-269.99999999999994*f[44]+467.65371804359694*f[43]-467.65371804359665*f[42]+270.0*f[41]-270.0*f[40]-467.65371804359665*f[39]+467.65371804359665*f[38]-270.0*f[37]+269.99999999999994*f[36]-467.65371804359694*f[35]+269.99999999999994*f[34]-269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]+301.86917696247167*f[29]-174.28425057933373*f[28]+301.86917696247167*f[26]-301.86917696247167*f[25]+174.28425057933373*f[24]-174.28425057933373*f[23]-301.86917696247167*f[19]+301.86917696247167*f[18]-174.28425057933373*f[17]+174.28425057933373*f[15]-301.86917696247167*f[11]+174.28425057933373*f[10]-174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]+300.00000000000006*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]-300.00000000000006*f[36]+519.6152422706633*f[35]-300.00000000000006*f[34]+300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]+116.18950038622252*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]-116.18950038622252*f[24]+116.18950038622252*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]+116.18950038622252*f[17]-116.18950038622252*f[15]+201.2461179749811*f[11]-116.18950038622252*f[10]+116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]+259.80762113533166*f[45]-150.00000000000003*f[44]+259.80762113533166*f[43]-259.80762113533154*f[42]+150.0*f[41]-150.0*f[40]-259.80762113533154*f[39]+259.80762113533154*f[38]-150.0*f[37]+150.00000000000003*f[36]-259.80762113533166*f[35]+150.00000000000003*f[34]-150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]-207.84609690826528*f[46]+207.84609690826528*f[45]-120.00000000000001*f[44]+207.84609690826528*f[43]-207.84609690826525*f[42]+120.0*f[41]-120.0*f[40]-207.84609690826525*f[39]+207.84609690826525*f[38]-120.0*f[37]+120.00000000000001*f[36]-207.84609690826528*f[35]+120.00000000000001*f[34]-120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]-100.62305898749055*f[29]+58.09475019311126*f[28]-100.62305898749055*f[26]+100.62305898749055*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]+100.62305898749055*f[19]-100.62305898749055*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.62305898749055*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4]); } else { // vcut in logical space. @@ -1262,24 +1363,26 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = -0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]-23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = -0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]+20.1246117974981*f[45]-11.61895003862225*f[44]+20.1246117974981*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]+11.61895003862225*f[36]-20.1246117974981*f[35]+11.61895003862225*f[34]-11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]+13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]-13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]+8.0*f[15]-13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]-13.41640786499874*f[45]+7.745966692414834*f[44]-13.41640786499874*f[43]+13.41640786499874*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]+13.41640786499874*f[39]-13.41640786499874*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.41640786499874*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]-6.708203932499369*f[45]+3.872983346207417*f[44]-6.708203932499369*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.708203932499369*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]-13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]-12.0*f[16]-8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = -0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]+467.6537180435969*f[45]-269.9999999999999*f[44]+467.6537180435969*f[43]-467.6537180435967*f[42]+270.0*f[41]-270.0*f[40]-467.6537180435967*f[39]+467.6537180435967*f[38]-270.0*f[37]+269.9999999999999*f[36]-467.6537180435969*f[35]+269.9999999999999*f[34]-269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]+301.8691769624717*f[29]-174.2842505793337*f[28]+301.8691769624717*f[26]-301.8691769624717*f[25]+174.2842505793337*f[24]-174.2842505793337*f[23]-301.8691769624717*f[19]+301.8691769624717*f[18]-174.2842505793337*f[17]+174.2842505793337*f[15]-301.8691769624717*f[11]+174.2842505793337*f[10]-174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]+300.0000000000001*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]-300.0000000000001*f[36]+519.6152422706633*f[35]-300.0000000000001*f[34]+300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]+116.1895003862225*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]-116.1895003862225*f[24]+116.1895003862225*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]+116.1895003862225*f[17]-116.1895003862225*f[15]+201.2461179749811*f[11]-116.1895003862225*f[10]+116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]+259.8076211353317*f[45]-150.0*f[44]+259.8076211353317*f[43]-259.8076211353315*f[42]+150.0*f[41]-150.0*f[40]-259.8076211353315*f[39]+259.8076211353315*f[38]-150.0*f[37]+150.0*f[36]-259.8076211353317*f[35]+150.0*f[34]-150.0*f[33]+150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]+207.8460969082653*f[46]-207.8460969082653*f[45]+120.0*f[44]-207.8460969082653*f[43]+207.8460969082653*f[42]-120.0*f[41]+120.0*f[40]+207.8460969082653*f[39]-207.8460969082653*f[38]+120.0*f[37]-120.0*f[36]+207.8460969082653*f[35]-120.0*f[34]+120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]-100.6230589874906*f[29]+58.09475019311126*f[28]-100.6230589874906*f[26]+100.6230589874906*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]+100.6230589874906*f[19]-100.6230589874906*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.6230589874906*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = -(0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]-23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[1][1] = -(0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]+20.124611797498105*f[45]-11.618950038622252*f[44]+20.124611797498105*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]+11.618950038622252*f[36]-20.124611797498105*f[35]+11.618950038622252*f[34]-11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]+13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]-13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]+8.0*f[15]-13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]-13.416407864998737*f[45]+7.745966692414834*f[44]-13.416407864998737*f[43]+13.416407864998739*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]+13.416407864998739*f[39]-13.416407864998739*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.416407864998737*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]-6.7082039324993685*f[45]+3.872983346207417*f[44]-6.7082039324993685*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.7082039324993685*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]-13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]-12.0*f[16]-8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])); + fReflSurfXYMu[1][2] = -(0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]+467.65371804359694*f[45]-269.99999999999994*f[44]+467.65371804359694*f[43]-467.65371804359665*f[42]+270.0*f[41]-270.0*f[40]-467.65371804359665*f[39]+467.65371804359665*f[38]-270.0*f[37]+269.99999999999994*f[36]-467.65371804359694*f[35]+269.99999999999994*f[34]-269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]+301.86917696247167*f[29]-174.28425057933373*f[28]+301.86917696247167*f[26]-301.86917696247167*f[25]+174.28425057933373*f[24]-174.28425057933373*f[23]-301.86917696247167*f[19]+301.86917696247167*f[18]-174.28425057933373*f[17]+174.28425057933373*f[15]-301.86917696247167*f[11]+174.28425057933373*f[10]-174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]+300.00000000000006*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]-300.00000000000006*f[36]+519.6152422706633*f[35]-300.00000000000006*f[34]+300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]+116.18950038622252*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]-116.18950038622252*f[24]+116.18950038622252*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]+116.18950038622252*f[17]-116.18950038622252*f[15]+201.2461179749811*f[11]-116.18950038622252*f[10]+116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]+259.80762113533166*f[45]-150.00000000000003*f[44]+259.80762113533166*f[43]-259.80762113533154*f[42]+150.0*f[41]-150.0*f[40]-259.80762113533154*f[39]+259.80762113533154*f[38]-150.0*f[37]+150.00000000000003*f[36]-259.80762113533166*f[35]+150.00000000000003*f[34]-150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]+207.84609690826528*f[46]-207.84609690826528*f[45]+120.00000000000001*f[44]-207.84609690826528*f[43]+207.84609690826525*f[42]-120.0*f[41]+120.0*f[40]+207.84609690826525*f[39]-207.84609690826525*f[38]+120.0*f[37]-120.00000000000001*f[36]+207.84609690826528*f[35]-120.00000000000001*f[34]+120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]-100.62305898749055*f[29]+58.09475019311126*f[28]-100.62305898749055*f[26]+100.62305898749055*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]+100.62305898749055*f[19]-100.62305898749055*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.62305898749055*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4])); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; - if (fReflSurfXYMu[1][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; + if (fReflSurfXYMu[1][0]<0.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; + } + } fReflSurfXY[1][0] = 0.7071067811865475*(fReflSurfXYMu[1][0]+fReflSurfXYMu[0][0]); @@ -1289,38 +1392,28 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double fReflSurfXY[1][4] = 0.7071067811865475*(fReflSurfXYMu[1][2]+fReflSurfXYMu[0][2]); fReflSurfXY[1][5] = 0.7071067811865475*(fReflSurfXYMu[1][2]-1.0*fReflSurfXYMu[0][2]); - } - // node (x,y)_2 - vcutSq = 0.25*(2.449489742783178*phiWall[7]-2.449489742783178*phi[7]+2.449489742783178*phiWall[6]-2.449489742783178*(phi[6]+phiWall[5])+2.449489742783178*phi[5]-1.414213562373095*phiWall[4]+1.414213562373095*phi[4]-2.449489742783178*phiWall[3]+2.449489742783178*phi[3]-1.414213562373095*phiWall[2]+1.414213562373095*(phi[2]+phiWall[1])-1.414213562373095*phi[1]+1.414213562373095*phiWall[0]-1.414213562373095*phi[0])*q2Dm; - if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) + wv = 0.5*vparUp+0.5*vparLo; + dv = vparUp-1.0*vparLo; - fReflSurfXY[2][0] = 0.0; - fReflSurfXY[2][1] = 0.0; - fReflSurfXY[2][2] = 0.0; - fReflSurfXY[2][3] = 0.0; - fReflSurfXY[2][4] = 0.0; - fReflSurfXY[2][5] = 0.0; + // node (mu)_0 + 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; - } else if (vcutSq > vparAbsSqUp) { // full reflection + if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) - fReflSurfXY[2][0] = 0.3535533905932737*(1.732050807568877*(f[16]+f[8])-1.0*(1.732050807568877*f[7]+f[6]+1.732050807568877*f[3]+f[2])+f[1]+f[0]); - fReflSurfXY[2][1] = 0.3535533905932737*(1.732050807568877*(f[26]+f[19])-1.0*(1.732050807568877*f[18]+f[17]+1.732050807568877*f[11]+f[10])+f[9]+f[4]); - fReflSurfXY[2][2] = 0.3535533905932737*(1.732050807568877*(f[27]+f[22])-1.0*(1.732050807568877*f[21]+f[20]+1.732050807568877*f[14]+f[13])+f[12]+f[5]); - fReflSurfXY[2][3] = 0.3535533905932737*(1.732050807568877*(f[31]+f[30])-1.0*(1.732050807568877*f[29]+f[28]+1.732050807568877*f[25]+f[24])+f[23]+f[15]); - fReflSurfXY[2][4] = 0.02357022603955158*(25.98076211353316*f[43]+5.0*(5.196152422706631*f[39]-1.0*(5.196152422706631*f[38]+3.0*f[37]))+8.660254037844387*(1.732050807568877*(f[33]-1.0*f[34])-3.0*f[35])+15.0*f[32]); - fReflSurfXY[2][5] = 0.02357022603955158*(25.98076211353316*f[47]+5.0*(5.196152422706631*f[46]-1.0*(5.196152422706631*f[45]+3.0*f[44]))+8.660254037844387*(1.732050807568877*(f[40]-1.0*f[41])-3.0*f[42])+15.0*f[36]); + fReflSurfXYMu[0][0] = 0.0; + fReflSurfXYMu[0][1] = 0.0; + fReflSurfXYMu[0][2] = 0.0; - } else { // partial reflection + } else if (vcutSq > vparAbsSqUp) { // full reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; + fReflSurfXYMu[0][0] = -(0.25*(1.7320508075688772*(f[27]+f[22])-1.0*(1.7320508075688772*f[21]+f[20]+1.7320508075688772*(f[16]+f[14])+f[13])+f[12]+1.7320508075688772*(f[7]-1.0*f[8])+f[6]+f[5]+1.7320508075688772*f[3]+f[2]-1.0*(f[1]+f[0]))); + fReflSurfXYMu[0][1] = -(0.25*(1.7320508075688772*(f[31]+f[30])-1.0*(1.7320508075688772*f[29]+f[28]+1.7320508075688772*(f[26]+f[25])+f[24])+f[23]+1.7320508075688772*(f[18]-1.0*f[19])+f[17]+f[15]+1.7320508075688772*f[11]+f[10]-1.0*(f[9]+f[4]))); + fReflSurfXYMu[0][2] = -(0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(3.0*f[46]-1.0*(3.0*f[45]+1.7320508075688772*f[44]+3.0*f[43]))+5.0*(-(5.196152422706631*f[42])+3.0*(f[40]-1.0*f[41])+5.196152422706631*(f[38]-1.0*f[39])+3.0*f[37])+8.660254037844387*(1.7320508075688772*f[36]+3.0*f[35]+1.7320508075688772*f[34])-1.0*(15.000000000000002*f[33]+15.0*f[32]))); - double xBar, xSqBar; - double fReflSurfXYMu[2][3] = {0.}; + } else { // partial reflection - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1330,9 +1423,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = -0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]+23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = -0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]-20.1246117974981*f[45]-11.61895003862225*f[44]-20.1246117974981*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]+11.61895003862225*f[36]+20.1246117974981*f[35]+11.61895003862225*f[34]-11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]-13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]-13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]+8.0*f[15]+13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]+13.41640786499874*f[45]+7.745966692414834*f[44]+13.41640786499874*f[43]+13.41640786499874*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]+13.41640786499874*f[39]-13.41640786499874*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.41640786499874*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]+6.708203932499369*f[45]+3.872983346207417*f[44]+6.708203932499369*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.708203932499369*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]+13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]+12.0*f[16]+8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = -0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]-467.6537180435969*f[45]-269.9999999999999*f[44]-467.6537180435969*f[43]-467.6537180435967*f[42]-270.0*f[41]+270.0*f[40]-467.6537180435967*f[39]+467.6537180435967*f[38]+270.0*f[37]+269.9999999999999*f[36]+467.6537180435969*f[35]+269.9999999999999*f[34]-269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]-301.8691769624717*f[29]-174.2842505793337*f[28]-301.8691769624717*f[26]-301.8691769624717*f[25]-174.2842505793337*f[24]+174.2842505793337*f[23]-301.8691769624717*f[19]+301.8691769624717*f[18]+174.2842505793337*f[17]+174.2842505793337*f[15]+301.8691769624717*f[11]+174.2842505793337*f[10]-174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]+300.0000000000001*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]-300.0000000000001*f[36]-519.6152422706633*f[35]-300.0000000000001*f[34]+300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]+116.1895003862225*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]+116.1895003862225*f[24]-116.1895003862225*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]-116.1895003862225*f[17]-116.1895003862225*f[15]-201.2461179749811*f[11]-116.1895003862225*f[10]+116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]-259.8076211353317*f[45]-150.0*f[44]-259.8076211353317*f[43]-259.8076211353315*f[42]-150.0*f[41]+150.0*f[40]-259.8076211353315*f[39]+259.8076211353315*f[38]+150.0*f[37]+150.0*f[36]+259.8076211353317*f[35]+150.0*f[34]-150.0*f[33]-150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]+207.8460969082653*f[46]-207.8460969082653*f[45]-120.0*f[44]-207.8460969082653*f[43]-207.8460969082653*f[42]-120.0*f[41]+120.0*f[40]-207.8460969082653*f[39]+207.8460969082653*f[38]+120.0*f[37]+120.0*f[36]+207.8460969082653*f[35]+120.0*f[34]-120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]+100.6230589874906*f[29]+58.09475019311126*f[28]+100.6230589874906*f[26]+100.6230589874906*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]+100.6230589874906*f[19]-100.6230589874906*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.6230589874906*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = -(0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]+23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[0][1] = -(0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]-20.124611797498105*f[45]-11.618950038622252*f[44]-20.124611797498105*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]+11.618950038622252*f[36]+20.124611797498105*f[35]+11.618950038622252*f[34]-11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]-13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]-13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]+8.0*f[15]+13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]+13.416407864998737*f[45]+7.745966692414834*f[44]+13.416407864998737*f[43]+13.416407864998739*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]+13.416407864998739*f[39]-13.416407864998739*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.416407864998737*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]+6.7082039324993685*f[45]+3.872983346207417*f[44]+6.7082039324993685*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.7082039324993685*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]+13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]+12.0*f[16]+8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])); + fReflSurfXYMu[0][2] = -(0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]-467.65371804359694*f[45]-269.99999999999994*f[44]-467.65371804359694*f[43]-467.65371804359665*f[42]-270.0*f[41]+270.0*f[40]-467.65371804359665*f[39]+467.65371804359665*f[38]+270.0*f[37]+269.99999999999994*f[36]+467.65371804359694*f[35]+269.99999999999994*f[34]-269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]-301.86917696247167*f[29]-174.28425057933373*f[28]-301.86917696247167*f[26]-301.86917696247167*f[25]-174.28425057933373*f[24]+174.28425057933373*f[23]-301.86917696247167*f[19]+301.86917696247167*f[18]+174.28425057933373*f[17]+174.28425057933373*f[15]+301.86917696247167*f[11]+174.28425057933373*f[10]-174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]+300.00000000000006*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]-300.00000000000006*f[36]-519.6152422706633*f[35]-300.00000000000006*f[34]+300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]+116.18950038622252*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]+116.18950038622252*f[24]-116.18950038622252*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]-116.18950038622252*f[17]-116.18950038622252*f[15]-201.2461179749811*f[11]-116.18950038622252*f[10]+116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]-259.80762113533166*f[45]-150.00000000000003*f[44]-259.80762113533166*f[43]-259.80762113533154*f[42]-150.0*f[41]+150.0*f[40]-259.80762113533154*f[39]+259.80762113533154*f[38]+150.0*f[37]+150.00000000000003*f[36]+259.80762113533166*f[35]+150.00000000000003*f[34]-150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]+207.84609690826528*f[46]-207.84609690826528*f[45]-120.00000000000001*f[44]-207.84609690826528*f[43]-207.84609690826525*f[42]-120.0*f[41]+120.0*f[40]-207.84609690826525*f[39]+207.84609690826525*f[38]+120.0*f[37]+120.00000000000001*f[36]+207.84609690826528*f[35]+120.00000000000001*f[34]-120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]+100.62305898749055*f[29]+58.09475019311126*f[28]+100.62305898749055*f[26]+100.62305898749055*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]+100.62305898749055*f[19]-100.62305898749055*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.62305898749055*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4])); } else { // vcut in logical space. @@ -1343,27 +1436,45 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = 0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]+23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]-20.1246117974981*f[45]-11.61895003862225*f[44]-20.1246117974981*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]+11.61895003862225*f[36]+20.1246117974981*f[35]+11.61895003862225*f[34]-11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]-13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]-13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]+8.0*f[15]+13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]+13.41640786499874*f[45]+7.745966692414834*f[44]+13.41640786499874*f[43]+13.41640786499874*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]+13.41640786499874*f[39]-13.41640786499874*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.41640786499874*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]+6.708203932499369*f[45]+3.872983346207417*f[44]+6.708203932499369*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.708203932499369*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]-13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]+12.0*f[16]-8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = 0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]-467.6537180435969*f[45]-269.9999999999999*f[44]-467.6537180435969*f[43]-467.6537180435967*f[42]-270.0*f[41]+270.0*f[40]-467.6537180435967*f[39]+467.6537180435967*f[38]+270.0*f[37]+269.9999999999999*f[36]+467.6537180435969*f[35]+269.9999999999999*f[34]-269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]-301.8691769624717*f[29]-174.2842505793337*f[28]-301.8691769624717*f[26]-301.8691769624717*f[25]-174.2842505793337*f[24]+174.2842505793337*f[23]-301.8691769624717*f[19]+301.8691769624717*f[18]+174.2842505793337*f[17]+174.2842505793337*f[15]+301.8691769624717*f[11]+174.2842505793337*f[10]-174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]+300.0000000000001*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]-300.0000000000001*f[36]-519.6152422706633*f[35]-300.0000000000001*f[34]+300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]+116.1895003862225*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]+116.1895003862225*f[24]-116.1895003862225*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]-116.1895003862225*f[17]-116.1895003862225*f[15]-201.2461179749811*f[11]-116.1895003862225*f[10]+116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]-259.8076211353317*f[45]-150.0*f[44]-259.8076211353317*f[43]-259.8076211353315*f[42]-150.0*f[41]+150.0*f[40]-259.8076211353315*f[39]+259.8076211353315*f[38]+150.0*f[37]+150.0*f[36]+259.8076211353317*f[35]+150.0*f[34]-150.0*f[33]-150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]-207.8460969082653*f[46]+207.8460969082653*f[45]+120.0*f[44]+207.8460969082653*f[43]+207.8460969082653*f[42]+120.0*f[41]-120.0*f[40]+207.8460969082653*f[39]-207.8460969082653*f[38]-120.0*f[37]-120.0*f[36]-207.8460969082653*f[35]-120.0*f[34]+120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]+100.6230589874906*f[29]+58.09475019311126*f[28]+100.6230589874906*f[26]+100.6230589874906*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]+100.6230589874906*f[19]-100.6230589874906*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.6230589874906*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = 0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]+23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]-20.124611797498105*f[45]-11.618950038622252*f[44]-20.124611797498105*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]+11.618950038622252*f[36]+20.124611797498105*f[35]+11.618950038622252*f[34]-11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]-13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]-13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]+8.0*f[15]+13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]+13.416407864998737*f[45]+7.745966692414834*f[44]+13.416407864998737*f[43]+13.416407864998739*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]+13.416407864998739*f[39]-13.416407864998739*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.416407864998737*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]+6.7082039324993685*f[45]+3.872983346207417*f[44]+6.7082039324993685*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.7082039324993685*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]-13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]+12.0*f[16]-8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); + fReflSurfXYMu[0][2] = 0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]-467.65371804359694*f[45]-269.99999999999994*f[44]-467.65371804359694*f[43]-467.65371804359665*f[42]-270.0*f[41]+270.0*f[40]-467.65371804359665*f[39]+467.65371804359665*f[38]+270.0*f[37]+269.99999999999994*f[36]+467.65371804359694*f[35]+269.99999999999994*f[34]-269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]-301.86917696247167*f[29]-174.28425057933373*f[28]-301.86917696247167*f[26]-301.86917696247167*f[25]-174.28425057933373*f[24]+174.28425057933373*f[23]-301.86917696247167*f[19]+301.86917696247167*f[18]+174.28425057933373*f[17]+174.28425057933373*f[15]+301.86917696247167*f[11]+174.28425057933373*f[10]-174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]+300.00000000000006*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]-300.00000000000006*f[36]-519.6152422706633*f[35]-300.00000000000006*f[34]+300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]+116.18950038622252*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]+116.18950038622252*f[24]-116.18950038622252*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]-116.18950038622252*f[17]-116.18950038622252*f[15]-201.2461179749811*f[11]-116.18950038622252*f[10]+116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]-259.80762113533166*f[45]-150.00000000000003*f[44]-259.80762113533166*f[43]-259.80762113533154*f[42]-150.0*f[41]+150.0*f[40]-259.80762113533154*f[39]+259.80762113533154*f[38]+150.0*f[37]+150.00000000000003*f[36]+259.80762113533166*f[35]+150.00000000000003*f[34]-150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]-207.84609690826528*f[46]+207.84609690826528*f[45]+120.00000000000001*f[44]+207.84609690826528*f[43]+207.84609690826525*f[42]+120.0*f[41]-120.0*f[40]+207.84609690826525*f[39]-207.84609690826525*f[38]-120.0*f[37]-120.00000000000001*f[36]-207.84609690826528*f[35]-120.00000000000001*f[34]+120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]+100.62305898749055*f[29]+58.09475019311126*f[28]+100.62305898749055*f[26]+100.62305898749055*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]+100.62305898749055*f[19]-100.62305898749055*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.62305898749055*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4]); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; - if (fReflSurfXYMu[0][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; + if (fReflSurfXYMu[0][0]<0.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; + } + } - // node (mu)_1 + // node (mu)_1 + 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) + + fReflSurfXYMu[1][0] = 0.0; + fReflSurfXYMu[1][1] = 0.0; + fReflSurfXYMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfXYMu[1][0] = 0.25*(1.7320508075688772*(f[27]+f[22])-1.0*(1.7320508075688772*f[21]+f[20])+1.7320508075688772*f[16]-1.0*(1.7320508075688772*f[14]+f[13])+f[12]+1.7320508075688772*f[8]-1.0*(1.7320508075688772*f[7]+f[6])+f[5]-1.0*(1.7320508075688772*f[3]+f[2])+f[1]+f[0]); + fReflSurfXYMu[1][1] = 0.25*(1.7320508075688772*(f[31]+f[30])-1.0*(1.7320508075688772*f[29]+f[28])+1.7320508075688772*f[26]-1.0*(1.7320508075688772*f[25]+f[24])+f[23]+1.7320508075688772*f[19]-1.0*(1.7320508075688772*f[18]+f[17])+f[15]-1.0*(1.7320508075688772*f[11]+f[10])+f[9]+f[4]); + fReflSurfXYMu[1][2] = 0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(3.0*f[46]-1.0*(3.0*f[45]+1.7320508075688772*f[44]-3.0*f[43]))+5.0*(-(5.196152422706631*f[42])+3.0*(f[40]-1.0*f[41])+5.196152422706631*f[39]-1.0*(5.196152422706631*f[38]+3.0*f[37]))+8.660254037844387*(1.7320508075688772*f[36]-3.0*f[35]+1.7320508075688772*(f[33]-1.0*f[34]))+15.0*f[32]); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1373,9 +1484,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = 0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]-23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]-20.1246117974981*f[45]-11.61895003862225*f[44]+20.1246117974981*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]+11.61895003862225*f[36]-20.1246117974981*f[35]-11.61895003862225*f[34]+11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]+13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]+13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]+8.0*f[15]-13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]+13.41640786499874*f[45]+7.745966692414834*f[44]-13.41640786499874*f[43]+13.41640786499874*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]-13.41640786499874*f[39]+13.41640786499874*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.41640786499874*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]+6.708203932499369*f[45]+3.872983346207417*f[44]-6.708203932499369*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.708203932499369*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]+13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]-12.0*f[16]+8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = 0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]-467.6537180435969*f[45]-269.9999999999999*f[44]+467.6537180435969*f[43]-467.6537180435967*f[42]-270.0*f[41]+270.0*f[40]+467.6537180435967*f[39]-467.6537180435967*f[38]-270.0*f[37]+269.9999999999999*f[36]-467.6537180435969*f[35]-269.9999999999999*f[34]+269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]-301.8691769624717*f[29]-174.2842505793337*f[28]+301.8691769624717*f[26]-301.8691769624717*f[25]-174.2842505793337*f[24]+174.2842505793337*f[23]+301.8691769624717*f[19]-301.8691769624717*f[18]-174.2842505793337*f[17]+174.2842505793337*f[15]-301.8691769624717*f[11]-174.2842505793337*f[10]+174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]+300.0000000000001*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]-300.0000000000001*f[36]+519.6152422706633*f[35]+300.0000000000001*f[34]-300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]+116.1895003862225*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]+116.1895003862225*f[24]-116.1895003862225*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]+116.1895003862225*f[17]-116.1895003862225*f[15]+201.2461179749811*f[11]+116.1895003862225*f[10]-116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]-259.8076211353317*f[45]-150.0*f[44]+259.8076211353317*f[43]-259.8076211353315*f[42]-150.0*f[41]+150.0*f[40]+259.8076211353315*f[39]-259.8076211353315*f[38]-150.0*f[37]+150.0*f[36]-259.8076211353317*f[35]-150.0*f[34]+150.0*f[33]+150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]+207.8460969082653*f[46]-207.8460969082653*f[45]-120.0*f[44]+207.8460969082653*f[43]-207.8460969082653*f[42]-120.0*f[41]+120.0*f[40]+207.8460969082653*f[39]-207.8460969082653*f[38]-120.0*f[37]+120.0*f[36]-207.8460969082653*f[35]-120.0*f[34]+120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]+100.6230589874906*f[29]+58.09475019311126*f[28]-100.6230589874906*f[26]+100.6230589874906*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]-100.6230589874906*f[19]+100.6230589874906*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.6230589874906*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = 0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]-23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]-20.124611797498105*f[45]-11.618950038622252*f[44]+20.124611797498105*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]+11.618950038622252*f[36]-20.124611797498105*f[35]-11.618950038622252*f[34]+11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]+13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]+13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]+8.0*f[15]-13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]+13.416407864998737*f[45]+7.745966692414834*f[44]-13.416407864998737*f[43]+13.416407864998739*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]-13.416407864998739*f[39]+13.416407864998739*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.416407864998737*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]+6.7082039324993685*f[45]+3.872983346207417*f[44]-6.7082039324993685*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.7082039324993685*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]+13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]-12.0*f[16]+8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); + fReflSurfXYMu[1][2] = 0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]-467.65371804359694*f[45]-269.99999999999994*f[44]+467.65371804359694*f[43]-467.65371804359665*f[42]-270.0*f[41]+270.0*f[40]+467.65371804359665*f[39]-467.65371804359665*f[38]-270.0*f[37]+269.99999999999994*f[36]-467.65371804359694*f[35]-269.99999999999994*f[34]+269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]-301.86917696247167*f[29]-174.28425057933373*f[28]+301.86917696247167*f[26]-301.86917696247167*f[25]-174.28425057933373*f[24]+174.28425057933373*f[23]+301.86917696247167*f[19]-301.86917696247167*f[18]-174.28425057933373*f[17]+174.28425057933373*f[15]-301.86917696247167*f[11]-174.28425057933373*f[10]+174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]+300.00000000000006*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]-300.00000000000006*f[36]+519.6152422706633*f[35]+300.00000000000006*f[34]-300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]+116.18950038622252*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]+116.18950038622252*f[24]-116.18950038622252*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]+116.18950038622252*f[17]-116.18950038622252*f[15]+201.2461179749811*f[11]+116.18950038622252*f[10]-116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]-259.80762113533166*f[45]-150.00000000000003*f[44]+259.80762113533166*f[43]-259.80762113533154*f[42]-150.0*f[41]+150.0*f[40]+259.80762113533154*f[39]-259.80762113533154*f[38]-150.0*f[37]+150.00000000000003*f[36]-259.80762113533166*f[35]-150.00000000000003*f[34]+150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]+207.84609690826528*f[46]-207.84609690826528*f[45]-120.00000000000001*f[44]+207.84609690826528*f[43]-207.84609690826525*f[42]-120.0*f[41]+120.0*f[40]+207.84609690826525*f[39]-207.84609690826525*f[38]-120.0*f[37]+120.00000000000001*f[36]-207.84609690826528*f[35]-120.00000000000001*f[34]+120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]+100.62305898749055*f[29]+58.09475019311126*f[28]-100.62305898749055*f[26]+100.62305898749055*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]-100.62305898749055*f[19]+100.62305898749055*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.62305898749055*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4]); } else { // vcut in logical space. @@ -1386,24 +1497,26 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = -0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]-23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = -0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]-20.1246117974981*f[45]-11.61895003862225*f[44]+20.1246117974981*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]+11.61895003862225*f[36]-20.1246117974981*f[35]-11.61895003862225*f[34]+11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]+13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]+13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]+8.0*f[15]-13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]+13.41640786499874*f[45]+7.745966692414834*f[44]-13.41640786499874*f[43]+13.41640786499874*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]-13.41640786499874*f[39]+13.41640786499874*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.41640786499874*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]+6.708203932499369*f[45]+3.872983346207417*f[44]-6.708203932499369*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.708203932499369*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]-13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]-12.0*f[16]-8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = -0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]-467.6537180435969*f[45]-269.9999999999999*f[44]+467.6537180435969*f[43]-467.6537180435967*f[42]-270.0*f[41]+270.0*f[40]+467.6537180435967*f[39]-467.6537180435967*f[38]-270.0*f[37]+269.9999999999999*f[36]-467.6537180435969*f[35]-269.9999999999999*f[34]+269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]-301.8691769624717*f[29]-174.2842505793337*f[28]+301.8691769624717*f[26]-301.8691769624717*f[25]-174.2842505793337*f[24]+174.2842505793337*f[23]+301.8691769624717*f[19]-301.8691769624717*f[18]-174.2842505793337*f[17]+174.2842505793337*f[15]-301.8691769624717*f[11]-174.2842505793337*f[10]+174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]+300.0000000000001*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]-300.0000000000001*f[36]+519.6152422706633*f[35]+300.0000000000001*f[34]-300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]+116.1895003862225*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]+116.1895003862225*f[24]-116.1895003862225*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]+116.1895003862225*f[17]-116.1895003862225*f[15]+201.2461179749811*f[11]+116.1895003862225*f[10]-116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]-259.8076211353317*f[45]-150.0*f[44]+259.8076211353317*f[43]-259.8076211353315*f[42]-150.0*f[41]+150.0*f[40]+259.8076211353315*f[39]-259.8076211353315*f[38]-150.0*f[37]+150.0*f[36]-259.8076211353317*f[35]-150.0*f[34]+150.0*f[33]+150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]-207.8460969082653*f[46]+207.8460969082653*f[45]+120.0*f[44]-207.8460969082653*f[43]+207.8460969082653*f[42]+120.0*f[41]-120.0*f[40]-207.8460969082653*f[39]+207.8460969082653*f[38]+120.0*f[37]-120.0*f[36]+207.8460969082653*f[35]+120.0*f[34]-120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]+100.6230589874906*f[29]+58.09475019311126*f[28]-100.6230589874906*f[26]+100.6230589874906*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]-100.6230589874906*f[19]+100.6230589874906*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.6230589874906*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = -(0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]-23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[1][1] = -(0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]-20.124611797498105*f[45]-11.618950038622252*f[44]+20.124611797498105*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]+11.618950038622252*f[36]-20.124611797498105*f[35]-11.618950038622252*f[34]+11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]+13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]+13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]+8.0*f[15]-13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]+13.416407864998737*f[45]+7.745966692414834*f[44]-13.416407864998737*f[43]+13.416407864998739*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]-13.416407864998739*f[39]+13.416407864998739*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.416407864998737*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]+6.7082039324993685*f[45]+3.872983346207417*f[44]-6.7082039324993685*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.7082039324993685*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]-13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]-12.0*f[16]-8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])); + fReflSurfXYMu[1][2] = -(0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]-467.65371804359694*f[45]-269.99999999999994*f[44]+467.65371804359694*f[43]-467.65371804359665*f[42]-270.0*f[41]+270.0*f[40]+467.65371804359665*f[39]-467.65371804359665*f[38]-270.0*f[37]+269.99999999999994*f[36]-467.65371804359694*f[35]-269.99999999999994*f[34]+269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]-301.86917696247167*f[29]-174.28425057933373*f[28]+301.86917696247167*f[26]-301.86917696247167*f[25]-174.28425057933373*f[24]+174.28425057933373*f[23]+301.86917696247167*f[19]-301.86917696247167*f[18]-174.28425057933373*f[17]+174.28425057933373*f[15]-301.86917696247167*f[11]-174.28425057933373*f[10]+174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]+300.00000000000006*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]-300.00000000000006*f[36]+519.6152422706633*f[35]+300.00000000000006*f[34]-300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]+116.18950038622252*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]+116.18950038622252*f[24]-116.18950038622252*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]+116.18950038622252*f[17]-116.18950038622252*f[15]+201.2461179749811*f[11]+116.18950038622252*f[10]-116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]-259.80762113533166*f[45]-150.00000000000003*f[44]+259.80762113533166*f[43]-259.80762113533154*f[42]-150.0*f[41]+150.0*f[40]+259.80762113533154*f[39]-259.80762113533154*f[38]-150.0*f[37]+150.00000000000003*f[36]-259.80762113533166*f[35]-150.00000000000003*f[34]+150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]-207.84609690826528*f[46]+207.84609690826528*f[45]+120.00000000000001*f[44]-207.84609690826528*f[43]+207.84609690826525*f[42]+120.0*f[41]-120.0*f[40]-207.84609690826525*f[39]+207.84609690826525*f[38]+120.0*f[37]-120.00000000000001*f[36]+207.84609690826528*f[35]+120.00000000000001*f[34]-120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]+100.62305898749055*f[29]+58.09475019311126*f[28]-100.62305898749055*f[26]+100.62305898749055*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]-100.62305898749055*f[19]+100.62305898749055*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.62305898749055*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4])); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; - if (fReflSurfXYMu[1][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; + if (fReflSurfXYMu[1][0]<0.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; + } + } fReflSurfXY[2][0] = 0.7071067811865475*(fReflSurfXYMu[1][0]+fReflSurfXYMu[0][0]); @@ -1413,38 +1526,28 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double fReflSurfXY[2][4] = 0.7071067811865475*(fReflSurfXYMu[1][2]+fReflSurfXYMu[0][2]); fReflSurfXY[2][5] = 0.7071067811865475*(fReflSurfXYMu[1][2]-1.0*fReflSurfXYMu[0][2]); - } - // node (x,y)_3 - vcutSq = -0.25*(2.449489742783178*phiWall[7]-2.449489742783178*phi[7]+2.449489742783178*phiWall[6]-2.449489742783178*phi[6]+2.449489742783178*phiWall[5]-2.449489742783178*phi[5]-1.414213562373095*phiWall[4]+1.414213562373095*phi[4]+2.449489742783178*phiWall[3]-2.449489742783178*phi[3]-1.414213562373095*phiWall[2]+1.414213562373095*phi[2]-1.414213562373095*phiWall[1]+1.414213562373095*phi[1]-1.414213562373095*phiWall[0]+1.414213562373095*phi[0])*q2Dm; - if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) + wv = 0.5*vparUp+0.5*vparLo; + dv = vparUp-1.0*vparLo; - fReflSurfXY[3][0] = 0.0; - fReflSurfXY[3][1] = 0.0; - fReflSurfXY[3][2] = 0.0; - fReflSurfXY[3][3] = 0.0; - fReflSurfXY[3][4] = 0.0; - fReflSurfXY[3][5] = 0.0; + // node (mu)_0 + 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; - } else if (vcutSq > vparAbsSqUp) { // full reflection + if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) - fReflSurfXY[3][0] = -0.3535533905932737*(1.732050807568877*(f[16]+f[8]+f[7])-1.0*f[6]+1.732050807568877*f[3]-1.0*(f[2]+f[1]+f[0])); - fReflSurfXY[3][1] = -0.3535533905932737*(1.732050807568877*(f[26]+f[19]+f[18])-1.0*f[17]+1.732050807568877*f[11]-1.0*(f[10]+f[9]+f[4])); - fReflSurfXY[3][2] = -0.3535533905932737*(1.732050807568877*(f[27]+f[22]+f[21])-1.0*f[20]+1.732050807568877*f[14]-1.0*(f[13]+f[12]+f[5])); - fReflSurfXY[3][3] = -0.3535533905932737*(1.732050807568877*(f[31]+f[30]+f[29])-1.0*f[28]+1.732050807568877*f[25]-1.0*(f[24]+f[23]+f[15])); - fReflSurfXY[3][4] = -0.02357022603955158*(25.98076211353316*f[43]+25.98076211353316*(f[39]+f[38])+3.0*(8.660254037844387*f[35]-5.0*f[37])-1.0*(15.0*(f[34]+f[33])+15.0*f[32])); - fReflSurfXY[3][5] = -0.02357022603955158*(25.98076211353316*f[47]+25.98076211353316*(f[46]+f[45])+3.0*(8.660254037844387*f[42]-5.0*f[44])-1.0*(15.0*(f[41]+f[40])+15.0*f[36])); + fReflSurfXYMu[0][0] = 0.0; + fReflSurfXYMu[0][1] = 0.0; + fReflSurfXYMu[0][2] = 0.0; - } else { // partial reflection + } else if (vcutSq > vparAbsSqUp) { // full reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; + fReflSurfXYMu[0][0] = 0.25*(1.7320508075688772*(f[27]+f[22]+f[21])-1.0*f[20]+1.7320508075688772*(f[14]-1.0*f[16])-1.0*(f[13]+f[12]+1.7320508075688772*(f[8]+f[7]))+f[6]-1.0*(f[5]+1.7320508075688772*f[3])+f[2]+f[1]+f[0]); + fReflSurfXYMu[0][1] = 0.25*(1.7320508075688772*(f[31]+f[30]+f[29])-1.0*f[28]+1.7320508075688772*(f[25]-1.0*f[26])-1.0*(f[24]+f[23]+1.7320508075688772*(f[19]+f[18]))+f[17]-1.0*(f[15]+1.7320508075688772*f[11])+f[10]+f[9]+f[4]); + fReflSurfXYMu[0][2] = 0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(3.0*(f[46]+f[45])-1.0*(1.7320508075688772*f[44]+3.0*f[43]))+5.0*(5.196152422706631*f[42]-1.0*(3.0*(f[41]+f[40])+5.196152422706631*(f[39]+f[38])-3.0*f[37]))+8.660254037844387*(1.7320508075688772*(f[34]+f[33])-1.0*(1.7320508075688772*f[36]+3.0*f[35]))+15.0*f[32]); - double xBar, xSqBar; - double fReflSurfXYMu[2][3] = {0.}; + } else { // partial reflection - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1454,9 +1557,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = 0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]-23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]+20.1246117974981*f[45]-11.61895003862225*f[44]-20.1246117974981*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]-11.61895003862225*f[36]-20.1246117974981*f[35]+11.61895003862225*f[34]+11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]-13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]-13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]-8.0*f[15]-13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]-13.41640786499874*f[45]+7.745966692414834*f[44]+13.41640786499874*f[43]-13.41640786499874*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]+13.41640786499874*f[39]+13.41640786499874*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.41640786499874*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]-6.708203932499369*f[45]+3.872983346207417*f[44]+6.708203932499369*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.708203932499369*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]+13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]+12.0*f[16]-8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = 0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]+467.6537180435969*f[45]-269.9999999999999*f[44]-467.6537180435969*f[43]+467.6537180435967*f[42]-270.0*f[41]-270.0*f[40]-467.6537180435967*f[39]-467.6537180435967*f[38]+270.0*f[37]-269.9999999999999*f[36]-467.6537180435969*f[35]+269.9999999999999*f[34]+269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]+301.8691769624717*f[29]-174.2842505793337*f[28]-301.8691769624717*f[26]+301.8691769624717*f[25]-174.2842505793337*f[24]-174.2842505793337*f[23]-301.8691769624717*f[19]-301.8691769624717*f[18]+174.2842505793337*f[17]-174.2842505793337*f[15]-301.8691769624717*f[11]+174.2842505793337*f[10]+174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]+300.0000000000001*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]+300.0000000000001*f[36]+519.6152422706633*f[35]-300.0000000000001*f[34]-300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]+116.1895003862225*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]+116.1895003862225*f[24]+116.1895003862225*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]-116.1895003862225*f[17]+116.1895003862225*f[15]+201.2461179749811*f[11]-116.1895003862225*f[10]-116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]+259.8076211353317*f[45]-150.0*f[44]-259.8076211353317*f[43]+259.8076211353315*f[42]-150.0*f[41]-150.0*f[40]-259.8076211353315*f[39]-259.8076211353315*f[38]+150.0*f[37]-150.0*f[36]-259.8076211353317*f[35]+150.0*f[34]+150.0*f[33]+150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]+207.8460969082653*f[46]+207.8460969082653*f[45]-120.0*f[44]-207.8460969082653*f[43]+207.8460969082653*f[42]-120.0*f[41]-120.0*f[40]-207.8460969082653*f[39]-207.8460969082653*f[38]+120.0*f[37]-120.0*f[36]-207.8460969082653*f[35]+120.0*f[34]+120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]-100.6230589874906*f[29]+58.09475019311126*f[28]+100.6230589874906*f[26]-100.6230589874906*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]+100.6230589874906*f[19]+100.6230589874906*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.6230589874906*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = 0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]-23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]+20.124611797498105*f[45]-11.618950038622252*f[44]-20.124611797498105*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]-11.618950038622252*f[36]-20.124611797498105*f[35]+11.618950038622252*f[34]+11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]-13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]-13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]-8.0*f[15]-13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]-13.416407864998737*f[45]+7.745966692414834*f[44]+13.416407864998737*f[43]-13.416407864998739*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]+13.416407864998739*f[39]+13.416407864998739*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.416407864998737*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]-6.7082039324993685*f[45]+3.872983346207417*f[44]+6.7082039324993685*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.7082039324993685*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]+13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]+12.0*f[16]-8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); + fReflSurfXYMu[0][2] = 0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]+467.65371804359694*f[45]-269.99999999999994*f[44]-467.65371804359694*f[43]+467.65371804359665*f[42]-270.0*f[41]-270.0*f[40]-467.65371804359665*f[39]-467.65371804359665*f[38]+270.0*f[37]-269.99999999999994*f[36]-467.65371804359694*f[35]+269.99999999999994*f[34]+269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]+301.86917696247167*f[29]-174.28425057933373*f[28]-301.86917696247167*f[26]+301.86917696247167*f[25]-174.28425057933373*f[24]-174.28425057933373*f[23]-301.86917696247167*f[19]-301.86917696247167*f[18]+174.28425057933373*f[17]-174.28425057933373*f[15]-301.86917696247167*f[11]+174.28425057933373*f[10]+174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]+300.00000000000006*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]+300.00000000000006*f[36]+519.6152422706633*f[35]-300.00000000000006*f[34]-300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]+116.18950038622252*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]+116.18950038622252*f[24]+116.18950038622252*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]-116.18950038622252*f[17]+116.18950038622252*f[15]+201.2461179749811*f[11]-116.18950038622252*f[10]-116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]+259.80762113533166*f[45]-150.00000000000003*f[44]-259.80762113533166*f[43]+259.80762113533154*f[42]-150.0*f[41]-150.0*f[40]-259.80762113533154*f[39]-259.80762113533154*f[38]+150.0*f[37]-150.00000000000003*f[36]-259.80762113533166*f[35]+150.00000000000003*f[34]+150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]+207.84609690826528*f[46]+207.84609690826528*f[45]-120.00000000000001*f[44]-207.84609690826528*f[43]+207.84609690826525*f[42]-120.0*f[41]-120.0*f[40]-207.84609690826525*f[39]-207.84609690826525*f[38]+120.0*f[37]-120.00000000000001*f[36]-207.84609690826528*f[35]+120.00000000000001*f[34]+120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]-100.62305898749055*f[29]+58.09475019311126*f[28]+100.62305898749055*f[26]-100.62305898749055*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]+100.62305898749055*f[19]+100.62305898749055*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.62305898749055*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4]); } else { // vcut in logical space. @@ -1467,27 +1570,45 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = -0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]-23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = -0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]+20.1246117974981*f[45]-11.61895003862225*f[44]-20.1246117974981*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]-11.61895003862225*f[36]-20.1246117974981*f[35]+11.61895003862225*f[34]+11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]-13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]-13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]-8.0*f[15]-13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]-13.41640786499874*f[45]+7.745966692414834*f[44]+13.41640786499874*f[43]-13.41640786499874*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]+13.41640786499874*f[39]+13.41640786499874*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.41640786499874*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]-6.708203932499369*f[45]+3.872983346207417*f[44]+6.708203932499369*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.708203932499369*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]-13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]+12.0*f[16]+8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = -0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]+467.6537180435969*f[45]-269.9999999999999*f[44]-467.6537180435969*f[43]+467.6537180435967*f[42]-270.0*f[41]-270.0*f[40]-467.6537180435967*f[39]-467.6537180435967*f[38]+270.0*f[37]-269.9999999999999*f[36]-467.6537180435969*f[35]+269.9999999999999*f[34]+269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]+301.8691769624717*f[29]-174.2842505793337*f[28]-301.8691769624717*f[26]+301.8691769624717*f[25]-174.2842505793337*f[24]-174.2842505793337*f[23]-301.8691769624717*f[19]-301.8691769624717*f[18]+174.2842505793337*f[17]-174.2842505793337*f[15]-301.8691769624717*f[11]+174.2842505793337*f[10]+174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]+300.0000000000001*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]+300.0000000000001*f[36]+519.6152422706633*f[35]-300.0000000000001*f[34]-300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]+116.1895003862225*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]+116.1895003862225*f[24]+116.1895003862225*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]-116.1895003862225*f[17]+116.1895003862225*f[15]+201.2461179749811*f[11]-116.1895003862225*f[10]-116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]+259.8076211353317*f[45]-150.0*f[44]-259.8076211353317*f[43]+259.8076211353315*f[42]-150.0*f[41]-150.0*f[40]-259.8076211353315*f[39]-259.8076211353315*f[38]+150.0*f[37]-150.0*f[36]-259.8076211353317*f[35]+150.0*f[34]+150.0*f[33]+150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]-207.8460969082653*f[46]-207.8460969082653*f[45]+120.0*f[44]+207.8460969082653*f[43]-207.8460969082653*f[42]+120.0*f[41]+120.0*f[40]+207.8460969082653*f[39]+207.8460969082653*f[38]-120.0*f[37]+120.0*f[36]+207.8460969082653*f[35]-120.0*f[34]-120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]-100.6230589874906*f[29]+58.09475019311126*f[28]+100.6230589874906*f[26]-100.6230589874906*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]+100.6230589874906*f[19]+100.6230589874906*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.6230589874906*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = -(0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]-23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[0][1] = -(0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]+20.124611797498105*f[45]-11.618950038622252*f[44]-20.124611797498105*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]-11.618950038622252*f[36]-20.124611797498105*f[35]+11.618950038622252*f[34]+11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]-13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]-13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]-8.0*f[15]-13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]-13.416407864998737*f[45]+7.745966692414834*f[44]+13.416407864998737*f[43]-13.416407864998739*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]+13.416407864998739*f[39]+13.416407864998739*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.416407864998737*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]-6.7082039324993685*f[45]+3.872983346207417*f[44]+6.7082039324993685*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.7082039324993685*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]-13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]+12.0*f[16]+8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])); + fReflSurfXYMu[0][2] = -(0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]+467.65371804359694*f[45]-269.99999999999994*f[44]-467.65371804359694*f[43]+467.65371804359665*f[42]-270.0*f[41]-270.0*f[40]-467.65371804359665*f[39]-467.65371804359665*f[38]+270.0*f[37]-269.99999999999994*f[36]-467.65371804359694*f[35]+269.99999999999994*f[34]+269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]+301.86917696247167*f[29]-174.28425057933373*f[28]-301.86917696247167*f[26]+301.86917696247167*f[25]-174.28425057933373*f[24]-174.28425057933373*f[23]-301.86917696247167*f[19]-301.86917696247167*f[18]+174.28425057933373*f[17]-174.28425057933373*f[15]-301.86917696247167*f[11]+174.28425057933373*f[10]+174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]+300.00000000000006*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]+300.00000000000006*f[36]+519.6152422706633*f[35]-300.00000000000006*f[34]-300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]+116.18950038622252*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]+116.18950038622252*f[24]+116.18950038622252*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]-116.18950038622252*f[17]+116.18950038622252*f[15]+201.2461179749811*f[11]-116.18950038622252*f[10]-116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]+259.80762113533166*f[45]-150.00000000000003*f[44]-259.80762113533166*f[43]+259.80762113533154*f[42]-150.0*f[41]-150.0*f[40]-259.80762113533154*f[39]-259.80762113533154*f[38]+150.0*f[37]-150.00000000000003*f[36]-259.80762113533166*f[35]+150.00000000000003*f[34]+150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]-207.84609690826528*f[46]-207.84609690826528*f[45]+120.00000000000001*f[44]+207.84609690826528*f[43]-207.84609690826525*f[42]+120.0*f[41]+120.0*f[40]+207.84609690826525*f[39]+207.84609690826525*f[38]-120.0*f[37]+120.00000000000001*f[36]+207.84609690826528*f[35]-120.00000000000001*f[34]-120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]-100.62305898749055*f[29]+58.09475019311126*f[28]+100.62305898749055*f[26]-100.62305898749055*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]+100.62305898749055*f[19]+100.62305898749055*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.62305898749055*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4])); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; - if (fReflSurfXYMu[0][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; + if (fReflSurfXYMu[0][0]<0.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; + } + } - // node (mu)_1 + // node (mu)_1 + 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) + + fReflSurfXYMu[1][0] = 0.0; + fReflSurfXYMu[1][1] = 0.0; + fReflSurfXYMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfXYMu[1][0] = -(0.25*(1.7320508075688772*(f[27]+f[22]+f[21])-1.0*f[20]+1.7320508075688772*(f[16]+f[14])-1.0*(f[13]+f[12])+1.7320508075688772*(f[8]+f[7])-1.0*(f[6]+f[5])+1.7320508075688772*f[3]-1.0*(f[2]+f[1]+f[0]))); + fReflSurfXYMu[1][1] = -(0.25*(1.7320508075688772*(f[31]+f[30]+f[29])-1.0*f[28]+1.7320508075688772*(f[26]+f[25])-1.0*(f[24]+f[23])+1.7320508075688772*(f[19]+f[18])-1.0*(f[17]+f[15])+1.7320508075688772*f[11]-1.0*(f[10]+f[9]+f[4]))); + fReflSurfXYMu[1][2] = -(0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(3.0*(f[46]+f[45])-1.7320508075688772*f[44]+3.0*f[43])+5.0*(5.196152422706631*f[42]-3.0*(f[41]+f[40])+5.196152422706631*(f[39]+f[38])-3.0*f[37])+8.660254037844387*(3.0*f[35]-1.7320508075688772*f[36])-1.0*(15.000000000000002*(f[34]+f[33])+15.0*f[32]))); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1497,9 +1618,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = -0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]+23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = -0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]+20.1246117974981*f[45]-11.61895003862225*f[44]+20.1246117974981*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]-11.61895003862225*f[36]+20.1246117974981*f[35]-11.61895003862225*f[34]-11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]+13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]+13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]-8.0*f[15]+13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]-13.41640786499874*f[45]+7.745966692414834*f[44]-13.41640786499874*f[43]-13.41640786499874*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]-13.41640786499874*f[39]-13.41640786499874*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.41640786499874*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]-6.708203932499369*f[45]+3.872983346207417*f[44]-6.708203932499369*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.708203932499369*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]+13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]-12.0*f[16]-8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = -0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]+467.6537180435969*f[45]-269.9999999999999*f[44]+467.6537180435969*f[43]+467.6537180435967*f[42]-270.0*f[41]-270.0*f[40]+467.6537180435967*f[39]+467.6537180435967*f[38]-270.0*f[37]-269.9999999999999*f[36]+467.6537180435969*f[35]-269.9999999999999*f[34]-269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]+301.8691769624717*f[29]-174.2842505793337*f[28]+301.8691769624717*f[26]+301.8691769624717*f[25]-174.2842505793337*f[24]-174.2842505793337*f[23]+301.8691769624717*f[19]+301.8691769624717*f[18]-174.2842505793337*f[17]-174.2842505793337*f[15]+301.8691769624717*f[11]-174.2842505793337*f[10]-174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]+300.0000000000001*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]+300.0000000000001*f[36]-519.6152422706633*f[35]+300.0000000000001*f[34]+300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]+116.1895003862225*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]+116.1895003862225*f[24]+116.1895003862225*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]+116.1895003862225*f[17]+116.1895003862225*f[15]-201.2461179749811*f[11]+116.1895003862225*f[10]+116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]+259.8076211353317*f[45]-150.0*f[44]+259.8076211353317*f[43]+259.8076211353315*f[42]-150.0*f[41]-150.0*f[40]+259.8076211353315*f[39]+259.8076211353315*f[38]-150.0*f[37]-150.0*f[36]+259.8076211353317*f[35]-150.0*f[34]-150.0*f[33]-150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]+207.8460969082653*f[46]+207.8460969082653*f[45]-120.0*f[44]+207.8460969082653*f[43]+207.8460969082653*f[42]-120.0*f[41]-120.0*f[40]+207.8460969082653*f[39]+207.8460969082653*f[38]-120.0*f[37]-120.0*f[36]+207.8460969082653*f[35]-120.0*f[34]-120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]-100.6230589874906*f[29]+58.09475019311126*f[28]-100.6230589874906*f[26]-100.6230589874906*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]-100.6230589874906*f[19]-100.6230589874906*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.6230589874906*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = -(0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]+23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[1][1] = -(0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]+20.124611797498105*f[45]-11.618950038622252*f[44]+20.124611797498105*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]-11.618950038622252*f[36]+20.124611797498105*f[35]-11.618950038622252*f[34]-11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]+13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]+13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]-8.0*f[15]+13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]-13.416407864998737*f[45]+7.745966692414834*f[44]-13.416407864998737*f[43]-13.416407864998739*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]-13.416407864998739*f[39]-13.416407864998739*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.416407864998737*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]-6.7082039324993685*f[45]+3.872983346207417*f[44]-6.7082039324993685*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.7082039324993685*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]+13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]-12.0*f[16]-8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])); + fReflSurfXYMu[1][2] = -(0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]+467.65371804359694*f[45]-269.99999999999994*f[44]+467.65371804359694*f[43]+467.65371804359665*f[42]-270.0*f[41]-270.0*f[40]+467.65371804359665*f[39]+467.65371804359665*f[38]-270.0*f[37]-269.99999999999994*f[36]+467.65371804359694*f[35]-269.99999999999994*f[34]-269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]+301.86917696247167*f[29]-174.28425057933373*f[28]+301.86917696247167*f[26]+301.86917696247167*f[25]-174.28425057933373*f[24]-174.28425057933373*f[23]+301.86917696247167*f[19]+301.86917696247167*f[18]-174.28425057933373*f[17]-174.28425057933373*f[15]+301.86917696247167*f[11]-174.28425057933373*f[10]-174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]+300.00000000000006*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]+300.00000000000006*f[36]-519.6152422706633*f[35]+300.00000000000006*f[34]+300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]+116.18950038622252*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]+116.18950038622252*f[24]+116.18950038622252*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]+116.18950038622252*f[17]+116.18950038622252*f[15]-201.2461179749811*f[11]+116.18950038622252*f[10]+116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]+259.80762113533166*f[45]-150.00000000000003*f[44]+259.80762113533166*f[43]+259.80762113533154*f[42]-150.0*f[41]-150.0*f[40]+259.80762113533154*f[39]+259.80762113533154*f[38]-150.0*f[37]-150.00000000000003*f[36]+259.80762113533166*f[35]-150.00000000000003*f[34]-150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]+207.84609690826528*f[46]+207.84609690826528*f[45]-120.00000000000001*f[44]+207.84609690826528*f[43]+207.84609690826525*f[42]-120.0*f[41]-120.0*f[40]+207.84609690826525*f[39]+207.84609690826525*f[38]-120.0*f[37]-120.00000000000001*f[36]+207.84609690826528*f[35]-120.00000000000001*f[34]-120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]-100.62305898749055*f[29]+58.09475019311126*f[28]-100.62305898749055*f[26]-100.62305898749055*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]-100.62305898749055*f[19]-100.62305898749055*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.62305898749055*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4])); } else { // vcut in logical space. @@ -1510,24 +1631,26 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = 0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]+23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]+20.1246117974981*f[45]-11.61895003862225*f[44]+20.1246117974981*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]-11.61895003862225*f[36]+20.1246117974981*f[35]-11.61895003862225*f[34]-11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]+13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]+13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]-8.0*f[15]+13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]-13.41640786499874*f[45]+7.745966692414834*f[44]-13.41640786499874*f[43]-13.41640786499874*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]-13.41640786499874*f[39]-13.41640786499874*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.41640786499874*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]-6.708203932499369*f[45]+3.872983346207417*f[44]-6.708203932499369*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.708203932499369*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]-13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]-12.0*f[16]+8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = 0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]+467.6537180435969*f[45]-269.9999999999999*f[44]+467.6537180435969*f[43]+467.6537180435967*f[42]-270.0*f[41]-270.0*f[40]+467.6537180435967*f[39]+467.6537180435967*f[38]-270.0*f[37]-269.9999999999999*f[36]+467.6537180435969*f[35]-269.9999999999999*f[34]-269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]+301.8691769624717*f[29]-174.2842505793337*f[28]+301.8691769624717*f[26]+301.8691769624717*f[25]-174.2842505793337*f[24]-174.2842505793337*f[23]+301.8691769624717*f[19]+301.8691769624717*f[18]-174.2842505793337*f[17]-174.2842505793337*f[15]+301.8691769624717*f[11]-174.2842505793337*f[10]-174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]+300.0000000000001*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]+300.0000000000001*f[36]-519.6152422706633*f[35]+300.0000000000001*f[34]+300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]+116.1895003862225*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]+116.1895003862225*f[24]+116.1895003862225*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]+116.1895003862225*f[17]+116.1895003862225*f[15]-201.2461179749811*f[11]+116.1895003862225*f[10]+116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]+259.8076211353317*f[45]-150.0*f[44]+259.8076211353317*f[43]+259.8076211353315*f[42]-150.0*f[41]-150.0*f[40]+259.8076211353315*f[39]+259.8076211353315*f[38]-150.0*f[37]-150.0*f[36]+259.8076211353317*f[35]-150.0*f[34]-150.0*f[33]-150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]-207.8460969082653*f[46]-207.8460969082653*f[45]+120.0*f[44]-207.8460969082653*f[43]-207.8460969082653*f[42]+120.0*f[41]+120.0*f[40]-207.8460969082653*f[39]-207.8460969082653*f[38]+120.0*f[37]+120.0*f[36]-207.8460969082653*f[35]+120.0*f[34]+120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]-100.6230589874906*f[29]+58.09475019311126*f[28]-100.6230589874906*f[26]-100.6230589874906*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]-100.6230589874906*f[19]-100.6230589874906*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.6230589874906*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = 0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]+23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]+20.124611797498105*f[45]-11.618950038622252*f[44]+20.124611797498105*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]-11.618950038622252*f[36]+20.124611797498105*f[35]-11.618950038622252*f[34]-11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]+13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]+13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]-8.0*f[15]+13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]-13.416407864998737*f[45]+7.745966692414834*f[44]-13.416407864998737*f[43]-13.416407864998739*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]-13.416407864998739*f[39]-13.416407864998739*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.416407864998737*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]-6.7082039324993685*f[45]+3.872983346207417*f[44]-6.7082039324993685*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.7082039324993685*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]-13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]-12.0*f[16]+8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); + fReflSurfXYMu[1][2] = 0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]+467.65371804359694*f[45]-269.99999999999994*f[44]+467.65371804359694*f[43]+467.65371804359665*f[42]-270.0*f[41]-270.0*f[40]+467.65371804359665*f[39]+467.65371804359665*f[38]-270.0*f[37]-269.99999999999994*f[36]+467.65371804359694*f[35]-269.99999999999994*f[34]-269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]+301.86917696247167*f[29]-174.28425057933373*f[28]+301.86917696247167*f[26]+301.86917696247167*f[25]-174.28425057933373*f[24]-174.28425057933373*f[23]+301.86917696247167*f[19]+301.86917696247167*f[18]-174.28425057933373*f[17]-174.28425057933373*f[15]+301.86917696247167*f[11]-174.28425057933373*f[10]-174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]+300.00000000000006*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]+300.00000000000006*f[36]-519.6152422706633*f[35]+300.00000000000006*f[34]+300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]+116.18950038622252*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]+116.18950038622252*f[24]+116.18950038622252*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]+116.18950038622252*f[17]+116.18950038622252*f[15]-201.2461179749811*f[11]+116.18950038622252*f[10]+116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]+259.80762113533166*f[45]-150.00000000000003*f[44]+259.80762113533166*f[43]+259.80762113533154*f[42]-150.0*f[41]-150.0*f[40]+259.80762113533154*f[39]+259.80762113533154*f[38]-150.0*f[37]-150.00000000000003*f[36]+259.80762113533166*f[35]-150.00000000000003*f[34]-150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]-207.84609690826528*f[46]-207.84609690826528*f[45]+120.00000000000001*f[44]-207.84609690826528*f[43]-207.84609690826525*f[42]+120.0*f[41]+120.0*f[40]-207.84609690826525*f[39]-207.84609690826525*f[38]+120.0*f[37]+120.00000000000001*f[36]-207.84609690826528*f[35]+120.00000000000001*f[34]+120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]-100.62305898749055*f[29]+58.09475019311126*f[28]-100.62305898749055*f[26]-100.62305898749055*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]-100.62305898749055*f[19]-100.62305898749055*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.62305898749055*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4]); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; - if (fReflSurfXYMu[1][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; + if (fReflSurfXYMu[1][0]<0.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; + } + } fReflSurfXY[3][0] = 0.7071067811865475*(fReflSurfXYMu[1][0]+fReflSurfXYMu[0][0]); @@ -1537,8 +1660,6 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double fReflSurfXY[3][4] = 0.7071067811865475*(fReflSurfXYMu[1][2]+fReflSurfXYMu[0][2]); fReflSurfXY[3][5] = 0.7071067811865475*(fReflSurfXYMu[1][2]-1.0*fReflSurfXYMu[0][2]); - } - fRefl[0] = 0.7071067811865475*(fReflSurfXY[3][0]+fReflSurfXY[2][0]+fReflSurfXY[1][0]+fReflSurfXY[0][0]); fRefl[1] = 0.7071067811865475*(fReflSurfXY[3][0]+fReflSurfXY[2][0]-1.0*(fReflSurfXY[1][0]+fReflSurfXY[0][0])); fRefl[2] = 0.7071067811865475*(fReflSurfXY[3][0]-1.0*fReflSurfXY[2][0]+fReflSurfXY[1][0]-1.0*fReflSurfXY[0][0]); @@ -1589,7 +1710,7 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double fRefl[47] = 0.0; } -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double *vmap, double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl) +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double *vmap, double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl) { double vcutSq; double fReflSurfXY[4][6] = {0.}; @@ -1599,36 +1720,33 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double double vparAbsSqLo = vmap[0]>0.? vparLo*vparLo : vparUp*vparUp; double vparAbsSqUp = vmap[0]>0.? vparUp*vparUp : vparLo*vparLo; + double wv; + double dv; + double xBar, xSqBar; + double fReflSurfXYMu[2][3] = {0.}; + // node (x,y)_0 - vcutSq = 0.25*(2.449489742783178*phiWall[7]-2.449489742783178*(phi[7]+phiWall[6])+2.449489742783178*phi[6]-2.449489742783178*phiWall[5]+2.449489742783178*phi[5]+1.414213562373095*phiWall[4]-1.414213562373095*phi[4]+2.449489742783178*phiWall[3]-2.449489742783178*phi[3]-1.414213562373095*phiWall[2]+1.414213562373095*phi[2]-1.414213562373095*phiWall[1]+1.414213562373095*(phi[1]+phiWall[0])-1.414213562373095*phi[0])*q2Dm; - if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) + wv = 0.5*vparUp+0.5*vparLo; + dv = vparUp-1.0*vparLo; - fReflSurfXY[0][0] = 0.0; - fReflSurfXY[0][1] = 0.0; - fReflSurfXY[0][2] = 0.0; - fReflSurfXY[0][3] = 0.0; - fReflSurfXY[0][4] = 0.0; - fReflSurfXY[0][5] = 0.0; + // node (mu)_0 + 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; - } else if (vcutSq > vparAbsSqUp) { // full reflection + if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) - fReflSurfXY[0][0] = 0.3535533905932737*(1.732050807568877*(f[16]-1.0*(f[8]+f[7]))+f[6]+1.732050807568877*f[3]-1.0*(f[2]+f[1])+f[0]); - fReflSurfXY[0][1] = 0.3535533905932737*(1.732050807568877*(f[26]-1.0*(f[19]+f[18]))+f[17]+1.732050807568877*f[11]-1.0*(f[10]+f[9])+f[4]); - fReflSurfXY[0][2] = 0.3535533905932737*(1.732050807568877*(f[27]-1.0*(f[22]+f[21]))+f[20]+1.732050807568877*f[14]-1.0*(f[13]+f[12])+f[5]); - fReflSurfXY[0][3] = 0.3535533905932737*(1.732050807568877*(f[31]-1.0*(f[30]+f[29]))+f[28]+1.732050807568877*f[25]-1.0*(f[24]+f[23])+f[15]); - fReflSurfXY[0][4] = 0.02357022603955158*(25.98076211353316*f[43]+5.0*(3.0*f[37]-5.196152422706631*(f[39]+f[38]))+8.660254037844387*(3.0*f[35]-1.732050807568877*(f[34]+f[33]))+15.0*f[32]); - fReflSurfXY[0][5] = 0.02357022603955158*(25.98076211353316*f[47]+5.0*(3.0*f[44]-5.196152422706631*(f[46]+f[45]))+8.660254037844387*(3.0*f[42]-1.732050807568877*(f[41]+f[40]))+15.0*f[36]); + fReflSurfXYMu[0][0] = 0.0; + fReflSurfXYMu[0][1] = 0.0; + fReflSurfXYMu[0][2] = 0.0; - } else { // partial reflection + } else if (vcutSq > vparAbsSqUp) { // full reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; + fReflSurfXYMu[0][0] = -(0.25*(1.7320508075688772*(f[27]-1.0*(f[22]+f[21]))+f[20]+1.7320508075688772*(f[14]-1.0*f[16])-1.0*(f[13]+f[12])+1.7320508075688772*(f[8]+f[7])-1.0*f[6]+f[5]-1.7320508075688772*f[3]+f[2]+f[1]-1.0*f[0])); + fReflSurfXYMu[0][1] = -(0.25*(1.7320508075688772*(f[31]-1.0*(f[30]+f[29]))+f[28]+1.7320508075688772*(f[25]-1.0*f[26])-1.0*(f[24]+f[23])+1.7320508075688772*(f[19]+f[18])-1.0*f[17]+f[15]-1.7320508075688772*f[11]+f[10]+f[9]-1.0*f[4])); + fReflSurfXYMu[0][2] = -(0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(-(3.0*(f[46]+f[45]))+1.7320508075688772*f[44]-3.0*f[43])+5.0*(5.196152422706631*f[42]-3.0*(f[41]+f[40])+5.196152422706631*(f[39]+f[38])-3.0*f[37])+8.660254037844387*(1.7320508075688772*f[36]-3.0*f[35]+1.7320508075688772*(f[34]+f[33]))-15.0*f[32])); - double xBar, xSqBar; - double fReflSurfXYMu[2][3] = {0.}; + } else { // partial reflection - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1638,9 +1756,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = -0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]-23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = -0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]-20.1246117974981*f[45]+11.61895003862225*f[44]-20.1246117974981*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]+11.61895003862225*f[36]-20.1246117974981*f[35]+11.61895003862225*f[34]+11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]-13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]+13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]+8.0*f[15]-13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]+13.41640786499874*f[45]-7.745966692414834*f[44]+13.41640786499874*f[43]-13.41640786499874*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]-13.41640786499874*f[39]-13.41640786499874*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.41640786499874*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]+6.708203932499369*f[45]-3.872983346207417*f[44]+6.708203932499369*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.708203932499369*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]+13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]+12.0*f[16]+8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = -0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]-467.6537180435969*f[45]+269.9999999999999*f[44]-467.6537180435969*f[43]+467.6537180435967*f[42]-270.0*f[41]-270.0*f[40]+467.6537180435967*f[39]+467.6537180435967*f[38]-270.0*f[37]+269.9999999999999*f[36]-467.6537180435969*f[35]+269.9999999999999*f[34]+269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]-301.8691769624717*f[29]+174.2842505793337*f[28]-301.8691769624717*f[26]+301.8691769624717*f[25]-174.2842505793337*f[24]-174.2842505793337*f[23]+301.8691769624717*f[19]+301.8691769624717*f[18]-174.2842505793337*f[17]+174.2842505793337*f[15]-301.8691769624717*f[11]+174.2842505793337*f[10]+174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]-300.0000000000001*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]-300.0000000000001*f[36]+519.6152422706633*f[35]-300.0000000000001*f[34]-300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]-116.1895003862225*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]+116.1895003862225*f[24]+116.1895003862225*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]+116.1895003862225*f[17]-116.1895003862225*f[15]+201.2461179749811*f[11]-116.1895003862225*f[10]-116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]-259.8076211353317*f[45]+150.0*f[44]-259.8076211353317*f[43]+259.8076211353315*f[42]-150.0*f[41]-150.0*f[40]+259.8076211353315*f[39]+259.8076211353315*f[38]-150.0*f[37]+150.0*f[36]-259.8076211353317*f[35]+150.0*f[34]+150.0*f[33]-150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]-207.8460969082653*f[46]-207.8460969082653*f[45]+120.0*f[44]-207.8460969082653*f[43]+207.8460969082653*f[42]-120.0*f[41]-120.0*f[40]+207.8460969082653*f[39]+207.8460969082653*f[38]-120.0*f[37]+120.0*f[36]-207.8460969082653*f[35]+120.0*f[34]+120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]+100.6230589874906*f[29]-58.09475019311126*f[28]+100.6230589874906*f[26]-100.6230589874906*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]-100.6230589874906*f[19]-100.6230589874906*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.6230589874906*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = -(0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]-23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[0][1] = -(0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]-20.124611797498105*f[45]+11.618950038622252*f[44]-20.124611797498105*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]+11.618950038622252*f[36]-20.124611797498105*f[35]+11.618950038622252*f[34]+11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]-13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]+13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]+8.0*f[15]-13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]+13.416407864998737*f[45]-7.745966692414834*f[44]+13.416407864998737*f[43]-13.416407864998739*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]-13.416407864998739*f[39]-13.416407864998739*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.416407864998737*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]+6.7082039324993685*f[45]-3.872983346207417*f[44]+6.7082039324993685*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.7082039324993685*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]+13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]+12.0*f[16]+8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])); + fReflSurfXYMu[0][2] = -(0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]-467.65371804359694*f[45]+269.99999999999994*f[44]-467.65371804359694*f[43]+467.65371804359665*f[42]-270.0*f[41]-270.0*f[40]+467.65371804359665*f[39]+467.65371804359665*f[38]-270.0*f[37]+269.99999999999994*f[36]-467.65371804359694*f[35]+269.99999999999994*f[34]+269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]-301.86917696247167*f[29]+174.28425057933373*f[28]-301.86917696247167*f[26]+301.86917696247167*f[25]-174.28425057933373*f[24]-174.28425057933373*f[23]+301.86917696247167*f[19]+301.86917696247167*f[18]-174.28425057933373*f[17]+174.28425057933373*f[15]-301.86917696247167*f[11]+174.28425057933373*f[10]+174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]-300.00000000000006*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]-300.00000000000006*f[36]+519.6152422706633*f[35]-300.00000000000006*f[34]-300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]-116.18950038622252*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]+116.18950038622252*f[24]+116.18950038622252*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]+116.18950038622252*f[17]-116.18950038622252*f[15]+201.2461179749811*f[11]-116.18950038622252*f[10]-116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]-259.80762113533166*f[45]+150.00000000000003*f[44]-259.80762113533166*f[43]+259.80762113533154*f[42]-150.0*f[41]-150.0*f[40]+259.80762113533154*f[39]+259.80762113533154*f[38]-150.0*f[37]+150.00000000000003*f[36]-259.80762113533166*f[35]+150.00000000000003*f[34]+150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]-207.84609690826528*f[46]-207.84609690826528*f[45]+120.00000000000001*f[44]-207.84609690826528*f[43]+207.84609690826525*f[42]-120.0*f[41]-120.0*f[40]+207.84609690826525*f[39]+207.84609690826525*f[38]-120.0*f[37]+120.00000000000001*f[36]-207.84609690826528*f[35]+120.00000000000001*f[34]+120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]+100.62305898749055*f[29]-58.09475019311126*f[28]+100.62305898749055*f[26]-100.62305898749055*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]-100.62305898749055*f[19]-100.62305898749055*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.62305898749055*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4])); } else { // vcut in logical space. @@ -1651,27 +1769,45 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = 0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]-23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]-20.1246117974981*f[45]+11.61895003862225*f[44]-20.1246117974981*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]+11.61895003862225*f[36]-20.1246117974981*f[35]+11.61895003862225*f[34]+11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]-13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]+13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]+8.0*f[15]-13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]+13.41640786499874*f[45]-7.745966692414834*f[44]+13.41640786499874*f[43]-13.41640786499874*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]-13.41640786499874*f[39]-13.41640786499874*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.41640786499874*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]+6.708203932499369*f[45]-3.872983346207417*f[44]+6.708203932499369*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.708203932499369*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]-13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]+12.0*f[16]-8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = 0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]-467.6537180435969*f[45]+269.9999999999999*f[44]-467.6537180435969*f[43]+467.6537180435967*f[42]-270.0*f[41]-270.0*f[40]+467.6537180435967*f[39]+467.6537180435967*f[38]-270.0*f[37]+269.9999999999999*f[36]-467.6537180435969*f[35]+269.9999999999999*f[34]+269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]-301.8691769624717*f[29]+174.2842505793337*f[28]-301.8691769624717*f[26]+301.8691769624717*f[25]-174.2842505793337*f[24]-174.2842505793337*f[23]+301.8691769624717*f[19]+301.8691769624717*f[18]-174.2842505793337*f[17]+174.2842505793337*f[15]-301.8691769624717*f[11]+174.2842505793337*f[10]+174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]-300.0000000000001*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]-300.0000000000001*f[36]+519.6152422706633*f[35]-300.0000000000001*f[34]-300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]-116.1895003862225*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]+116.1895003862225*f[24]+116.1895003862225*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]+116.1895003862225*f[17]-116.1895003862225*f[15]+201.2461179749811*f[11]-116.1895003862225*f[10]-116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]-259.8076211353317*f[45]+150.0*f[44]-259.8076211353317*f[43]+259.8076211353315*f[42]-150.0*f[41]-150.0*f[40]+259.8076211353315*f[39]+259.8076211353315*f[38]-150.0*f[37]+150.0*f[36]-259.8076211353317*f[35]+150.0*f[34]+150.0*f[33]-150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]+207.8460969082653*f[46]+207.8460969082653*f[45]-120.0*f[44]+207.8460969082653*f[43]-207.8460969082653*f[42]+120.0*f[41]+120.0*f[40]-207.8460969082653*f[39]-207.8460969082653*f[38]+120.0*f[37]-120.0*f[36]+207.8460969082653*f[35]-120.0*f[34]-120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]+100.6230589874906*f[29]-58.09475019311126*f[28]+100.6230589874906*f[26]-100.6230589874906*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]-100.6230589874906*f[19]-100.6230589874906*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.6230589874906*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = 0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]-23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]-20.124611797498105*f[45]+11.618950038622252*f[44]-20.124611797498105*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]+11.618950038622252*f[36]-20.124611797498105*f[35]+11.618950038622252*f[34]+11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]-13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]+13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]+8.0*f[15]-13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]+13.416407864998737*f[45]-7.745966692414834*f[44]+13.416407864998737*f[43]-13.416407864998739*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]-13.416407864998739*f[39]-13.416407864998739*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.416407864998737*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]+6.7082039324993685*f[45]-3.872983346207417*f[44]+6.7082039324993685*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.7082039324993685*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]-13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]+12.0*f[16]-8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); + fReflSurfXYMu[0][2] = 0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]-467.65371804359694*f[45]+269.99999999999994*f[44]-467.65371804359694*f[43]+467.65371804359665*f[42]-270.0*f[41]-270.0*f[40]+467.65371804359665*f[39]+467.65371804359665*f[38]-270.0*f[37]+269.99999999999994*f[36]-467.65371804359694*f[35]+269.99999999999994*f[34]+269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]-301.86917696247167*f[29]+174.28425057933373*f[28]-301.86917696247167*f[26]+301.86917696247167*f[25]-174.28425057933373*f[24]-174.28425057933373*f[23]+301.86917696247167*f[19]+301.86917696247167*f[18]-174.28425057933373*f[17]+174.28425057933373*f[15]-301.86917696247167*f[11]+174.28425057933373*f[10]+174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]-300.00000000000006*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]-300.00000000000006*f[36]+519.6152422706633*f[35]-300.00000000000006*f[34]-300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]-116.18950038622252*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]+116.18950038622252*f[24]+116.18950038622252*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]+116.18950038622252*f[17]-116.18950038622252*f[15]+201.2461179749811*f[11]-116.18950038622252*f[10]-116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]-259.80762113533166*f[45]+150.00000000000003*f[44]-259.80762113533166*f[43]+259.80762113533154*f[42]-150.0*f[41]-150.0*f[40]+259.80762113533154*f[39]+259.80762113533154*f[38]-150.0*f[37]+150.00000000000003*f[36]-259.80762113533166*f[35]+150.00000000000003*f[34]+150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]+207.84609690826528*f[46]+207.84609690826528*f[45]-120.00000000000001*f[44]+207.84609690826528*f[43]-207.84609690826525*f[42]+120.0*f[41]+120.0*f[40]-207.84609690826525*f[39]-207.84609690826525*f[38]+120.0*f[37]-120.00000000000001*f[36]+207.84609690826528*f[35]-120.00000000000001*f[34]-120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]+100.62305898749055*f[29]-58.09475019311126*f[28]+100.62305898749055*f[26]-100.62305898749055*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]-100.62305898749055*f[19]-100.62305898749055*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.62305898749055*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4]); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; - if (fReflSurfXYMu[0][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; + if (fReflSurfXYMu[0][0]<0.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; + } + } - // node (mu)_1 + // node (mu)_1 + 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) + + fReflSurfXYMu[1][0] = 0.0; + fReflSurfXYMu[1][1] = 0.0; + fReflSurfXYMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfXYMu[1][0] = 0.25*(1.7320508075688772*(f[27]-1.0*(f[22]+f[21]))+f[20]+1.7320508075688772*(f[16]+f[14])-1.0*(f[13]+f[12]+1.7320508075688772*(f[8]+f[7]))+f[6]+f[5]+1.7320508075688772*f[3]-1.0*(f[2]+f[1])+f[0]); + fReflSurfXYMu[1][1] = 0.25*(1.7320508075688772*(f[31]-1.0*(f[30]+f[29]))+f[28]+1.7320508075688772*(f[26]+f[25])-1.0*(f[24]+f[23]+1.7320508075688772*(f[19]+f[18]))+f[17]+f[15]+1.7320508075688772*f[11]-1.0*(f[10]+f[9])+f[4]); + fReflSurfXYMu[1][2] = 0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(-(3.0*(f[46]+f[45]))+1.7320508075688772*f[44]+3.0*f[43])+5.0*(5.196152422706631*f[42]-1.0*(3.0*(f[41]+f[40])+5.196152422706631*(f[39]+f[38])-3.0*f[37]))+8.660254037844387*(1.7320508075688772*f[36]+3.0*f[35]-1.7320508075688772*(f[34]+f[33]))+15.0*f[32]); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1681,9 +1817,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = 0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]+23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]-20.1246117974981*f[45]+11.61895003862225*f[44]+20.1246117974981*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]+11.61895003862225*f[36]+20.1246117974981*f[35]-11.61895003862225*f[34]-11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]+13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]-13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]+8.0*f[15]+13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]+13.41640786499874*f[45]-7.745966692414834*f[44]-13.41640786499874*f[43]-13.41640786499874*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]+13.41640786499874*f[39]+13.41640786499874*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.41640786499874*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]+6.708203932499369*f[45]-3.872983346207417*f[44]-6.708203932499369*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.708203932499369*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]+13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]-12.0*f[16]+8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = 0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]-467.6537180435969*f[45]+269.9999999999999*f[44]+467.6537180435969*f[43]+467.6537180435967*f[42]-270.0*f[41]-270.0*f[40]-467.6537180435967*f[39]-467.6537180435967*f[38]+270.0*f[37]+269.9999999999999*f[36]+467.6537180435969*f[35]-269.9999999999999*f[34]-269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]-301.8691769624717*f[29]+174.2842505793337*f[28]+301.8691769624717*f[26]+301.8691769624717*f[25]-174.2842505793337*f[24]-174.2842505793337*f[23]-301.8691769624717*f[19]-301.8691769624717*f[18]+174.2842505793337*f[17]+174.2842505793337*f[15]+301.8691769624717*f[11]-174.2842505793337*f[10]-174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]-300.0000000000001*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]-300.0000000000001*f[36]-519.6152422706633*f[35]+300.0000000000001*f[34]+300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]-116.1895003862225*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]+116.1895003862225*f[24]+116.1895003862225*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]-116.1895003862225*f[17]-116.1895003862225*f[15]-201.2461179749811*f[11]+116.1895003862225*f[10]+116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]-259.8076211353317*f[45]+150.0*f[44]+259.8076211353317*f[43]+259.8076211353315*f[42]-150.0*f[41]-150.0*f[40]-259.8076211353315*f[39]-259.8076211353315*f[38]+150.0*f[37]+150.0*f[36]+259.8076211353317*f[35]-150.0*f[34]-150.0*f[33]+150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]-207.8460969082653*f[46]-207.8460969082653*f[45]+120.0*f[44]+207.8460969082653*f[43]+207.8460969082653*f[42]-120.0*f[41]-120.0*f[40]-207.8460969082653*f[39]-207.8460969082653*f[38]+120.0*f[37]+120.0*f[36]+207.8460969082653*f[35]-120.0*f[34]-120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]+100.6230589874906*f[29]-58.09475019311126*f[28]-100.6230589874906*f[26]-100.6230589874906*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]+100.6230589874906*f[19]+100.6230589874906*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.6230589874906*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = 0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]+23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]-20.124611797498105*f[45]+11.618950038622252*f[44]+20.124611797498105*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]+11.618950038622252*f[36]+20.124611797498105*f[35]-11.618950038622252*f[34]-11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]+13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]-13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]+8.0*f[15]+13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]+13.416407864998737*f[45]-7.745966692414834*f[44]-13.416407864998737*f[43]-13.416407864998739*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]+13.416407864998739*f[39]+13.416407864998739*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.416407864998737*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]+6.7082039324993685*f[45]-3.872983346207417*f[44]-6.7082039324993685*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.7082039324993685*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]+13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]-12.0*f[16]+8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); + fReflSurfXYMu[1][2] = 0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]-467.65371804359694*f[45]+269.99999999999994*f[44]+467.65371804359694*f[43]+467.65371804359665*f[42]-270.0*f[41]-270.0*f[40]-467.65371804359665*f[39]-467.65371804359665*f[38]+270.0*f[37]+269.99999999999994*f[36]+467.65371804359694*f[35]-269.99999999999994*f[34]-269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]-301.86917696247167*f[29]+174.28425057933373*f[28]+301.86917696247167*f[26]+301.86917696247167*f[25]-174.28425057933373*f[24]-174.28425057933373*f[23]-301.86917696247167*f[19]-301.86917696247167*f[18]+174.28425057933373*f[17]+174.28425057933373*f[15]+301.86917696247167*f[11]-174.28425057933373*f[10]-174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]-300.00000000000006*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]-300.00000000000006*f[36]-519.6152422706633*f[35]+300.00000000000006*f[34]+300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]-116.18950038622252*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]+116.18950038622252*f[24]+116.18950038622252*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]-116.18950038622252*f[17]-116.18950038622252*f[15]-201.2461179749811*f[11]+116.18950038622252*f[10]+116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]-259.80762113533166*f[45]+150.00000000000003*f[44]+259.80762113533166*f[43]+259.80762113533154*f[42]-150.0*f[41]-150.0*f[40]-259.80762113533154*f[39]-259.80762113533154*f[38]+150.0*f[37]+150.00000000000003*f[36]+259.80762113533166*f[35]-150.00000000000003*f[34]-150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]-207.84609690826528*f[46]-207.84609690826528*f[45]+120.00000000000001*f[44]+207.84609690826528*f[43]+207.84609690826525*f[42]-120.0*f[41]-120.0*f[40]-207.84609690826525*f[39]-207.84609690826525*f[38]+120.0*f[37]+120.00000000000001*f[36]+207.84609690826528*f[35]-120.00000000000001*f[34]-120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]+100.62305898749055*f[29]-58.09475019311126*f[28]-100.62305898749055*f[26]-100.62305898749055*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]+100.62305898749055*f[19]+100.62305898749055*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.62305898749055*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4]); } else { // vcut in logical space. @@ -1694,24 +1830,26 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = -0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]+23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = -0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]-20.1246117974981*f[45]+11.61895003862225*f[44]+20.1246117974981*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]+11.61895003862225*f[36]+20.1246117974981*f[35]-11.61895003862225*f[34]-11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]+13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]-13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]+8.0*f[15]+13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]+13.41640786499874*f[45]-7.745966692414834*f[44]-13.41640786499874*f[43]-13.41640786499874*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]+13.41640786499874*f[39]+13.41640786499874*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.41640786499874*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]+6.708203932499369*f[45]-3.872983346207417*f[44]-6.708203932499369*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.708203932499369*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]-13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]-12.0*f[16]-8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = -0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]-467.6537180435969*f[45]+269.9999999999999*f[44]+467.6537180435969*f[43]+467.6537180435967*f[42]-270.0*f[41]-270.0*f[40]-467.6537180435967*f[39]-467.6537180435967*f[38]+270.0*f[37]+269.9999999999999*f[36]+467.6537180435969*f[35]-269.9999999999999*f[34]-269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]-301.8691769624717*f[29]+174.2842505793337*f[28]+301.8691769624717*f[26]+301.8691769624717*f[25]-174.2842505793337*f[24]-174.2842505793337*f[23]-301.8691769624717*f[19]-301.8691769624717*f[18]+174.2842505793337*f[17]+174.2842505793337*f[15]+301.8691769624717*f[11]-174.2842505793337*f[10]-174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]-300.0000000000001*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]-300.0000000000001*f[36]-519.6152422706633*f[35]+300.0000000000001*f[34]+300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]-116.1895003862225*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]+116.1895003862225*f[24]+116.1895003862225*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]-116.1895003862225*f[17]-116.1895003862225*f[15]-201.2461179749811*f[11]+116.1895003862225*f[10]+116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]-259.8076211353317*f[45]+150.0*f[44]+259.8076211353317*f[43]+259.8076211353315*f[42]-150.0*f[41]-150.0*f[40]-259.8076211353315*f[39]-259.8076211353315*f[38]+150.0*f[37]+150.0*f[36]+259.8076211353317*f[35]-150.0*f[34]-150.0*f[33]+150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]+207.8460969082653*f[46]+207.8460969082653*f[45]-120.0*f[44]-207.8460969082653*f[43]-207.8460969082653*f[42]+120.0*f[41]+120.0*f[40]+207.8460969082653*f[39]+207.8460969082653*f[38]-120.0*f[37]-120.0*f[36]-207.8460969082653*f[35]+120.0*f[34]+120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]+100.6230589874906*f[29]-58.09475019311126*f[28]-100.6230589874906*f[26]-100.6230589874906*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]+100.6230589874906*f[19]+100.6230589874906*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.6230589874906*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = -(0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]+23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[1][1] = -(0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]-20.124611797498105*f[45]+11.618950038622252*f[44]+20.124611797498105*f[43]+20.12461179749811*f[42]-11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]+11.618950038622252*f[36]+20.124611797498105*f[35]-11.618950038622252*f[34]-11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]+13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]-13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]+8.0*f[15]+13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]+13.416407864998737*f[45]-7.745966692414834*f[44]-13.416407864998737*f[43]-13.416407864998739*f[42]+7.745966692414834*f[41]+7.745966692414834*f[40]+13.416407864998739*f[39]+13.416407864998739*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.416407864998737*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]+6.7082039324993685*f[45]-3.872983346207417*f[44]-6.7082039324993685*f[43]-6.708203932499369*f[42]+3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.7082039324993685*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]-13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]+12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]-12.0*f[16]-8.0*f[15]-12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]+12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])); + fReflSurfXYMu[1][2] = -(0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]-467.65371804359694*f[45]+269.99999999999994*f[44]+467.65371804359694*f[43]+467.65371804359665*f[42]-270.0*f[41]-270.0*f[40]-467.65371804359665*f[39]-467.65371804359665*f[38]+270.0*f[37]+269.99999999999994*f[36]+467.65371804359694*f[35]-269.99999999999994*f[34]-269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]-301.86917696247167*f[29]+174.28425057933373*f[28]+301.86917696247167*f[26]+301.86917696247167*f[25]-174.28425057933373*f[24]-174.28425057933373*f[23]-301.86917696247167*f[19]-301.86917696247167*f[18]+174.28425057933373*f[17]+174.28425057933373*f[15]+301.86917696247167*f[11]-174.28425057933373*f[10]-174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]+519.6152422706633*f[45]-300.00000000000006*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]+300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]-300.00000000000006*f[36]-519.6152422706633*f[35]+300.00000000000006*f[34]+300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]+201.2461179749811*f[29]-116.18950038622252*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]+116.18950038622252*f[24]+116.18950038622252*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]-116.18950038622252*f[17]-116.18950038622252*f[15]-201.2461179749811*f[11]+116.18950038622252*f[10]+116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]-259.80762113533166*f[45]+150.00000000000003*f[44]+259.80762113533166*f[43]+259.80762113533154*f[42]-150.0*f[41]-150.0*f[40]-259.80762113533154*f[39]-259.80762113533154*f[38]+150.0*f[37]+150.00000000000003*f[36]+259.80762113533166*f[35]-150.00000000000003*f[34]-150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]+207.84609690826528*f[46]+207.84609690826528*f[45]-120.00000000000001*f[44]-207.84609690826528*f[43]-207.84609690826525*f[42]+120.0*f[41]+120.0*f[40]+207.84609690826525*f[39]+207.84609690826525*f[38]-120.0*f[37]-120.00000000000001*f[36]-207.84609690826528*f[35]+120.00000000000001*f[34]+120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]+100.62305898749055*f[29]-58.09475019311126*f[28]-100.62305898749055*f[26]-100.62305898749055*f[25]+58.09475019311126*f[24]+58.09475019311126*f[23]+100.62305898749055*f[19]+100.62305898749055*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.62305898749055*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4])); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; - if (fReflSurfXYMu[1][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; + if (fReflSurfXYMu[1][0]<0.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; + } + } fReflSurfXY[0][0] = 0.7071067811865475*(fReflSurfXYMu[1][0]+fReflSurfXYMu[0][0]); @@ -1721,38 +1859,28 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double fReflSurfXY[0][4] = 0.7071067811865475*(fReflSurfXYMu[1][2]+fReflSurfXYMu[0][2]); fReflSurfXY[0][5] = 0.7071067811865475*(fReflSurfXYMu[1][2]-1.0*fReflSurfXYMu[0][2]); - } - // node (x,y)_1 - vcutSq = -0.25*(2.449489742783178*phiWall[7]-2.449489742783178*(phi[7]+phiWall[6])+2.449489742783178*(phi[6]+phiWall[5])-2.449489742783178*phi[5]+1.414213562373095*phiWall[4]-1.414213562373095*phi[4]-2.449489742783178*phiWall[3]+2.449489742783178*phi[3]-1.414213562373095*phiWall[2]+1.414213562373095*(phi[2]+phiWall[1])-1.414213562373095*(phi[1]+phiWall[0])+1.414213562373095*phi[0])*q2Dm; - if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) + wv = 0.5*vparUp+0.5*vparLo; + dv = vparUp-1.0*vparLo; - fReflSurfXY[1][0] = 0.0; - fReflSurfXY[1][1] = 0.0; - fReflSurfXY[1][2] = 0.0; - fReflSurfXY[1][3] = 0.0; - fReflSurfXY[1][4] = 0.0; - fReflSurfXY[1][5] = 0.0; + // node (mu)_0 + 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; - } else if (vcutSq > vparAbsSqUp) { // full reflection + if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) - fReflSurfXY[1][0] = -0.3535533905932737*(1.732050807568877*(f[16]-1.0*f[8]+f[7])+f[6]-1.0*(1.732050807568877*f[3]+f[2])+f[1]-1.0*f[0]); - fReflSurfXY[1][1] = -0.3535533905932737*(1.732050807568877*(f[26]-1.0*f[19]+f[18])+f[17]-1.0*(1.732050807568877*f[11]+f[10])+f[9]-1.0*f[4]); - fReflSurfXY[1][2] = -0.3535533905932737*(1.732050807568877*(f[27]-1.0*f[22]+f[21])+f[20]-1.0*(1.732050807568877*f[14]+f[13])+f[12]-1.0*f[5]); - fReflSurfXY[1][3] = -0.3535533905932737*(1.732050807568877*(f[31]-1.0*f[30]+f[29])+f[28]-1.0*(1.732050807568877*f[25]+f[24])+f[23]-1.0*f[15]); - fReflSurfXY[1][4] = -0.02357022603955158*(25.98076211353316*f[43]+5.0*(5.196152422706631*(f[38]-1.0*f[39])+3.0*f[37])+8.660254037844387*(1.732050807568877*(f[33]-1.0*f[34])-3.0*f[35])-15.0*f[32]); - fReflSurfXY[1][5] = -0.02357022603955158*(25.98076211353316*f[47]+5.0*(5.196152422706631*(f[45]-1.0*f[46])+3.0*f[44])+8.660254037844387*(1.732050807568877*(f[40]-1.0*f[41])-3.0*f[42])-15.0*f[36]); + fReflSurfXYMu[0][0] = 0.0; + fReflSurfXYMu[0][1] = 0.0; + fReflSurfXYMu[0][2] = 0.0; - } else { // partial reflection + } else if (vcutSq > vparAbsSqUp) { // full reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; + fReflSurfXYMu[0][0] = 0.25*(1.7320508075688772*(f[27]-1.0*f[22]+f[21])+f[20]-1.0*(1.7320508075688772*(f[16]+f[14])+f[13])+f[12]+1.7320508075688772*f[8]-1.0*(1.7320508075688772*f[7]+f[6]+f[5])+1.7320508075688772*f[3]+f[2]-1.0*f[1]+f[0]); + fReflSurfXYMu[0][1] = 0.25*(1.7320508075688772*(f[31]-1.0*f[30]+f[29])+f[28]-1.0*(1.7320508075688772*(f[26]+f[25])+f[24])+f[23]+1.7320508075688772*f[19]-1.0*(1.7320508075688772*f[18]+f[17]+f[15])+1.7320508075688772*f[11]+f[10]-1.0*f[9]+f[4]); + fReflSurfXYMu[0][2] = 0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(3.0*(f[45]-1.0*f[46])+1.7320508075688772*f[44]-3.0*f[43])+5.0*(-(5.196152422706631*f[42])+3.0*(f[40]-1.0*f[41])+5.196152422706631*f[39]-1.0*(5.196152422706631*f[38]+3.0*f[37]))+8.660254037844387*(-(1.7320508075688772*f[36])+3.0*f[35]+1.7320508075688772*(f[34]-1.0*f[33]))+15.0*f[32]); - double xBar, xSqBar; - double fReflSurfXYMu[2][3] = {0.}; + } else { // partial reflection - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1762,9 +1890,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = 0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]+23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]+20.1246117974981*f[45]+11.61895003862225*f[44]-20.1246117974981*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]-11.61895003862225*f[36]+20.1246117974981*f[35]+11.61895003862225*f[34]-11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]-13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]+13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]-8.0*f[15]+13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]-13.41640786499874*f[45]-7.745966692414834*f[44]+13.41640786499874*f[43]+13.41640786499874*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]-13.41640786499874*f[39]+13.41640786499874*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.41640786499874*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]-6.708203932499369*f[45]-3.872983346207417*f[44]+6.708203932499369*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.708203932499369*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]+13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]+12.0*f[16]-8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = 0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]+467.6537180435969*f[45]+269.9999999999999*f[44]-467.6537180435969*f[43]-467.6537180435967*f[42]-270.0*f[41]+270.0*f[40]+467.6537180435967*f[39]-467.6537180435967*f[38]-270.0*f[37]-269.9999999999999*f[36]+467.6537180435969*f[35]+269.9999999999999*f[34]-269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]+301.8691769624717*f[29]+174.2842505793337*f[28]-301.8691769624717*f[26]-301.8691769624717*f[25]-174.2842505793337*f[24]+174.2842505793337*f[23]+301.8691769624717*f[19]-301.8691769624717*f[18]-174.2842505793337*f[17]-174.2842505793337*f[15]+301.8691769624717*f[11]+174.2842505793337*f[10]-174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]-300.0000000000001*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]+300.0000000000001*f[36]-519.6152422706633*f[35]-300.0000000000001*f[34]+300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]-116.1895003862225*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]+116.1895003862225*f[24]-116.1895003862225*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]+116.1895003862225*f[17]+116.1895003862225*f[15]-201.2461179749811*f[11]-116.1895003862225*f[10]+116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]+259.8076211353317*f[45]+150.0*f[44]-259.8076211353317*f[43]-259.8076211353315*f[42]-150.0*f[41]+150.0*f[40]+259.8076211353315*f[39]-259.8076211353315*f[38]-150.0*f[37]-150.0*f[36]+259.8076211353317*f[35]+150.0*f[34]-150.0*f[33]+150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]-207.8460969082653*f[46]+207.8460969082653*f[45]+120.0*f[44]-207.8460969082653*f[43]-207.8460969082653*f[42]-120.0*f[41]+120.0*f[40]+207.8460969082653*f[39]-207.8460969082653*f[38]-120.0*f[37]-120.0*f[36]+207.8460969082653*f[35]+120.0*f[34]-120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]-100.6230589874906*f[29]-58.09475019311126*f[28]+100.6230589874906*f[26]+100.6230589874906*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]-100.6230589874906*f[19]+100.6230589874906*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.6230589874906*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = 0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]+23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]+20.124611797498105*f[45]+11.618950038622252*f[44]-20.124611797498105*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]-11.618950038622252*f[36]+20.124611797498105*f[35]+11.618950038622252*f[34]-11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]-13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]+13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]-8.0*f[15]+13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]-13.416407864998737*f[45]-7.745966692414834*f[44]+13.416407864998737*f[43]+13.416407864998739*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]-13.416407864998739*f[39]+13.416407864998739*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.416407864998737*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]-6.7082039324993685*f[45]-3.872983346207417*f[44]+6.7082039324993685*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.7082039324993685*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]+13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]+12.0*f[16]-8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); + fReflSurfXYMu[0][2] = 0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]+467.65371804359694*f[45]+269.99999999999994*f[44]-467.65371804359694*f[43]-467.65371804359665*f[42]-270.0*f[41]+270.0*f[40]+467.65371804359665*f[39]-467.65371804359665*f[38]-270.0*f[37]-269.99999999999994*f[36]+467.65371804359694*f[35]+269.99999999999994*f[34]-269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]+301.86917696247167*f[29]+174.28425057933373*f[28]-301.86917696247167*f[26]-301.86917696247167*f[25]-174.28425057933373*f[24]+174.28425057933373*f[23]+301.86917696247167*f[19]-301.86917696247167*f[18]-174.28425057933373*f[17]-174.28425057933373*f[15]+301.86917696247167*f[11]+174.28425057933373*f[10]-174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]-300.00000000000006*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]+300.00000000000006*f[36]-519.6152422706633*f[35]-300.00000000000006*f[34]+300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]-116.18950038622252*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]+116.18950038622252*f[24]-116.18950038622252*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]+116.18950038622252*f[17]+116.18950038622252*f[15]-201.2461179749811*f[11]-116.18950038622252*f[10]+116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]+259.80762113533166*f[45]+150.00000000000003*f[44]-259.80762113533166*f[43]-259.80762113533154*f[42]-150.0*f[41]+150.0*f[40]+259.80762113533154*f[39]-259.80762113533154*f[38]-150.0*f[37]-150.00000000000003*f[36]+259.80762113533166*f[35]+150.00000000000003*f[34]-150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]-207.84609690826528*f[46]+207.84609690826528*f[45]+120.00000000000001*f[44]-207.84609690826528*f[43]-207.84609690826525*f[42]-120.0*f[41]+120.0*f[40]+207.84609690826525*f[39]-207.84609690826525*f[38]-120.0*f[37]-120.00000000000001*f[36]+207.84609690826528*f[35]+120.00000000000001*f[34]-120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]-100.62305898749055*f[29]-58.09475019311126*f[28]+100.62305898749055*f[26]+100.62305898749055*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]-100.62305898749055*f[19]+100.62305898749055*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.62305898749055*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4]); } else { // vcut in logical space. @@ -1775,27 +1903,45 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = -0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]+23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = -0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]+20.1246117974981*f[45]+11.61895003862225*f[44]-20.1246117974981*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]-11.61895003862225*f[36]+20.1246117974981*f[35]+11.61895003862225*f[34]-11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]-13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]+13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]-8.0*f[15]+13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]-13.41640786499874*f[45]-7.745966692414834*f[44]+13.41640786499874*f[43]+13.41640786499874*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]-13.41640786499874*f[39]+13.41640786499874*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.41640786499874*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]-6.708203932499369*f[45]-3.872983346207417*f[44]+6.708203932499369*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.708203932499369*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]-13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]+12.0*f[16]+8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = -0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]+467.6537180435969*f[45]+269.9999999999999*f[44]-467.6537180435969*f[43]-467.6537180435967*f[42]-270.0*f[41]+270.0*f[40]+467.6537180435967*f[39]-467.6537180435967*f[38]-270.0*f[37]-269.9999999999999*f[36]+467.6537180435969*f[35]+269.9999999999999*f[34]-269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]+301.8691769624717*f[29]+174.2842505793337*f[28]-301.8691769624717*f[26]-301.8691769624717*f[25]-174.2842505793337*f[24]+174.2842505793337*f[23]+301.8691769624717*f[19]-301.8691769624717*f[18]-174.2842505793337*f[17]-174.2842505793337*f[15]+301.8691769624717*f[11]+174.2842505793337*f[10]-174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]-300.0000000000001*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]+300.0000000000001*f[36]-519.6152422706633*f[35]-300.0000000000001*f[34]+300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]-116.1895003862225*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]+116.1895003862225*f[24]-116.1895003862225*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]+116.1895003862225*f[17]+116.1895003862225*f[15]-201.2461179749811*f[11]-116.1895003862225*f[10]+116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]+259.8076211353317*f[45]+150.0*f[44]-259.8076211353317*f[43]-259.8076211353315*f[42]-150.0*f[41]+150.0*f[40]+259.8076211353315*f[39]-259.8076211353315*f[38]-150.0*f[37]-150.0*f[36]+259.8076211353317*f[35]+150.0*f[34]-150.0*f[33]+150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]+207.8460969082653*f[46]-207.8460969082653*f[45]-120.0*f[44]+207.8460969082653*f[43]+207.8460969082653*f[42]+120.0*f[41]-120.0*f[40]-207.8460969082653*f[39]+207.8460969082653*f[38]+120.0*f[37]+120.0*f[36]-207.8460969082653*f[35]-120.0*f[34]+120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]-100.6230589874906*f[29]-58.09475019311126*f[28]+100.6230589874906*f[26]+100.6230589874906*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]-100.6230589874906*f[19]+100.6230589874906*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.6230589874906*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = -(0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]+23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[0][1] = -(0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]+20.124611797498105*f[45]+11.618950038622252*f[44]-20.124611797498105*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]-11.618950038622252*f[36]+20.124611797498105*f[35]+11.618950038622252*f[34]-11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]-13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]+13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]-8.0*f[15]+13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]-13.416407864998737*f[45]-7.745966692414834*f[44]+13.416407864998737*f[43]+13.416407864998739*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]-13.416407864998739*f[39]+13.416407864998739*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.416407864998737*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]-6.7082039324993685*f[45]-3.872983346207417*f[44]+6.7082039324993685*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.7082039324993685*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]-3.872983346207417*f[32]-13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]+12.0*f[16]+8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])); + fReflSurfXYMu[0][2] = -(0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]+467.65371804359694*f[45]+269.99999999999994*f[44]-467.65371804359694*f[43]-467.65371804359665*f[42]-270.0*f[41]+270.0*f[40]+467.65371804359665*f[39]-467.65371804359665*f[38]-270.0*f[37]-269.99999999999994*f[36]+467.65371804359694*f[35]+269.99999999999994*f[34]-269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]+301.86917696247167*f[29]+174.28425057933373*f[28]-301.86917696247167*f[26]-301.86917696247167*f[25]-174.28425057933373*f[24]+174.28425057933373*f[23]+301.86917696247167*f[19]-301.86917696247167*f[18]-174.28425057933373*f[17]-174.28425057933373*f[15]+301.86917696247167*f[11]+174.28425057933373*f[10]-174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]-300.00000000000006*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]+300.00000000000006*f[36]-519.6152422706633*f[35]-300.00000000000006*f[34]+300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]-116.18950038622252*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]+116.18950038622252*f[24]-116.18950038622252*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]+116.18950038622252*f[17]+116.18950038622252*f[15]-201.2461179749811*f[11]-116.18950038622252*f[10]+116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]+259.80762113533166*f[45]+150.00000000000003*f[44]-259.80762113533166*f[43]-259.80762113533154*f[42]-150.0*f[41]+150.0*f[40]+259.80762113533154*f[39]-259.80762113533154*f[38]-150.0*f[37]-150.00000000000003*f[36]+259.80762113533166*f[35]+150.00000000000003*f[34]-150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]+207.84609690826528*f[46]-207.84609690826528*f[45]-120.00000000000001*f[44]+207.84609690826528*f[43]+207.84609690826525*f[42]+120.0*f[41]-120.0*f[40]-207.84609690826525*f[39]+207.84609690826525*f[38]+120.0*f[37]+120.00000000000001*f[36]-207.84609690826528*f[35]-120.00000000000001*f[34]+120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]-100.62305898749055*f[29]-58.09475019311126*f[28]+100.62305898749055*f[26]+100.62305898749055*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]-100.62305898749055*f[19]+100.62305898749055*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.62305898749055*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]-58.09475019311126*f[4])); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; - if (fReflSurfXYMu[0][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; + if (fReflSurfXYMu[0][0]<0.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; + } + } - // node (mu)_1 + // node (mu)_1 + 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) + + fReflSurfXYMu[1][0] = 0.0; + fReflSurfXYMu[1][1] = 0.0; + fReflSurfXYMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfXYMu[1][0] = -(0.25*(1.7320508075688772*(f[27]-1.0*f[22]+f[21])+f[20]+1.7320508075688772*f[16]-1.0*(1.7320508075688772*f[14]+f[13])+f[12]+1.7320508075688772*(f[7]-1.0*f[8])+f[6]-1.0*(f[5]+1.7320508075688772*f[3]+f[2])+f[1]-1.0*f[0])); + fReflSurfXYMu[1][1] = -(0.25*(1.7320508075688772*(f[31]-1.0*f[30]+f[29])+f[28]+1.7320508075688772*f[26]-1.0*(1.7320508075688772*f[25]+f[24])+f[23]+1.7320508075688772*(f[18]-1.0*f[19])+f[17]-1.0*(f[15]+1.7320508075688772*f[11]+f[10])+f[9]-1.0*f[4])); + fReflSurfXYMu[1][2] = -(0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(3.0*(f[45]-1.0*f[46])+1.7320508075688772*f[44]+3.0*f[43])+5.0*(-(5.196152422706631*f[42])+3.0*(f[40]-1.0*f[41])+5.196152422706631*(f[38]-1.0*f[39])+3.0*f[37])+8.660254037844387*(1.7320508075688772*(f[33]-1.0*f[34])-1.0*(1.7320508075688772*f[36]+3.0*f[35]))-15.0*f[32])); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1805,9 +1951,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = -0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]-23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = -0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]+20.1246117974981*f[45]+11.61895003862225*f[44]+20.1246117974981*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]-11.61895003862225*f[36]-20.1246117974981*f[35]-11.61895003862225*f[34]+11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]+13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]-13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]-8.0*f[15]-13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]-13.41640786499874*f[45]-7.745966692414834*f[44]-13.41640786499874*f[43]+13.41640786499874*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]+13.41640786499874*f[39]-13.41640786499874*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.41640786499874*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]-6.708203932499369*f[45]-3.872983346207417*f[44]-6.708203932499369*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.708203932499369*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]+13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]-12.0*f[16]-8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = -0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]+467.6537180435969*f[45]+269.9999999999999*f[44]+467.6537180435969*f[43]-467.6537180435967*f[42]-270.0*f[41]+270.0*f[40]-467.6537180435967*f[39]+467.6537180435967*f[38]+270.0*f[37]-269.9999999999999*f[36]-467.6537180435969*f[35]-269.9999999999999*f[34]+269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]+301.8691769624717*f[29]+174.2842505793337*f[28]+301.8691769624717*f[26]-301.8691769624717*f[25]-174.2842505793337*f[24]+174.2842505793337*f[23]-301.8691769624717*f[19]+301.8691769624717*f[18]+174.2842505793337*f[17]-174.2842505793337*f[15]-301.8691769624717*f[11]-174.2842505793337*f[10]+174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]-300.0000000000001*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]+300.0000000000001*f[36]+519.6152422706633*f[35]+300.0000000000001*f[34]-300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]-116.1895003862225*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]+116.1895003862225*f[24]-116.1895003862225*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]-116.1895003862225*f[17]+116.1895003862225*f[15]+201.2461179749811*f[11]+116.1895003862225*f[10]-116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]+259.8076211353317*f[45]+150.0*f[44]+259.8076211353317*f[43]-259.8076211353315*f[42]-150.0*f[41]+150.0*f[40]-259.8076211353315*f[39]+259.8076211353315*f[38]+150.0*f[37]-150.0*f[36]-259.8076211353317*f[35]-150.0*f[34]+150.0*f[33]-150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]-207.8460969082653*f[46]+207.8460969082653*f[45]+120.0*f[44]+207.8460969082653*f[43]-207.8460969082653*f[42]-120.0*f[41]+120.0*f[40]-207.8460969082653*f[39]+207.8460969082653*f[38]+120.0*f[37]-120.0*f[36]-207.8460969082653*f[35]-120.0*f[34]+120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]-100.6230589874906*f[29]-58.09475019311126*f[28]-100.6230589874906*f[26]+100.6230589874906*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]+100.6230589874906*f[19]-100.6230589874906*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.6230589874906*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = -(0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]-23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[1][1] = -(0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]+20.124611797498105*f[45]+11.618950038622252*f[44]+20.124611797498105*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]-11.618950038622252*f[36]-20.124611797498105*f[35]-11.618950038622252*f[34]+11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]+13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]-13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]-8.0*f[15]-13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]-13.416407864998737*f[45]-7.745966692414834*f[44]-13.416407864998737*f[43]+13.416407864998739*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]+13.416407864998739*f[39]-13.416407864998739*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.416407864998737*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]-6.7082039324993685*f[45]-3.872983346207417*f[44]-6.7082039324993685*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.7082039324993685*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]+13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]-12.0*f[16]-8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0])); + fReflSurfXYMu[1][2] = -(0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]+467.65371804359694*f[45]+269.99999999999994*f[44]+467.65371804359694*f[43]-467.65371804359665*f[42]-270.0*f[41]+270.0*f[40]-467.65371804359665*f[39]+467.65371804359665*f[38]+270.0*f[37]-269.99999999999994*f[36]-467.65371804359694*f[35]-269.99999999999994*f[34]+269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]+301.86917696247167*f[29]+174.28425057933373*f[28]+301.86917696247167*f[26]-301.86917696247167*f[25]-174.28425057933373*f[24]+174.28425057933373*f[23]-301.86917696247167*f[19]+301.86917696247167*f[18]+174.28425057933373*f[17]-174.28425057933373*f[15]-301.86917696247167*f[11]-174.28425057933373*f[10]+174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]-300.00000000000006*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]+300.00000000000006*f[36]+519.6152422706633*f[35]+300.00000000000006*f[34]-300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]-116.18950038622252*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]+116.18950038622252*f[24]-116.18950038622252*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]-116.18950038622252*f[17]+116.18950038622252*f[15]+201.2461179749811*f[11]+116.18950038622252*f[10]-116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]+259.80762113533166*f[45]+150.00000000000003*f[44]+259.80762113533166*f[43]-259.80762113533154*f[42]-150.0*f[41]+150.0*f[40]-259.80762113533154*f[39]+259.80762113533154*f[38]+150.0*f[37]-150.00000000000003*f[36]-259.80762113533166*f[35]-150.00000000000003*f[34]+150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]-207.84609690826528*f[46]+207.84609690826528*f[45]+120.00000000000001*f[44]+207.84609690826528*f[43]-207.84609690826525*f[42]-120.0*f[41]+120.0*f[40]-207.84609690826525*f[39]+207.84609690826525*f[38]+120.0*f[37]-120.00000000000001*f[36]-207.84609690826528*f[35]-120.00000000000001*f[34]+120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]-100.62305898749055*f[29]-58.09475019311126*f[28]-100.62305898749055*f[26]+100.62305898749055*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]+100.62305898749055*f[19]-100.62305898749055*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.62305898749055*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4])); } else { // vcut in logical space. @@ -1818,24 +1964,26 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = 0.009316949906249122*((25.98076211353316*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]-23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]-20.1246117974981*f[46]+20.1246117974981*f[45]+11.61895003862225*f[44]+20.1246117974981*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]-11.61895003862225*f[36]-20.1246117974981*f[35]-11.61895003862225*f[34]+11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]+13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]-13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]-8.0*f[15]-13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])+13.41640786499874*f[46]-13.41640786499874*f[45]-7.745966692414834*f[44]-13.41640786499874*f[43]+13.41640786499874*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]+13.41640786499874*f[39]-13.41640786499874*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.41640786499874*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.708203932499369*f[46]-6.708203932499369*f[45]-3.872983346207417*f[44]-6.708203932499369*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.708203932499369*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]-13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]-12.0*f[16]+8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = 0.001041666666666667*((467.6537180435967*f[47]-467.6537180435969*f[46]+467.6537180435969*f[45]+269.9999999999999*f[44]+467.6537180435969*f[43]-467.6537180435967*f[42]-270.0*f[41]+270.0*f[40]-467.6537180435967*f[39]+467.6537180435967*f[38]+270.0*f[37]-269.9999999999999*f[36]-467.6537180435969*f[35]-269.9999999999999*f[34]+269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]-301.8691769624717*f[30]+301.8691769624717*f[29]+174.2842505793337*f[28]+301.8691769624717*f[26]-301.8691769624717*f[25]-174.2842505793337*f[24]+174.2842505793337*f[23]-301.8691769624717*f[19]+301.8691769624717*f[18]+174.2842505793337*f[17]-174.2842505793337*f[15]-301.8691769624717*f[11]-174.2842505793337*f[10]+174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]-300.0000000000001*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]+300.0000000000001*f[36]+519.6152422706633*f[35]+300.0000000000001*f[34]-300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]-116.1895003862225*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]+116.1895003862225*f[24]-116.1895003862225*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]-116.1895003862225*f[17]+116.1895003862225*f[15]+201.2461179749811*f[11]+116.1895003862225*f[10]-116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]-259.8076211353317*f[46]+259.8076211353317*f[45]+150.0*f[44]+259.8076211353317*f[43]-259.8076211353315*f[42]-150.0*f[41]+150.0*f[40]-259.8076211353315*f[39]+259.8076211353315*f[38]+150.0*f[37]-150.0*f[36]-259.8076211353317*f[35]-150.0*f[34]+150.0*f[33]-150.0*f[32]-232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]+207.8460969082653*f[46]-207.8460969082653*f[45]-120.0*f[44]-207.8460969082653*f[43]+207.8460969082653*f[42]+120.0*f[41]-120.0*f[40]+207.8460969082653*f[39]-207.8460969082653*f[38]-120.0*f[37]+120.0*f[36]+207.8460969082653*f[35]+120.0*f[34]-120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]+100.6230589874906*f[30]-100.6230589874906*f[29]-58.09475019311126*f[28]-100.6230589874906*f[26]+100.6230589874906*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]+100.6230589874906*f[19]-100.6230589874906*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.6230589874906*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = 0.009316949906249122*((25.980762113533157*f[47]-25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])+25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]-23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]-23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]-20.124611797498105*f[46]+20.124611797498105*f[45]+11.618950038622252*f[44]+20.124611797498105*f[43]-20.12461179749811*f[42]-11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]-11.618950038622252*f[36]-20.124611797498105*f[35]-11.618950038622252*f[34]+11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]+13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]-13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]-8.0*f[15]-13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])+13.416407864998737*f[46]-13.416407864998737*f[45]-7.745966692414834*f[44]-13.416407864998737*f[43]+13.416407864998739*f[42]+7.745966692414834*f[41]-7.745966692414834*f[40]+13.416407864998739*f[39]-13.416407864998739*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.416407864998737*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]-12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]+6.7082039324993685*f[46]-6.7082039324993685*f[45]-3.872983346207417*f[44]-6.7082039324993685*f[43]+6.708203932499369*f[42]+3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.7082039324993685*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]+3.872983346207417*f[32]-13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]+12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]-12.0*f[16]+8.0*f[15]+12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]+12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]+6.928203230275509*f[0]); + fReflSurfXYMu[1][2] = 0.0010416666666666667*((467.65371804359665*f[47]-467.65371804359694*f[46]+467.65371804359694*f[45]+269.99999999999994*f[44]+467.65371804359694*f[43]-467.65371804359665*f[42]-270.0*f[41]+270.0*f[40]-467.65371804359665*f[39]+467.65371804359665*f[38]+270.0*f[37]-269.99999999999994*f[36]-467.65371804359694*f[35]-269.99999999999994*f[34]+269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]-301.86917696247167*f[30]+301.86917696247167*f[29]+174.28425057933373*f[28]+301.86917696247167*f[26]-301.86917696247167*f[25]-174.28425057933373*f[24]+174.28425057933373*f[23]-301.86917696247167*f[19]+301.86917696247167*f[18]+174.28425057933373*f[17]-174.28425057933373*f[15]-301.86917696247167*f[11]-174.28425057933373*f[10]+174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])+519.6152422706633*f[46]-519.6152422706633*f[45]-300.00000000000006*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]+300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]+300.00000000000006*f[36]+519.6152422706633*f[35]+300.00000000000006*f[34]-300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])+201.2461179749811*f[30]-201.2461179749811*f[29]-116.18950038622252*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]+116.18950038622252*f[24]-116.18950038622252*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]-116.18950038622252*f[17]+116.18950038622252*f[15]+201.2461179749811*f[11]+116.18950038622252*f[10]-116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]-259.80762113533166*f[46]+259.80762113533166*f[45]+150.00000000000003*f[44]+259.80762113533166*f[43]-259.80762113533154*f[42]-150.0*f[41]+150.0*f[40]-259.80762113533154*f[39]+259.80762113533154*f[38]+150.0*f[37]-150.00000000000003*f[36]-259.80762113533166*f[35]-150.00000000000003*f[34]+150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]+207.84609690826528*f[46]-207.84609690826528*f[45]-120.00000000000001*f[44]-207.84609690826528*f[43]+207.84609690826525*f[42]+120.0*f[41]-120.0*f[40]+207.84609690826525*f[39]-207.84609690826525*f[38]-120.0*f[37]+120.00000000000001*f[36]+207.84609690826528*f[35]+120.00000000000001*f[34]-120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]+100.62305898749055*f[30]-100.62305898749055*f[29]-58.09475019311126*f[28]-100.62305898749055*f[26]+100.62305898749055*f[25]+58.09475019311126*f[24]-58.09475019311126*f[23]+100.62305898749055*f[19]-100.62305898749055*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.62305898749055*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]+58.09475019311126*f[4]); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; - if (fReflSurfXYMu[1][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; + if (fReflSurfXYMu[1][0]<0.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; + } + } fReflSurfXY[1][0] = 0.7071067811865475*(fReflSurfXYMu[1][0]+fReflSurfXYMu[0][0]); @@ -1845,38 +1993,28 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double fReflSurfXY[1][4] = 0.7071067811865475*(fReflSurfXYMu[1][2]+fReflSurfXYMu[0][2]); fReflSurfXY[1][5] = 0.7071067811865475*(fReflSurfXYMu[1][2]-1.0*fReflSurfXYMu[0][2]); - } - // node (x,y)_2 - vcutSq = -0.25*(2.449489742783178*phiWall[7]-2.449489742783178*phi[7]+2.449489742783178*phiWall[6]-2.449489742783178*(phi[6]+phiWall[5])+2.449489742783178*phi[5]+1.414213562373095*phiWall[4]-1.414213562373095*phi[4]-2.449489742783178*phiWall[3]+2.449489742783178*phi[3]+1.414213562373095*phiWall[2]-1.414213562373095*(phi[2]+phiWall[1])+1.414213562373095*phi[1]-1.414213562373095*phiWall[0]+1.414213562373095*phi[0])*q2Dm; - if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) + wv = 0.5*vparUp+0.5*vparLo; + dv = vparUp-1.0*vparLo; - fReflSurfXY[2][0] = 0.0; - fReflSurfXY[2][1] = 0.0; - fReflSurfXY[2][2] = 0.0; - fReflSurfXY[2][3] = 0.0; - fReflSurfXY[2][4] = 0.0; - fReflSurfXY[2][5] = 0.0; + // node (mu)_0 + 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; - } else if (vcutSq > vparAbsSqUp) { // full reflection + if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) - fReflSurfXY[2][0] = -0.3535533905932737*(1.732050807568877*(f[16]+f[8]-1.0*f[7])+f[6]-1.732050807568877*f[3]+f[2]-1.0*(f[1]+f[0])); - fReflSurfXY[2][1] = -0.3535533905932737*(1.732050807568877*(f[26]+f[19]-1.0*f[18])+f[17]-1.732050807568877*f[11]+f[10]-1.0*(f[9]+f[4])); - fReflSurfXY[2][2] = -0.3535533905932737*(1.732050807568877*(f[27]+f[22]-1.0*f[21])+f[20]-1.732050807568877*f[14]+f[13]-1.0*(f[12]+f[5])); - fReflSurfXY[2][3] = -0.3535533905932737*(1.732050807568877*(f[31]+f[30]-1.0*f[29])+f[28]-1.732050807568877*f[25]+f[24]-1.0*(f[23]+f[15])); - fReflSurfXY[2][4] = -0.02357022603955158*(25.98076211353316*f[43]+5.0*(5.196152422706631*(f[39]-1.0*f[38])+3.0*f[37])+8.660254037844387*(1.732050807568877*f[34]-3.0*f[35])-1.0*(15.0*f[33]+15.0*f[32])); - fReflSurfXY[2][5] = -0.02357022603955158*(25.98076211353316*f[47]+5.0*(5.196152422706631*(f[46]-1.0*f[45])+3.0*f[44])+8.660254037844387*(1.732050807568877*f[41]-3.0*f[42])-1.0*(15.0*f[40]+15.0*f[36])); + fReflSurfXYMu[0][0] = 0.0; + fReflSurfXYMu[0][1] = 0.0; + fReflSurfXYMu[0][2] = 0.0; - } else { // partial reflection + } else if (vcutSq > vparAbsSqUp) { // full reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; + fReflSurfXYMu[0][0] = 0.25*(1.7320508075688772*(f[27]+f[22]-1.0*f[21])+f[20]-1.7320508075688772*(f[16]+f[14])+f[13]-1.0*f[12]+1.7320508075688772*(f[7]-1.0*f[8])-1.0*(f[6]+f[5])+1.7320508075688772*f[3]-1.0*f[2]+f[1]+f[0]); + fReflSurfXYMu[0][1] = 0.25*(1.7320508075688772*(f[31]+f[30]-1.0*f[29])+f[28]-1.7320508075688772*(f[26]+f[25])+f[24]-1.0*f[23]+1.7320508075688772*(f[18]-1.0*f[19])-1.0*(f[17]+f[15])+1.7320508075688772*f[11]-1.0*f[10]+f[9]+f[4]); + fReflSurfXYMu[0][2] = 0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(3.0*(f[46]-1.0*f[45])+1.7320508075688772*f[44]-3.0*f[43])+5.0*(-(5.196152422706631*f[42])+3.0*(f[41]-1.0*f[40])+5.196152422706631*(f[38]-1.0*f[39])-3.0*f[37])+8.660254037844387*(-(1.7320508075688772*f[36])+3.0*f[35]+1.7320508075688772*(f[33]-1.0*f[34]))+15.0*f[32]); - double xBar, xSqBar; - double fReflSurfXYMu[2][3] = {0.}; + } else { // partial reflection - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1886,9 +2024,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = 0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]+23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]-20.1246117974981*f[45]+11.61895003862225*f[44]-20.1246117974981*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]-11.61895003862225*f[36]+20.1246117974981*f[35]-11.61895003862225*f[34]+11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]-13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]-13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]-8.0*f[15]+13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]+13.41640786499874*f[45]-7.745966692414834*f[44]+13.41640786499874*f[43]+13.41640786499874*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]+13.41640786499874*f[39]-13.41640786499874*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.41640786499874*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]+6.708203932499369*f[45]-3.872983346207417*f[44]+6.708203932499369*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.708203932499369*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]+13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]+12.0*f[16]-8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = 0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]-467.6537180435969*f[45]+269.9999999999999*f[44]-467.6537180435969*f[43]-467.6537180435967*f[42]+270.0*f[41]-270.0*f[40]-467.6537180435967*f[39]+467.6537180435967*f[38]-270.0*f[37]-269.9999999999999*f[36]+467.6537180435969*f[35]-269.9999999999999*f[34]+269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]-301.8691769624717*f[29]+174.2842505793337*f[28]-301.8691769624717*f[26]-301.8691769624717*f[25]+174.2842505793337*f[24]-174.2842505793337*f[23]-301.8691769624717*f[19]+301.8691769624717*f[18]-174.2842505793337*f[17]-174.2842505793337*f[15]+301.8691769624717*f[11]-174.2842505793337*f[10]+174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]-300.0000000000001*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]+300.0000000000001*f[36]-519.6152422706633*f[35]+300.0000000000001*f[34]-300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]-116.1895003862225*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]-116.1895003862225*f[24]+116.1895003862225*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]+116.1895003862225*f[17]+116.1895003862225*f[15]-201.2461179749811*f[11]+116.1895003862225*f[10]-116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]-259.8076211353317*f[45]+150.0*f[44]-259.8076211353317*f[43]-259.8076211353315*f[42]+150.0*f[41]-150.0*f[40]-259.8076211353315*f[39]+259.8076211353315*f[38]-150.0*f[37]-150.0*f[36]+259.8076211353317*f[35]-150.0*f[34]+150.0*f[33]+150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]+207.8460969082653*f[46]-207.8460969082653*f[45]+120.0*f[44]-207.8460969082653*f[43]-207.8460969082653*f[42]+120.0*f[41]-120.0*f[40]-207.8460969082653*f[39]+207.8460969082653*f[38]-120.0*f[37]-120.0*f[36]+207.8460969082653*f[35]-120.0*f[34]+120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]+100.6230589874906*f[29]-58.09475019311126*f[28]+100.6230589874906*f[26]+100.6230589874906*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]+100.6230589874906*f[19]-100.6230589874906*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.6230589874906*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = 0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]+23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]-20.124611797498105*f[45]+11.618950038622252*f[44]-20.124611797498105*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]-11.618950038622252*f[36]+20.124611797498105*f[35]-11.618950038622252*f[34]+11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]-13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]-13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]-8.0*f[15]+13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]+13.416407864998737*f[45]-7.745966692414834*f[44]+13.416407864998737*f[43]+13.416407864998739*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]+13.416407864998739*f[39]-13.416407864998739*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.416407864998737*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]+6.7082039324993685*f[45]-3.872983346207417*f[44]+6.7082039324993685*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.7082039324993685*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]+13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]+12.0*f[16]-8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); + fReflSurfXYMu[0][2] = 0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]-467.65371804359694*f[45]+269.99999999999994*f[44]-467.65371804359694*f[43]-467.65371804359665*f[42]+270.0*f[41]-270.0*f[40]-467.65371804359665*f[39]+467.65371804359665*f[38]-270.0*f[37]-269.99999999999994*f[36]+467.65371804359694*f[35]-269.99999999999994*f[34]+269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]-301.86917696247167*f[29]+174.28425057933373*f[28]-301.86917696247167*f[26]-301.86917696247167*f[25]+174.28425057933373*f[24]-174.28425057933373*f[23]-301.86917696247167*f[19]+301.86917696247167*f[18]-174.28425057933373*f[17]-174.28425057933373*f[15]+301.86917696247167*f[11]-174.28425057933373*f[10]+174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]-300.00000000000006*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]+300.00000000000006*f[36]-519.6152422706633*f[35]+300.00000000000006*f[34]-300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]-116.18950038622252*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]-116.18950038622252*f[24]+116.18950038622252*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]+116.18950038622252*f[17]+116.18950038622252*f[15]-201.2461179749811*f[11]+116.18950038622252*f[10]-116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]-259.80762113533166*f[45]+150.00000000000003*f[44]-259.80762113533166*f[43]-259.80762113533154*f[42]+150.0*f[41]-150.0*f[40]-259.80762113533154*f[39]+259.80762113533154*f[38]-150.0*f[37]-150.00000000000003*f[36]+259.80762113533166*f[35]-150.00000000000003*f[34]+150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]+207.84609690826528*f[46]-207.84609690826528*f[45]+120.00000000000001*f[44]-207.84609690826528*f[43]-207.84609690826525*f[42]+120.0*f[41]-120.0*f[40]-207.84609690826525*f[39]+207.84609690826525*f[38]-120.0*f[37]-120.00000000000001*f[36]+207.84609690826528*f[35]-120.00000000000001*f[34]+120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]+100.62305898749055*f[29]-58.09475019311126*f[28]+100.62305898749055*f[26]+100.62305898749055*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]+100.62305898749055*f[19]-100.62305898749055*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.62305898749055*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4]); } else { // vcut in logical space. @@ -1899,27 +2037,45 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = -0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]+23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = -0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]-20.1246117974981*f[45]+11.61895003862225*f[44]-20.1246117974981*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]-11.61895003862225*f[36]+20.1246117974981*f[35]-11.61895003862225*f[34]+11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]-13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]-13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]-8.0*f[15]+13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]+13.41640786499874*f[45]-7.745966692414834*f[44]+13.41640786499874*f[43]+13.41640786499874*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]+13.41640786499874*f[39]-13.41640786499874*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.41640786499874*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]+6.708203932499369*f[45]-3.872983346207417*f[44]+6.708203932499369*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.708203932499369*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]-13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]+12.0*f[16]+8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = -0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]-467.6537180435969*f[45]+269.9999999999999*f[44]-467.6537180435969*f[43]-467.6537180435967*f[42]+270.0*f[41]-270.0*f[40]-467.6537180435967*f[39]+467.6537180435967*f[38]-270.0*f[37]-269.9999999999999*f[36]+467.6537180435969*f[35]-269.9999999999999*f[34]+269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]-301.8691769624717*f[29]+174.2842505793337*f[28]-301.8691769624717*f[26]-301.8691769624717*f[25]+174.2842505793337*f[24]-174.2842505793337*f[23]-301.8691769624717*f[19]+301.8691769624717*f[18]-174.2842505793337*f[17]-174.2842505793337*f[15]+301.8691769624717*f[11]-174.2842505793337*f[10]+174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]-300.0000000000001*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]+300.0000000000001*f[36]-519.6152422706633*f[35]+300.0000000000001*f[34]-300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]-116.1895003862225*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]-116.1895003862225*f[24]+116.1895003862225*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]+116.1895003862225*f[17]+116.1895003862225*f[15]-201.2461179749811*f[11]+116.1895003862225*f[10]-116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]-259.8076211353317*f[45]+150.0*f[44]-259.8076211353317*f[43]-259.8076211353315*f[42]+150.0*f[41]-150.0*f[40]-259.8076211353315*f[39]+259.8076211353315*f[38]-150.0*f[37]-150.0*f[36]+259.8076211353317*f[35]-150.0*f[34]+150.0*f[33]+150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]-207.8460969082653*f[46]+207.8460969082653*f[45]-120.0*f[44]+207.8460969082653*f[43]+207.8460969082653*f[42]-120.0*f[41]+120.0*f[40]+207.8460969082653*f[39]-207.8460969082653*f[38]+120.0*f[37]+120.0*f[36]-207.8460969082653*f[35]+120.0*f[34]-120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]+100.6230589874906*f[29]-58.09475019311126*f[28]+100.6230589874906*f[26]+100.6230589874906*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]+100.6230589874906*f[19]-100.6230589874906*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.6230589874906*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = -(0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-11.61895003862225*f[15]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]-23.2379000772445*f[16]-23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]+23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[0][1] = -(0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]-20.124611797498105*f[45]+11.618950038622252*f[44]-20.124611797498105*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]-20.12461179749811*f[39]+20.12461179749811*f[38]-11.61895003862225*f[37]-11.618950038622252*f[36]+20.124611797498105*f[35]-11.618950038622252*f[34]+11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]-13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]-13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]-8.0*f[15]+13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]+13.416407864998737*f[45]-7.745966692414834*f[44]+13.416407864998737*f[43]+13.416407864998739*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]+13.416407864998739*f[39]-13.416407864998739*f[38]+7.745966692414834*f[37]+7.745966692414834*f[36]-13.416407864998737*f[35]+7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]+6.7082039324993685*f[45]-3.872983346207417*f[44]+6.7082039324993685*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]+6.708203932499369*f[39]-6.708203932499369*f[38]+3.872983346207417*f[37]+3.872983346207417*f[36]-6.7082039324993685*f[35]+3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]-13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]+12.0*f[16]+8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])); + fReflSurfXYMu[0][2] = -(0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]-467.65371804359694*f[45]+269.99999999999994*f[44]-467.65371804359694*f[43]-467.65371804359665*f[42]+270.0*f[41]-270.0*f[40]-467.65371804359665*f[39]+467.65371804359665*f[38]-270.0*f[37]-269.99999999999994*f[36]+467.65371804359694*f[35]-269.99999999999994*f[34]+269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]-301.86917696247167*f[29]+174.28425057933373*f[28]-301.86917696247167*f[26]-301.86917696247167*f[25]+174.28425057933373*f[24]-174.28425057933373*f[23]-301.86917696247167*f[19]+301.86917696247167*f[18]-174.28425057933373*f[17]-174.28425057933373*f[15]+301.86917696247167*f[11]-174.28425057933373*f[10]+174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]-300.00000000000006*f[44]+519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]+519.6152422706631*f[39]-519.6152422706631*f[38]+300.0*f[37]+300.00000000000006*f[36]-519.6152422706633*f[35]+300.00000000000006*f[34]-300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]-116.18950038622252*f[28]+201.2461179749811*f[26]+201.2461179749811*f[25]-116.18950038622252*f[24]+116.18950038622252*f[23]+201.2461179749811*f[19]-201.2461179749811*f[18]+116.18950038622252*f[17]+116.18950038622252*f[15]-201.2461179749811*f[11]+116.18950038622252*f[10]-116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]-259.80762113533166*f[45]+150.00000000000003*f[44]-259.80762113533166*f[43]-259.80762113533154*f[42]+150.0*f[41]-150.0*f[40]-259.80762113533154*f[39]+259.80762113533154*f[38]-150.0*f[37]-150.00000000000003*f[36]+259.80762113533166*f[35]-150.00000000000003*f[34]+150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]-207.84609690826528*f[46]+207.84609690826528*f[45]-120.00000000000001*f[44]+207.84609690826528*f[43]+207.84609690826525*f[42]-120.0*f[41]+120.0*f[40]+207.84609690826525*f[39]-207.84609690826525*f[38]+120.0*f[37]+120.00000000000001*f[36]-207.84609690826528*f[35]+120.00000000000001*f[34]-120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]+100.62305898749055*f[29]-58.09475019311126*f[28]+100.62305898749055*f[26]+100.62305898749055*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]+100.62305898749055*f[19]-100.62305898749055*f[18]+58.09475019311126*f[17]+58.09475019311126*f[15]-100.62305898749055*f[11]+58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4])); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; - if (fReflSurfXYMu[0][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; + if (fReflSurfXYMu[0][0]<0.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; + } + } - // node (mu)_1 + // node (mu)_1 + 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) + + fReflSurfXYMu[1][0] = 0.0; + fReflSurfXYMu[1][1] = 0.0; + fReflSurfXYMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfXYMu[1][0] = -(0.25*(1.7320508075688772*(f[27]+f[22]-1.0*f[21])+f[20]+1.7320508075688772*(f[16]-1.0*f[14])+f[13]-1.0*f[12]+1.7320508075688772*(f[8]-1.0*f[7])+f[6]-1.0*(f[5]+1.7320508075688772*f[3])+f[2]-1.0*(f[1]+f[0]))); + fReflSurfXYMu[1][1] = -(0.25*(1.7320508075688772*(f[31]+f[30]-1.0*f[29])+f[28]+1.7320508075688772*(f[26]-1.0*f[25])+f[24]-1.0*f[23]+1.7320508075688772*(f[19]-1.0*f[18])+f[17]-1.0*(f[15]+1.7320508075688772*f[11])+f[10]-1.0*(f[9]+f[4]))); + fReflSurfXYMu[1][2] = -(0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(3.0*(f[46]-1.0*f[45])+1.7320508075688772*f[44]+3.0*f[43])+5.0*(-(5.196152422706631*f[42])+3.0*(f[41]-1.0*f[40])+5.196152422706631*(f[39]-1.0*f[38])+3.0*f[37])+8.660254037844387*(1.7320508075688772*f[34]-1.0*(1.7320508075688772*f[36]+3.0*f[35]))-1.0*(15.000000000000002*f[33]+15.0*f[32]))); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -1929,9 +2085,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = -0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]-23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = -0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]-20.1246117974981*f[45]+11.61895003862225*f[44]+20.1246117974981*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]-11.61895003862225*f[36]-20.1246117974981*f[35]+11.61895003862225*f[34]-11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]+13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]+13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]-8.0*f[15]-13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]+13.41640786499874*f[45]-7.745966692414834*f[44]-13.41640786499874*f[43]+13.41640786499874*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]-13.41640786499874*f[39]+13.41640786499874*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.41640786499874*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]+6.708203932499369*f[45]-3.872983346207417*f[44]-6.708203932499369*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.708203932499369*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]+13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]-12.0*f[16]-8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = -0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]-467.6537180435969*f[45]+269.9999999999999*f[44]+467.6537180435969*f[43]-467.6537180435967*f[42]+270.0*f[41]-270.0*f[40]+467.6537180435967*f[39]-467.6537180435967*f[38]+270.0*f[37]-269.9999999999999*f[36]-467.6537180435969*f[35]+269.9999999999999*f[34]-269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]-301.8691769624717*f[29]+174.2842505793337*f[28]+301.8691769624717*f[26]-301.8691769624717*f[25]+174.2842505793337*f[24]-174.2842505793337*f[23]+301.8691769624717*f[19]-301.8691769624717*f[18]+174.2842505793337*f[17]-174.2842505793337*f[15]-301.8691769624717*f[11]+174.2842505793337*f[10]-174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]-300.0000000000001*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]+300.0000000000001*f[36]+519.6152422706633*f[35]-300.0000000000001*f[34]+300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]-116.1895003862225*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]-116.1895003862225*f[24]+116.1895003862225*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]-116.1895003862225*f[17]+116.1895003862225*f[15]+201.2461179749811*f[11]-116.1895003862225*f[10]+116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]-259.8076211353317*f[45]+150.0*f[44]+259.8076211353317*f[43]-259.8076211353315*f[42]+150.0*f[41]-150.0*f[40]+259.8076211353315*f[39]-259.8076211353315*f[38]+150.0*f[37]-150.0*f[36]-259.8076211353317*f[35]+150.0*f[34]-150.0*f[33]-150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]+207.8460969082653*f[46]-207.8460969082653*f[45]+120.0*f[44]+207.8460969082653*f[43]-207.8460969082653*f[42]+120.0*f[41]-120.0*f[40]+207.8460969082653*f[39]-207.8460969082653*f[38]+120.0*f[37]-120.0*f[36]-207.8460969082653*f[35]+120.0*f[34]-120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]+100.6230589874906*f[29]-58.09475019311126*f[28]-100.6230589874906*f[26]+100.6230589874906*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]-100.6230589874906*f[19]+100.6230589874906*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.6230589874906*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = -(0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]-23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]+11.61895003862225*f[15]-23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[1][1] = -(0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]-20.124611797498105*f[45]+11.618950038622252*f[44]+20.124611797498105*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]-11.618950038622252*f[36]-20.124611797498105*f[35]+11.618950038622252*f[34]-11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]+13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]+13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]-8.0*f[15]-13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]+13.416407864998737*f[45]-7.745966692414834*f[44]-13.416407864998737*f[43]+13.416407864998739*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]-13.416407864998739*f[39]+13.416407864998739*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.416407864998737*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]+6.7082039324993685*f[45]-3.872983346207417*f[44]-6.7082039324993685*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.7082039324993685*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]+13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]+13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]-12.0*f[16]-8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]-13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])); + fReflSurfXYMu[1][2] = -(0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]-467.65371804359694*f[45]+269.99999999999994*f[44]+467.65371804359694*f[43]-467.65371804359665*f[42]+270.0*f[41]-270.0*f[40]+467.65371804359665*f[39]-467.65371804359665*f[38]+270.0*f[37]-269.99999999999994*f[36]-467.65371804359694*f[35]+269.99999999999994*f[34]-269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]-301.86917696247167*f[29]+174.28425057933373*f[28]+301.86917696247167*f[26]-301.86917696247167*f[25]+174.28425057933373*f[24]-174.28425057933373*f[23]+301.86917696247167*f[19]-301.86917696247167*f[18]+174.28425057933373*f[17]-174.28425057933373*f[15]-301.86917696247167*f[11]+174.28425057933373*f[10]-174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]-300.00000000000006*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]+300.00000000000006*f[36]+519.6152422706633*f[35]-300.00000000000006*f[34]+300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]-116.18950038622252*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]-116.18950038622252*f[24]+116.18950038622252*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]-116.18950038622252*f[17]+116.18950038622252*f[15]+201.2461179749811*f[11]-116.18950038622252*f[10]+116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]-259.80762113533166*f[45]+150.00000000000003*f[44]+259.80762113533166*f[43]-259.80762113533154*f[42]+150.0*f[41]-150.0*f[40]+259.80762113533154*f[39]-259.80762113533154*f[38]+150.0*f[37]-150.00000000000003*f[36]-259.80762113533166*f[35]+150.00000000000003*f[34]-150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]+207.84609690826528*f[46]-207.84609690826528*f[45]+120.00000000000001*f[44]+207.84609690826528*f[43]-207.84609690826525*f[42]+120.0*f[41]-120.0*f[40]+207.84609690826525*f[39]-207.84609690826525*f[38]+120.0*f[37]-120.00000000000001*f[36]-207.84609690826528*f[35]+120.00000000000001*f[34]-120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]+100.62305898749055*f[29]-58.09475019311126*f[28]-100.62305898749055*f[26]+100.62305898749055*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]-100.62305898749055*f[19]+100.62305898749055*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.62305898749055*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4])); } else { // vcut in logical space. @@ -1942,24 +2098,26 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = 0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]+15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]-25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]+15.0*f[34]-15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]-15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]+25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]-15.0*f[34]+15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.41640786499874*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]+13.41640786499874*f[13]-13.41640786499874*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]-23.2379000772445*f[3]+13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.41640786499874*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]-13.41640786499874*f[13]+13.41640786499874*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]-13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]-20.1246117974981*f[45]+11.61895003862225*f[44]+20.1246117974981*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]-11.61895003862225*f[36]-20.1246117974981*f[35]+11.61895003862225*f[34]-11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]-13.85640646055102*f[29]+8.0*f[28]+13.85640646055102*f[26]-13.85640646055102*f[25]+8.0*f[24]-8.0*f[23]+13.85640646055102*f[19]-13.85640646055102*f[18]+8.0*f[17]-8.0*f[15]-13.85640646055102*f[11]+8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]+13.41640786499874*f[45]-7.745966692414834*f[44]-13.41640786499874*f[43]+13.41640786499874*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]-13.41640786499874*f[39]+13.41640786499874*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.41640786499874*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]+6.708203932499369*f[45]-3.872983346207417*f[44]-6.708203932499369*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.708203932499369*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]-13.85640646055102*f[31]-13.85640646055102*f[30]+13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]+13.85640646055102*f[25]-8.0*f[24]+8.0*f[23]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-13.85640646055102*f[19]+13.85640646055102*f[18]-8.0*f[17]-12.0*f[16]+8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+13.85640646055102*f[11]-8.0*f[10]+8.0*f[9]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = 0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]-467.6537180435969*f[45]+269.9999999999999*f[44]+467.6537180435969*f[43]-467.6537180435967*f[42]+270.0*f[41]-270.0*f[40]+467.6537180435967*f[39]-467.6537180435967*f[38]+270.0*f[37]-269.9999999999999*f[36]-467.6537180435969*f[35]+269.9999999999999*f[34]-269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]-301.8691769624717*f[29]+174.2842505793337*f[28]+301.8691769624717*f[26]-301.8691769624717*f[25]+174.2842505793337*f[24]-174.2842505793337*f[23]+301.8691769624717*f[19]-301.8691769624717*f[18]+174.2842505793337*f[17]-174.2842505793337*f[15]-301.8691769624717*f[11]+174.2842505793337*f[10]-174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]-300.0000000000001*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]+300.0000000000001*f[36]+519.6152422706633*f[35]-300.0000000000001*f[34]+300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]-232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]-232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]-116.1895003862225*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]-116.1895003862225*f[24]+116.1895003862225*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]-116.1895003862225*f[17]+116.1895003862225*f[15]+201.2461179749811*f[11]-116.1895003862225*f[10]+116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]-259.8076211353317*f[45]+150.0*f[44]+259.8076211353317*f[43]-259.8076211353315*f[42]+150.0*f[41]-150.0*f[40]+259.8076211353315*f[39]-259.8076211353315*f[38]+150.0*f[37]-150.0*f[36]-259.8076211353317*f[35]+150.0*f[34]-150.0*f[33]-150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]+232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]+232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]-207.8460969082653*f[46]+207.8460969082653*f[45]-120.0*f[44]-207.8460969082653*f[43]+207.8460969082653*f[42]-120.0*f[41]+120.0*f[40]-207.8460969082653*f[39]+207.8460969082653*f[38]-120.0*f[37]+120.0*f[36]+207.8460969082653*f[35]-120.0*f[34]+120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]+100.6230589874906*f[29]-58.09475019311126*f[28]-100.6230589874906*f[26]+100.6230589874906*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]-100.6230589874906*f[19]+100.6230589874906*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.6230589874906*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = 0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]-25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]+15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]-25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]+15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]-20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]-20.12461179749811*f[25]+11.61895003862225*f[24]-11.61895003862225*f[23]+20.12461179749811*f[19]-20.12461179749811*f[18]+11.61895003862225*f[17]-11.61895003862225*f[15]-20.12461179749811*f[11]+11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]+25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]-15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]+25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]-15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]-23.2379000772445*f[21]+13.416407864998739*f[20]+23.2379000772445*f[16]-23.2379000772445*f[14]+13.416407864998739*f[13]-13.416407864998739*f[12]+23.2379000772445*f[8]-23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]-23.2379000772445*f[3]+13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]+20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]+20.12461179749811*f[25]-11.61895003862225*f[24]+11.61895003862225*f[23]-23.2379000772445*f[22]+23.2379000772445*f[21]-13.416407864998739*f[20]-20.12461179749811*f[19]+20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]+11.61895003862225*f[15]+23.2379000772445*f[14]-13.416407864998739*f[13]+13.416407864998739*f[12]+20.12461179749811*f[11]-11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]+23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]-13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]-20.124611797498105*f[45]+11.618950038622252*f[44]+20.124611797498105*f[43]-20.12461179749811*f[42]+11.61895003862225*f[41]-11.61895003862225*f[40]+20.12461179749811*f[39]-20.12461179749811*f[38]+11.61895003862225*f[37]-11.618950038622252*f[36]-20.124611797498105*f[35]+11.618950038622252*f[34]-11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]-13.856406460551018*f[29]+8.0*f[28]+13.856406460551018*f[26]-13.856406460551018*f[25]+8.0*f[24]-8.0*f[23]+13.856406460551018*f[19]-13.856406460551018*f[18]+8.0*f[17]-8.0*f[15]-13.856406460551018*f[11]+8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]+13.416407864998737*f[45]-7.745966692414834*f[44]-13.416407864998737*f[43]+13.416407864998739*f[42]-7.745966692414834*f[41]+7.745966692414834*f[40]-13.416407864998739*f[39]+13.416407864998739*f[38]-7.745966692414834*f[37]+7.745966692414834*f[36]+13.416407864998737*f[35]-7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]-12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]-12.0*f[14]+6.928203230275509*f[13]-6.928203230275509*f[12]+12.0*f[8]-12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-12.0*f[3]+6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]+6.7082039324993685*f[45]-3.872983346207417*f[44]-6.7082039324993685*f[43]+6.708203932499369*f[42]-3.872983346207417*f[41]+3.872983346207417*f[40]-6.708203932499369*f[39]+6.708203932499369*f[38]-3.872983346207417*f[37]+3.872983346207417*f[36]+6.7082039324993685*f[35]-3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]-13.856406460551018*f[31]-13.856406460551018*f[30]+13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]+13.856406460551018*f[25]-8.0*f[24]+8.0*f[23]-12.0*f[22]+12.0*f[21]-6.928203230275509*f[20]-13.856406460551018*f[19]+13.856406460551018*f[18]-8.0*f[17]-12.0*f[16]+8.0*f[15]+12.0*f[14]-6.928203230275509*f[13]+6.928203230275509*f[12]+13.856406460551018*f[11]-8.0*f[10]+8.0*f[9]-12.0*f[8]+12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]-6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); + fReflSurfXYMu[1][2] = 0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]-467.65371804359694*f[45]+269.99999999999994*f[44]+467.65371804359694*f[43]-467.65371804359665*f[42]+270.0*f[41]-270.0*f[40]+467.65371804359665*f[39]-467.65371804359665*f[38]+270.0*f[37]-269.99999999999994*f[36]-467.65371804359694*f[35]+269.99999999999994*f[34]-269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]-301.86917696247167*f[29]+174.28425057933373*f[28]+301.86917696247167*f[26]-301.86917696247167*f[25]+174.28425057933373*f[24]-174.28425057933373*f[23]+301.86917696247167*f[19]-301.86917696247167*f[18]+174.28425057933373*f[17]-174.28425057933373*f[15]-301.86917696247167*f[11]+174.28425057933373*f[10]-174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]+519.6152422706633*f[45]-300.00000000000006*f[44]-519.6152422706633*f[43]+519.6152422706631*f[42]-300.0*f[41]+300.0*f[40]-519.6152422706631*f[39]+519.6152422706631*f[38]-300.0*f[37]+300.00000000000006*f[36]+519.6152422706633*f[35]-300.00000000000006*f[34]+300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]-232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]+134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]-232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]+134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]+201.2461179749811*f[29]-116.18950038622252*f[28]-201.2461179749811*f[26]+201.2461179749811*f[25]-116.18950038622252*f[24]+116.18950038622252*f[23]-201.2461179749811*f[19]+201.2461179749811*f[18]-116.18950038622252*f[17]+116.18950038622252*f[15]+201.2461179749811*f[11]-116.18950038622252*f[10]+116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]-259.80762113533166*f[45]+150.00000000000003*f[44]+259.80762113533166*f[43]-259.80762113533154*f[42]+150.0*f[41]-150.0*f[40]+259.80762113533154*f[39]-259.80762113533154*f[38]+150.0*f[37]-150.00000000000003*f[36]-259.80762113533166*f[35]+150.00000000000003*f[34]-150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]+232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]-134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]+232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]-134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]-207.84609690826528*f[46]+207.84609690826528*f[45]-120.00000000000001*f[44]-207.84609690826528*f[43]+207.84609690826525*f[42]-120.0*f[41]+120.0*f[40]-207.84609690826525*f[39]+207.84609690826525*f[38]-120.0*f[37]+120.00000000000001*f[36]+207.84609690826528*f[35]-120.00000000000001*f[34]+120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]+100.62305898749055*f[29]-58.09475019311126*f[28]-100.62305898749055*f[26]+100.62305898749055*f[25]-58.09475019311126*f[24]+58.09475019311126*f[23]-100.62305898749055*f[19]+100.62305898749055*f[18]-58.09475019311126*f[17]+58.09475019311126*f[15]+100.62305898749055*f[11]-58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4]); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; - if (fReflSurfXYMu[1][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; + if (fReflSurfXYMu[1][0]<0.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; + } + } fReflSurfXY[2][0] = 0.7071067811865475*(fReflSurfXYMu[1][0]+fReflSurfXYMu[0][0]); @@ -1969,38 +2127,28 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double fReflSurfXY[2][4] = 0.7071067811865475*(fReflSurfXYMu[1][2]+fReflSurfXYMu[0][2]); fReflSurfXY[2][5] = 0.7071067811865475*(fReflSurfXYMu[1][2]-1.0*fReflSurfXYMu[0][2]); - } - // node (x,y)_3 - vcutSq = 0.25*(2.449489742783178*phiWall[7]-2.449489742783178*phi[7]+2.449489742783178*phiWall[6]-2.449489742783178*phi[6]+2.449489742783178*phiWall[5]-2.449489742783178*phi[5]+1.414213562373095*phiWall[4]-1.414213562373095*phi[4]+2.449489742783178*phiWall[3]-2.449489742783178*phi[3]+1.414213562373095*phiWall[2]-1.414213562373095*phi[2]+1.414213562373095*phiWall[1]-1.414213562373095*phi[1]+1.414213562373095*phiWall[0]-1.414213562373095*phi[0])*q2Dm; - if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) + wv = 0.5*vparUp+0.5*vparLo; + dv = vparUp-1.0*vparLo; - fReflSurfXY[3][0] = 0.0; - fReflSurfXY[3][1] = 0.0; - fReflSurfXY[3][2] = 0.0; - fReflSurfXY[3][3] = 0.0; - fReflSurfXY[3][4] = 0.0; - fReflSurfXY[3][5] = 0.0; + // node (mu)_0 + 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; - } else if (vcutSq > vparAbsSqUp) { // full reflection + if (vcutSq <= vparAbsSqLo) { // absorb (no reflection) - fReflSurfXY[3][0] = 0.3535533905932737*(1.732050807568877*(f[16]+f[8]+f[7])+f[6]+1.732050807568877*f[3]+f[2]+f[1]+f[0]); - fReflSurfXY[3][1] = 0.3535533905932737*(1.732050807568877*(f[26]+f[19]+f[18])+f[17]+1.732050807568877*f[11]+f[10]+f[9]+f[4]); - fReflSurfXY[3][2] = 0.3535533905932737*(1.732050807568877*(f[27]+f[22]+f[21])+f[20]+1.732050807568877*f[14]+f[13]+f[12]+f[5]); - fReflSurfXY[3][3] = 0.3535533905932737*(1.732050807568877*(f[31]+f[30]+f[29])+f[28]+1.732050807568877*f[25]+f[24]+f[23]+f[15]); - fReflSurfXY[3][4] = 0.02357022603955158*(25.98076211353316*f[43]+5.0*(5.196152422706631*(f[39]+f[38])+3.0*f[37])+8.660254037844387*(3.0*f[35]+1.732050807568877*(f[34]+f[33]))+15.0*f[32]); - fReflSurfXY[3][5] = 0.02357022603955158*(25.98076211353316*f[47]+5.0*(5.196152422706631*(f[46]+f[45])+3.0*f[44])+8.660254037844387*(3.0*f[42]+1.732050807568877*(f[41]+f[40]))+15.0*f[36]); + fReflSurfXYMu[0][0] = 0.0; + fReflSurfXYMu[0][1] = 0.0; + fReflSurfXYMu[0][2] = 0.0; - } else { // partial reflection + } else if (vcutSq > vparAbsSqUp) { // full reflection - double wv = 0.5*(vparUp+vparLo); - double dv = vparUp-1.0*vparLo; + fReflSurfXYMu[0][0] = -(0.25*(1.7320508075688772*(f[27]+f[22]+f[21])+f[20]+1.7320508075688772*(f[14]-1.0*f[16])+f[13]+f[12]-1.0*(1.7320508075688772*(f[8]+f[7])+f[6])+f[5]-1.0*(1.7320508075688772*f[3]+f[2]+f[1]+f[0]))); + fReflSurfXYMu[0][1] = -(0.25*(1.7320508075688772*(f[31]+f[30]+f[29])+f[28]+1.7320508075688772*(f[25]-1.0*f[26])+f[24]+f[23]-1.0*(1.7320508075688772*(f[19]+f[18])+f[17])+f[15]-1.0*(1.7320508075688772*f[11]+f[10]+f[9]+f[4]))); + fReflSurfXYMu[0][2] = -(0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(3.0*(f[46]+f[45])+1.7320508075688772*f[44]-3.0*f[43])+5.0*(5.196152422706631*f[42]+3.0*(f[41]+f[40])-1.0*(5.196152422706631*(f[39]+f[38])+3.0*f[37]))+15.000000000000002*f[36]-1.0*(8.660254037844387*(3.0*f[35]+1.7320508075688772*(f[34]+f[33]))+15.0*f[32]))); - double xBar, xSqBar; - double fReflSurfXYMu[2][3] = {0.}; + } else { // partial reflection - // node (mu)_0 if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -2010,9 +2158,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = -0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]-23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = -0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]+20.1246117974981*f[45]+11.61895003862225*f[44]-20.1246117974981*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]+11.61895003862225*f[36]-20.1246117974981*f[35]-11.61895003862225*f[34]-11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]-13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]-13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]+8.0*f[15]-13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]-13.41640786499874*f[45]-7.745966692414834*f[44]+13.41640786499874*f[43]-13.41640786499874*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]+13.41640786499874*f[39]+13.41640786499874*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.41640786499874*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]-6.708203932499369*f[45]-3.872983346207417*f[44]+6.708203932499369*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.708203932499369*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]+13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]+12.0*f[16]+8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = -0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]+467.6537180435969*f[45]+269.9999999999999*f[44]-467.6537180435969*f[43]+467.6537180435967*f[42]+270.0*f[41]+270.0*f[40]-467.6537180435967*f[39]-467.6537180435967*f[38]-270.0*f[37]+269.9999999999999*f[36]-467.6537180435969*f[35]-269.9999999999999*f[34]-269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]+301.8691769624717*f[29]+174.2842505793337*f[28]-301.8691769624717*f[26]+301.8691769624717*f[25]+174.2842505793337*f[24]+174.2842505793337*f[23]-301.8691769624717*f[19]-301.8691769624717*f[18]-174.2842505793337*f[17]+174.2842505793337*f[15]-301.8691769624717*f[11]-174.2842505793337*f[10]-174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]-300.0000000000001*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]-300.0000000000001*f[36]+519.6152422706633*f[35]+300.0000000000001*f[34]+300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]-116.1895003862225*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]-116.1895003862225*f[24]-116.1895003862225*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]+116.1895003862225*f[17]-116.1895003862225*f[15]+201.2461179749811*f[11]+116.1895003862225*f[10]+116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]+259.8076211353317*f[45]+150.0*f[44]-259.8076211353317*f[43]+259.8076211353315*f[42]+150.0*f[41]+150.0*f[40]-259.8076211353315*f[39]-259.8076211353315*f[38]-150.0*f[37]+150.0*f[36]-259.8076211353317*f[35]-150.0*f[34]-150.0*f[33]-150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]+207.8460969082653*f[46]+207.8460969082653*f[45]+120.0*f[44]-207.8460969082653*f[43]+207.8460969082653*f[42]+120.0*f[41]+120.0*f[40]-207.8460969082653*f[39]-207.8460969082653*f[38]-120.0*f[37]+120.0*f[36]-207.8460969082653*f[35]-120.0*f[34]-120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]-100.6230589874906*f[29]-58.09475019311126*f[28]+100.6230589874906*f[26]-100.6230589874906*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]+100.6230589874906*f[19]+100.6230589874906*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.6230589874906*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = -(0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]-23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]+11.61895003862225*f[4]-23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[0][1] = -(0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]+20.124611797498105*f[45]+11.618950038622252*f[44]-20.124611797498105*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]+11.618950038622252*f[36]-20.124611797498105*f[35]-11.618950038622252*f[34]-11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]-13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]-13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]+8.0*f[15]-13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]-13.416407864998737*f[45]-7.745966692414834*f[44]+13.416407864998737*f[43]-13.416407864998739*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]+13.416407864998739*f[39]+13.416407864998739*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.416407864998737*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]-6.7082039324993685*f[45]-3.872983346207417*f[44]+6.7082039324993685*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.7082039324993685*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]+13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]+12.0*f[16]+8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])); + fReflSurfXYMu[0][2] = -(0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]+467.65371804359694*f[45]+269.99999999999994*f[44]-467.65371804359694*f[43]+467.65371804359665*f[42]+270.0*f[41]+270.0*f[40]-467.65371804359665*f[39]-467.65371804359665*f[38]-270.0*f[37]+269.99999999999994*f[36]-467.65371804359694*f[35]-269.99999999999994*f[34]-269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]+301.86917696247167*f[29]+174.28425057933373*f[28]-301.86917696247167*f[26]+301.86917696247167*f[25]+174.28425057933373*f[24]+174.28425057933373*f[23]-301.86917696247167*f[19]-301.86917696247167*f[18]-174.28425057933373*f[17]+174.28425057933373*f[15]-301.86917696247167*f[11]-174.28425057933373*f[10]-174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]-300.00000000000006*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]-300.00000000000006*f[36]+519.6152422706633*f[35]+300.00000000000006*f[34]+300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]-116.18950038622252*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]-116.18950038622252*f[24]-116.18950038622252*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]+116.18950038622252*f[17]-116.18950038622252*f[15]+201.2461179749811*f[11]+116.18950038622252*f[10]+116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]+259.80762113533166*f[45]+150.00000000000003*f[44]-259.80762113533166*f[43]+259.80762113533154*f[42]+150.0*f[41]+150.0*f[40]-259.80762113533154*f[39]-259.80762113533154*f[38]-150.0*f[37]+150.00000000000003*f[36]-259.80762113533166*f[35]-150.00000000000003*f[34]-150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]+207.84609690826528*f[46]+207.84609690826528*f[45]+120.00000000000001*f[44]-207.84609690826528*f[43]+207.84609690826525*f[42]+120.0*f[41]+120.0*f[40]-207.84609690826525*f[39]-207.84609690826525*f[38]-120.0*f[37]+120.00000000000001*f[36]-207.84609690826528*f[35]-120.00000000000001*f[34]-120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]-100.62305898749055*f[29]-58.09475019311126*f[28]+100.62305898749055*f[26]-100.62305898749055*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]+100.62305898749055*f[19]+100.62305898749055*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.62305898749055*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4])); } else { // vcut in logical space. @@ -2023,27 +2171,45 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[0][0] = 0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]-25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]+15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]+25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]-15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]+13.41640786499874*f[5]-23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]-13.41640786499874*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]+20.1246117974981*f[45]+11.61895003862225*f[44]-20.1246117974981*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]+11.61895003862225*f[36]-20.1246117974981*f[35]-11.61895003862225*f[34]-11.61895003862225*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]-13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]-13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]+8.0*f[15]-13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]-13.41640786499874*f[45]-7.745966692414834*f[44]+13.41640786499874*f[43]-13.41640786499874*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]+13.41640786499874*f[39]+13.41640786499874*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.41640786499874*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]-6.708203932499369*f[45]-3.872983346207417*f[44]+6.708203932499369*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.708203932499369*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]-13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]+12.0*f[16]-8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); - fReflSurfXYMu[0][2] = 0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]+467.6537180435969*f[45]+269.9999999999999*f[44]-467.6537180435969*f[43]+467.6537180435967*f[42]+270.0*f[41]+270.0*f[40]-467.6537180435967*f[39]-467.6537180435967*f[38]-270.0*f[37]+269.9999999999999*f[36]-467.6537180435969*f[35]-269.9999999999999*f[34]-269.9999999999999*f[33]-270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]+301.8691769624717*f[29]+174.2842505793337*f[28]-301.8691769624717*f[26]+301.8691769624717*f[25]+174.2842505793337*f[24]+174.2842505793337*f[23]-301.8691769624717*f[19]-301.8691769624717*f[18]-174.2842505793337*f[17]+174.2842505793337*f[15]-301.8691769624717*f[11]-174.2842505793337*f[10]-174.2842505793337*f[9]-174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]-300.0000000000001*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]-300.0000000000001*f[36]+519.6152422706633*f[35]+300.0000000000001*f[34]+300.0000000000001*f[33]+300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]-232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]-116.1895003862225*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]-116.1895003862225*f[24]-116.1895003862225*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]+116.1895003862225*f[17]-116.1895003862225*f[15]+201.2461179749811*f[11]+116.1895003862225*f[10]+116.1895003862225*f[9]+116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]+259.8076211353317*f[45]+150.0*f[44]-259.8076211353317*f[43]+259.8076211353315*f[42]+150.0*f[41]+150.0*f[40]-259.8076211353315*f[39]-259.8076211353315*f[38]-150.0*f[37]+150.0*f[36]-259.8076211353317*f[35]-150.0*f[34]-150.0*f[33]-150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]+232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]-207.8460969082653*f[46]-207.8460969082653*f[45]-120.0*f[44]+207.8460969082653*f[43]-207.8460969082653*f[42]-120.0*f[41]-120.0*f[40]+207.8460969082653*f[39]+207.8460969082653*f[38]+120.0*f[37]-120.0*f[36]+207.8460969082653*f[35]+120.0*f[34]+120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]-100.6230589874906*f[29]-58.09475019311126*f[28]+100.6230589874906*f[26]-100.6230589874906*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]+100.6230589874906*f[19]+100.6230589874906*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.6230589874906*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4]); + fReflSurfXYMu[0][0] = 0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]-25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]+15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]-20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+11.61895003862225*f[15]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]+25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]-15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]-23.2379000772445*f[16]+23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]+13.416407864998739*f[5]-23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]+20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]-13.416407864998739*f[5]+11.61895003862225*f[4]+23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[0][1] = 0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]+20.124611797498105*f[45]+11.618950038622252*f[44]-20.124611797498105*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]-20.12461179749811*f[39]-20.12461179749811*f[38]-11.61895003862225*f[37]+11.618950038622252*f[36]-20.124611797498105*f[35]-11.618950038622252*f[34]-11.618950038622252*f[33]-11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]-13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]-13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]+8.0*f[15]-13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]-8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]-13.416407864998737*f[45]-7.745966692414834*f[44]+13.416407864998737*f[43]-13.416407864998739*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]+13.416407864998739*f[39]+13.416407864998739*f[38]+7.745966692414834*f[37]-7.745966692414834*f[36]+13.416407864998737*f[35]+7.745966692414834*f[34]+7.745966692414834*f[33]+7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]-12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]+6.928203230275509*f[5]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]-6.7082039324993685*f[45]-3.872983346207417*f[44]+6.7082039324993685*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]+6.708203932499369*f[39]+6.708203932499369*f[38]+3.872983346207417*f[37]-3.872983346207417*f[36]+6.7082039324993685*f[35]+3.872983346207417*f[34]+3.872983346207417*f[33]+3.872983346207417*f[32]-13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]+12.0*f[16]-8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0]); + fReflSurfXYMu[0][2] = 0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]+467.65371804359694*f[45]+269.99999999999994*f[44]-467.65371804359694*f[43]+467.65371804359665*f[42]+270.0*f[41]+270.0*f[40]-467.65371804359665*f[39]-467.65371804359665*f[38]-270.0*f[37]+269.99999999999994*f[36]-467.65371804359694*f[35]-269.99999999999994*f[34]-269.99999999999994*f[33]-270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]+301.86917696247167*f[29]+174.28425057933373*f[28]-301.86917696247167*f[26]+301.86917696247167*f[25]+174.28425057933373*f[24]+174.28425057933373*f[23]-301.86917696247167*f[19]-301.86917696247167*f[18]-174.28425057933373*f[17]+174.28425057933373*f[15]-301.86917696247167*f[11]-174.28425057933373*f[10]-174.28425057933373*f[9]-174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]-300.00000000000006*f[44]+519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]+519.6152422706631*f[39]+519.6152422706631*f[38]+300.0*f[37]-300.00000000000006*f[36]+519.6152422706633*f[35]+300.00000000000006*f[34]+300.00000000000006*f[33]+300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]-232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]+134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]-116.18950038622252*f[28]+201.2461179749811*f[26]-201.2461179749811*f[25]-116.18950038622252*f[24]-116.18950038622252*f[23]+201.2461179749811*f[19]+201.2461179749811*f[18]+116.18950038622252*f[17]-116.18950038622252*f[15]+201.2461179749811*f[11]+116.18950038622252*f[10]+116.18950038622252*f[9]+116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]+259.80762113533166*f[45]+150.00000000000003*f[44]-259.80762113533166*f[43]+259.80762113533154*f[42]+150.0*f[41]+150.0*f[40]-259.80762113533154*f[39]-259.80762113533154*f[38]-150.0*f[37]+150.00000000000003*f[36]-259.80762113533166*f[35]-150.00000000000003*f[34]-150.00000000000003*f[33]-150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]+232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]-134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]-207.84609690826528*f[46]-207.84609690826528*f[45]-120.00000000000001*f[44]+207.84609690826528*f[43]-207.84609690826525*f[42]-120.0*f[41]-120.0*f[40]+207.84609690826525*f[39]+207.84609690826525*f[38]+120.0*f[37]-120.00000000000001*f[36]+207.84609690826528*f[35]+120.00000000000001*f[34]+120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]-100.62305898749055*f[29]-58.09475019311126*f[28]+100.62305898749055*f[26]-100.62305898749055*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]+100.62305898749055*f[19]+100.62305898749055*f[18]+58.09475019311126*f[17]-58.09475019311126*f[15]+100.62305898749055*f[11]+58.09475019311126*f[10]+58.09475019311126*f[9]+58.09475019311126*f[4]); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; - if (fReflSurfXYMu[0][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[0][1])/fReflSurfXYMu[0][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[0][2]+5.0*fReflSurfXYMu[0][0]))/fReflSurfXYMu[0][0]; + if (fReflSurfXYMu[0][0]<0.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[0][0] = 0.0; fReflSurfXYMu[0][1] = 0.0; fReflSurfXYMu[0][2] = 0.0; + } + } - // node (mu)_1 + // node (mu)_1 + 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) + + fReflSurfXYMu[1][0] = 0.0; + fReflSurfXYMu[1][1] = 0.0; + fReflSurfXYMu[1][2] = 0.0; + + } else if (vcutSq > vparAbsSqUp) { // full reflection + + fReflSurfXYMu[1][0] = 0.25*(1.7320508075688772*(f[27]+f[22]+f[21])+f[20]+1.7320508075688772*(f[16]+f[14])+f[13]+f[12]+1.7320508075688772*(f[8]+f[7])+f[6]+f[5]+1.7320508075688772*f[3]+f[2]+f[1]+f[0]); + fReflSurfXYMu[1][1] = 0.25*(1.7320508075688772*(f[31]+f[30]+f[29])+f[28]+1.7320508075688772*(f[26]+f[25])+f[24]+f[23]+1.7320508075688772*(f[19]+f[18])+f[17]+f[15]+1.7320508075688772*f[11]+f[10]+f[9]+f[4]); + fReflSurfXYMu[1][2] = 0.016666666666666666*(25.980762113533157*f[47]+8.660254037844387*(3.0*(f[46]+f[45])+1.7320508075688772*f[44]+3.0*f[43])+5.0*(5.196152422706631*f[42]+3.0*(f[41]+f[40])+5.196152422706631*(f[39]+f[38])+3.0*f[37])+8.660254037844387*(1.7320508075688772*f[36]+3.0*f[35]+1.7320508075688772*(f[34]+f[33]))+15.0*f[32]); + + } else { // partial reflection + if (wv > 0.) { // vcut in logical space. double vcut_l = 2.*(sqrt(vcutSq)-wv)/dv; @@ -2053,9 +2219,9 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = 0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]+23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]+20.1246117974981*f[45]+11.61895003862225*f[44]+20.1246117974981*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]+11.61895003862225*f[36]+20.1246117974981*f[35]+11.61895003862225*f[34]+11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]+13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]+13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]+8.0*f[15]+13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]-13.41640786499874*f[45]-7.745966692414834*f[44]-13.41640786499874*f[43]-13.41640786499874*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]-13.41640786499874*f[39]-13.41640786499874*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.41640786499874*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]-6.708203932499369*f[45]-3.872983346207417*f[44]-6.708203932499369*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.708203932499369*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]+13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]-12.0*f[27]+13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]-12.0*f[16]+8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = 0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]+467.6537180435969*f[45]+269.9999999999999*f[44]+467.6537180435969*f[43]+467.6537180435967*f[42]+270.0*f[41]+270.0*f[40]+467.6537180435967*f[39]+467.6537180435967*f[38]+270.0*f[37]+269.9999999999999*f[36]+467.6537180435969*f[35]+269.9999999999999*f[34]+269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]+301.8691769624717*f[29]+174.2842505793337*f[28]+301.8691769624717*f[26]+301.8691769624717*f[25]+174.2842505793337*f[24]+174.2842505793337*f[23]+301.8691769624717*f[19]+301.8691769624717*f[18]+174.2842505793337*f[17]+174.2842505793337*f[15]+301.8691769624717*f[11]+174.2842505793337*f[10]+174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]-300.0000000000001*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]-300.0000000000001*f[36]-519.6152422706633*f[35]-300.0000000000001*f[34]-300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]-116.1895003862225*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]-116.1895003862225*f[24]-116.1895003862225*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]-116.1895003862225*f[17]-116.1895003862225*f[15]-201.2461179749811*f[11]-116.1895003862225*f[10]-116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]+259.8076211353317*f[45]+150.0*f[44]+259.8076211353317*f[43]+259.8076211353315*f[42]+150.0*f[41]+150.0*f[40]+259.8076211353315*f[39]+259.8076211353315*f[38]+150.0*f[37]+150.0*f[36]+259.8076211353317*f[35]+150.0*f[34]+150.0*f[33]+150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.8460969082653*f[47]+207.8460969082653*f[46]+207.8460969082653*f[45]+120.0*f[44]+207.8460969082653*f[43]+207.8460969082653*f[42]+120.0*f[41]+120.0*f[40]+207.8460969082653*f[39]+207.8460969082653*f[38]+120.0*f[37]+120.0*f[36]+207.8460969082653*f[35]+120.0*f[34]+120.0*f[33]+120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]-100.6230589874906*f[29]-58.09475019311126*f[28]-100.6230589874906*f[26]-100.6230589874906*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]-100.6230589874906*f[19]-100.6230589874906*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.6230589874906*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = 0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]+23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]+23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]+23.2379000772445*f[16]-11.61895003862225*f[15]+23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]-11.61895003862225*f[4]+23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0]); + fReflSurfXYMu[1][1] = 0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]+20.124611797498105*f[45]+11.618950038622252*f[44]+20.124611797498105*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]+11.618950038622252*f[36]+20.124611797498105*f[35]+11.618950038622252*f[34]+11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]+13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]+13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]+8.0*f[15]+13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]-13.416407864998737*f[45]-7.745966692414834*f[44]-13.416407864998737*f[43]-13.416407864998739*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]-13.416407864998739*f[39]-13.416407864998739*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.416407864998737*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]-6.7082039324993685*f[45]-3.872983346207417*f[44]-6.7082039324993685*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.7082039324993685*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]+13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]-12.0*f[27]+13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]+13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]-12.0*f[16]+8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]+13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]+8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); + fReflSurfXYMu[1][2] = 0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]+467.65371804359694*f[45]+269.99999999999994*f[44]+467.65371804359694*f[43]+467.65371804359665*f[42]+270.0*f[41]+270.0*f[40]+467.65371804359665*f[39]+467.65371804359665*f[38]+270.0*f[37]+269.99999999999994*f[36]+467.65371804359694*f[35]+269.99999999999994*f[34]+269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]+301.86917696247167*f[29]+174.28425057933373*f[28]+301.86917696247167*f[26]+301.86917696247167*f[25]+174.28425057933373*f[24]+174.28425057933373*f[23]+301.86917696247167*f[19]+301.86917696247167*f[18]+174.28425057933373*f[17]+174.28425057933373*f[15]+301.86917696247167*f[11]+174.28425057933373*f[10]+174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]-300.00000000000006*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]-300.00000000000006*f[36]-519.6152422706633*f[35]-300.00000000000006*f[34]-300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]-116.18950038622252*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]-116.18950038622252*f[24]-116.18950038622252*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]-116.18950038622252*f[17]-116.18950038622252*f[15]-201.2461179749811*f[11]-116.18950038622252*f[10]-116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]+259.80762113533166*f[45]+150.00000000000003*f[44]+259.80762113533166*f[43]+259.80762113533154*f[42]+150.0*f[41]+150.0*f[40]+259.80762113533154*f[39]+259.80762113533154*f[38]+150.0*f[37]+150.00000000000003*f[36]+259.80762113533166*f[35]+150.00000000000003*f[34]+150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l+207.84609690826525*f[47]+207.84609690826528*f[46]+207.84609690826528*f[45]+120.00000000000001*f[44]+207.84609690826528*f[43]+207.84609690826525*f[42]+120.0*f[41]+120.0*f[40]+207.84609690826525*f[39]+207.84609690826525*f[38]+120.0*f[37]+120.00000000000001*f[36]+207.84609690826528*f[35]+120.00000000000001*f[34]+120.00000000000001*f[33]+120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]-100.62305898749055*f[29]-58.09475019311126*f[28]-100.62305898749055*f[26]-100.62305898749055*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]-100.62305898749055*f[19]-100.62305898749055*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.62305898749055*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4]); } else { // vcut in logical space. @@ -2066,24 +2232,26 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double const double vcut_lR4 = pow(vcut_l,4); const double vcut_lR5 = pow(vcut_l,5); - fReflSurfXYMu[1][0] = -0.009316949906249122*((25.98076211353316*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]+15.0*f[44]+25.98076211353316*f[43]+25.98076211353316*f[42]+15.0*f[41]+15.0*f[40]+25.98076211353316*f[39]+25.98076211353316*f[38]+15.0*f[37]+15.0*f[36]+25.98076211353316*f[35]+15.0*f[34]+15.0*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+((-25.98076211353316*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]-15.0*f[44]-25.98076211353316*f[43]-25.98076211353316*f[42]-15.0*f[41]-15.0*f[40]-25.98076211353316*f[39]-25.98076211353316*f[38]-15.0*f[37]-15.0*f[36]-25.98076211353316*f[35]-15.0*f[34]-15.0*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.41640786499874*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]+13.41640786499874*f[13]+13.41640786499874*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.41640786499874*f[6]+13.41640786499874*f[5]+23.2379000772445*f[3]+13.41640786499874*f[2]+13.41640786499874*f[1]+13.41640786499874*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.41640786499874*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]-13.41640786499874*f[13]-13.41640786499874*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.41640786499874*f[6]-13.41640786499874*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]-13.41640786499874*f[2]-13.41640786499874*f[1]-13.41640786499874*f[0]); - fReflSurfXYMu[1][1] = -0.015625*((20.12461179749811*f[47]+20.1246117974981*f[46]+20.1246117974981*f[45]+11.61895003862225*f[44]+20.1246117974981*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]+11.61895003862225*f[36]+20.1246117974981*f[35]+11.61895003862225*f[34]+11.61895003862225*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.85640646055102*f[31]+13.85640646055102*f[30]+13.85640646055102*f[29]+8.0*f[28]+13.85640646055102*f[26]+13.85640646055102*f[25]+8.0*f[24]+8.0*f[23]+13.85640646055102*f[19]+13.85640646055102*f[18]+8.0*f[17]+8.0*f[15]+13.85640646055102*f[11]+8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+((-13.41640786499874*f[47])-13.41640786499874*f[46]-13.41640786499874*f[45]-7.745966692414834*f[44]-13.41640786499874*f[43]-13.41640786499874*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]-13.41640786499874*f[39]-13.41640786499874*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.41640786499874*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.708203932499369*f[46]-6.708203932499369*f[45]-3.872983346207417*f[44]-6.708203932499369*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.708203932499369*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]-13.85640646055102*f[31]-13.85640646055102*f[30]-13.85640646055102*f[29]-8.0*f[28]-12.0*f[27]-13.85640646055102*f[26]-13.85640646055102*f[25]-8.0*f[24]-8.0*f[23]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-13.85640646055102*f[19]-13.85640646055102*f[18]-8.0*f[17]-12.0*f[16]-8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-13.85640646055102*f[11]-8.0*f[10]-8.0*f[9]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0]); - fReflSurfXYMu[1][2] = -0.001041666666666667*((467.6537180435967*f[47]+467.6537180435969*f[46]+467.6537180435969*f[45]+269.9999999999999*f[44]+467.6537180435969*f[43]+467.6537180435967*f[42]+270.0*f[41]+270.0*f[40]+467.6537180435967*f[39]+467.6537180435967*f[38]+270.0*f[37]+269.9999999999999*f[36]+467.6537180435969*f[35]+269.9999999999999*f[34]+269.9999999999999*f[33]+270.0*f[32])*vcut_lR5+(301.8691769624717*f[31]+301.8691769624717*f[30]+301.8691769624717*f[29]+174.2842505793337*f[28]+301.8691769624717*f[26]+301.8691769624717*f[25]+174.2842505793337*f[24]+174.2842505793337*f[23]+301.8691769624717*f[19]+301.8691769624717*f[18]+174.2842505793337*f[17]+174.2842505793337*f[15]+301.8691769624717*f[11]+174.2842505793337*f[10]+174.2842505793337*f[9]+174.2842505793337*f[4])*vcut_lR4+((-519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]-300.0000000000001*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]-300.0000000000001*f[36]-519.6152422706633*f[35]-300.0000000000001*f[34]-300.0000000000001*f[33]-300.0*f[32]+232.379000772445*f[27]+232.379000772445*f[22]+232.379000772445*f[21]+134.1640786499874*f[20]+232.379000772445*f[16]+232.379000772445*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.379000772445*f[8]+232.379000772445*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.379000772445*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+((-201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]-116.1895003862225*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]-116.1895003862225*f[24]-116.1895003862225*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]-116.1895003862225*f[17]-116.1895003862225*f[15]-201.2461179749811*f[11]-116.1895003862225*f[10]-116.1895003862225*f[9]-116.1895003862225*f[4])*vcut_lR2+(259.8076211353315*f[47]+259.8076211353317*f[46]+259.8076211353317*f[45]+150.0*f[44]+259.8076211353317*f[43]+259.8076211353315*f[42]+150.0*f[41]+150.0*f[40]+259.8076211353315*f[39]+259.8076211353315*f[38]+150.0*f[37]+150.0*f[36]+259.8076211353317*f[35]+150.0*f[34]+150.0*f[33]+150.0*f[32]-232.379000772445*f[27]-232.379000772445*f[22]-232.379000772445*f[21]-134.1640786499874*f[20]-232.379000772445*f[16]-232.379000772445*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.379000772445*f[8]-232.379000772445*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.379000772445*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.8460969082653*f[47]-207.8460969082653*f[46]-207.8460969082653*f[45]-120.0*f[44]-207.8460969082653*f[43]-207.8460969082653*f[42]-120.0*f[41]-120.0*f[40]-207.8460969082653*f[39]-207.8460969082653*f[38]-120.0*f[37]-120.0*f[36]-207.8460969082653*f[35]-120.0*f[34]-120.0*f[33]-120.0*f[32]-100.6230589874906*f[31]-100.6230589874906*f[30]-100.6230589874906*f[29]-58.09475019311126*f[28]-100.6230589874906*f[26]-100.6230589874906*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]-100.6230589874906*f[19]-100.6230589874906*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.6230589874906*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4]); + fReflSurfXYMu[1][0] = -(0.009316949906249122*((25.980762113533157*f[47]+25.98076211353316*f[46]+25.98076211353316*f[45]+15.000000000000002*f[44]+25.98076211353316*f[43]+25.980762113533157*f[42]+15.0*f[41]+15.0*f[40]+25.980762113533157*f[39]+25.980762113533157*f[38]+15.0*f[37]+15.000000000000002*f[36]+25.98076211353316*f[35]+15.000000000000002*f[34]+15.000000000000002*f[33]+15.0*f[32])*vcut_lR3+(20.12461179749811*f[31]+20.12461179749811*f[30]+20.12461179749811*f[29]+11.61895003862225*f[28]+20.12461179749811*f[26]+20.12461179749811*f[25]+11.61895003862225*f[24]+11.61895003862225*f[23]+20.12461179749811*f[19]+20.12461179749811*f[18]+11.61895003862225*f[17]+11.61895003862225*f[15]+20.12461179749811*f[11]+11.61895003862225*f[10]+11.61895003862225*f[9]+11.61895003862225*f[4])*vcut_lR2+(-(25.980762113533157*f[47])-25.98076211353316*f[46]-25.98076211353316*f[45]-15.000000000000002*f[44]-25.98076211353316*f[43]-25.980762113533157*f[42]-15.0*f[41]-15.0*f[40]-25.980762113533157*f[39]-25.980762113533157*f[38]-15.0*f[37]-15.000000000000002*f[36]-25.98076211353316*f[35]-15.000000000000002*f[34]-15.000000000000002*f[33]-15.0*f[32]+23.2379000772445*f[27]+23.2379000772445*f[22]+23.2379000772445*f[21]+13.416407864998739*f[20]+23.2379000772445*f[16]+23.2379000772445*f[14]+13.416407864998739*f[13]+13.416407864998739*f[12]+23.2379000772445*f[8]+23.2379000772445*f[7]+13.416407864998739*f[6]+13.416407864998739*f[5]+23.2379000772445*f[3]+13.416407864998739*f[2]+13.416407864998739*f[1]+13.416407864998739*f[0])*vcut_l-20.12461179749811*f[31]-20.12461179749811*f[30]-20.12461179749811*f[29]-11.61895003862225*f[28]-23.2379000772445*f[27]-20.12461179749811*f[26]-20.12461179749811*f[25]-11.61895003862225*f[24]-11.61895003862225*f[23]-23.2379000772445*f[22]-23.2379000772445*f[21]-13.416407864998739*f[20]-20.12461179749811*f[19]-20.12461179749811*f[18]-11.61895003862225*f[17]-23.2379000772445*f[16]-11.61895003862225*f[15]-23.2379000772445*f[14]-13.416407864998739*f[13]-13.416407864998739*f[12]-20.12461179749811*f[11]-11.61895003862225*f[10]-11.61895003862225*f[9]-23.2379000772445*f[8]-23.2379000772445*f[7]-13.416407864998739*f[6]-13.416407864998739*f[5]-11.61895003862225*f[4]-23.2379000772445*f[3]-13.416407864998739*f[2]-13.416407864998739*f[1]-13.416407864998739*f[0])); + fReflSurfXYMu[1][1] = -(0.015625*((20.12461179749811*f[47]+20.124611797498105*f[46]+20.124611797498105*f[45]+11.618950038622252*f[44]+20.124611797498105*f[43]+20.12461179749811*f[42]+11.61895003862225*f[41]+11.61895003862225*f[40]+20.12461179749811*f[39]+20.12461179749811*f[38]+11.61895003862225*f[37]+11.618950038622252*f[36]+20.124611797498105*f[35]+11.618950038622252*f[34]+11.618950038622252*f[33]+11.61895003862225*f[32])*vcut_lR4+(13.856406460551018*f[31]+13.856406460551018*f[30]+13.856406460551018*f[29]+8.0*f[28]+13.856406460551018*f[26]+13.856406460551018*f[25]+8.0*f[24]+8.0*f[23]+13.856406460551018*f[19]+13.856406460551018*f[18]+8.0*f[17]+8.0*f[15]+13.856406460551018*f[11]+8.0*f[10]+8.0*f[9]+8.0*f[4])*vcut_lR3+(-(13.416407864998739*f[47])-13.416407864998737*f[46]-13.416407864998737*f[45]-7.745966692414834*f[44]-13.416407864998737*f[43]-13.416407864998739*f[42]-7.745966692414834*f[41]-7.745966692414834*f[40]-13.416407864998739*f[39]-13.416407864998739*f[38]-7.745966692414834*f[37]-7.745966692414834*f[36]-13.416407864998737*f[35]-7.745966692414834*f[34]-7.745966692414834*f[33]-7.745966692414834*f[32]+12.0*f[27]+12.0*f[22]+12.0*f[21]+6.928203230275509*f[20]+12.0*f[16]+12.0*f[14]+6.928203230275509*f[13]+6.928203230275509*f[12]+12.0*f[8]+12.0*f[7]+6.928203230275509*f[6]+6.928203230275509*f[5]+12.0*f[3]+6.928203230275509*f[2]+6.928203230275509*f[1]+6.928203230275509*f[0])*vcut_lR2-6.708203932499369*f[47]-6.7082039324993685*f[46]-6.7082039324993685*f[45]-3.872983346207417*f[44]-6.7082039324993685*f[43]-6.708203932499369*f[42]-3.872983346207417*f[41]-3.872983346207417*f[40]-6.708203932499369*f[39]-6.708203932499369*f[38]-3.872983346207417*f[37]-3.872983346207417*f[36]-6.7082039324993685*f[35]-3.872983346207417*f[34]-3.872983346207417*f[33]-3.872983346207417*f[32]-13.856406460551018*f[31]-13.856406460551018*f[30]-13.856406460551018*f[29]-8.0*f[28]-12.0*f[27]-13.856406460551018*f[26]-13.856406460551018*f[25]-8.0*f[24]-8.0*f[23]-12.0*f[22]-12.0*f[21]-6.928203230275509*f[20]-13.856406460551018*f[19]-13.856406460551018*f[18]-8.0*f[17]-12.0*f[16]-8.0*f[15]-12.0*f[14]-6.928203230275509*f[13]-6.928203230275509*f[12]-13.856406460551018*f[11]-8.0*f[10]-8.0*f[9]-12.0*f[8]-12.0*f[7]-6.928203230275509*f[6]-6.928203230275509*f[5]-8.0*f[4]-12.0*f[3]-6.928203230275509*f[2]-6.928203230275509*f[1]-6.928203230275509*f[0])); + fReflSurfXYMu[1][2] = -(0.0010416666666666667*((467.65371804359665*f[47]+467.65371804359694*f[46]+467.65371804359694*f[45]+269.99999999999994*f[44]+467.65371804359694*f[43]+467.65371804359665*f[42]+270.0*f[41]+270.0*f[40]+467.65371804359665*f[39]+467.65371804359665*f[38]+270.0*f[37]+269.99999999999994*f[36]+467.65371804359694*f[35]+269.99999999999994*f[34]+269.99999999999994*f[33]+270.0*f[32])*vcut_lR5+(301.86917696247167*f[31]+301.86917696247167*f[30]+301.86917696247167*f[29]+174.28425057933373*f[28]+301.86917696247167*f[26]+301.86917696247167*f[25]+174.28425057933373*f[24]+174.28425057933373*f[23]+301.86917696247167*f[19]+301.86917696247167*f[18]+174.28425057933373*f[17]+174.28425057933373*f[15]+301.86917696247167*f[11]+174.28425057933373*f[10]+174.28425057933373*f[9]+174.28425057933373*f[4])*vcut_lR4+(-(519.6152422706631*f[47])-519.6152422706633*f[46]-519.6152422706633*f[45]-300.00000000000006*f[44]-519.6152422706633*f[43]-519.6152422706631*f[42]-300.0*f[41]-300.0*f[40]-519.6152422706631*f[39]-519.6152422706631*f[38]-300.0*f[37]-300.00000000000006*f[36]-519.6152422706633*f[35]-300.00000000000006*f[34]-300.00000000000006*f[33]-300.0*f[32]+232.37900077244504*f[27]+232.37900077244504*f[22]+232.37900077244504*f[21]+134.1640786499874*f[20]+232.37900077244504*f[16]+232.37900077244504*f[14]+134.1640786499874*f[13]+134.1640786499874*f[12]+232.37900077244504*f[8]+232.37900077244504*f[7]+134.1640786499874*f[6]+134.1640786499874*f[5]+232.37900077244504*f[3]+134.1640786499874*f[2]+134.1640786499874*f[1]+134.1640786499874*f[0])*vcut_lR3+(-(201.2461179749811*f[31])-201.2461179749811*f[30]-201.2461179749811*f[29]-116.18950038622252*f[28]-201.2461179749811*f[26]-201.2461179749811*f[25]-116.18950038622252*f[24]-116.18950038622252*f[23]-201.2461179749811*f[19]-201.2461179749811*f[18]-116.18950038622252*f[17]-116.18950038622252*f[15]-201.2461179749811*f[11]-116.18950038622252*f[10]-116.18950038622252*f[9]-116.18950038622252*f[4])*vcut_lR2+(259.80762113533154*f[47]+259.80762113533166*f[46]+259.80762113533166*f[45]+150.00000000000003*f[44]+259.80762113533166*f[43]+259.80762113533154*f[42]+150.0*f[41]+150.0*f[40]+259.80762113533154*f[39]+259.80762113533154*f[38]+150.0*f[37]+150.00000000000003*f[36]+259.80762113533166*f[35]+150.00000000000003*f[34]+150.00000000000003*f[33]+150.0*f[32]-232.37900077244504*f[27]-232.37900077244504*f[22]-232.37900077244504*f[21]-134.1640786499874*f[20]-232.37900077244504*f[16]-232.37900077244504*f[14]-134.1640786499874*f[13]-134.1640786499874*f[12]-232.37900077244504*f[8]-232.37900077244504*f[7]-134.1640786499874*f[6]-134.1640786499874*f[5]-232.37900077244504*f[3]-134.1640786499874*f[2]-134.1640786499874*f[1]-134.1640786499874*f[0])*vcut_l-207.84609690826525*f[47]-207.84609690826528*f[46]-207.84609690826528*f[45]-120.00000000000001*f[44]-207.84609690826528*f[43]-207.84609690826525*f[42]-120.0*f[41]-120.0*f[40]-207.84609690826525*f[39]-207.84609690826525*f[38]-120.0*f[37]-120.00000000000001*f[36]-207.84609690826528*f[35]-120.00000000000001*f[34]-120.00000000000001*f[33]-120.0*f[32]-100.62305898749055*f[31]-100.62305898749055*f[30]-100.62305898749055*f[29]-58.09475019311126*f[28]-100.62305898749055*f[26]-100.62305898749055*f[25]-58.09475019311126*f[24]-58.09475019311126*f[23]-100.62305898749055*f[19]-100.62305898749055*f[18]-58.09475019311126*f[17]-58.09475019311126*f[15]-100.62305898749055*f[11]-58.09475019311126*f[10]-58.09475019311126*f[9]-58.09475019311126*f[4])); } - // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], - // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. - xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; - xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; - if (fReflSurfXYMu[1][0]<0.) { + // If the cut distribution f(vpar), where vpar in [-1,vcut_l] or [vcut_l/1], + // has a cell average < 0, set to 0. If it's >0 but not realizable, set to p=0. + xBar = (0.5773502691896258*fReflSurfXYMu[1][1])/fReflSurfXYMu[1][0]; + xSqBar = (0.06666666666666667*(4.47213595499958*fReflSurfXYMu[1][2]+5.0*fReflSurfXYMu[1][0]))/fReflSurfXYMu[1][0]; + if (fReflSurfXYMu[1][0]<0.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; - } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { + } else if (fabs(xBar)>=1. || fabs(xSqBar)>=1.) { fReflSurfXYMu[1][0] = 0.0; fReflSurfXYMu[1][1] = 0.0; fReflSurfXYMu[1][2] = 0.0; + } + } fReflSurfXY[3][0] = 0.7071067811865475*(fReflSurfXYMu[1][0]+fReflSurfXYMu[0][0]); @@ -2093,8 +2261,6 @@ GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double fReflSurfXY[3][4] = 0.7071067811865475*(fReflSurfXYMu[1][2]+fReflSurfXYMu[0][2]); fReflSurfXY[3][5] = 0.7071067811865475*(fReflSurfXYMu[1][2]-1.0*fReflSurfXYMu[0][2]); - } - fRefl[0] = 0.7071067811865475*(fReflSurfXY[3][0]+fReflSurfXY[2][0]+fReflSurfXY[1][0]+fReflSurfXY[0][0]); fRefl[1] = 0.7071067811865475*(fReflSurfXY[3][0]+fReflSurfXY[2][0]-1.0*(fReflSurfXY[1][0]+fReflSurfXY[0][0])); fRefl[2] = 0.7071067811865475*(fReflSurfXY[3][0]-1.0*fReflSurfXY[2][0]+fReflSurfXY[1][0]-1.0*fReflSurfXY[0][0]); diff --git a/gyrokinetic/ker/bc_sheath_gyrokinetic/gkyl_bc_sheath_gyrokinetic_kernels.h b/gyrokinetic/ker/bc_sheath_gyrokinetic/gkyl_bc_sheath_gyrokinetic_kernels.h index 0242c3411d..c655f2f44e 100644 --- a/gyrokinetic/ker/bc_sheath_gyrokinetic/gkyl_bc_sheath_gyrokinetic_kernels.h +++ b/gyrokinetic/ker/bc_sheath_gyrokinetic/gkyl_bc_sheath_gyrokinetic_kernels.h @@ -12,14 +12,14 @@ static inline double invL(double x) { EXTERN_C_BEG -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x1v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl); -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x1v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl); -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl); -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl); -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl); -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl); -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl); -GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *f, double *fRefl); +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x1v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl); +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x1v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl); +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_1x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl); +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_1x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl); +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_2x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl); +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_2x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl); +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_lower_3x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl); +GKYL_CU_DH void bc_sheath_gyrokinetic_reflectedf_upper_3x2v_ser_p1(const double *vmap, const double q2Dm, const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl); EXTERN_C_END diff --git a/gyrokinetic/unit/ctest_bc_sheath_gyrokinetic.c b/gyrokinetic/unit/ctest_bc_sheath_gyrokinetic.c index bc9239dd23..207655a39e 100644 --- a/gyrokinetic/unit/ctest_bc_sheath_gyrokinetic.c +++ b/gyrokinetic/unit/ctest_bc_sheath_gyrokinetic.c @@ -25,6 +25,7 @@ mkarr(bool use_gpu, long nc, long size) } struct test_sheath_ctx { + int cdim; // Configuration space dimension. double lower[GKYL_MAX_DIM], upper[GKYL_MAX_DIM]; // Grid extents. int cells[GKYL_MAX_DIM]; // Number of cells. double upar; // Mean parallel drift speed. @@ -39,11 +40,28 @@ struct test_sheath_ctx { double sigmaz; // Width of distribution in z. }; +struct eval_vcut_fact_ctx { + int cdim; // Configuration space dimension. +}; + +void +eval_func_vcut_fact(double t, const double *xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct eval_vcut_fact_ctx *pars = ctx; + double mu = xn[pars->cdim-1]; // Mu is the last dimension. + + double Lmu = 1.0; // Characteristic scale length in mu direction. + double vcut_fact_0 = 1.0; + + double vcut_fact = vcut_fact_0 * (1 + exp(-mu/Lmu)); + fout[0] = pow(vcut_fact, 2); +} + void eval_func_1x2v(double t, const double *xn, double* GKYL_RESTRICT fout, void *ctx) { - double vpar = xn[1], mu = xn[2]; double z = xn[0]; + double vpar = xn[1], mu = xn[2]; struct test_sheath_ctx *pars = ctx; @@ -54,15 +72,15 @@ eval_func_1x2v(double t, const double *xn, double* GKYL_RESTRICT fout, void *ctx double z0 = pars->z0; double sigmaz = pars->sigmaz; - double envelope = exp( -pow(z-z0,2)/(2.0*pow(sigmaz,2)) ); - fout[0] = exp( -(pow(vpar-upar,2) + 2.0*mu*B0/m) /(2.0*pow(vt,2)) ) * envelope + 0.1; + double envelope = 1;//exp( -pow(z-z0,2)/(2.0*pow(sigmaz,2)) ); + fout[0] = exp( -(pow(vpar-upar,2) + 2.0*mu*B0/m) /(2.0*pow(vt,2)) ) * envelope; } void eval_func_2x2v(double t, const double *xn, double* GKYL_RESTRICT fout, void *ctx) { - double vpar = xn[2], mu = xn[3]; double x = xn[0], z = xn[1]; + double vpar = xn[2], mu = xn[3]; struct test_sheath_ctx *pars = ctx; @@ -75,8 +93,8 @@ eval_func_2x2v(double t, const double *xn, double* GKYL_RESTRICT fout, void *ctx double sigmax = pars->sigmax; double sigmaz = pars->sigmaz; - double envelope = exp( -pow(x-x0,2)/(2.0*pow(sigmax,2)) ) * exp( -pow(z-z0,2)/(2.0*pow(sigmaz,2)) ); - fout[0] = exp( -(pow(vpar-upar,2) + 2.0*mu*B0/m) /(2.0*pow(vt,2)) ) * envelope + 0.1; + double envelope = 1;//exp( -pow(x-x0,2)/(2.0*pow(sigmax,2)) ) * exp( -pow(z-z0,2)/(2.0*pow(sigmaz,2)) ); + fout[0] = exp( -(pow(vpar-upar,2) + 2.0*mu*B0/m) /(2.0*pow(vt,2)) ) * envelope; } void @@ -98,8 +116,8 @@ eval_func_3x2v(double t, const double *xn, double* GKYL_RESTRICT fout, void *ctx double sigmay = pars->sigmay; double sigmaz = pars->sigmaz; - double envelope = exp( -pow(x-x0,2)/(2.0*pow(sigmax,2)) ) * exp( -pow(y-y0,2)/(2.0*pow(sigmay,2)) ) * exp( -pow(z-z0,2)/(2.0*pow(sigmaz,2)) ); - fout[0] = exp( -(pow(vpar-upar,2) + 2.0*mu*B0/m) /(2.0*pow(vt,2)) ) * envelope + 0.1; + double envelope =1;//exp( -pow(x-x0,2)/(2.0*pow(sigmax,2)) ) * exp( -pow(y-y0,2)/(2.0*pow(sigmay,2)) ) * exp( -pow(z-z0,2)/(2.0*pow(sigmaz,2)) ); + fout[0] = exp( -(pow(vpar-upar,2) + 2.0*mu*B0/m) /(2.0*pow(vt,2)) ) * envelope; } // Checks that the distribution function values in the ghost cells are set to @@ -109,16 +127,14 @@ check_function(double phi_mpe, double phi_wall, double charge, double mass, int struct gkyl_array *distf_ho, struct gkyl_rect_grid grid, struct gkyl_range ghost_r, enum gkyl_edge_loc edge){ double delta_phi = phi_mpe - phi_wall; - double vpar_cut; - if (delta_phi < 0) { - vpar_cut = charge < 0.? DBL_MAX : sqrt(charge*fabs(delta_phi)/(0.5*mass)); - } - else { - vpar_cut = charge < 0.? sqrt(fabs(charge)*delta_phi/(0.5*mass)) : DBL_MAX; - } + double vpar_cut_radius; + // This cut is if we have reflection. If q*dphi > 0, we expect 0 everywhere. + vpar_cut_radius = sqrt(fabs(charge*delta_phi)/(0.5*mass)); + int num_cells = 0; int num_zero_cells = 0; int num_zero_cells_expected = 0; + int num_uknown_cells = 0; // We need the sign of charge*delta_phi to determine // which part of the distribution function is cut off by the sheath BC. double qphi_sign = charge * delta_phi > 0 ? 1.0 : -1.0; @@ -128,7 +144,7 @@ check_function(double phi_mpe, double phi_wall, double charge, double mass, int int *idx_g = iter.idx; long linidx_g = gkyl_range_idx(&ghost_r, idx_g); double *distf_c = gkyl_array_fetch(distf_ho, linidx_g); - double tol = 1e-8; + double tol = 1e-12; double ref_val = 0.0; // Get cell boundaries along vpar. @@ -136,36 +152,48 @@ check_function(double phi_mpe, double phi_wall, double charge, double mass, int gkyl_rect_grid_cell_center(&grid, idx_g, xc); double cell_lower_vpar = xc[cdim] - 0.5*grid.dx[cdim]; double cell_upper_vpar = xc[cdim] + 0.5*grid.dx[cdim]; - + // Compute the maximal "velocity radius" of the cell + double vr_min = fmin(fabs(cell_lower_vpar), fabs(cell_upper_vpar)); + double vr_max = fmax(fabs(cell_lower_vpar), fabs(cell_upper_vpar)); + + // Compute the vpar cut radius at the lower and upper mu boundaries (assumes vcut_fact is monotonic in mu). + double cell_lower_mu = xc[cdim+1] - 0.5*grid.dx[cdim+1]; + double cell_upper_mu = xc[cdim+1] + 0.5*grid.dx[cdim+1]; + double vcut_coord_lower[cdim], vcut_coord_upper[cdim]; + vcut_coord_lower[cdim-1] = cell_lower_mu; + vcut_coord_upper[cdim-1] = cell_upper_mu; + double vcut_fact_lower[1], vcut_fact_upper[1]; + eval_func_vcut_fact(0, vcut_coord_lower, vcut_fact_lower, &(struct eval_vcut_fact_ctx) {.cdim = cdim}); + eval_func_vcut_fact(0, vcut_coord_upper, vcut_fact_upper, &(struct eval_vcut_fact_ctx) {.cdim = cdim}); + double vpcr_lower = sqrt(vcut_fact_lower[0]) * vpar_cut_radius; + double vpcr_upper = sqrt(vcut_fact_upper[0]) * vpar_cut_radius; + double vpcr_min = fmin(vpcr_lower, vpcr_upper); + double vpcr_max = fmax(vpcr_lower, vpcr_upper); + num_cells++; num_zero_cells += distf_c[0] > tol ? 0 : 1; - if ( edge == GKYL_LOWER_EDGE && - ( cell_lower_vpar > -qphi_sign*vpar_cut || cell_upper_vpar < qphi_sign*vpar_cut ) ) { - num_zero_cells_expected++; - for (int k=0; kncomp; k++) { - TEST_CHECK( gkyl_compare(distf_c[k], ref_val, tol) ); - TEST_MSG( "Expected %.9e | Got: %.9e at idx=%d,%d,%d\n", ref_val, distf_c[k], idx_g[0], idx_g[1], idx_g[2]); - } - } - else if (edge == GKYL_UPPER_EDGE && - ( cell_lower_vpar > -qphi_sign*vpar_cut || cell_upper_vpar < qphi_sign*vpar_cut ) ) { + if ( (vr_min >= vpcr_max) || (qphi_sign > 0) ) { + // Check that all coefficients are 0 for cells that are fully outside the cutoff or if we have full absorption (q*delta_phi > 0). num_zero_cells_expected++; for (int k=0; kncomp; k++) { TEST_CHECK( gkyl_compare(distf_c[k], ref_val, tol) ); TEST_MSG( "Expected %.9e | Got: %.9e at idx=%d,%d,%d\n", ref_val, distf_c[k], idx_g[0], idx_g[1], idx_g[2]); } + } else if ( ((vpcr_min < vr_max) && (vpcr_min > vr_min)) || ((vpcr_max > vr_min) && (vpcr_max < vr_max)) ) { + // For cells that are partially cut off by the sheath BC we don't know. + num_uknown_cells++; } else { - // Check that the average cell value is bigger than 0 for cells that are not expected to be cut off by the sheath BC. - double cell_avg = distf_c[0]; - TEST_CHECK( cell_avg > ref_val ); - TEST_MSG( "Expected > %.9e | Got: %.9e at idx=%d,%d,%d\n", ref_val, cell_avg, idx_g[0], idx_g[1], idx_g[2]); + // These must be non zero cells that are fully within the cutoff, so we check that the average value is >0. + // double cell_avg = distf_c[0]; + // TEST_CHECK( cell_avg > ref_val ); + // TEST_MSG( "Expected > %.9e | Got: %.9e at idx=%d,%d,%d\n", ref_val, cell_avg, idx_g[0], idx_g[1], idx_g[2]); } } // Uncomment for debugging. // printf("\n"); // printf("Edge: %s | Charge: %.1e | Delta phi: %.2e\n", // edge == GKYL_LOWER_EDGE? "lower" : "upper", charge, delta_phi); - // printf("zero cell = %d | zero cell expected = %d | total cells = %d\n", num_zero_cells, num_zero_cells_expected, num_cells); + // 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, @@ -202,7 +230,7 @@ void write_out_fields(int cdim, int vdim, enum gkyl_edge_loc edge, bool use_gpu, void test_bc_sheath_gyrokinetic_1x2v(const int *cells, enum gkyl_edge_loc edge, - double charge, double phi_mpe, bool write_fields, bool use_gpu) + double charge, double phi_mpe, double upar_distf, bool write_fields, bool use_gpu) { /* This test applies the sheath BC to a Maxwellian distribution function on both upper and lower edges in the z direction, @@ -217,7 +245,6 @@ test_bc_sheath_gyrokinetic_1x2v(const int *cells, enum gkyl_edge_loc edge, double mass = 1.0; // Species mass. double vt = 1.0; // Reference thermal speed (for grid extents). double B0 = 1.0; // Magnetic field magnitude. - double upar_distf = 1.0*vt; // Parallel flow speed in distribution function. double vt_distf = 1.5*vt; // Thermal speed in distribution function. double phi_wall = 0.0; // Potential at wall. double z0 = 0.2; @@ -340,6 +367,35 @@ test_bc_sheath_gyrokinetic_1x2v(const int *cells, enum gkyl_edge_loc edge, struct gkyl_bc_sheath_gyrokinetic *bcsheath = gkyl_bc_sheath_gyrokinetic_new(dir, 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_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_ho = use_gpu? mkarr(false, vcut_fact->ncomp, vcut_fact->size) : gkyl_array_acquire(vcut_fact); + + struct gkyl_rect_grid vcut_grid; + double vcut_lower[cdim], vcut_upper[cdim]; + for (int d=0; dvolume); + 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; + double vcut_lower[cdim], vcut_upper[cdim]; + for (int d=0; dvolume); + 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; + double vcut_lower[cdim], vcut_upper[cdim]; + for (int d=0; d #include +static struct gkyl_array* +mkarr(bool on_gpu, long nc, long size) +{ + struct gkyl_array* a; + if (on_gpu) + a = gkyl_array_cu_dev_new(GKYL_DOUBLE, nc, size); + else + a = gkyl_array_new(GKYL_DOUBLE, nc, size); + return a; +} + struct gkyl_bc_sheath_gyrokinetic* gkyl_bc_sheath_gyrokinetic_new(int dir, enum gkyl_edge_loc edge, const struct gkyl_basis *basis, const struct gkyl_range *skin_r, const struct gkyl_range *ghost_r, const struct gkyl_velocity_map *vel_map, @@ -21,9 +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; - // Choose the kernel that does the reflection/no reflection/partial - // reflection. + up->vcut_fact_dim = cdim-1 + vdim-1; + + // 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); + + 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]; + } + 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 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) { @@ -57,6 +95,7 @@ gkyl_bc_sheath_gyrokinetic_advance(const struct gkyl_bc_sheath_gyrokinetic *up, int fidx[GKYL_MAX_DIM]; // Flipped index. int vidx[2]; + int vcut_fact_idx[up->vcut_fact_local.ndim]; int pdim = up->skin_r->ndim; int vpar_dir = up->cdim; @@ -80,10 +119,16 @@ gkyl_bc_sheath_gyrokinetic_advance(const struct gkyl_bc_sheath_gyrokinetic *up, for (int d=up->cdim; dcdim] = iter.idx[d]; long conf_loc = gkyl_range_idx(conf_r, iter.idx); long vel_loc = gkyl_range_idx(&up->vel_map->local_vel, vidx); - + const double *phi_p = (const double*) gkyl_array_cfetch(phi, conf_loc); 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); + + 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); // Calculate reflected distribution function fhat. // note: reflected distribution can be @@ -91,13 +136,33 @@ gkyl_bc_sheath_gyrokinetic_advance(const struct gkyl_bc_sheath_gyrokinetic *up, // 2) fhat=f (full reflection) // 3) fhat=c*f (partial reflection) double fhat[up->basis->num_basis]; - up->kernels->reflectedf(vmap_p, up->q2Dm, phi_p, phi_wall_p, inp, fhat); + up->kernels->reflectedf(vmap_p, up->q2Dm, phi_p, phi_wall_p, vcut_fact_p, inp, fhat); // Reflect fhat into skin cells. bc_gksheath_reflect(up->dir, up->basis, up->cdim, out, fhat); } } +void gkyl_bc_sheath_gyrokinetic_set_vcut_fact(const struct gkyl_bc_sheath_gyrokinetic *up, const struct gkyl_array *vcut_fact) +{ + gkyl_array_copy_range(up->vcut_fact, vcut_fact, &up->vcut_fact_local); +} + +struct gkyl_array* gkyl_bc_sheath_gyrokinetic_acquire_vcut_fact(struct gkyl_bc_sheath_gyrokinetic *up) +{ + return gkyl_array_acquire(up->vcut_fact); +} + +struct gkyl_basis gkyl_bc_sheath_gyrokinetic_get_vcut_fact_basis(struct gkyl_bc_sheath_gyrokinetic *up) +{ + return up->vcut_fact_basis; +} + +struct gkyl_range* gkyl_bc_sheath_gyrokinetic_get_vcut_fact_range(struct gkyl_bc_sheath_gyrokinetic *up) +{ + return &up->vcut_fact_local; +} + void gkyl_bc_sheath_gyrokinetic_release(struct gkyl_bc_sheath_gyrokinetic *up) { // Release memory associated with this updater. @@ -107,6 +172,7 @@ 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_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..80ad50c14f 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,20 @@ 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. + int vcut_fact_dim = vcut_r.ndim; + 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 +105,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 0d613e4ab3..5c3109962c 100644 --- a/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic.h +++ b/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic.h @@ -33,12 +33,47 @@ struct gkyl_bc_sheath_gyrokinetic* gkyl_bc_sheath_gyrokinetic_new(int dir, enum * @param up BC updater. * @param phi Electrostatic potential. * @param phi_wall Wall potential. + * @param vcut_fact Alpha parameter for sheath BCs. * @param distf Distribution function array to apply BC to. * @param conf_r Configuration space range (to index phi). */ void gkyl_bc_sheath_gyrokinetic_advance(const struct gkyl_bc_sheath_gyrokinetic *up, const struct gkyl_array *phi, const struct gkyl_array *phi_wall, struct gkyl_array *distf, const struct gkyl_range *conf_r); +/** + * Set the vcut_fact array used in the sheath BC. + * This is used to implement a mu-dependent vcut in the sheath BC, + * where vcut_fact is the mu dependent multiplying factor in the expression for vcut. + * + * @param up BC updater. + * @param vcut_fact The vcut_fact array to use in the sheath BC. + */ +void gkyl_bc_sheath_gyrokinetic_set_vcut_fact(const struct gkyl_bc_sheath_gyrokinetic *up, const struct gkyl_array *vcut_fact); + +/** + * 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_acquire_vcut_fact(struct gkyl_bc_sheath_gyrokinetic *up); + +/** + * Get the basis of the vcut_fact array used in the sheath BC. + * + * @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); + +/** + * Get the range of the vcut_fact array used in the sheath BC. + * + * @param up BC updater. + * @return The range of the vcut_fact array used in the sheath BC. + */ +struct gkyl_range* gkyl_bc_sheath_gyrokinetic_get_vcut_fact_range(struct gkyl_bc_sheath_gyrokinetic *up); + /** * Free memory associated with bc_sheath_gyrokinetic updater. * diff --git a/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic_priv.h b/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic_priv.h index b76ed35d6e..445418d442 100644 --- a/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic_priv.h +++ b/gyrokinetic/zero/gkyl_bc_sheath_gyrokinetic_priv.h @@ -8,7 +8,7 @@ // Function pointer type for sheath reflection kernels. typedef void (*sheath_reflectedf_t)(const double *vmap, const double q2Dm, - const double *phi, const double *phiWall, const double *f, double *fRefl); + const double *phi, const double *phiWall, const double *vcut_fact, const double *f, double *fRefl); typedef struct { sheath_reflectedf_t kernels[3]; } sheath_reflectedf_kern_list; // For use in kernel tables. typedef struct { sheath_reflectedf_kern_list list[4]; } edged_sheath_reflectedf_kern_list; @@ -48,6 +48,10 @@ 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 (expansion in perpendicular config space and mu). + struct gkyl_range vcut_fact_local; // Range for vcut_fact array. }; void