diff --git a/Makefile_for_ext_C_input b/Makefile_for_ext_C_input index cf44bb3df3..7f6c00f8a4 100644 --- a/Makefile_for_ext_C_input +++ b/Makefile_for_ext_C_input @@ -154,4 +154,4 @@ $(BINS): %: %.c ${CC} ${CFLAGS} ${INCLUDES} $< -o $@ -L${G0_LIB_DIR} ${G0_RPATH} ${G0_LIBS} ${LIB_DIRS} ${EXT_LIBS} clean: - rm -rf $(BINS) *.d wk + rm -rf $(BINS) *.d diff --git a/core/zero/gkyl_eqn_type.h b/core/zero/gkyl_eqn_type.h index 10e7da7cf6..761c82c541 100644 --- a/core/zero/gkyl_eqn_type.h +++ b/core/zero/gkyl_eqn_type.h @@ -36,7 +36,7 @@ enum gkyl_eqn_type { // Identifiers for specific gyrokinetic field object types. enum gkyl_gkfield_id { - GKYL_GK_FIELD_ES = 0, // Electrostatic GK. This is default. + GKYL_GK_FIELD = 0, // This is default. GKYL_GK_FIELD_BOLTZMANN = 1, // GK Boltzmann, isothermal electrons, phi = phi_sheath + (T_e/e)*ln(n_i/n_is). GKYL_GK_FIELD_ADIABATIC = 2, // GK field with an adiabatic species. GKYL_GK_FIELD_EM = 4, // Electromagnetic GK. @@ -181,9 +181,6 @@ enum gkyl_gk_anomalous_diff_id { enum gkyl_gk_collisionless_type { GKYL_GK_COLLISIONLESS_NONE = 0, // Turns off collisionless terms. GKYL_GK_COLLISIONLESS_ES, // Electrostatic. - GKYL_GK_COLLISIONLESS_ES_NO_BY, // Electrostatic, w/o toroidal field (b_y=0). - GKYL_GK_COLLISIONLESS_EM_BPERP, // Electromagnetic with B_perp fluctuations. - GKYL_GK_COLLISIONLESS_EM_BPAR, // Electromagnetic with B_par fluctuations. GKYL_GK_COLLISIONLESS_EM, // Electromagnetic with B_perp and B_par fluctuations. GKYL_GK_COLLISIONLESS_NEUTRAL, // Neutral collisionless terms. GKYL_GK_COLLISIONLESS_PASSIVE, // Passive advection (for dev/debug). diff --git a/gyrokinetic/apps/gk_field.c b/gyrokinetic/apps/gk_field.c index 8e81b86f67..1d7faec4b7 100644 --- a/gyrokinetic/apps/gk_field.c +++ b/gyrokinetic/apps/gk_field.c @@ -127,9 +127,19 @@ gk_field_calc_energy_dt_active(gkyl_gyrokinetic_app *app, const struct gk_field app->stat.phidot_tm += gkyl_time_diff_now_sec(wst); } +static void +gk_field_calc_apar_energy_dt_active(gkyl_gyrokinetic_app *app, const struct gk_field *field, double dt, double *energy_reduced) +{ + struct timespec wst = gkyl_wall_clock(); + gkyl_array_integrate_advance(field->calc_em_energy, field->apar, + 1.0/dt, field->apar_energy_fac, &app->local, &app->local, energy_reduced); + app->stat.phidot_tm += gkyl_time_diff_now_sec(wst); +} + static void gk_field_calc_energy_dt_none(gkyl_gyrokinetic_app *app, const struct gk_field *field, double dt, double *energy_reduced) { + // Do nothing. } static void @@ -181,6 +191,67 @@ gk_field_calc_energy_enabled(struct gkyl_gyrokinetic_app *app, const struct gk_f gkyl_dynvec_append(field->integ_energy_dot, tm, energy_dot_global); } + + if (field->is_em) { + // Calculate Aparallel energy. + gkyl_array_integrate_advance(field->calc_em_energy, field->apar, + 1.0, field->apar_energy_fac, &app->local, &app->local, field->em_energy_red); + + gkyl_comm_allreduce(app->comm, GKYL_DOUBLE, GKYL_SUM, 1, field->em_energy_red, field->em_energy_red_global); + + double energy_global[1] = { 0.0 }; + if (app->use_gpu) + gkyl_cu_memcpy(energy_global, field->em_energy_red_global, sizeof(double[1]), GKYL_CU_MEMCPY_D2H); + else + energy_global[0] = field->em_energy_red_global[0]; + + if (app->cdim == 1) + energy_global[0] *= field->apar_energy_fac_1d; + + gkyl_dynvec_append(field->integ_apar_energy, tm, energy_global); + + // Calculate d(Aparallel)/dt energy. + gkyl_array_integrate_advance(field->calc_em_energy, field->apardot, + 1.0, field->apar_energy_fac, &app->local, &app->local, field->em_energy_red); + + gkyl_comm_allreduce(app->comm, GKYL_DOUBLE, GKYL_SUM, 1, field->em_energy_red, field->em_energy_red_global); + + double energy_dot_global[1] = { 0.0 }; + if (app->use_gpu) + gkyl_cu_memcpy(energy_dot_global, field->em_energy_red_global, sizeof(double[1]), GKYL_CU_MEMCPY_D2H); + else + energy_dot_global[0] = field->em_energy_red_global[0]; + + // if (app->cdim == 1) + // energy_dot_global[0] *= field->apar_energy_fac_1d; + + gkyl_dynvec_append(field->integ_apardot_energy, tm, energy_dot_global); + + if (field->info.time_rate_diagnostics) { + gkyl_comm_allreduce(app->comm, GKYL_DOUBLE, GKYL_SUM, 1, field->apar_energy_red_old, field->em_energy_red_global); + double energy_dot_global_old[1] = { 0.0 }; + if (app->use_gpu) + gkyl_cu_memcpy(energy_dot_global_old, field->em_energy_red_global, sizeof(double[1]), GKYL_CU_MEMCPY_D2H); + else + energy_dot_global_old[0] = field->em_energy_red_global[0]; + if (app->cdim == 1) + energy_dot_global_old[0] *= field->apar_energy_fac_1d; + + gkyl_comm_allreduce(app->comm, GKYL_DOUBLE, GKYL_SUM, 1, field->apar_energy_red_new, field->em_energy_red_global); + double energy_dot_global_new[1] = { 0.0 }; + if (app->use_gpu) + gkyl_cu_memcpy(energy_dot_global_new, field->em_energy_red_global, sizeof(double[1]), GKYL_CU_MEMCPY_D2H); + else + energy_dot_global_new[0] = field->em_energy_red_global[0]; + if (app->cdim == 1) + energy_dot_global_new[0] *= field->apar_energy_fac_1d; + + double energy_dot_global[1] = { 0.0 }; + energy_dot_global[0] = energy_dot_global_new[0] - energy_dot_global_old[0]; + + gkyl_dynvec_append(field->integ_apar_energy_dot, tm, energy_dot_global); + } + } } static void @@ -189,6 +260,55 @@ gk_field_calc_energy_disabled(struct gkyl_gyrokinetic_app *app, const struct gk_ // Do nothing. } +static void +gk_field_combine_enabled(struct gkyl_array *out, double c1, + const struct gkyl_array *arr1, double c2, const struct gkyl_array *arr2, + const struct gkyl_range *rng) +{ + gkyl_array_accumulate_range(gkyl_array_set_range(out, c1, arr1, rng), + c2, arr2, rng); +} + +static void +gk_field_combine_disabled(struct gkyl_array *out, double c1, + const struct gkyl_array *arr1, double c2, const struct gkyl_array *arr2, + const struct gkyl_range *rng) +{ + // Do nothing. +} + +static void +gk_field_step_apar_enabled(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array* out, double dt, + const struct gkyl_array* inp) +{ + // Apar^{n+1} = Apar^{n} + dt*dApar/dt + gkyl_array_accumulate(gkyl_array_scale(out, dt), 1.0, inp); + + // Smooth Apar along z. + field->fem_projection_par_apar_func(app, field, out, out); +} + +static void +gk_field_step_apar_disabled(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array* out, double dt, + const struct gkyl_array* inp) +{ + // Do nothing. +} + +static void +gk_field_copy_range_enabled(struct gkyl_array *out, + const struct gkyl_array *inp, const struct gkyl_range *range) +{ + gkyl_array_copy_range(out, inp, range); +} + +static void +gk_field_copy_range_disabled(struct gkyl_array *out, + const struct gkyl_array *inp, const struct gkyl_range *range) +{ + // Do nothing. +} + static void gk_field_time_rate_diags_new(struct gkyl_gyrokinetic_app *app, struct gk_field *f) { @@ -206,6 +326,22 @@ gk_field_time_rate_diags_new(struct gkyl_gyrokinetic_app *app, struct gk_field * } f->integ_energy_dot = gkyl_dynvec_new(GKYL_DOUBLE, 1); f->is_first_energy_dot_write_call = true; + if (f->is_em){ + f->calc_apar_energy_dt_func = gk_field_calc_apar_energy_dt_active; + if (app->use_gpu) { + f->apar_energy_red_new = gkyl_cu_malloc(sizeof(double[1])); + f->apar_energy_red_old = gkyl_cu_malloc(sizeof(double[1])); + gkyl_cu_memset(f->apar_energy_red_new, 0, sizeof(double[1])); + gkyl_cu_memset(f->apar_energy_red_old, 0, sizeof(double[1])); + } else { + f->apar_energy_red_new = gkyl_malloc(sizeof(double[1])); + f->apar_energy_red_old = gkyl_malloc(sizeof(double[1])); + memset(f->apar_energy_red_new, 0, sizeof(double[1])); + memset(f->apar_energy_red_old, 0, sizeof(double[1])); + } + f->integ_apar_energy_dot = gkyl_dynvec_new(GKYL_DOUBLE, 1); + } + f->is_first_apar_energy_dot_write_call = true; } static void @@ -225,6 +361,7 @@ gk_field_energy_new(struct gkyl_gyrokinetic_app *app, struct gk_field *f) f->calc_energy_func = gk_field_calc_energy_enabled; f->calc_energy_dt_func = gk_field_calc_energy_dt_none; + f->calc_apar_energy_dt_func = gk_field_calc_energy_dt_none; if (f->info.time_rate_diagnostics) { gk_field_time_rate_diags_new(app, f); @@ -233,6 +370,13 @@ gk_field_energy_new(struct gkyl_gyrokinetic_app *app, struct gk_field *f) // Factors for ES energy. f->es_energy_fac = mkarr(app->use_gpu, (2*(app->cdim/3)+1)*app->basis.num_basis, app->local_ext.volume); f->es_energy_fac_1d = 0.0; + + if (f->is_em) { + f->integ_apar_energy = gkyl_dynvec_new(GKYL_DOUBLE, 1); + f->integ_apardot_energy = gkyl_dynvec_new(GKYL_DOUBLE, 1); + f->apar_energy_fac = mkarr(app->use_gpu, (2*(app->cdim/3)+1)*app->basis.num_basis, app->local_ext.volume); + f->apar_energy_fac_1d = 0; + } } static void @@ -247,6 +391,16 @@ gk_field_time_rate_diags_release(const struct gkyl_gyrokinetic_app *app, struct gkyl_free(f->em_energy_red_old); } gkyl_dynvec_release(f->integ_energy_dot); + if (f->is_em) { + if (app->use_gpu) { + gkyl_cu_free(f->apar_energy_red_new); + gkyl_cu_free(f->apar_energy_red_old); + } else { + gkyl_free(f->apar_energy_red_new); + gkyl_free(f->apar_energy_red_old); + } + gkyl_dynvec_release(f->integ_apar_energy_dot); + } } static void @@ -267,6 +421,12 @@ gk_field_energy_release(const struct gkyl_gyrokinetic_app *app, struct gk_field } gkyl_array_release(f->es_energy_fac); + + if (f->is_em) { + gkyl_dynvec_release(f->integ_apar_energy); + gkyl_dynvec_release(f->integ_apardot_energy); + gkyl_array_release(f->apar_energy_fac); + } } // Initialize field object. @@ -277,7 +437,25 @@ gk_field_new(struct gkyl_gk *gk, struct gkyl_gyrokinetic_app *app) f->info = gk->field; - f->gkfield_id = f->info.gkfield_id ? f->info.gkfield_id : GKYL_GK_FIELD_ES; + f->gkfield_id = f->info.gkfield_id ? f->info.gkfield_id : GKYL_GK_FIELD; + + f->is_em = f->info.gkfield_id == GKYL_GK_FIELD_EM; + // Ensure that if any species is electromagnetic, the field is electromagnetic. + for (int i=0; inum_species; ++i) { + struct gk_species *s = &app->species[i]; + f->is_em = f->is_em || (s->info.collisionless.type == GKYL_GK_COLLISIONLESS_EM); + } + if (f->is_em) { + assert(f->info.mu0 > 0.0); + f->step_apar = gk_field_step_apar_enabled; + f->em_combine_func = gk_field_combine_enabled; + f->em_copy_func = gk_field_copy_range_enabled; + } else { + f->step_apar = gk_field_step_apar_disabled; + f->em_combine_func = gk_field_combine_disabled; + f->em_copy_func = gk_field_copy_range_disabled; + } + f->calc_init_apar = f->info.calc_init_apar; f->calc_init_field = !f->info.zero_init_field; f->update_field = !f->info.is_static; @@ -323,6 +501,46 @@ gk_field_rhs(gkyl_gyrokinetic_app *app, struct gk_field *field) app->stat.field_phi_solve_tm += gkyl_time_diff_now_sec(wst); } +void +gk_field_em_rhs(gkyl_gyrokinetic_app *app, struct gk_field *field, const struct gkyl_array *f_in[], struct gkyl_array *rhs_in[]) +{ + // Compute Apardot through Ohm's law. + struct timespec wst = gkyl_wall_clock(); + field->em_rhs_func(app, field, f_in, rhs_in); + app->stat.field_tm += gkyl_time_diff_now_sec(wst); +} + +void gk_field_calc_apar_ic(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *out) +{ + struct timespec wst = gkyl_wall_clock(); + field->ampere_solve(app, field, out); + // Smooth Apar after solving Ampere's law. + gk_field_fem_projection_par(app, field, out, out); + app->stat.field_apar_solve_tm += gkyl_time_diff_now_sec(wst); +} + +void gk_field_step_apar(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array* out, double a, const struct gkyl_array* inp) +{ + struct timespec wst = gkyl_wall_clock(); + field->step_apar(app, field, out, a, inp); + app->stat.field_apar_solve_tm += gkyl_time_diff_now_sec(wst); +} + +void +gk_field_em_combine(struct gk_field *field, struct gkyl_array *out, double c1, + const struct gkyl_array *arr1, double c2, const struct gkyl_array *arr2, + const struct gkyl_range *rng) +{ + field->em_combine_func(out, c1, arr1, c2, arr2, rng); +} + +void +gk_field_em_copy_range(struct gk_field *field, struct gkyl_array *out, + const struct gkyl_array *inp, const struct gkyl_range *range) +{ + field->em_copy_func(out, inp, range); +} + void gk_field_calc_energy(gkyl_gyrokinetic_app *app, double tm, const struct gk_field *field) { @@ -337,6 +555,12 @@ gk_field_calc_energy_dt(gkyl_gyrokinetic_app *app, const struct gk_field *field, field->calc_energy_dt_func(app, field, dt, energy_reduced); } +void +gk_field_calc_apar_energy_dt(gkyl_gyrokinetic_app *app, const struct gk_field *field, double dt, double *energy_reduced) +{ + field->calc_apar_energy_dt_func(app, field, dt, energy_reduced); +} + void gk_field_accumulate_rho_c_adiabatic(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gk_species *s, struct gkyl_array **bflux) { @@ -372,6 +596,54 @@ gk_field_accumulate_rho_c(gkyl_gyrokinetic_app *app, struct gk_field *field, app->stat.field_phi_rhs_tm += gkyl_time_diff_now_sec(wst); } +void +gk_field_accumulate_current_dens(gkyl_gyrokinetic_app *app, struct gk_field *field, + const struct gkyl_array *fin[]) +{ + struct timespec wst = gkyl_wall_clock(); + gkyl_array_clear(field->currentDens, 0.0); + for (int i=0; inum_species; ++i) { + struct gk_species *s = &app->species[i]; + gk_species_moment_calc(&s->m1, s->local, app->local, fin[i]); + s->gyroaverage(app, s, s->m1.marr, s->m1_gyroavg); + gkyl_array_accumulate_range(field->currentDens, s->info.charge, s->m1_gyroavg, &app->local); + } + app->stat.field_apar_rhs_tm += gkyl_time_diff_now_sec(wst); +} + +void +gk_field_accumulate_current_dens_dot(gkyl_gyrokinetic_app *app, struct gk_field *field, + struct gkyl_array *rhs_in[]) +{ + struct timespec wst = gkyl_wall_clock(); + gkyl_array_clear(field->currentDensdot, 0.0); + for (int i=0; inum_species; ++i) { + struct gk_species *s = &app->species[i]; + gk_species_moment_calc(&s->m1, s->local, app->local, rhs_in[i]); + s->gyroaverage(app, s, s->m1.marr, s->m1_gyroavg); + gkyl_array_accumulate_range(field->currentDensdot, s->info.charge, s->m1_gyroavg, &app->local); + } + app->stat.field_apar_rhs_tm += gkyl_time_diff_now_sec(wst); +} + +void +gk_field_accumulate_ohms_kSq(gkyl_gyrokinetic_app *app, struct gk_field *field, + const struct gkyl_array *fin[]) +{ + struct timespec wst = gkyl_wall_clock(); + gkyl_array_clear(field->dApartdtSlvr_kSq, 0.0); + for (int i=0; inum_species; ++i) { + struct gk_species *s = &app->species[i]; + gk_species_moment_calc(&s->m0, s->local, app->local, fin[i]); + // Gyroaverage the density if needed. + s->gyroaverage(app, s, s->m0.marr, s->m0_gyroavg); + // Use m0 to update also update the kSq matrix for the Ohm's law solver. + double fac = -s->info.charge*s->info.charge/s->info.mass; + gkyl_array_accumulate_range(field->dApartdtSlvr_kSq, fac, s->m0_gyroavg, &app->local); + } + app->stat.field_apar_rhs_tm += gkyl_time_diff_now_sec(wst); +} + void gk_field_fem_projection_par(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *arr_dg, struct gkyl_array *arr_fem) { diff --git a/gyrokinetic/apps/gk_field_1x.c b/gyrokinetic/apps/gk_field_1x.c index 2d91e55a4e..d5bb6be72b 100644 --- a/gyrokinetic/apps/gk_field_1x.c +++ b/gyrokinetic/apps/gk_field_1x.c @@ -19,6 +19,61 @@ gk_field_rhs_phi_1x(struct gkyl_gyrokinetic_app *app, struct gk_field *field) gk_field_fem_projection_par(app, field, field->rho_c, field->phi_smooth); } +static void +gk_field_ohm_solve_1x(struct gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *out){ + struct timespec wst = gkyl_wall_clock(); + + // Compute the LHS factor (= k_perp^2/mu_0 + sum_s q_s^2 n_s/m_s) + // gkyl_array_set(field->dApartdtSlvr_lhs_factor, 1.0, field->dApartdtSlvr_kSq); + gkyl_array_clear(field->dApartdtSlvr_lhs_factor, 0.0); + gkyl_array_accumulate_range(field->dApartdtSlvr_lhs_factor,-1.0, field->dApartdtSlvr_kSq, &app->local); + gkyl_array_accumulate_range(field->dApartdtSlvr_lhs_factor, 1.0, field->lapWeightAmpere, &app->local); + + // Weak division method dApar/dt = sum_s q_s int dv vpar d/dt(F_s) / ( (k_perp^2/mu_0 + sum_s q_s^2/m_s int dv F_s) ) + gkyl_dg_div_op_range(field->div_mem, &app->basis, 0, out, 0, field->currentDensdot, + 0, field->dApartdtSlvr_lhs_factor, &app->local); + + app->stat.field_apar_solve_tm += gkyl_time_diff_now_sec(wst); + +} + +static void +gk_field_ampere_solve_1x_enabled(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *out){ + struct timespec wst = gkyl_wall_clock(); + + // Weak division method Apar = sum_s q_s int dv vpar F_s / (k_perp^2/mu_0) + gkyl_dg_div_op_range(field->div_mem, &app->basis, 0, out, 0, field->currentDens, + 0, field->lapWeightAmpere, &app->local); + + app->stat.field_apar_solve_tm += gkyl_time_diff_now_sec(wst); +} + +static void +gk_field_ampere_solve_1x_none(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *out){ + // Do nothing. +} + +static void +gk_field_em_rhs_enabled(gkyl_gyrokinetic_app *app, struct gk_field *field, const struct gkyl_array *f_in[], struct gkyl_array *rhs_in[]) +{ + gk_field_accumulate_current_dens_dot(app, field, rhs_in); + gk_field_accumulate_ohms_kSq(app, field, f_in); + gk_field_ohm_solve_1x(app, field, field->apardot); +} + +static void +gk_field_em_rhs_none(gkyl_gyrokinetic_app *app, struct gk_field *field, const struct gkyl_array *f_in[], struct gkyl_array *rhs_in[]) +{ + // Do nothing. +} + +static void +gk_field_fem_projection_par_none(gkyl_gyrokinetic_app *app, struct gk_field *field, + struct gkyl_array *arr_dg, struct gkyl_array *arr_fem) +{ + // Do nothing. +} + static void gk_field_fem_release_1x(const gkyl_gyrokinetic_app *app, struct gk_field *f) { @@ -26,10 +81,26 @@ gk_field_fem_release_1x(const gkyl_gyrokinetic_app *app, struct gk_field *f) gkyl_array_release(f->rho_c_global_dg); gkyl_array_release(f->phi_smooth); gkyl_array_release(f->phi_fem); - - if (f->gkfield_id == GKYL_GK_FIELD_EM) { - gkyl_array_release(f->apar_fem); - gkyl_array_release(f->apardot_fem); + gkyl_array_release(f->apar); + gkyl_array_release(f->apar_curr); + gkyl_array_release(f->apar1); + gkyl_array_release(f->aparnew); + gkyl_array_release(f->apardot); + gkyl_array_release(f->amperesol); + + if (f->is_em) { + gkyl_array_release(f->currentDens); + gkyl_array_release(f->currentDensdot); + gkyl_array_release(f->currentDens_global); + gkyl_array_release(f->dApartdtSlvr_lhs_factor); + gkyl_array_release(f->lapWeightAmpere); + gkyl_array_release(f->dApartdtSlvr_kSq); + gkyl_dg_bin_op_mem_release(f->div_mem); + if (app->use_gpu) { + gkyl_array_release(f->apar_host); + gkyl_array_release(f->apardot_host); + gkyl_array_release(f->amperesol_host); + } } if (app->use_gpu) { @@ -56,11 +127,46 @@ gk_field_fem_new_1x(struct gkyl_gyrokinetic_app *app, struct gk_field *f) // Allocate arrays for electrostatic potential. f->phi_fem = mkarr(app->use_gpu, app->basis.num_basis, app->global_ext.volume); f->phi_smooth = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->apar = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->apar_curr = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->apar1 = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->aparnew = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->apardot = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->amperesol = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + + // Allocate additional arrays for EM case. + if (f->is_em) { + + f->apar_host = f->apar; + f->apardot_host = f->apardot; + f->amperesol_host = f->amperesol; + if (app->use_gpu) { + f->apar_host = mkarr(false, app->basis.num_basis, app->local_ext.volume); + f->apardot_host = mkarr(false, app->basis.num_basis, app->local_ext.volume); + f->amperesol_host = mkarr(false, app->basis.num_basis, app->local_ext.volume); + } + + f->currentDens = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->currentDensdot = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->lapWeightAmpere = mkarr(app->use_gpu, (2*(app->cdim/3)+1)*app->basis.num_basis, app->local_ext.volume); + f->dApartdtSlvr_kSq = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + + f->currentDens_global = mkarr(app->use_gpu, app->basis.num_basis, app->global_ext.volume); + f->dApartdtSlvr_lhs_factor = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->div_mem = app->use_gpu? gkyl_dg_bin_op_mem_cu_dev_new(app->local.volume, app->basis.num_basis) + : gkyl_dg_bin_op_mem_new(app->local.volume, app->basis.num_basis); + + // Need to set weight to kperpsq*polarizationWeight for use in potential smoothing. + gkyl_array_copy(f->lapWeightAmpere, app->gk_geom->geo_int.jacobgeo); + gkyl_array_scale(f->lapWeightAmpere, f->info.kperpSq/f->info.mu0); + + f->fem_parproj_ampere_bc = GKYL_FEM_PARPROJ_NONE; + for (int d=0; dnum_periodic_dir; ++d) + if (app->periodic_dirs[d] == app->cdim-1) f->fem_parproj_ampere_bc = GKYL_FEM_PARPROJ_PERIODIC; - // Allocate electromagnetic arrays if needed. - if (f->gkfield_id == GKYL_GK_FIELD_EM) { - f->apar_fem = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); - f->apardot_fem = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + assert(f->info.mu0 > 0.0); + f->apar_energy_fac_1d = 0.5/f->info.mu0 * f->info.kperpSq; + f->apar_energy_fac_1d *= -1.0; // the -1 is to be consistent with ES energy. } // Allocate phi_host for I/O. @@ -69,7 +175,16 @@ gk_field_fem_new_1x(struct gkyl_gyrokinetic_app *app, struct gk_field *f) f->phi_host = mkarr(false, app->basis.num_basis, app->local_ext.volume); } + // Set function pointers. f->rhs_phi_func = gk_field_rhs_phi_1x; + if (f->is_em) { + f->em_rhs_func = f->info.is_apar_static ? gk_field_em_rhs_none : gk_field_em_rhs_enabled; + f->ampere_solve = gk_field_ampere_solve_1x_enabled; + f->fem_projection_par_apar_func = gk_field_fem_projection_par_none; + } else { + f->em_rhs_func = gk_field_em_rhs_none; + f->ampere_solve = gk_field_ampere_solve_1x_none; + } // Allocate array for the polarization weight times geometric coefficients. f->epsilon = mkarr(app->use_gpu, (2*(app->cdim/3)+1)*app->basis.num_basis, app->local_ext.volume); diff --git a/gyrokinetic/apps/gk_field_2x3x.c b/gyrokinetic/apps/gk_field_2x3x.c index b8cb19dcf0..f3f40bda7a 100644 --- a/gyrokinetic/apps/gk_field_2x3x.c +++ b/gyrokinetic/apps/gk_field_2x3x.c @@ -7,11 +7,19 @@ #include #include #include +#include #include #include #include +static void +gk_field_fem_projection_par_none(gkyl_gyrokinetic_app *app, struct gk_field *field, + struct gkyl_array *arr_dg, struct gkyl_array *arr_fem) +{ + // Do nothing. +} + static void gk_field_fem_projection_par_rho_ts_2x(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *arr_dg, struct gkyl_array *arr_fem) @@ -412,6 +420,72 @@ gk_field_rhs_poisson_perp_2x3x(struct gkyl_gyrokinetic_app *app, struct gk_field field->invert_flr(app, field, field->phi_smooth); } +static void +gk_field_ohm_solve(struct gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *out){ + struct timespec wst = gkyl_wall_clock(); + + gkyl_fem_poisson_perp_update_lhs(field->fem_apardot_solver, field->lapWeightAmpere, field->dApartdtSlvr_kSq); + gkyl_fem_poisson_perp_set_rhs(field->fem_apardot_solver, field->currentDensdot); + gkyl_fem_poisson_perp_solve(field->fem_apardot_solver, out); + + field->invert_flr(app, field, field->apardot); + + field->remove_em_zonal_func(app, field, field->apardot); + + app->stat.field_apar_solve_tm += gkyl_time_diff_now_sec(wst); +} + +static void +gk_field_ampere_solve_enabled(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *out){ + struct timespec wst = gkyl_wall_clock(); + + gkyl_fem_poisson_perp_set_rhs(field->fem_apar_solver, field->currentDens); + gkyl_fem_poisson_perp_solve(field->fem_apar_solver, out); + + // Smooth along z. + // gk_field_fem_projection_par(app, field, field->apar, field->apar_smooth_aux); + // gkyl_array_copy_range(field->apar, field->apar_smooth_aux, &app->local_ext); + + field->invert_flr(app, field, out); + + app->stat.field_apar_solve_tm += gkyl_time_diff_now_sec(wst); +} + +static void +gk_field_ampere_solve_none(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *out){ + // Do nothing. +} + +static void +gk_field_em_rhs_enabled(gkyl_gyrokinetic_app *app, struct gk_field *field, const struct gkyl_array *f_in[], struct gkyl_array *rhs_in[]) +{ + gk_field_accumulate_current_dens_dot(app, field, rhs_in); + gk_field_accumulate_ohms_kSq(app, field, f_in); + gk_field_ohm_solve(app, field, field->apardot); +} + +static void +gk_field_em_rhs_none(gkyl_gyrokinetic_app *app, struct gk_field *field, const struct gkyl_array *f_in[], struct gkyl_array *rhs_in[]) +{ + // Do nothing. +} + +static void +gk_field_remove_em_zonal_enabled(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *field_array) +{ + gkyl_array_average_advance(field->fs_avg_op, field_array, field->fs_avg); + // Hack the conf to phase space dg op to do the 1x substraction over the entire conf space. + gkyl_dg_mul_conf_phase_op_accumulate_range( &field->fs_avg_basis, &app->basis, + field_array, -1.0, field->fs_avg, field->fs_avg_conf_one, &field->fs_avg_range, &app->local); +} + +static void +gk_field_em_zonal_component_none(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *field_array) +{ + // Do nothing. +} + + static void gk_field_fem_release_2x3x(const gkyl_gyrokinetic_app *app, struct gk_field *f) { @@ -420,10 +494,37 @@ gk_field_fem_release_2x3x(const gkyl_gyrokinetic_app *app, struct gk_field *f) gkyl_array_release(f->rho_c_global_smooth); gkyl_array_release(f->phi_fem); gkyl_array_release(f->phi_smooth); - - if (f->gkfield_id == GKYL_GK_FIELD_EM) { - gkyl_array_release(f->apar_fem); - gkyl_array_release(f->apardot_fem); + gkyl_array_release(f->apar); + gkyl_array_release(f->apardot); + gkyl_array_release(f->amperesol); + gkyl_array_release(f->apar_curr); + gkyl_array_release(f->apar1); + gkyl_array_release(f->aparnew); + + if (f->is_em) { + gkyl_array_release(f->apar_smooth_aux); + gkyl_array_release(f->currentDens); + gkyl_array_release(f->currentDensdot); + gkyl_array_release(f->lapWeightAmpere); + gkyl_array_release(f->dApartdtSlvr_kSq); + gkyl_fem_parproj_release(f->fem_apar_parproj); + gkyl_fem_poisson_perp_release(f->fem_apar_solver); + gkyl_fem_poisson_perp_release(f->fem_apardot_solver); + if (app->use_gpu) { + gkyl_array_release(f->apar_host); + gkyl_array_release(f->apardot_host); + gkyl_array_release(f->amperesol_host); + } + if (f->info.remove_em_zonal) { + gkyl_array_average_release(f->fs_avg_op); + gkyl_array_release(f->fs_avg); + gkyl_array_release(f->fs_avg_conf_one); + if (app->use_gpu) { + gkyl_cu_free(f->fs_avg_subdir); + } else { + gkyl_free(f->fs_avg_subdir); + } + } } if (app->use_gpu) { @@ -490,11 +591,29 @@ gk_field_fem_new_2x3x(struct gkyl_gyrokinetic_app *app, struct gk_field *f) // Allocate arrays for electrostatic potential. f->phi_fem = mkarr(app->use_gpu, app->basis.num_basis, app->global_ext.volume); f->phi_smooth = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->apar = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->apar_curr = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->apar1 = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->aparnew = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->apardot = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->amperesol = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + + // Setup electromagnetic variables if needed. + if (f->is_em) { + f->apar_host = f->apar; + f->apardot_host = f->apardot; + f->amperesol_host = f->amperesol; + if (app->use_gpu) { + f->apar_host = mkarr(false, app->basis.num_basis, app->local_ext.volume); + f->apardot_host = mkarr(false, app->basis.num_basis, app->local_ext.volume); + f->amperesol_host = mkarr(false, app->basis.num_basis, app->local_ext.volume); + } - // Allocate electromagnetic arrays if needed. - if (f->gkfield_id == GKYL_GK_FIELD_EM) { - f->apar_fem = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); - f->apardot_fem = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->apar_smooth_aux = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->currentDens = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->currentDensdot = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + f->lapWeightAmpere = mkarr(app->use_gpu, (2*(app->cdim/3)+1)*app->basis.num_basis, app->local_ext.volume); + f->dApartdtSlvr_kSq = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); } // Allocate phi_host for I/O. @@ -525,6 +644,14 @@ gk_field_fem_new_2x3x(struct gkyl_gyrokinetic_app *app, struct gk_field *f) gkyl_array_set_offset(f->epsilon, polarization_weight, Jgij[i], i*app->basis.num_basis); } + if (f->is_em) { + // Compute the weights in front of the laplacian operator (metric x 1/mu0) + for (int i=0; icdim-2/app->cdim; i++) { + gkyl_array_set_offset(f->lapWeightAmpere, 1.0/f->info.mu0, Jgij[i], i*app->basis.num_basis); + } + gkyl_array_set(f->apar_energy_fac, -0.5, f->lapWeightAmpere); + } + bool bc_is_np[GKYL_MAX_CDIM]; // Is the BC in this direction non-periodic? for (int d=0; dcdim; ++d) bc_is_np[d] = true; for (int d=0; dnum_periodic_dir; ++d) { @@ -608,6 +735,93 @@ gk_field_fem_new_2x3x(struct gkyl_gyrokinetic_app *app, struct gk_field *f) f->fem_projection_par_rho_func = gk_field_fem_projection_par; f->fem_projection_par_phi_func = gk_field_fem_projection_par; + // Setup EM solvers. + f->ampere_solve = gk_field_ampere_solve_none; + f->em_rhs_func = gk_field_em_rhs_none; + f->remove_em_zonal_func = gk_field_em_zonal_component_none; + f->fem_projection_par_apar_func = gk_field_fem_projection_par_none; + if (f->is_em) { + // Translate input file BCs into Ampere BCs. + for (int d=0; dcdim-1; d++) { + if (bc_is_np[d]) { + struct gkyl_gyrokinetic_bc *bc_lo = gk_fetch_bc_with_dir_edge(f->info.ampere_bcs, 2*app->cdim, d, GKYL_LOWER_EDGE); + if (bc_lo != 0) { + f->ampere_bcs.lo_type[d] = gkyl_gyrokinetic_translate_poisson_bc_type(bc_lo->type); + for (int i=0; i<3; i++) + f->ampere_bcs.lo_value[d].v[i] = bc_lo->value[i]; + } + + struct gkyl_gyrokinetic_bc *bc_up = gk_fetch_bc_with_dir_edge(f->info.ampere_bcs, 2*app->cdim, d, GKYL_UPPER_EDGE); + if (bc_up != 0) { + f->ampere_bcs.up_type[d] = gkyl_gyrokinetic_translate_poisson_bc_type(bc_up->type); + for (int i=0; i<3; i++) + f->ampere_bcs.up_value[d].v[i] = bc_up->value[i]; + } + } else { + f->ampere_bcs.lo_type[d] = gkyl_gyrokinetic_translate_poisson_bc_type(GKYL_BC_GK_FIELD_PERIODIC); + f->ampere_bcs.up_type[d] = gkyl_gyrokinetic_translate_poisson_bc_type(GKYL_BC_GK_FIELD_PERIODIC); + } + } + // FEM solver for Ampere equation (solved at IC only). + f->fem_apar_solver = gkyl_fem_poisson_perp_new(&app->local, &app->grid, app->basis, + &f->ampere_bcs, 0, f->lapWeightAmpere, NULL, app->use_gpu); + // FEM solver for Ohm's law (evolves d(Apart)/dt). + f->fem_apardot_solver = gkyl_fem_poisson_perp_new(&app->local, &app->grid, app->basis, + &f->ampere_bcs, 0, f->lapWeightAmpere, f->dApartdtSlvr_kSq, app->use_gpu); + + // We have to advance the updater once to be able to update the kSq later. + gkyl_fem_poisson_perp_set_rhs(f->fem_apardot_solver, f->currentDensdot); + gkyl_fem_poisson_perp_solve(f->fem_apardot_solver, f->apardot); + + // FEM smoother for Aparallel. + f->fem_parproj_ampere_bc = GKYL_FEM_PARPROJ_NONE; + f->fem_apar_parproj = gkyl_fem_parproj_new(&app->global, &app->grid, + &app->basis, f->fem_parproj_ampere_bc, 0, 0, 0, app->use_gpu); + + f->ampere_solve = gk_field_ampere_solve_enabled; + f->em_rhs_func = f->info.is_apar_static ? gk_field_em_rhs_none : gk_field_em_rhs_enabled; + + if (f->info.remove_em_zonal) { + f->remove_em_zonal_func = gk_field_remove_em_zonal_enabled; + // define the reduced range and basis for averaging along x only + struct gkyl_rect_grid grid_x; + gkyl_rect_grid_init(&grid_x, 1, &app->grid.lower[0], &app->grid.upper[0], &app->grid.cells[0]); + int ghost_x[] = {1}; + gkyl_create_grid_ranges(&grid_x, ghost_x, &f->fs_avg_range_ext, &f->fs_avg_range); + gkyl_cart_modal_serendip(&f->fs_avg_basis, 1, app->basis.poly_order); + // create and run the array average updater to average y and z + // Not that in 2x, it will only average over z. + int avg_dim_yz[] = {0,1,1}; + struct gkyl_array_average_inp inp_avg_xyz_to_x = { + .grid = &app->grid, + .basis = app->basis, + .basis_avg = f->fs_avg_basis, + .local = &app->local, + .local_avg = &f->fs_avg_range, + .local_avg_ext = &f->fs_avg_range_ext, + .weight = app->gk_geom->geo_int.jacobgeo, + .avg_dim = avg_dim_yz, + .use_gpu = app->use_gpu + }; + int fs_avg_subdir[GKYL_MAX_CDIM]; + fs_avg_subdir[0] = 0; // Average along x only, so subdir is just 0. + if (app->use_gpu) { + f->fs_avg_subdir = gkyl_cu_malloc(GKYL_MAX_CDIM*sizeof(int)); + gkyl_cu_memcpy(f->fs_avg_subdir, fs_avg_subdir, GKYL_MAX_CDIM*sizeof(int), GKYL_CU_MEMCPY_H2D); + } else { + f->fs_avg_subdir = gkyl_malloc(GKYL_MAX_CDIM*sizeof(int)); + for (int i=0; ifs_avg_subdir[i] = fs_avg_subdir[i]; + } + f->fs_avg_op = gkyl_array_average_inew(&inp_avg_xyz_to_x); + f->fs_avg = mkarr(app->use_gpu, f->fs_avg_basis.num_basis, f->fs_avg_range_ext.volume); + f->fs_avg_conf_one = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + double dg_norm = pow(sqrt(2.0), app->basis.ndim); + gkyl_array_shiftc_range(f->fs_avg_conf_one, dg_norm, 0, &app->local); + } + f->fem_projection_par_apar_func = f->fem_projection_par_phi_func; + } + // Updater for field energy calculation. gkyl_array_set(f->es_energy_fac, 0.5, f->epsilon); f->calc_em_energy = gkyl_array_integrate_new(&app->grid, &app->basis, diff --git a/gyrokinetic/apps/gk_multib_field.c b/gyrokinetic/apps/gk_multib_field.c index 384da3fd15..a250e2d6e1 100644 --- a/gyrokinetic/apps/gk_multib_field.c +++ b/gyrokinetic/apps/gk_multib_field.c @@ -649,7 +649,7 @@ gk_multib_field_new(const struct gkyl_gyrokinetic_multib *mbinp, struct gkyl_gyr struct gk_multib_field *mbf = gkyl_malloc(sizeof(struct gk_multib_field)); mbf->info = mbinp->field; - mbf->gkfield_id = mbf->info.gkfield_id? mbf->info.gkfield_id : GKYL_GK_FIELD_ES; + mbf->gkfield_id = mbf->info.gkfield_id? mbf->info.gkfield_id : GKYL_GK_FIELD; mbf->num_local_blocks = mbapp->num_local_blocks; mbf->cdim = mbapp->block_topo->ndim; mbf->half_domain = mbf->info.half_domain ? mbf->info.half_domain : false; diff --git a/gyrokinetic/apps/gk_species.c b/gyrokinetic/apps/gk_species.c index 873236eda2..cc0ed3d3e0 100644 --- a/gyrokinetic/apps/gk_species.c +++ b/gyrokinetic/apps/gk_species.c @@ -77,7 +77,57 @@ gk_species_omegaH_dt(gkyl_gyrokinetic_app *app, struct gk_species *gks, const st } } +static void +gk_species_update_bflux_dynamic(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms) +{ + // Compute and store (in the ghost cell of rhs) the boundary fluxes. + gk_species_bflux_rhs(app, &species->bflux, fin, rhs); + + // Compute diagnostic moments of the boundary fluxes. + gk_species_bflux_calc_moms(app, &species->bflux, rhs, bflux_moms); +} + +static double +gk_species_get_cfl_dynamic(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms) +{ + + // Multiply CFL rate by the df/dt multiplier. + gk_species_fdot_multiplier_advance_times_cfl(app, species, &species->fdot_mult, + app->field->phi_smooth, fin, species->cflrate); + + // Reduce the CFL frequency anc compute stable dt needed by this species. + app->stat.n_species_omega_cfl +=1; + struct timespec tm = gkyl_wall_clock(); + gkyl_array_reduce_range(species->omega_cfl, species->cflrate, GKYL_MAX, &species->local); + + double omega_cfl_ho[1]; + if (app->use_gpu) { + gkyl_cu_memcpy(omega_cfl_ho, species->omega_cfl, sizeof(double), GKYL_CU_MEMCPY_D2H); + } + else { + omega_cfl_ho[0] = species->omega_cfl[0]; + } + double dt_out = app->cfl/omega_cfl_ho[0]; + + // Enforce the omega_H constraint on dt. + double dt_omegaH = gk_species_omegaH_dt(app, species, fin); + dt_out = fmin(dt_out, dt_omegaH); + + app->stat.species_omega_cfl_tm += gkyl_time_diff_now_sec(tm); + return dt_out; +} + static double +gk_species_get_cfl_static(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms) +{ + double omega_cfl = 1/DBL_MAX; + return app->cfl/omega_cfl; +} + +static void gk_species_rhs_dynamic(gkyl_gyrokinetic_app *app, struct gk_species *species, const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms) { @@ -114,40 +164,14 @@ gk_species_rhs_dynamic(gkyl_gyrokinetic_app *app, struct gk_species *species, // BGK source. gk_species_source_bgk_rhs(app, species, &species->bgk_src, fin, rhs); +} - // Compute and store (in the ghost cell of rhs and in an array in bflux) the boundary fluxes. - gk_species_bflux_rhs(app, &species->bflux, fin, rhs); - - // Compute moments of the boundary fluxes. - gk_species_bflux_calc_moms(app, &species->bflux, rhs, bflux_moms); - - // Multiply CFL rate by the df/dt multiplier. - gk_species_fdot_multiplier_advance_times_cfl(app, species, &species->fdot_mult, - app->field->phi_smooth, fin, species->cflrate); - - // Reduce the CFL frequency and compute stable dt needed by this species. - app->stat.n_species_omega_cfl +=1; - struct timespec tm = gkyl_wall_clock(); - gkyl_array_reduce_range(species->omega_cfl, species->cflrate, GKYL_MAX, &species->local); - - double omega_cfl_ho[1]; - if (app->use_gpu) { - gkyl_cu_memcpy(omega_cfl_ho, species->omega_cfl, sizeof(double), GKYL_CU_MEMCPY_D2H); - } - else { - omega_cfl_ho[0] = species->omega_cfl[0]; - } - - double dt_out = app->cfl/omega_cfl_ho[0]; - - // Apply omega_H constraint on dt. - species->dt_omegaH = gk_species_omegaH_dt(app, species, fin); - dt_out = fmin(dt_out, species->dt_omegaH); - - species->dt_cfl_global_ho = dt_out; - - app->stat.species_omega_cfl_tm += gkyl_time_diff_now_sec(tm); - return dt_out; +static void +gk_species_rhs_em_complete_dynamic(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms) +{ + // Collisionless terms. + gk_species_collisionless_rhs_em_complete(app, species, &species->collisionless, fin, rhs); } static double @@ -180,12 +204,11 @@ gk_species_rhs_implicit_dynamic(gkyl_gyrokinetic_app *app, struct gk_species *sp return app->cfl/omega_cfl; } -static double +static void gk_species_rhs_static(gkyl_gyrokinetic_app *app, struct gk_species *species, const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms) { - double omega_cfl = 1/DBL_MAX; - return app->cfl/omega_cfl; + // Do nothing. } static double @@ -1036,7 +1059,14 @@ gk_species_init_dynamic(struct gkyl_gk *gk_app_inp, struct gkyl_gyrokinetic_app // Set function pointers. gks->rhs_func = gk_species_rhs_dynamic; + if (gks->info.collisionless.type == GKYL_GK_COLLISIONLESS_EM){ + gks->rhs_em_complete_func = gk_species_rhs_em_complete_dynamic; + } else { + gks->rhs_em_complete_func = gk_species_rhs_static; + } gks->rhs_implicit_func = gk_species_rhs_implicit_dynamic; + gks->bflux_update = gk_species_update_bflux_dynamic; + gks->get_cfl = gk_species_get_cfl_dynamic; gks->bc_func = gk_species_apply_bc_dynamic; gks->release_func = gk_species_release_dynamic; gks->step_f_func = gk_species_step_f_dynamic; @@ -1071,7 +1101,10 @@ gk_species_init_static(struct gkyl_gk *gk_app_inp, struct gkyl_gyrokinetic_app * // Set function pointers. gks->rhs_func = gk_species_rhs_static; + gks->rhs_em_complete_func = gk_species_rhs_static; gks->rhs_implicit_func = gk_species_rhs_implicit_static; + gks->bflux_update = gk_species_rhs_static; + gks->get_cfl = gk_species_get_cfl_static; gks->bc_func = gk_species_apply_bc_static; gks->release_func = gk_species_release_static; gks->step_f_func = gk_species_step_f_static; @@ -1549,6 +1582,8 @@ gk_species_init(struct gkyl_gk *gk_app_inp, struct gkyl_gyrokinetic_app *app, st // Allocate data for density (for charge density or upar calculation). gk_species_moment_init(app, gks, &gks->m0, GKYL_F_MOMENT_M0, false); + // To compute current density for Ampere's law and current dot for Ohm's law. + gk_species_moment_init(app, gks, &gks->m1, GKYL_F_MOMENT_M1, false); if (gks->info.flr.type) { // Create operator needed for FLR effects. @@ -1557,6 +1592,7 @@ gk_species_init(struct gkyl_gk *gk_app_inp, struct gkyl_gyrokinetic_app *app, st gks->gyroaverage = gk_species_gyroaverage_enabled; // Gyroaveraged M0 and phi. gks->m0_gyroavg = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); + gks->m1_gyroavg = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); gks->gyro_phi = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); double gyroradius_bmag = gks->info.flr.bmag ? gks->info.flr.bmag : app->bmag_ref; @@ -1599,9 +1635,18 @@ gk_species_init(struct gkyl_gk *gk_app_inp, struct gkyl_gyrokinetic_app *app, st else { gks->gyroaverage = gk_species_gyroaverage_disabled; gks->m0_gyroavg = gkyl_array_acquire(gks->m0.marr); + gks->m1_gyroavg = gkyl_array_acquire(gks->m1.marr); gks->gyro_phi = gkyl_array_acquire(app->field->phi_smooth); } + // We do not have FLR effects for EM yet. + if (gks->info.collisionless.type == GKYL_GK_COLLISIONLESS_NONE + || gks->info.collisionless.type == GKYL_GK_COLLISIONLESS_ES) + gks->gyro_apar = gkyl_array_acquire(app->field->apar); + else + gks->gyro_apar = gkyl_array_acquire(app->field->apar_curr); + gks->gyro_apardot = gkyl_array_acquire(app->field->apardot); + // Initialize the collisionless solver. gks->collisionless = (struct gk_collisionless) { }; gk_species_collisionless_init(app, gks, &gks->collisionless); @@ -1898,11 +1943,32 @@ gk_species_apply_ic_cross(gkyl_gyrokinetic_app *app, struct gk_species *gks_self gk_species_scaling_apply_ic_cross(app, gks_self, &gks_self->sca); } -double +void gk_species_rhs(gkyl_gyrokinetic_app *app, struct gk_species *species, const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms) { - return species->rhs_func(app, species, fin, rhs, bflux_moms); + species->rhs_func(app, species, fin, rhs, bflux_moms); +} + +void +gk_species_rhs_em_complete(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms) +{ + species->rhs_em_complete_func(app, species, fin, rhs, bflux_moms); +} + +void +gk_species_update_bflux(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms) +{ + species->bflux_update(app, species, fin, rhs, bflux_moms); +} + +double +gk_species_get_cfl(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms) +{ + return species->get_cfl(app, species, fin, rhs, bflux_moms); } double @@ -2025,6 +2091,7 @@ gk_species_release(const gkyl_gyrokinetic_app* app, const struct gk_species *gks // Release moment data. gk_species_moment_release(app, &gks->m0); + gk_species_moment_release(app, &gks->m1); for (int i=0; iinfo.num_diag_moments; ++i) { gk_species_moment_release(app, &gks->moms[i]); } @@ -2056,6 +2123,7 @@ gk_species_release(const gkyl_gyrokinetic_app* app, const struct gk_species *gks gk_species_lte_release(app, &gks->lte); gkyl_array_release(gks->m0_gyroavg); + gkyl_array_release(gks->m1_gyroavg); gkyl_array_release(gks->gyro_phi); if (gks->info.flr.type) { gkyl_array_release(gks->flr_rhoSqD2); @@ -2063,5 +2131,8 @@ gk_species_release(const gkyl_gyrokinetic_app* app, const struct gk_species *gks gkyl_deflated_fem_poisson_release(gks->flr_op); } + gkyl_array_release(gks->gyro_apar); + gkyl_array_release(gks->gyro_apardot); + gks->release_func(app, gks); } diff --git a/gyrokinetic/apps/gk_species_collisionless.c b/gyrokinetic/apps/gk_species_collisionless.c index 10fffe3592..767195e1cb 100644 --- a/gyrokinetic/apps/gk_species_collisionless.c +++ b/gyrokinetic/apps/gk_species_collisionless.c @@ -27,9 +27,20 @@ gk_species_collisionless_flux_enabled(gkyl_gyrokinetic_app *app, struct gk_speci // where they are not defined. gkyl_gk_collisionless_flux_surf(gkcls->surf_flux_op, &app->local, &species->local, &app->local_ext, &species->local_ext, - species->gyro_phi, fin, gkcls->flux_surf, species->cflrate); + species->gyro_phi, species->gyro_apar, species->gyro_apardot, fin, gkcls->flux_surf, species->cflrate); } +static void +gk_species_collisionless_flux_em_enabled(gkyl_gyrokinetic_app *app, struct gk_species *species, + struct gk_collisionless *gkcls, const struct gkyl_array *fin) +{ + // Compute the surface expansion of the phase space flux for ES + Apar contributions. + gkyl_gk_collisionless_flux_surf(gkcls->surf_flux_em_complete_op, + &app->local, &species->local, &app->local_ext, &species->local_ext, + species->gyro_phi, species->gyro_apar, species->gyro_apardot, fin, gkcls->flux_surf, species->cflrate); +} + + static void gk_species_collisionless_rhs_disabled(gkyl_gyrokinetic_app *app, struct gk_species *species, struct gk_collisionless *gkcls, const struct gkyl_array *fin, struct gkyl_array *rhs) @@ -52,6 +63,23 @@ gk_species_collisionless_rhs_enabled(gkyl_gyrokinetic_app *app, struct gk_specie app->stat.species_collisionless_tm += gkyl_time_diff_now_sec(wst); } +static void +gk_species_collisionless_rhs_em_complete_enabled(gkyl_gyrokinetic_app *app, struct gk_species *species, + struct gk_collisionless *gkcls, const struct gkyl_array *fin, struct gkyl_array *rhs) +{ + struct timespec wst = gkyl_wall_clock(); + + gkcls->flux_func_em_complete(app, species, gkcls, fin); + + gkyl_dg_updater_gyrokinetic_advance(gkcls->slvr_em_complete, &species->local, + fin, species->cflrate, rhs); + + // AH Note: I'm not sure we need this here. + gkcls->fdot_scaling(app, species, gkcls, rhs, species->cflrate, &species->local); + + app->stat.species_collisionless_tm += gkyl_time_diff_now_sec(wst); +} + static void gk_species_collisionless_passive_flux(gkyl_gyrokinetic_app *app, struct gk_species *species, struct gk_collisionless *gkcls, const struct gkyl_array *fin) @@ -201,11 +229,13 @@ gk_species_collisionless_init(struct gkyl_gyrokinetic_app *app, struct gk_specie struct gk_collisionless *gkcls) { gkcls->collisionless_id = gks->info.collisionless.type; + gkcls->no_by = gks->info.collisionless.no_by; gkcls->write_diagnostics = gks->info.collisionless.write_diagnostics; gkcls->write_diags_func = gk_species_collisionless_write_diags_disabled; gkcls->flux_func = gk_species_collisionless_flux_disabled; gkcls->rhs_func = gk_species_collisionless_rhs_disabled; + gkcls->rhs_em_complete_func = gk_species_collisionless_rhs_disabled; if (gkcls->collisionless_id) { @@ -252,31 +282,38 @@ gk_species_collisionless_init(struct gkyl_gyrokinetic_app *app, struct gk_specie gkcls->flux_surf = mkarr(app->use_gpu, cdim*surf_basis.num_basis + surf_vpar_basis.num_basis, gks->local_ext.volume); - if (gkcls->collisionless_id == GKYL_GK_COLLISIONLESS_EM_BPERP) { - // Parallel component of magnetic vector potential. - gkcls->apar = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); - gkcls->apardot = mkarr(app->use_gpu, app->basis.num_basis, app->local_ext.volume); - } - else { - gkcls->apar = gkyl_array_acquire(app->field->phi_smooth); // Not used. - gkcls->apardot = gkyl_array_acquire(app->field->phi_smooth); // Not used. - } - + bool complete_em = false; gkcls->surf_flux_op = gkyl_gk_collisionless_flux_new(&gks->grid, &app->basis, &gks->basis, gks->info.charge, gks->info.mass, - gkcls->collisionless_id, app->gk_geom, + gkcls->collisionless_id, gkcls->no_by, complete_em, app->gk_geom, app->dg_geom, app->gk_dg_geom, gks->vel_map, bctype_conf, app->use_gpu); struct gkyl_dg_gyrokinetic_auxfields aux_inp = { .flux_surf = gkcls->flux_surf, - .phi = gks->gyro_phi, .apar = gkcls->apar, .apardot = gkcls->apardot }; + .phi = gks->gyro_phi, .apar = gks->gyro_apar, .apardot = gks->gyro_apardot }; // Create solver. gkcls->slvr = gkyl_dg_updater_gyrokinetic_new(&gks->grid, &app->basis, &gks->basis, &app->local, &gks->local, is_zero_flux, gks->info.charge, gks->info.mass, - gkcls->collisionless_id, app->gk_geom, gks->vel_map, + gkcls->collisionless_id, gkcls->no_by, complete_em, app->gk_geom, gks->vel_map, &aux_inp, app->use_gpu); gkcls->flux_func = gk_species_collisionless_flux_enabled; gkcls->rhs_func = gk_species_collisionless_rhs_enabled; + + // Electromagnetic set up. + if (gkcls->collisionless_id == GKYL_GK_COLLISIONLESS_EM) { + // Set up ES + Apar contributions to flux and solver. + complete_em = true; + gkcls->surf_flux_em_complete_op = gkyl_gk_collisionless_flux_new(&gks->grid, &app->basis, &gks->basis, + gks->info.charge, gks->info.mass, gkcls->collisionless_id, gkcls->no_by, complete_em, app->gk_geom, + app->dg_geom, app->gk_dg_geom, gks->vel_map, bctype_conf, app->use_gpu); + gkcls->slvr_em_complete = gkyl_dg_updater_gyrokinetic_new(&gks->grid, &app->basis, &gks->basis, + &app->local, &gks->local, is_zero_flux, gks->info.charge, gks->info.mass, + gkcls->collisionless_id, gkcls->no_by, complete_em, app->gk_geom, gks->vel_map, + &aux_inp, app->use_gpu); + // Methods chosen at runtime. + gkcls->flux_func_em_complete = gk_species_collisionless_flux_em_enabled; + gkcls->rhs_em_complete_func = gk_species_collisionless_rhs_em_complete_enabled; + } } gkcls->scale_fac = 1.0; // Not used if scale_factor in input file is not given. @@ -304,9 +341,17 @@ void gk_species_collisionless_rhs(gkyl_gyrokinetic_app *app, struct gk_species *species, struct gk_collisionless *gkcls, const struct gkyl_array *fin, struct gkyl_array *rhs) { + // gkyl_array_clear(gkcls->flux_surf, 0.0); gkcls->rhs_func(app, species, gkcls, fin, rhs); } +void +gk_species_collisionless_rhs_em_complete(gkyl_gyrokinetic_app *app, struct gk_species *species, + struct gk_collisionless *gkcls, const struct gkyl_array *fin, struct gkyl_array *rhs) +{ + gkcls->rhs_em_complete_func(app, species, gkcls, fin, rhs); +} + void gk_species_collisionless_write_diags(gkyl_gyrokinetic_app* app, struct gk_species *gks, struct gk_collisionless *gkcls, double tm, int frame) @@ -327,12 +372,15 @@ gk_species_collisionless_release(const struct gkyl_gyrokinetic_app *app, const s gkyl_gk_collisionless_passive_flux_release(gkcls->passive_surf_flux_op); gkyl_dg_updater_gyrokinetic_passive_release(gkcls->passive_slvr); } else { - gkyl_array_release(gkcls->apar); - gkyl_array_release(gkcls->apardot); gkyl_gk_collisionless_flux_release(gkcls->surf_flux_op); gkyl_dg_updater_gyrokinetic_release(gkcls->slvr); } + if (gkcls->collisionless_id == GKYL_GK_COLLISIONLESS_EM) { + gkyl_gk_collisionless_flux_release(gkcls->surf_flux_em_complete_op); + gkyl_dg_updater_gyrokinetic_release(gkcls->slvr_em_complete); + } + if (gkcls->write_diagnostics) { gkyl_array_release(gkcls->flux_surf_ho); } diff --git a/gyrokinetic/apps/gkyl_gyrokinetic.h b/gyrokinetic/apps/gkyl_gyrokinetic.h index 1d137b0963..dfae3b6f86 100644 --- a/gyrokinetic/apps/gkyl_gyrokinetic.h +++ b/gyrokinetic/apps/gkyl_gyrokinetic.h @@ -98,6 +98,7 @@ struct gkyl_phase_diagnostics_inp { // Parameters for collisionless terms. struct gkyl_gyrokinetic_collisionless { enum gkyl_gk_collisionless_type type; // Type of collisionless terms. + bool no_by; // Whether to neglect the toroidal field (b_y=0) bool write_diagnostics; // Whether to output diagnostics. double scale_factor; // Factor multiplying collisionless terms (should be > 0). // Passive advection speeds in x, y, z (for GKYL_GK_COLLISIONLESS_PASSIVE). @@ -553,6 +554,7 @@ struct gkyl_gyrokinetic_field { enum gkyl_gkfield_id gkfield_id; bool is_static; // =true field does not change in time. bool zero_init_field; // =true doesn't compute the initial field. + bool calc_init_apar; // Whether to calculate the initial Apar from the initial condition of the distribution function. double polarization_bmag; // B factor in the polarization density. double kperpSq; // kperp^2 parameter for 1D field equations @@ -562,6 +564,12 @@ struct gkyl_gyrokinetic_field { struct gkyl_gyrokinetic_bc poisson_bcs[2*GKYL_MAX_CDIM]; + // parameters for EMGK + struct gkyl_gyrokinetic_bc ampere_bcs[2*GKYL_MAX_CDIM]; + double mu0; // Magnetic permeability of free space. + bool remove_em_zonal; // Whether to remove zonal component. + bool is_apar_static; // =true Apar at initial time is used for all time steps. + bool time_rate_diagnostics; // Writes the time rate of change of field energy. // Initial potential used to compute the total polarization density. @@ -694,7 +702,9 @@ struct gkyl_gyrokinetic_stat { double field_tm; // Time to compute fields. double field_phi_rhs_tm; // Time spent on poisson eqn RHS. - double field_phi_solve_tm; // Time spent to solve poisson eqn. + double field_phi_solve_tm; // Time spent to solve poisson eqn. + double field_apar_rhs_tm; // Time spent on parallel Ampere eqn RHS. + double field_apar_solve_tm; // Time spent to solve parallel Ampere eqn. double bc_tm; // Time to compute BCs. double species_bc_tm; // Time to compute species BCs. diff --git a/gyrokinetic/apps/gkyl_gyrokinetic_priv.h b/gyrokinetic/apps/gkyl_gyrokinetic_priv.h index e8d0955901..20f7be2475 100644 --- a/gyrokinetic/apps/gkyl_gyrokinetic_priv.h +++ b/gyrokinetic/apps/gkyl_gyrokinetic_priv.h @@ -278,6 +278,7 @@ struct gk_rad_drag { struct gk_collisionless { enum gkyl_gk_collisionless_type collisionless_id; // Type of collisionless terms. + bool no_by; // Whether to neglect the toroidal field (b_y=0). bool write_diagnostics; // Whether to write diagnostics out. double scale_fac; // Factor multiplying collisionless terms. @@ -287,11 +288,10 @@ struct gk_collisionless { struct { struct gkyl_array *flux_surf; // Array for surface phase space flux struct gkyl_array *flux_surf_ho; // Host array for surface phase space flux - struct gkyl_array *apar; // A_parallel. - struct gkyl_array *apardot; // d/dt A_parallel. - - struct gkyl_gk_collisionless_flux *surf_flux_op; // Collisionless fluxes (GK/EM cases). - gkyl_dg_updater_gyrokinetic *slvr; // Collisionless solver (GK/EM cases). + struct gkyl_gk_collisionless_flux *surf_flux_op; // Collisionless fluxes. + struct gkyl_gk_collisionless_flux *surf_flux_em_complete_op; // EM collisionless fluxes without Apardot contribution. + gkyl_dg_updater_gyrokinetic *slvr; // Collisionless solver. + gkyl_dg_updater_gyrokinetic *slvr_em_complete; // EM without Apardot contribution. // Passive advection (only for GKYL_GK_COLLISIONLESS_PASSIVE). struct gkyl_array *passive_speeds; // Conf-space passive speeds. @@ -302,6 +302,8 @@ struct gk_collisionless { // Methods chosen at runtime. void (*flux_func)(gkyl_gyrokinetic_app *app, struct gk_species *species, struct gk_collisionless *gkcls, const struct gkyl_array *fin); + void (*flux_func_em_complete)(gkyl_gyrokinetic_app *app, struct gk_species *species, + struct gk_collisionless *gkcls, const struct gkyl_array *fin); }; // Neutral (Vlasov) species ............................................ // struct { @@ -320,6 +322,8 @@ struct gk_collisionless { }; void (*rhs_func)(gkyl_gyrokinetic_app *app, struct gk_species *gks, struct gk_collisionless *gkcls, const struct gkyl_array *fin, struct gkyl_array *rhs); + void (*rhs_em_complete_func)(gkyl_gyrokinetic_app *app, struct gk_species *gks, + struct gk_collisionless *gkcls, const struct gkyl_array *fin, struct gkyl_array *rhs); void (*fdot_scaling)(gkyl_gyrokinetic_app *app, struct gk_species *gks, struct gk_collisionless *gkcls, struct gkyl_array *rhs, struct gkyl_array *cflrate, struct gkyl_range *rng); void (*write_diags_func)(gkyl_gyrokinetic_app* app, struct gk_species *gks, @@ -1048,8 +1052,11 @@ struct gk_species { struct gkyl_array *f_host; // Host copy for IO and initialization. struct gkyl_array *gyro_phi; // Gyroaveraged electrostatic potential. - + struct gkyl_array *gyro_apar; // Gyroaveraged parallel vector potential. + struct gkyl_array *gyro_apardot; // Gyroaveraged parallel vector potential time derivative. + struct gk_species_moment m0; // Computes charge density. + struct gk_species_moment m1; // Computes current density. struct gk_species_moment integ_moms; // Integrated moments. struct gk_species_moment *moms; // Diagnostic moments double *red_integ_diag, *red_integ_diag_global; // Reduced integrated moments. @@ -1130,8 +1137,15 @@ struct gk_species { struct gk_positivity positivity; // Positivity enforcing operator. - // Pointer to various functions selected at runtime. - double (*rhs_func)(gkyl_gyrokinetic_app *app, struct gk_species *species, + // Pointer to full RHS (ES + [Apar + Apardot]). + void (*rhs_func)(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms); + // Pointer to RHS star function (ES + [Apar]). + void (*rhs_em_complete_func)(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms); + void (*bflux_update)(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms); + double (*get_cfl)(gkyl_gyrokinetic_app *app, struct gk_species *species, const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms); double (*rhs_implicit_func)(gkyl_gyrokinetic_app *app, struct gk_species *species, const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms, double dt); @@ -1155,6 +1169,7 @@ struct gk_species { // Quantities used for FLR model: struct gkyl_array *m0_gyroavg; // Gyroaveraged particle density. + struct gkyl_array *m1_gyroavg; // Gyroaveraged particle flow. struct gkyl_array *flr_rhoSqD2; // Laplacian weight in FLR operator. struct gkyl_array *flr_kSq; // Field multiplying phi in FLR operator. struct gkyl_deflated_fem_poisson *flr_op; // Helmholtz solver to invert FLR operator. @@ -1318,10 +1333,12 @@ struct gk_field { bool update_field; // Are we updating the field?. bool calc_init_field; // Whether to compute the t=0 field. + bool is_em; // Whether we solve the EM field equations. + bool calc_init_apar; // Whether to initialize A_parallel with Ampere's law solve. // Arrays for local charge density, global charge density, and global smoothed (in z) charge density. struct gkyl_array *rho_c; - struct gkyl_array *rho_c_global_dg; + struct gkyl_array *rho_c_global_dg; // Auxiliary array for global charge density but also used in smoothing. struct gkyl_array *rho_c_global_smooth; struct gkyl_array *phi_fem, *phi_smooth; // Arrays for updates. @@ -1341,13 +1358,34 @@ struct gk_field { }; // EM GK model struct { - struct gkyl_array *apar_fem; // array for A_parallel - struct gkyl_array *apardot_fem; // array for d/dt A_parallel + struct gkyl_array *apar, *apar1, *aparnew; // Array for A_parallel and RK stages. + struct gkyl_array *apar_curr; // A_parallel at current RK stage. + struct gkyl_array *apar_smooth_aux; // Auxiliary array for smoothing A_parallel in z. + struct gkyl_array *apar_host; // Host copy for use IO. + struct gkyl_array *apardot; // Array for d(A_parallel)/dt (solved through Ohm's law). + struct gkyl_array *apardot_host; // Host copy for use IO. + struct gkyl_array *amperesol; // Array for Ampere's law solution. + struct gkyl_array *amperesol_host; // Host copy for use IO. + struct gkyl_array *currentDens; // Current density. + struct gkyl_array *currentDens_global; // Current density. + struct gkyl_array *currentDensdot; // Time derivative of current density. + struct gkyl_array *dApartdtSlvr_kSq; // Contains sum_s q_s^2/m_s n_s. + struct gkyl_array *dApartdtSlvr_lhs_factor; // Contains kperp^2/mu_0 + sum_s q_s^2/m_s n_s for 1D Ohm solve. + struct gkyl_array *dApartdtSlvr_rhs; // Contains sum_s q_s int dv vpar d/dt(F_s)*. + gkyl_dg_bin_op_mem *div_mem; // Memory for div operation in 1x Ohm's law. + struct gkyl_array *lapWeightAmpere; // Factor in front of the laplacian operator (1/mu0 or kperp^2/mu0 for 1D). + struct gkyl_fem_parproj *fem_apar_parproj; // FEM smoother for projecting Apar onto continuous FEM basis + struct gkyl_fem_poisson_perp *fem_apar_solver; // Solver for IC Apar. + struct gkyl_fem_poisson_perp *fem_apardot_solver; // Solver for d(Apar)/dt. + struct gkyl_poisson_bc ampere_bcs; // BCs for Apar and d(Apar)/dt. + enum gkyl_fem_parproj_bc_type fem_parproj_ampere_bc; // Type of BC for projecting onto FEM basis. }; }; double es_energy_fac_1d; struct gkyl_array *es_energy_fac; + double apar_energy_fac_1d; + struct gkyl_array *apar_energy_fac; bool is_dirichletvar; // Whether user provided spatially varying phi BCs. struct gkyl_array *phi_bc; // Spatially varying BC. struct gkyl_array *epsilon; // Polarization weight including geometric factors. @@ -1371,11 +1409,25 @@ struct gk_field { struct gkyl_array_integrate *calc_em_energy; // Operator computing EM energy. double *em_energy_red, *em_energy_red_global; // memory for use in GPU reduction of EM energy gkyl_dynvec integ_energy; // integrated energy components + gkyl_dynvec integ_apar_energy; // integrated EM energy components (separate from electrostatic energy for debugging purposes) + gkyl_dynvec integ_apardot_energy; // time derivative of integrated EM energy components bool is_first_energy_write_call; // flag for energy dynvec written first time double *em_energy_red_old, *em_energy_red_new; // memory for use in GPU reduction of old EM energy. gkyl_dynvec integ_energy_dot; // d/dt of integrated energy components. bool is_first_energy_dot_write_call; // flag for d(energy)/dt dynvec written first time + double *apar_energy_red_old, *apar_energy_red_new; // memory for use in GPU reduction of old Apar energy. + gkyl_dynvec integ_apar_energy_dot; // d/dt of integrated EM energy components (separate from electrostatic energy for debugging purposes) + bool is_first_apar_energy_dot_write_call; // flag for d(energy)/dt dynvec written first time + + void (*remove_em_zonal_func)(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *phi); // Function to remove zonal component. + struct gkyl_array_average *fs_avg_op; // Updater for flux surface averaging. + struct gkyl_array *fs_avg; // Array for storing flux-surface averaged quantities. + struct gkyl_array *fs_avg_conf_one; // Array of ones in configuration space for flux-surface averaging. + struct gkyl_range fs_avg_range; // Range for flux-surface average arrays. + struct gkyl_basis fs_avg_basis; // Basis for flux-surface average arrays. + struct gkyl_range fs_avg_range_ext; // Range for flux-surface average arrays. + int *fs_avg_subdir; // Subscript for flux-surface average direction. bool has_phi_wall_lo; // flag to indicate there is biased wall potential on lower wall bool phi_wall_lo_evolve; // flag to indicate biased wall potential on lower wall is time dependent @@ -1391,7 +1443,8 @@ struct gk_field { // Pointer to function that computes the time rate of change of the energy. void (*calc_energy_dt_func)(gkyl_gyrokinetic_app *app, const struct gk_field *field, double dt, double *energy_reduced); - + void (*calc_apar_energy_dt_func)(gkyl_gyrokinetic_app *app, const struct gk_field *field, double dt, double *energy_reduced); + // Objects used in IWL simulations and TS BCs. struct gkyl_bc_twistshift *bc_ts_lo, *bc_ts_up; struct gkyl_bc_basic_gyrokinetic *gfss_bc_op_core_up; // Fills upper core z-ghost with skin boundary value. @@ -1403,8 +1456,26 @@ struct gk_field { struct gkyl_array *arr_dg, struct gkyl_array *arr_fem); void (*fem_projection_par_phi_func)(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *arr_dg, struct gkyl_array *arr_fem); + void (*fem_projection_par_apar_func)(gkyl_gyrokinetic_app *app, struct gk_field *field, + struct gkyl_array *arr_dg, struct gkyl_array *arr_fem); + void (*twistshift_func) (struct gkyl_bc_twistshift *up, struct gkyl_array *fdo, struct gkyl_array *ftar); + + // Pointer to function for electromagnetic field solve. + void (*accumulate_current) (struct gkyl_gyrokinetic_app *app, struct gk_field *field, + const struct gkyl_array *fin[]); + void (*accumulate_ohms_kSq) (struct gkyl_gyrokinetic_app *app, struct gk_field *field, + const struct gkyl_array *fin[]); + void (*accumulate_current_dot) (struct gkyl_gyrokinetic_app *app, struct gk_field *field, + struct gkyl_array *rhs_in[]); + void (*ampere_solve) (struct gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *out); + void (*ohm_solve) (struct gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *out); + void (*step_apar) (struct gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array* out, double a, const struct gkyl_array* inp); + void (*em_combine_func) (struct gkyl_array *out, double c1, const struct gkyl_array *arr1, double c2, const struct gkyl_array *arr2,const struct gkyl_range *rng); + void (*em_copy_func) (struct gkyl_array *out, const struct gkyl_array *inp, const struct gkyl_range *range); // Pointer to function to calculate the potential. void (*rhs_phi_func)(struct gkyl_gyrokinetic_app *app, struct gk_field *field); + + void (*em_rhs_func) (struct gkyl_gyrokinetic_app *app, struct gk_field *field, const struct gkyl_array *f_in[], struct gkyl_array *rhs_in[]); // Pointer to function that calculates the field energy. void (*calc_energy_func)(gkyl_gyrokinetic_app *app, const struct gk_field *field, double tm); // Pointer to function that accumulates the charge density. @@ -1899,6 +1970,18 @@ void gk_species_collisionless_flux(gkyl_gyrokinetic_app *app, struct gk_species void gk_species_collisionless_rhs(gkyl_gyrokinetic_app *app, struct gk_species *gks, struct gk_collisionless *gkcls, const struct gkyl_array *fin, struct gkyl_array *rhs); +/** + * Compute RHS star (ES + Aparallel). + * + * @param app Gyrokinetic app object. + * @param gks Pointer to species. + * @param gkcls Species collisionless object. + * @param fin Input distribution function. + * @param rhs collisionless contribution to df/dt. + */ +void gk_species_collisionless_rhs_em_complete(gkyl_gyrokinetic_app *app, struct gk_species *gks, + struct gk_collisionless *gkcls, const struct gkyl_array *fin, struct gkyl_array *rhs); + /** * Write out diagnostics from the collisionless terms. * @@ -3177,16 +3260,53 @@ void gk_species_apply_ic(gkyl_gyrokinetic_app *app, struct gk_species *species, void gk_species_apply_ic_cross(gkyl_gyrokinetic_app *app, struct gk_species *species, double t0); /** - * Compute RHS from species distribution function + * Compute RHS from species distribution function. + * In EM simulation, this does not include contribution from Apardot and vpar surface flux. * * @param app gyrokinetic app object. * @param species Pointer to species. * @param fin Input distribution function. * @param rhs On output, the RHS from the species object. * @param bflux_moms Output boundary flux moments. + */ +void gk_species_rhs(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms); + +/** + * Complete the EM RHS by adding the contribution from Apardot and vpar surface flux. + * + * @param app gyrokinetic app object. + * @param species Pointer to species. + * @param fin Input distribution function. + * @param rhs On output, the RHS from the species object. + * @param bflux_moms Output boundary flux moments. + */ +void gk_species_rhs_em_complete(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms); + +/** + * Update the boundary flux moments from species distribution function + * + * @param app gyrokinetic app object. + * @param species Pointer to species. + * @param fin Input distribution function. + * @param rhs On output, the RHS from the species object. + * @param bflux_moms Output boundary flux moments (for diagnostics, stepped in time). + */ +void gk_species_update_bflux(gkyl_gyrokinetic_app *app, struct gk_species *species, + const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms); + +/** + * Reduce and return the CFL condition from species distribution function + * + * @param app gyrokinetic app object. + * @param species Pointer to species. + * @param fin Input distribution function. + * @param rhs On output, the RHS from the species object. + * @param bflux_moms Output boundary flux moments (for diagnostics, stepped in time). * @return Maximum stable time-step. */ -double gk_species_rhs(gkyl_gyrokinetic_app *app, struct gk_species *species, +double gk_species_get_cfl(gkyl_gyrokinetic_app *app, struct gk_species *species, const struct gkyl_array *fin, struct gkyl_array *rhs, struct gkyl_array **bflux_moms); /** @@ -4165,14 +4285,106 @@ void gk_field_accumulate_rho_c(gkyl_gyrokinetic_app *app, struct gk_field *field const struct gkyl_array *fin[], struct gkyl_array **bflux[]); /** - * Compute EM field. + * Accumulate current density for Ampere solve. + * + * @param app gyrokinetic app object. + * @param field Pointer to field. + * @param fin[] Input distribution function (num_species size). + */ +void gk_field_accumulate_current_dens(gkyl_gyrokinetic_app *app, struct gk_field *field, + const struct gkyl_array *fin[]); + +/** + * Accumulate time derivative of current density for Ohm solve. + * + * @param app gyrokinetic app object. + * @param field Pointer to field. + * @param rhs_in[] right-hand side of the ES GK equation for each species. + */ +void +gk_field_accumulate_current_dens_dot(gkyl_gyrokinetic_app *app, struct gk_field *field, + struct gkyl_array *rhs_in[]); + +/** + * Accumulate kSq term for Ohm solve. + * + * @param app gyrokinetic app object. + * @param field Pointer to field. + * @param fin[] Input distribution function (num_species size). + */ +void +gk_field_accumulate_ohms_kSq(gkyl_gyrokinetic_app *app, struct gk_field *field, + const struct gkyl_array *fin[]); + +/** + * Compute initial magnetic vector parallel component + * + * @param app gyrokinetic app object. + * @param field Pointer to field. + * @param out Output array. (apar) + */ +void gk_field_calc_apar_ic(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array *out); + +/** + * Step the parallel component of the magnetic vector potential, apar, forward in time. + * + * @param app gyrokinetic app object. + * @param field Pointer to field. + * @param out Output array. (apar) + * @param dt Timestep. + * @param inp Input array. (apardot from Ohm's law) + */ +void gk_field_step_apar(gkyl_gyrokinetic_app *app, struct gk_field *field, struct gkyl_array* out, double dt, + const struct gkyl_array* inp); + +/** + * Combine method for Apar stepping, disabled if electrostatic. + * + * @param field Pointer to field. + * @param out Output array. + * @param c1 Scaling factor. + * @param arr1 Input array. + * @param c2 Scaling factor. + * @param arr2 Input array. + * @param rng Range. + */ +void gk_field_em_combine(struct gk_field *field, struct gkyl_array *out, double c1, + const struct gkyl_array *arr1, double c2, const struct gkyl_array *arr2, + const struct gkyl_range *rng); + +/** + * Copy method for Apar stepping, disabled if electrostatic. + * + * @param field Pointer to field. + * @param out Output array. + * @param inp Input array. + * @param range Range. + */ +void gk_field_em_copy_range(struct gk_field *field, struct gkyl_array *out, + const struct gkyl_array *inp, const struct gkyl_range *range); + + +/** + * Compute electrostatic potential, phi, from charge density and + * time derivative of the parallel component of the vector potential, apardot, + * from the m1 moment of the GK rhs computed in the last gyrokinetic_rhs call, + * and from the kSq term computed in the last gk_field_accumulate_rho_c call. * * @param app gyrokinetic app object. * @param field Pointer to field. - * @param em Output field. */ void gk_field_rhs(gkyl_gyrokinetic_app *app, struct gk_field *field); +/** + * Compute Apardot from Ohm's law using the m1 moment of the GK electrostatic RHS. + * + * @param app gyrokinetic app object. + * @param field Pointer to field. + * @param fin[] Input distribution function (num_species size). + * @param rhs_in[] right-hand side of the ES GK equation for each species. + */ +void gk_field_em_rhs(gkyl_gyrokinetic_app *app, struct gk_field *field, const struct gkyl_array *f_in[], struct gkyl_array *rhs_in[]); + /** * Read the field from a file. * @@ -4207,6 +4419,17 @@ void gk_field_calc_energy(gkyl_gyrokinetic_app *app, double tm, const struct gk_ */ void gk_field_calc_energy_dt(gkyl_gyrokinetic_app *app, const struct gk_field *field, double dt, double *energy_reduced); +/** + * Compute Apar energy divided by dt for energy balance diagnostics. + * + * @param app gyrokinetic app object. + * @param field Pointer to field. + * @param dt Time step. + * @param energy_reduced Integrated field energy (single element double array). + */ +void gk_field_calc_apar_energy_dt(gkyl_gyrokinetic_app *app, const struct gk_field *field, double dt, double *energy_reduced); + + /** * Release resources allocated by field. * @@ -4305,11 +4528,14 @@ void gyrokinetic_calc_field_and_apply_bc(gkyl_gyrokinetic_app* app, double tcurr * @param fin_neut Input array of neutral-species distribution functions. * @param fout_neut Output array of neutral-species change in distribution functions. * @param bflux_out_neut Output array of neutral-species boundary fluxes. + * @param aparin Input array for parallel component of magnetic vector potential. + * @param aparout Output array for parallel component of magnetic vector potential. * @param st Time stepping status object. */ void gyrokinetic_rhs(gkyl_gyrokinetic_app* app, double tcurr, double dt, const struct gkyl_array *fin[], struct gkyl_array *fout[], struct gkyl_array **bflux_out[], const struct gkyl_array *fin_neut[], struct gkyl_array *fout_neut[], struct gkyl_array **bflux_out_neut[], + const struct gkyl_array *aparin, struct gkyl_array *aparout, struct gkyl_update_status *st); /** diff --git a/gyrokinetic/apps/gyrokinetic.c b/gyrokinetic/apps/gyrokinetic.c index 5cf1ff2c99..4f382b97a3 100644 --- a/gyrokinetic/apps/gyrokinetic.c +++ b/gyrokinetic/apps/gyrokinetic.c @@ -861,10 +861,8 @@ gkyl_gyrokinetic_app_new_solver(struct gkyl_gk *gk, gkyl_gyrokinetic_app *app) app->field = gk_field_new(gk, app); // Initialize field, even if we are skipping field updates. // Choose the function that updates the fields in time. - if (app->field->update_field) - app->calc_field_func = gyrokinetic_calc_field_enabled; - else - app->calc_field_func = gyrokinetic_calc_field_disabled; + app->calc_field_func = app->field->update_field? + gyrokinetic_calc_field_enabled : gyrokinetic_calc_field_disabled; // Initialize the post-positivity quasineutrality enforcement. app->post_positivity_quasineut = false; @@ -1064,10 +1062,12 @@ gkyl_gyrokinetic_app_apply_ic(gkyl_gyrokinetic_app* app, double t0) // Compute the fields and apply BCs. struct gkyl_array *distf[app->num_species]; + struct gkyl_array *distfdot[app->num_species]; struct gkyl_array **bflux[app->num_species]; struct gkyl_array *distf_neut[app->num_neut_species]; for (int i=0; inum_species; ++i) { distf[i] = app->species[i].f; + distfdot[i] = app->species[i].f1; bflux[i] = app->species[i].bflux.f; } for (int i=0; inum_neut_species; ++i) { @@ -1089,12 +1089,25 @@ gkyl_gyrokinetic_app_apply_ic(gkyl_gyrokinetic_app* app, double t0) } } - if (app->field->info.init_from_file.type == 0 && app->field->info.init_field_profile == 0) + if (app->field->info.init_from_file.type == 0 && app->field->info.init_field_profile == 0) { // Compute the field. // MF 2024/09/27/: Need the cast here for consistency. Fixing // this may require removing 'const' from a lot of places. gyrokinetic_calc_field_enabled(app, t0, (const struct gkyl_array **) distf, bflux); - else { + + // This does not seem to work well when using multiple MPI processes. + // It benign because this will be overwritten by the first RHS calls. + if (app->field->is_em) { + gk_field_accumulate_current_dens(app, app->field, (const struct gkyl_array **) distf); + gk_field_calc_apar_ic(app, app->field, app->field->apar); + for (int i=0; inum_species; ++i) { + struct gk_species *gk_s = &app->species[i]; + gk_species_rhs_em_complete(app, gk_s, distf[i], distfdot[i], bflux[i]); + } + gk_field_em_rhs(app, app->field, (const struct gkyl_array **) distf, distfdot); + } + + } else { if (app->field->info.init_field_profile == 0) // Read the field. gk_field_file_import_init(app, app->field->info.init_from_file); @@ -1102,7 +1115,6 @@ gkyl_gyrokinetic_app_apply_ic(gkyl_gyrokinetic_app* app, double t0) // Project the field. gk_field_project_init(app); } - } // Compute the phase-space advection speeds and boundary fluxes as t=0 @@ -1606,6 +1618,26 @@ gkyl_gyrokinetic_app_write_geometry(gkyl_gyrokinetic_app* app, struct gkyl_gk_ge // // ............. Field outputs ............... // // +static void write_field_with_metadata(struct gkyl_gyrokinetic_app *app, int frame, const char *field_suffix, + const char *description, struct gkyl_array *field_host) +{ + struct gkyl_msgpack_map_elem custom_meta[] = { + { .key = "Description", .elem_type = GKYL_MP_STRING, .cval = description } + }; + int io_meta_len[] = { app->io_meta_dg_len, app->gk_geom->io_meta_basic_len, 1 }; + const struct gkyl_msgpack_map_elem* io_meta[] = { app->io_meta_dg, app->gk_geom->io_meta_basic, custom_meta }; + + struct gkyl_msgpack_data *mt_data = gkyl_msgpack_create_union( + sizeof(io_meta_len) / sizeof(int), io_meta_len, io_meta + ); + const char *fmt = "%s-%s_%d.gkyl"; + int sz = gkyl_calc_strlen(fmt, app->name, field_suffix, frame); + char fileNm[sz + 1]; + snprintf(fileNm, sizeof(fileNm), fmt, app->name, field_suffix, frame); + gkyl_comm_array_write(app->comm, &app->grid, &app->local, mt_data, field_host, fileNm); + gkyl_msgpack_data_release(mt_data); +} + void gkyl_gyrokinetic_app_write_field(gkyl_gyrokinetic_app* app, double tm, int frame) { @@ -1616,9 +1648,13 @@ gkyl_gyrokinetic_app_write_field(gkyl_gyrokinetic_app* app, double tm, int frame gkyl_array_copy(app->field->phi_host, app->field->phi_smooth); } - // Package metadata. + // Update metadata for the fields being written out. gkyl_msgpack_map_elem_set_double(app->io_meta_dg_len, app->io_meta_dg, "time", tm); gkyl_msgpack_map_elem_set_uint(app->io_meta_dg_len, app->io_meta_dg, "frame", frame); + + write_field_with_metadata(app, frame, "field","Electrostatic potential.", app->field->phi_host); + + // Package metadata. struct gkyl_msgpack_map_elem io_meta_phi[] = { { .key = "Description", .elem_type = GKYL_MP_STRING, .cval = "Electrostatic potential." } }; @@ -1632,9 +1668,36 @@ gkyl_gyrokinetic_app_write_field(gkyl_gyrokinetic_app* app, double tm, int frame snprintf(fileNm, sizeof fileNm, fmt, app->name, frame); gkyl_comm_array_write(app->comm, &app->grid, &app->local, mt, app->field->phi_host, fileNm); - gkyl_msgpack_data_release(mt); + if (app->field->is_em) { + // Solve ampere to output it and compare with stepped apar. + struct gkyl_array *distf[app->num_species]; + for (int i=0; inum_species; ++i) { + distf[i] = app->species[i].f; + } + gk_field_accumulate_current_dens(app, app->field, (const struct gkyl_array **) distf); + gk_field_calc_apar_ic(app, app->field, app->field->amperesol); + // Copy data from device to host before writing it out. + if (app->use_gpu) { + gkyl_array_copy(app->field->apar_host, app->field->apar); + gkyl_array_copy(app->field->apardot_host, app->field->apardot); + gkyl_array_copy(app->field->amperesol_host, app->field->amperesol); + } + + write_field_with_metadata(app, frame, "apar", + "Stepped parallel component of the magnetic vector potential.", + app->field->apar_host); + + write_field_with_metadata(app, frame, "apardot", + "Time derivative of the parallel component of the magnetic vector potential obtained with Ohm's law.", + app->field->apardot_host); + + write_field_with_metadata(app, frame, "amperesol", + "Solution of the Ampere's law.", + app->field->amperesol_host); + } + app->stat.field_io_tm += gkyl_time_diff_now_sec(wtm); app->stat.n_field_io += 1; } @@ -1664,9 +1727,20 @@ gkyl_gyrokinetic_app_write_field_energy(gkyl_gyrokinetic_app* app) char fileNm0[sz0+1]; // ensures no buffer overflow snprintf(fileNm0, sizeof fileNm0, fmt0, app->name); + const char *fmt0_apar = "%s-apar_energy.gkyl"; + int sz0_apar = gkyl_calc_strlen(fmt0_apar, app->name); + char fileNm0_apar[sz0_apar+1]; // ensures no buffer overflow + snprintf(fileNm0_apar, sizeof fileNm0_apar, fmt0_apar, app->name); + + const char *fmt0_apardot = "%s-apardot_energy.gkyl"; + int sz0_apardot = gkyl_calc_strlen(fmt0_apardot, app->name); + char fileNm0_apardot[sz0_apardot+1]; // ensures no buffer overflow + snprintf(fileNm0_apardot, sizeof fileNm0_apardot, fmt0_apardot, app->name); + int rank; gkyl_comm_get_rank(app->comm, &rank); + bool write_em = app->field->is_em; if (rank == 0) { if (app->field->is_first_energy_write_call) { // Write to a new file (this ensure previous output is removed). @@ -1678,16 +1752,29 @@ gkyl_gyrokinetic_app_write_field_energy(gkyl_gyrokinetic_app* app) struct gkyl_msgpack_data *mt = gkyl_msgpack_create_union(sizeof(io_meta_len)/sizeof(int), io_meta_len, io_meta); gkyl_dynvec_write_wmeta(app->field->integ_energy, fileNm0, mt); + + if (write_em) { + gkyl_dynvec_write(app->field->integ_apar_energy, fileNm0_apar); + gkyl_dynvec_write(app->field->integ_apardot_energy, fileNm0_apardot); + } app->field->is_first_energy_write_call = false; gkyl_msgpack_data_release(mt); } else { // Append to existing file. gkyl_dynvec_awrite(app->field->integ_energy, fileNm0); + if (write_em) { + gkyl_dynvec_awrite(app->field->integ_apar_energy, fileNm0_apar); + gkyl_dynvec_awrite(app->field->integ_apardot_energy, fileNm0_apardot); + } } app->stat.n_field_diag_io += 1; } gkyl_dynvec_clear(app->field->integ_energy); + if (write_em) { + gkyl_dynvec_clear(app->field->integ_apar_energy); + gkyl_dynvec_clear(app->field->integ_apardot_energy); + } if (app->field->info.time_rate_diagnostics) { // Write out the time rate of change of the field energy. @@ -1718,6 +1805,27 @@ gkyl_gyrokinetic_app_write_field_energy(gkyl_gyrokinetic_app* app) app->stat.n_field_diag_io += 1; } gkyl_dynvec_clear(app->field->integ_energy_dot); + if (write_em) { + // Write out the time rate of change of the field energy. + const char *fmt2 = "%s-apar_energy_dot.gkyl"; + int sz2 = gkyl_calc_strlen(fmt2, app->name); + char fileNm2[sz2+1]; // ensures no buffer overflow + snprintf(fileNm2, sizeof fileNm2, fmt2, app->name); + + if (rank == 0) { + if (app->field->is_first_apar_energy_dot_write_call) { + // Write to a new file (this ensure previous output is removed). + gkyl_dynvec_write(app->field->integ_apar_energy_dot, fileNm2); + app->field->is_first_apar_energy_dot_write_call = false; + } + else { + // Append to existing file. + gkyl_dynvec_awrite(app->field->integ_apar_energy_dot, fileNm2); + } + app->stat.n_field_diag_io += 1; + } + gkyl_dynvec_clear(app->field->integ_apar_energy_dot); + } } app->stat.field_diag_io_tm += gkyl_time_diff_now_sec(wtm); @@ -2316,7 +2424,8 @@ gkyl_gyrokinetic_app_write(gkyl_gyrokinetic_app* app, double tm, int frame) void gyrokinetic_rhs(gkyl_gyrokinetic_app* app, double tcurr, double dt, const struct gkyl_array *fin[], struct gkyl_array *fout[], struct gkyl_array **bflux_out[], - const struct gkyl_array *fin_neut[], struct gkyl_array *fout_neut[], struct gkyl_array **bflux_out_neut[], + const struct gkyl_array *fin_neut[], struct gkyl_array *fout_neut[], struct gkyl_array **bflux_out_neut[], + const struct gkyl_array *aparin, struct gkyl_array *aparout, struct gkyl_update_status *st) { double dtmin = DBL_MAX; @@ -2360,12 +2469,26 @@ gyrokinetic_rhs(gkyl_gyrokinetic_app* app, double tcurr, double dt, gk_neut_species_scaling_cross_moms(app, gk_ns, &gk_ns->sca, fin, fin_neut); } - // Compute df/dt (not including sources). + // Build the GK RHS in two steps. + // 1. Configuration space surface fluxes and ES (+ Apar) volume terms. for (int i=0; inum_species; ++i) { struct gk_species *gk_s = &app->species[i]; - double dt1 = gk_species_rhs(app, gk_s, fin[i], fout[i], bflux_out[i]); - dtmin = fmin(dtmin, dt1); + gk_species_rhs(app, gk_s, fin[i], fout[i], bflux_out[i]); + // I don't think this is necessary. + // gk_species_update_bflux(app, gk_s, fin[i], fout[i], bflux_out[i]); + } + // Compute Apardot (solves Ohm's law using the current state of the RHS). + gk_field_em_rhs(app, app->field, fin, fout); + // Update aparout. + gk_field_em_copy_range(app->field, aparout, app->field->apardot, &app->local_ext); + + // 2. Finish building the EM GK RHS (vpar surface flux and Apardot volume term). + for (int i=0; inum_species; ++i) { + struct gk_species *gk_s = &app->species[i]; + gk_species_rhs_em_complete(app, gk_s, fin[i], fout[i], bflux_out[i]); + gk_species_update_bflux(app, gk_s, fin[i], fout[i], bflux_out[i]); } + for (int i=0; inum_neut_species; ++i) { struct gk_neut_species *gk_ns = &app->neut_species[i]; double dt1 = gk_neut_species_rhs(app, gk_ns, fin_neut[i], fout_neut[i], bflux_out_neut[i]); @@ -2384,6 +2507,14 @@ gyrokinetic_rhs(gkyl_gyrokinetic_app* app, double tcurr, double dt, &app->neut_species[i].src, fin_neut[i], fout_neut[i]); } + // Update boundary fluxes and compute CFL condition. + for (int i=0; inum_species; ++i) { + struct gk_species *gk_s = &app->species[i]; + gk_species_update_bflux(app, gk_s, fin[i], fout[i], bflux_out[i]); + double dt1 = gk_species_get_cfl(app, gk_s, fin[i], fout[i], bflux_out[i]); + dtmin = fmin(dtmin, dt1); + } + // Multiply dfdt (fout) by a factor. for (int i=0; inum_species; ++i) { struct gk_species *gks = &app->species[i]; @@ -2480,7 +2611,8 @@ gkyl_gyrokinetic_app_stat(gkyl_gyrokinetic_app* app) + stat->species_omega_cfl_tm + stat->species_src_tm + stat->species_source_bgk_tm + stat->neut_species_collisionless_tm + stat->neut_species_coll_tm + stat->neut_species_react_tm + stat->neut_species_omega_cfl_tm + stat->neut_species_src_tm + stat->dfdt_dt_reduce_tm + stat->fwd_euler_step_f_tm; - stat->field_sum_tm = stat->field_phi_rhs_tm + stat->field_phi_solve_tm; + stat->field_sum_tm = stat->field_phi_rhs_tm + stat->field_phi_solve_tm + + stat->field_apar_rhs_tm + stat->field_apar_solve_tm; stat->bc_sum_tm = stat->species_bc_tm + stat->neut_species_bc_tm; stat->time_rate_diags_sum_tm = stat->fdot_tm + stat->phidot_tm; stat->pos_shift_sum_tm = stat->species_pos_shift_tm + stat->neut_species_pos_shift_tm + stat->pos_shift_quasineut_tm; @@ -2541,6 +2673,8 @@ gkyl_gyrokinetic_app_print_timings(gkyl_gyrokinetic_app* app, FILE *iostream) gkyl_gyrokinetic_app_cout(app, iostream, " * Field solves: %.4e sec. / %4.2f %%.\n", stat->field_tm, ratio_to_percent(stat->field_tm,stat->time_loop_tm, 0.0)); gkyl_gyrokinetic_app_cout(app, iostream, " ^ Phi eqn RHS: %.4e sec. / %4.2f %%.\n", stat->field_phi_rhs_tm , ratio_to_percent(stat->field_phi_rhs_tm ,stat->field_tm, 0.0)); gkyl_gyrokinetic_app_cout(app, iostream, " ^ Phi eqn solve: %.4e sec. / %4.2f %%.\n", stat->field_phi_solve_tm, ratio_to_percent(stat->field_phi_solve_tm,stat->field_tm, 0.0)); + gkyl_gyrokinetic_app_cout(app, iostream, " ^ Apar eqn RHS: %.4e sec. / %4.2f %%.\n", stat->field_apar_rhs_tm, ratio_to_percent(stat->field_apar_rhs_tm,stat->field_tm, 0.0)); + gkyl_gyrokinetic_app_cout(app, iostream, " ^ Apar eqn solve: %.4e sec. / %4.2f %%.\n", stat->field_apar_solve_tm, ratio_to_percent(stat->field_apar_solve_tm,stat->field_tm, 0.0)); gkyl_gyrokinetic_app_cout(app, iostream, " ^ Accounted for: %4.2f %%.\n", ratio_to_percent(stat->field_sum_tm, stat->field_tm, 100.0)); gkyl_gyrokinetic_app_cout(app, iostream, " * Boundary conditions:: %.4e sec. / %4.2f %%.\n", stat->bc_tm, ratio_to_percent(stat->bc_tm,stat->time_loop_tm, 0.0)); gkyl_gyrokinetic_app_cout(app, iostream, " ^ Species (charged): %.4e sec. / %4.2f %%.\n", stat->species_bc_tm , ratio_to_percent(stat->species_bc_tm ,stat->bc_tm, 0.0)); @@ -3318,6 +3452,31 @@ gkyl_gyrokinetic_app_from_file_field(gkyl_gyrokinetic_app *app, const char *fnam return rstat; } +struct gkyl_app_restart_status +gkyl_gyrokinetic_app_from_file_em(gkyl_gyrokinetic_app *app, const char *fname_apar, const char *fname_apardot) +{ + struct gkyl_app_restart_status rstat; + + rstat = header_from_file(app, fname_apar); + + if (rstat.io_status == GKYL_ARRAY_RIO_SUCCESS) { + rstat.io_status = + gkyl_comm_array_read(app->comm, &app->grid, &app->local, app->field->apar_host, fname_apar); + if (app->use_gpu) + gkyl_array_copy(app->field->apar, app->field->apar_host); + } + + rstat = header_from_file(app, fname_apardot); + if (rstat.io_status == GKYL_ARRAY_RIO_SUCCESS) { + rstat.io_status = + gkyl_comm_array_read(app->comm, &app->grid, &app->local, app->field->apardot_host, fname_apardot); + if (app->use_gpu) + gkyl_array_copy(app->field->apardot, app->field->apardot_host); + } + + return rstat; +} + struct gkyl_app_restart_status gkyl_gyrokinetic_app_from_file_species(gkyl_gyrokinetic_app *app, int sidx, const char *fname) @@ -3376,6 +3535,20 @@ gkyl_gyrokinetic_app_from_frame_field(gkyl_gyrokinetic_app *app, int frame) return rstat; } +struct gkyl_app_restart_status +gkyl_gyrokinetic_app_from_frame_em(gkyl_gyrokinetic_app *app, int frame) +{ + cstr fileNm_apar = cstr_from_fmt("%s-%s_%d.gkyl", app->name, "apar", frame); + cstr fileNm_apardot = cstr_from_fmt("%s-%s_%d.gkyl", app->name, "apardot", frame); + struct gkyl_app_restart_status rstat = gkyl_gyrokinetic_app_from_file_em(app, fileNm_apar.str, fileNm_apardot.str); + app->field->is_first_energy_write_call = false; // Append to existing diagnostic. + app->field->is_first_energy_dot_write_call = false; // Append to existing diagnostic. + cstr_drop(&fileNm_apar); + cstr_drop(&fileNm_apardot); + + return rstat; +} + struct gkyl_app_restart_status gkyl_gyrokinetic_app_from_frame_species(gkyl_gyrokinetic_app *app, int sidx, int frame) { @@ -3457,10 +3630,12 @@ gkyl_gyrokinetic_app_read_from_frame(gkyl_gyrokinetic_app *app, int frame) if (rstat.io_status == GKYL_ARRAY_RIO_SUCCESS) { // Compute the fields and apply BCs. struct gkyl_array *distf[app->num_species]; + struct gkyl_array *distfdot[app->num_species]; struct gkyl_array **bflux[app->num_species]; struct gkyl_array *distf_neut[app->num_neut_species]; for (int i=0; inum_species; ++i) { distf[i] = app->species[i].f; + distfdot[i] = app->species[i].f1; bflux[i] = app->species[i].bflux.f; } for (int i=0; inum_neut_species; ++i) { @@ -3485,6 +3660,23 @@ gkyl_gyrokinetic_app_read_from_frame(gkyl_gyrokinetic_app *app, int frame) // MF 2024/09/27/: Need the cast here for consistency. Fixing // this may require removing 'const' from a lot of places. gyrokinetic_calc_field(app, rstat.stime, (const struct gkyl_array **) distf, bflux); + + if (app->field->is_em) { + if (app->field->calc_init_apar) { + // Compute Apar. + gk_field_accumulate_current_dens(app, app->field, (const struct gkyl_array **) distf); + gk_field_calc_apar_ic(app, app->field, app->field->apar); + // We also compute Apardot here to output the first frame. + for (int i=0; inum_species; ++i) { + struct gk_species *gk_s = &app->species[i]; + gk_species_rhs_em_complete(app, gk_s, distf[i], distfdot[i], bflux[i]); + } + gk_field_em_rhs(app, app->field, (const struct gkyl_array **) distf, distfdot); + } else { + // Load Apar and Apardot from last frame. + gkyl_gyrokinetic_app_from_frame_em(app, frame); + } + } } else { // Read the t=0 field. @@ -3645,8 +3837,7 @@ gkyl_gyrokinetic_app_reset_field(gkyl_gyrokinetic_app* app, double tm, { app->field->info.is_static = field_inp.is_static; app->field->update_field = !field_inp.is_static; - if (app->field->update_field) - app->calc_field_func = gyrokinetic_calc_field_enabled; - else - app->calc_field_func = gyrokinetic_calc_field_disabled; + + app->calc_field_func = app->field->update_field? + gyrokinetic_calc_field_enabled : gyrokinetic_calc_field_disabled; } diff --git a/gyrokinetic/apps/gyrokinetic_lw.c b/gyrokinetic/apps/gyrokinetic_lw.c index 7a1a1500a7..047d3379b9 100644 --- a/gyrokinetic/apps/gyrokinetic_lw.c +++ b/gyrokinetic/apps/gyrokinetic_lw.c @@ -59,16 +59,13 @@ static const struct gkyl_str_int_pair position_map_type[] = { static const struct gkyl_str_int_pair gk_collisionless_type[] = { { "None", GKYL_GK_COLLISIONLESS_NONE }, { "GKCollisionlessES", GKYL_GK_COLLISIONLESS_ES }, - { "GKCollisionlessES_no_by", GKYL_GK_COLLISIONLESS_ES_NO_BY }, - { "GKCollisionlessEM_Bperp", GKYL_GK_COLLISIONLESS_EM_BPERP }, - { "GKCollisionlessEM_Bpar", GKYL_GK_COLLISIONLESS_EM_BPAR }, { "GKCollisionlessEM", GKYL_GK_COLLISIONLESS_EM }, { 0, 0 } }; // Gyrokinetic field type -> enum map. static const struct gkyl_str_int_pair gk_field_type[] = { - { "Electrostatic", GKYL_GK_FIELD_ES }, + { "Default", GKYL_GK_FIELD }, { "Boltzmann", GKYL_GK_FIELD_BOLTZMANN }, { "Adiabatic", GKYL_GK_FIELD_ADIABATIC }, { "Electromagnetic", GKYL_GK_FIELD_EM }, diff --git a/gyrokinetic/apps/gyrokinetic_multib_update_ssp_rk3.c b/gyrokinetic/apps/gyrokinetic_multib_update_ssp_rk3.c index 8f079ac882..926b6f4e9b 100644 --- a/gyrokinetic/apps/gyrokinetic_multib_update_ssp_rk3.c +++ b/gyrokinetic/apps/gyrokinetic_multib_update_ssp_rk3.c @@ -3,6 +3,7 @@ static void gyrokinetic_multib_forward_euler(struct gkyl_gyrokinetic_multib_app* app, double tcurr, double dt, const struct gkyl_array *fin[], struct gkyl_array *fout[], + const struct gkyl_array *aparin, struct gkyl_array *aparout, struct gkyl_array **bflux_in[], struct gkyl_array **bflux_out[], const struct gkyl_array *fin_neut[], struct gkyl_array *fout_neut[], struct gkyl_array **bflux_in_neut[], struct gkyl_array **bflux_out_neut[], @@ -23,7 +24,8 @@ gyrokinetic_multib_forward_euler(struct gkyl_gyrokinetic_multib_app* app, double int li_charged = b * app->num_species; int li_neut = b * app->num_neut_species; gyrokinetic_rhs(app->singleb_apps[b], tcurr, dt, &fin[li_charged], &fout[li_charged], - &bflux_out[li_charged], &fin_neut[li_neut], &fout_neut[li_neut], &bflux_out_neut[li_neut], st); + &bflux_out[li_charged], &fin_neut[li_neut], &fout_neut[li_neut], &bflux_out_neut[li_neut], + aparin, aparout, st); dtmin = fmin(dtmin, st->dt_actual); } @@ -69,6 +71,8 @@ gyrokinetic_multib_update_ssp_rk3(struct gkyl_gyrokinetic_multib_app* app, doubl const struct gkyl_array *fin[ns_charged * nblocks_local]; struct gkyl_array *fout[ns_charged * nblocks_local]; + const struct gkyl_array *aparin; + struct gkyl_array *aparout; struct gkyl_array **bflux_in[ns_charged * nblocks_local]; struct gkyl_array **bflux_out[ns_charged * nblocks_local]; @@ -98,6 +102,8 @@ gyrokinetic_multib_update_ssp_rk3(struct gkyl_gyrokinetic_multib_app* app, doubl bflux_in[li_charged+i] = gks->bflux.f; bflux_out[li_charged+i] = gks->bflux.f1; } + aparin = NULL; + aparout = NULL; for (int i=0; ineut_species[i]; fin_neut[li_neut+i] = gkns->f; @@ -108,7 +114,7 @@ gyrokinetic_multib_update_ssp_rk3(struct gkyl_gyrokinetic_multib_app* app, doubl } } - gyrokinetic_multib_forward_euler(app, tcurr, dt, fin, fout, bflux_in, bflux_out, + gyrokinetic_multib_forward_euler(app, tcurr, dt, fin, fout, aparin, aparout, bflux_in, bflux_out, fin_neut, fout_neut, bflux_in_neut, bflux_out_neut, &st); dt = st.dt_actual; @@ -173,8 +179,8 @@ gyrokinetic_multib_update_ssp_rk3(struct gkyl_gyrokinetic_multib_app* app, doubl } } - gyrokinetic_multib_forward_euler(app, tcurr+dt, dt, fin, fout, bflux_in, bflux_out, - fin_neut, fout_neut, bflux_in_neut, bflux_out_neut, &st); + gyrokinetic_multib_forward_euler(app, tcurr+dt, dt, fin, fout, aparin, aparout, + bflux_in, bflux_out, fin_neut, fout_neut, bflux_in_neut, bflux_out_neut, &st); if (st.dt_actual < dt) { @@ -262,8 +268,8 @@ gyrokinetic_multib_update_ssp_rk3(struct gkyl_gyrokinetic_multib_app* app, doubl } } - gyrokinetic_multib_forward_euler(app, tcurr+dt/2, dt, fin, fout, bflux_in, bflux_out, - fin_neut, fout_neut, bflux_in_neut, bflux_out_neut, &st); + gyrokinetic_multib_forward_euler(app, tcurr+dt/2, dt, fin, fout, aparin, aparout, + bflux_in, bflux_out, fin_neut, fout_neut, bflux_in_neut, bflux_out_neut, &st); if (st.dt_actual < dt) { // Recalculate the field. diff --git a/gyrokinetic/apps/gyrokinetic_update_ssp_rk3.c b/gyrokinetic/apps/gyrokinetic_update_ssp_rk3.c index 18a1a7e7a2..f59a4d78c9 100644 --- a/gyrokinetic/apps/gyrokinetic_update_ssp_rk3.c +++ b/gyrokinetic/apps/gyrokinetic_update_ssp_rk3.c @@ -3,6 +3,7 @@ static void gyrokinetic_forward_euler(gkyl_gyrokinetic_app* app, double tcurr, double dt, const struct gkyl_array *fin[], struct gkyl_array *fout[], + const struct gkyl_array *aparin, struct gkyl_array *aparout, struct gkyl_array **bflux_in[], struct gkyl_array **bflux_out[], const struct gkyl_array *fin_neut[], struct gkyl_array *fout_neut[], struct gkyl_array **bflux_in_neut[], struct gkyl_array **bflux_out_neut[], @@ -18,7 +19,8 @@ gyrokinetic_forward_euler(gkyl_gyrokinetic_app* app, double tcurr, double dt, app->stat.nfeuler += 1; // Compute the time rate of change of the distributions, df/dt. - gyrokinetic_rhs(app, tcurr, dt, fin, fout, bflux_out, fin_neut, fout_neut, bflux_out_neut, st); + gyrokinetic_rhs(app, tcurr, dt, fin, fout, bflux_out, fin_neut, fout_neut, bflux_out_neut, + aparin, aparout, st); struct timespec wst = gkyl_wall_clock(); // Complete update of distribution functions. @@ -33,6 +35,8 @@ gyrokinetic_forward_euler(gkyl_gyrokinetic_app* app, double tcurr, double dt, gk_neut_species_step_f(gkns, fout_neut[i], dta, fin_neut[i]); gk_neut_species_bflux_accumulate(app, &gkns->bflux, bflux_out_neut[i], 1.0, bflux_in_neut[i]); } + gk_field_step_apar(app, app->field, aparout, dta, aparin); + app->stat.fwd_euler_step_f_tm += gkyl_time_diff_now_sec(wst); app->stat.fwd_euler_tm += gkyl_time_diff_now_sec(wst_fe); @@ -46,6 +50,8 @@ gyrokinetic_update_ssp_rk3(gkyl_gyrokinetic_app* app, double dt0) // from the actual time-step. const struct gkyl_array *fin[app->num_species]; struct gkyl_array *fout[app->num_species]; + const struct gkyl_array *aparin; + struct gkyl_array *aparout; struct gkyl_array **bflux_in[app->num_species]; struct gkyl_array **bflux_out[app->num_species]; @@ -71,6 +77,9 @@ gyrokinetic_update_ssp_rk3(gkyl_gyrokinetic_app* app, double dt0) bflux_in[i] = gks->bflux.f; bflux_out[i] = gks->bflux.f1; } + aparin = app->field->apar; + aparout = app->field->apar1; + gk_field_em_copy_range(app->field, app->field->apar_curr, app->field->apar, &app->local_ext); // Update apar_curr to latest A_parallel. for (int i=0; inum_neut_species; ++i) { struct gk_neut_species *gkns = &app->neut_species[i]; fin_neut[i] = gkns->f; @@ -86,7 +95,7 @@ gyrokinetic_update_ssp_rk3(gkyl_gyrokinetic_app* app, double dt0) gk_species_source_adapt(app, gks, &gks->src, gks->lte.f_lte, bflux_in, tcurr); } - gyrokinetic_forward_euler(app, tcurr, dt, fin, fout, bflux_in, bflux_out, + gyrokinetic_forward_euler(app, tcurr, dt, fin, fout, aparin, aparout, bflux_in, bflux_out, fin_neut, fout_neut, bflux_in_neut, bflux_out_neut, &st); dt = st.dt_actual; @@ -113,6 +122,7 @@ gyrokinetic_update_ssp_rk3(gkyl_gyrokinetic_app* app, double dt0) // Compute field energy divided by dt for energy balance diagnostics. gk_field_calc_energy_dt(app, app->field, dt, app->field->em_energy_red_old); + gk_field_calc_apar_energy_dt(app, app->field, dt, app->field->apar_energy_red_old); // Compute the fields and apply BCs. gyrokinetic_calc_field_and_apply_bc(app, tcurr, fout, bflux_out, fout_neut); @@ -137,8 +147,11 @@ gyrokinetic_update_ssp_rk3(gkyl_gyrokinetic_app* app, double dt0) bflux_in_neut[i] = gkns->bflux.f1; bflux_out_neut[i] = gkns->bflux.fnew; } + aparin = app->field->apar1; + aparout = app->field->aparnew; + gk_field_em_copy_range(app->field, app->field->apar_curr, app->field->apar1, &app->local_ext); // Update apar_curr to latest A_parallel. - gyrokinetic_forward_euler(app, tcurr+dt, dt, fin, fout, bflux_in, bflux_out, + gyrokinetic_forward_euler(app, tcurr+dt, dt, fin, fout, aparin, aparout, bflux_in, bflux_out, fin_neut, fout_neut, bflux_in_neut, bflux_out_neut, &st); if (st.dt_actual < dt) { @@ -149,7 +162,7 @@ gyrokinetic_update_ssp_rk3(gkyl_gyrokinetic_app* app, double dt0) fin[i] = gks->f; bflux_in[i] = gks->bflux.f; } - gyrokinetic_calc_field(app, tcurr, fin, bflux_in); + gyrokinetic_calc_field(app, tcurr, fin, bflux_in); // Why don't we apply BCs here? // Collect stats. double dt_rel_diff = (dt-st.dt_actual)/st.dt_actual; @@ -175,6 +188,7 @@ gyrokinetic_update_ssp_rk3(gkyl_gyrokinetic_app* app, double dt0) gk_neut_species_combine(gkns, gkns->f1, 3.0/4.0, gkns->f, 1.0/4.0, gkns->fnew, &gkns->local_ext); gk_neut_species_bflux_set(app, &gkns->bflux, gkns->bflux.f1, 1.0/4.0, gkns->bflux.fnew); } + gk_field_em_combine(app->field, app->field->apar1, 3.0/4.0, app->field->apar, 1.0/4.0, app->field->aparnew, &app->local_ext); app->stat.time_stepper_arithmetic_tm += gkyl_time_diff_now_sec(wst); // Compute the fields and apply BCs. @@ -209,8 +223,11 @@ gyrokinetic_update_ssp_rk3(gkyl_gyrokinetic_app* app, double dt0) bflux_in_neut[i] = gkns->bflux.f1; bflux_out_neut[i] = gkns->bflux.fnew; } + aparin = app->field->apar1; + aparout = app->field->aparnew; + gk_field_em_copy_range(app->field, app->field->apar_curr, app->field->apar1, &app->local_ext); // Update apar_curr to latest A_parallel. - gyrokinetic_forward_euler(app, tcurr+dt/2, dt, fin, fout, bflux_in, bflux_out, + gyrokinetic_forward_euler(app, tcurr+dt/2, dt, fin, fout, aparin, aparout, bflux_in, bflux_out, fin_neut, fout_neut, bflux_in_neut, bflux_out_neut, &st); if (st.dt_actual < dt) { @@ -246,7 +263,6 @@ gyrokinetic_update_ssp_rk3(gkyl_gyrokinetic_app* app, double dt0) gk_species_bflux_set(app, &gks->bflux, gks->bflux.f, 2.0/3.0, gks->bflux.fnew); gk_species_bflux_calc_voltime_integrated_mom(app, gks, &gks->bflux, tcurr); } - for (int i=0; inum_neut_species; ++i) { struct gk_neut_species *gkns = &app->neut_species[i]; gk_neut_species_combine(gkns, gkns->f1, 1.0/3.0, gkns->f, 2.0/3.0, gkns->fnew, &gkns->local_ext); @@ -255,6 +271,10 @@ gyrokinetic_update_ssp_rk3(gkyl_gyrokinetic_app* app, double dt0) gk_neut_species_bflux_set(app, &gkns->bflux, gkns->bflux.f, 2.0/3.0, gkns->bflux.fnew); gk_neut_species_bflux_calc_voltime_integrated_mom(app, gkns, &gkns->bflux, tcurr); } + // Step A_parallel. + gk_field_em_combine(app->field, app->field->apar1, 1.0/3.0, app->field->apar, 2.0/3.0, app->field->aparnew, + &app->local_ext); + gk_field_em_copy_range(app->field, app->field->apar, app->field->apar1, &app->local_ext); app->stat.time_stepper_arithmetic_tm += gkyl_time_diff_now_sec(wst); // Apply positivity shift if requested. @@ -301,6 +321,7 @@ gyrokinetic_update_ssp_rk3(gkyl_gyrokinetic_app* app, double dt0) // Compute field energy divided by dt for energy balance diagnostics. gk_field_calc_energy_dt(app, app->field, dt, app->field->em_energy_red_new); + gk_field_calc_apar_energy_dt(app, app->field, dt, app->field->apar_energy_red_new); state = RK_COMPLETE; } diff --git a/gyrokinetic/creg/rt_gk_bgk_cross_relax_1x2v_p1.c b/gyrokinetic/creg/rt_gk_bgk_cross_relax_1x2v_p1.c index af61ff125e..12ee09a788 100644 --- a/gyrokinetic/creg/rt_gk_bgk_cross_relax_1x2v_p1.c +++ b/gyrokinetic/creg/rt_gk_bgk_cross_relax_1x2v_p1.c @@ -343,7 +343,8 @@ main(int argc, char **argv) }, .collisionless = { - .type = GKYL_GK_COLLISIONLESS_ES_NO_BY, + .type = GKYL_GK_COLLISIONLESS_ES, + .no_by = true, }, .collisions = { @@ -389,7 +390,8 @@ main(int argc, char **argv) }, .collisionless = { - .type = GKYL_GK_COLLISIONLESS_ES_NO_BY, + .type = GKYL_GK_COLLISIONLESS_ES, + .no_by = true, }, .collisions = { diff --git a/gyrokinetic/creg/rt_gk_bgk_im_cross_relax_1x2v_p1.c b/gyrokinetic/creg/rt_gk_bgk_im_cross_relax_1x2v_p1.c index ef94c14515..cb9970d5c4 100644 --- a/gyrokinetic/creg/rt_gk_bgk_im_cross_relax_1x2v_p1.c +++ b/gyrokinetic/creg/rt_gk_bgk_im_cross_relax_1x2v_p1.c @@ -343,7 +343,8 @@ main(int argc, char **argv) }, .collisionless = { - .type = GKYL_GK_COLLISIONLESS_ES_NO_BY, + .type = GKYL_GK_COLLISIONLESS_ES, + .no_by = true, }, .collisions = { @@ -390,7 +391,8 @@ main(int argc, char **argv) }, .collisionless = { - .type = GKYL_GK_COLLISIONLESS_ES_NO_BY, + .type = GKYL_GK_COLLISIONLESS_ES, + .no_by = true, }, .collisions = { diff --git a/gyrokinetic/creg/rt_gk_cbc_2x2v_p1.c b/gyrokinetic/creg/rt_gk_cbc_2x2v_p1.c index d3b08728c7..769d14b153 100644 --- a/gyrokinetic/creg/rt_gk_cbc_2x2v_p1.c +++ b/gyrokinetic/creg/rt_gk_cbc_2x2v_p1.c @@ -825,7 +825,6 @@ main(int argc, char **argv) // field struct gkyl_gyrokinetic_field field = { - .gkfield_id = GKYL_GK_FIELD_ES, .poisson_bcs = { { .dir = 0, .edge = GKYL_LOWER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, { .dir = 0, .edge = GKYL_UPPER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, diff --git a/gyrokinetic/creg/rt_gk_cbc_3x2v_p1.c b/gyrokinetic/creg/rt_gk_cbc_3x2v_p1.c index 74c0854138..013817672c 100644 --- a/gyrokinetic/creg/rt_gk_cbc_3x2v_p1.c +++ b/gyrokinetic/creg/rt_gk_cbc_3x2v_p1.c @@ -847,7 +847,6 @@ main(int argc, char **argv) // field struct gkyl_gyrokinetic_field field = { - .gkfield_id = GKYL_GK_FIELD_ES, .poisson_bcs = { { .dir = 0, .edge = GKYL_LOWER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, { .dir = 0, .edge = GKYL_UPPER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, diff --git a/gyrokinetic/creg/rt_gk_d3d_iwl_2x2v_p1.c b/gyrokinetic/creg/rt_gk_d3d_iwl_2x2v_p1.c index 22edb63f91..ce10bf047d 100644 --- a/gyrokinetic/creg/rt_gk_d3d_iwl_2x2v_p1.c +++ b/gyrokinetic/creg/rt_gk_d3d_iwl_2x2v_p1.c @@ -743,7 +743,6 @@ main(int argc, char **argv) // field struct gkyl_gyrokinetic_field field = { - .gkfield_id = GKYL_GK_FIELD_ES, .poisson_bcs = { { .dir = 0, .edge = GKYL_LOWER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0}, }, { .dir = 0, .edge = GKYL_UPPER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0}, }, diff --git a/gyrokinetic/creg/rt_gk_d3d_iwl_3x2v_p1.c b/gyrokinetic/creg/rt_gk_d3d_iwl_3x2v_p1.c index 84856f4112..5da21d2284 100644 --- a/gyrokinetic/creg/rt_gk_d3d_iwl_3x2v_p1.c +++ b/gyrokinetic/creg/rt_gk_d3d_iwl_3x2v_p1.c @@ -841,7 +841,6 @@ main(int argc, char **argv) // field struct gkyl_gyrokinetic_field field = { - .gkfield_id = GKYL_GK_FIELD_ES, .poisson_bcs = { { .dir = 0, .edge = GKYL_LOWER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, { .dir = 0, .edge = GKYL_UPPER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {ctx.side_wall_bias} }, diff --git a/gyrokinetic/creg/rt_gk_em_alfven_1x2v_p1.c b/gyrokinetic/creg/rt_gk_em_alfven_1x2v_p1.c new file mode 100644 index 0000000000..8e5aeddfb2 --- /dev/null +++ b/gyrokinetic/creg/rt_gk_em_alfven_1x2v_p1.c @@ -0,0 +1,456 @@ +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +// Define the context of the simulation. This is basically all the globals +struct gk_app_ctx { + int cdim, vdim; // Dimensionality. + double mu0; + + // Geometry and magnetic field. + double R; // Major radius of the simulation box [m]. + double a; // Minor radius at outboard midplane [m]. + double r; // Minor radius of the simulation box [m]. + double B; // Magnetic field magnitude in the simulation box [T]. + double z_min; double z_max; + + double kperp; // Perpendicular wavenumber. + double beta_hat; // Plasma beta parameter. + + // Plasma parameters. + double me; double qe; + double mi; double qi; + double n0; double Te0; double Ti0; + + // Grid parameters. + double kz_min; + int Nz; + int Nvpar; + int Nmu; + int cells[GKYL_MAX_DIM]; // Number of cells in all directions. + int poly_order; + double vpar_max_elc; double mu_max_elc; + double vpar_max_ion; double mu_max_ion; + + double t_end; // End time. + int num_frames; // Number of output frames. + double write_phase_freq; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num; // Number of integrated diagnostics computations (=INT_MAX for every step). + double dt_failure_tol; // Minimum allowable fraction of initial time-step. + int num_failures_max; // Maximum allowable number of consecutive small time-steps. +}; + +// Ion initial conditions. +void density_init_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + fout[0] = app->n0; +} +void upar_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} +void temp_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + fout[0] = app->Ti0; +} + +// Electron initial conditions. +void density_init_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + double z = xn[0]; + fout[0] = app->n0 * (1 + 1e-6*cos(app->kz_min*z)); +} +void upar_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} +void temp_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + fout[0] = app->Te0; +} + +// Electron source profiles. +void density_src(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 1e-40; +} +void upar_elc_src(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} +void temp_elc_src(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} + +// Ion source profiles. +void upar_ion_src(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} +void temp_ion_src(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} + +// Slab magnetic equilibrium. +static inline void +mapc2p(double t, const double* xc, double* GKYL_RESTRICT xp, void* ctx) +{ + struct gk_app_ctx *app = ctx; + double x = xc[0], y = xc[1], z = xc[2]; + xp[0] = x; xp[1] = y; xp[2] = z; +} +void bfield_func(double t, const double *xc, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + fout[0] = 0.0; + fout[1] = 0.0; + fout[2] = app->B; +} + +void +write_ctx_to_json(const struct gk_app_ctx *ctx) +{ + FILE *fp = fopen("ctx.json", "w"); + if (!fp) { + perror("Error opening file for writing context"); + return; + } + + fprintf(fp, "{\n"); + fprintf(fp, " \"cdim\": %d,\n", ctx->cdim); + fprintf(fp, " \"vdim\": %d,\n", ctx->vdim); + fprintf(fp, " \"mu0\": %e,\n", ctx->mu0); + fprintf(fp, " \"R\": %e,\n", ctx->R); + fprintf(fp, " \"a\": %e,\n", ctx->a); + fprintf(fp, " \"r\": %e,\n", ctx->r); + fprintf(fp, " \"B\": %e,\n", ctx->B); + fprintf(fp, " \"z_min\": %e,\n", ctx->z_min); + fprintf(fp, " \"z_max\": %e,\n", ctx->z_max); + fprintf(fp, " \"kperp\": %e,\n", ctx->kperp); + fprintf(fp, " \"beta_hat\": %e,\n", ctx->beta_hat); + fprintf(fp, " \"me\": %e,\n", ctx->me); + fprintf(fp, " \"qe\": %e,\n", ctx->qe); + fprintf(fp, " \"mi\": %e,\n", ctx->mi); + fprintf(fp, " \"qi\": %e,\n", ctx->qi); + fprintf(fp, " \"n0\": %e,\n", ctx->n0); + fprintf(fp, " \"Te0\": %e,\n", ctx->Te0); + fprintf(fp, " \"Ti0\": %e,\n", ctx->Ti0); + fprintf(fp, " \"kz_min\": %e,\n", ctx->kz_min); + fprintf(fp, " \"Nz\": %d,\n", ctx->Nz); + fprintf(fp, " \"Nvpar\": %d,\n", ctx->Nvpar); + fprintf(fp, " \"Nmu\": %d,\n", ctx->Nmu); + fprintf(fp, " \"poly_order\": %d,\n", ctx->poly_order); + fprintf(fp, " \"vpar_max_elc\": %e,\n", ctx->vpar_max_elc); + fprintf(fp, " \"mu_max_elc\": %e,\n", ctx->mu_max_elc); + fprintf(fp, " \"vpar_max_ion\": %e,\n", ctx->vpar_max_ion); + fprintf(fp, " \"mu_max_ion\": %e,\n", ctx->mu_max_ion); + fprintf(fp, " \"t_end\": %e,\n", ctx->t_end); + fprintf(fp, " \"num_frames\": %d,\n", ctx->num_frames); + fprintf(fp, " \"write_phase_freq\": %e,\n", ctx->write_phase_freq); + fprintf(fp, " \"int_diag_calc_num\": %d,\n", ctx->int_diag_calc_num); + fprintf(fp, " \"dt_failure_tol\": %e,\n", ctx->dt_failure_tol); + fprintf(fp, " \"num_failures_max\": %d\n", ctx->num_failures_max); + fprintf(fp, "}\n"); + + fclose(fp); +} + +struct gk_app_ctx +create_ctx(void) +{ + int cdim = 1, vdim = 2; // Dimensionality. + // Universal constant parameters. + double eps0 = GKYL_EPSILON0, eV = GKYL_ELEMENTARY_CHARGE; + double qi = eV; // ion charge + double qe = -eV; // electron charge + double me = GKYL_ELECTRON_MASS; + double mi = 2*GKYL_PROTON_MASS; + double mu0 = GKYL_MU0; + // Geometry, magnetic field and gradients. + double R0 = 1.313; // Major radius of the simulation box [m]. + double a = 0.4701; // Minor radius at outboard midplane [m]. + double B0 = 1.91; // Magnetic field magnitude in the simulation box [T]. + double Ti0 = 2072*eV; + double eps_n = 0.2; + double kz_Ln = 1.0; + + double beta_hat = 0.1; // gkylscan can parameter. + double ky_rhos = 0.5; // gkylscan can parameter. + double nperiod = 5.0; + + double beta_e = beta_hat*2.0*me/mi; + double tau = 1.0; // Ti/Te. + // Derived paramters. + double r0 = 0.5*a; // Minor radius of the simulation box [m]. + double R = R0 + r0; // Major radius at center of simulation box [m]. + double B = B0 * R0/R; // Magnetic field at center of simulation box [T]. + double Te0 = Ti0/tau; // Electron temperature [J]. + double n0 = beta_e*B*B/(2*mu0*Te0); // Density [m^-3]. + double vte = sqrt(Te0/me); // Electron thermal speed [m/s]. + double vti = sqrt(Ti0/mi); // Ion thermal speed [m/s]. + double c_s = sqrt(Te0/mi); // Sound speed [m/s]. + double omega_ci = fabs(qi*B/mi); // Ion cyclotron frequency [rad/s]. + double rho_s = c_s/omega_ci; // Ion sound gyroradius [m + double ky_min = ky_rhos/rho_s; // Minimum perpendicular wavenumber [1/m]. + double L_n = R*eps_n; // Density gradient scale length [m]. + double kz_min = kz_Ln/L_n; // Minimum parallel wavenumber [1/m]. + // Expected frequency from dispersion relation: + // double omega = kz_min*c_s*sqrt(2/beta_e/(1+beta_hat*pow(ky_rhos,2))); + double va = vte/sqrt(beta_hat); // Alfvén speed [m/s]. + // double omega = kz_min*va; // Shear Alfvén wave frequency [rad/s]. + double omega = sqrt(pow(kz_min*va,2)/(1+beta_hat*pow(ky_rhos,2))); // KAW frequency [rad/s]. + // double omega = sqrt(pow(kz_min,2)*2/beta_e*pow(c_s,2)/(1+beta_hat*pow(ky_rhos,2))); + + // Velocity grid parameters. + double vpar_max_elc = 6.0*vte; // Max electron parallel velocity [m/s]. + double vpar_min_elc = -vpar_max_elc; // Min electron parallel velocity [m/s]. + double vpar_max_ion = 6.0*vti; // Max ion parallel velocity [m/s]. + double vpar_min_ion = -vpar_max_ion; // Min ion parallel + double mu_max_elc = me*pow(4*vte,2)/(2*B); // Max electron mu [J/T]. + double mu_max_ion = mi*pow(4*vti,2)/(2*B); // Max ion mu [J/T]. + + // Grid parameters + int Nz = 8; // Reduce this to delay recurrence effect. + int Nvpar = 32; // Increase this to delay recurrence effect. + int Nmu = 1; // useless + int poly_order = 1; + + double t_end = nperiod*2*M_PI/omega; // End time [s]. + int num_frames = 1; + double write_phase_freq = 1.0; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num = num_frames*100; + double dt_failure_tol = 1.0e-4; // Minimum allowable fraction of initial time-step. + int num_failures_max = 50; // Maximum allowable number of consecutive small time-steps. + + struct gk_app_ctx ctx = { + .cdim = cdim, + .vdim = vdim, + .mu0 = mu0, + .R = R, + .B = B, + .beta_hat = beta_hat, + .z_min = -M_PI/kz_min, .z_max = M_PI/kz_min, + + .kperp = ky_min, + .kz_min = kz_min, + + .me = me, .qe = qe, + .mi = mi, .qi = qi, + .n0 = n0, .Te0 = Te0, .Ti0 = Ti0, + + .Nz = Nz, + .Nvpar = Nvpar, + .Nmu = Nmu, + .cells = {Nz, Nvpar, Nmu}, + .poly_order = poly_order, + .vpar_max_elc = vpar_max_elc, .mu_max_elc = mu_max_elc, + .vpar_max_ion = vpar_max_ion, .mu_max_ion = mu_max_ion, + + .t_end = t_end, .num_frames = num_frames, + .write_phase_freq = write_phase_freq, + .int_diag_calc_num = int_diag_calc_num, + .dt_failure_tol = dt_failure_tol, + .num_failures_max = num_failures_max, + }; + return ctx; +} + +int main(int argc, char **argv) +{ + struct gkyl_app_args app_args = parse_app_args(argc, argv); + +#ifdef GKYL_HAVE_MPI + if (app_args.use_mpi) MPI_Init(&argc, &argv); +#endif + + if (app_args.trace_mem) { + gkyl_cu_dev_mem_debug_set(true); + gkyl_mem_debug_set(true); + } + + struct gk_app_ctx ctx = create_ctx(); // Context for init functions. + + int cells_x[ctx.cdim], cells_v[ctx.vdim]; + for (int d=0; d +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +// Define the context of the simulation. This is basically all the globals +struct gk_app_ctx { + int cdim, vdim; // Dimensionality. + double mu0; + + // Geometry and magnetic field. + double R; // Major radius of the simulation box [m]. + double a; // Minor radius at outboard midplane [m]. + double r; // Minor radius of the simulation box [m]. + double B; // Magnetic field magnitude in the simulation box [T]. + double z_min; double z_max; + + double kperp; // Perpendicular wavenumber. + double beta_hat; // Plasma beta parameter. + + // Plasma parameters. + double me; double qe; + double mi; double qi; + double n0; double Te0; double Ti0; + + // Grid parameters. + double kz_min; + double x_min, x_max; // Min and max x-coordinates. + int Nx, Nz; + int Nvpar; + int Nmu; + int cells[GKYL_MAX_DIM]; // Number of cells in all directions. + int poly_order; + double vpar_max_elc; double mu_max_elc; + double vpar_max_ion; double mu_max_ion; + + double t_end; // End time. + int num_frames; // Number of output frames. + double write_phase_freq; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num; // Number of integrated diagnostics computations (=INT_MAX for every step). + double dt_failure_tol; // Minimum allowable fraction of initial time-step. + int num_failures_max; // Maximum allowable number of consecutive small time-steps. +}; + +// Ion initial conditions. +void density_init_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + fout[0] = app->n0; +} +void upar_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} +void temp_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + fout[0] = app->Ti0; +} + +// Electron initial conditions. +void density_init_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + double z = xn[1]; + fout[0] = app->n0 * (1 + 1e-6*cos(app->kz_min*z)); +} +void upar_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} +void temp_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + fout[0] = app->Te0; +} + +// Slab magnetic equilibrium. +static inline void +mapc2p(double t, const double* xc, double* GKYL_RESTRICT xp, void* ctx) +{ + struct gk_app_ctx *app = ctx; + double x = xc[0], y = xc[1], z = xc[2]; + xp[0] = x; xp[1] = y; xp[2] = z; +} +void bfield_func(double t, const double *xc, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + fout[0] = 0.0; + fout[1] = 0.0; + fout[2] = app->B; +} + +void +write_ctx_to_json(const struct gk_app_ctx *ctx) +{ + FILE *fp = fopen("ctx.json", "w"); + if (!fp) { + perror("Error opening file for writing context"); + return; + } + + fprintf(fp, "{\n"); + fprintf(fp, " \"cdim\": %d,\n", ctx->cdim); + fprintf(fp, " \"vdim\": %d,\n", ctx->vdim); + fprintf(fp, " \"mu0\": %e,\n", ctx->mu0); + fprintf(fp, " \"R\": %e,\n", ctx->R); + fprintf(fp, " \"a\": %e,\n", ctx->a); + fprintf(fp, " \"r\": %e,\n", ctx->r); + fprintf(fp, " \"B\": %e,\n", ctx->B); + fprintf(fp, " \"z_min\": %e,\n", ctx->z_min); + fprintf(fp, " \"z_max\": %e,\n", ctx->z_max); + fprintf(fp, " \"kperp\": %e,\n", ctx->kperp); + fprintf(fp, " \"beta_hat\": %e,\n", ctx->beta_hat); + fprintf(fp, " \"me\": %e,\n", ctx->me); + fprintf(fp, " \"qe\": %e,\n", ctx->qe); + fprintf(fp, " \"mi\": %e,\n", ctx->mi); + fprintf(fp, " \"qi\": %e,\n", ctx->qi); + fprintf(fp, " \"n0\": %e,\n", ctx->n0); + fprintf(fp, " \"Te0\": %e,\n", ctx->Te0); + fprintf(fp, " \"Ti0\": %e,\n", ctx->Ti0); + fprintf(fp, " \"kz_min\": %e,\n", ctx->kz_min); + fprintf(fp, " \"Nz\": %d,\n", ctx->Nz); + fprintf(fp, " \"Nvpar\": %d,\n", ctx->Nvpar); + fprintf(fp, " \"Nmu\": %d,\n", ctx->Nmu); + fprintf(fp, " \"poly_order\": %d,\n", ctx->poly_order); + fprintf(fp, " \"vpar_max_elc\": %e,\n", ctx->vpar_max_elc); + fprintf(fp, " \"mu_max_elc\": %e,\n", ctx->mu_max_elc); + fprintf(fp, " \"vpar_max_ion\": %e,\n", ctx->vpar_max_ion); + fprintf(fp, " \"mu_max_ion\": %e,\n", ctx->mu_max_ion); + fprintf(fp, " \"t_end\": %e,\n", ctx->t_end); + fprintf(fp, " \"num_frames\": %d,\n", ctx->num_frames); + fprintf(fp, " \"write_phase_freq\": %e,\n", ctx->write_phase_freq); + fprintf(fp, " \"int_diag_calc_num\": %d,\n", ctx->int_diag_calc_num); + fprintf(fp, " \"dt_failure_tol\": %e,\n", ctx->dt_failure_tol); + fprintf(fp, " \"num_failures_max\": %d\n", ctx->num_failures_max); + fprintf(fp, "}\n"); + + fclose(fp); +} + +struct gk_app_ctx +create_ctx(void) +{ + int cdim = 2, vdim = 2; // Dimensionality. + // Universal constant parameters. + double eps0 = GKYL_EPSILON0, eV = GKYL_ELEMENTARY_CHARGE; + double qi = eV; // ion charge + double qe = -eV; // electron charge + double me = GKYL_ELECTRON_MASS; + double mi = 2*GKYL_PROTON_MASS; + double mu0 = GKYL_MU0; + // Geometry, magnetic field and gradients. + double R0 = 1.313; // Major radius of the simulation box [m]. + double a = 0.4701; // Minor radius at outboard midplane [m]. + double B0 = 1.91; // Magnetic field magnitude in the simulation box [T]. + double Ti0 = 2072*eV; + double eps_n = 0.2; + double kz_Ln = 1.0; + + double beta_hat = 0.1; // gkylscan can parameter. + double kperp_rhos = 0.5; // gkylscan can parameter. + double nperiod = 3.0; + + double beta_e = beta_hat*2.0*me/mi; + double tau = 1.0; // Ti/Te. + // Derived paramters. + double r0 = 0.5*a; // Minor radius of the simulation box [m]. + double R = R0 + r0; // Major radius at center of simulation box [m]. + double B = B0 * R0/R; // Magnetic field at center of simulation box [T]. + double Te0 = Ti0/tau; // Electron temperature [J]. + double n0 = beta_e*B*B/(2*mu0*Te0); // Density [m^-3]. + double vte = sqrt(Te0/me); // Electron thermal speed [m/s]. + double vti = sqrt(Ti0/mi); // Ion thermal speed [m/s]. + double c_s = sqrt(Te0/mi); // Sound speed [m/s]. + double omega_ci = fabs(qi*B/mi); // Ion cyclotron frequency [rad/s]. + double rho_s = c_s/omega_ci; // Ion sound gyroradius [m] + double L_n = R*eps_n; // Density gradient scale length [m]. + double kz_min = kz_Ln/L_n; // Minimum parallel wavenumber [1/m]. + // Expected frequency from dispersion relation: + // double omega = kz_min*c_s*sqrt(2/beta_e/(1+beta_hat*pow(ky_rhos,2))); + double va = vte/sqrt(beta_hat); // Alfvén speed [m/s]. + // double omega = kz_min*va; // Shear Alfvén wave frequency [rad/s]. + double omega = sqrt(pow(kz_min*va,2)/(1+beta_hat*pow(kperp_rhos,2))); // KAW frequency [rad/s]. + // double omega = sqrt(pow(kz_min,2)*2/beta_e*pow(c_s,2)/(1+beta_hat*pow(ky_rhos,2))); + + double kperp = kperp_rhos/rho_s; // Minimum perpendicular wavenumber [1/m]. + double Lx = M_PI/kperp; // Domain length in x-direction [m]. + + // Grid parameters + int Nz = 12; // Reduce this to delay recurrence effect. + double z_min = -M_PI/kz_min; // Min z-coordinate [m]. + double z_max = M_PI/kz_min; // Max z-coordinate [m]. + int Nvpar = 24; // Increase this to delay recurrence effect. + double vpar_max_elc = 6.0*vte; // Max electron parallel velocity [m/s]. + double vpar_min_elc = -vpar_max_elc; // Min electron parallel velocity [m/s]. + double vpar_max_ion = 6.0*vti; // Max ion parallel velocity [m/s]. + double vpar_min_ion = -vpar_max_ion; // Min ion parallel + // The x and mu directions are not playing a role in the dynamics. + int Nx = 2; // Number of cells in x-direction. + double x_min = -Lx/2; + double x_max = Lx/2; + int Nmu = 2; + double mu_max_elc = me*pow(4*vte,2)/(2*B); // Max electron mu [J/T]. + double mu_max_ion = mi*pow(4*vti,2)/(2*B); // Max ion mu [J/T]. + int poly_order = 1; + + double t_end = nperiod*2*M_PI/omega; // End time [s]. + int num_frames = 1; + double write_phase_freq = 1.0; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num = num_frames*1000; + double dt_failure_tol = 1.0e-4; // Minimum allowable fraction of initial time-step. + int num_failures_max = 50; // Maximum allowable number of consecutive small time-steps. + + struct gk_app_ctx ctx = { + .cdim = cdim, + .vdim = vdim, + .mu0 = mu0, + .R = R, + .B = B, + .beta_hat = beta_hat, + .me = me, .qe = qe, + .mi = mi, .qi = qi, + .n0 = n0, .Te0 = Te0, .Ti0 = Ti0, + + .Nx = Nx, + .Nz = Nz, + .Nvpar = Nvpar, + .Nmu = Nmu, + .x_min = x_min, + .x_max = x_max, + .z_min = z_min, + .z_max = z_max, + .kperp = kperp, + .kz_min = kz_min, + .vpar_max_elc = vpar_max_elc, .mu_max_elc = mu_max_elc, + .vpar_max_ion = vpar_max_ion, .mu_max_ion = mu_max_ion, + .cells = {Nx, Nz, Nvpar, Nmu}, + .poly_order = poly_order, + + .t_end = t_end, .num_frames = num_frames, + .write_phase_freq = write_phase_freq, + .int_diag_calc_num = int_diag_calc_num, + .dt_failure_tol = dt_failure_tol, + .num_failures_max = num_failures_max, + }; + return ctx; +} + +int main(int argc, char **argv) +{ + struct gkyl_app_args app_args = parse_app_args(argc, argv); + +#ifdef GKYL_HAVE_MPI + if (app_args.use_mpi) MPI_Init(&argc, &argv); +#endif + + if (app_args.trace_mem) { + gkyl_cu_dev_mem_debug_set(true); + gkyl_mem_debug_set(true); + } + + struct gk_app_ctx ctx = create_ctx(); // Context for init functions. + + int cells_x[ctx.cdim], cells_v[ctx.vdim]; + for (int d=0; d +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +// Define the context of the simulation. This is basically all the globals +struct gk_app_ctx { + int cdim, vdim; // Dimensionality. + double mu0; + + // Geometry and magnetic field. + double R; // Major radius of the simulation box [m]. + double a; // Minor radius at outboard midplane [m]. + double r; // Minor radius of the simulation box [m]. + double B; // Magnetic field magnitude in the simulation box [T]. + double z_min; double z_max; + + double kperp; // Perpendicular wavenumber. + double beta_hat; // Plasma beta parameter. + + // Plasma parameters. + double me; double qe; + double mi; double qi; + double n0; double Te0; double Ti0; + + // Grid parameters. + double kz_min; + double x_min, x_max; // Min and max x-coordinates. + double y_min, y_max; + int Nx, Ny, Nz; + int Nvpar; + int Nmu; + int cells[GKYL_MAX_DIM]; // Number of cells in all directions. + int poly_order; + double vpar_max_elc; double mu_max_elc; + double vpar_max_ion; double mu_max_ion; + + double t_end; // End time. + int num_frames; // Number of output frames. + double write_phase_freq; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num; // Number of integrated diagnostics computations (=INT_MAX for every step). + double dt_failure_tol; // Minimum allowable fraction of initial time-step. + int num_failures_max; // Maximum allowable number of consecutive small time-steps. +}; + +// Ion initial conditions. +void density_init_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + fout[0] = app->n0; +} +void upar_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} +void temp_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + fout[0] = app->Ti0; +} + +// Electron initial conditions. +void density_init_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + double z = xn[2]; + fout[0] = app->n0 * (1 + 1e-6*cos(app->kz_min*z)); +} +void upar_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} +void temp_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + fout[0] = app->Te0; +} + +// Slab magnetic equilibrium. +static inline void +mapc2p(double t, const double* xc, double* GKYL_RESTRICT xp, void* ctx) +{ + struct gk_app_ctx *app = ctx; + double x = xc[0], y = xc[1], z = xc[2]; + xp[0] = x; xp[1] = y; xp[2] = z; +} +void bfield_func(double t, const double *xc, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + fout[0] = 0.0; + fout[1] = 0.0; + fout[2] = app->B; +} + +void +write_ctx_to_json(const struct gk_app_ctx *ctx) +{ + FILE *fp = fopen("ctx.json", "w"); + if (!fp) { + perror("Error opening file for writing context"); + return; + } + + fprintf(fp, "{\n"); + fprintf(fp, " \"cdim\": %d,\n", ctx->cdim); + fprintf(fp, " \"vdim\": %d,\n", ctx->vdim); + fprintf(fp, " \"mu0\": %e,\n", ctx->mu0); + fprintf(fp, " \"R\": %e,\n", ctx->R); + fprintf(fp, " \"a\": %e,\n", ctx->a); + fprintf(fp, " \"r\": %e,\n", ctx->r); + fprintf(fp, " \"B\": %e,\n", ctx->B); + fprintf(fp, " \"z_min\": %e,\n", ctx->z_min); + fprintf(fp, " \"z_max\": %e,\n", ctx->z_max); + fprintf(fp, " \"kperp\": %e,\n", ctx->kperp); + fprintf(fp, " \"beta_hat\": %e,\n", ctx->beta_hat); + fprintf(fp, " \"me\": %e,\n", ctx->me); + fprintf(fp, " \"qe\": %e,\n", ctx->qe); + fprintf(fp, " \"mi\": %e,\n", ctx->mi); + fprintf(fp, " \"qi\": %e,\n", ctx->qi); + fprintf(fp, " \"n0\": %e,\n", ctx->n0); + fprintf(fp, " \"Te0\": %e,\n", ctx->Te0); + fprintf(fp, " \"Ti0\": %e,\n", ctx->Ti0); + fprintf(fp, " \"kz_min\": %e,\n", ctx->kz_min); + fprintf(fp, " \"Nz\": %d,\n", ctx->Nz); + fprintf(fp, " \"Nvpar\": %d,\n", ctx->Nvpar); + fprintf(fp, " \"Nmu\": %d,\n", ctx->Nmu); + fprintf(fp, " \"poly_order\": %d,\n", ctx->poly_order); + fprintf(fp, " \"vpar_max_elc\": %e,\n", ctx->vpar_max_elc); + fprintf(fp, " \"mu_max_elc\": %e,\n", ctx->mu_max_elc); + fprintf(fp, " \"vpar_max_ion\": %e,\n", ctx->vpar_max_ion); + fprintf(fp, " \"mu_max_ion\": %e,\n", ctx->mu_max_ion); + fprintf(fp, " \"t_end\": %e,\n", ctx->t_end); + fprintf(fp, " \"num_frames\": %d,\n", ctx->num_frames); + fprintf(fp, " \"write_phase_freq\": %e,\n", ctx->write_phase_freq); + fprintf(fp, " \"int_diag_calc_num\": %d,\n", ctx->int_diag_calc_num); + fprintf(fp, " \"dt_failure_tol\": %e,\n", ctx->dt_failure_tol); + fprintf(fp, " \"num_failures_max\": %d\n", ctx->num_failures_max); + fprintf(fp, "}\n"); + + fclose(fp); +} + +struct gk_app_ctx +create_ctx(void) +{ + int cdim = 3, vdim = 2; // Dimensionality. + // Universal constant parameters. + double eps0 = GKYL_EPSILON0, eV = GKYL_ELEMENTARY_CHARGE; + double qi = eV; // ion charge + double qe = -eV; // electron charge + double me = GKYL_ELECTRON_MASS; + double mi = 2*GKYL_PROTON_MASS; + double mu0 = GKYL_MU0; + // Geometry, magnetic field and gradients. + double R0 = 1.313; // Major radius of the simulation box [m]. + double a = 0.4701; // Minor radius at outboard midplane [m]. + double B0 = 1.91; // Magnetic field magnitude in the simulation box [T]. + double Ti0 = 2072*eV; + double eps_n = 0.2; + double kz_Ln = 1.0; + + // EZ case: + // double beta_hat = 0.1; // gkylscan can parameter. + // double kperp_rhos = 0.5; // gkylscan can parameter. + // Damping hard to catch case: + double beta_hat = 0.1; // gkylscan can parameter. + double kperp_rhos = 0.5; // gkylscan can parameter. + double nperiod = 0.1; + + double beta_e = beta_hat*2.0*me/mi; + double tau = 1.0; // Ti/Te. + // Derived paramters. + double r0 = 0.5*a; // Minor radius of the simulation box [m]. + double R = R0 + r0; // Major radius at center of simulation box [m]. + double B = B0 * R0/R; // Magnetic field at center of simulation box [T]. + double Te0 = Ti0/tau; // Electron temperature [J]. + double n0 = beta_e*B*B/(2*mu0*Te0); // Density [m^-3]. + double vte = sqrt(Te0/me); // Electron thermal speed [m/s]. + double vti = sqrt(Ti0/mi); // Ion thermal speed [m/s]. + double c_s = sqrt(Te0/mi); // Sound speed [m/s]. + double omega_ci = fabs(qi*B/mi); // Ion cyclotron frequency [rad/s]. + double rho_s = c_s/omega_ci; // Ion sound gyroradius [m] + double L_n = R*eps_n; // Density gradient scale length [m]. + double kz_min = kz_Ln/L_n; // Minimum parallel wavenumber [1/m]. + // Expected frequency from dispersion relation: + // double omega = kz_min*c_s*sqrt(2/beta_e/(1+beta_hat*pow(ky_rhos,2))); + double va = vte/sqrt(beta_hat); // Alfvén speed [m/s]. + // double omega = kz_min*va; // Shear Alfvén wave frequency [rad/s]. + double omega = sqrt(pow(kz_min*va,2)/(1+beta_hat*pow(kperp_rhos,2))); // KAW frequency [rad/s]. + // double omega = sqrt(pow(kz_min,2)*2/beta_e*pow(c_s,2)/(1+beta_hat*pow(ky_rhos,2))); + + double kperp = kperp_rhos/rho_s; // Minimum perpendicular wavenumber [1/m]. + double Lx = M_PI/kperp; // Domain length in x-direction [m]. + + // Grid parameters + int Nx = 8; // Number of cells in x-direction. + double x_min = -Lx/2; + double x_max = Lx/2; + int Ny = 8; + double y_min = -Lx/2; + double y_max = Lx/2; + int Nz = 12; // Reduce this to delay recurrence effect. + double z_min = -M_PI/kz_min; // Min z-coordinate [m]. + double z_max = M_PI/kz_min; // Max z-coordinate [m]. + int Nvpar = 24; // Increase this to delay recurrence effect. + double vpar_max_elc = 6.0*vte; // Max electron parallel velocity [m/s]. + double vpar_min_elc = -vpar_max_elc; // Min electron parallel velocity [m/s]. + double vpar_max_ion = 6.0*vti; // Max ion parallel velocity [m/s]. + double vpar_min_ion = -vpar_max_ion; // Min ion parallel + int Nmu = 2; + double mu_max_elc = me*pow(4*vte,2)/(2*B); // Max electron mu [J/T]. + double mu_max_ion = mi*pow(4*vti,2)/(2*B); // Max ion mu [J/T]. + int poly_order = 1; + + double t_end = nperiod*2*M_PI/omega; // End time [s]. + int num_frames = 1; + double write_phase_freq = 1.0; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num = num_frames*1000; + double dt_failure_tol = 1.0e-4; // Minimum allowable fraction of initial time-step. + int num_failures_max = 50; // Maximum allowable number of consecutive small time-steps. + + struct gk_app_ctx ctx = { + .cdim = cdim, + .vdim = vdim, + .mu0 = mu0, + .R = R, + .B = B, + .beta_hat = beta_hat, + .me = me, .qe = qe, + .mi = mi, .qi = qi, + .n0 = n0, .Te0 = Te0, .Ti0 = Ti0, + + .Nx = Nx, + .Ny = Ny, + .Nz = Nz, + .Nvpar = Nvpar, + .Nmu = Nmu, + .x_min = x_min, + .x_max = x_max, + .y_min = y_min, + .y_max = y_max, + .z_min = z_min, + .z_max = z_max, + .kperp = kperp, + .kz_min = kz_min, + .vpar_max_elc = vpar_max_elc, .mu_max_elc = mu_max_elc, + .vpar_max_ion = vpar_max_ion, .mu_max_ion = mu_max_ion, + .cells = {Nx, Ny, Nz, Nvpar, Nmu}, + .poly_order = poly_order, + + .t_end = t_end, .num_frames = num_frames, + .write_phase_freq = write_phase_freq, + .int_diag_calc_num = int_diag_calc_num, + .dt_failure_tol = dt_failure_tol, + .num_failures_max = num_failures_max, + }; + return ctx; +} + +int main(int argc, char **argv) +{ + struct gkyl_app_args app_args = parse_app_args(argc, argv); + +#ifdef GKYL_HAVE_MPI + if (app_args.use_mpi) MPI_Init(&argc, &argv); +#endif + + if (app_args.trace_mem) { + gkyl_cu_dev_mem_debug_set(true); + gkyl_mem_debug_set(true); + } + + struct gk_app_ctx ctx = create_ctx(); // Context for init functions. + + int cells_x[ctx.cdim], cells_v[ctx.vdim]; + for (int d=0; d +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +struct gk_asdex_ctx { + int cdim, vdim; // Dimensionality + + double chargeElc; // electron charge + double massElc; // electron mass + double chargeIon; // ion charge + double massIon; // ion mass + double Te; // electron temperature + double Ti; // ion temperature + double c_s; // sound speed + double nuElc; // electron collision frequency + double nuIon; // ion collision frequency + double B0; // reference magnetic field + double n0; // reference density + // Source parameters + double lambda_source; + double x_source; + // Domain parameters. + int Nx, Nz; // Number of cells in x,y,z. + int Nvpar, Nmu; // Number of cells in vpar,mu. + int cells[GKYL_MAX_DIM]; // Number of cells in all directions. + double Lx; // Box size in x + double Lz; // Box size in z + // Physical velocity space limits + double vpar_max_elc; // Velocity space extents in vparallel for electrons + double mu_max_elc; // Velocity space extents in mu for electrons + double vpar_max_ion; // Velocity space extents in vparallel for ions + double mu_max_ion; // Velocity space extents in mu for ions + // Computational velocity space limits + double vpar_min_elc_c, vpar_max_elc_c; + double mu_min_elc_c, mu_max_elc_c; + double vpar_min_ion_c, vpar_max_ion_c; + double mu_min_ion_c, mu_max_ion_c; + + double t_end; // End time. + int num_frames; // Number of output frames. + double write_phase_freq; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num; // Number of integrated diagnostics computations (=INT_MAX for every step). + double dt_failure_tol; // Minimum allowable fraction of initial time-step. + int num_failures_max; // Maximum allowable number of consecutive small time-steps. +}; + +double random0to1() +{ + return (double)rand() / (double)RAND_MAX; +} + +void +eval_density(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_asdex_ctx *app = ctx; + double x = xn[0], z = xn[1]; + double floor = 0.01; + + fout[0] = fmax(exp(-128.48398224*x+62.52416972), floor); // The coefficients from fitting the data points on Fig. 7 Carralero 2017 Nuclear Fusion. +} + +void +eval_upar(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} + +void +eval_temp_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_asdex_ctx *app = ctx; + double x = xn[0], z = xn[1]; + double eV = GKYL_ELEMENTARY_CHARGE; + + //fout[0] = (-2000.0*x + 360.0)*eV; // [16, 40] eV + fout[0] = (-50*tanh((x-0.15)/0.022) + 40) * eV; +} + +void +eval_temp_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_asdex_ctx *app = ctx; + double x = xn[0], z = xn[1]; + double eV = GKYL_ELEMENTARY_CHARGE; + + //fout[0] = (-3000.0*x + 552.0)*eV; // [36, 72] eV + fout[0] = (-90*tanh((x-0.15)/0.022) + 72) * eV; +} + +void +eval_density_source(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_asdex_ctx *app = ctx; + double x = xn[0], z = xn[1]; + double lambda_source = app->lambda_source; + double x_source = app->x_source; + double z_source = 0.0; + double Lz = app->Lz; + double source_floor = 1e-10; + + if (x < x_source + 3*lambda_source) + source_floor = 1e-2; + if (fabs(z) < Lz/4) + fout[0] = 6.0e21*fmax(exp(-(x-x_source)*(x-x_source)/((2*lambda_source)*(2*lambda_source))), source_floor); + else + fout[0] = 6.0e21*1e-40; +} + +void +eval_upar_source(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} + +void +eval_temp_elc_source(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_asdex_ctx *app = ctx; + double x = xn[0], z = xn[1]; + double lambda_source = app->lambda_source; + double x_source = app->x_source; + double Lz = app->Lz; + double eV = GKYL_ELEMENTARY_CHARGE; + if ((x < x_source + 3*lambda_source) && (fabs(z) < Lz/4)) + fout[0] = 40.0*eV; + else + fout[0] = 1.920292202211762*eV; +} + +void +eval_temp_ion_source(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_asdex_ctx *app = ctx; + double x = xn[0], z = xn[1]; + double lambda_source = app->lambda_source; + double x_source = app->x_source; + double Lz = app->Lz; + double eV = GKYL_ELEMENTARY_CHARGE; + if ((x < x_source + 3*lambda_source) && (fabs(z) < Lz/4)) + fout[0] = 72.0*eV; + else + fout[0] = 3.4565259639811785*eV; +} + +void +diffusion_D_func(double t, const double* GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void* ctx) +{ + struct sheath_ctx *app = ctx; + + fout[0] = 0.1; // Diffusivity [m^2/s]. +} + +// Velocity space mappings. +void mapc2p_vel_elc(double t, const double *vc, double* GKYL_RESTRICT vp, void *ctx) +{ + struct gk_asdex_ctx *app = ctx; + double vpar_max_elc = app->vpar_max_elc; + double mu_max_elc = app->mu_max_elc; + + double cvpar = vc[0], cmu = vc[1]; + // Linear map up to vpar_max/2, then quadratic. + if (fabs(cvpar) <= 0.5) + vp[0] = vpar_max_elc*cvpar; + else if (cvpar < -0.5) + vp[0] = -vpar_max_elc*2.0*pow(cvpar,2); + else + vp[0] = vpar_max_elc*2.0*pow(cvpar,2); + + // Quadratic map in mu. + vp[1] = mu_max_elc*pow(cmu,2); +} + +void mapc2p_vel_ion(double t, const double *vc, double* GKYL_RESTRICT vp, void *ctx) +{ + struct gk_asdex_ctx *app = ctx; + double vpar_max_ion = app->vpar_max_ion; + double mu_max_ion = app->mu_max_ion; + + double cvpar = vc[0], cmu = vc[1]; + // Linear map up to vpar_max/2, then quadratic. + if (fabs(cvpar) <= 0.5) + vp[0] = vpar_max_ion*cvpar; + else if (cvpar < -0.5) + vp[0] = -vpar_max_ion*2.0*pow(cvpar,2); + else + vp[0] = vpar_max_ion*2.0*pow(cvpar,2); + + // Quadratic map in mu. + vp[1] = mu_max_ion*pow(cmu,2); +} + +struct gk_asdex_ctx +create_ctx(void) +{ + int cdim = 2, vdim = 2; // Dimensionality. + + double eps0 = GKYL_EPSILON0; + double eV = GKYL_ELEMENTARY_CHARGE; + double mi = 2.014*GKYL_PROTON_MASS; // ion mass + double me = GKYL_ELECTRON_MASS; + double qi = eV; // ion charge + double qe = -eV; // electron charge + + double Te = 40.0*eV; + double Ti = 72.0*eV; + double B0 = 2.57; // Magnetic field magnitude in Tesla + double n0 = 6.0e18; // Particle density in 1/m^3 + + // Derived parameters. + double vtIon = sqrt(Ti/mi); + double vtElc = sqrt(Te/me); + double c_s = sqrt(Te/mi); + double omega_ci = fabs(qi*B0/mi); + double rho_s = c_s/omega_ci; + + + // Collision parameters. + double nuFrac = 1.0; + double logLambdaElc = 6.6 - 0.5*log(n0/1e20) + 1.5*log(Te/eV); + double nuElc = nuFrac*logLambdaElc*pow(eV, 4.0)*n0/(6.0*sqrt(2.0)*M_PI*sqrt(M_PI)*eps0*eps0*sqrt(me)*(Te*sqrt(Te))); // collision freq + + double logLambdaIon = 6.6 - 0.5*log(n0/1e20) + 1.5*log(Ti/eV); + double nuIon = nuFrac*logLambdaIon*pow(eV, 4.0)*n0/(12.0*M_PI*sqrt(M_PI)*eps0*eps0*sqrt(mi)*(Ti*sqrt(Ti))); + + // Simulation box size (psi, theta). + double Lx = 0.172 - 0.150; + double Lz = (M_PI-1.0e-14)*2; + + // Source parameters. + double x_source = 0.160; // changed from 0.16167 + double lambda_source = 0.0004; // Changed from 0.00034, characteristic length scale of n and T + + // Physical velocity space limits + double vpar_max_elc = 6.0*vtElc; + double mu_max_elc = me*(4.0*vtElc)*(4.0*vtElc)/(2.0*B0); + + double vpar_max_ion = 6.0*vtIon; + double mu_max_ion = mi*(4.0*vtIon)*(4.0*vtIon)/(2.0*B0); + + // Computational velocity space limits. + double vpar_min_ion_c = -1.0/sqrt(2.0); + double vpar_max_ion_c = 1.0/sqrt(2.0); + double mu_min_ion_c = 0.; + double mu_max_ion_c = 1.; + // Computational velocity space limits. + double vpar_min_elc_c = -1.0/sqrt(2.0); + double vpar_max_elc_c = 1.0/sqrt(2.0); + double mu_min_elc_c = 0.; + double mu_max_elc_c = 1.; + + int Nx = 16; // Number of cells in x. + int Nz = 16; // Number of cells in z, originally 8. + int Nvpar = 16; // Number of cells in vpar. + int Nmu = 8; // Number of cells in mu. + + double t_end = 10.0e-6; + double num_frames = 20; + double write_phase_freq = 0.2; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num = num_frames*100; + double dt_failure_tol = 1.0e-4; // Minimum allowable fraction of initial time-step. + int num_failures_max = 20; // Maximum allowable number of consecutive small time-steps. + + struct gk_asdex_ctx ctx = { + .cdim = cdim, + .vdim = vdim, + .chargeElc = qe, + .massElc = me, + .chargeIon = qi, + .massIon = mi, + .Te = Te, + .Ti = Ti, + .c_s = c_s, + .nuElc = nuElc, + .nuIon = nuIon, + .B0 = B0, + .n0 = n0, + .Lx = Lx, + .Lz = Lz, + .lambda_source = lambda_source, + .x_source = x_source, + // Physical velocity space limits + .vpar_max_elc = vpar_max_elc, + .mu_max_elc = mu_max_elc, + .vpar_max_ion = vpar_max_ion, + .mu_max_ion = mu_max_ion, + // Computational velocity space limits + .vpar_min_elc_c = vpar_min_elc_c, + .vpar_max_elc_c = vpar_max_elc_c, + .mu_min_elc_c = mu_min_elc_c, + .mu_max_elc_c = mu_max_elc_c, + .vpar_min_ion_c = vpar_min_ion_c, + .vpar_max_ion_c = vpar_max_ion_c, + .mu_min_ion_c = mu_min_ion_c, + .mu_max_ion_c = mu_max_ion_c, + .Nx = Nx, + .Nz = Nz, + .Nvpar = Nvpar, + .Nmu = Nmu, + .cells = {Nx, Nz, Nvpar, Nmu}, + .t_end = t_end, + .num_frames = num_frames, + .write_phase_freq = write_phase_freq, + .int_diag_calc_num = int_diag_calc_num, + .dt_failure_tol = dt_failure_tol, + .num_failures_max = num_failures_max, + }; + return ctx; +} + +int +main(int argc, char **argv) +{ + struct gkyl_app_args app_args = parse_app_args(argc, argv); + +#ifdef GKYL_HAVE_MPI + if (app_args.use_mpi) MPI_Init(&argc, &argv); +#endif + + if (app_args.trace_mem) { + gkyl_cu_dev_mem_debug_set(true); + gkyl_mem_debug_set(true); + } + + struct gk_asdex_ctx ctx = create_ctx(); // Context for init functions. + + int cells_x[ctx.cdim], cells_v[ctx.vdim]; + for (int d=0; d +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +// Define the context of the simulation. This is basically all the globals +struct gk_app_ctx { + int cdim, vdim; // Dimensionality. + + // Geometry and magnetic field. + double B_axis; + double R0; + double Rc; + double Bv0; + + // Plasma parameters. + double me; double qe; + double mi; double qi; + double n0; double Te0; double Ti0; + + // Collisions. + double nu_frac; + + // Source parameters. + double P_SOL; + double S0; + double xSource; + double lambdaSource; + + // Grid parameters. + double Lx; // Domain size in radial direction. + double Ly; // Domain size in binormal direction. + double Lz; // Domain size along magnetic field. + double x_min; double x_max; + double y_min; double y_max; + double z_min; double z_max; + int Nx; + int Ny; + int Nz; + int Nvpar; + int Nmu; + int cells[GKYL_MAX_DIM]; // Number of cells in all directions. + int poly_order; + double vpar_max_elc; double mu_max_elc; + double vpar_max_ion; double mu_max_ion; + + double t_end; // End time. + int num_frames; // Number of output frames. + double write_phase_freq; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num; // Number of integrated diagnostics computations (=INT_MAX for every step). + double dt_failure_tol; // Minimum allowable fraction of initial time-step. + int num_failures_max; // Maximum allowable number of consecutive small time-steps. +}; + +double random0to1() +{ + return (double)rand() / (double)RAND_MAX; +} + +// Common source density profiles. +double sourceDensity(double t, const double * GKYL_RESTRICT xn, void *ctx) +{ + double x = xn[0], z = xn[2]; + double sourceFloor = 0.1; + + struct gk_app_ctx *app = ctx; + double S0 = app->S0; + double lambdaSource = app->lambdaSource; + double xSource = app->xSource; + double Lz = app->Lz; + + if (x < xSource) { + sourceFloor = 0.5; + } + if (fabs(z) < Lz/4) { + return 0.90625*S0*fmax(exp(-0.5*pow((x-xSource)/lambdaSource,2)),sourceFloor); + } else { + return 1e-10; + } +} + +// Common source temperature profile. +double sourceTemperature(double t, const double * GKYL_RESTRICT xn, void *ctx) +{ + double x = xn[0], z = xn[2]; + struct gk_app_ctx *app = ctx; + double xSource = app->xSource; + double lambdaSource = app->lambdaSource; + if (x < xSource + 3 * lambdaSource) { + return 80*GKYL_ELEMENTARY_CHARGE; + } else { + return 30*GKYL_ELEMENTARY_CHARGE; + } +} + +// Initial density. +double densityInit(double t, const double * GKYL_RESTRICT xn, void *ctx) +{ + double x = xn[0], y = xn[1], z = xn[2]; + struct gk_app_ctx *app = ctx; + double Ls = app->Lz/4; + double xSource[3] = {x, y, 0}; + double effectiveSource = sourceDensity(t, xSource, ctx); + double c_ss = sqrt(5/3*sourceTemperature(t, xSource, ctx)/app->mi); + double nPeak = 4*sqrt(5)/3/c_ss*Ls*effectiveSource/2; + double perturb = 1e-3*(random0to1() - 0.5)*2.0; + if (fabs(z) <= Ls) { + return nPeak * (1 + sqrt(1-pow(z/Ls,2)))/2 * (1+perturb); + } else { + return nPeak/2 * (1+perturb); + } +} + +// Initial temperature. +double temperatureInit(double t, const double * GKYL_RESTRICT xn, void *ctx) +{ + double x = xn[0], y = xn[1], z = xn[2]; + struct gk_app_ctx *app = ctx; + double xSource = app->xSource; + double lambdaSource = app->lambdaSource; + if (x < xSource + 3*lambdaSource) { + return 80*GKYL_ELEMENTARY_CHARGE; + } else { + return 20*GKYL_ELEMENTARY_CHARGE; + } +} + +// Initial ion drift speed. +double driftSpeed(const double * GKYL_RESTRICT xn, void *ctx){ + double x = xn[0], y = xn[1], z = xn[2]; + struct gk_app_ctx *app = ctx; + double xSource = app->xSource; + double lambdaSource = app->lambdaSource; + double Lz = app->Lz; + double mi = app->mi; + double Te; + if (x < xSource + 3*lambdaSource) { + Te = 50*GKYL_ELEMENTARY_CHARGE; + } else { + Te = 20*GKYL_ELEMENTARY_CHARGE; + } + double Ls = Lz/4; + if (fabs(z) <= Ls) { + return z/Ls*sqrt(Te/mi); + } else { + return (z > 0 ? 1.0 : -1.0)*sqrt(Te/mi); + } +} + +// Radial coordinate mapping. +double Rx(const double *xc, void *ctx) +{ + return xc[0]; +} + +// Toroidal magnetic field. +double Bphi(const double *xc, void *ctx) +{ + double x = xc[0]; + struct gk_app_ctx *app = ctx; + double B_axis = app->B_axis; + double R0 = app->R0; + double R = Rx(xc, ctx); + return B_axis*R0/R; +} + +// Vertical magnetic field. +double Bvert(const double *xc, void *ctx) +{ + struct gk_app_ctx *app = ctx; + double Bv0 = app->Bv0; + return Bv0; +} + +// Magnetic field magnitude. +double bmag(const double *xc, void *ctx) +{ + double Bt = Bphi(xc, ctx); + double Bv = Bvert(xc, ctx); + return sqrt(pow(Bt,2) + pow(Bv,2)); +} + +// Field line pitch. +double thetax(const double *xc, void *ctx) +{ + return asin(Bvert(xc, ctx)/bmag(xc, ctx)); +} + +// Parallel coordinate mapping. +double Zx(const double *xc, void *ctx) +{ + double theta = thetax(xc, ctx); + return xc[2]*sin(theta); +} + +double phix(const double *xc, void *ctx) +{ + double x = xc[0], y = xc[1], z = xc[2]; + struct gk_app_ctx *app = ctx; + double Rc = app->Rc; + double Bt = Bphi(xc, ctx); + double Bv = Bvert(xc, ctx); + + // double theta = asin(Lp/Lt); + // return (y/sin(theta) + z*cos(theta))/Rc; // Original Shi mapping. + + double theta = thetax(xc, ctx); + return (y/sin(theta) + z*cos(theta))/x; + // return y/Rc + (Bt * z*sin(theta))/(Bv * x); // Helical sheared mapping. +} + +// Interface function calls. +void source_density(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ fout[0] = sourceDensity(t, xn, ctx); } +void source_temperature(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ fout[0] = sourceTemperature(t, xn, ctx); } +void density_init(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ fout[0] = densityInit(t, xn, ctx); } +void temp_init(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ fout[0] = temperatureInit(t, xn, ctx); } +void upar_ion_init(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ fout[0] = driftSpeed(xn, ctx); } +void bfield_func(double t, const double *xc, double* GKYL_RESTRICT fout, void *ctx) +{ + // Cartesian formulation of the magnetic field. + double Bt = Bphi(xc, ctx); + double Bv = Bvert(xc, ctx); + double phi = phix(xc, ctx); + fout[0] = -Bt*sin(phi); + fout[1] = Bt*cos(phi); + fout[2] = Bv; +} +void zero_func(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ fout[0] = 0.0; } + +// Geometry evaluation functions for the gk app +void mapc2p(double t, const double *xc, double* GKYL_RESTRICT xp, void *ctx) +{ + double x = xc[0], y = xc[1], z = xc[2]; + + double theta = thetax(xc, ctx); + + // Map to cylindrical (R, Z, phi) coordinates. + double R = x; + double Z = z*sin(theta); + double phi = phix(xc, ctx); + // Map to Cartesian (X, Y, Z) coordinates. + double X = R*cos(phi); + double Y = R*sin(phi); + + xp[0] = X; xp[1] = Y; xp[2] = Z; +} + +struct gk_app_ctx +create_ctx(void) +{ + int cdim = 3, vdim = 2; // Dimensionality. + + // Universal constant parameters. + double eps0 = GKYL_EPSILON0, eV = GKYL_ELEMENTARY_CHARGE; + double mp = GKYL_PROTON_MASS, me = GKYL_ELECTRON_MASS; + double qi = eV; // ion charge + double qe = -eV; // electron charge + + // Plasma parameters. Chosen based on the value of a cubic sline + // between the last TS data inside the LCFS and the probe data in + // in the far SOL, near R=0.475 m. + double AMU = 2.01410177811; + double mi = mp*AMU; // Deuterium ions. + double Te0 = 40*eV; + double Ti0 = 40*eV; + double n0 = 7e18*10; // [1/m^3] + + // Geometry and magnetic field. + double B_axis = 0.5; + double R0 = 0.85; + double a0 = 0.5; + double Lp = 2.4; // Poloidal length at x0. + double Lt = 8.0; // Toroidal length at x0. + double Rc = R0 + a0; + double B0 = B_axis*R0/Rc; + + double sintheta = Lp/Lt; + double Bv0 = B0*sintheta; + + // Source parameters. + double P_SOL = 8.1e5; + double S0 = 5.7691e23*10; // Multiplied by 10 to increase beta + double xSource = Rc - 0.05; + double lambdaSource = 0.005; + + // Collisions; + double nuFrac = 0.1; + + // Derived parameters. + double vte = sqrt(Te0/me), vti = sqrt(Ti0/mi); // Thermal speeds. + double c_s = sqrt(Te0/mi); // Sound speed. + double omega_ci = fabs(qi*B0/mi); // Ion cyclotron frequency. + double rho_s = c_s/omega_ci; // Ion sound gyroradius. + + // Box size. + double Lx = 50*rho_s; + double Ly = 100*rho_s; + double Lz = Lt; // [m] + + double x_min = Rc - Lx/2; + double x_max = Rc + Lx/2; + double y_min = -Ly/2; + double y_max = Ly/2; + double z_min = -Lz/2; + double z_max = Lz/2; + + // Grid parameters + int Nx = 4; + int Ny = 4; + int Nz = 4; + int Nvpar = 4; + int Nmu = 4; + int poly_order = 1; + + double vpar_max_elc = 4.*vte; + double mu_max_elc = 12*me*pow(vte,2)/(2*B0); + double vpar_max_ion = 4.*vti; + double mu_max_ion = 12*mi*pow(vti,2)/(2*B0); + + double t_end = 2.e-7; // End time, should terminate in 43 steps. + int num_frames = 1; + double write_phase_freq = 1.0; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num = num_frames*100; + double dt_failure_tol = 1.0e-4; // Minimum allowable fraction of initial time-step. + int num_failures_max = 20; // Maximum allowable number of consecutive small time-steps. + + struct gk_app_ctx ctx = { + .cdim = cdim, + .vdim = vdim, + .B_axis = B_axis, + .R0 = R0, + .Rc = Rc, + .Bv0 = Bv0, + .Lx = Lx, + .Ly = Ly, + .Lz = Lz, + .x_min = x_min, .x_max = x_max, + .y_min = y_min, .y_max = y_max, + .z_min = z_min, .z_max = z_max, + + .me = me, .qe = qe, + .mi = mi, .qi = qi, + .n0 = n0, .Te0 = Te0, .Ti0 = Ti0, + + .nu_frac = nuFrac, + + .P_SOL = P_SOL, + .S0 = S0, + .xSource = xSource, + .lambdaSource = lambdaSource, + + .Nx = Nx, + .Ny = Ny, + .Nz = Nz, + .Nvpar = Nvpar, + .Nmu = Nmu, + .cells = {Nx, Ny, Nz, Nvpar, Nmu}, + .poly_order = poly_order, + .vpar_max_elc = vpar_max_elc, .mu_max_elc = mu_max_elc, + .vpar_max_ion = vpar_max_ion, .mu_max_ion = mu_max_ion, + + .t_end = t_end, .num_frames = num_frames, + .write_phase_freq = write_phase_freq, + .int_diag_calc_num = int_diag_calc_num, + .dt_failure_tol = dt_failure_tol, + .num_failures_max = num_failures_max, + }; + return ctx; +} + + +int +main(int argc, char **argv) +{ + struct gkyl_app_args app_args = parse_app_args(argc, argv); + +#ifdef GKYL_HAVE_MPI + if (app_args.use_mpi) MPI_Init(&argc, &argv); +#endif + + if (app_args.trace_mem) { + gkyl_cu_dev_mem_debug_set(true); + gkyl_mem_debug_set(true); + } + + struct gk_app_ctx ctx = create_ctx(); // Context for init functions. + + int cells_x[ctx.cdim], cells_v[ctx.vdim]; + for (int d=0; d +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +// Define the context of the simulation. This is basically all the globals +struct gk_app_ctx { + int cdim, vdim; // Dimensionality. + + // Geometry and magnetic field. + double B_axis; + double R0; + double Rc; + double Bv0; + + // Plasma parameters. + double me; double qe; + double mi; double qi; + double n0; double Te0; double Ti0; + + // Collisions. + double nu_frac; + + // Source parameters. + double P_SOL; + double S0; + double xSource; + double lambdaSource; + + // Grid parameters. + double Lx; // Domain size in radial direction. + double Lz; // Domain size along magnetic field. + double x_min; double x_max; + double z_min; double z_max; + int Nx; + int Nz; + int Nvpar; + int Nmu; + int cells[GKYL_MAX_DIM]; // Number of cells in all directions. + int poly_order; + double vpar_max_elc; double mu_max_elc; + double vpar_max_ion; double mu_max_ion; + + double t_end; // End time. + int num_frames; // Number of output frames. + double write_phase_freq; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num; // Number of integrated diagnostics computations (=INT_MAX for every step). + double dt_failure_tol; // Minimum allowable fraction of initial time-step. + int num_failures_max; // Maximum allowable number of consecutive small time-steps. +}; + +// Common source density profiles. +double sourceDensity(double t, const double * GKYL_RESTRICT xn, void *ctx) +{ + double x = xn[0], z = xn[1]; + double sourceFloor = 0.1; + + struct gk_app_ctx *app = ctx; + double S0 = app->S0; + double lambdaSource = app->lambdaSource; + double xSource = app->xSource; + double Lz = app->Lz; + + if (x < xSource) { + sourceFloor = 0.5; + } + if (fabs(z) < Lz/4) { + return 0.90625*S0*fmax(exp(-0.5*pow((x-xSource)/lambdaSource,2)),sourceFloor); + } else { + return 1e-10; + } +} + +// Common source temperature profile. +double sourceTemperature(double t, const double * GKYL_RESTRICT xn, void *ctx) +{ + double x = xn[0], z = xn[1]; + struct gk_app_ctx *app = ctx; + double xSource = app->xSource; + double lambdaSource = app->lambdaSource; + if (x < xSource + 3 * lambdaSource) { + return 80*GKYL_ELEMENTARY_CHARGE; + } else { + return 30*GKYL_ELEMENTARY_CHARGE; + } +} + +// Initial density. +double densityInit(double t, const double * GKYL_RESTRICT xn, void *ctx) +{ + double x = xn[0], z = xn[1]; + struct gk_app_ctx *app = ctx; + double Ls = app->Lz/4; + double xSource[2] = {x, 0}; + double effectiveSource = sourceDensity(t, xSource, ctx); + double c_ss = sqrt(5/3*sourceTemperature(t, xSource, ctx)/app->mi); + double nPeak = 4*sqrt(5)/3/c_ss*Ls*effectiveSource/2; + pcg64_random_t rng = gkyl_pcg64_init(0); + double perturb = 1e-3*(gkyl_pcg64_rand_double(&rng) - 0.5)*2.0; + if (fabs(z) <= Ls) { + return nPeak * (1 + sqrt(1-pow(z/Ls,2)))/2 * (1+perturb); + } else { + return nPeak/2 * (1+perturb); + } +} + +// Initial temperature. +double temperatureInit(double t, const double * GKYL_RESTRICT xn, void *ctx) +{ + double x = xn[0], z = xn[1]; + struct gk_app_ctx *app = ctx; + double xSource = app->xSource; + double lambdaSource = app->lambdaSource; + if (x < xSource + 3*lambdaSource) { + return 80*GKYL_ELEMENTARY_CHARGE; + } else { + return 20*GKYL_ELEMENTARY_CHARGE; + } +} + +// Initial ion drift speed. +double driftSpeed(const double * GKYL_RESTRICT xn, void *ctx){ + double x = xn[0], z = xn[1]; + struct gk_app_ctx *app = ctx; + double xSource = app->xSource; + double lambdaSource = app->lambdaSource; + double Lz = app->Lz; + double mi = app->mi; + double Te; + if (x < xSource + 3*lambdaSource) { + Te = 50*GKYL_ELEMENTARY_CHARGE; + } else { + Te = 20*GKYL_ELEMENTARY_CHARGE; + } + double Ls = Lz/4; + if (fabs(z) <= Ls) { + return z/Ls*sqrt(Te/mi); + } else { + return (z > 0 ? 1.0 : -1.0)*sqrt(Te/mi); + } +} + +void +diffusion_D_func(double t, const double* GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void* ctx) +{ + struct sheath_ctx *app = ctx; + + fout[0] = 0.5; // Diffusivity [m^2/s]. +} + +// Radial coordinate mapping. +double Rx(const double *xc, void *ctx) +{ + return xc[0]; +} + +// Toroidal magnetic field. +double Bphi(const double *xc, void *ctx) +{ + double x = xc[0]; + struct gk_app_ctx *app = ctx; + double B_axis = app->B_axis; + double R0 = app->R0; + double R = Rx(xc, ctx); + return B_axis*R0/R; +} + +// Vertical magnetic field. +double Bvert(const double *xc, void *ctx) +{ + struct gk_app_ctx *app = ctx; + double Bv0 = app->Bv0; + return Bv0; +} + +// Magnetic field magnitude. +double bmag(const double *xc, void *ctx) +{ + double Bt = Bphi(xc, ctx); + double Bv = Bvert(xc, ctx); + return sqrt(pow(Bt,2) + pow(Bv,2)); +} + +// Field line pitch. +double thetax(const double *xc, void *ctx) +{ + return asin(Bvert(xc, ctx)/bmag(xc, ctx)); +} + +// Parallel coordinate mapping. +double Zx(const double *xc, void *ctx) +{ + double theta = thetax(xc, ctx); + return xc[2]*sin(theta); +} + +double phix(const double *xc, void *ctx) +{ + double x = xc[0], y = xc[1], z = xc[2]; + struct gk_app_ctx *app = ctx; + double Rc = app->Rc; + double Bt = Bphi(xc, ctx); + double Bv = Bvert(xc, ctx); + double theta = thetax(xc, ctx); + + return y/Rc + (Bt * z*sin(theta))/(Bv * x); +} + +// Interface function calls. +void source_density(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ fout[0] = sourceDensity(t, xn, ctx); } +void source_temperature(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ fout[0] = sourceTemperature(t, xn, ctx); } +void density_init(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ fout[0] = densityInit(t, xn, ctx); } +void temp_init(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ fout[0] = temperatureInit(t, xn, ctx); } +void upar_ion_init(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ fout[0] = driftSpeed(xn, ctx); } +void bfield_func(double t, const double *xc, double* GKYL_RESTRICT fout, void *ctx) +{ + // Cartesian formulation of the magnetic field. + double Bt = Bphi(xc, ctx); + double Bv = Bvert(xc, ctx); + double phi = phix(xc, ctx); + fout[0] = -Bt*sin(phi); + fout[1] = Bt*cos(phi); + fout[2] = Bv; +} +void zero_func(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ fout[0] = 0.0; } + +// Geometry evaluation functions for the gk app +void mapc2p(double t, const double *xc, double* GKYL_RESTRICT xp, void *ctx) +{ + double x = xc[0], y = xc[1], z = xc[2]; + + // Map to cylindrical (R, Z, phi) coordinates. + double R = Rx(xc, ctx); + double Z = Zx(xc, ctx); + double phi = phix(xc, ctx); + // Map to Cartesian (X, Y, Z) coordinates. + double X = R*cos(phi); + double Y = R*sin(phi); + + xp[0] = X; xp[1] = Y; xp[2] = Z; +} + +struct gk_app_ctx +create_ctx(void) +{ + int cdim = 2, vdim = 2; // Dimensionality. + + // Universal constant parameters. + double eps0 = GKYL_EPSILON0, eV = GKYL_ELEMENTARY_CHARGE; + double mp = GKYL_PROTON_MASS, me = GKYL_ELECTRON_MASS; + double qi = eV; // ion charge + double qe = -eV; // electron charge + + // Plasma parameters. Chosen based on the value of a cubic sline + // between the last TS data inside the LCFS and the probe data in + // in the far SOL, near R=0.475 m. + double AMU = 2.01410177811; + double mi = mp*AMU; // Deuterium ions. + double Te0 = 40*eV; + double Ti0 = 40*eV; + double n0 = 7e18*10; // [1/m^3] + + // Geometry and magnetic field. + double B_axis = 0.5; + double R0 = 0.85; + double a0 = 0.5; + double Lp = 2.4; // Poloidal length at x0. + double Lt = 8.0; // Toroidal length at x0. + double Rc = R0 + a0; + double B0 = B_axis*R0/Rc; + + double sintheta = Lp/Lt; + double Bv0 = B0*sintheta; + + // Source parameters. + double P_SOL = 8.1e5; + double S0 = 5.7691e23*10; // Multiplied by 10 to increase beta + double xSource = Rc - 0.05; + double lambdaSource = 0.005; + + // Collisions; + double nuFrac = 0.1; + + // Derived parameters. + double vte = sqrt(Te0/me), vti = sqrt(Ti0/mi); // Thermal speeds. + double c_s = sqrt(Te0/mi); // Sound speed. + double omega_ci = fabs(qi*B0/mi); // Ion cyclotron frequency. + double rho_s = c_s/omega_ci; // Ion sound gyroradius. + + // Box size. + double Lx = 50*rho_s; + double Lz = Lt; // [m] + + double x_min = Rc - Lx/2; + double x_max = Rc + Lx/2; + double z_min = -Lz/2; + double z_max = Lz/2; + + // Grid parameters + int Nx = 8; + int Nz = 4; + int Nvpar = 4; + int Nmu = 2; + int poly_order = 1; + + double vpar_max_elc = 4.*vte; + double mu_max_elc = 12*me*pow(vte,2)/(2*B0); + double vpar_max_ion = 4.*vti; + double mu_max_ion = 12*mi*pow(vti,2)/(2*B0); + + double t_end = 1.e-6; // End time, should terminate in 43 steps. + int num_frames = 1; + double write_phase_freq = 1.0; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num = num_frames*100; + double dt_failure_tol = 1.0e-4; // Minimum allowable fraction of initial time-step. + int num_failures_max = 20; // Maximum allowable number of consecutive small time-steps. + + struct gk_app_ctx ctx = { + .cdim = cdim, + .vdim = vdim, + .B_axis = B_axis, + .R0 = R0, + .Rc = Rc, + .Bv0 = Bv0, + .Lx = Lx, + .Lz = Lz, + .x_min = x_min, .x_max = x_max, + .z_min = z_min, .z_max = z_max, + + .me = me, .qe = qe, + .mi = mi, .qi = qi, + .n0 = n0, .Te0 = Te0, .Ti0 = Ti0, + + .nu_frac = nuFrac, + + .P_SOL = P_SOL, + .S0 = S0, + .xSource = xSource, + .lambdaSource = lambdaSource, + + .Nx = Nx, + .Nz = Nz, + .Nvpar = Nvpar, + .Nmu = Nmu, + .cells = {Nx, Nz, Nvpar, Nmu}, + .poly_order = poly_order, + .vpar_max_elc = vpar_max_elc, .mu_max_elc = mu_max_elc, + .vpar_max_ion = vpar_max_ion, .mu_max_ion = mu_max_ion, + + .t_end = t_end, .num_frames = num_frames, + .write_phase_freq = write_phase_freq, + .int_diag_calc_num = int_diag_calc_num, + .dt_failure_tol = dt_failure_tol, + .num_failures_max = num_failures_max, + }; + return ctx; +} + + +int +main(int argc, char **argv) +{ + struct gkyl_app_args app_args = parse_app_args(argc, argv); + +#ifdef GKYL_HAVE_MPI + if (app_args.use_mpi) MPI_Init(&argc, &argv); +#endif + + if (app_args.trace_mem) { + gkyl_cu_dev_mem_debug_set(true); + gkyl_mem_debug_set(true); + } + + struct gk_app_ctx ctx = create_ctx(); // Context for init functions. + + int cells_x[ctx.cdim], cells_v[ctx.vdim]; + for (int d=0; dB_axis; - double R0 = app->R0; + double R_axis = app->R_axis; double R = Rx(xc, ctx); - return B_axis*R0/R; + return B_axis*R_axis/R; } // Vertical magnetic field. @@ -174,11 +175,14 @@ double Bvert(const double *xc, void *ctx) { struct gk_app_ctx *app = ctx; double Bv0 = app->Bv0; - return Bv0; + int n = app->n; + double R0 = app->R0; + double R = Rx(xc, ctx); + return Bv0 * pow(R/R0, n); } // Magnetic field magnitude. -double bmag(const double *xc, void *ctx) +double Bmag(const double *xc, void *ctx) { double Bt = Bphi(xc, ctx); double Bv = Bvert(xc, ctx); @@ -188,7 +192,7 @@ double bmag(const double *xc, void *ctx) // Field line pitch. double thetax(const double *xc, void *ctx) { - return asin(Bvert(xc, ctx)/bmag(xc, ctx)); + return asin(Bvert(xc, ctx)/Bmag(xc, ctx)); } // Parallel coordinate mapping. @@ -202,21 +206,21 @@ double phix(const double *xc, void *ctx) { double x = xc[0], y = xc[1], z = xc[2]; struct gk_app_ctx *app = ctx; - double Rc = app->Rc; + double R_axis = app->R_axis; double Bt = Bphi(xc, ctx); double Bv = Bvert(xc, ctx); // Original Shi mapping. This mapping does not pass the right hand check. // double theta = asin(Lp/Lt); - // return (y/sin(theta) + z*cos(theta))/Rc; // O + // return (y/sin(theta) + z*cos(theta))/R0; // O // This mapping passes right hand check but does not conserve particle! // double theta = thetax(xc, ctx); // return (y/sin(theta) + z*cos(theta))/x; - // Helical sheared mapping. Passes right hand check and conserves particle. + // Helical sheared mapping. Passes right hand check and conserves particle (ES). double theta = thetax(xc, ctx); - return y/Rc + (Bt * z*sin(theta))/(Bv * x); + return y/R_axis + (Bt * z*sin(theta))/(Bv * x); } // Interface function calls. @@ -281,12 +285,14 @@ create_ctx(void) // Geometry and magnetic field. double B_axis = 0.5; - double R0 = 0.85; + double R_axis = 0.85; double a0 = 0.5; double Lp = 2.4; // Poloidal length at x0. double Lt = 8.0; // Toroidal length at x0. - double Rc = R0 + a0; - double B0 = B_axis*R0/Rc; + int shear = -2; + double R0 = R_axis + a0; + double B0 = B_axis*R_axis/R0; + int n = shear + 2; double sintheta = Lp/Lt; double Bv0 = B0*sintheta; @@ -294,7 +300,7 @@ create_ctx(void) // Source parameters. double P_SOL = 8.1e5; double S0 = 5.7691e23*10; // Multiplied by 10 to increase beta - double xSource = Rc - 0.05; + double xSource = R0 - 0.05; double lambdaSource = 0.005; // Collisions; @@ -311,8 +317,8 @@ create_ctx(void) double Ly = 100*rho_s; double Lz = Lt; // [m] - double x_min = Rc - Lx/2; - double x_max = Rc + Lx/2; + double x_min = R0 - Lx/2; + double x_max = R0 + Lx/2; double y_min = -Ly/2; double y_max = Ly/2; double z_min = -Lz/2; @@ -342,9 +348,10 @@ create_ctx(void) .cdim = cdim, .vdim = vdim, .B_axis = B_axis, + .R_axis = R_axis, .R0 = R0, - .Rc = Rc, .Bv0 = Bv0, + .n = n, .Lx = Lx, .Ly = Ly, .Lz = Lz, @@ -429,7 +436,7 @@ main(int argc, char **argv) }, .collisionless = { - .type = GKYL_GK_COLLISIONLESS_ES, + .type = GKYL_GK_COLLISIONLESS_EM, }, .collisions = { @@ -505,7 +512,7 @@ main(int argc, char **argv) }, .collisionless = { - .type = GKYL_GK_COLLISIONLESS_ES, + .type = GKYL_GK_COLLISIONLESS_EM, }, .collisions = { @@ -566,7 +573,13 @@ main(int argc, char **argv) { .dir = 0, .edge = GKYL_LOWER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, { .dir = 0, .edge = GKYL_UPPER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, }, + .ampere_bcs = { + { .dir = 0, .edge = GKYL_LOWER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, + { .dir = 0, .edge = GKYL_UPPER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, + }, + .mu0 = GKYL_MU0, .time_rate_diagnostics = true, + .remove_em_zonal = false, }; // GK app diff --git a/gyrokinetic/creg/rt_gk_helical_zvert_3x2v_p1.c b/gyrokinetic/creg/rt_gk_helical_zvert_3x2v_p1.c index b5a364a3f8..c6d306fa15 100644 --- a/gyrokinetic/creg/rt_gk_helical_zvert_3x2v_p1.c +++ b/gyrokinetic/creg/rt_gk_helical_zvert_3x2v_p1.c @@ -21,11 +21,12 @@ struct gk_app_ctx { int cdim, vdim; // Dimensionality. // Geometry and magnetic field. - double R0; + double R_axis; double a0; - double B0; + double B_axis; double Bvx0; double x0; + double R0; double H; int n; // Exponent for vertical magnetic field profile. @@ -175,22 +176,20 @@ double Bphi(const double *xc, void *ctx) { double x = xc[0]; struct gk_app_ctx *app = ctx; - double B0 = app->B0; - double R0 = app->R0; - + double B_axis = app->B_axis; + double R_axis = app->R_axis; double R = Rx(xc, ctx); - return B0*R0/R; + return B_axis*R_axis/R; } double Bvert(const double *xc, void *ctx) { struct gk_app_ctx *app = ctx; double Bvx0 = app->Bvx0; - double x0 = app->x0; int n = app->n; + double R0 = app->R0; double R = Rx(xc, ctx); - - return Bvx0 * pow(R/x0, n); + return Bvx0 * pow(R/R0, n); } double Bmag(const double *xc, void *ctx) @@ -205,11 +204,11 @@ double phix(const double *xc, void *ctx) { double x = xc[0], y = xc[1], z = xc[2]; struct gk_app_ctx *app = ctx; - double R0 = app->R0; + double R_axis = app->R_axis; double Lz = app->Lz; double Bt = Bphi(xc, ctx); double Bv = Bvert(xc, ctx); - return y/R0 + (Bt * z)/(Bv * x); + return y/R_axis + (Bt * z)/(Bv * x); } double qprofile(const double *xc, void *ctx) @@ -283,18 +282,19 @@ create_ctx(void) double n0 = 7e18*10; // [1/m^3] // Geometry and magnetic field. - double B0 = 0.5; - double R0 = 0.85; + double B_axis = 0.5; + double R_axis = 0.85; double a0 = 0.5; double H = 2.4; // Poloidal length (used to get the field line pitch). double Lcx0 = 8.0; // Connection length in the middle of the domain. int shear = -2; - double x0 = R0 + a0; + double x0 = R_axis + a0; + double R0 = x0; const double vec0[3] = {x0, 0.0, 0.0}; - double Bc = Bphi(vec0, &(struct gk_app_ctx){.B0=B0, .R0=R0}); - double Bvx0 = H * Bc / Lcx0; + double B0 = Bphi(vec0, &(struct gk_app_ctx){.B_axis=B_axis, .R_axis=R_axis}); + double Bvx0 = H * B0 / Lcx0; double n = shear + 2; // Source parameters. @@ -310,7 +310,7 @@ create_ctx(void) // Derived parameters. double vte = sqrt(Te0/me), vti = sqrt(Ti0/mi); // Thermal speeds. double c_s = sqrt(Te0/mi); // Sound speed. - double omega_ci = fabs(qi*B0/mi); // Ion cyclotron frequency. + double omega_ci = fabs(qi*B_axis/mi); // Ion cyclotron frequency. double rho_s = c_s/omega_ci; // Ion sound gyroradius. // Box size. @@ -334,9 +334,9 @@ create_ctx(void) int poly_order = 1; double vpar_max_elc = 4.*vte; - double mu_max_elc = 12*me*pow(vte,2)/(2*B0); + double mu_max_elc = 12*me*pow(vte,2)/(2*B_axis); double vpar_max_ion = 4.*vti; - double mu_max_ion = 12*mi*pow(vti,2)/(2*B0); + double mu_max_ion = 12*mi*pow(vti,2)/(2*B_axis); double t_end = 1.e-6; // End time, should terminate in 43 steps. int num_frames = 1; @@ -349,8 +349,9 @@ create_ctx(void) .cdim = cdim, .vdim = vdim, - .B0 = B0, + .B_axis = B_axis, .Bvx0 = Bvx0, + .R_axis = R_axis, .R0 = R0, .a0 = a0, .H = H, @@ -443,7 +444,7 @@ main(int argc, char **argv) }, .collisionless = { - .type = GKYL_GK_COLLISIONLESS_ES, + .type = GKYL_GK_COLLISIONLESS_EM, }, .collisions = { @@ -519,7 +520,7 @@ main(int argc, char **argv) }, .collisionless = { - .type = GKYL_GK_COLLISIONLESS_ES, + .type = GKYL_GK_COLLISIONLESS_EM, }, .collisions = { @@ -576,11 +577,15 @@ main(int argc, char **argv) // field struct gkyl_gyrokinetic_field field = { - .gkfield_id = GKYL_GK_FIELD_ES, .poisson_bcs = { { .dir = 0, .edge = GKYL_LOWER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, { .dir = 0, .edge = GKYL_UPPER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, }, + .ampere_bcs = { + { .dir = 0, .edge = GKYL_LOWER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, + { .dir = 0, .edge = GKYL_UPPER_EDGE, .type = GKYL_BC_GK_FIELD_DIRICHLET, .value = {0.0} }, + }, + .mu0 = GKYL_MU0, .time_rate_diagnostics = true, }; diff --git a/gyrokinetic/creg/rt_gk_kbm_3x2v_p1.c b/gyrokinetic/creg/rt_gk_kbm_3x2v_p1.c new file mode 100644 index 0000000000..9053beaf62 --- /dev/null +++ b/gyrokinetic/creg/rt_gk_kbm_3x2v_p1.c @@ -0,0 +1,572 @@ +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +// Define the context of the simulation. This is basically all the globals +struct gk_app_ctx { + int cdim, vdim; // Dimensionality. + double mu0; + + // Geometry and magnetic field. + double R; // Major radius of the simulation box [m]. + double a; // Minor radius at outboard midplane [m]. + double r; // Minor radius of the simulation box [m]. + double B; // Magnetic field magnitude in the simulation box [T]. + + double kperp; // Perpendicular wavenumber. + double beta_hat; // Plasma beta parameter. + + // Plasma parameters. + double me; double qe; + double mi; double qi; + double n0; double Te0; double Ti0; + + // Initial profile parameters. + double r0, wTi, wTe, wN, kTi, kTe, kN; + double L_n, L_Te, L_Ti; + + // Grid parameters. + int Nx, Ny, Nz, Nvpar, Nmu; + int cells[GKYL_MAX_DIM]; // Number of cells in all directions. + int poly_order; + double x_min, y_min, z_min; + double x_max, y_max, z_max; + double vpar_max_elc, mu_max_elc; + double vpar_max_ion, mu_max_ion; + + double t_end; // End time. + int num_frames; // Number of output frames. + double write_phase_freq; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num; // Number of integrated diagnostics computations (=INT_MAX for every step). + double dt_failure_tol; // Minimum allowable fraction of initial time-step. + int num_failures_max; // Maximum allowable number of consecutive small time-steps. +}; + +// Ion initial conditions. +void density_init_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + double x = xn[0]; + double y = xn[1]; + double z = xn[2]; + + double kN = app->kN; + double wN = app->wN; + double a = app->a; + double Lref = app->R; + double r0 = app->r0; + + fout[0] = app->n0;// * exp(-kN * wN * a/Lref * tanh((x-r0)/(wN * a))); +} +void upar_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} +void temp_ion(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + double x = xn[0]; + double y = xn[1]; + double z = xn[2]; + + double kTi = app->kTi; + double wTi = app->wTi; + double a = app->a; + double Lref = app->R; + double r0 = app->r0; + + fout[0] = app->Ti0 ;//* exp(-kTi * wTi * a/Lref * tanh((x-r0)/(wTi * a))); +} + +// Electron initial conditions. +void density_init_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + double x = xn[0]; + double y = xn[1]; + double z = xn[2]; + + double kN = app->kN; + double wN = app->wN; + double a = app->a; + double Lref = app->R; + double r0 = app->r0; + + fout[0] = app->n0;// * exp(-kN * wN * a/Lref * tanh((x-r0)/(wN * a))); +} +void upar_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + fout[0] = 0.0; +} +void temp_elc(double t, const double * GKYL_RESTRICT xn, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + double x = xn[0]; + double y = xn[1]; + double z = xn[2]; + + double kTe = app->kTe; + double wTe = app->wTe; + double a = app->a; + double Lref = app->R; + double r0 = app->r0; + + fout[0] = app->Te0;// * exp(-kTe * wTe * a/Lref * tanh((x-r0)/(wTe * a))); +} + +// Slab magnetic equilibrium. +static inline void +mapc2p(double t, const double* xc, double* GKYL_RESTRICT xp, void* ctx) +{ + struct gk_app_ctx *app = ctx; + double x = xc[0], y = xc[1], z = xc[2]; + xp[0] = x; xp[1] = y; xp[2] = z; +} +void bfield_func(double t, const double *xc, double* GKYL_RESTRICT fout, void *ctx) +{ + struct gk_app_ctx *app = ctx; + double x = xc[0], y = xc[1], z = xc[2]; + fout[0] = 0.0; + fout[1] = 0.0; + fout[2] = app->B*app->R/(app->R + x); // this may be wrong! +} + +void mapc2p_vel_elc(double t, const double *vc, double* GKYL_RESTRICT vp, void *ctx) +{ + struct gk_app_ctx *app = ctx; + double vpar_max_elc = app->vpar_max_elc; + double mu_max_elc = app->mu_max_elc; + + double cvpar = vc[0], cmu = vc[1]; + // Linear map up to vpar_max/2, then quadratic. + if (fabs(cvpar) <= 0.5) + vp[0] = vpar_max_elc*cvpar; + else if (cvpar < -0.5) + vp[0] = -vpar_max_elc*2.0*pow(cvpar,2); + else + vp[0] = vpar_max_elc*2.0*pow(cvpar,2); + + // Quadratic map in mu. + vp[1] = mu_max_elc*pow(cmu,2); +} + +void mapc2p_vel_ion(double t, const double *vc, double* GKYL_RESTRICT vp, void *ctx) +{ + struct gk_app_ctx *app = ctx; + double vpar_max_ion = app->vpar_max_ion; + double mu_max_ion = app->mu_max_ion; + + double cvpar = vc[0], cmu = vc[1]; + // Linear map up to vpar_max/2, then quadratic. + if (fabs(cvpar) <= 0.5) + vp[0] = vpar_max_ion*cvpar; + else if (cvpar < -0.5) + vp[0] = -vpar_max_ion*2.0*pow(cvpar,2); + else + vp[0] = vpar_max_ion*2.0*pow(cvpar,2); + + // Quadratic map in mu. + vp[1] = mu_max_ion*pow(cmu,2); +} + + +void +write_ctx_to_json(const struct gk_app_ctx *ctx) +{ + FILE *fp = fopen("ctx.json", "w"); + if (!fp) { + perror("Error opening file for writing context"); + return; + } + + fprintf(fp, "{\n"); + fprintf(fp, " \"cdim\": %d,\n", ctx->cdim); + fprintf(fp, " \"vdim\": %d,\n", ctx->vdim); + fprintf(fp, " \"mu0\": %e,\n", ctx->mu0); + fprintf(fp, " \"R\": %e,\n", ctx->R); + fprintf(fp, " \"a\": %e,\n", ctx->a); + fprintf(fp, " \"r\": %e,\n", ctx->r); + fprintf(fp, " \"B\": %e,\n", ctx->B); + fprintf(fp, " \"x_min\": %e,\n", ctx->x_min); + fprintf(fp, " \"x_max\": %e,\n", ctx->x_max); + fprintf(fp, " \"y_min\": %e,\n", ctx->y_min); + fprintf(fp, " \"y_max\": %e,\n", ctx->y_max); + fprintf(fp, " \"z_min\": %e,\n", ctx->z_min); + fprintf(fp, " \"z_max\": %e,\n", ctx->z_max); + fprintf(fp, " \"kperp\": %e,\n", ctx->kperp); + fprintf(fp, " \"beta_hat\": %e,\n", ctx->beta_hat); + fprintf(fp, " \"me\": %e,\n", ctx->me); + fprintf(fp, " \"qe\": %e,\n", ctx->qe); + fprintf(fp, " \"mi\": %e,\n", ctx->mi); + fprintf(fp, " \"qi\": %e,\n", ctx->qi); + fprintf(fp, " \"n0\": %e,\n", ctx->n0); + fprintf(fp, " \"Te0\": %e,\n", ctx->Te0); + fprintf(fp, " \"Ti0\": %e,\n", ctx->Ti0); + fprintf(fp, " \"r0\": %e,\n", ctx->r0); + fprintf(fp, " \"wTi\": %e,\n", ctx->wTi); + fprintf(fp, " \"wTe\": %e,\n", ctx->wTe); + fprintf(fp, " \"wN\": %e,\n", ctx->wN); + fprintf(fp, " \"kTi\": %e,\n", ctx->kTi); + fprintf(fp, " \"kTe\": %e,\n", ctx->kTe); + fprintf(fp, " \"kN\": %e,\n", ctx->kN); + fprintf(fp, " \"L_n\": %e,\n", ctx->L_n); + fprintf(fp, " \"L_Te\": %e,\n", ctx->L_Te); + fprintf(fp, " \"L_Ti\": %e,\n", ctx->L_Ti); + fprintf(fp, " \"Nx\": %d,\n", ctx->Nx); + fprintf(fp, " \"Ny\": %d,\n", ctx->Ny); + fprintf(fp, " \"Nz\": %d,\n", ctx->Nz); + fprintf(fp, " \"Nvpar\": %d,\n", ctx->Nvpar); + fprintf(fp, " \"Nmu\": %d,\n", ctx->Nmu); + fprintf(fp, " \"poly_order\": %d,\n", ctx->poly_order); + fprintf(fp, " \"vpar_max_elc\": %e,\n", ctx->vpar_max_elc); + fprintf(fp, " \"mu_max_elc\": %e,\n", ctx->mu_max_elc); + fprintf(fp, " \"vpar_max_ion\": %e,\n", ctx->vpar_max_ion); + fprintf(fp, " \"mu_max_ion\": %e,\n", ctx->mu_max_ion); + fprintf(fp, " \"t_end\": %e,\n", ctx->t_end); + fprintf(fp, " \"num_frames\": %d,\n", ctx->num_frames); + fprintf(fp, " \"write_phase_freq\": %e,\n", ctx->write_phase_freq); + fprintf(fp, " \"int_diag_calc_num\": %d,\n", ctx->int_diag_calc_num); + fprintf(fp, " \"dt_failure_tol\": %e,\n", ctx->dt_failure_tol); + fprintf(fp, " \"num_failures_max\": %d\n", ctx->num_failures_max); + fprintf(fp, "}\n"); + + fclose(fp); +} + +struct gk_app_ctx +create_ctx(void) +{ + int cdim = 3, vdim = 2; // Dimensionality. + // Universal constant parameters. + double eps0 = GKYL_EPSILON0, eV = GKYL_ELEMENTARY_CHARGE; + double qi = eV; // ion charge + double qe = -eV; // electron charge + double me = GKYL_ELECTRON_MASS; + double mi = 2*GKYL_PROTON_MASS; + double mu0 = GKYL_MU0; + // Geometry, magnetic field and gradients. + double R0 = 1.313; // Major radius of the simulation box [m]. + double a = 0.4701; // Minor radius at outboard midplane [m]. + double B0 = 1.91; // Magnetic field magnitude in the simulation box [T]. + double Ti0 = 1000*eV; + double eps_n = 0.2; // aspect ratio (= normalized density gradient length). + double eta_e = 2.0; // Normalized electron temperature gradient. + double eta_i = 2.5; // Normalized ion temperature gradient. + double ky_rhoi = 0.5; // Normalized perpendicular wavenumber. + double kz_Ln = 0.1; // Normalized parallel wavenumber. + double beta_i = 0.0045; // Ion beta. + double tau = 1.0; // Temperature ratio Ti/Te. + + // Derived paramters. + double r0 = 0.5*a; // Minor radius of the simulation box [m]. + double R = R0 + r0; // Major radius at center of simulation box [m]. + double B = B0 * R0/R; // Magnetic field at center of simulation box [T]. + double Te0 = Ti0/tau; // Electron temperature [J]. + double n0 = beta_i*B*B/(2*mu0*Ti0); // Density [m^-3]. + double vte = sqrt(Te0/me); // Electron thermal speed [m/s]. + double vti = sqrt(Ti0/mi); // Ion thermal speed [m/s]. + double c_s = sqrt(Te0/mi); // Sound speed [m/s]. + double omega_ci = fabs(qi*B/mi); // Ion cyclotron frequency [rad/s]. + double rho_s = c_s/omega_ci; // Ion sound gyroradius [m] + double rho_e = vte/omega_ci; // Electron thermal gyroradius [m]. + double rho_i = vti/omega_ci; // Ion thermal gyroradius [m]. + double ky_min = ky_rhoi / rho_i; // Minimum ky. + double dr = 2*M_PI/ky_min; // Cell size in x-direction [m]. + double L_n = R * eps_n; + double L_Te = L_n/eta_e; + double L_Ti = L_n/eta_i; + double kz_min = kz_Ln / L_n; + double L_parallel = 2*M_PI/kz_min; + + double kTi = R0/L_Ti; + double kTe = R0/L_Te; + double kN = R0/L_n; + double wTi = 0.3; + double wTe = 0.3; + double wN = 0.3; + + // Grid parameters + int Nx = 16; + int Ny = 8; + int Nz = 8; + int Nvpar = 16; + int Nmu = 8; + + double x_min = r0; + double x_max = r0 * (1+2*wN); + double y_min = -dr/2; + double y_max = dr/2; + double z_min = -L_parallel/2; // Min z-coordinate [m]. + double z_max = L_parallel/2; // Max z-coordinate [m]. + double vpar_max_elc = 4.0*vte; // Max electron parallel velocity [m/s]. + double vpar_min_elc = -vpar_max_elc; // Min electron parallel velocity [m/s]. + double vpar_max_ion = 4.0*vti; // Max ion parallel velocity [m/s]. + double vpar_min_ion = -vpar_max_ion; // Min ion parallel + double mu_max_elc = me*pow(4*vte,2)/(2*B); // Max electron mu [J/T]. + double mu_max_ion = mi*pow(4*vti,2)/(2*B); // Max ion mu [J/T]. + + int poly_order = 1; + + double t_end = 0.01*L_n/vti; // End time [s]. + int num_frames = 100; + double write_phase_freq = 0.1; // Frequency of writing phase-space diagnostics (as a fraction of num_frames). + int int_diag_calc_num = num_frames*1000; + double dt_failure_tol = 1.0e-4; // Minimum allowable fraction of initial time-step. + int num_failures_max = 50; // Maximum allowable number of consecutive small time-steps. + + struct gk_app_ctx ctx = { + .cdim = cdim, + .vdim = vdim, + .mu0 = mu0, + .R = R, + .B = B, + .me = me, .qe = qe, + .mi = mi, .qi = qi, + .n0 = n0, .Te0 = Te0, .Ti0 = Ti0, + + .kN = kN, .kTi = kTi, .kTe = kTe, + .wN = wN, .wTi = wTi, .wTe = wTe, + .r0 = r0, .L_n = L_n, .L_Te = L_Te, .L_Ti = L_Ti, + .a = a, + + .Nx = Nx, + .Ny = Ny, + .Nz = Nz, + .Nvpar = Nvpar, + .Nmu = Nmu, + .x_min = x_min, + .x_max = x_max, + .y_min = y_min, + .y_max = y_max, + .z_min = z_min, + .z_max = z_max, + .vpar_max_elc = vpar_max_elc, .mu_max_elc = mu_max_elc, + .vpar_max_ion = vpar_max_ion, .mu_max_ion = mu_max_ion, + .cells = {Nx, Ny, Nz, Nvpar, Nmu}, + .poly_order = poly_order, + + .t_end = t_end, .num_frames = num_frames, + .write_phase_freq = write_phase_freq, + .int_diag_calc_num = int_diag_calc_num, + .dt_failure_tol = dt_failure_tol, + .num_failures_max = num_failures_max, + }; + return ctx; +} + +int main(int argc, char **argv) +{ + struct gkyl_app_args app_args = parse_app_args(argc, argv); + +#ifdef GKYL_HAVE_MPI + if (app_args.use_mpi) MPI_Init(&argc, &argv); +#endif + + if (app_args.trace_mem) { + gkyl_cu_dev_mem_debug_set(true); + gkyl_mem_debug_set(true); + } + + struct gk_app_ctx ctx = create_ctx(); // Context for init functions. + + int cells_x[ctx.cdim], cells_v[ctx.vdim]; + for (int d=0; d +GKYL_CU_DH double dg_gyrokinetic_add_apar_vol_1x1v_ser_p1(const double *w, const double *dxv, const double *vmap, const double *vmapSq, + const double q_, const double m_, const double *bmag, const double *jacobtot_inv, const double *dualcurlbhatoverB, const double *bioverJB, + const double *b_i, const double *phi, const double *apar, const double *fin, double* GKYL_RESTRICT out) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // bmag: magnetic field amplitude. + // jacobtot_inv: reciprocal of the conf-space jacobian time the guiding center coordinate Jacobian. + // dualcurlbhatoverB: dual curl of bhat over B. + // bioverJB: b_i over J times B. + // b_i: covariant components of the field aligned unit vector. + // apar: parallel component of magnetic vector potential. + // phi: electrostatic potential . + // fin: Distribution function. + // out: output increment. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + + + const double *b_1 = &b_i[0]; + const double *b_2 = &b_i[2]; + const double *b_3 = &b_i[4]; + + const double *bioverJB_1 = &bioverJB[0]; + const double *bioverJB_2 = &bioverJB[2]; + const double *bioverJB_3 = &bioverJB[4]; + + const double *dualcurlbhatoverB_1 = &dualcurlbhatoverB[0]; + const double *dualcurlbhatoverB_2 = &dualcurlbhatoverB[2]; + const double *dualcurlbhatoverB_3 = &dualcurlbhatoverB[4]; + + double hamil[6] = {0.}; + hamil[0] = 1.4142135623730951*phi[0]*q_+0.7071067811865475*vmapSq[0]*m_; + hamil[1] = 1.4142135623730951*phi[1]*q_; + hamil[2] = 0.7071067811865475*vmapSq[1]*m_; + hamil[4] = 0.7071067811865475*vmapSq[2]*m_; + + double vmap2 = vmap[1]*vmap[1]; + + double hamil2[2] = {0.}; + hamil2[0] = hamil[2]*hamil[2]; + hamil2[1] = hamil[4]*hamil[4]; + + double alphax[6] = {0.}; + alphax[0] = ((0.7071067811865475*apar[1]*dualcurlbhatoverB_3[1]*hamil[2]+0.7071067811865475*apar[0]*dualcurlbhatoverB_3[0]*hamil[2])*rdx2)/(vmap[1]*m_); + alphax[1] = ((0.7071067811865475*apar[0]*dualcurlbhatoverB_3[1]*hamil[2]+0.7071067811865475*dualcurlbhatoverB_3[0]*apar[1]*hamil[2])*rdx2)/(vmap[1]*m_); + alphax[2] = ((1.5811388300841895*apar[1]*dualcurlbhatoverB_3[1]*hamil[4]+1.5811388300841895*apar[0]*dualcurlbhatoverB_3[0]*hamil[4])*rdx2)/(vmap[1]*m_); + alphax[3] = ((1.5811388300841895*apar[0]*dualcurlbhatoverB_3[1]*hamil[4]+1.5811388300841895*dualcurlbhatoverB_3[0]*apar[1]*hamil[4])*rdx2)/(vmap[1]*m_); + + + out[1] += 0.8660254037844386*(alphax[3]*fin[3]+alphax[2]*fin[2]+alphax[1]*fin[1]+alphax[0]*fin[0]); + out[3] += 0.7745966692414834*alphax[3]*fin[5]+0.7745966692414833*alphax[2]*fin[4]+0.8660254037844386*(alphax[1]*fin[3]+fin[1]*alphax[3]+alphax[0]*fin[2]+fin[0]*alphax[2]); + out[5] += 0.8660254037844386*alphax[1]*fin[5]+0.8660254037844387*alphax[0]*fin[4]+0.7745966692414834*(alphax[3]*fin[3]+alphax[2]*fin[2]); + + double alphavpar[6] = {0.}; + alphavpar[0] = ((-(0.7071067811865475*apar[1]*dualcurlbhatoverB_3[1]*hamil[1])-0.7071067811865475*apar[0]*dualcurlbhatoverB_3[0]*hamil[1])*rdx2)/(vmap[1]*m_); + alphavpar[1] = ((-(0.7071067811865475*apar[0]*dualcurlbhatoverB_3[1]*hamil[1])-0.7071067811865475*dualcurlbhatoverB_3[0]*apar[1]*hamil[1])*rdx2)/(vmap[1]*m_); + + + out[2] += 0.8660254037844386*(alphavpar[1]*fin[1]+alphavpar[0]*fin[0]); + out[3] += 0.8660254037844386*(alphavpar[0]*fin[1]+fin[0]*alphavpar[1]); + out[4] += 1.9364916731037085*(alphavpar[1]*fin[3]+alphavpar[0]*fin[2]); + out[5] += 1.9364916731037085*(alphavpar[0]*fin[3]+alphavpar[1]*fin[2]); + + return 0.; +} diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apar_vol_1x2v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apar_vol_1x2v_ser_p1.c new file mode 100644 index 0000000000..b4adbc1bb1 --- /dev/null +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apar_vol_1x2v_ser_p1.c @@ -0,0 +1,83 @@ +#include +GKYL_CU_DH double dg_gyrokinetic_add_apar_vol_1x2v_ser_p1(const double *w, const double *dxv, const double *vmap, const double *vmapSq, + const double q_, const double m_, const double *bmag, const double *jacobtot_inv, const double *dualcurlbhatoverB, const double *bioverJB, + const double *b_i, const double *phi, const double *apar, const double *fin, double* GKYL_RESTRICT out) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // bmag: magnetic field amplitude. + // jacobtot_inv: reciprocal of the conf-space jacobian time the guiding center coordinate Jacobian. + // dualcurlbhatoverB: dual curl of bhat over B. + // bioverJB: b_i over J times B. + // b_i: covariant components of the field aligned unit vector. + // apar: parallel component of magnetic vector potential. + // phi: electrostatic potential . + // fin: Distribution function. + // out: output increment. + + double rdx2 = 2.0/dxv[0]; + double rdvpar2 = 2.0/dxv[1]; + double rdmu2 = 2.0/dxv[2]; + + + const double *b_1 = &b_i[0]; + const double *b_2 = &b_i[2]; + const double *b_3 = &b_i[4]; + + const double *bioverJB_1 = &bioverJB[0]; + const double *bioverJB_2 = &bioverJB[2]; + const double *bioverJB_3 = &bioverJB[4]; + + const double *dualcurlbhatoverB_1 = &dualcurlbhatoverB[0]; + const double *dualcurlbhatoverB_2 = &dualcurlbhatoverB[2]; + const double *dualcurlbhatoverB_3 = &dualcurlbhatoverB[4]; + + double hamil[12] = {0.}; + hamil[0] = 2.0*phi[0]*q_+vmapSq[0]*m_+1.4142135623730951*bmag[0]*vmap[2]; + hamil[1] = 2.0*phi[1]*q_+1.4142135623730951*bmag[1]*vmap[2]; + hamil[2] = vmapSq[1]*m_; + hamil[3] = 1.4142135623730951*bmag[0]*vmap[3]; + hamil[5] = 1.4142135623730951*bmag[1]*vmap[3]; + hamil[8] = vmapSq[2]*m_; + + double vmap2 = vmap[1]*vmap[1]; + + double hamil2[2] = {0.}; + hamil2[0] = hamil[2]*hamil[2]; + hamil2[1] = hamil[8]*hamil[8]; + + double alphax[12] = {0.}; + alphax[0] = ((0.7071067811865475*apar[1]*dualcurlbhatoverB_3[1]*hamil[2]+0.7071067811865475*apar[0]*dualcurlbhatoverB_3[0]*hamil[2])*rdx2)/(vmap[1]*m_); + alphax[1] = ((0.7071067811865475*apar[0]*dualcurlbhatoverB_3[1]*hamil[2]+0.7071067811865475*dualcurlbhatoverB_3[0]*apar[1]*hamil[2])*rdx2)/(vmap[1]*m_); + alphax[2] = ((1.5811388300841895*apar[1]*dualcurlbhatoverB_3[1]*hamil[8]+1.5811388300841895*apar[0]*dualcurlbhatoverB_3[0]*hamil[8])*rdx2)/(vmap[1]*m_); + alphax[4] = ((1.5811388300841895*apar[0]*dualcurlbhatoverB_3[1]*hamil[8]+1.5811388300841895*dualcurlbhatoverB_3[0]*apar[1]*hamil[8])*rdx2)/(vmap[1]*m_); + + + out[1] += 0.6123724356957944*(alphax[4]*fin[4]+alphax[2]*fin[2]+alphax[1]*fin[1]+alphax[0]*fin[0]); + out[4] += 0.5477225575051661*(alphax[4]*fin[9]+alphax[2]*fin[8])+0.6123724356957944*(alphax[1]*fin[4]+fin[1]*alphax[4]+alphax[0]*fin[2]+fin[0]*alphax[2]); + out[5] += 0.6123724356957944*(alphax[4]*fin[7]+alphax[2]*fin[6]+alphax[1]*fin[5]+alphax[0]*fin[3]); + out[7] += 0.5477225575051661*(alphax[4]*fin[11]+alphax[2]*fin[10])+0.6123724356957944*(alphax[1]*fin[7]+alphax[0]*fin[6]+alphax[4]*fin[5]+alphax[2]*fin[3]); + out[9] += 0.6123724356957944*(alphax[1]*fin[9]+alphax[0]*fin[8])+0.5477225575051661*(alphax[4]*fin[4]+alphax[2]*fin[2]); + out[11] += 0.6123724356957944*(alphax[1]*fin[11]+alphax[0]*fin[10])+0.5477225575051661*(alphax[4]*fin[7]+alphax[2]*fin[6]); + + double alphavpar[12] = {0.}; + alphavpar[0] = ((-(0.7071067811865475*apar[1]*dualcurlbhatoverB_3[1]*hamil[1])-0.7071067811865475*apar[0]*dualcurlbhatoverB_3[0]*hamil[1])*rdx2)/(vmap[1]*m_); + alphavpar[1] = ((-(0.7071067811865475*apar[0]*dualcurlbhatoverB_3[1]*hamil[1])-0.7071067811865475*dualcurlbhatoverB_3[0]*apar[1]*hamil[1])*rdx2)/(vmap[1]*m_); + alphavpar[3] = ((-(0.7071067811865475*apar[1]*dualcurlbhatoverB_3[1]*hamil[5])-0.7071067811865475*apar[0]*dualcurlbhatoverB_3[0]*hamil[5])*rdx2)/(vmap[1]*m_); + alphavpar[5] = ((-(0.7071067811865475*apar[0]*dualcurlbhatoverB_3[1]*hamil[5])-0.7071067811865475*dualcurlbhatoverB_3[0]*apar[1]*hamil[5])*rdx2)/(vmap[1]*m_); + + + out[2] += 0.6123724356957944*(alphavpar[5]*fin[5]+alphavpar[3]*fin[3]+alphavpar[1]*fin[1]+alphavpar[0]*fin[0]); + out[4] += 0.6123724356957944*(alphavpar[3]*fin[5]+fin[3]*alphavpar[5]+alphavpar[0]*fin[1]+fin[0]*alphavpar[1]); + out[6] += 0.6123724356957944*(alphavpar[1]*fin[5]+fin[1]*alphavpar[5]+alphavpar[0]*fin[3]+fin[0]*alphavpar[3]); + out[7] += 0.6123724356957944*(alphavpar[0]*fin[5]+fin[0]*alphavpar[5]+alphavpar[1]*fin[3]+fin[1]*alphavpar[3]); + out[8] += 1.369306393762915*(alphavpar[5]*fin[7]+alphavpar[3]*fin[6]+alphavpar[1]*fin[4]+alphavpar[0]*fin[2]); + out[9] += 1.369306393762915*(alphavpar[3]*fin[7]+alphavpar[5]*fin[6]+alphavpar[0]*fin[4]+alphavpar[1]*fin[2]); + out[10] += 1.369306393762915*(alphavpar[1]*fin[7]+alphavpar[0]*fin[6]+fin[4]*alphavpar[5]+fin[2]*alphavpar[3]); + out[11] += 1.369306393762915*(alphavpar[0]*fin[7]+alphavpar[1]*fin[6]+fin[2]*alphavpar[5]+alphavpar[3]*fin[4]); + + return 0.; +} diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apar_vol_2x2v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apar_vol_2x2v_ser_p1.c new file mode 100644 index 0000000000..f01c94ae3d --- /dev/null +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apar_vol_2x2v_ser_p1.c @@ -0,0 +1,134 @@ +#include +GKYL_CU_DH double dg_gyrokinetic_add_apar_vol_2x2v_ser_p1(const double *w, const double *dxv, const double *vmap, const double *vmapSq, + const double q_, const double m_, const double *bmag, const double *jacobtot_inv, const double *dualcurlbhatoverB, const double *bioverJB, + const double *b_i, const double *phi, const double *apar, const double *fin, double* GKYL_RESTRICT out) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // bmag: magnetic field amplitude. + // jacobtot_inv: reciprocal of the conf-space jacobian time the guiding center coordinate Jacobian. + // dualcurlbhatoverB: dual curl of bhat over B. + // bioverJB: b_i over J times B. + // b_i: covariant components of the field aligned unit vector. + // apar: parallel component of magnetic vector potential. + // phi: electrostatic potential . + // fin: Distribution function. + // out: output increment. + + double rdx2 = 2.0/dxv[0]; + double rdz2 = 2.0/dxv[1]; + double rdvpar2 = 2.0/dxv[2]; + double rdmu2 = 2.0/dxv[3]; + + + const double *b_1 = &b_i[0]; + const double *b_2 = &b_i[4]; + const double *b_3 = &b_i[8]; + + const double *bioverJB_1 = &bioverJB[0]; + const double *bioverJB_2 = &bioverJB[4]; + const double *bioverJB_3 = &bioverJB[8]; + + const double *dualcurlbhatoverB_1 = &dualcurlbhatoverB[0]; + const double *dualcurlbhatoverB_2 = &dualcurlbhatoverB[4]; + const double *dualcurlbhatoverB_3 = &dualcurlbhatoverB[8]; + + double hamil[24] = {0.}; + hamil[0] = 2.0*phi[0]*q_+1.4142135623730951*(vmapSq[0]*m_+bmag[0]*vmap[2]); + hamil[1] = 2.0*phi[1]*q_+1.4142135623730951*bmag[1]*vmap[2]; + hamil[2] = 2.0*phi[2]*q_+1.4142135623730951*bmag[2]*vmap[2]; + hamil[3] = 1.4142135623730951*vmapSq[1]*m_; + hamil[4] = 1.4142135623730951*bmag[0]*vmap[3]; + hamil[5] = 2.0*phi[3]*q_+1.4142135623730951*vmap[2]*bmag[3]; + hamil[8] = 1.4142135623730951*bmag[1]*vmap[3]; + hamil[9] = 1.4142135623730951*bmag[2]*vmap[3]; + hamil[12] = 1.4142135623730951*bmag[3]*vmap[3]; + hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + + double vmap2 = vmap[1]*vmap[1]; + + double hamil2[2] = {0.}; + hamil2[0] = hamil[3]*hamil[3]; + hamil2[1] = hamil[16]*hamil[16]; + + double alphax[24] = {0.}; + alphax[0] = (((-(0.6123724356957944*bioverJB_2[1]*apar[3]*hamil[3])-0.6123724356957944*bioverJB_2[0]*apar[2]*hamil[3])*rdx2*rdz2)/vmap[1]+((0.3535533905932737*apar[3]*dualcurlbhatoverB_1[3]*hamil[3]+0.3535533905932737*apar[2]*dualcurlbhatoverB_1[2]*hamil[3]+0.3535533905932737*apar[1]*dualcurlbhatoverB_1[1]*hamil[3]+0.3535533905932737*apar[0]*dualcurlbhatoverB_1[0]*hamil[3])*rdx2)/vmap[1])/m_; + alphax[1] = (((-(0.6123724356957944*bioverJB_2[0]*apar[3]*hamil[3])-0.6123724356957944*bioverJB_2[1]*apar[2]*hamil[3])*rdx2*rdz2)/vmap[1]+((0.3535533905932737*apar[2]*dualcurlbhatoverB_1[3]*hamil[3]+0.3535533905932737*dualcurlbhatoverB_1[2]*apar[3]*hamil[3]+0.3535533905932737*apar[0]*dualcurlbhatoverB_1[1]*hamil[3]+0.3535533905932737*dualcurlbhatoverB_1[0]*apar[1]*hamil[3])*rdx2)/vmap[1])/m_; + alphax[2] = (((-(0.6123724356957944*apar[3]*bioverJB_2[3]*hamil[3])-0.6123724356957944*apar[2]*bioverJB_2[2]*hamil[3])*rdx2*rdz2)/vmap[1]+((0.3535533905932737*apar[1]*dualcurlbhatoverB_1[3]*hamil[3]+0.3535533905932737*dualcurlbhatoverB_1[1]*apar[3]*hamil[3]+0.3535533905932737*apar[0]*dualcurlbhatoverB_1[2]*hamil[3]+0.3535533905932737*dualcurlbhatoverB_1[0]*apar[2]*hamil[3])*rdx2)/vmap[1])/m_; + alphax[3] = (((-(1.369306393762915*bioverJB_2[1]*apar[3]*hamil[16])-1.369306393762915*bioverJB_2[0]*apar[2]*hamil[16])*rdx2*rdz2)/vmap[1]+((0.7905694150420947*apar[3]*dualcurlbhatoverB_1[3]*hamil[16]+0.7905694150420947*apar[2]*dualcurlbhatoverB_1[2]*hamil[16]+0.7905694150420947*apar[1]*dualcurlbhatoverB_1[1]*hamil[16]+0.7905694150420947*apar[0]*dualcurlbhatoverB_1[0]*hamil[16])*rdx2)/vmap[1])/m_; + alphax[5] = (((-(0.6123724356957944*apar[2]*bioverJB_2[3]*hamil[3])-0.6123724356957944*bioverJB_2[2]*apar[3]*hamil[3])*rdx2*rdz2)/vmap[1]+((0.3535533905932737*apar[0]*dualcurlbhatoverB_1[3]*hamil[3]+0.3535533905932737*dualcurlbhatoverB_1[0]*apar[3]*hamil[3]+0.3535533905932737*apar[1]*dualcurlbhatoverB_1[2]*hamil[3]+0.3535533905932737*dualcurlbhatoverB_1[1]*apar[2]*hamil[3])*rdx2)/vmap[1])/m_; + alphax[6] = (((-(1.369306393762915*bioverJB_2[0]*apar[3]*hamil[16])-1.369306393762915*bioverJB_2[1]*apar[2]*hamil[16])*rdx2*rdz2)/vmap[1]+((0.7905694150420947*apar[2]*dualcurlbhatoverB_1[3]*hamil[16]+0.7905694150420947*dualcurlbhatoverB_1[2]*apar[3]*hamil[16]+0.7905694150420947*apar[0]*dualcurlbhatoverB_1[1]*hamil[16]+0.7905694150420947*dualcurlbhatoverB_1[0]*apar[1]*hamil[16])*rdx2)/vmap[1])/m_; + alphax[7] = (((-(1.369306393762915*apar[3]*bioverJB_2[3]*hamil[16])-1.369306393762915*apar[2]*bioverJB_2[2]*hamil[16])*rdx2*rdz2)/vmap[1]+((0.7905694150420947*apar[1]*dualcurlbhatoverB_1[3]*hamil[16]+0.7905694150420947*dualcurlbhatoverB_1[1]*apar[3]*hamil[16]+0.7905694150420947*apar[0]*dualcurlbhatoverB_1[2]*hamil[16]+0.7905694150420947*dualcurlbhatoverB_1[0]*apar[2]*hamil[16])*rdx2)/vmap[1])/m_; + alphax[11] = (((-(1.369306393762915*apar[2]*bioverJB_2[3]*hamil[16])-1.369306393762915*bioverJB_2[2]*apar[3]*hamil[16])*rdx2*rdz2)/vmap[1]+((0.7905694150420947*apar[0]*dualcurlbhatoverB_1[3]*hamil[16]+0.7905694150420947*dualcurlbhatoverB_1[0]*apar[3]*hamil[16]+0.7905694150420947*apar[1]*dualcurlbhatoverB_1[2]*hamil[16]+0.7905694150420947*dualcurlbhatoverB_1[1]*apar[2]*hamil[16])*rdx2)/vmap[1])/m_; + + + out[1] += 0.4330127018922193*(alphax[11]*fin[11]+alphax[7]*fin[7]+alphax[6]*fin[6]+alphax[5]*fin[5]+alphax[3]*fin[3]+alphax[2]*fin[2]+alphax[1]*fin[1]+alphax[0]*fin[0]); + out[5] += 0.4330127018922193*(alphax[6]*fin[11]+fin[6]*alphax[11]+alphax[3]*fin[7]+fin[3]*alphax[7]+alphax[1]*fin[5]+fin[1]*alphax[5]+alphax[0]*fin[2]+fin[0]*alphax[2]); + out[6] += 0.38729833462074165*alphax[11]*fin[20]+0.3872983346207417*(alphax[7]*fin[18]+alphax[6]*fin[17])+0.38729833462074165*alphax[3]*fin[16]+0.4330127018922193*(alphax[5]*fin[11]+fin[5]*alphax[11]+alphax[2]*fin[7]+fin[2]*alphax[7]+alphax[1]*fin[6]+fin[1]*alphax[6]+alphax[0]*fin[3]+fin[0]*alphax[3]); + out[8] += 0.4330127018922193*(alphax[11]*fin[15]+alphax[7]*fin[14]+alphax[6]*fin[13]+alphax[5]*fin[12]+alphax[3]*fin[10]+alphax[2]*fin[9]+alphax[1]*fin[8]+alphax[0]*fin[4]); + out[11] += 0.38729833462074165*alphax[6]*fin[20]+0.3872983346207417*(alphax[3]*fin[18]+alphax[11]*fin[17])+0.38729833462074165*alphax[7]*fin[16]+0.4330127018922193*(alphax[1]*fin[11]+fin[1]*alphax[11]+alphax[0]*fin[7]+fin[0]*alphax[7]+alphax[5]*fin[6]+fin[5]*alphax[6]+alphax[2]*fin[3]+fin[2]*alphax[3]); + out[12] += 0.4330127018922193*(alphax[6]*fin[15]+alphax[3]*fin[14]+alphax[11]*fin[13]+alphax[1]*fin[12]+alphax[7]*fin[10]+alphax[0]*fin[9]+alphax[5]*fin[8]+alphax[2]*fin[4]); + out[13] += 0.3872983346207417*alphax[11]*fin[23]+0.38729833462074165*(alphax[7]*fin[22]+alphax[6]*fin[21])+0.3872983346207417*alphax[3]*fin[19]+0.4330127018922193*(alphax[5]*fin[15]+alphax[2]*fin[14]+alphax[1]*fin[13]+alphax[11]*fin[12]+alphax[0]*fin[10]+alphax[7]*fin[9]+alphax[6]*fin[8]+alphax[3]*fin[4]); + out[15] += 0.3872983346207417*alphax[6]*fin[23]+0.38729833462074165*(alphax[3]*fin[22]+alphax[11]*fin[21])+0.3872983346207417*alphax[7]*fin[19]+0.4330127018922193*(alphax[1]*fin[15]+alphax[0]*fin[14]+alphax[5]*fin[13]+alphax[6]*fin[12]+fin[8]*alphax[11]+alphax[2]*fin[10]+alphax[3]*fin[9]+fin[4]*alphax[7]); + out[17] += 0.43301270189221935*alphax[5]*fin[20]+0.4330127018922193*(alphax[2]*fin[18]+alphax[1]*fin[17])+0.43301270189221935*alphax[0]*fin[16]+0.3872983346207417*(alphax[11]*fin[11]+alphax[7]*fin[7]+alphax[6]*fin[6]+alphax[3]*fin[3]); + out[20] += 0.4330127018922193*alphax[1]*fin[20]+0.43301270189221935*(alphax[0]*fin[18]+alphax[5]*fin[17])+0.4330127018922193*alphax[2]*fin[16]+0.38729833462074165*(alphax[6]*fin[11]+fin[6]*alphax[11]+alphax[3]*fin[7]+fin[3]*alphax[7]); + out[21] += 0.43301270189221935*alphax[5]*fin[23]+0.4330127018922193*(alphax[2]*fin[22]+alphax[1]*fin[21])+0.43301270189221935*alphax[0]*fin[19]+0.38729833462074165*(alphax[11]*fin[15]+alphax[7]*fin[14]+alphax[6]*fin[13]+alphax[3]*fin[10]); + out[23] += 0.4330127018922193*alphax[1]*fin[23]+0.43301270189221935*(alphax[0]*fin[22]+alphax[5]*fin[21])+0.4330127018922193*alphax[2]*fin[19]+0.3872983346207417*(alphax[6]*fin[15]+alphax[3]*fin[14]+alphax[11]*fin[13]+alphax[7]*fin[10]); + + double alphaz[24] = {0.}; + alphaz[0] = (((0.6123724356957944*bioverJB_2[2]*apar[3]*hamil[3]+0.6123724356957944*bioverJB_2[0]*apar[1]*hamil[3])*rdx2*rdz2)/vmap[1]+((0.3535533905932737*apar[3]*dualcurlbhatoverB_3[3]*hamil[3]+0.3535533905932737*apar[2]*dualcurlbhatoverB_3[2]*hamil[3]+0.3535533905932737*apar[1]*dualcurlbhatoverB_3[1]*hamil[3]+0.3535533905932737*apar[0]*dualcurlbhatoverB_3[0]*hamil[3])*rdz2)/vmap[1])/m_; + alphaz[1] = (((0.6123724356957944*apar[3]*bioverJB_2[3]*hamil[3]+0.6123724356957944*apar[1]*bioverJB_2[1]*hamil[3])*rdx2*rdz2)/vmap[1]+((0.3535533905932737*apar[2]*dualcurlbhatoverB_3[3]*hamil[3]+0.3535533905932737*dualcurlbhatoverB_3[2]*apar[3]*hamil[3]+0.3535533905932737*apar[0]*dualcurlbhatoverB_3[1]*hamil[3]+0.3535533905932737*dualcurlbhatoverB_3[0]*apar[1]*hamil[3])*rdz2)/vmap[1])/m_; + alphaz[2] = (((0.6123724356957944*bioverJB_2[0]*apar[3]*hamil[3]+0.6123724356957944*apar[1]*bioverJB_2[2]*hamil[3])*rdx2*rdz2)/vmap[1]+((0.3535533905932737*apar[1]*dualcurlbhatoverB_3[3]*hamil[3]+0.3535533905932737*dualcurlbhatoverB_3[1]*apar[3]*hamil[3]+0.3535533905932737*apar[0]*dualcurlbhatoverB_3[2]*hamil[3]+0.3535533905932737*dualcurlbhatoverB_3[0]*apar[2]*hamil[3])*rdz2)/vmap[1])/m_; + alphaz[3] = (((1.369306393762915*bioverJB_2[2]*apar[3]*hamil[16]+1.369306393762915*bioverJB_2[0]*apar[1]*hamil[16])*rdx2*rdz2)/vmap[1]+((0.7905694150420947*apar[3]*dualcurlbhatoverB_3[3]*hamil[16]+0.7905694150420947*apar[2]*dualcurlbhatoverB_3[2]*hamil[16]+0.7905694150420947*apar[1]*dualcurlbhatoverB_3[1]*hamil[16]+0.7905694150420947*apar[0]*dualcurlbhatoverB_3[0]*hamil[16])*rdz2)/vmap[1])/m_; + alphaz[5] = (((0.6123724356957944*apar[1]*bioverJB_2[3]*hamil[3]+0.6123724356957944*bioverJB_2[1]*apar[3]*hamil[3])*rdx2*rdz2)/vmap[1]+((0.3535533905932737*apar[0]*dualcurlbhatoverB_3[3]*hamil[3]+0.3535533905932737*dualcurlbhatoverB_3[0]*apar[3]*hamil[3]+0.3535533905932737*apar[1]*dualcurlbhatoverB_3[2]*hamil[3]+0.3535533905932737*dualcurlbhatoverB_3[1]*apar[2]*hamil[3])*rdz2)/vmap[1])/m_; + alphaz[6] = (((1.369306393762915*apar[3]*bioverJB_2[3]*hamil[16]+1.369306393762915*apar[1]*bioverJB_2[1]*hamil[16])*rdx2*rdz2)/vmap[1]+((0.7905694150420947*apar[2]*dualcurlbhatoverB_3[3]*hamil[16]+0.7905694150420947*dualcurlbhatoverB_3[2]*apar[3]*hamil[16]+0.7905694150420947*apar[0]*dualcurlbhatoverB_3[1]*hamil[16]+0.7905694150420947*dualcurlbhatoverB_3[0]*apar[1]*hamil[16])*rdz2)/vmap[1])/m_; + alphaz[7] = (((1.369306393762915*bioverJB_2[0]*apar[3]*hamil[16]+1.369306393762915*apar[1]*bioverJB_2[2]*hamil[16])*rdx2*rdz2)/vmap[1]+((0.7905694150420947*apar[1]*dualcurlbhatoverB_3[3]*hamil[16]+0.7905694150420947*dualcurlbhatoverB_3[1]*apar[3]*hamil[16]+0.7905694150420947*apar[0]*dualcurlbhatoverB_3[2]*hamil[16]+0.7905694150420947*dualcurlbhatoverB_3[0]*apar[2]*hamil[16])*rdz2)/vmap[1])/m_; + alphaz[11] = (((1.369306393762915*apar[1]*bioverJB_2[3]*hamil[16]+1.369306393762915*bioverJB_2[1]*apar[3]*hamil[16])*rdx2*rdz2)/vmap[1]+((0.7905694150420947*apar[0]*dualcurlbhatoverB_3[3]*hamil[16]+0.7905694150420947*dualcurlbhatoverB_3[0]*apar[3]*hamil[16]+0.7905694150420947*apar[1]*dualcurlbhatoverB_3[2]*hamil[16]+0.7905694150420947*dualcurlbhatoverB_3[1]*apar[2]*hamil[16])*rdz2)/vmap[1])/m_; + + + out[2] += 0.4330127018922193*(alphaz[11]*fin[11]+alphaz[7]*fin[7]+alphaz[6]*fin[6]+alphaz[5]*fin[5]+alphaz[3]*fin[3]+alphaz[2]*fin[2]+alphaz[1]*fin[1]+alphaz[0]*fin[0]); + out[5] += 0.4330127018922193*(alphaz[7]*fin[11]+fin[7]*alphaz[11]+alphaz[3]*fin[6]+fin[3]*alphaz[6]+alphaz[2]*fin[5]+fin[2]*alphaz[5]+alphaz[0]*fin[1]+fin[0]*alphaz[1]); + out[7] += 0.38729833462074165*alphaz[11]*fin[20]+0.3872983346207417*(alphaz[7]*fin[18]+alphaz[6]*fin[17])+0.38729833462074165*alphaz[3]*fin[16]+0.4330127018922193*(alphaz[5]*fin[11]+fin[5]*alphaz[11]+alphaz[2]*fin[7]+fin[2]*alphaz[7]+alphaz[1]*fin[6]+fin[1]*alphaz[6]+alphaz[0]*fin[3]+fin[0]*alphaz[3]); + out[9] += 0.4330127018922193*(alphaz[11]*fin[15]+alphaz[7]*fin[14]+alphaz[6]*fin[13]+alphaz[5]*fin[12]+alphaz[3]*fin[10]+alphaz[2]*fin[9]+alphaz[1]*fin[8]+alphaz[0]*fin[4]); + out[11] += 0.38729833462074165*alphaz[7]*fin[20]+0.3872983346207417*(alphaz[11]*fin[18]+alphaz[3]*fin[17])+0.38729833462074165*alphaz[6]*fin[16]+0.4330127018922193*(alphaz[2]*fin[11]+fin[2]*alphaz[11]+alphaz[5]*fin[7]+fin[5]*alphaz[7]+alphaz[0]*fin[6]+fin[0]*alphaz[6]+alphaz[1]*fin[3]+fin[1]*alphaz[3]); + out[12] += 0.4330127018922193*(alphaz[7]*fin[15]+alphaz[11]*fin[14]+alphaz[3]*fin[13]+alphaz[2]*fin[12]+alphaz[6]*fin[10]+alphaz[5]*fin[9]+alphaz[0]*fin[8]+alphaz[1]*fin[4]); + out[14] += 0.3872983346207417*alphaz[11]*fin[23]+0.38729833462074165*(alphaz[7]*fin[22]+alphaz[6]*fin[21])+0.3872983346207417*alphaz[3]*fin[19]+0.4330127018922193*(alphaz[5]*fin[15]+alphaz[2]*fin[14]+alphaz[1]*fin[13]+alphaz[11]*fin[12]+alphaz[0]*fin[10]+alphaz[7]*fin[9]+alphaz[6]*fin[8]+alphaz[3]*fin[4]); + out[15] += 0.3872983346207417*alphaz[7]*fin[23]+0.38729833462074165*(alphaz[11]*fin[22]+alphaz[3]*fin[21])+0.3872983346207417*alphaz[6]*fin[19]+0.4330127018922193*(alphaz[2]*fin[15]+alphaz[5]*fin[14]+alphaz[0]*fin[13]+alphaz[7]*fin[12]+fin[9]*alphaz[11]+alphaz[1]*fin[10]+alphaz[3]*fin[8]+fin[4]*alphaz[6]); + out[18] += 0.43301270189221935*alphaz[5]*fin[20]+0.4330127018922193*(alphaz[2]*fin[18]+alphaz[1]*fin[17])+0.43301270189221935*alphaz[0]*fin[16]+0.3872983346207417*(alphaz[11]*fin[11]+alphaz[7]*fin[7]+alphaz[6]*fin[6]+alphaz[3]*fin[3]); + out[20] += 0.4330127018922193*alphaz[2]*fin[20]+0.43301270189221935*(alphaz[5]*fin[18]+alphaz[0]*fin[17])+0.4330127018922193*alphaz[1]*fin[16]+0.38729833462074165*(alphaz[7]*fin[11]+fin[7]*alphaz[11]+alphaz[3]*fin[6]+fin[3]*alphaz[6]); + out[22] += 0.43301270189221935*alphaz[5]*fin[23]+0.4330127018922193*(alphaz[2]*fin[22]+alphaz[1]*fin[21])+0.43301270189221935*alphaz[0]*fin[19]+0.38729833462074165*(alphaz[11]*fin[15]+alphaz[7]*fin[14]+alphaz[6]*fin[13]+alphaz[3]*fin[10]); + out[23] += 0.4330127018922193*alphaz[2]*fin[23]+0.43301270189221935*(alphaz[5]*fin[22]+alphaz[0]*fin[21])+0.4330127018922193*alphaz[1]*fin[19]+0.3872983346207417*(alphaz[7]*fin[15]+alphaz[11]*fin[14]+alphaz[3]*fin[13]+alphaz[6]*fin[10]); + + double alphavpar[24] = {0.}; + alphavpar[0] = (((0.6123724356957944*apar[2]*bioverJB_2[2]*hamil[5]-0.6123724356957944*apar[1]*bioverJB_2[1]*hamil[5]-0.6123724356957944*bioverJB_2[2]*hamil[2]*apar[3]+0.6123724356957944*bioverJB_2[1]*hamil[1]*apar[3]-0.6123724356957944*bioverJB_2[0]*apar[1]*hamil[2]+0.6123724356957944*bioverJB_2[0]*hamil[1]*apar[2])*rdx2*rdz2)/vmap[1]+((-(0.3535533905932737*apar[2]*dualcurlbhatoverB_3[3]*hamil[5])-0.3535533905932737*dualcurlbhatoverB_3[2]*apar[3]*hamil[5]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[1]*hamil[5]-0.3535533905932737*dualcurlbhatoverB_3[0]*apar[1]*hamil[5]-0.3535533905932737*hamil[2]*apar[3]*dualcurlbhatoverB_3[3]-0.3535533905932737*apar[2]*dualcurlbhatoverB_3[2]*hamil[2]-0.3535533905932737*apar[1]*dualcurlbhatoverB_3[1]*hamil[2]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[0]*hamil[2])*rdz2)/vmap[1]+((-(0.3535533905932737*apar[1]*dualcurlbhatoverB_1[3]*hamil[5])-0.3535533905932737*dualcurlbhatoverB_1[1]*apar[3]*hamil[5]-0.3535533905932737*apar[0]*dualcurlbhatoverB_1[2]*hamil[5]-0.3535533905932737*dualcurlbhatoverB_1[0]*apar[2]*hamil[5]-0.3535533905932737*hamil[1]*apar[3]*dualcurlbhatoverB_1[3]-0.3535533905932737*hamil[1]*apar[2]*dualcurlbhatoverB_1[2]-0.3535533905932737*apar[1]*dualcurlbhatoverB_1[1]*hamil[1]-0.3535533905932737*apar[0]*dualcurlbhatoverB_1[0]*hamil[1])*rdx2)/vmap[1])/m_; + alphavpar[1] = (((0.6123724356957944*apar[2]*bioverJB_2[3]*hamil[5]-0.6123724356957944*bioverJB_2[0]*apar[1]*hamil[5]-0.6123724356957944*hamil[2]*apar[3]*bioverJB_2[3]+0.6123724356957944*bioverJB_2[0]*hamil[1]*apar[3]-0.6123724356957944*apar[1]*bioverJB_2[1]*hamil[2]+0.6123724356957944*bioverJB_2[1]*hamil[1]*apar[2])*rdx2*rdz2)/vmap[1]+((-(0.6363961030678926*apar[3]*dualcurlbhatoverB_3[3]*hamil[5])-0.3535533905932737*apar[2]*dualcurlbhatoverB_3[2]*hamil[5]-0.6363961030678926*apar[1]*dualcurlbhatoverB_3[1]*hamil[5]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[0]*hamil[5]-0.3535533905932737*apar[2]*hamil[2]*dualcurlbhatoverB_3[3]-0.3535533905932737*dualcurlbhatoverB_3[2]*hamil[2]*apar[3]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[1]*hamil[2]-0.3535533905932737*dualcurlbhatoverB_3[0]*apar[1]*hamil[2])*rdz2)/vmap[1]+((-(0.3535533905932737*apar[0]*dualcurlbhatoverB_1[3]*hamil[5])-0.3535533905932737*dualcurlbhatoverB_1[0]*apar[3]*hamil[5]-0.3535533905932737*apar[1]*dualcurlbhatoverB_1[2]*hamil[5]-0.3535533905932737*dualcurlbhatoverB_1[1]*apar[2]*hamil[5]-0.3535533905932737*hamil[1]*apar[2]*dualcurlbhatoverB_1[3]-0.3535533905932737*hamil[1]*dualcurlbhatoverB_1[2]*apar[3]-0.3535533905932737*apar[0]*dualcurlbhatoverB_1[1]*hamil[1]-0.3535533905932737*dualcurlbhatoverB_1[0]*apar[1]*hamil[1])*rdx2)/vmap[1])/m_; + alphavpar[2] = (((-(0.6123724356957944*apar[1]*bioverJB_2[3]*hamil[5])+0.6123724356957944*bioverJB_2[0]*apar[2]*hamil[5]+0.6123724356957944*hamil[1]*apar[3]*bioverJB_2[3]-0.6123724356957944*bioverJB_2[0]*hamil[2]*apar[3]-0.6123724356957944*apar[1]*bioverJB_2[2]*hamil[2]+0.6123724356957944*hamil[1]*apar[2]*bioverJB_2[2])*rdx2*rdz2)/vmap[1]+((-(0.3535533905932737*apar[0]*dualcurlbhatoverB_3[3]*hamil[5])-0.3535533905932737*dualcurlbhatoverB_3[0]*apar[3]*hamil[5]-0.3535533905932737*apar[1]*dualcurlbhatoverB_3[2]*hamil[5]-0.3535533905932737*dualcurlbhatoverB_3[1]*apar[2]*hamil[5]-0.3535533905932737*apar[1]*hamil[2]*dualcurlbhatoverB_3[3]-0.3535533905932737*dualcurlbhatoverB_3[1]*hamil[2]*apar[3]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[2]*hamil[2]-0.3535533905932737*dualcurlbhatoverB_3[0]*apar[2]*hamil[2])*rdz2)/vmap[1]+((-(0.6363961030678926*apar[3]*dualcurlbhatoverB_1[3]*hamil[5])-0.6363961030678926*apar[2]*dualcurlbhatoverB_1[2]*hamil[5]-0.3535533905932737*apar[1]*dualcurlbhatoverB_1[1]*hamil[5]-0.3535533905932737*apar[0]*dualcurlbhatoverB_1[0]*hamil[5]-0.3535533905932737*apar[1]*hamil[1]*dualcurlbhatoverB_1[3]-0.3535533905932737*dualcurlbhatoverB_1[1]*hamil[1]*apar[3]-0.3535533905932737*apar[0]*hamil[1]*dualcurlbhatoverB_1[2]-0.3535533905932737*dualcurlbhatoverB_1[0]*hamil[1]*apar[2])*rdx2)/vmap[1])/m_; + alphavpar[4] = (((0.6123724356957944*apar[2]*bioverJB_2[2]*hamil[12]-0.6123724356957944*apar[1]*bioverJB_2[1]*hamil[12]-0.6123724356957944*bioverJB_2[2]*apar[3]*hamil[9]-0.6123724356957944*bioverJB_2[0]*apar[1]*hamil[9]+0.6123724356957944*bioverJB_2[1]*apar[3]*hamil[8]+0.6123724356957944*bioverJB_2[0]*apar[2]*hamil[8])*rdx2*rdz2)/vmap[1]+((-(0.3535533905932737*apar[2]*dualcurlbhatoverB_3[3]*hamil[12])-0.3535533905932737*dualcurlbhatoverB_3[2]*apar[3]*hamil[12]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[1]*hamil[12]-0.3535533905932737*dualcurlbhatoverB_3[0]*apar[1]*hamil[12]-0.3535533905932737*apar[3]*dualcurlbhatoverB_3[3]*hamil[9]-0.3535533905932737*apar[2]*dualcurlbhatoverB_3[2]*hamil[9]-0.3535533905932737*apar[1]*dualcurlbhatoverB_3[1]*hamil[9]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[0]*hamil[9])*rdz2)/vmap[1]+((-(0.3535533905932737*apar[1]*dualcurlbhatoverB_1[3]*hamil[12])-0.3535533905932737*dualcurlbhatoverB_1[1]*apar[3]*hamil[12]-0.3535533905932737*apar[0]*dualcurlbhatoverB_1[2]*hamil[12]-0.3535533905932737*dualcurlbhatoverB_1[0]*apar[2]*hamil[12]-0.3535533905932737*apar[3]*dualcurlbhatoverB_1[3]*hamil[8]-0.3535533905932737*apar[2]*dualcurlbhatoverB_1[2]*hamil[8]-0.3535533905932737*apar[1]*dualcurlbhatoverB_1[1]*hamil[8]-0.3535533905932737*apar[0]*dualcurlbhatoverB_1[0]*hamil[8])*rdx2)/vmap[1])/m_; + alphavpar[5] = (((-(0.6123724356957944*apar[1]*bioverJB_2[2]*hamil[5])+0.6123724356957944*bioverJB_2[1]*apar[2]*hamil[5]-0.6123724356957944*apar[1]*hamil[2]*bioverJB_2[3]+0.6123724356957944*hamil[1]*apar[2]*bioverJB_2[3]-0.6123724356957944*bioverJB_2[1]*hamil[2]*apar[3]+0.6123724356957944*hamil[1]*bioverJB_2[2]*apar[3])*rdx2*rdz2)/vmap[1]+((-(0.6363961030678926*apar[1]*dualcurlbhatoverB_3[3]*hamil[5])-0.6363961030678926*dualcurlbhatoverB_3[1]*apar[3]*hamil[5]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[2]*hamil[5]-0.3535533905932737*dualcurlbhatoverB_3[0]*apar[2]*hamil[5]-0.3535533905932737*apar[0]*hamil[2]*dualcurlbhatoverB_3[3]-0.3535533905932737*dualcurlbhatoverB_3[0]*hamil[2]*apar[3]-0.3535533905932737*apar[1]*dualcurlbhatoverB_3[2]*hamil[2]-0.3535533905932737*dualcurlbhatoverB_3[1]*apar[2]*hamil[2])*rdz2)/vmap[1]+((-(0.6363961030678926*apar[2]*dualcurlbhatoverB_1[3]*hamil[5])-0.6363961030678926*dualcurlbhatoverB_1[2]*apar[3]*hamil[5]-0.3535533905932737*apar[0]*dualcurlbhatoverB_1[1]*hamil[5]-0.3535533905932737*dualcurlbhatoverB_1[0]*apar[1]*hamil[5]-0.3535533905932737*apar[0]*hamil[1]*dualcurlbhatoverB_1[3]-0.3535533905932737*dualcurlbhatoverB_1[0]*hamil[1]*apar[3]-0.3535533905932737*apar[1]*hamil[1]*dualcurlbhatoverB_1[2]-0.3535533905932737*dualcurlbhatoverB_1[1]*hamil[1]*apar[2])*rdx2)/vmap[1])/m_; + alphavpar[8] = (((0.6123724356957944*apar[2]*bioverJB_2[3]*hamil[12]-0.6123724356957944*bioverJB_2[0]*apar[1]*hamil[12]-0.6123724356957944*apar[3]*bioverJB_2[3]*hamil[9]-0.6123724356957944*apar[1]*bioverJB_2[1]*hamil[9]+0.6123724356957944*bioverJB_2[0]*apar[3]*hamil[8]+0.6123724356957944*bioverJB_2[1]*apar[2]*hamil[8])*rdx2*rdz2)/vmap[1]+((-(0.6363961030678926*apar[3]*dualcurlbhatoverB_3[3]*hamil[12])-0.3535533905932737*apar[2]*dualcurlbhatoverB_3[2]*hamil[12]-0.6363961030678926*apar[1]*dualcurlbhatoverB_3[1]*hamil[12]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[0]*hamil[12]-0.3535533905932737*apar[2]*dualcurlbhatoverB_3[3]*hamil[9]-0.3535533905932737*dualcurlbhatoverB_3[2]*apar[3]*hamil[9]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[1]*hamil[9]-0.3535533905932737*dualcurlbhatoverB_3[0]*apar[1]*hamil[9])*rdz2)/vmap[1]+((-(0.3535533905932737*apar[0]*dualcurlbhatoverB_1[3]*hamil[12])-0.3535533905932737*dualcurlbhatoverB_1[0]*apar[3]*hamil[12]-0.3535533905932737*apar[1]*dualcurlbhatoverB_1[2]*hamil[12]-0.3535533905932737*dualcurlbhatoverB_1[1]*apar[2]*hamil[12]-0.3535533905932737*apar[2]*dualcurlbhatoverB_1[3]*hamil[8]-0.3535533905932737*dualcurlbhatoverB_1[2]*apar[3]*hamil[8]-0.3535533905932737*apar[0]*dualcurlbhatoverB_1[1]*hamil[8]-0.3535533905932737*dualcurlbhatoverB_1[0]*apar[1]*hamil[8])*rdx2)/vmap[1])/m_; + alphavpar[9] = (((-(0.6123724356957944*apar[1]*bioverJB_2[3]*hamil[12])+0.6123724356957944*bioverJB_2[0]*apar[2]*hamil[12]-0.6123724356957944*bioverJB_2[0]*apar[3]*hamil[9]-0.6123724356957944*apar[1]*bioverJB_2[2]*hamil[9]+0.6123724356957944*apar[3]*bioverJB_2[3]*hamil[8]+0.6123724356957944*apar[2]*bioverJB_2[2]*hamil[8])*rdx2*rdz2)/vmap[1]+((-(0.3535533905932737*apar[0]*dualcurlbhatoverB_3[3]*hamil[12])-0.3535533905932737*dualcurlbhatoverB_3[0]*apar[3]*hamil[12]-0.3535533905932737*apar[1]*dualcurlbhatoverB_3[2]*hamil[12]-0.3535533905932737*dualcurlbhatoverB_3[1]*apar[2]*hamil[12]-0.3535533905932737*apar[1]*dualcurlbhatoverB_3[3]*hamil[9]-0.3535533905932737*dualcurlbhatoverB_3[1]*apar[3]*hamil[9]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[2]*hamil[9]-0.3535533905932737*dualcurlbhatoverB_3[0]*apar[2]*hamil[9])*rdz2)/vmap[1]+((-(0.6363961030678926*apar[3]*dualcurlbhatoverB_1[3]*hamil[12])-0.6363961030678926*apar[2]*dualcurlbhatoverB_1[2]*hamil[12]-0.3535533905932737*apar[1]*dualcurlbhatoverB_1[1]*hamil[12]-0.3535533905932737*apar[0]*dualcurlbhatoverB_1[0]*hamil[12]-0.3535533905932737*apar[1]*dualcurlbhatoverB_1[3]*hamil[8]-0.3535533905932737*dualcurlbhatoverB_1[1]*apar[3]*hamil[8]-0.3535533905932737*apar[0]*dualcurlbhatoverB_1[2]*hamil[8]-0.3535533905932737*dualcurlbhatoverB_1[0]*apar[2]*hamil[8])*rdx2)/vmap[1])/m_; + alphavpar[12] = (((-(0.6123724356957944*apar[1]*bioverJB_2[2]*hamil[12])+0.6123724356957944*bioverJB_2[1]*apar[2]*hamil[12]-0.6123724356957944*apar[1]*bioverJB_2[3]*hamil[9]-0.6123724356957944*bioverJB_2[1]*apar[3]*hamil[9]+0.6123724356957944*apar[2]*bioverJB_2[3]*hamil[8]+0.6123724356957944*bioverJB_2[2]*apar[3]*hamil[8])*rdx2*rdz2)/vmap[1]+((-(0.6363961030678926*apar[1]*dualcurlbhatoverB_3[3]*hamil[12])-0.6363961030678926*dualcurlbhatoverB_3[1]*apar[3]*hamil[12]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[2]*hamil[12]-0.3535533905932737*dualcurlbhatoverB_3[0]*apar[2]*hamil[12]-0.3535533905932737*apar[0]*dualcurlbhatoverB_3[3]*hamil[9]-0.3535533905932737*dualcurlbhatoverB_3[0]*apar[3]*hamil[9]-0.3535533905932737*apar[1]*dualcurlbhatoverB_3[2]*hamil[9]-0.3535533905932737*dualcurlbhatoverB_3[1]*apar[2]*hamil[9])*rdz2)/vmap[1]+((-(0.6363961030678926*apar[2]*dualcurlbhatoverB_1[3]*hamil[12])-0.6363961030678926*dualcurlbhatoverB_1[2]*apar[3]*hamil[12]-0.3535533905932737*apar[0]*dualcurlbhatoverB_1[1]*hamil[12]-0.3535533905932737*dualcurlbhatoverB_1[0]*apar[1]*hamil[12]-0.3535533905932737*apar[0]*dualcurlbhatoverB_1[3]*hamil[8]-0.3535533905932737*dualcurlbhatoverB_1[0]*apar[3]*hamil[8]-0.3535533905932737*apar[1]*dualcurlbhatoverB_1[2]*hamil[8]-0.3535533905932737*dualcurlbhatoverB_1[1]*apar[2]*hamil[8])*rdx2)/vmap[1])/m_; + + + out[3] += 0.4330127018922193*(alphavpar[12]*fin[12]+alphavpar[9]*fin[9]+alphavpar[8]*fin[8]+alphavpar[5]*fin[5]+alphavpar[4]*fin[4]+alphavpar[2]*fin[2]+alphavpar[1]*fin[1]+alphavpar[0]*fin[0]); + out[6] += 0.4330127018922193*(alphavpar[9]*fin[12]+fin[9]*alphavpar[12]+alphavpar[4]*fin[8]+fin[4]*alphavpar[8]+alphavpar[2]*fin[5]+fin[2]*alphavpar[5]+alphavpar[0]*fin[1]+fin[0]*alphavpar[1]); + out[7] += 0.4330127018922193*(alphavpar[8]*fin[12]+fin[8]*alphavpar[12]+alphavpar[4]*fin[9]+fin[4]*alphavpar[9]+alphavpar[1]*fin[5]+fin[1]*alphavpar[5]+alphavpar[0]*fin[2]+fin[0]*alphavpar[2]); + out[10] += 0.4330127018922193*(alphavpar[5]*fin[12]+fin[5]*alphavpar[12]+alphavpar[2]*fin[9]+fin[2]*alphavpar[9]+alphavpar[1]*fin[8]+fin[1]*alphavpar[8]+alphavpar[0]*fin[4]+fin[0]*alphavpar[4]); + out[11] += 0.4330127018922193*(alphavpar[4]*fin[12]+fin[4]*alphavpar[12]+alphavpar[8]*fin[9]+fin[8]*alphavpar[9]+alphavpar[0]*fin[5]+fin[0]*alphavpar[5]+alphavpar[1]*fin[2]+fin[1]*alphavpar[2]); + out[13] += 0.4330127018922193*(alphavpar[2]*fin[12]+fin[2]*alphavpar[12]+alphavpar[5]*fin[9]+fin[5]*alphavpar[9]+alphavpar[0]*fin[8]+fin[0]*alphavpar[8]+alphavpar[1]*fin[4]+fin[1]*alphavpar[4]); + out[14] += 0.4330127018922193*(alphavpar[1]*fin[12]+fin[1]*alphavpar[12]+alphavpar[0]*fin[9]+fin[0]*alphavpar[9]+alphavpar[5]*fin[8]+fin[5]*alphavpar[8]+alphavpar[2]*fin[4]+fin[2]*alphavpar[4]); + out[15] += 0.4330127018922193*(alphavpar[0]*fin[12]+fin[0]*alphavpar[12]+alphavpar[1]*fin[9]+fin[1]*alphavpar[9]+alphavpar[2]*fin[8]+fin[2]*alphavpar[8]+alphavpar[4]*fin[5]+fin[4]*alphavpar[5]); + out[16] += 0.9682458365518543*(alphavpar[12]*fin[15]+alphavpar[9]*fin[14]+alphavpar[8]*fin[13]+alphavpar[5]*fin[11]+alphavpar[4]*fin[10]+alphavpar[2]*fin[7]+alphavpar[1]*fin[6]+alphavpar[0]*fin[3]); + out[17] += 0.9682458365518543*(alphavpar[9]*fin[15]+alphavpar[12]*fin[14]+alphavpar[4]*fin[13]+alphavpar[2]*fin[11]+alphavpar[8]*fin[10]+alphavpar[5]*fin[7]+alphavpar[0]*fin[6]+alphavpar[1]*fin[3]); + out[18] += 0.9682458365518543*(alphavpar[8]*fin[15]+alphavpar[4]*fin[14]+alphavpar[12]*fin[13]+alphavpar[1]*fin[11]+alphavpar[9]*fin[10]+alphavpar[0]*fin[7]+alphavpar[5]*fin[6]+alphavpar[2]*fin[3]); + out[19] += 0.9682458365518543*(alphavpar[5]*fin[15]+alphavpar[2]*fin[14]+alphavpar[1]*fin[13]+fin[11]*alphavpar[12]+alphavpar[0]*fin[10]+fin[7]*alphavpar[9]+fin[6]*alphavpar[8]+fin[3]*alphavpar[4]); + out[20] += 0.9682458365518543*(alphavpar[4]*fin[15]+alphavpar[8]*fin[14]+alphavpar[9]*fin[13]+fin[10]*alphavpar[12]+alphavpar[0]*fin[11]+alphavpar[1]*fin[7]+alphavpar[2]*fin[6]+fin[3]*alphavpar[5]); + out[21] += 0.9682458365518543*(alphavpar[2]*fin[15]+alphavpar[5]*fin[14]+alphavpar[0]*fin[13]+fin[7]*alphavpar[12]+alphavpar[9]*fin[11]+alphavpar[1]*fin[10]+fin[3]*alphavpar[8]+alphavpar[4]*fin[6]); + out[22] += 0.9682458365518543*(alphavpar[1]*fin[15]+alphavpar[0]*fin[14]+alphavpar[5]*fin[13]+fin[6]*alphavpar[12]+alphavpar[8]*fin[11]+alphavpar[2]*fin[10]+fin[3]*alphavpar[9]+alphavpar[4]*fin[7]); + out[23] += 0.9682458365518543*(alphavpar[0]*fin[15]+alphavpar[1]*fin[14]+alphavpar[2]*fin[13]+fin[3]*alphavpar[12]+alphavpar[4]*fin[11]+alphavpar[5]*fin[10]+fin[6]*alphavpar[9]+fin[7]*alphavpar[8]); + + return 0.; +} diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apar_vol_3x2v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apar_vol_3x2v_ser_p1.c new file mode 100644 index 0000000000..4dbf7f2db6 --- /dev/null +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apar_vol_3x2v_ser_p1.c @@ -0,0 +1,247 @@ +#include +GKYL_CU_DH double dg_gyrokinetic_add_apar_vol_3x2v_ser_p1(const double *w, const double *dxv, const double *vmap, const double *vmapSq, + const double q_, const double m_, const double *bmag, const double *jacobtot_inv, const double *dualcurlbhatoverB, const double *bioverJB, + const double *b_i, const double *phi, const double *apar, const double *fin, double* GKYL_RESTRICT out) +{ + // w[NDIM]: cell-center. + // dxv[NDIM]: cell length. + // vmap: velocity space mapping. + // vmapSq: velocity space mapping squared. + // q_,m_: species charge and mass. + // bmag: magnetic field amplitude. + // jacobtot_inv: reciprocal of the conf-space jacobian time the guiding center coordinate Jacobian. + // dualcurlbhatoverB: dual curl of bhat over B. + // bioverJB: b_i over J times B. + // b_i: covariant components of the field aligned unit vector. + // apar: parallel component of magnetic vector potential. + // phi: electrostatic potential . + // fin: Distribution function. + // out: output increment. + + double rdx2 = 2.0/dxv[0]; + double rdy2 = 2.0/dxv[1]; + double rdz2 = 2.0/dxv[2]; + double rdvpar2 = 2.0/dxv[3]; + double rdmu2 = 2.0/dxv[4]; + + + const double *b_1 = &b_i[0]; + const double *b_2 = &b_i[8]; + const double *b_3 = &b_i[16]; + + const double *bioverJB_1 = &bioverJB[0]; + const double *bioverJB_2 = &bioverJB[8]; + const double *bioverJB_3 = &bioverJB[16]; + + const double *dualcurlbhatoverB_1 = &dualcurlbhatoverB[0]; + const double *dualcurlbhatoverB_2 = &dualcurlbhatoverB[8]; + const double *dualcurlbhatoverB_3 = &dualcurlbhatoverB[16]; + + double hamil[48] = {0.}; + hamil[0] = 2.0*(phi[0]*q_+vmapSq[0]*m_)+1.4142135623730951*bmag[0]*vmap[2]; + hamil[1] = 2.0*phi[1]*q_+1.4142135623730951*bmag[1]*vmap[2]; + hamil[2] = 2.0*phi[2]*q_; + hamil[3] = 2.0*phi[3]*q_+1.4142135623730951*vmap[2]*bmag[3]; + hamil[4] = 2.0*vmapSq[1]*m_; + hamil[5] = 1.4142135623730951*bmag[0]*vmap[3]; + hamil[6] = 2.0*phi[4]*q_; + hamil[7] = 2.0*phi[5]*q_+1.4142135623730951*vmap[2]*bmag[5]; + hamil[8] = 2.0*phi[6]*q_; + hamil[12] = 1.4142135623730951*bmag[1]*vmap[3]; + hamil[14] = 1.4142135623730951*bmag[3]*vmap[3]; + hamil[16] = 2.0*phi[7]*q_; + hamil[21] = 1.4142135623730951*vmap[3]*bmag[5]; + hamil[32] = 2.0*vmapSq[2]*m_; + + double vmap2 = vmap[1]*vmap[1]; + + double hamil2[2] = {0.}; + hamil2[0] = hamil[4]*hamil[4]; + hamil2[1] = hamil[32]*hamil[32]; + + double alphax[48] = {0.}; + alphax[0] = (((-(0.3061862178478971*bioverJB_2[1]*hamil[4]*apar[5])-0.3061862178478971*bioverJB_2[0]*apar[3]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.3061862178478971*hamil[4]*bioverJB_3[5]*apar[7]+0.3061862178478971*bioverJB_3[3]*hamil[4]*apar[6]+0.3061862178478971*bioverJB_3[1]*apar[4]*hamil[4]+0.3061862178478971*bioverJB_3[0]*apar[2]*hamil[4])*rdx2*rdy2)/vmap[1]+((0.1767766952966368*hamil[4]*apar[5]*dualcurlbhatoverB_1[5]+0.1767766952966368*apar[3]*dualcurlbhatoverB_1[3]*hamil[4]+0.1767766952966368*apar[1]*dualcurlbhatoverB_1[1]*hamil[4]+0.1767766952966368*apar[0]*dualcurlbhatoverB_1[0]*hamil[4])*rdx2)/vmap[1])/m_; + alphax[1] = (((-(0.3061862178478971*bioverJB_2[0]*hamil[4]*apar[5])-0.3061862178478971*bioverJB_2[1]*apar[3]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.3061862178478971*bioverJB_3[3]*hamil[4]*apar[7]+0.3061862178478971*hamil[4]*bioverJB_3[5]*apar[6]+0.3061862178478971*bioverJB_3[0]*apar[4]*hamil[4]+0.3061862178478971*bioverJB_3[1]*apar[2]*hamil[4])*rdx2*rdy2)/vmap[1]+((0.1767766952966368*apar[3]*hamil[4]*dualcurlbhatoverB_1[5]+0.1767766952966368*dualcurlbhatoverB_1[3]*hamil[4]*apar[5]+0.1767766952966368*apar[0]*dualcurlbhatoverB_1[1]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_1[0]*apar[1]*hamil[4])*rdx2)/vmap[1])/m_; + alphax[2] = (((-(0.3061862178478971*bioverJB_2[1]*hamil[4]*apar[7])-0.3061862178478971*bioverJB_2[0]*hamil[4]*apar[6])*rdx2*rdz2)/vmap[1]+((0.1767766952966368*hamil[4]*dualcurlbhatoverB_1[5]*apar[7]+0.1767766952966368*dualcurlbhatoverB_1[3]*hamil[4]*apar[6]+0.1767766952966368*dualcurlbhatoverB_1[1]*apar[4]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_1[0]*apar[2]*hamil[4])*rdx2)/vmap[1])/m_; + alphax[3] = (((-(0.3061862178478971*hamil[4]*apar[5]*bioverJB_2[5])-0.3061862178478971*apar[3]*bioverJB_2[3]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.3061862178478971*bioverJB_3[1]*hamil[4]*apar[7]+0.3061862178478971*bioverJB_3[0]*hamil[4]*apar[6]+0.3061862178478971*apar[4]*hamil[4]*bioverJB_3[5]+0.3061862178478971*apar[2]*bioverJB_3[3]*hamil[4])*rdx2*rdy2)/vmap[1]+((0.1767766952966368*apar[1]*hamil[4]*dualcurlbhatoverB_1[5]+0.1767766952966368*dualcurlbhatoverB_1[1]*hamil[4]*apar[5]+0.1767766952966368*apar[0]*dualcurlbhatoverB_1[3]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_1[0]*apar[3]*hamil[4])*rdx2)/vmap[1])/m_; + alphax[4] = (((-(0.6846531968814573*bioverJB_2[1]*apar[5]*hamil[32])-0.6846531968814573*bioverJB_2[0]*apar[3]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.6846531968814573*bioverJB_3[5]*apar[7]*hamil[32]+0.6846531968814573*bioverJB_3[3]*apar[6]*hamil[32]+0.6846531968814573*bioverJB_3[1]*apar[4]*hamil[32]+0.6846531968814573*bioverJB_3[0]*apar[2]*hamil[32])*rdx2*rdy2)/vmap[1]+((0.3952847075210473*apar[5]*dualcurlbhatoverB_1[5]*hamil[32]+0.3952847075210473*apar[3]*dualcurlbhatoverB_1[3]*hamil[32]+0.3952847075210473*apar[1]*dualcurlbhatoverB_1[1]*hamil[32]+0.3952847075210473*apar[0]*dualcurlbhatoverB_1[0]*hamil[32])*rdx2)/vmap[1])/m_; + alphax[6] = (((-(0.3061862178478971*bioverJB_2[0]*hamil[4]*apar[7])-0.3061862178478971*bioverJB_2[1]*hamil[4]*apar[6])*rdx2*rdz2)/vmap[1]+((0.1767766952966368*dualcurlbhatoverB_1[3]*hamil[4]*apar[7]+0.1767766952966368*hamil[4]*dualcurlbhatoverB_1[5]*apar[6]+0.1767766952966368*dualcurlbhatoverB_1[0]*apar[4]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_1[1]*apar[2]*hamil[4])*rdx2)/vmap[1])/m_; + alphax[7] = (((-(0.3061862178478971*apar[3]*hamil[4]*bioverJB_2[5])-0.3061862178478971*bioverJB_2[3]*hamil[4]*apar[5])*rdx2*rdz2)/vmap[1]+((0.3061862178478971*bioverJB_3[0]*hamil[4]*apar[7]+0.3061862178478971*bioverJB_3[1]*hamil[4]*apar[6]+0.3061862178478971*apar[2]*hamil[4]*bioverJB_3[5]+0.3061862178478971*bioverJB_3[3]*apar[4]*hamil[4])*rdx2*rdy2)/vmap[1]+((0.1767766952966368*apar[0]*hamil[4]*dualcurlbhatoverB_1[5]+0.1767766952966368*dualcurlbhatoverB_1[0]*hamil[4]*apar[5]+0.1767766952966368*apar[1]*dualcurlbhatoverB_1[3]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_1[1]*apar[3]*hamil[4])*rdx2)/vmap[1])/m_; + alphax[8] = (((-(0.3061862178478971*hamil[4]*bioverJB_2[5]*apar[7])-0.3061862178478971*bioverJB_2[3]*hamil[4]*apar[6])*rdx2*rdz2)/vmap[1]+((0.1767766952966368*dualcurlbhatoverB_1[1]*hamil[4]*apar[7]+0.1767766952966368*dualcurlbhatoverB_1[0]*hamil[4]*apar[6]+0.1767766952966368*apar[4]*hamil[4]*dualcurlbhatoverB_1[5]+0.1767766952966368*apar[2]*dualcurlbhatoverB_1[3]*hamil[4])*rdx2)/vmap[1])/m_; + alphax[9] = (((-(0.6846531968814573*bioverJB_2[0]*apar[5]*hamil[32])-0.6846531968814573*bioverJB_2[1]*apar[3]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.6846531968814573*bioverJB_3[3]*apar[7]*hamil[32]+0.6846531968814573*bioverJB_3[5]*apar[6]*hamil[32]+0.6846531968814573*bioverJB_3[0]*apar[4]*hamil[32]+0.6846531968814573*bioverJB_3[1]*apar[2]*hamil[32])*rdx2*rdy2)/vmap[1]+((0.3952847075210473*apar[3]*dualcurlbhatoverB_1[5]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[3]*apar[5]*hamil[32]+0.3952847075210473*apar[0]*dualcurlbhatoverB_1[1]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[0]*apar[1]*hamil[32])*rdx2)/vmap[1])/m_; + alphax[10] = (((-(0.6846531968814573*bioverJB_2[1]*apar[7]*hamil[32])-0.6846531968814573*bioverJB_2[0]*apar[6]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.3952847075210473*dualcurlbhatoverB_1[5]*apar[7]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[3]*apar[6]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[1]*apar[4]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[0]*apar[2]*hamil[32])*rdx2)/vmap[1])/m_; + alphax[11] = (((-(0.6846531968814573*apar[5]*bioverJB_2[5]*hamil[32])-0.6846531968814573*apar[3]*bioverJB_2[3]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.6846531968814573*bioverJB_3[1]*apar[7]*hamil[32]+0.6846531968814573*bioverJB_3[0]*apar[6]*hamil[32]+0.6846531968814573*apar[4]*bioverJB_3[5]*hamil[32]+0.6846531968814573*apar[2]*bioverJB_3[3]*hamil[32])*rdx2*rdy2)/vmap[1]+((0.3952847075210473*apar[1]*dualcurlbhatoverB_1[5]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[1]*apar[5]*hamil[32]+0.3952847075210473*apar[0]*dualcurlbhatoverB_1[3]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[0]*apar[3]*hamil[32])*rdx2)/vmap[1])/m_; + alphax[16] = (((-(0.3061862178478971*bioverJB_2[3]*hamil[4]*apar[7])-0.3061862178478971*hamil[4]*bioverJB_2[5]*apar[6])*rdx2*rdz2)/vmap[1]+((0.1767766952966368*dualcurlbhatoverB_1[0]*hamil[4]*apar[7]+0.1767766952966368*dualcurlbhatoverB_1[1]*hamil[4]*apar[6]+0.1767766952966368*apar[2]*hamil[4]*dualcurlbhatoverB_1[5]+0.1767766952966368*dualcurlbhatoverB_1[3]*apar[4]*hamil[4])*rdx2)/vmap[1])/m_; + alphax[17] = (((-(0.6846531968814573*bioverJB_2[0]*apar[7]*hamil[32])-0.6846531968814573*bioverJB_2[1]*apar[6]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.3952847075210473*dualcurlbhatoverB_1[3]*apar[7]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[5]*apar[6]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[0]*apar[4]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[1]*apar[2]*hamil[32])*rdx2)/vmap[1])/m_; + alphax[18] = (((-(0.6846531968814573*apar[3]*bioverJB_2[5]*hamil[32])-0.6846531968814573*bioverJB_2[3]*apar[5]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.6846531968814573*bioverJB_3[0]*apar[7]*hamil[32]+0.6846531968814573*bioverJB_3[1]*apar[6]*hamil[32]+0.6846531968814573*apar[2]*bioverJB_3[5]*hamil[32]+0.6846531968814573*bioverJB_3[3]*apar[4]*hamil[32])*rdx2*rdy2)/vmap[1]+((0.3952847075210473*apar[0]*dualcurlbhatoverB_1[5]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[0]*apar[5]*hamil[32]+0.3952847075210473*apar[1]*dualcurlbhatoverB_1[3]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[1]*apar[3]*hamil[32])*rdx2)/vmap[1])/m_; + alphax[19] = (((-(0.6846531968814573*bioverJB_2[5]*apar[7]*hamil[32])-0.6846531968814573*bioverJB_2[3]*apar[6]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.3952847075210473*dualcurlbhatoverB_1[1]*apar[7]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[0]*apar[6]*hamil[32]+0.3952847075210473*apar[4]*dualcurlbhatoverB_1[5]*hamil[32]+0.3952847075210473*apar[2]*dualcurlbhatoverB_1[3]*hamil[32])*rdx2)/vmap[1])/m_; + alphax[26] = (((-(0.6846531968814573*bioverJB_2[3]*apar[7]*hamil[32])-0.6846531968814573*bioverJB_2[5]*apar[6]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.3952847075210473*dualcurlbhatoverB_1[0]*apar[7]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[1]*apar[6]*hamil[32]+0.3952847075210473*apar[2]*dualcurlbhatoverB_1[5]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_1[3]*apar[4]*hamil[32])*rdx2)/vmap[1])/m_; + + + out[1] += 0.3061862178478971*(alphax[26]*fin[26]+alphax[19]*fin[19]+alphax[18]*fin[18]+alphax[17]*fin[17]+alphax[16]*fin[16]+alphax[11]*fin[11]+alphax[10]*fin[10]+alphax[9]*fin[9]+alphax[8]*fin[8]+alphax[7]*fin[7]+alphax[6]*fin[6]+alphax[4]*fin[4]+alphax[3]*fin[3]+alphax[2]*fin[2]+alphax[1]*fin[1]+alphax[0]*fin[0]); + out[6] += 0.3061862178478971*(alphax[18]*fin[26]+fin[18]*alphax[26]+alphax[11]*fin[19]+fin[11]*alphax[19]+alphax[9]*fin[17]+fin[9]*alphax[17]+alphax[7]*fin[16]+fin[7]*alphax[16]+alphax[4]*fin[10]+fin[4]*alphax[10]+alphax[3]*fin[8]+fin[3]*alphax[8]+alphax[1]*fin[6]+fin[1]*alphax[6]+alphax[0]*fin[2]+fin[0]*alphax[2]); + out[7] += 0.3061862178478971*(alphax[17]*fin[26]+fin[17]*alphax[26]+alphax[10]*fin[19]+fin[10]*alphax[19]+alphax[9]*fin[18]+fin[9]*alphax[18]+alphax[6]*fin[16]+fin[6]*alphax[16]+alphax[4]*fin[11]+fin[4]*alphax[11]+alphax[2]*fin[8]+fin[2]*alphax[8]+alphax[1]*fin[7]+fin[1]*alphax[7]+alphax[0]*fin[3]+fin[0]*alphax[3]); + out[9] += 0.27386127875258304*alphax[26]*fin[43]+0.273861278752583*(alphax[19]*fin[39]+alphax[18]*fin[38]+alphax[17]*fin[37])+0.27386127875258304*(alphax[11]*fin[35]+alphax[10]*fin[34]+alphax[9]*fin[33])+0.273861278752583*alphax[4]*fin[32]+0.3061862178478971*(alphax[16]*fin[26]+fin[16]*alphax[26]+alphax[8]*fin[19]+fin[8]*alphax[19]+alphax[7]*fin[18]+fin[7]*alphax[18]+alphax[6]*fin[17]+fin[6]*alphax[17]+alphax[3]*fin[11]+fin[3]*alphax[11]+alphax[2]*fin[10]+fin[2]*alphax[10]+alphax[1]*fin[9]+fin[1]*alphax[9]+alphax[0]*fin[4]+fin[0]*alphax[4]); + out[12] += 0.3061862178478971*(alphax[26]*fin[31]+alphax[19]*fin[30]+alphax[18]*fin[29]+alphax[17]*fin[28]+alphax[16]*fin[27]+alphax[11]*fin[25]+alphax[10]*fin[24]+alphax[9]*fin[23]+alphax[8]*fin[22]+alphax[7]*fin[21]+alphax[6]*fin[20]+alphax[4]*fin[15]+alphax[3]*fin[14]+alphax[2]*fin[13]+alphax[1]*fin[12]+alphax[0]*fin[5]); + out[16] += 0.3061862178478971*(alphax[9]*fin[26]+fin[9]*alphax[26]+alphax[4]*fin[19]+fin[4]*alphax[19]+alphax[17]*fin[18]+fin[17]*alphax[18]+alphax[1]*fin[16]+fin[1]*alphax[16]+alphax[10]*fin[11]+fin[10]*alphax[11]+alphax[0]*fin[8]+fin[0]*alphax[8]+alphax[6]*fin[7]+fin[6]*alphax[7]+alphax[2]*fin[3]+fin[2]*alphax[3]); + out[17] += 0.27386127875258304*alphax[18]*fin[43]+0.273861278752583*(alphax[11]*fin[39]+alphax[26]*fin[38]+alphax[9]*fin[37])+0.27386127875258304*(alphax[19]*fin[35]+alphax[4]*fin[34]+alphax[17]*fin[33])+0.273861278752583*alphax[10]*fin[32]+0.3061862178478971*(alphax[7]*fin[26]+fin[7]*alphax[26]+alphax[3]*fin[19]+fin[3]*alphax[19]+alphax[16]*fin[18]+fin[16]*alphax[18]+alphax[1]*fin[17]+fin[1]*alphax[17]+alphax[8]*fin[11]+fin[8]*alphax[11]+alphax[0]*fin[10]+fin[0]*alphax[10]+alphax[6]*fin[9]+fin[6]*alphax[9]+alphax[2]*fin[4]+fin[2]*alphax[4]); + out[18] += 0.27386127875258304*alphax[17]*fin[43]+0.273861278752583*(alphax[10]*fin[39]+alphax[9]*fin[38]+alphax[26]*fin[37])+0.27386127875258304*(alphax[4]*fin[35]+alphax[19]*fin[34]+alphax[18]*fin[33])+0.273861278752583*alphax[11]*fin[32]+0.3061862178478971*(alphax[6]*fin[26]+fin[6]*alphax[26]+alphax[2]*fin[19]+fin[2]*alphax[19]+alphax[1]*fin[18]+fin[1]*alphax[18]+alphax[16]*fin[17]+fin[16]*alphax[17]+alphax[0]*fin[11]+fin[0]*alphax[11]+alphax[8]*fin[10]+fin[8]*alphax[10]+alphax[7]*fin[9]+fin[7]*alphax[9]+alphax[3]*fin[4]+fin[3]*alphax[4]); + out[20] += 0.3061862178478971*(alphax[18]*fin[31]+alphax[11]*fin[30]+alphax[26]*fin[29]+alphax[9]*fin[28]+alphax[7]*fin[27]+alphax[19]*fin[25]+alphax[4]*fin[24]+alphax[17]*fin[23]+alphax[3]*fin[22]+alphax[16]*fin[21]+alphax[1]*fin[20]+alphax[10]*fin[15]+alphax[8]*fin[14]+alphax[0]*fin[13]+alphax[6]*fin[12]+alphax[2]*fin[5]); + out[21] += 0.3061862178478971*(alphax[17]*fin[31]+alphax[10]*fin[30]+alphax[9]*fin[29]+alphax[26]*fin[28]+alphax[6]*fin[27]+alphax[4]*fin[25]+alphax[19]*fin[24]+alphax[18]*fin[23]+alphax[2]*fin[22]+alphax[1]*fin[21]+alphax[16]*fin[20]+alphax[11]*fin[15]+alphax[0]*fin[14]+alphax[8]*fin[13]+alphax[7]*fin[12]+alphax[3]*fin[5]); + out[23] += 0.273861278752583*alphax[26]*fin[47]+0.27386127875258304*(alphax[19]*fin[46]+alphax[18]*fin[45]+alphax[17]*fin[44])+0.273861278752583*(alphax[11]*fin[42]+alphax[10]*fin[41]+alphax[9]*fin[40])+0.27386127875258304*alphax[4]*fin[36]+0.3061862178478971*(alphax[16]*fin[31]+alphax[8]*fin[30]+alphax[7]*fin[29]+alphax[6]*fin[28]+alphax[26]*fin[27]+alphax[3]*fin[25]+alphax[2]*fin[24]+alphax[1]*fin[23]+alphax[19]*fin[22]+alphax[18]*fin[21]+alphax[17]*fin[20]+alphax[0]*fin[15]+alphax[11]*fin[14]+alphax[10]*fin[13]+alphax[9]*fin[12]+alphax[4]*fin[5]); + out[26] += 0.27386127875258304*alphax[9]*fin[43]+0.273861278752583*(alphax[4]*fin[39]+alphax[17]*fin[38]+alphax[18]*fin[37])+0.27386127875258304*(alphax[10]*fin[35]+alphax[11]*fin[34]+alphax[26]*fin[33])+0.273861278752583*alphax[19]*fin[32]+0.3061862178478971*(alphax[1]*fin[26]+fin[1]*alphax[26]+alphax[0]*fin[19]+fin[0]*alphax[19]+alphax[6]*fin[18]+fin[6]*alphax[18]+alphax[7]*fin[17]+fin[7]*alphax[17]+alphax[9]*fin[16]+fin[9]*alphax[16]+alphax[2]*fin[11]+fin[2]*alphax[11]+alphax[3]*fin[10]+fin[3]*alphax[10]+alphax[4]*fin[8]+fin[4]*alphax[8]); + out[27] += 0.3061862178478971*(alphax[9]*fin[31]+alphax[4]*fin[30]+alphax[17]*fin[29]+alphax[18]*fin[28]+alphax[1]*fin[27]+fin[23]*alphax[26]+alphax[10]*fin[25]+alphax[11]*fin[24]+alphax[0]*fin[22]+alphax[6]*fin[21]+alphax[7]*fin[20]+fin[15]*alphax[19]+fin[12]*alphax[16]+alphax[2]*fin[14]+alphax[3]*fin[13]+fin[5]*alphax[8]); + out[28] += 0.273861278752583*alphax[18]*fin[47]+0.27386127875258304*(alphax[11]*fin[46]+alphax[26]*fin[45]+alphax[9]*fin[44])+0.273861278752583*(alphax[19]*fin[42]+alphax[4]*fin[41]+alphax[17]*fin[40])+0.27386127875258304*alphax[10]*fin[36]+0.3061862178478971*(alphax[7]*fin[31]+alphax[3]*fin[30]+alphax[16]*fin[29]+alphax[1]*fin[28]+alphax[18]*fin[27]+fin[21]*alphax[26]+alphax[8]*fin[25]+alphax[0]*fin[24]+alphax[6]*fin[23]+alphax[11]*fin[22]+alphax[9]*fin[20]+fin[14]*alphax[19]+fin[12]*alphax[17]+alphax[2]*fin[15]+alphax[4]*fin[13]+fin[5]*alphax[10]); + out[29] += 0.273861278752583*alphax[17]*fin[47]+0.27386127875258304*(alphax[10]*fin[46]+alphax[9]*fin[45]+alphax[26]*fin[44])+0.273861278752583*(alphax[4]*fin[42]+alphax[19]*fin[41]+alphax[18]*fin[40])+0.27386127875258304*alphax[11]*fin[36]+0.3061862178478971*(alphax[6]*fin[31]+alphax[2]*fin[30]+alphax[1]*fin[29]+alphax[16]*fin[28]+alphax[17]*fin[27]+fin[20]*alphax[26]+alphax[0]*fin[25]+alphax[8]*fin[24]+alphax[7]*fin[23]+alphax[10]*fin[22]+alphax[9]*fin[21]+fin[13]*alphax[19]+fin[12]*alphax[18]+alphax[3]*fin[15]+alphax[4]*fin[14]+fin[5]*alphax[11]); + out[31] += 0.273861278752583*alphax[9]*fin[47]+0.27386127875258304*(alphax[4]*fin[46]+alphax[17]*fin[45]+alphax[18]*fin[44])+0.273861278752583*(alphax[10]*fin[42]+alphax[11]*fin[41]+alphax[26]*fin[40])+0.27386127875258304*alphax[19]*fin[36]+0.3061862178478971*(alphax[1]*fin[31]+alphax[0]*fin[30]+alphax[6]*fin[29]+alphax[7]*fin[28]+alphax[9]*fin[27]+fin[12]*alphax[26]+alphax[2]*fin[25]+alphax[3]*fin[24]+alphax[16]*fin[23]+alphax[4]*fin[22]+alphax[17]*fin[21]+alphax[18]*fin[20]+fin[5]*alphax[19]+alphax[8]*fin[15]+alphax[10]*fin[14]+alphax[11]*fin[13]); + out[33] += 0.3061862178478971*(alphax[16]*fin[43]+alphax[8]*fin[39]+alphax[7]*fin[38]+alphax[6]*fin[37]+alphax[3]*fin[35]+alphax[2]*fin[34]+alphax[1]*fin[33]+alphax[0]*fin[32])+0.27386127875258304*(alphax[26]*fin[26]+alphax[19]*fin[19]+alphax[18]*fin[18]+alphax[17]*fin[17]+alphax[11]*fin[11]+alphax[10]*fin[10]+alphax[9]*fin[9]+alphax[4]*fin[4]); + out[37] += 0.3061862178478971*(alphax[7]*fin[43]+alphax[3]*fin[39]+alphax[16]*fin[38]+alphax[1]*fin[37]+alphax[8]*fin[35]+alphax[0]*fin[34]+alphax[6]*fin[33]+alphax[2]*fin[32])+0.273861278752583*(alphax[18]*fin[26]+fin[18]*alphax[26]+alphax[11]*fin[19]+fin[11]*alphax[19]+alphax[9]*fin[17]+fin[9]*alphax[17]+alphax[4]*fin[10]+fin[4]*alphax[10]); + out[38] += 0.3061862178478971*(alphax[6]*fin[43]+alphax[2]*fin[39]+alphax[1]*fin[38]+alphax[16]*fin[37]+alphax[0]*fin[35]+alphax[8]*fin[34]+alphax[7]*fin[33]+alphax[3]*fin[32])+0.273861278752583*(alphax[17]*fin[26]+fin[17]*alphax[26]+alphax[10]*fin[19]+fin[10]*alphax[19]+alphax[9]*fin[18]+fin[9]*alphax[18]+alphax[4]*fin[11]+fin[4]*alphax[11]); + out[40] += 0.3061862178478971*(alphax[16]*fin[47]+alphax[8]*fin[46]+alphax[7]*fin[45]+alphax[6]*fin[44]+alphax[3]*fin[42]+alphax[2]*fin[41]+alphax[1]*fin[40]+alphax[0]*fin[36])+0.273861278752583*(alphax[26]*fin[31]+alphax[19]*fin[30]+alphax[18]*fin[29]+alphax[17]*fin[28]+alphax[11]*fin[25]+alphax[10]*fin[24]+alphax[9]*fin[23]+alphax[4]*fin[15]); + out[43] += 0.3061862178478971*(alphax[1]*fin[43]+alphax[0]*fin[39]+alphax[6]*fin[38]+alphax[7]*fin[37]+alphax[2]*fin[35]+alphax[3]*fin[34]+alphax[16]*fin[33]+alphax[8]*fin[32])+0.27386127875258304*(alphax[9]*fin[26]+fin[9]*alphax[26]+alphax[4]*fin[19]+fin[4]*alphax[19]+alphax[17]*fin[18]+fin[17]*alphax[18]+alphax[10]*fin[11]+fin[10]*alphax[11]); + out[44] += 0.3061862178478971*(alphax[7]*fin[47]+alphax[3]*fin[46]+alphax[16]*fin[45]+alphax[1]*fin[44]+alphax[8]*fin[42]+alphax[0]*fin[41]+alphax[6]*fin[40]+alphax[2]*fin[36])+0.27386127875258304*(alphax[18]*fin[31]+alphax[11]*fin[30]+alphax[26]*fin[29]+alphax[9]*fin[28]+alphax[19]*fin[25]+alphax[4]*fin[24]+alphax[17]*fin[23]+alphax[10]*fin[15]); + out[45] += 0.3061862178478971*(alphax[6]*fin[47]+alphax[2]*fin[46]+alphax[1]*fin[45]+alphax[16]*fin[44]+alphax[0]*fin[42]+alphax[8]*fin[41]+alphax[7]*fin[40]+alphax[3]*fin[36])+0.27386127875258304*(alphax[17]*fin[31]+alphax[10]*fin[30]+alphax[9]*fin[29]+alphax[26]*fin[28]+alphax[4]*fin[25]+alphax[19]*fin[24]+alphax[18]*fin[23]+alphax[11]*fin[15]); + out[47] += 0.3061862178478971*(alphax[1]*fin[47]+alphax[0]*fin[46]+alphax[6]*fin[45]+alphax[7]*fin[44]+alphax[2]*fin[42]+alphax[3]*fin[41]+alphax[16]*fin[40]+alphax[8]*fin[36])+0.273861278752583*(alphax[9]*fin[31]+alphax[4]*fin[30]+alphax[17]*fin[29]+alphax[18]*fin[28]+fin[23]*alphax[26]+alphax[10]*fin[25]+alphax[11]*fin[24]+fin[15]*alphax[19]); + + double alphay[48] = {0.}; + alphay[0] = (((0.3061862178478971*bioverJB_1[1]*hamil[4]*apar[5]+0.3061862178478971*bioverJB_1[0]*apar[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((-(0.3061862178478971*bioverJB_3[3]*hamil[4]*apar[5])-0.3061862178478971*bioverJB_3[0]*apar[1]*hamil[4])*rdx2*rdy2)/vmap[1]+((0.1767766952966368*hamil[4]*apar[5]*dualcurlbhatoverB_2[5]+0.1767766952966368*apar[3]*dualcurlbhatoverB_2[3]*hamil[4]+0.1767766952966368*apar[1]*dualcurlbhatoverB_2[1]*hamil[4]+0.1767766952966368*apar[0]*dualcurlbhatoverB_2[0]*hamil[4])*rdy2)/vmap[1])/m_; + alphay[1] = (((0.3061862178478971*bioverJB_1[0]*hamil[4]*apar[5]+0.3061862178478971*bioverJB_1[1]*apar[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((-(0.3061862178478971*hamil[4]*apar[5]*bioverJB_3[5])-0.3061862178478971*apar[1]*bioverJB_3[1]*hamil[4])*rdx2*rdy2)/vmap[1]+((0.1767766952966368*apar[3]*hamil[4]*dualcurlbhatoverB_2[5]+0.1767766952966368*dualcurlbhatoverB_2[3]*hamil[4]*apar[5]+0.1767766952966368*apar[0]*dualcurlbhatoverB_2[1]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_2[0]*apar[1]*hamil[4])*rdy2)/vmap[1])/m_; + alphay[2] = (((0.3061862178478971*bioverJB_1[1]*hamil[4]*apar[7]+0.3061862178478971*bioverJB_1[0]*hamil[4]*apar[6])*rdy2*rdz2)/vmap[1]+((-(0.3061862178478971*bioverJB_3[3]*hamil[4]*apar[7])-0.3061862178478971*bioverJB_3[0]*apar[4]*hamil[4])*rdx2*rdy2)/vmap[1]+((0.1767766952966368*hamil[4]*dualcurlbhatoverB_2[5]*apar[7]+0.1767766952966368*dualcurlbhatoverB_2[3]*hamil[4]*apar[6]+0.1767766952966368*dualcurlbhatoverB_2[1]*apar[4]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_2[0]*apar[2]*hamil[4])*rdy2)/vmap[1])/m_; + alphay[3] = (((0.3061862178478971*hamil[4]*apar[5]*bioverJB_1[5]+0.3061862178478971*apar[3]*bioverJB_1[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((-(0.3061862178478971*bioverJB_3[0]*hamil[4]*apar[5])-0.3061862178478971*apar[1]*bioverJB_3[3]*hamil[4])*rdx2*rdy2)/vmap[1]+((0.1767766952966368*apar[1]*hamil[4]*dualcurlbhatoverB_2[5]+0.1767766952966368*dualcurlbhatoverB_2[1]*hamil[4]*apar[5]+0.1767766952966368*apar[0]*dualcurlbhatoverB_2[3]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_2[0]*apar[3]*hamil[4])*rdy2)/vmap[1])/m_; + alphay[4] = (((0.6846531968814573*bioverJB_1[1]*apar[5]*hamil[32]+0.6846531968814573*bioverJB_1[0]*apar[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.6846531968814573*bioverJB_3[3]*apar[5]*hamil[32])-0.6846531968814573*bioverJB_3[0]*apar[1]*hamil[32])*rdx2*rdy2)/vmap[1]+((0.3952847075210473*apar[5]*dualcurlbhatoverB_2[5]*hamil[32]+0.3952847075210473*apar[3]*dualcurlbhatoverB_2[3]*hamil[32]+0.3952847075210473*apar[1]*dualcurlbhatoverB_2[1]*hamil[32]+0.3952847075210473*apar[0]*dualcurlbhatoverB_2[0]*hamil[32])*rdy2)/vmap[1])/m_; + alphay[6] = (((0.3061862178478971*bioverJB_1[0]*hamil[4]*apar[7]+0.3061862178478971*bioverJB_1[1]*hamil[4]*apar[6])*rdy2*rdz2)/vmap[1]+((-(0.3061862178478971*hamil[4]*bioverJB_3[5]*apar[7])-0.3061862178478971*bioverJB_3[1]*apar[4]*hamil[4])*rdx2*rdy2)/vmap[1]+((0.1767766952966368*dualcurlbhatoverB_2[3]*hamil[4]*apar[7]+0.1767766952966368*hamil[4]*dualcurlbhatoverB_2[5]*apar[6]+0.1767766952966368*dualcurlbhatoverB_2[0]*apar[4]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_2[1]*apar[2]*hamil[4])*rdy2)/vmap[1])/m_; + alphay[7] = (((0.3061862178478971*apar[3]*hamil[4]*bioverJB_1[5]+0.3061862178478971*bioverJB_1[3]*hamil[4]*apar[5])*rdy2*rdz2)/vmap[1]+((-(0.3061862178478971*apar[1]*hamil[4]*bioverJB_3[5])-0.3061862178478971*bioverJB_3[1]*hamil[4]*apar[5])*rdx2*rdy2)/vmap[1]+((0.1767766952966368*apar[0]*hamil[4]*dualcurlbhatoverB_2[5]+0.1767766952966368*dualcurlbhatoverB_2[0]*hamil[4]*apar[5]+0.1767766952966368*apar[1]*dualcurlbhatoverB_2[3]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_2[1]*apar[3]*hamil[4])*rdy2)/vmap[1])/m_; + alphay[8] = (((0.3061862178478971*hamil[4]*bioverJB_1[5]*apar[7]+0.3061862178478971*bioverJB_1[3]*hamil[4]*apar[6])*rdy2*rdz2)/vmap[1]+((-(0.3061862178478971*bioverJB_3[0]*hamil[4]*apar[7])-0.3061862178478971*bioverJB_3[3]*apar[4]*hamil[4])*rdx2*rdy2)/vmap[1]+((0.1767766952966368*dualcurlbhatoverB_2[1]*hamil[4]*apar[7]+0.1767766952966368*dualcurlbhatoverB_2[0]*hamil[4]*apar[6]+0.1767766952966368*apar[4]*hamil[4]*dualcurlbhatoverB_2[5]+0.1767766952966368*apar[2]*dualcurlbhatoverB_2[3]*hamil[4])*rdy2)/vmap[1])/m_; + alphay[9] = (((0.6846531968814573*bioverJB_1[0]*apar[5]*hamil[32]+0.6846531968814573*bioverJB_1[1]*apar[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.6846531968814573*apar[5]*bioverJB_3[5]*hamil[32])-0.6846531968814573*apar[1]*bioverJB_3[1]*hamil[32])*rdx2*rdy2)/vmap[1]+((0.3952847075210473*apar[3]*dualcurlbhatoverB_2[5]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[3]*apar[5]*hamil[32]+0.3952847075210473*apar[0]*dualcurlbhatoverB_2[1]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[0]*apar[1]*hamil[32])*rdy2)/vmap[1])/m_; + alphay[10] = (((0.6846531968814573*bioverJB_1[1]*apar[7]*hamil[32]+0.6846531968814573*bioverJB_1[0]*apar[6]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.6846531968814573*bioverJB_3[3]*apar[7]*hamil[32])-0.6846531968814573*bioverJB_3[0]*apar[4]*hamil[32])*rdx2*rdy2)/vmap[1]+((0.3952847075210473*dualcurlbhatoverB_2[5]*apar[7]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[3]*apar[6]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[1]*apar[4]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[0]*apar[2]*hamil[32])*rdy2)/vmap[1])/m_; + alphay[11] = (((0.6846531968814573*apar[5]*bioverJB_1[5]*hamil[32]+0.6846531968814573*apar[3]*bioverJB_1[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.6846531968814573*bioverJB_3[0]*apar[5]*hamil[32])-0.6846531968814573*apar[1]*bioverJB_3[3]*hamil[32])*rdx2*rdy2)/vmap[1]+((0.3952847075210473*apar[1]*dualcurlbhatoverB_2[5]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[1]*apar[5]*hamil[32]+0.3952847075210473*apar[0]*dualcurlbhatoverB_2[3]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[0]*apar[3]*hamil[32])*rdy2)/vmap[1])/m_; + alphay[16] = (((0.3061862178478971*bioverJB_1[3]*hamil[4]*apar[7]+0.3061862178478971*hamil[4]*bioverJB_1[5]*apar[6])*rdy2*rdz2)/vmap[1]+((-(0.3061862178478971*bioverJB_3[1]*hamil[4]*apar[7])-0.3061862178478971*apar[4]*hamil[4]*bioverJB_3[5])*rdx2*rdy2)/vmap[1]+((0.1767766952966368*dualcurlbhatoverB_2[0]*hamil[4]*apar[7]+0.1767766952966368*dualcurlbhatoverB_2[1]*hamil[4]*apar[6]+0.1767766952966368*apar[2]*hamil[4]*dualcurlbhatoverB_2[5]+0.1767766952966368*dualcurlbhatoverB_2[3]*apar[4]*hamil[4])*rdy2)/vmap[1])/m_; + alphay[17] = (((0.6846531968814573*bioverJB_1[0]*apar[7]*hamil[32]+0.6846531968814573*bioverJB_1[1]*apar[6]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.6846531968814573*bioverJB_3[5]*apar[7]*hamil[32])-0.6846531968814573*bioverJB_3[1]*apar[4]*hamil[32])*rdx2*rdy2)/vmap[1]+((0.3952847075210473*dualcurlbhatoverB_2[3]*apar[7]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[5]*apar[6]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[0]*apar[4]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[1]*apar[2]*hamil[32])*rdy2)/vmap[1])/m_; + alphay[18] = (((0.6846531968814573*apar[3]*bioverJB_1[5]*hamil[32]+0.6846531968814573*bioverJB_1[3]*apar[5]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.6846531968814573*apar[1]*bioverJB_3[5]*hamil[32])-0.6846531968814573*bioverJB_3[1]*apar[5]*hamil[32])*rdx2*rdy2)/vmap[1]+((0.3952847075210473*apar[0]*dualcurlbhatoverB_2[5]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[0]*apar[5]*hamil[32]+0.3952847075210473*apar[1]*dualcurlbhatoverB_2[3]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[1]*apar[3]*hamil[32])*rdy2)/vmap[1])/m_; + alphay[19] = (((0.6846531968814573*bioverJB_1[5]*apar[7]*hamil[32]+0.6846531968814573*bioverJB_1[3]*apar[6]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.6846531968814573*bioverJB_3[0]*apar[7]*hamil[32])-0.6846531968814573*bioverJB_3[3]*apar[4]*hamil[32])*rdx2*rdy2)/vmap[1]+((0.3952847075210473*dualcurlbhatoverB_2[1]*apar[7]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[0]*apar[6]*hamil[32]+0.3952847075210473*apar[4]*dualcurlbhatoverB_2[5]*hamil[32]+0.3952847075210473*apar[2]*dualcurlbhatoverB_2[3]*hamil[32])*rdy2)/vmap[1])/m_; + alphay[26] = (((0.6846531968814573*bioverJB_1[3]*apar[7]*hamil[32]+0.6846531968814573*bioverJB_1[5]*apar[6]*hamil[32])*rdy2*rdz2)/vmap[1]+((-(0.6846531968814573*bioverJB_3[1]*apar[7]*hamil[32])-0.6846531968814573*apar[4]*bioverJB_3[5]*hamil[32])*rdx2*rdy2)/vmap[1]+((0.3952847075210473*dualcurlbhatoverB_2[0]*apar[7]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[1]*apar[6]*hamil[32]+0.3952847075210473*apar[2]*dualcurlbhatoverB_2[5]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_2[3]*apar[4]*hamil[32])*rdy2)/vmap[1])/m_; + + + out[2] += 0.3061862178478971*(alphay[26]*fin[26]+alphay[19]*fin[19]+alphay[18]*fin[18]+alphay[17]*fin[17]+alphay[16]*fin[16]+alphay[11]*fin[11]+alphay[10]*fin[10]+alphay[9]*fin[9]+alphay[8]*fin[8]+alphay[7]*fin[7]+alphay[6]*fin[6]+alphay[4]*fin[4]+alphay[3]*fin[3]+alphay[2]*fin[2]+alphay[1]*fin[1]+alphay[0]*fin[0]); + out[6] += 0.3061862178478971*(alphay[19]*fin[26]+fin[19]*alphay[26]+alphay[11]*fin[18]+fin[11]*alphay[18]+alphay[10]*fin[17]+fin[10]*alphay[17]+alphay[8]*fin[16]+fin[8]*alphay[16]+alphay[4]*fin[9]+fin[4]*alphay[9]+alphay[3]*fin[7]+fin[3]*alphay[7]+alphay[2]*fin[6]+fin[2]*alphay[6]+alphay[0]*fin[1]+fin[0]*alphay[1]); + out[8] += 0.3061862178478971*(alphay[17]*fin[26]+fin[17]*alphay[26]+alphay[10]*fin[19]+fin[10]*alphay[19]+alphay[9]*fin[18]+fin[9]*alphay[18]+alphay[6]*fin[16]+fin[6]*alphay[16]+alphay[4]*fin[11]+fin[4]*alphay[11]+alphay[2]*fin[8]+fin[2]*alphay[8]+alphay[1]*fin[7]+fin[1]*alphay[7]+alphay[0]*fin[3]+fin[0]*alphay[3]); + out[10] += 0.27386127875258304*alphay[26]*fin[43]+0.273861278752583*(alphay[19]*fin[39]+alphay[18]*fin[38]+alphay[17]*fin[37])+0.27386127875258304*(alphay[11]*fin[35]+alphay[10]*fin[34]+alphay[9]*fin[33])+0.273861278752583*alphay[4]*fin[32]+0.3061862178478971*(alphay[16]*fin[26]+fin[16]*alphay[26]+alphay[8]*fin[19]+fin[8]*alphay[19]+alphay[7]*fin[18]+fin[7]*alphay[18]+alphay[6]*fin[17]+fin[6]*alphay[17]+alphay[3]*fin[11]+fin[3]*alphay[11]+alphay[2]*fin[10]+fin[2]*alphay[10]+alphay[1]*fin[9]+fin[1]*alphay[9]+alphay[0]*fin[4]+fin[0]*alphay[4]); + out[13] += 0.3061862178478971*(alphay[26]*fin[31]+alphay[19]*fin[30]+alphay[18]*fin[29]+alphay[17]*fin[28]+alphay[16]*fin[27]+alphay[11]*fin[25]+alphay[10]*fin[24]+alphay[9]*fin[23]+alphay[8]*fin[22]+alphay[7]*fin[21]+alphay[6]*fin[20]+alphay[4]*fin[15]+alphay[3]*fin[14]+alphay[2]*fin[13]+alphay[1]*fin[12]+alphay[0]*fin[5]); + out[16] += 0.3061862178478971*(alphay[10]*fin[26]+fin[10]*alphay[26]+alphay[17]*fin[19]+fin[17]*alphay[19]+alphay[4]*fin[18]+fin[4]*alphay[18]+alphay[2]*fin[16]+fin[2]*alphay[16]+alphay[9]*fin[11]+fin[9]*alphay[11]+alphay[6]*fin[8]+fin[6]*alphay[8]+alphay[0]*fin[7]+fin[0]*alphay[7]+alphay[1]*fin[3]+fin[1]*alphay[3]); + out[17] += 0.27386127875258304*alphay[19]*fin[43]+0.273861278752583*(alphay[26]*fin[39]+alphay[11]*fin[38]+alphay[10]*fin[37])+0.27386127875258304*(alphay[18]*fin[35]+alphay[17]*fin[34]+alphay[4]*fin[33])+0.273861278752583*alphay[9]*fin[32]+0.3061862178478971*(alphay[8]*fin[26]+fin[8]*alphay[26]+alphay[16]*fin[19]+fin[16]*alphay[19]+alphay[3]*fin[18]+fin[3]*alphay[18]+alphay[2]*fin[17]+fin[2]*alphay[17]+alphay[7]*fin[11]+fin[7]*alphay[11]+alphay[6]*fin[10]+fin[6]*alphay[10]+alphay[0]*fin[9]+fin[0]*alphay[9]+alphay[1]*fin[4]+fin[1]*alphay[4]); + out[19] += 0.27386127875258304*alphay[17]*fin[43]+0.273861278752583*(alphay[10]*fin[39]+alphay[9]*fin[38]+alphay[26]*fin[37])+0.27386127875258304*(alphay[4]*fin[35]+alphay[19]*fin[34]+alphay[18]*fin[33])+0.273861278752583*alphay[11]*fin[32]+0.3061862178478971*(alphay[6]*fin[26]+fin[6]*alphay[26]+alphay[2]*fin[19]+fin[2]*alphay[19]+alphay[1]*fin[18]+fin[1]*alphay[18]+alphay[16]*fin[17]+fin[16]*alphay[17]+alphay[0]*fin[11]+fin[0]*alphay[11]+alphay[8]*fin[10]+fin[8]*alphay[10]+alphay[7]*fin[9]+fin[7]*alphay[9]+alphay[3]*fin[4]+fin[3]*alphay[4]); + out[20] += 0.3061862178478971*(alphay[19]*fin[31]+alphay[26]*fin[30]+alphay[11]*fin[29]+alphay[10]*fin[28]+alphay[8]*fin[27]+alphay[18]*fin[25]+alphay[17]*fin[24]+alphay[4]*fin[23]+alphay[16]*fin[22]+alphay[3]*fin[21]+alphay[2]*fin[20]+alphay[9]*fin[15]+alphay[7]*fin[14]+alphay[6]*fin[13]+alphay[0]*fin[12]+alphay[1]*fin[5]); + out[22] += 0.3061862178478971*(alphay[17]*fin[31]+alphay[10]*fin[30]+alphay[9]*fin[29]+alphay[26]*fin[28]+alphay[6]*fin[27]+alphay[4]*fin[25]+alphay[19]*fin[24]+alphay[18]*fin[23]+alphay[2]*fin[22]+alphay[1]*fin[21]+alphay[16]*fin[20]+alphay[11]*fin[15]+alphay[0]*fin[14]+alphay[8]*fin[13]+alphay[7]*fin[12]+alphay[3]*fin[5]); + out[24] += 0.273861278752583*alphay[26]*fin[47]+0.27386127875258304*(alphay[19]*fin[46]+alphay[18]*fin[45]+alphay[17]*fin[44])+0.273861278752583*(alphay[11]*fin[42]+alphay[10]*fin[41]+alphay[9]*fin[40])+0.27386127875258304*alphay[4]*fin[36]+0.3061862178478971*(alphay[16]*fin[31]+alphay[8]*fin[30]+alphay[7]*fin[29]+alphay[6]*fin[28]+alphay[26]*fin[27]+alphay[3]*fin[25]+alphay[2]*fin[24]+alphay[1]*fin[23]+alphay[19]*fin[22]+alphay[18]*fin[21]+alphay[17]*fin[20]+alphay[0]*fin[15]+alphay[11]*fin[14]+alphay[10]*fin[13]+alphay[9]*fin[12]+alphay[4]*fin[5]); + out[26] += 0.27386127875258304*alphay[10]*fin[43]+0.273861278752583*(alphay[17]*fin[39]+alphay[4]*fin[38]+alphay[19]*fin[37])+0.27386127875258304*(alphay[9]*fin[35]+alphay[26]*fin[34]+alphay[11]*fin[33])+0.273861278752583*alphay[18]*fin[32]+0.3061862178478971*(alphay[2]*fin[26]+fin[2]*alphay[26]+alphay[6]*fin[19]+fin[6]*alphay[19]+alphay[0]*fin[18]+fin[0]*alphay[18]+alphay[8]*fin[17]+fin[8]*alphay[17]+alphay[10]*fin[16]+fin[10]*alphay[16]+alphay[1]*fin[11]+fin[1]*alphay[11]+alphay[3]*fin[9]+fin[3]*alphay[9]+alphay[4]*fin[7]+fin[4]*alphay[7]); + out[27] += 0.3061862178478971*(alphay[10]*fin[31]+alphay[17]*fin[30]+alphay[4]*fin[29]+alphay[19]*fin[28]+alphay[2]*fin[27]+fin[24]*alphay[26]+alphay[9]*fin[25]+alphay[11]*fin[23]+alphay[6]*fin[22]+alphay[0]*fin[21]+alphay[8]*fin[20]+fin[15]*alphay[18]+fin[13]*alphay[16]+alphay[1]*fin[14]+alphay[3]*fin[12]+fin[5]*alphay[7]); + out[28] += 0.273861278752583*alphay[19]*fin[47]+0.27386127875258304*(alphay[26]*fin[46]+alphay[11]*fin[45]+alphay[10]*fin[44])+0.273861278752583*(alphay[18]*fin[42]+alphay[17]*fin[41]+alphay[4]*fin[40])+0.27386127875258304*alphay[9]*fin[36]+0.3061862178478971*(alphay[8]*fin[31]+alphay[16]*fin[30]+alphay[3]*fin[29]+alphay[2]*fin[28]+alphay[19]*fin[27]+fin[22]*alphay[26]+alphay[7]*fin[25]+alphay[6]*fin[24]+alphay[0]*fin[23]+alphay[11]*fin[21]+alphay[10]*fin[20]+fin[14]*alphay[18]+fin[13]*alphay[17]+alphay[1]*fin[15]+alphay[4]*fin[12]+fin[5]*alphay[9]); + out[30] += 0.273861278752583*alphay[17]*fin[47]+0.27386127875258304*(alphay[10]*fin[46]+alphay[9]*fin[45]+alphay[26]*fin[44])+0.273861278752583*(alphay[4]*fin[42]+alphay[19]*fin[41]+alphay[18]*fin[40])+0.27386127875258304*alphay[11]*fin[36]+0.3061862178478971*(alphay[6]*fin[31]+alphay[2]*fin[30]+alphay[1]*fin[29]+alphay[16]*fin[28]+alphay[17]*fin[27]+fin[20]*alphay[26]+alphay[0]*fin[25]+alphay[8]*fin[24]+alphay[7]*fin[23]+alphay[10]*fin[22]+alphay[9]*fin[21]+fin[13]*alphay[19]+fin[12]*alphay[18]+alphay[3]*fin[15]+alphay[4]*fin[14]+fin[5]*alphay[11]); + out[31] += 0.273861278752583*alphay[10]*fin[47]+0.27386127875258304*(alphay[17]*fin[46]+alphay[4]*fin[45]+alphay[19]*fin[44])+0.273861278752583*(alphay[9]*fin[42]+alphay[26]*fin[41]+alphay[11]*fin[40])+0.27386127875258304*alphay[18]*fin[36]+0.3061862178478971*(alphay[2]*fin[31]+alphay[6]*fin[30]+alphay[0]*fin[29]+alphay[8]*fin[28]+alphay[10]*fin[27]+fin[13]*alphay[26]+alphay[1]*fin[25]+alphay[16]*fin[24]+alphay[3]*fin[23]+alphay[17]*fin[22]+alphay[4]*fin[21]+alphay[19]*fin[20]+fin[5]*alphay[18]+alphay[7]*fin[15]+alphay[9]*fin[14]+alphay[11]*fin[12]); + out[34] += 0.3061862178478971*(alphay[16]*fin[43]+alphay[8]*fin[39]+alphay[7]*fin[38]+alphay[6]*fin[37]+alphay[3]*fin[35]+alphay[2]*fin[34]+alphay[1]*fin[33]+alphay[0]*fin[32])+0.27386127875258304*(alphay[26]*fin[26]+alphay[19]*fin[19]+alphay[18]*fin[18]+alphay[17]*fin[17]+alphay[11]*fin[11]+alphay[10]*fin[10]+alphay[9]*fin[9]+alphay[4]*fin[4]); + out[37] += 0.3061862178478971*(alphay[8]*fin[43]+alphay[16]*fin[39]+alphay[3]*fin[38]+alphay[2]*fin[37]+alphay[7]*fin[35]+alphay[6]*fin[34]+alphay[0]*fin[33]+alphay[1]*fin[32])+0.273861278752583*(alphay[19]*fin[26]+fin[19]*alphay[26]+alphay[11]*fin[18]+fin[11]*alphay[18]+alphay[10]*fin[17]+fin[10]*alphay[17]+alphay[4]*fin[9]+fin[4]*alphay[9]); + out[39] += 0.3061862178478971*(alphay[6]*fin[43]+alphay[2]*fin[39]+alphay[1]*fin[38]+alphay[16]*fin[37]+alphay[0]*fin[35]+alphay[8]*fin[34]+alphay[7]*fin[33]+alphay[3]*fin[32])+0.273861278752583*(alphay[17]*fin[26]+fin[17]*alphay[26]+alphay[10]*fin[19]+fin[10]*alphay[19]+alphay[9]*fin[18]+fin[9]*alphay[18]+alphay[4]*fin[11]+fin[4]*alphay[11]); + out[41] += 0.3061862178478971*(alphay[16]*fin[47]+alphay[8]*fin[46]+alphay[7]*fin[45]+alphay[6]*fin[44]+alphay[3]*fin[42]+alphay[2]*fin[41]+alphay[1]*fin[40]+alphay[0]*fin[36])+0.273861278752583*(alphay[26]*fin[31]+alphay[19]*fin[30]+alphay[18]*fin[29]+alphay[17]*fin[28]+alphay[11]*fin[25]+alphay[10]*fin[24]+alphay[9]*fin[23]+alphay[4]*fin[15]); + out[43] += 0.3061862178478971*(alphay[2]*fin[43]+alphay[6]*fin[39]+alphay[0]*fin[38]+alphay[8]*fin[37]+alphay[1]*fin[35]+alphay[16]*fin[34]+alphay[3]*fin[33]+alphay[7]*fin[32])+0.27386127875258304*(alphay[10]*fin[26]+fin[10]*alphay[26]+alphay[17]*fin[19]+fin[17]*alphay[19]+alphay[4]*fin[18]+fin[4]*alphay[18]+alphay[9]*fin[11]+fin[9]*alphay[11]); + out[44] += 0.3061862178478971*(alphay[8]*fin[47]+alphay[16]*fin[46]+alphay[3]*fin[45]+alphay[2]*fin[44]+alphay[7]*fin[42]+alphay[6]*fin[41]+alphay[0]*fin[40]+alphay[1]*fin[36])+0.27386127875258304*(alphay[19]*fin[31]+alphay[26]*fin[30]+alphay[11]*fin[29]+alphay[10]*fin[28]+alphay[18]*fin[25]+alphay[17]*fin[24]+alphay[4]*fin[23]+alphay[9]*fin[15]); + out[46] += 0.3061862178478971*(alphay[6]*fin[47]+alphay[2]*fin[46]+alphay[1]*fin[45]+alphay[16]*fin[44]+alphay[0]*fin[42]+alphay[8]*fin[41]+alphay[7]*fin[40]+alphay[3]*fin[36])+0.27386127875258304*(alphay[17]*fin[31]+alphay[10]*fin[30]+alphay[9]*fin[29]+alphay[26]*fin[28]+alphay[4]*fin[25]+alphay[19]*fin[24]+alphay[18]*fin[23]+alphay[11]*fin[15]); + out[47] += 0.3061862178478971*(alphay[2]*fin[47]+alphay[6]*fin[46]+alphay[0]*fin[45]+alphay[8]*fin[44]+alphay[1]*fin[42]+alphay[16]*fin[41]+alphay[3]*fin[40]+alphay[7]*fin[36])+0.273861278752583*(alphay[10]*fin[31]+alphay[17]*fin[30]+alphay[4]*fin[29]+alphay[19]*fin[28]+fin[24]*alphay[26]+alphay[9]*fin[25]+alphay[11]*fin[23]+fin[15]*alphay[18]); + + double alphaz[48] = {0.}; + alphaz[0] = (((-(0.3061862178478971*hamil[4]*bioverJB_1[5]*apar[7])-0.3061862178478971*bioverJB_1[3]*hamil[4]*apar[6]-0.3061862178478971*bioverJB_1[1]*apar[4]*hamil[4]-0.3061862178478971*bioverJB_1[0]*apar[2]*hamil[4])*rdy2*rdz2)/vmap[1]+((0.3061862178478971*bioverJB_2[3]*hamil[4]*apar[5]+0.3061862178478971*bioverJB_2[0]*apar[1]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.1767766952966368*hamil[4]*apar[5]*dualcurlbhatoverB_3[5]+0.1767766952966368*apar[3]*dualcurlbhatoverB_3[3]*hamil[4]+0.1767766952966368*apar[1]*dualcurlbhatoverB_3[1]*hamil[4]+0.1767766952966368*apar[0]*dualcurlbhatoverB_3[0]*hamil[4])*rdz2)/vmap[1])/m_; + alphaz[1] = (((-(0.3061862178478971*bioverJB_1[3]*hamil[4]*apar[7])-0.3061862178478971*hamil[4]*bioverJB_1[5]*apar[6]-0.3061862178478971*bioverJB_1[0]*apar[4]*hamil[4]-0.3061862178478971*bioverJB_1[1]*apar[2]*hamil[4])*rdy2*rdz2)/vmap[1]+((0.3061862178478971*hamil[4]*apar[5]*bioverJB_2[5]+0.3061862178478971*apar[1]*bioverJB_2[1]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.1767766952966368*apar[3]*hamil[4]*dualcurlbhatoverB_3[5]+0.1767766952966368*dualcurlbhatoverB_3[3]*hamil[4]*apar[5]+0.1767766952966368*apar[0]*dualcurlbhatoverB_3[1]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_3[0]*apar[1]*hamil[4])*rdz2)/vmap[1])/m_; + alphaz[2] = (((0.3061862178478971*bioverJB_2[3]*hamil[4]*apar[7]+0.3061862178478971*bioverJB_2[0]*apar[4]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.1767766952966368*hamil[4]*dualcurlbhatoverB_3[5]*apar[7]+0.1767766952966368*dualcurlbhatoverB_3[3]*hamil[4]*apar[6]+0.1767766952966368*dualcurlbhatoverB_3[1]*apar[4]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_3[0]*apar[2]*hamil[4])*rdz2)/vmap[1])/m_; + alphaz[3] = (((-(0.3061862178478971*bioverJB_1[1]*hamil[4]*apar[7])-0.3061862178478971*bioverJB_1[0]*hamil[4]*apar[6]-0.3061862178478971*apar[4]*hamil[4]*bioverJB_1[5]-0.3061862178478971*apar[2]*bioverJB_1[3]*hamil[4])*rdy2*rdz2)/vmap[1]+((0.3061862178478971*bioverJB_2[0]*hamil[4]*apar[5]+0.3061862178478971*apar[1]*bioverJB_2[3]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.1767766952966368*apar[1]*hamil[4]*dualcurlbhatoverB_3[5]+0.1767766952966368*dualcurlbhatoverB_3[1]*hamil[4]*apar[5]+0.1767766952966368*apar[0]*dualcurlbhatoverB_3[3]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_3[0]*apar[3]*hamil[4])*rdz2)/vmap[1])/m_; + alphaz[4] = (((-(0.6846531968814573*bioverJB_1[5]*apar[7]*hamil[32])-0.6846531968814573*bioverJB_1[3]*apar[6]*hamil[32]-0.6846531968814573*bioverJB_1[1]*apar[4]*hamil[32]-0.6846531968814573*bioverJB_1[0]*apar[2]*hamil[32])*rdy2*rdz2)/vmap[1]+((0.6846531968814573*bioverJB_2[3]*apar[5]*hamil[32]+0.6846531968814573*bioverJB_2[0]*apar[1]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.3952847075210473*apar[5]*dualcurlbhatoverB_3[5]*hamil[32]+0.3952847075210473*apar[3]*dualcurlbhatoverB_3[3]*hamil[32]+0.3952847075210473*apar[1]*dualcurlbhatoverB_3[1]*hamil[32]+0.3952847075210473*apar[0]*dualcurlbhatoverB_3[0]*hamil[32])*rdz2)/vmap[1])/m_; + alphaz[6] = (((0.3061862178478971*hamil[4]*bioverJB_2[5]*apar[7]+0.3061862178478971*bioverJB_2[1]*apar[4]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.1767766952966368*dualcurlbhatoverB_3[3]*hamil[4]*apar[7]+0.1767766952966368*hamil[4]*dualcurlbhatoverB_3[5]*apar[6]+0.1767766952966368*dualcurlbhatoverB_3[0]*apar[4]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_3[1]*apar[2]*hamil[4])*rdz2)/vmap[1])/m_; + alphaz[7] = (((-(0.3061862178478971*bioverJB_1[0]*hamil[4]*apar[7])-0.3061862178478971*bioverJB_1[1]*hamil[4]*apar[6]-0.3061862178478971*apar[2]*hamil[4]*bioverJB_1[5]-0.3061862178478971*bioverJB_1[3]*apar[4]*hamil[4])*rdy2*rdz2)/vmap[1]+((0.3061862178478971*apar[1]*hamil[4]*bioverJB_2[5]+0.3061862178478971*bioverJB_2[1]*hamil[4]*apar[5])*rdx2*rdz2)/vmap[1]+((0.1767766952966368*apar[0]*hamil[4]*dualcurlbhatoverB_3[5]+0.1767766952966368*dualcurlbhatoverB_3[0]*hamil[4]*apar[5]+0.1767766952966368*apar[1]*dualcurlbhatoverB_3[3]*hamil[4]+0.1767766952966368*dualcurlbhatoverB_3[1]*apar[3]*hamil[4])*rdz2)/vmap[1])/m_; + alphaz[8] = (((0.3061862178478971*bioverJB_2[0]*hamil[4]*apar[7]+0.3061862178478971*bioverJB_2[3]*apar[4]*hamil[4])*rdx2*rdz2)/vmap[1]+((0.1767766952966368*dualcurlbhatoverB_3[1]*hamil[4]*apar[7]+0.1767766952966368*dualcurlbhatoverB_3[0]*hamil[4]*apar[6]+0.1767766952966368*apar[4]*hamil[4]*dualcurlbhatoverB_3[5]+0.1767766952966368*apar[2]*dualcurlbhatoverB_3[3]*hamil[4])*rdz2)/vmap[1])/m_; + alphaz[9] = (((-(0.6846531968814573*bioverJB_1[3]*apar[7]*hamil[32])-0.6846531968814573*bioverJB_1[5]*apar[6]*hamil[32]-0.6846531968814573*bioverJB_1[0]*apar[4]*hamil[32]-0.6846531968814573*bioverJB_1[1]*apar[2]*hamil[32])*rdy2*rdz2)/vmap[1]+((0.6846531968814573*apar[5]*bioverJB_2[5]*hamil[32]+0.6846531968814573*apar[1]*bioverJB_2[1]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.3952847075210473*apar[3]*dualcurlbhatoverB_3[5]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[3]*apar[5]*hamil[32]+0.3952847075210473*apar[0]*dualcurlbhatoverB_3[1]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[0]*apar[1]*hamil[32])*rdz2)/vmap[1])/m_; + alphaz[10] = (((0.6846531968814573*bioverJB_2[3]*apar[7]*hamil[32]+0.6846531968814573*bioverJB_2[0]*apar[4]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.3952847075210473*dualcurlbhatoverB_3[5]*apar[7]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[3]*apar[6]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[1]*apar[4]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[0]*apar[2]*hamil[32])*rdz2)/vmap[1])/m_; + alphaz[11] = (((-(0.6846531968814573*bioverJB_1[1]*apar[7]*hamil[32])-0.6846531968814573*bioverJB_1[0]*apar[6]*hamil[32]-0.6846531968814573*apar[4]*bioverJB_1[5]*hamil[32]-0.6846531968814573*apar[2]*bioverJB_1[3]*hamil[32])*rdy2*rdz2)/vmap[1]+((0.6846531968814573*bioverJB_2[0]*apar[5]*hamil[32]+0.6846531968814573*apar[1]*bioverJB_2[3]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.3952847075210473*apar[1]*dualcurlbhatoverB_3[5]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[1]*apar[5]*hamil[32]+0.3952847075210473*apar[0]*dualcurlbhatoverB_3[3]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[0]*apar[3]*hamil[32])*rdz2)/vmap[1])/m_; + alphaz[16] = (((0.3061862178478971*bioverJB_2[1]*hamil[4]*apar[7]+0.3061862178478971*apar[4]*hamil[4]*bioverJB_2[5])*rdx2*rdz2)/vmap[1]+((0.1767766952966368*dualcurlbhatoverB_3[0]*hamil[4]*apar[7]+0.1767766952966368*dualcurlbhatoverB_3[1]*hamil[4]*apar[6]+0.1767766952966368*apar[2]*hamil[4]*dualcurlbhatoverB_3[5]+0.1767766952966368*dualcurlbhatoverB_3[3]*apar[4]*hamil[4])*rdz2)/vmap[1])/m_; + alphaz[17] = (((0.6846531968814573*bioverJB_2[5]*apar[7]*hamil[32]+0.6846531968814573*bioverJB_2[1]*apar[4]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.3952847075210473*dualcurlbhatoverB_3[3]*apar[7]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[5]*apar[6]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[0]*apar[4]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[1]*apar[2]*hamil[32])*rdz2)/vmap[1])/m_; + alphaz[18] = (((-(0.6846531968814573*bioverJB_1[0]*apar[7]*hamil[32])-0.6846531968814573*bioverJB_1[1]*apar[6]*hamil[32]-0.6846531968814573*apar[2]*bioverJB_1[5]*hamil[32]-0.6846531968814573*bioverJB_1[3]*apar[4]*hamil[32])*rdy2*rdz2)/vmap[1]+((0.6846531968814573*apar[1]*bioverJB_2[5]*hamil[32]+0.6846531968814573*bioverJB_2[1]*apar[5]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.3952847075210473*apar[0]*dualcurlbhatoverB_3[5]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[0]*apar[5]*hamil[32]+0.3952847075210473*apar[1]*dualcurlbhatoverB_3[3]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[1]*apar[3]*hamil[32])*rdz2)/vmap[1])/m_; + alphaz[19] = (((0.6846531968814573*bioverJB_2[0]*apar[7]*hamil[32]+0.6846531968814573*bioverJB_2[3]*apar[4]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.3952847075210473*dualcurlbhatoverB_3[1]*apar[7]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[0]*apar[6]*hamil[32]+0.3952847075210473*apar[4]*dualcurlbhatoverB_3[5]*hamil[32]+0.3952847075210473*apar[2]*dualcurlbhatoverB_3[3]*hamil[32])*rdz2)/vmap[1])/m_; + alphaz[26] = (((0.6846531968814573*bioverJB_2[1]*apar[7]*hamil[32]+0.6846531968814573*apar[4]*bioverJB_2[5]*hamil[32])*rdx2*rdz2)/vmap[1]+((0.3952847075210473*dualcurlbhatoverB_3[0]*apar[7]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[1]*apar[6]*hamil[32]+0.3952847075210473*apar[2]*dualcurlbhatoverB_3[5]*hamil[32]+0.3952847075210473*dualcurlbhatoverB_3[3]*apar[4]*hamil[32])*rdz2)/vmap[1])/m_; + + + out[3] += 0.3061862178478971*(alphaz[26]*fin[26]+alphaz[19]*fin[19]+alphaz[18]*fin[18]+alphaz[17]*fin[17]+alphaz[16]*fin[16]+alphaz[11]*fin[11]+alphaz[10]*fin[10]+alphaz[9]*fin[9]+alphaz[8]*fin[8]+alphaz[7]*fin[7]+alphaz[6]*fin[6]+alphaz[4]*fin[4]+alphaz[3]*fin[3]+alphaz[2]*fin[2]+alphaz[1]*fin[1]+alphaz[0]*fin[0]); + out[7] += 0.3061862178478971*(alphaz[19]*fin[26]+fin[19]*alphaz[26]+alphaz[11]*fin[18]+fin[11]*alphaz[18]+alphaz[10]*fin[17]+fin[10]*alphaz[17]+alphaz[8]*fin[16]+fin[8]*alphaz[16]+alphaz[4]*fin[9]+fin[4]*alphaz[9]+alphaz[3]*fin[7]+fin[3]*alphaz[7]+alphaz[2]*fin[6]+fin[2]*alphaz[6]+alphaz[0]*fin[1]+fin[0]*alphaz[1]); + out[8] += 0.3061862178478971*(alphaz[18]*fin[26]+fin[18]*alphaz[26]+alphaz[11]*fin[19]+fin[11]*alphaz[19]+alphaz[9]*fin[17]+fin[9]*alphaz[17]+alphaz[7]*fin[16]+fin[7]*alphaz[16]+alphaz[4]*fin[10]+fin[4]*alphaz[10]+alphaz[3]*fin[8]+fin[3]*alphaz[8]+alphaz[1]*fin[6]+fin[1]*alphaz[6]+alphaz[0]*fin[2]+fin[0]*alphaz[2]); + out[11] += 0.27386127875258304*alphaz[26]*fin[43]+0.273861278752583*(alphaz[19]*fin[39]+alphaz[18]*fin[38]+alphaz[17]*fin[37])+0.27386127875258304*(alphaz[11]*fin[35]+alphaz[10]*fin[34]+alphaz[9]*fin[33])+0.273861278752583*alphaz[4]*fin[32]+0.3061862178478971*(alphaz[16]*fin[26]+fin[16]*alphaz[26]+alphaz[8]*fin[19]+fin[8]*alphaz[19]+alphaz[7]*fin[18]+fin[7]*alphaz[18]+alphaz[6]*fin[17]+fin[6]*alphaz[17]+alphaz[3]*fin[11]+fin[3]*alphaz[11]+alphaz[2]*fin[10]+fin[2]*alphaz[10]+alphaz[1]*fin[9]+fin[1]*alphaz[9]+alphaz[0]*fin[4]+fin[0]*alphaz[4]); + out[14] += 0.3061862178478971*(alphaz[26]*fin[31]+alphaz[19]*fin[30]+alphaz[18]*fin[29]+alphaz[17]*fin[28]+alphaz[16]*fin[27]+alphaz[11]*fin[25]+alphaz[10]*fin[24]+alphaz[9]*fin[23]+alphaz[8]*fin[22]+alphaz[7]*fin[21]+alphaz[6]*fin[20]+alphaz[4]*fin[15]+alphaz[3]*fin[14]+alphaz[2]*fin[13]+alphaz[1]*fin[12]+alphaz[0]*fin[5]); + out[16] += 0.3061862178478971*(alphaz[11]*fin[26]+fin[11]*alphaz[26]+alphaz[18]*fin[19]+fin[18]*alphaz[19]+alphaz[4]*fin[17]+fin[4]*alphaz[17]+alphaz[3]*fin[16]+fin[3]*alphaz[16]+alphaz[9]*fin[10]+fin[9]*alphaz[10]+alphaz[7]*fin[8]+fin[7]*alphaz[8]+alphaz[0]*fin[6]+fin[0]*alphaz[6]+alphaz[1]*fin[2]+fin[1]*alphaz[2]); + out[18] += 0.27386127875258304*alphaz[19]*fin[43]+0.273861278752583*(alphaz[26]*fin[39]+alphaz[11]*fin[38]+alphaz[10]*fin[37])+0.27386127875258304*(alphaz[18]*fin[35]+alphaz[17]*fin[34]+alphaz[4]*fin[33])+0.273861278752583*alphaz[9]*fin[32]+0.3061862178478971*(alphaz[8]*fin[26]+fin[8]*alphaz[26]+alphaz[16]*fin[19]+fin[16]*alphaz[19]+alphaz[3]*fin[18]+fin[3]*alphaz[18]+alphaz[2]*fin[17]+fin[2]*alphaz[17]+alphaz[7]*fin[11]+fin[7]*alphaz[11]+alphaz[6]*fin[10]+fin[6]*alphaz[10]+alphaz[0]*fin[9]+fin[0]*alphaz[9]+alphaz[1]*fin[4]+fin[1]*alphaz[4]); + out[19] += 0.27386127875258304*alphaz[18]*fin[43]+0.273861278752583*(alphaz[11]*fin[39]+alphaz[26]*fin[38]+alphaz[9]*fin[37])+0.27386127875258304*(alphaz[19]*fin[35]+alphaz[4]*fin[34]+alphaz[17]*fin[33])+0.273861278752583*alphaz[10]*fin[32]+0.3061862178478971*(alphaz[7]*fin[26]+fin[7]*alphaz[26]+alphaz[3]*fin[19]+fin[3]*alphaz[19]+alphaz[16]*fin[18]+fin[16]*alphaz[18]+alphaz[1]*fin[17]+fin[1]*alphaz[17]+alphaz[8]*fin[11]+fin[8]*alphaz[11]+alphaz[0]*fin[10]+fin[0]*alphaz[10]+alphaz[6]*fin[9]+fin[6]*alphaz[9]+alphaz[2]*fin[4]+fin[2]*alphaz[4]); + out[21] += 0.3061862178478971*(alphaz[19]*fin[31]+alphaz[26]*fin[30]+alphaz[11]*fin[29]+alphaz[10]*fin[28]+alphaz[8]*fin[27]+alphaz[18]*fin[25]+alphaz[17]*fin[24]+alphaz[4]*fin[23]+alphaz[16]*fin[22]+alphaz[3]*fin[21]+alphaz[2]*fin[20]+alphaz[9]*fin[15]+alphaz[7]*fin[14]+alphaz[6]*fin[13]+alphaz[0]*fin[12]+alphaz[1]*fin[5]); + out[22] += 0.3061862178478971*(alphaz[18]*fin[31]+alphaz[11]*fin[30]+alphaz[26]*fin[29]+alphaz[9]*fin[28]+alphaz[7]*fin[27]+alphaz[19]*fin[25]+alphaz[4]*fin[24]+alphaz[17]*fin[23]+alphaz[3]*fin[22]+alphaz[16]*fin[21]+alphaz[1]*fin[20]+alphaz[10]*fin[15]+alphaz[8]*fin[14]+alphaz[0]*fin[13]+alphaz[6]*fin[12]+alphaz[2]*fin[5]); + out[25] += 0.273861278752583*alphaz[26]*fin[47]+0.27386127875258304*(alphaz[19]*fin[46]+alphaz[18]*fin[45]+alphaz[17]*fin[44])+0.273861278752583*(alphaz[11]*fin[42]+alphaz[10]*fin[41]+alphaz[9]*fin[40])+0.27386127875258304*alphaz[4]*fin[36]+0.3061862178478971*(alphaz[16]*fin[31]+alphaz[8]*fin[30]+alphaz[7]*fin[29]+alphaz[6]*fin[28]+alphaz[26]*fin[27]+alphaz[3]*fin[25]+alphaz[2]*fin[24]+alphaz[1]*fin[23]+alphaz[19]*fin[22]+alphaz[18]*fin[21]+alphaz[17]*fin[20]+alphaz[0]*fin[15]+alphaz[11]*fin[14]+alphaz[10]*fin[13]+alphaz[9]*fin[12]+alphaz[4]*fin[5]); + out[26] += 0.27386127875258304*alphaz[11]*fin[43]+0.273861278752583*(alphaz[18]*fin[39]+alphaz[19]*fin[38]+alphaz[4]*fin[37])+0.27386127875258304*(alphaz[26]*fin[35]+alphaz[9]*fin[34]+alphaz[10]*fin[33])+0.273861278752583*alphaz[17]*fin[32]+0.3061862178478971*(alphaz[3]*fin[26]+fin[3]*alphaz[26]+alphaz[7]*fin[19]+fin[7]*alphaz[19]+alphaz[8]*fin[18]+fin[8]*alphaz[18]+alphaz[0]*fin[17]+fin[0]*alphaz[17]+alphaz[11]*fin[16]+fin[11]*alphaz[16]+alphaz[1]*fin[10]+fin[1]*alphaz[10]+alphaz[2]*fin[9]+fin[2]*alphaz[9]+alphaz[4]*fin[6]+fin[4]*alphaz[6]); + out[27] += 0.3061862178478971*(alphaz[11]*fin[31]+alphaz[18]*fin[30]+alphaz[19]*fin[29]+alphaz[4]*fin[28]+alphaz[3]*fin[27]+fin[25]*alphaz[26]+alphaz[9]*fin[24]+alphaz[10]*fin[23]+alphaz[7]*fin[22]+alphaz[8]*fin[21]+alphaz[0]*fin[20]+fin[15]*alphaz[17]+fin[14]*alphaz[16]+alphaz[1]*fin[13]+alphaz[2]*fin[12]+fin[5]*alphaz[6]); + out[29] += 0.273861278752583*alphaz[19]*fin[47]+0.27386127875258304*(alphaz[26]*fin[46]+alphaz[11]*fin[45]+alphaz[10]*fin[44])+0.273861278752583*(alphaz[18]*fin[42]+alphaz[17]*fin[41]+alphaz[4]*fin[40])+0.27386127875258304*alphaz[9]*fin[36]+0.3061862178478971*(alphaz[8]*fin[31]+alphaz[16]*fin[30]+alphaz[3]*fin[29]+alphaz[2]*fin[28]+alphaz[19]*fin[27]+fin[22]*alphaz[26]+alphaz[7]*fin[25]+alphaz[6]*fin[24]+alphaz[0]*fin[23]+alphaz[11]*fin[21]+alphaz[10]*fin[20]+fin[14]*alphaz[18]+fin[13]*alphaz[17]+alphaz[1]*fin[15]+alphaz[4]*fin[12]+fin[5]*alphaz[9]); + out[30] += 0.273861278752583*alphaz[18]*fin[47]+0.27386127875258304*(alphaz[11]*fin[46]+alphaz[26]*fin[45]+alphaz[9]*fin[44])+0.273861278752583*(alphaz[19]*fin[42]+alphaz[4]*fin[41]+alphaz[17]*fin[40])+0.27386127875258304*alphaz[10]*fin[36]+0.3061862178478971*(alphaz[7]*fin[31]+alphaz[3]*fin[30]+alphaz[16]*fin[29]+alphaz[1]*fin[28]+alphaz[18]*fin[27]+fin[21]*alphaz[26]+alphaz[8]*fin[25]+alphaz[0]*fin[24]+alphaz[6]*fin[23]+alphaz[11]*fin[22]+alphaz[9]*fin[20]+fin[14]*alphaz[19]+fin[12]*alphaz[17]+alphaz[2]*fin[15]+alphaz[4]*fin[13]+fin[5]*alphaz[10]); + out[31] += 0.273861278752583*alphaz[11]*fin[47]+0.27386127875258304*(alphaz[18]*fin[46]+alphaz[19]*fin[45]+alphaz[4]*fin[44])+0.273861278752583*(alphaz[26]*fin[42]+alphaz[9]*fin[41]+alphaz[10]*fin[40])+0.27386127875258304*alphaz[17]*fin[36]+0.3061862178478971*(alphaz[3]*fin[31]+alphaz[7]*fin[30]+alphaz[8]*fin[29]+alphaz[0]*fin[28]+alphaz[11]*fin[27]+fin[14]*alphaz[26]+alphaz[16]*fin[25]+alphaz[1]*fin[24]+alphaz[2]*fin[23]+alphaz[18]*fin[22]+alphaz[19]*fin[21]+alphaz[4]*fin[20]+fin[5]*alphaz[17]+alphaz[6]*fin[15]+alphaz[9]*fin[13]+alphaz[10]*fin[12]); + out[35] += 0.3061862178478971*(alphaz[16]*fin[43]+alphaz[8]*fin[39]+alphaz[7]*fin[38]+alphaz[6]*fin[37]+alphaz[3]*fin[35]+alphaz[2]*fin[34]+alphaz[1]*fin[33]+alphaz[0]*fin[32])+0.27386127875258304*(alphaz[26]*fin[26]+alphaz[19]*fin[19]+alphaz[18]*fin[18]+alphaz[17]*fin[17]+alphaz[11]*fin[11]+alphaz[10]*fin[10]+alphaz[9]*fin[9]+alphaz[4]*fin[4]); + out[38] += 0.3061862178478971*(alphaz[8]*fin[43]+alphaz[16]*fin[39]+alphaz[3]*fin[38]+alphaz[2]*fin[37]+alphaz[7]*fin[35]+alphaz[6]*fin[34]+alphaz[0]*fin[33]+alphaz[1]*fin[32])+0.273861278752583*(alphaz[19]*fin[26]+fin[19]*alphaz[26]+alphaz[11]*fin[18]+fin[11]*alphaz[18]+alphaz[10]*fin[17]+fin[10]*alphaz[17]+alphaz[4]*fin[9]+fin[4]*alphaz[9]); + out[39] += 0.3061862178478971*(alphaz[7]*fin[43]+alphaz[3]*fin[39]+alphaz[16]*fin[38]+alphaz[1]*fin[37]+alphaz[8]*fin[35]+alphaz[0]*fin[34]+alphaz[6]*fin[33]+alphaz[2]*fin[32])+0.273861278752583*(alphaz[18]*fin[26]+fin[18]*alphaz[26]+alphaz[11]*fin[19]+fin[11]*alphaz[19]+alphaz[9]*fin[17]+fin[9]*alphaz[17]+alphaz[4]*fin[10]+fin[4]*alphaz[10]); + out[42] += 0.3061862178478971*(alphaz[16]*fin[47]+alphaz[8]*fin[46]+alphaz[7]*fin[45]+alphaz[6]*fin[44]+alphaz[3]*fin[42]+alphaz[2]*fin[41]+alphaz[1]*fin[40]+alphaz[0]*fin[36])+0.273861278752583*(alphaz[26]*fin[31]+alphaz[19]*fin[30]+alphaz[18]*fin[29]+alphaz[17]*fin[28]+alphaz[11]*fin[25]+alphaz[10]*fin[24]+alphaz[9]*fin[23]+alphaz[4]*fin[15]); + out[43] += 0.3061862178478971*(alphaz[3]*fin[43]+alphaz[7]*fin[39]+alphaz[8]*fin[38]+alphaz[0]*fin[37]+alphaz[16]*fin[35]+alphaz[1]*fin[34]+alphaz[2]*fin[33]+alphaz[6]*fin[32])+0.27386127875258304*(alphaz[11]*fin[26]+fin[11]*alphaz[26]+alphaz[18]*fin[19]+fin[18]*alphaz[19]+alphaz[4]*fin[17]+fin[4]*alphaz[17]+alphaz[9]*fin[10]+fin[9]*alphaz[10]); + out[45] += 0.3061862178478971*(alphaz[8]*fin[47]+alphaz[16]*fin[46]+alphaz[3]*fin[45]+alphaz[2]*fin[44]+alphaz[7]*fin[42]+alphaz[6]*fin[41]+alphaz[0]*fin[40]+alphaz[1]*fin[36])+0.27386127875258304*(alphaz[19]*fin[31]+alphaz[26]*fin[30]+alphaz[11]*fin[29]+alphaz[10]*fin[28]+alphaz[18]*fin[25]+alphaz[17]*fin[24]+alphaz[4]*fin[23]+alphaz[9]*fin[15]); + out[46] += 0.3061862178478971*(alphaz[7]*fin[47]+alphaz[3]*fin[46]+alphaz[16]*fin[45]+alphaz[1]*fin[44]+alphaz[8]*fin[42]+alphaz[0]*fin[41]+alphaz[6]*fin[40]+alphaz[2]*fin[36])+0.27386127875258304*(alphaz[18]*fin[31]+alphaz[11]*fin[30]+alphaz[26]*fin[29]+alphaz[9]*fin[28]+alphaz[19]*fin[25]+alphaz[4]*fin[24]+alphaz[17]*fin[23]+alphaz[10]*fin[15]); + out[47] += 0.3061862178478971*(alphaz[3]*fin[47]+alphaz[7]*fin[46]+alphaz[8]*fin[45]+alphaz[0]*fin[44]+alphaz[16]*fin[42]+alphaz[1]*fin[41]+alphaz[2]*fin[40]+alphaz[6]*fin[36])+0.273861278752583*(alphaz[11]*fin[31]+alphaz[18]*fin[30]+alphaz[19]*fin[29]+alphaz[4]*fin[28]+fin[25]*alphaz[26]+alphaz[9]*fin[24]+alphaz[10]*fin[23]+fin[15]*alphaz[17]); + + double alphavpar[48] = {0.}; + alphavpar[0] = (((-(0.3061862178478971*apar[3]*bioverJB_1[5]*hamil[16])-0.3061862178478971*bioverJB_1[3]*apar[5]*hamil[16]-0.3061862178478971*apar[5]*bioverJB_1[5]*hamil[8]-0.3061862178478971*apar[3]*bioverJB_1[3]*hamil[8]+0.3061862178478971*bioverJB_1[3]*apar[7]*hamil[7]+0.3061862178478971*bioverJB_1[5]*apar[6]*hamil[7]+0.3061862178478971*bioverJB_1[0]*apar[4]*hamil[7]+0.3061862178478971*bioverJB_1[1]*apar[2]*hamil[7]+0.3061862178478971*hamil[3]*bioverJB_1[5]*apar[7]-0.3061862178478971*bioverJB_1[0]*apar[5]*hamil[6]-0.3061862178478971*bioverJB_1[1]*apar[3]*hamil[6]+0.3061862178478971*bioverJB_1[3]*hamil[3]*apar[6]-0.3061862178478971*bioverJB_1[1]*hamil[2]*apar[5]+0.3061862178478971*bioverJB_1[1]*hamil[3]*apar[4]+0.3061862178478971*bioverJB_1[0]*apar[2]*hamil[3]-0.3061862178478971*bioverJB_1[0]*hamil[2]*apar[3])*rdy2*rdz2)/vmap[1]+((0.3061862178478971*bioverJB_2[3]*apar[6]*hamil[16]-0.3061862178478971*bioverJB_2[1]*apar[4]*hamil[16]-0.3061862178478971*bioverJB_2[3]*apar[7]*hamil[8]-0.3061862178478971*bioverJB_2[0]*apar[4]*hamil[8]+0.3061862178478971*apar[3]*bioverJB_2[3]*hamil[7]-0.3061862178478971*apar[1]*bioverJB_2[1]*hamil[7]+0.3061862178478971*bioverJB_2[1]*hamil[6]*apar[7]+0.3061862178478971*bioverJB_2[0]*apar[6]*hamil[6]-0.3061862178478971*bioverJB_2[3]*hamil[3]*apar[5]+0.3061862178478971*bioverJB_2[1]*hamil[1]*apar[5]-0.3061862178478971*bioverJB_2[0]*apar[1]*hamil[3]+0.3061862178478971*bioverJB_2[0]*hamil[1]*apar[3])*rdx2*rdz2)/vmap[1]+((-(0.1767766952966368*dualcurlbhatoverB_3[3]*apar[7]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_3[5]*apar[6]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[4]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[2]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_3[5]*apar[7]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[6]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[4]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[2]*hamil[8]-0.1767766952966368*apar[3]*dualcurlbhatoverB_3[5]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[5]*hamil[7]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[1]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[1]*hamil[7]-0.1767766952966368*hamil[3]*apar[5]*dualcurlbhatoverB_3[5]-0.1767766952966368*apar[3]*dualcurlbhatoverB_3[3]*hamil[3]-0.1767766952966368*apar[1]*dualcurlbhatoverB_3[1]*hamil[3]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[0]*hamil[3])*rdz2)/vmap[1]+((0.3061862178478971*apar[1]*bioverJB_3[5]*hamil[16]+0.3061862178478971*bioverJB_3[1]*apar[5]*hamil[16]+0.3061862178478971*bioverJB_3[0]*apar[5]*hamil[8]+0.3061862178478971*apar[1]*bioverJB_3[3]*hamil[8]-0.3061862178478971*bioverJB_3[1]*apar[7]*hamil[7]-0.3061862178478971*bioverJB_3[0]*apar[6]*hamil[7]-0.3061862178478971*apar[4]*bioverJB_3[5]*hamil[7]-0.3061862178478971*apar[2]*bioverJB_3[3]*hamil[7]-0.3061862178478971*hamil[1]*bioverJB_3[5]*apar[7]+0.3061862178478971*apar[5]*bioverJB_3[5]*hamil[6]+0.3061862178478971*apar[1]*bioverJB_3[1]*hamil[6]-0.3061862178478971*hamil[1]*bioverJB_3[3]*apar[6]+0.3061862178478971*hamil[2]*bioverJB_3[3]*apar[5]-0.3061862178478971*bioverJB_3[1]*hamil[1]*apar[4]+0.3061862178478971*bioverJB_3[0]*apar[1]*hamil[2]-0.3061862178478971*bioverJB_3[0]*hamil[1]*apar[2])*rdx2*rdy2)/vmap[1]+((-(0.1767766952966368*apar[0]*dualcurlbhatoverB_2[5]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[5]*hamil[16]-0.1767766952966368*apar[1]*dualcurlbhatoverB_2[3]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[3]*hamil[16]-0.1767766952966368*apar[1]*dualcurlbhatoverB_2[5]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[5]*hamil[8]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[3]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[3]*hamil[8]-0.1767766952966368*apar[3]*dualcurlbhatoverB_2[5]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_2[3]*apar[5]*hamil[6]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[1]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[1]*hamil[6]-0.1767766952966368*hamil[2]*apar[5]*dualcurlbhatoverB_2[5]-0.1767766952966368*hamil[2]*apar[3]*dualcurlbhatoverB_2[3]-0.1767766952966368*apar[1]*dualcurlbhatoverB_2[1]*hamil[2]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[0]*hamil[2])*rdy2)/vmap[1]+((-(0.1767766952966368*dualcurlbhatoverB_1[1]*apar[7]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[6]*hamil[16]-0.1767766952966368*apar[4]*dualcurlbhatoverB_1[5]*hamil[16]-0.1767766952966368*apar[2]*dualcurlbhatoverB_1[3]*hamil[16]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[5]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[5]*hamil[7]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[3]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[3]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[5]*hamil[6]*apar[7]-0.1767766952966368*dualcurlbhatoverB_1[3]*apar[6]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[4]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[2]*hamil[6]-0.1767766952966368*hamil[1]*apar[5]*dualcurlbhatoverB_1[5]-0.1767766952966368*hamil[1]*apar[3]*dualcurlbhatoverB_1[3]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[1]*hamil[1]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[0]*hamil[1])*rdx2)/vmap[1])/m_; + alphavpar[1] = (((-(0.5511351921262146*apar[5]*bioverJB_1[5]*hamil[16])-0.3061862178478971*apar[3]*bioverJB_1[3]*hamil[16]-0.3061862178478971*apar[3]*bioverJB_1[5]*hamil[8]-0.3061862178478971*bioverJB_1[3]*apar[5]*hamil[8]+0.5511351921262146*bioverJB_1[5]*apar[7]*hamil[7]+0.3061862178478971*bioverJB_1[3]*apar[6]*hamil[7]+0.5511351921262146*bioverJB_1[1]*apar[4]*hamil[7]+0.3061862178478971*bioverJB_1[0]*apar[2]*hamil[7]+0.3061862178478971*bioverJB_1[3]*hamil[3]*apar[7]-0.5511351921262146*bioverJB_1[1]*apar[5]*hamil[6]-0.3061862178478971*bioverJB_1[0]*apar[3]*hamil[6]+0.3061862178478971*hamil[3]*bioverJB_1[5]*apar[6]-0.3061862178478971*bioverJB_1[0]*hamil[2]*apar[5]+0.3061862178478971*bioverJB_1[0]*hamil[3]*apar[4]+0.3061862178478971*bioverJB_1[1]*apar[2]*hamil[3]-0.3061862178478971*bioverJB_1[1]*hamil[2]*apar[3])*rdy2*rdz2)/vmap[1]+((0.3061862178478971*bioverJB_2[5]*apar[6]*hamil[16]-0.3061862178478971*bioverJB_2[0]*apar[4]*hamil[16]-0.3061862178478971*bioverJB_2[5]*apar[7]*hamil[8]-0.3061862178478971*bioverJB_2[1]*apar[4]*hamil[8]+0.3061862178478971*apar[3]*bioverJB_2[5]*hamil[7]-0.3061862178478971*bioverJB_2[0]*apar[1]*hamil[7]+0.3061862178478971*bioverJB_2[0]*hamil[6]*apar[7]+0.3061862178478971*bioverJB_2[1]*apar[6]*hamil[6]-0.3061862178478971*hamil[3]*apar[5]*bioverJB_2[5]+0.3061862178478971*bioverJB_2[0]*hamil[1]*apar[5]-0.3061862178478971*apar[1]*bioverJB_2[1]*hamil[3]+0.3061862178478971*bioverJB_2[1]*hamil[1]*apar[3])*rdx2*rdz2)/vmap[1]+((-(0.31819805153394626*dualcurlbhatoverB_3[5]*apar[7]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[6]*hamil[16]-0.31819805153394626*dualcurlbhatoverB_3[1]*apar[4]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[2]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[7]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[5]*apar[6]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[4]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[2]*hamil[8]-0.31819805153394626*apar[5]*dualcurlbhatoverB_3[5]*hamil[7]-0.1767766952966368*apar[3]*dualcurlbhatoverB_3[3]*hamil[7]-0.31819805153394626*apar[1]*dualcurlbhatoverB_3[1]*hamil[7]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[0]*hamil[7]-0.1767766952966368*apar[3]*hamil[3]*dualcurlbhatoverB_3[5]-0.1767766952966368*dualcurlbhatoverB_3[3]*hamil[3]*apar[5]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[1]*hamil[3]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[1]*hamil[3])*rdz2)/vmap[1]+((0.3061862178478971*bioverJB_3[0]*apar[5]*hamil[16]+0.3061862178478971*apar[1]*bioverJB_3[3]*hamil[16]+0.3061862178478971*apar[1]*bioverJB_3[5]*hamil[8]+0.3061862178478971*bioverJB_3[1]*apar[5]*hamil[8]-0.3061862178478971*bioverJB_3[0]*apar[7]*hamil[7]-0.3061862178478971*bioverJB_3[1]*apar[6]*hamil[7]-0.3061862178478971*apar[2]*bioverJB_3[5]*hamil[7]-0.3061862178478971*bioverJB_3[3]*apar[4]*hamil[7]-0.3061862178478971*hamil[1]*bioverJB_3[3]*apar[7]+0.3061862178478971*bioverJB_3[3]*apar[5]*hamil[6]+0.3061862178478971*bioverJB_3[0]*apar[1]*hamil[6]-0.3061862178478971*hamil[1]*bioverJB_3[5]*apar[6]+0.3061862178478971*hamil[2]*apar[5]*bioverJB_3[5]-0.3061862178478971*bioverJB_3[0]*hamil[1]*apar[4]+0.3061862178478971*apar[1]*bioverJB_3[1]*hamil[2]-0.3061862178478971*bioverJB_3[1]*hamil[1]*apar[2])*rdx2*rdy2)/vmap[1]+((-(0.31819805153394626*apar[1]*dualcurlbhatoverB_2[5]*hamil[16])-0.31819805153394626*dualcurlbhatoverB_2[1]*apar[5]*hamil[16]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[3]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[3]*hamil[16]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[5]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[5]*hamil[8]-0.1767766952966368*apar[1]*dualcurlbhatoverB_2[3]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[3]*hamil[8]-0.31819805153394626*apar[5]*dualcurlbhatoverB_2[5]*hamil[6]-0.1767766952966368*apar[3]*dualcurlbhatoverB_2[3]*hamil[6]-0.31819805153394626*apar[1]*dualcurlbhatoverB_2[1]*hamil[6]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[0]*hamil[6]-0.1767766952966368*hamil[2]*apar[3]*dualcurlbhatoverB_2[5]-0.1767766952966368*hamil[2]*dualcurlbhatoverB_2[3]*apar[5]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[1]*hamil[2]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[1]*hamil[2])*rdy2)/vmap[1]+((-(0.1767766952966368*dualcurlbhatoverB_1[0]*apar[7]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[6]*hamil[16]-0.1767766952966368*apar[2]*dualcurlbhatoverB_1[5]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_1[3]*apar[4]*hamil[16]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[5]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[5]*hamil[7]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[3]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[3]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[3]*hamil[6]*apar[7]-0.1767766952966368*dualcurlbhatoverB_1[5]*apar[6]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[4]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[2]*hamil[6]-0.1767766952966368*hamil[1]*apar[3]*dualcurlbhatoverB_1[5]-0.1767766952966368*hamil[1]*dualcurlbhatoverB_1[3]*apar[5]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[1]*hamil[1]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[1]*hamil[1])*rdx2)/vmap[1])/m_; + alphavpar[2] = (((0.3061862178478971*bioverJB_1[0]*apar[4]*hamil[16]+0.3061862178478971*bioverJB_1[1]*apar[2]*hamil[16]+0.3061862178478971*bioverJB_1[1]*apar[4]*hamil[8]+0.3061862178478971*bioverJB_1[0]*apar[2]*hamil[8]-0.3061862178478971*bioverJB_1[0]*hamil[6]*apar[7]-0.3061862178478971*bioverJB_1[1]*hamil[2]*apar[7]-0.3061862178478971*bioverJB_1[1]*apar[6]*hamil[6]-0.3061862178478971*bioverJB_1[0]*hamil[2]*apar[6])*rdy2*rdz2)/vmap[1]+((0.3061862178478971*apar[3]*bioverJB_2[3]*hamil[16]-0.3061862178478971*apar[1]*bioverJB_2[1]*hamil[16]-0.3061862178478971*bioverJB_2[3]*apar[5]*hamil[8]-0.3061862178478971*bioverJB_2[0]*apar[1]*hamil[8]+0.3061862178478971*bioverJB_2[3]*apar[6]*hamil[7]-0.3061862178478971*bioverJB_2[1]*apar[4]*hamil[7]-0.3061862178478971*bioverJB_2[3]*hamil[3]*apar[7]+0.3061862178478971*bioverJB_2[1]*hamil[1]*apar[7]+0.3061862178478971*bioverJB_2[1]*apar[5]*hamil[6]+0.3061862178478971*bioverJB_2[0]*apar[3]*hamil[6]+0.3061862178478971*bioverJB_2[0]*hamil[1]*apar[6]-0.3061862178478971*bioverJB_2[0]*hamil[3]*apar[4])*rdx2*rdz2)/vmap[1]+((-(0.1767766952966368*apar[3]*dualcurlbhatoverB_3[5]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[5]*hamil[16]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[1]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[1]*hamil[16]-0.1767766952966368*apar[5]*dualcurlbhatoverB_3[5]*hamil[8]-0.1767766952966368*apar[3]*dualcurlbhatoverB_3[3]*hamil[8]-0.1767766952966368*apar[1]*dualcurlbhatoverB_3[1]*hamil[8]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[0]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[7]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[5]*apar[6]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[4]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[2]*hamil[7]-0.1767766952966368*hamil[3]*dualcurlbhatoverB_3[5]*apar[7]-0.1767766952966368*dualcurlbhatoverB_3[3]*hamil[3]*apar[6]-0.1767766952966368*dualcurlbhatoverB_3[1]*hamil[3]*apar[4]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[2]*hamil[3])*rdz2)/vmap[1]+((-(0.3061862178478971*bioverJB_3[0]*apar[6]*hamil[16])-0.3061862178478971*apar[2]*bioverJB_3[3]*hamil[16]+0.3061862178478971*bioverJB_3[0]*apar[7]*hamil[8]+0.3061862178478971*bioverJB_3[3]*apar[4]*hamil[8]+0.3061862178478971*hamil[2]*bioverJB_3[3]*apar[7]-0.3061862178478971*bioverJB_3[3]*apar[6]*hamil[6]-0.3061862178478971*bioverJB_3[0]*apar[2]*hamil[6]+0.3061862178478971*bioverJB_3[0]*hamil[2]*apar[4])*rdx2*rdy2)/vmap[1]+((-(0.1767766952966368*dualcurlbhatoverB_2[0]*apar[7]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[6]*hamil[16]-0.1767766952966368*apar[2]*dualcurlbhatoverB_2[5]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_2[3]*apar[4]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[7]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[6]*hamil[8]-0.1767766952966368*apar[4]*dualcurlbhatoverB_2[5]*hamil[8]-0.1767766952966368*apar[2]*dualcurlbhatoverB_2[3]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[3]*hamil[6]*apar[7]-0.1767766952966368*hamil[2]*dualcurlbhatoverB_2[5]*apar[7]-0.1767766952966368*dualcurlbhatoverB_2[5]*apar[6]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[4]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[2]*hamil[6]-0.1767766952966368*hamil[2]*dualcurlbhatoverB_2[3]*apar[6]-0.1767766952966368*dualcurlbhatoverB_2[1]*hamil[2]*apar[4]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[2]*hamil[2])*rdy2)/vmap[1]+((-(0.1767766952966368*apar[1]*dualcurlbhatoverB_1[5]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[5]*hamil[16]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[3]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[3]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[7]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[6]*hamil[7]-0.1767766952966368*apar[4]*dualcurlbhatoverB_1[5]*hamil[7]-0.1767766952966368*apar[2]*dualcurlbhatoverB_1[3]*hamil[7]-0.1767766952966368*hamil[1]*dualcurlbhatoverB_1[5]*apar[7]-0.1767766952966368*apar[5]*dualcurlbhatoverB_1[5]*hamil[6]-0.1767766952966368*apar[3]*dualcurlbhatoverB_1[3]*hamil[6]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[1]*hamil[6]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[0]*hamil[6]-0.1767766952966368*hamil[1]*dualcurlbhatoverB_1[3]*apar[6]-0.1767766952966368*dualcurlbhatoverB_1[1]*hamil[1]*apar[4]-0.1767766952966368*dualcurlbhatoverB_1[0]*hamil[1]*apar[2])*rdx2)/vmap[1])/m_; + alphavpar[3] = (((-(0.3061862178478971*bioverJB_1[0]*apar[5]*hamil[16])-0.3061862178478971*bioverJB_1[1]*apar[3]*hamil[16]-0.3061862178478971*bioverJB_1[1]*apar[5]*hamil[8]-0.3061862178478971*bioverJB_1[0]*apar[3]*hamil[8]+0.3061862178478971*bioverJB_1[0]*apar[7]*hamil[7]+0.3061862178478971*bioverJB_1[1]*apar[6]*hamil[7]+0.3061862178478971*apar[2]*bioverJB_1[5]*hamil[7]+0.3061862178478971*bioverJB_1[3]*apar[4]*hamil[7]+0.3061862178478971*bioverJB_1[1]*hamil[3]*apar[7]-0.3061862178478971*apar[3]*bioverJB_1[5]*hamil[6]-0.3061862178478971*bioverJB_1[3]*apar[5]*hamil[6]+0.3061862178478971*bioverJB_1[0]*hamil[3]*apar[6]-0.3061862178478971*hamil[2]*apar[5]*bioverJB_1[5]+0.3061862178478971*hamil[3]*apar[4]*bioverJB_1[5]+0.3061862178478971*apar[2]*bioverJB_1[3]*hamil[3]-0.3061862178478971*hamil[2]*apar[3]*bioverJB_1[3])*rdy2*rdz2)/vmap[1]+((0.3061862178478971*bioverJB_2[0]*apar[6]*hamil[16]-0.3061862178478971*apar[4]*bioverJB_2[5]*hamil[16]-0.3061862178478971*bioverJB_2[0]*apar[7]*hamil[8]-0.3061862178478971*bioverJB_2[3]*apar[4]*hamil[8]-0.3061862178478971*apar[1]*bioverJB_2[5]*hamil[7]+0.3061862178478971*bioverJB_2[0]*apar[3]*hamil[7]+0.3061862178478971*bioverJB_2[5]*hamil[6]*apar[7]+0.3061862178478971*bioverJB_2[3]*apar[6]*hamil[6]+0.3061862178478971*hamil[1]*apar[5]*bioverJB_2[5]-0.3061862178478971*bioverJB_2[0]*hamil[3]*apar[5]-0.3061862178478971*apar[1]*bioverJB_2[3]*hamil[3]+0.3061862178478971*hamil[1]*apar[3]*bioverJB_2[3])*rdx2*rdz2)/vmap[1]+((-(0.1767766952966368*dualcurlbhatoverB_3[0]*apar[7]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[6]*hamil[16]-0.1767766952966368*apar[2]*dualcurlbhatoverB_3[5]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[4]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[7]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[6]*hamil[8]-0.1767766952966368*apar[4]*dualcurlbhatoverB_3[5]*hamil[8]-0.1767766952966368*apar[2]*dualcurlbhatoverB_3[3]*hamil[8]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[5]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[5]*hamil[7]-0.1767766952966368*apar[1]*dualcurlbhatoverB_3[3]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[3]*hamil[7]-0.1767766952966368*apar[1]*hamil[3]*dualcurlbhatoverB_3[5]-0.1767766952966368*dualcurlbhatoverB_3[1]*hamil[3]*apar[5]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[3]*hamil[3]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[3]*hamil[3])*rdz2)/vmap[1]+((0.5511351921262146*apar[5]*bioverJB_3[5]*hamil[16]+0.3061862178478971*apar[1]*bioverJB_3[1]*hamil[16]+0.5511351921262146*bioverJB_3[3]*apar[5]*hamil[8]+0.3061862178478971*bioverJB_3[0]*apar[1]*hamil[8]-0.5511351921262146*bioverJB_3[5]*apar[7]*hamil[7]-0.5511351921262146*bioverJB_3[3]*apar[6]*hamil[7]-0.3061862178478971*bioverJB_3[1]*apar[4]*hamil[7]-0.3061862178478971*bioverJB_3[0]*apar[2]*hamil[7]-0.3061862178478971*bioverJB_3[1]*hamil[1]*apar[7]+0.3061862178478971*apar[1]*bioverJB_3[5]*hamil[6]+0.3061862178478971*bioverJB_3[1]*apar[5]*hamil[6]-0.3061862178478971*bioverJB_3[0]*hamil[1]*apar[6]-0.3061862178478971*hamil[1]*apar[4]*bioverJB_3[5]+0.3061862178478971*bioverJB_3[0]*hamil[2]*apar[5]+0.3061862178478971*apar[1]*hamil[2]*bioverJB_3[3]-0.3061862178478971*hamil[1]*apar[2]*bioverJB_3[3])*rdx2*rdy2)/vmap[1]+((-(0.31819805153394626*apar[3]*dualcurlbhatoverB_2[5]*hamil[16])-0.31819805153394626*dualcurlbhatoverB_2[3]*apar[5]*hamil[16]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[1]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[1]*hamil[16]-0.31819805153394626*apar[5]*dualcurlbhatoverB_2[5]*hamil[8]-0.31819805153394626*apar[3]*dualcurlbhatoverB_2[3]*hamil[8]-0.1767766952966368*apar[1]*dualcurlbhatoverB_2[1]*hamil[8]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[0]*hamil[8]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[5]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[5]*hamil[6]-0.1767766952966368*apar[1]*dualcurlbhatoverB_2[3]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[3]*hamil[6]-0.1767766952966368*apar[1]*hamil[2]*dualcurlbhatoverB_2[5]-0.1767766952966368*dualcurlbhatoverB_2[1]*hamil[2]*apar[5]-0.1767766952966368*apar[0]*hamil[2]*dualcurlbhatoverB_2[3]-0.1767766952966368*dualcurlbhatoverB_2[0]*hamil[2]*apar[3])*rdy2)/vmap[1]+((-(0.31819805153394626*dualcurlbhatoverB_1[5]*apar[7]*hamil[16])-0.31819805153394626*dualcurlbhatoverB_1[3]*apar[6]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[4]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[2]*hamil[16]-0.31819805153394626*apar[5]*dualcurlbhatoverB_1[5]*hamil[7]-0.31819805153394626*apar[3]*dualcurlbhatoverB_1[3]*hamil[7]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[1]*hamil[7]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[0]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[1]*hamil[6]*apar[7]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[6]*hamil[6]-0.1767766952966368*apar[4]*dualcurlbhatoverB_1[5]*hamil[6]-0.1767766952966368*apar[2]*dualcurlbhatoverB_1[3]*hamil[6]-0.1767766952966368*apar[1]*hamil[1]*dualcurlbhatoverB_1[5]-0.1767766952966368*dualcurlbhatoverB_1[1]*hamil[1]*apar[5]-0.1767766952966368*apar[0]*hamil[1]*dualcurlbhatoverB_1[3]-0.1767766952966368*dualcurlbhatoverB_1[0]*hamil[1]*apar[3])*rdx2)/vmap[1])/m_; + alphavpar[5] = (((0.3061862178478971*bioverJB_1[3]*apar[7]*hamil[21]+0.3061862178478971*bioverJB_1[5]*apar[6]*hamil[21]+0.3061862178478971*bioverJB_1[0]*apar[4]*hamil[21]+0.3061862178478971*bioverJB_1[1]*apar[2]*hamil[21]+0.3061862178478971*bioverJB_1[5]*apar[7]*hamil[14]+0.3061862178478971*bioverJB_1[3]*apar[6]*hamil[14]+0.3061862178478971*bioverJB_1[1]*apar[4]*hamil[14]+0.3061862178478971*bioverJB_1[0]*apar[2]*hamil[14])*rdy2*rdz2)/vmap[1]+((0.3061862178478971*apar[3]*bioverJB_2[3]*hamil[21]-0.3061862178478971*apar[1]*bioverJB_2[1]*hamil[21]-0.3061862178478971*bioverJB_2[3]*apar[5]*hamil[14]-0.3061862178478971*bioverJB_2[0]*apar[1]*hamil[14]+0.3061862178478971*bioverJB_2[1]*apar[5]*hamil[12]+0.3061862178478971*bioverJB_2[0]*apar[3]*hamil[12])*rdx2*rdz2)/vmap[1]+((-(0.1767766952966368*apar[3]*dualcurlbhatoverB_3[5]*hamil[21])-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[5]*hamil[21]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[1]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[1]*hamil[21]-0.1767766952966368*apar[5]*dualcurlbhatoverB_3[5]*hamil[14]-0.1767766952966368*apar[3]*dualcurlbhatoverB_3[3]*hamil[14]-0.1767766952966368*apar[1]*dualcurlbhatoverB_3[1]*hamil[14]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[0]*hamil[14])*rdz2)/vmap[1]+((-(0.3061862178478971*bioverJB_3[1]*apar[7]*hamil[21])-0.3061862178478971*bioverJB_3[0]*apar[6]*hamil[21]-0.3061862178478971*apar[4]*bioverJB_3[5]*hamil[21]-0.3061862178478971*apar[2]*bioverJB_3[3]*hamil[21]-0.3061862178478971*bioverJB_3[5]*apar[7]*hamil[12]-0.3061862178478971*bioverJB_3[3]*apar[6]*hamil[12]-0.3061862178478971*bioverJB_3[1]*apar[4]*hamil[12]-0.3061862178478971*bioverJB_3[0]*apar[2]*hamil[12])*rdx2*rdy2)/vmap[1]+((-(0.1767766952966368*apar[1]*dualcurlbhatoverB_1[5]*hamil[21])-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[5]*hamil[21]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[3]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[3]*hamil[21]-0.1767766952966368*apar[5]*dualcurlbhatoverB_1[5]*hamil[12]-0.1767766952966368*apar[3]*dualcurlbhatoverB_1[3]*hamil[12]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[1]*hamil[12]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[0]*hamil[12])*rdx2)/vmap[1])/m_; + alphavpar[6] = (((0.5511351921262146*bioverJB_1[1]*apar[4]*hamil[16]+0.3061862178478971*bioverJB_1[0]*apar[2]*hamil[16]+0.3061862178478971*bioverJB_1[0]*apar[4]*hamil[8]+0.3061862178478971*bioverJB_1[1]*apar[2]*hamil[8]-0.5511351921262146*bioverJB_1[1]*hamil[6]*apar[7]-0.3061862178478971*bioverJB_1[0]*hamil[2]*apar[7]-0.3061862178478971*bioverJB_1[0]*apar[6]*hamil[6]-0.3061862178478971*bioverJB_1[1]*hamil[2]*apar[6])*rdy2*rdz2)/vmap[1]+((0.3061862178478971*apar[3]*bioverJB_2[5]*hamil[16]-0.3061862178478971*bioverJB_2[0]*apar[1]*hamil[16]-0.3061862178478971*apar[5]*bioverJB_2[5]*hamil[8]-0.3061862178478971*apar[1]*bioverJB_2[1]*hamil[8]+0.3061862178478971*bioverJB_2[5]*apar[6]*hamil[7]-0.3061862178478971*bioverJB_2[0]*apar[4]*hamil[7]-0.3061862178478971*hamil[3]*bioverJB_2[5]*apar[7]+0.3061862178478971*bioverJB_2[0]*hamil[1]*apar[7]+0.3061862178478971*bioverJB_2[0]*apar[5]*hamil[6]+0.3061862178478971*bioverJB_2[1]*apar[3]*hamil[6]+0.3061862178478971*bioverJB_2[1]*hamil[1]*apar[6]-0.3061862178478971*bioverJB_2[1]*hamil[3]*apar[4])*rdx2*rdz2)/vmap[1]+((-(0.31819805153394626*apar[5]*dualcurlbhatoverB_3[5]*hamil[16])-0.1767766952966368*apar[3]*dualcurlbhatoverB_3[3]*hamil[16]-0.31819805153394626*apar[1]*dualcurlbhatoverB_3[1]*hamil[16]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[0]*hamil[16]-0.1767766952966368*apar[3]*dualcurlbhatoverB_3[5]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[5]*hamil[8]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[1]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[1]*hamil[8]-0.31819805153394626*dualcurlbhatoverB_3[5]*apar[7]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[6]*hamil[7]-0.31819805153394626*dualcurlbhatoverB_3[1]*apar[4]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[2]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[3]*hamil[3]*apar[7]-0.1767766952966368*hamil[3]*dualcurlbhatoverB_3[5]*apar[6]-0.1767766952966368*dualcurlbhatoverB_3[0]*hamil[3]*apar[4]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[2]*hamil[3])*rdz2)/vmap[1]+((-(0.3061862178478971*bioverJB_3[1]*apar[6]*hamil[16])-0.3061862178478971*apar[2]*bioverJB_3[5]*hamil[16]+0.3061862178478971*bioverJB_3[1]*apar[7]*hamil[8]+0.3061862178478971*apar[4]*bioverJB_3[5]*hamil[8]+0.3061862178478971*hamil[2]*bioverJB_3[5]*apar[7]-0.3061862178478971*bioverJB_3[5]*apar[6]*hamil[6]-0.3061862178478971*bioverJB_3[1]*apar[2]*hamil[6]+0.3061862178478971*bioverJB_3[1]*hamil[2]*apar[4])*rdx2*rdy2)/vmap[1]+((-(0.31819805153394626*dualcurlbhatoverB_2[1]*apar[7]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[6]*hamil[16]-0.31819805153394626*apar[4]*dualcurlbhatoverB_2[5]*hamil[16]-0.1767766952966368*apar[2]*dualcurlbhatoverB_2[3]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[7]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[6]*hamil[8]-0.1767766952966368*apar[2]*dualcurlbhatoverB_2[5]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[3]*apar[4]*hamil[8]-0.31819805153394626*dualcurlbhatoverB_2[5]*hamil[6]*apar[7]-0.1767766952966368*hamil[2]*dualcurlbhatoverB_2[3]*apar[7]-0.1767766952966368*dualcurlbhatoverB_2[3]*apar[6]*hamil[6]-0.31819805153394626*dualcurlbhatoverB_2[1]*apar[4]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[2]*hamil[6]-0.1767766952966368*hamil[2]*dualcurlbhatoverB_2[5]*apar[6]-0.1767766952966368*dualcurlbhatoverB_2[0]*hamil[2]*apar[4]-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[2]*hamil[2])*rdy2)/vmap[1]+((-(0.1767766952966368*apar[0]*dualcurlbhatoverB_1[5]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[5]*hamil[16]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[3]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[3]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[7]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[6]*hamil[7]-0.1767766952966368*apar[2]*dualcurlbhatoverB_1[5]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[3]*apar[4]*hamil[7]-0.1767766952966368*hamil[1]*dualcurlbhatoverB_1[3]*apar[7]-0.1767766952966368*apar[3]*dualcurlbhatoverB_1[5]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[3]*apar[5]*hamil[6]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[1]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[1]*hamil[6]-0.1767766952966368*hamil[1]*dualcurlbhatoverB_1[5]*apar[6]-0.1767766952966368*dualcurlbhatoverB_1[0]*hamil[1]*apar[4]-0.1767766952966368*dualcurlbhatoverB_1[1]*hamil[1]*apar[2])*rdx2)/vmap[1])/m_; + alphavpar[7] = (((-(0.5511351921262146*bioverJB_1[1]*apar[5]*hamil[16])-0.3061862178478971*bioverJB_1[0]*apar[3]*hamil[16]-0.3061862178478971*bioverJB_1[0]*apar[5]*hamil[8]-0.3061862178478971*bioverJB_1[1]*apar[3]*hamil[8]+0.5511351921262146*bioverJB_1[1]*apar[7]*hamil[7]+0.3061862178478971*bioverJB_1[0]*apar[6]*hamil[7]+0.5511351921262146*apar[4]*bioverJB_1[5]*hamil[7]+0.3061862178478971*apar[2]*bioverJB_1[3]*hamil[7]+0.3061862178478971*bioverJB_1[0]*hamil[3]*apar[7]-0.5511351921262146*apar[5]*bioverJB_1[5]*hamil[6]-0.3061862178478971*apar[3]*bioverJB_1[3]*hamil[6]+0.3061862178478971*bioverJB_1[1]*hamil[3]*apar[6]+0.3061862178478971*apar[2]*hamil[3]*bioverJB_1[5]-0.3061862178478971*hamil[2]*apar[3]*bioverJB_1[5]-0.3061862178478971*hamil[2]*bioverJB_1[3]*apar[5]+0.3061862178478971*bioverJB_1[3]*hamil[3]*apar[4])*rdy2*rdz2)/vmap[1]+((0.3061862178478971*bioverJB_2[1]*apar[6]*hamil[16]-0.3061862178478971*bioverJB_2[3]*apar[4]*hamil[16]-0.3061862178478971*bioverJB_2[1]*apar[7]*hamil[8]-0.3061862178478971*apar[4]*bioverJB_2[5]*hamil[8]-0.3061862178478971*apar[1]*bioverJB_2[3]*hamil[7]+0.3061862178478971*bioverJB_2[1]*apar[3]*hamil[7]+0.3061862178478971*bioverJB_2[3]*hamil[6]*apar[7]+0.3061862178478971*bioverJB_2[5]*apar[6]*hamil[6]-0.3061862178478971*apar[1]*hamil[3]*bioverJB_2[5]+0.3061862178478971*hamil[1]*apar[3]*bioverJB_2[5]-0.3061862178478971*bioverJB_2[1]*hamil[3]*apar[5]+0.3061862178478971*hamil[1]*bioverJB_2[3]*apar[5])*rdx2*rdz2)/vmap[1]+((-(0.31819805153394626*dualcurlbhatoverB_3[1]*apar[7]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[6]*hamil[16]-0.31819805153394626*apar[4]*dualcurlbhatoverB_3[5]*hamil[16]-0.1767766952966368*apar[2]*dualcurlbhatoverB_3[3]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[7]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[6]*hamil[8]-0.1767766952966368*apar[2]*dualcurlbhatoverB_3[5]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[4]*hamil[8]-0.31819805153394626*apar[1]*dualcurlbhatoverB_3[5]*hamil[7]-0.31819805153394626*dualcurlbhatoverB_3[1]*apar[5]*hamil[7]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[3]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[3]*hamil[7]-0.1767766952966368*apar[0]*hamil[3]*dualcurlbhatoverB_3[5]-0.1767766952966368*dualcurlbhatoverB_3[0]*hamil[3]*apar[5]-0.1767766952966368*apar[1]*dualcurlbhatoverB_3[3]*hamil[3]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[3]*hamil[3])*rdz2)/vmap[1]+((0.5511351921262146*bioverJB_3[3]*apar[5]*hamil[16]+0.3061862178478971*bioverJB_3[0]*apar[1]*hamil[16]+0.5511351921262146*apar[5]*bioverJB_3[5]*hamil[8]+0.3061862178478971*apar[1]*bioverJB_3[1]*hamil[8]-0.5511351921262146*bioverJB_3[3]*apar[7]*hamil[7]-0.5511351921262146*bioverJB_3[5]*apar[6]*hamil[7]-0.3061862178478971*bioverJB_3[0]*apar[4]*hamil[7]-0.3061862178478971*bioverJB_3[1]*apar[2]*hamil[7]-0.3061862178478971*bioverJB_3[0]*hamil[1]*apar[7]+0.3061862178478971*bioverJB_3[0]*apar[5]*hamil[6]+0.3061862178478971*apar[1]*bioverJB_3[3]*hamil[6]-0.3061862178478971*bioverJB_3[1]*hamil[1]*apar[6]+0.3061862178478971*apar[1]*hamil[2]*bioverJB_3[5]-0.3061862178478971*hamil[1]*apar[2]*bioverJB_3[5]+0.3061862178478971*bioverJB_3[1]*hamil[2]*apar[5]-0.3061862178478971*hamil[1]*bioverJB_3[3]*apar[4])*rdx2*rdy2)/vmap[1]+((-(0.5727564927611033*apar[5]*dualcurlbhatoverB_2[5]*hamil[16])-0.31819805153394626*apar[3]*dualcurlbhatoverB_2[3]*hamil[16]-0.31819805153394626*apar[1]*dualcurlbhatoverB_2[1]*hamil[16]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[0]*hamil[16]-0.31819805153394626*apar[3]*dualcurlbhatoverB_2[5]*hamil[8]-0.31819805153394626*dualcurlbhatoverB_2[3]*apar[5]*hamil[8]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[1]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[1]*hamil[8]-0.31819805153394626*apar[1]*dualcurlbhatoverB_2[5]*hamil[6]-0.31819805153394626*dualcurlbhatoverB_2[1]*apar[5]*hamil[6]-0.1767766952966368*apar[0]*dualcurlbhatoverB_2[3]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[3]*hamil[6]-0.1767766952966368*apar[0]*hamil[2]*dualcurlbhatoverB_2[5]-0.1767766952966368*dualcurlbhatoverB_2[0]*hamil[2]*apar[5]-0.1767766952966368*apar[1]*hamil[2]*dualcurlbhatoverB_2[3]-0.1767766952966368*dualcurlbhatoverB_2[1]*hamil[2]*apar[3])*rdy2)/vmap[1]+((-(0.31819805153394626*dualcurlbhatoverB_1[3]*apar[7]*hamil[16])-0.31819805153394626*dualcurlbhatoverB_1[5]*apar[6]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[4]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[2]*hamil[16]-0.31819805153394626*apar[3]*dualcurlbhatoverB_1[5]*hamil[7]-0.31819805153394626*dualcurlbhatoverB_1[3]*apar[5]*hamil[7]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[1]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[1]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[0]*hamil[6]*apar[7]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[6]*hamil[6]-0.1767766952966368*apar[2]*dualcurlbhatoverB_1[5]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[3]*apar[4]*hamil[6]-0.1767766952966368*apar[0]*hamil[1]*dualcurlbhatoverB_1[5]-0.1767766952966368*dualcurlbhatoverB_1[0]*hamil[1]*apar[5]-0.1767766952966368*apar[1]*hamil[1]*dualcurlbhatoverB_1[3]-0.1767766952966368*dualcurlbhatoverB_1[1]*hamil[1]*apar[3])*rdx2)/vmap[1])/m_; + alphavpar[8] = (((0.3061862178478971*apar[2]*bioverJB_1[5]*hamil[16]+0.3061862178478971*bioverJB_1[3]*apar[4]*hamil[16]+0.3061862178478971*apar[4]*bioverJB_1[5]*hamil[8]+0.3061862178478971*apar[2]*bioverJB_1[3]*hamil[8]-0.3061862178478971*bioverJB_1[3]*hamil[6]*apar[7]-0.3061862178478971*hamil[2]*bioverJB_1[5]*apar[7]-0.3061862178478971*bioverJB_1[5]*apar[6]*hamil[6]-0.3061862178478971*hamil[2]*bioverJB_1[3]*apar[6])*rdy2*rdz2)/vmap[1]+((-(0.3061862178478971*apar[1]*bioverJB_2[5]*hamil[16])+0.3061862178478971*bioverJB_2[0]*apar[3]*hamil[16]-0.3061862178478971*bioverJB_2[0]*apar[5]*hamil[8]-0.3061862178478971*apar[1]*bioverJB_2[3]*hamil[8]+0.3061862178478971*bioverJB_2[0]*apar[6]*hamil[7]-0.3061862178478971*apar[4]*bioverJB_2[5]*hamil[7]+0.3061862178478971*hamil[1]*bioverJB_2[5]*apar[7]-0.3061862178478971*bioverJB_2[0]*hamil[3]*apar[7]+0.3061862178478971*apar[5]*bioverJB_2[5]*hamil[6]+0.3061862178478971*apar[3]*bioverJB_2[3]*hamil[6]+0.3061862178478971*hamil[1]*bioverJB_2[3]*apar[6]-0.3061862178478971*bioverJB_2[3]*hamil[3]*apar[4])*rdx2*rdz2)/vmap[1]+((-(0.1767766952966368*apar[0]*dualcurlbhatoverB_3[5]*hamil[16])-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[5]*hamil[16]-0.1767766952966368*apar[1]*dualcurlbhatoverB_3[3]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[3]*hamil[16]-0.1767766952966368*apar[1]*dualcurlbhatoverB_3[5]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[5]*hamil[8]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[3]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[3]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[7]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[6]*hamil[7]-0.1767766952966368*apar[2]*dualcurlbhatoverB_3[5]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[4]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[1]*hamil[3]*apar[7]-0.1767766952966368*dualcurlbhatoverB_3[0]*hamil[3]*apar[6]-0.1767766952966368*hamil[3]*apar[4]*dualcurlbhatoverB_3[5]-0.1767766952966368*apar[2]*dualcurlbhatoverB_3[3]*hamil[3])*rdz2)/vmap[1]+((-(0.5511351921262146*bioverJB_3[3]*apar[6]*hamil[16])-0.3061862178478971*bioverJB_3[0]*apar[2]*hamil[16]+0.5511351921262146*bioverJB_3[3]*apar[7]*hamil[8]+0.3061862178478971*bioverJB_3[0]*apar[4]*hamil[8]+0.3061862178478971*bioverJB_3[0]*hamil[2]*apar[7]-0.3061862178478971*bioverJB_3[0]*apar[6]*hamil[6]-0.3061862178478971*apar[2]*bioverJB_3[3]*hamil[6]+0.3061862178478971*hamil[2]*bioverJB_3[3]*apar[4])*rdx2*rdy2)/vmap[1]+((-(0.31819805153394626*dualcurlbhatoverB_2[3]*apar[7]*hamil[16])-0.31819805153394626*dualcurlbhatoverB_2[5]*apar[6]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[4]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[2]*hamil[16]-0.31819805153394626*dualcurlbhatoverB_2[5]*apar[7]*hamil[8]-0.31819805153394626*dualcurlbhatoverB_2[3]*apar[6]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[4]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[2]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[0]*hamil[6]*apar[7]-0.1767766952966368*dualcurlbhatoverB_2[1]*hamil[2]*apar[7]-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[6]*hamil[6]-0.1767766952966368*apar[2]*dualcurlbhatoverB_2[5]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_2[3]*apar[4]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_2[0]*hamil[2]*apar[6]-0.1767766952966368*hamil[2]*apar[4]*dualcurlbhatoverB_2[5]-0.1767766952966368*apar[2]*hamil[2]*dualcurlbhatoverB_2[3])*rdy2)/vmap[1]+((-(0.31819805153394626*apar[5]*dualcurlbhatoverB_1[5]*hamil[16])-0.31819805153394626*apar[3]*dualcurlbhatoverB_1[3]*hamil[16]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[1]*hamil[16]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[0]*hamil[16]-0.31819805153394626*dualcurlbhatoverB_1[5]*apar[7]*hamil[7]-0.31819805153394626*dualcurlbhatoverB_1[3]*apar[6]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[4]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[2]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[1]*hamil[1]*apar[7]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[5]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[5]*hamil[6]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[3]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[3]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[0]*hamil[1]*apar[6]-0.1767766952966368*hamil[1]*apar[4]*dualcurlbhatoverB_1[5]-0.1767766952966368*hamil[1]*apar[2]*dualcurlbhatoverB_1[3])*rdx2)/vmap[1])/m_; + alphavpar[12] = (((0.5511351921262146*bioverJB_1[5]*apar[7]*hamil[21]+0.3061862178478971*bioverJB_1[3]*apar[6]*hamil[21]+0.5511351921262146*bioverJB_1[1]*apar[4]*hamil[21]+0.3061862178478971*bioverJB_1[0]*apar[2]*hamil[21]+0.3061862178478971*bioverJB_1[3]*apar[7]*hamil[14]+0.3061862178478971*bioverJB_1[5]*apar[6]*hamil[14]+0.3061862178478971*bioverJB_1[0]*apar[4]*hamil[14]+0.3061862178478971*bioverJB_1[1]*apar[2]*hamil[14])*rdy2*rdz2)/vmap[1]+((0.3061862178478971*apar[3]*bioverJB_2[5]*hamil[21]-0.3061862178478971*bioverJB_2[0]*apar[1]*hamil[21]-0.3061862178478971*apar[5]*bioverJB_2[5]*hamil[14]-0.3061862178478971*apar[1]*bioverJB_2[1]*hamil[14]+0.3061862178478971*bioverJB_2[0]*apar[5]*hamil[12]+0.3061862178478971*bioverJB_2[1]*apar[3]*hamil[12])*rdx2*rdz2)/vmap[1]+((-(0.31819805153394626*apar[5]*dualcurlbhatoverB_3[5]*hamil[21])-0.1767766952966368*apar[3]*dualcurlbhatoverB_3[3]*hamil[21]-0.31819805153394626*apar[1]*dualcurlbhatoverB_3[1]*hamil[21]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[0]*hamil[21]-0.1767766952966368*apar[3]*dualcurlbhatoverB_3[5]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[5]*hamil[14]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[1]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[1]*hamil[14])*rdz2)/vmap[1]+((-(0.3061862178478971*bioverJB_3[0]*apar[7]*hamil[21])-0.3061862178478971*bioverJB_3[1]*apar[6]*hamil[21]-0.3061862178478971*apar[2]*bioverJB_3[5]*hamil[21]-0.3061862178478971*bioverJB_3[3]*apar[4]*hamil[21]-0.3061862178478971*bioverJB_3[3]*apar[7]*hamil[12]-0.3061862178478971*bioverJB_3[5]*apar[6]*hamil[12]-0.3061862178478971*bioverJB_3[0]*apar[4]*hamil[12]-0.3061862178478971*bioverJB_3[1]*apar[2]*hamil[12])*rdx2*rdy2)/vmap[1]+((-(0.1767766952966368*apar[0]*dualcurlbhatoverB_1[5]*hamil[21])-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[5]*hamil[21]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[3]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[3]*hamil[21]-0.1767766952966368*apar[3]*dualcurlbhatoverB_1[5]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[3]*apar[5]*hamil[12]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[1]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[1]*hamil[12])*rdx2)/vmap[1])/m_; + alphavpar[13] = (((0.3061862178478971*bioverJB_2[3]*apar[6]*hamil[21]-0.3061862178478971*bioverJB_2[1]*apar[4]*hamil[21]-0.3061862178478971*bioverJB_2[3]*apar[7]*hamil[14]-0.3061862178478971*bioverJB_2[0]*apar[4]*hamil[14]+0.3061862178478971*bioverJB_2[1]*apar[7]*hamil[12]+0.3061862178478971*bioverJB_2[0]*apar[6]*hamil[12])*rdx2*rdz2)/vmap[1]+((-(0.1767766952966368*dualcurlbhatoverB_3[3]*apar[7]*hamil[21])-0.1767766952966368*dualcurlbhatoverB_3[5]*apar[6]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[4]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[2]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_3[5]*apar[7]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[6]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[4]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[2]*hamil[14])*rdz2)/vmap[1]+((-(0.1767766952966368*dualcurlbhatoverB_1[1]*apar[7]*hamil[21])-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[6]*hamil[21]-0.1767766952966368*apar[4]*dualcurlbhatoverB_1[5]*hamil[21]-0.1767766952966368*apar[2]*dualcurlbhatoverB_1[3]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_1[5]*apar[7]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[3]*apar[6]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[4]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[2]*hamil[12])*rdx2)/vmap[1])/m_; + alphavpar[14] = (((0.3061862178478971*bioverJB_1[0]*apar[7]*hamil[21]+0.3061862178478971*bioverJB_1[1]*apar[6]*hamil[21]+0.3061862178478971*apar[2]*bioverJB_1[5]*hamil[21]+0.3061862178478971*bioverJB_1[3]*apar[4]*hamil[21]+0.3061862178478971*bioverJB_1[1]*apar[7]*hamil[14]+0.3061862178478971*bioverJB_1[0]*apar[6]*hamil[14]+0.3061862178478971*apar[4]*bioverJB_1[5]*hamil[14]+0.3061862178478971*apar[2]*bioverJB_1[3]*hamil[14])*rdy2*rdz2)/vmap[1]+((-(0.3061862178478971*apar[1]*bioverJB_2[5]*hamil[21])+0.3061862178478971*bioverJB_2[0]*apar[3]*hamil[21]-0.3061862178478971*bioverJB_2[0]*apar[5]*hamil[14]-0.3061862178478971*apar[1]*bioverJB_2[3]*hamil[14]+0.3061862178478971*apar[5]*bioverJB_2[5]*hamil[12]+0.3061862178478971*apar[3]*bioverJB_2[3]*hamil[12])*rdx2*rdz2)/vmap[1]+((-(0.1767766952966368*apar[0]*dualcurlbhatoverB_3[5]*hamil[21])-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[5]*hamil[21]-0.1767766952966368*apar[1]*dualcurlbhatoverB_3[3]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[3]*hamil[21]-0.1767766952966368*apar[1]*dualcurlbhatoverB_3[5]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[5]*hamil[14]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[3]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[3]*hamil[14])*rdz2)/vmap[1]+((-(0.5511351921262146*bioverJB_3[5]*apar[7]*hamil[21])-0.5511351921262146*bioverJB_3[3]*apar[6]*hamil[21]-0.3061862178478971*bioverJB_3[1]*apar[4]*hamil[21]-0.3061862178478971*bioverJB_3[0]*apar[2]*hamil[21]-0.3061862178478971*bioverJB_3[1]*apar[7]*hamil[12]-0.3061862178478971*bioverJB_3[0]*apar[6]*hamil[12]-0.3061862178478971*apar[4]*bioverJB_3[5]*hamil[12]-0.3061862178478971*apar[2]*bioverJB_3[3]*hamil[12])*rdx2*rdy2)/vmap[1]+((-(0.31819805153394626*apar[5]*dualcurlbhatoverB_1[5]*hamil[21])-0.31819805153394626*apar[3]*dualcurlbhatoverB_1[3]*hamil[21]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[1]*hamil[21]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[0]*hamil[21]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[5]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[5]*hamil[12]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[3]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[3]*hamil[12])*rdx2)/vmap[1])/m_; + alphavpar[16] = (((0.5511351921262146*apar[4]*bioverJB_1[5]*hamil[16]+0.3061862178478971*apar[2]*bioverJB_1[3]*hamil[16]+0.3061862178478971*apar[2]*bioverJB_1[5]*hamil[8]+0.3061862178478971*bioverJB_1[3]*apar[4]*hamil[8]-0.5511351921262146*bioverJB_1[5]*hamil[6]*apar[7]-0.3061862178478971*hamil[2]*bioverJB_1[3]*apar[7]-0.3061862178478971*bioverJB_1[3]*apar[6]*hamil[6]-0.3061862178478971*hamil[2]*bioverJB_1[5]*apar[6])*rdy2*rdz2)/vmap[1]+((-(0.3061862178478971*apar[1]*bioverJB_2[3]*hamil[16])+0.3061862178478971*bioverJB_2[1]*apar[3]*hamil[16]-0.3061862178478971*apar[1]*bioverJB_2[5]*hamil[8]-0.3061862178478971*bioverJB_2[1]*apar[5]*hamil[8]+0.3061862178478971*bioverJB_2[1]*apar[6]*hamil[7]-0.3061862178478971*bioverJB_2[3]*apar[4]*hamil[7]-0.3061862178478971*bioverJB_2[1]*hamil[3]*apar[7]+0.3061862178478971*hamil[1]*bioverJB_2[3]*apar[7]+0.3061862178478971*apar[3]*bioverJB_2[5]*hamil[6]+0.3061862178478971*bioverJB_2[3]*apar[5]*hamil[6]+0.3061862178478971*hamil[1]*bioverJB_2[5]*apar[6]-0.3061862178478971*hamil[3]*apar[4]*bioverJB_2[5])*rdx2*rdz2)/vmap[1]+((-(0.31819805153394626*apar[1]*dualcurlbhatoverB_3[5]*hamil[16])-0.31819805153394626*dualcurlbhatoverB_3[1]*apar[5]*hamil[16]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[3]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[3]*hamil[16]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[5]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[5]*hamil[8]-0.1767766952966368*apar[1]*dualcurlbhatoverB_3[3]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[3]*hamil[8]-0.31819805153394626*dualcurlbhatoverB_3[1]*apar[7]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[6]*hamil[7]-0.31819805153394626*apar[4]*dualcurlbhatoverB_3[5]*hamil[7]-0.1767766952966368*apar[2]*dualcurlbhatoverB_3[3]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_3[0]*hamil[3]*apar[7]-0.1767766952966368*dualcurlbhatoverB_3[1]*hamil[3]*apar[6]-0.1767766952966368*apar[2]*hamil[3]*dualcurlbhatoverB_3[5]-0.1767766952966368*dualcurlbhatoverB_3[3]*hamil[3]*apar[4])*rdz2)/vmap[1]+((-(0.5511351921262146*bioverJB_3[5]*apar[6]*hamil[16])-0.3061862178478971*bioverJB_3[1]*apar[2]*hamil[16]+0.5511351921262146*bioverJB_3[5]*apar[7]*hamil[8]+0.3061862178478971*bioverJB_3[1]*apar[4]*hamil[8]+0.3061862178478971*bioverJB_3[1]*hamil[2]*apar[7]-0.3061862178478971*bioverJB_3[1]*apar[6]*hamil[6]-0.3061862178478971*apar[2]*bioverJB_3[5]*hamil[6]+0.3061862178478971*hamil[2]*apar[4]*bioverJB_3[5])*rdx2*rdy2)/vmap[1]+((-(0.5727564927611033*dualcurlbhatoverB_2[5]*apar[7]*hamil[16])-0.31819805153394626*dualcurlbhatoverB_2[3]*apar[6]*hamil[16]-0.31819805153394626*dualcurlbhatoverB_2[1]*apar[4]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[2]*hamil[16]-0.31819805153394626*dualcurlbhatoverB_2[3]*apar[7]*hamil[8]-0.31819805153394626*dualcurlbhatoverB_2[5]*apar[6]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[4]*hamil[8]-0.1767766952966368*dualcurlbhatoverB_2[1]*apar[2]*hamil[8]-0.31819805153394626*dualcurlbhatoverB_2[1]*hamil[6]*apar[7]-0.1767766952966368*dualcurlbhatoverB_2[0]*hamil[2]*apar[7]-0.1767766952966368*dualcurlbhatoverB_2[0]*apar[6]*hamil[6]-0.31819805153394626*apar[4]*dualcurlbhatoverB_2[5]*hamil[6]-0.1767766952966368*apar[2]*dualcurlbhatoverB_2[3]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_2[1]*hamil[2]*apar[6]-0.1767766952966368*apar[2]*hamil[2]*dualcurlbhatoverB_2[5]-0.1767766952966368*hamil[2]*dualcurlbhatoverB_2[3]*apar[4])*rdy2)/vmap[1]+((-(0.31819805153394626*apar[3]*dualcurlbhatoverB_1[5]*hamil[16])-0.31819805153394626*dualcurlbhatoverB_1[3]*apar[5]*hamil[16]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[1]*hamil[16]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[1]*hamil[16]-0.31819805153394626*dualcurlbhatoverB_1[3]*apar[7]*hamil[7]-0.31819805153394626*dualcurlbhatoverB_1[5]*apar[6]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[4]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[2]*hamil[7]-0.1767766952966368*dualcurlbhatoverB_1[0]*hamil[1]*apar[7]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[5]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[5]*hamil[6]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[3]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[3]*hamil[6]-0.1767766952966368*dualcurlbhatoverB_1[1]*hamil[1]*apar[6]-0.1767766952966368*hamil[1]*apar[2]*dualcurlbhatoverB_1[5]-0.1767766952966368*hamil[1]*dualcurlbhatoverB_1[3]*apar[4])*rdx2)/vmap[1])/m_; + alphavpar[20] = (((0.3061862178478971*bioverJB_2[5]*apar[6]*hamil[21]-0.3061862178478971*bioverJB_2[0]*apar[4]*hamil[21]-0.3061862178478971*bioverJB_2[5]*apar[7]*hamil[14]-0.3061862178478971*bioverJB_2[1]*apar[4]*hamil[14]+0.3061862178478971*bioverJB_2[0]*apar[7]*hamil[12]+0.3061862178478971*bioverJB_2[1]*apar[6]*hamil[12])*rdx2*rdz2)/vmap[1]+((-(0.31819805153394626*dualcurlbhatoverB_3[5]*apar[7]*hamil[21])-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[6]*hamil[21]-0.31819805153394626*dualcurlbhatoverB_3[1]*apar[4]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[2]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[7]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[5]*apar[6]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[4]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[2]*hamil[14])*rdz2)/vmap[1]+((-(0.1767766952966368*dualcurlbhatoverB_1[0]*apar[7]*hamil[21])-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[6]*hamil[21]-0.1767766952966368*apar[2]*dualcurlbhatoverB_1[5]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_1[3]*apar[4]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_1[3]*apar[7]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[5]*apar[6]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[4]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[2]*hamil[12])*rdx2)/vmap[1])/m_; + alphavpar[21] = (((0.5511351921262146*bioverJB_1[1]*apar[7]*hamil[21]+0.3061862178478971*bioverJB_1[0]*apar[6]*hamil[21]+0.5511351921262146*apar[4]*bioverJB_1[5]*hamil[21]+0.3061862178478971*apar[2]*bioverJB_1[3]*hamil[21]+0.3061862178478971*bioverJB_1[0]*apar[7]*hamil[14]+0.3061862178478971*bioverJB_1[1]*apar[6]*hamil[14]+0.3061862178478971*apar[2]*bioverJB_1[5]*hamil[14]+0.3061862178478971*bioverJB_1[3]*apar[4]*hamil[14])*rdy2*rdz2)/vmap[1]+((-(0.3061862178478971*apar[1]*bioverJB_2[3]*hamil[21])+0.3061862178478971*bioverJB_2[1]*apar[3]*hamil[21]-0.3061862178478971*apar[1]*bioverJB_2[5]*hamil[14]-0.3061862178478971*bioverJB_2[1]*apar[5]*hamil[14]+0.3061862178478971*apar[3]*bioverJB_2[5]*hamil[12]+0.3061862178478971*bioverJB_2[3]*apar[5]*hamil[12])*rdx2*rdz2)/vmap[1]+((-(0.31819805153394626*apar[1]*dualcurlbhatoverB_3[5]*hamil[21])-0.31819805153394626*dualcurlbhatoverB_3[1]*apar[5]*hamil[21]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[3]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[3]*hamil[21]-0.1767766952966368*apar[0]*dualcurlbhatoverB_3[5]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[5]*hamil[14]-0.1767766952966368*apar[1]*dualcurlbhatoverB_3[3]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[3]*hamil[14])*rdz2)/vmap[1]+((-(0.5511351921262146*bioverJB_3[3]*apar[7]*hamil[21])-0.5511351921262146*bioverJB_3[5]*apar[6]*hamil[21]-0.3061862178478971*bioverJB_3[0]*apar[4]*hamil[21]-0.3061862178478971*bioverJB_3[1]*apar[2]*hamil[21]-0.3061862178478971*bioverJB_3[0]*apar[7]*hamil[12]-0.3061862178478971*bioverJB_3[1]*apar[6]*hamil[12]-0.3061862178478971*apar[2]*bioverJB_3[5]*hamil[12]-0.3061862178478971*bioverJB_3[3]*apar[4]*hamil[12])*rdx2*rdy2)/vmap[1]+((-(0.31819805153394626*apar[3]*dualcurlbhatoverB_1[5]*hamil[21])-0.31819805153394626*dualcurlbhatoverB_1[3]*apar[5]*hamil[21]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[1]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[1]*hamil[21]-0.1767766952966368*apar[0]*dualcurlbhatoverB_1[5]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[5]*hamil[12]-0.1767766952966368*apar[1]*dualcurlbhatoverB_1[3]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[3]*hamil[12])*rdx2)/vmap[1])/m_; + alphavpar[22] = (((0.3061862178478971*bioverJB_2[0]*apar[6]*hamil[21]-0.3061862178478971*apar[4]*bioverJB_2[5]*hamil[21]-0.3061862178478971*bioverJB_2[0]*apar[7]*hamil[14]-0.3061862178478971*bioverJB_2[3]*apar[4]*hamil[14]+0.3061862178478971*bioverJB_2[5]*apar[7]*hamil[12]+0.3061862178478971*bioverJB_2[3]*apar[6]*hamil[12])*rdx2*rdz2)/vmap[1]+((-(0.1767766952966368*dualcurlbhatoverB_3[0]*apar[7]*hamil[21])-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[6]*hamil[21]-0.1767766952966368*apar[2]*dualcurlbhatoverB_3[5]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[4]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[7]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[6]*hamil[14]-0.1767766952966368*apar[4]*dualcurlbhatoverB_3[5]*hamil[14]-0.1767766952966368*apar[2]*dualcurlbhatoverB_3[3]*hamil[14])*rdz2)/vmap[1]+((-(0.31819805153394626*dualcurlbhatoverB_1[5]*apar[7]*hamil[21])-0.31819805153394626*dualcurlbhatoverB_1[3]*apar[6]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[4]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[2]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[7]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[6]*hamil[12]-0.1767766952966368*apar[4]*dualcurlbhatoverB_1[5]*hamil[12]-0.1767766952966368*apar[2]*dualcurlbhatoverB_1[3]*hamil[12])*rdx2)/vmap[1])/m_; + alphavpar[27] = (((0.3061862178478971*bioverJB_2[1]*apar[6]*hamil[21]-0.3061862178478971*bioverJB_2[3]*apar[4]*hamil[21]-0.3061862178478971*bioverJB_2[1]*apar[7]*hamil[14]-0.3061862178478971*apar[4]*bioverJB_2[5]*hamil[14]+0.3061862178478971*bioverJB_2[3]*apar[7]*hamil[12]+0.3061862178478971*bioverJB_2[5]*apar[6]*hamil[12])*rdx2*rdz2)/vmap[1]+((-(0.31819805153394626*dualcurlbhatoverB_3[1]*apar[7]*hamil[21])-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[6]*hamil[21]-0.31819805153394626*apar[4]*dualcurlbhatoverB_3[5]*hamil[21]-0.1767766952966368*apar[2]*dualcurlbhatoverB_3[3]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_3[0]*apar[7]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[1]*apar[6]*hamil[14]-0.1767766952966368*apar[2]*dualcurlbhatoverB_3[5]*hamil[14]-0.1767766952966368*dualcurlbhatoverB_3[3]*apar[4]*hamil[14])*rdz2)/vmap[1]+((-(0.31819805153394626*dualcurlbhatoverB_1[3]*apar[7]*hamil[21])-0.31819805153394626*dualcurlbhatoverB_1[5]*apar[6]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[4]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[2]*hamil[21]-0.1767766952966368*dualcurlbhatoverB_1[0]*apar[7]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[1]*apar[6]*hamil[12]-0.1767766952966368*apar[2]*dualcurlbhatoverB_1[5]*hamil[12]-0.1767766952966368*dualcurlbhatoverB_1[3]*apar[4]*hamil[12])*rdx2)/vmap[1])/m_; + + + out[4] += 0.3061862178478971*(alphavpar[27]*fin[27]+alphavpar[22]*fin[22]+alphavpar[21]*fin[21]+alphavpar[20]*fin[20]+alphavpar[16]*fin[16]+alphavpar[14]*fin[14]+alphavpar[13]*fin[13]+alphavpar[12]*fin[12]+alphavpar[8]*fin[8]+alphavpar[7]*fin[7]+alphavpar[6]*fin[6]+alphavpar[5]*fin[5]+alphavpar[3]*fin[3]+alphavpar[2]*fin[2]+alphavpar[1]*fin[1]+alphavpar[0]*fin[0]); + out[9] += 0.3061862178478971*(alphavpar[22]*fin[27]+fin[22]*alphavpar[27]+alphavpar[14]*fin[21]+fin[14]*alphavpar[21]+alphavpar[13]*fin[20]+fin[13]*alphavpar[20]+alphavpar[8]*fin[16]+fin[8]*alphavpar[16]+alphavpar[5]*fin[12]+fin[5]*alphavpar[12]+alphavpar[3]*fin[7]+fin[3]*alphavpar[7]+alphavpar[2]*fin[6]+fin[2]*alphavpar[6]+alphavpar[0]*fin[1]+fin[0]*alphavpar[1]); + out[10] += 0.3061862178478971*(alphavpar[21]*fin[27]+fin[21]*alphavpar[27]+alphavpar[14]*fin[22]+fin[14]*alphavpar[22]+alphavpar[12]*fin[20]+fin[12]*alphavpar[20]+alphavpar[7]*fin[16]+fin[7]*alphavpar[16]+alphavpar[5]*fin[13]+fin[5]*alphavpar[13]+alphavpar[3]*fin[8]+fin[3]*alphavpar[8]+alphavpar[1]*fin[6]+fin[1]*alphavpar[6]+alphavpar[0]*fin[2]+fin[0]*alphavpar[2]); + out[11] += 0.3061862178478971*(alphavpar[20]*fin[27]+fin[20]*alphavpar[27]+alphavpar[13]*fin[22]+fin[13]*alphavpar[22]+alphavpar[12]*fin[21]+fin[12]*alphavpar[21]+alphavpar[6]*fin[16]+fin[6]*alphavpar[16]+alphavpar[5]*fin[14]+fin[5]*alphavpar[14]+alphavpar[2]*fin[8]+fin[2]*alphavpar[8]+alphavpar[1]*fin[7]+fin[1]*alphavpar[7]+alphavpar[0]*fin[3]+fin[0]*alphavpar[3]); + out[15] += 0.3061862178478971*(alphavpar[16]*fin[27]+fin[16]*alphavpar[27]+alphavpar[8]*fin[22]+fin[8]*alphavpar[22]+alphavpar[7]*fin[21]+fin[7]*alphavpar[21]+alphavpar[6]*fin[20]+fin[6]*alphavpar[20]+alphavpar[3]*fin[14]+fin[3]*alphavpar[14]+alphavpar[2]*fin[13]+fin[2]*alphavpar[13]+alphavpar[1]*fin[12]+fin[1]*alphavpar[12]+alphavpar[0]*fin[5]+fin[0]*alphavpar[5]); + out[17] += 0.3061862178478971*(alphavpar[14]*fin[27]+fin[14]*alphavpar[27]+alphavpar[21]*fin[22]+fin[21]*alphavpar[22]+alphavpar[5]*fin[20]+fin[5]*alphavpar[20]+alphavpar[3]*fin[16]+fin[3]*alphavpar[16]+alphavpar[12]*fin[13]+fin[12]*alphavpar[13]+alphavpar[7]*fin[8]+fin[7]*alphavpar[8]+alphavpar[0]*fin[6]+fin[0]*alphavpar[6]+alphavpar[1]*fin[2]+fin[1]*alphavpar[2]); + out[18] += 0.3061862178478971*(alphavpar[13]*fin[27]+fin[13]*alphavpar[27]+alphavpar[20]*fin[22]+fin[20]*alphavpar[22]+alphavpar[5]*fin[21]+fin[5]*alphavpar[21]+alphavpar[2]*fin[16]+fin[2]*alphavpar[16]+alphavpar[12]*fin[14]+fin[12]*alphavpar[14]+alphavpar[6]*fin[8]+fin[6]*alphavpar[8]+alphavpar[0]*fin[7]+fin[0]*alphavpar[7]+alphavpar[1]*fin[3]+fin[1]*alphavpar[3]); + out[19] += 0.3061862178478971*(alphavpar[12]*fin[27]+fin[12]*alphavpar[27]+alphavpar[5]*fin[22]+fin[5]*alphavpar[22]+alphavpar[20]*fin[21]+fin[20]*alphavpar[21]+alphavpar[1]*fin[16]+fin[1]*alphavpar[16]+alphavpar[13]*fin[14]+fin[13]*alphavpar[14]+alphavpar[0]*fin[8]+fin[0]*alphavpar[8]+alphavpar[6]*fin[7]+fin[6]*alphavpar[7]+alphavpar[2]*fin[3]+fin[2]*alphavpar[3]); + out[23] += 0.3061862178478971*(alphavpar[8]*fin[27]+fin[8]*alphavpar[27]+alphavpar[16]*fin[22]+fin[16]*alphavpar[22]+alphavpar[3]*fin[21]+fin[3]*alphavpar[21]+alphavpar[2]*fin[20]+fin[2]*alphavpar[20]+alphavpar[7]*fin[14]+fin[7]*alphavpar[14]+alphavpar[6]*fin[13]+fin[6]*alphavpar[13]+alphavpar[0]*fin[12]+fin[0]*alphavpar[12]+alphavpar[1]*fin[5]+fin[1]*alphavpar[5]); + out[24] += 0.3061862178478971*(alphavpar[7]*fin[27]+fin[7]*alphavpar[27]+alphavpar[3]*fin[22]+fin[3]*alphavpar[22]+alphavpar[16]*fin[21]+fin[16]*alphavpar[21]+alphavpar[1]*fin[20]+fin[1]*alphavpar[20]+alphavpar[8]*fin[14]+fin[8]*alphavpar[14]+alphavpar[0]*fin[13]+fin[0]*alphavpar[13]+alphavpar[6]*fin[12]+fin[6]*alphavpar[12]+alphavpar[2]*fin[5]+fin[2]*alphavpar[5]); + out[25] += 0.3061862178478971*(alphavpar[6]*fin[27]+fin[6]*alphavpar[27]+alphavpar[2]*fin[22]+fin[2]*alphavpar[22]+alphavpar[1]*fin[21]+fin[1]*alphavpar[21]+alphavpar[16]*fin[20]+fin[16]*alphavpar[20]+alphavpar[0]*fin[14]+fin[0]*alphavpar[14]+alphavpar[8]*fin[13]+fin[8]*alphavpar[13]+alphavpar[7]*fin[12]+fin[7]*alphavpar[12]+alphavpar[3]*fin[5]+fin[3]*alphavpar[5]); + out[26] += 0.3061862178478971*(alphavpar[5]*fin[27]+fin[5]*alphavpar[27]+alphavpar[12]*fin[22]+fin[12]*alphavpar[22]+alphavpar[13]*fin[21]+fin[13]*alphavpar[21]+alphavpar[14]*fin[20]+fin[14]*alphavpar[20]+alphavpar[0]*fin[16]+fin[0]*alphavpar[16]+alphavpar[1]*fin[8]+fin[1]*alphavpar[8]+alphavpar[2]*fin[7]+fin[2]*alphavpar[7]+alphavpar[3]*fin[6]+fin[3]*alphavpar[6]); + out[28] += 0.3061862178478971*(alphavpar[3]*fin[27]+fin[3]*alphavpar[27]+alphavpar[7]*fin[22]+fin[7]*alphavpar[22]+alphavpar[8]*fin[21]+fin[8]*alphavpar[21]+alphavpar[0]*fin[20]+fin[0]*alphavpar[20]+alphavpar[14]*fin[16]+fin[14]*alphavpar[16]+alphavpar[1]*fin[13]+fin[1]*alphavpar[13]+alphavpar[2]*fin[12]+fin[2]*alphavpar[12]+alphavpar[5]*fin[6]+fin[5]*alphavpar[6]); + out[29] += 0.3061862178478971*(alphavpar[2]*fin[27]+fin[2]*alphavpar[27]+alphavpar[6]*fin[22]+fin[6]*alphavpar[22]+alphavpar[0]*fin[21]+fin[0]*alphavpar[21]+alphavpar[8]*fin[20]+fin[8]*alphavpar[20]+alphavpar[13]*fin[16]+fin[13]*alphavpar[16]+alphavpar[1]*fin[14]+fin[1]*alphavpar[14]+alphavpar[3]*fin[12]+fin[3]*alphavpar[12]+alphavpar[5]*fin[7]+fin[5]*alphavpar[7]); + out[30] += 0.3061862178478971*(alphavpar[1]*fin[27]+fin[1]*alphavpar[27]+alphavpar[0]*fin[22]+fin[0]*alphavpar[22]+alphavpar[6]*fin[21]+fin[6]*alphavpar[21]+alphavpar[7]*fin[20]+fin[7]*alphavpar[20]+alphavpar[12]*fin[16]+fin[12]*alphavpar[16]+alphavpar[2]*fin[14]+fin[2]*alphavpar[14]+alphavpar[3]*fin[13]+fin[3]*alphavpar[13]+alphavpar[5]*fin[8]+fin[5]*alphavpar[8]); + out[31] += 0.3061862178478971*(alphavpar[0]*fin[27]+fin[0]*alphavpar[27]+alphavpar[1]*fin[22]+fin[1]*alphavpar[22]+alphavpar[2]*fin[21]+fin[2]*alphavpar[21]+alphavpar[3]*fin[20]+fin[3]*alphavpar[20]+alphavpar[5]*fin[16]+fin[5]*alphavpar[16]+alphavpar[6]*fin[14]+fin[6]*alphavpar[14]+alphavpar[7]*fin[13]+fin[7]*alphavpar[13]+alphavpar[8]*fin[12]+fin[8]*alphavpar[12]); + out[32] += 0.6846531968814573*(alphavpar[27]*fin[31]+alphavpar[22]*fin[30]+alphavpar[21]*fin[29]+alphavpar[20]*fin[28]+alphavpar[16]*fin[26]+alphavpar[14]*fin[25]+alphavpar[13]*fin[24]+alphavpar[12]*fin[23]+alphavpar[8]*fin[19]+alphavpar[7]*fin[18]+alphavpar[6]*fin[17]+alphavpar[5]*fin[15]+alphavpar[3]*fin[11]+alphavpar[2]*fin[10]+alphavpar[1]*fin[9]+alphavpar[0]*fin[4]); + out[33] += 0.6846531968814574*(alphavpar[22]*fin[31]+alphavpar[27]*fin[30]+alphavpar[14]*fin[29]+alphavpar[13]*fin[28]+alphavpar[8]*fin[26]+alphavpar[21]*fin[25]+alphavpar[20]*fin[24]+alphavpar[5]*fin[23]+alphavpar[16]*fin[19]+alphavpar[3]*fin[18]+alphavpar[2]*fin[17]+alphavpar[12]*fin[15]+alphavpar[7]*fin[11]+alphavpar[6]*fin[10]+alphavpar[0]*fin[9]+alphavpar[1]*fin[4]); + out[34] += 0.6846531968814574*(alphavpar[21]*fin[31]+alphavpar[14]*fin[30]+alphavpar[27]*fin[29]+alphavpar[12]*fin[28]+alphavpar[7]*fin[26]+alphavpar[22]*fin[25]+alphavpar[5]*fin[24]+alphavpar[20]*fin[23]+alphavpar[3]*fin[19]+alphavpar[16]*fin[18]+alphavpar[1]*fin[17]+alphavpar[13]*fin[15]+alphavpar[8]*fin[11]+alphavpar[0]*fin[10]+alphavpar[6]*fin[9]+alphavpar[2]*fin[4]); + out[35] += 0.6846531968814574*(alphavpar[20]*fin[31]+alphavpar[13]*fin[30]+alphavpar[12]*fin[29]+alphavpar[27]*fin[28]+alphavpar[6]*fin[26]+alphavpar[5]*fin[25]+alphavpar[22]*fin[24]+alphavpar[21]*fin[23]+alphavpar[2]*fin[19]+alphavpar[1]*fin[18]+alphavpar[16]*fin[17]+alphavpar[14]*fin[15]+alphavpar[0]*fin[11]+alphavpar[8]*fin[10]+alphavpar[7]*fin[9]+alphavpar[3]*fin[4]); + out[36] += 0.6846531968814574*(alphavpar[16]*fin[31]+alphavpar[8]*fin[30]+alphavpar[7]*fin[29]+alphavpar[6]*fin[28]+fin[26]*alphavpar[27]+alphavpar[3]*fin[25]+alphavpar[2]*fin[24]+alphavpar[1]*fin[23]+fin[19]*alphavpar[22]+fin[18]*alphavpar[21]+fin[17]*alphavpar[20]+alphavpar[0]*fin[15]+fin[11]*alphavpar[14]+fin[10]*alphavpar[13]+fin[9]*alphavpar[12]+fin[4]*alphavpar[5]); + out[37] += 0.6846531968814573*(alphavpar[14]*fin[31]+alphavpar[21]*fin[30]+alphavpar[22]*fin[29]+alphavpar[5]*fin[28]+fin[25]*alphavpar[27]+alphavpar[3]*fin[26]+alphavpar[12]*fin[24]+alphavpar[13]*fin[23]+fin[15]*alphavpar[20]+alphavpar[7]*fin[19]+alphavpar[8]*fin[18]+alphavpar[0]*fin[17]+fin[11]*alphavpar[16]+alphavpar[1]*fin[10]+alphavpar[2]*fin[9]+fin[4]*alphavpar[6]); + out[38] += 0.6846531968814573*(alphavpar[13]*fin[31]+alphavpar[20]*fin[30]+alphavpar[5]*fin[29]+alphavpar[22]*fin[28]+fin[24]*alphavpar[27]+alphavpar[2]*fin[26]+alphavpar[12]*fin[25]+alphavpar[14]*fin[23]+fin[15]*alphavpar[21]+alphavpar[6]*fin[19]+alphavpar[0]*fin[18]+alphavpar[8]*fin[17]+fin[10]*alphavpar[16]+alphavpar[1]*fin[11]+alphavpar[3]*fin[9]+fin[4]*alphavpar[7]); + out[39] += 0.6846531968814573*(alphavpar[12]*fin[31]+alphavpar[5]*fin[30]+alphavpar[20]*fin[29]+alphavpar[21]*fin[28]+fin[23]*alphavpar[27]+alphavpar[1]*fin[26]+alphavpar[13]*fin[25]+alphavpar[14]*fin[24]+fin[15]*alphavpar[22]+alphavpar[0]*fin[19]+alphavpar[6]*fin[18]+alphavpar[7]*fin[17]+fin[9]*alphavpar[16]+alphavpar[2]*fin[11]+alphavpar[3]*fin[10]+fin[4]*alphavpar[8]); + out[40] += 0.6846531968814573*(alphavpar[8]*fin[31]+alphavpar[16]*fin[30]+alphavpar[3]*fin[29]+alphavpar[2]*fin[28]+fin[19]*alphavpar[27]+alphavpar[22]*fin[26]+alphavpar[7]*fin[25]+alphavpar[6]*fin[24]+alphavpar[0]*fin[23]+fin[11]*alphavpar[21]+fin[10]*alphavpar[20]+alphavpar[14]*fin[18]+alphavpar[13]*fin[17]+alphavpar[1]*fin[15]+fin[4]*alphavpar[12]+alphavpar[5]*fin[9]); + out[41] += 0.6846531968814573*(alphavpar[7]*fin[31]+alphavpar[3]*fin[30]+alphavpar[16]*fin[29]+alphavpar[1]*fin[28]+fin[18]*alphavpar[27]+alphavpar[21]*fin[26]+alphavpar[8]*fin[25]+alphavpar[0]*fin[24]+alphavpar[6]*fin[23]+fin[11]*alphavpar[22]+fin[9]*alphavpar[20]+alphavpar[14]*fin[19]+alphavpar[12]*fin[17]+alphavpar[2]*fin[15]+fin[4]*alphavpar[13]+alphavpar[5]*fin[10]); + out[42] += 0.6846531968814573*(alphavpar[6]*fin[31]+alphavpar[2]*fin[30]+alphavpar[1]*fin[29]+alphavpar[16]*fin[28]+fin[17]*alphavpar[27]+alphavpar[20]*fin[26]+alphavpar[0]*fin[25]+alphavpar[8]*fin[24]+alphavpar[7]*fin[23]+fin[10]*alphavpar[22]+fin[9]*alphavpar[21]+alphavpar[13]*fin[19]+alphavpar[12]*fin[18]+alphavpar[3]*fin[15]+fin[4]*alphavpar[14]+alphavpar[5]*fin[11]); + out[43] += 0.6846531968814574*(alphavpar[5]*fin[31]+alphavpar[12]*fin[30]+alphavpar[13]*fin[29]+alphavpar[14]*fin[28]+fin[15]*alphavpar[27]+alphavpar[0]*fin[26]+alphavpar[20]*fin[25]+alphavpar[21]*fin[24]+alphavpar[22]*fin[23]+alphavpar[1]*fin[19]+alphavpar[2]*fin[18]+alphavpar[3]*fin[17]+fin[4]*alphavpar[16]+alphavpar[6]*fin[11]+alphavpar[7]*fin[10]+alphavpar[8]*fin[9]); + out[44] += 0.6846531968814574*(alphavpar[3]*fin[31]+alphavpar[7]*fin[30]+alphavpar[8]*fin[29]+alphavpar[0]*fin[28]+fin[11]*alphavpar[27]+alphavpar[14]*fin[26]+alphavpar[16]*fin[25]+alphavpar[1]*fin[24]+alphavpar[2]*fin[23]+fin[18]*alphavpar[22]+fin[19]*alphavpar[21]+fin[4]*alphavpar[20]+alphavpar[5]*fin[17]+alphavpar[6]*fin[15]+fin[9]*alphavpar[13]+fin[10]*alphavpar[12]); + out[45] += 0.6846531968814574*(alphavpar[2]*fin[31]+alphavpar[6]*fin[30]+alphavpar[0]*fin[29]+alphavpar[8]*fin[28]+fin[10]*alphavpar[27]+alphavpar[13]*fin[26]+alphavpar[1]*fin[25]+alphavpar[16]*fin[24]+alphavpar[3]*fin[23]+fin[17]*alphavpar[22]+fin[4]*alphavpar[21]+fin[19]*alphavpar[20]+alphavpar[5]*fin[18]+alphavpar[7]*fin[15]+fin[9]*alphavpar[14]+fin[11]*alphavpar[12]); + out[46] += 0.6846531968814574*(alphavpar[1]*fin[31]+alphavpar[0]*fin[30]+alphavpar[6]*fin[29]+alphavpar[7]*fin[28]+fin[9]*alphavpar[27]+alphavpar[12]*fin[26]+alphavpar[2]*fin[25]+alphavpar[3]*fin[24]+alphavpar[16]*fin[23]+fin[4]*alphavpar[22]+fin[17]*alphavpar[21]+fin[18]*alphavpar[20]+alphavpar[5]*fin[19]+alphavpar[8]*fin[15]+fin[10]*alphavpar[14]+fin[11]*alphavpar[13]); + out[47] += 0.6846531968814573*(alphavpar[0]*fin[31]+alphavpar[1]*fin[30]+alphavpar[2]*fin[29]+alphavpar[3]*fin[28]+fin[4]*alphavpar[27]+alphavpar[5]*fin[26]+alphavpar[6]*fin[25]+alphavpar[7]*fin[24]+alphavpar[8]*fin[23]+fin[9]*alphavpar[22]+fin[10]*alphavpar[21]+fin[11]*alphavpar[20]+alphavpar[12]*fin[19]+alphavpar[13]*fin[18]+alphavpar[14]*fin[17]+fin[15]*alphavpar[16]); + + return 0.; +} diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apardot_vol_1x1v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apardot_vol_1x1v_ser_p1.c new file mode 100644 index 0000000000..c8f481cde2 --- /dev/null +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apardot_vol_1x1v_ser_p1.c @@ -0,0 +1,21 @@ +#include +GKYL_CU_DH double dg_gyrokinetic_add_apardot_vol_1x1v_ser_p1(const double *vmap, const double q_, const double m_, const double *apardot, + const double *fin, double* GKYL_RESTRICT out) +{ + // q_,m_: species charge and mass. + // apardot: time derivative of parallel component of magnetic vector potential. + // fin: Distribution function. + // out: output increment. + + double alphavpar[6] = {0.}; + alphavpar[0] = -((1.1547005383792517*apardot[0]*q_)/(vmap[1]*m_)); + alphavpar[1] = -((1.1547005383792517*apardot[1]*q_)/(vmap[1]*m_)); + + + out[2] += 0.8660254037844386*(alphavpar[1]*fin[1]+alphavpar[0]*fin[0]); + out[3] += 0.8660254037844386*(alphavpar[0]*fin[1]+fin[0]*alphavpar[1]); + out[4] += 1.9364916731037085*(alphavpar[1]*fin[3]+alphavpar[0]*fin[2]); + out[5] += 1.9364916731037085*(alphavpar[0]*fin[3]+alphavpar[1]*fin[2]); + + return 0.; +} diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apardot_vol_1x2v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apardot_vol_1x2v_ser_p1.c new file mode 100644 index 0000000000..15f1dcc074 --- /dev/null +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apardot_vol_1x2v_ser_p1.c @@ -0,0 +1,25 @@ +#include +GKYL_CU_DH double dg_gyrokinetic_add_apardot_vol_1x2v_ser_p1(const double *vmap, const double q_, const double m_, const double *apardot, + const double *fin, double* GKYL_RESTRICT out) +{ + // q_,m_: species charge and mass. + // apardot: time derivative of parallel component of magnetic vector potential. + // fin: Distribution function. + // out: output increment. + + double alphavpar[12] = {0.}; + alphavpar[0] = -((1.6329931618554527*apardot[0]*q_)/(vmap[1]*m_)); + alphavpar[1] = -((1.6329931618554527*apardot[1]*q_)/(vmap[1]*m_)); + + + out[2] += 0.6123724356957944*(alphavpar[1]*fin[1]+alphavpar[0]*fin[0]); + out[4] += 0.6123724356957944*(alphavpar[0]*fin[1]+fin[0]*alphavpar[1]); + out[6] += 0.6123724356957944*(alphavpar[1]*fin[5]+alphavpar[0]*fin[3]); + out[7] += 0.6123724356957944*(alphavpar[0]*fin[5]+alphavpar[1]*fin[3]); + out[8] += 1.369306393762915*(alphavpar[1]*fin[4]+alphavpar[0]*fin[2]); + out[9] += 1.369306393762915*(alphavpar[0]*fin[4]+alphavpar[1]*fin[2]); + out[10] += 1.369306393762915*(alphavpar[1]*fin[7]+alphavpar[0]*fin[6]); + out[11] += 1.369306393762915*(alphavpar[0]*fin[7]+alphavpar[1]*fin[6]); + + return 0.; +} diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apardot_vol_2x2v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apardot_vol_2x2v_ser_p1.c new file mode 100644 index 0000000000..3ea2ccf2e2 --- /dev/null +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apardot_vol_2x2v_ser_p1.c @@ -0,0 +1,35 @@ +#include +GKYL_CU_DH double dg_gyrokinetic_add_apardot_vol_2x2v_ser_p1(const double *vmap, const double q_, const double m_, const double *apardot, + const double *fin, double* GKYL_RESTRICT out) +{ + // q_,m_: species charge and mass. + // apardot: time derivative of parallel component of magnetic vector potential. + // fin: Distribution function. + // out: output increment. + + double alphavpar[24] = {0.}; + alphavpar[0] = -((1.6329931618554527*apardot[0]*q_)/(vmap[1]*m_)); + alphavpar[1] = -((1.6329931618554527*apardot[1]*q_)/(vmap[1]*m_)); + alphavpar[2] = -((1.6329931618554527*apardot[2]*q_)/(vmap[1]*m_)); + alphavpar[5] = -((1.6329931618554527*apardot[3]*q_)/(vmap[1]*m_)); + + + out[3] += 0.4330127018922193*(alphavpar[5]*fin[5]+alphavpar[2]*fin[2]+alphavpar[1]*fin[1]+alphavpar[0]*fin[0]); + out[6] += 0.4330127018922193*(alphavpar[2]*fin[5]+fin[2]*alphavpar[5]+alphavpar[0]*fin[1]+fin[0]*alphavpar[1]); + out[7] += 0.4330127018922193*(alphavpar[1]*fin[5]+fin[1]*alphavpar[5]+alphavpar[0]*fin[2]+fin[0]*alphavpar[2]); + out[10] += 0.4330127018922193*(alphavpar[5]*fin[12]+alphavpar[2]*fin[9]+alphavpar[1]*fin[8]+alphavpar[0]*fin[4]); + out[11] += 0.4330127018922193*(alphavpar[0]*fin[5]+fin[0]*alphavpar[5]+alphavpar[1]*fin[2]+fin[1]*alphavpar[2]); + out[13] += 0.4330127018922193*(alphavpar[2]*fin[12]+alphavpar[5]*fin[9]+alphavpar[0]*fin[8]+alphavpar[1]*fin[4]); + out[14] += 0.4330127018922193*(alphavpar[1]*fin[12]+alphavpar[0]*fin[9]+alphavpar[5]*fin[8]+alphavpar[2]*fin[4]); + out[15] += 0.4330127018922193*(alphavpar[0]*fin[12]+alphavpar[1]*fin[9]+alphavpar[2]*fin[8]+fin[4]*alphavpar[5]); + out[16] += 0.9682458365518543*(alphavpar[5]*fin[11]+alphavpar[2]*fin[7]+alphavpar[1]*fin[6]+alphavpar[0]*fin[3]); + out[17] += 0.9682458365518543*(alphavpar[2]*fin[11]+alphavpar[5]*fin[7]+alphavpar[0]*fin[6]+alphavpar[1]*fin[3]); + out[18] += 0.9682458365518543*(alphavpar[1]*fin[11]+alphavpar[0]*fin[7]+alphavpar[5]*fin[6]+alphavpar[2]*fin[3]); + out[19] += 0.9682458365518543*(alphavpar[5]*fin[15]+alphavpar[2]*fin[14]+alphavpar[1]*fin[13]+alphavpar[0]*fin[10]); + out[20] += 0.9682458365518543*(alphavpar[0]*fin[11]+alphavpar[1]*fin[7]+alphavpar[2]*fin[6]+fin[3]*alphavpar[5]); + out[21] += 0.9682458365518543*(alphavpar[2]*fin[15]+alphavpar[5]*fin[14]+alphavpar[0]*fin[13]+alphavpar[1]*fin[10]); + out[22] += 0.9682458365518543*(alphavpar[1]*fin[15]+alphavpar[0]*fin[14]+alphavpar[5]*fin[13]+alphavpar[2]*fin[10]); + out[23] += 0.9682458365518543*(alphavpar[0]*fin[15]+alphavpar[1]*fin[14]+alphavpar[2]*fin[13]+alphavpar[5]*fin[10]); + + return 0.; +} diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apardot_vol_3x2v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apardot_vol_3x2v_ser_p1.c new file mode 100644 index 0000000000..9f55bf3a8e --- /dev/null +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_add_apardot_vol_3x2v_ser_p1.c @@ -0,0 +1,55 @@ +#include +GKYL_CU_DH double dg_gyrokinetic_add_apardot_vol_3x2v_ser_p1(const double *vmap, const double q_, const double m_, const double *apardot, + const double *fin, double* GKYL_RESTRICT out) +{ + // q_,m_: species charge and mass. + // apardot: time derivative of parallel component of magnetic vector potential. + // fin: Distribution function. + // out: output increment. + + double alphavpar[48] = {0.}; + alphavpar[0] = -((1.6329931618554527*apardot[0]*q_)/(vmap[1]*m_)); + alphavpar[1] = -((1.6329931618554527*apardot[1]*q_)/(vmap[1]*m_)); + alphavpar[2] = -((1.6329931618554527*apardot[2]*q_)/(vmap[1]*m_)); + alphavpar[3] = -((1.6329931618554527*apardot[3]*q_)/(vmap[1]*m_)); + alphavpar[6] = -((1.6329931618554527*apardot[4]*q_)/(vmap[1]*m_)); + alphavpar[7] = -((1.6329931618554527*apardot[5]*q_)/(vmap[1]*m_)); + alphavpar[8] = -((1.6329931618554527*apardot[6]*q_)/(vmap[1]*m_)); + alphavpar[16] = -((1.6329931618554527*apardot[7]*q_)/(vmap[1]*m_)); + + + out[4] += 0.3061862178478971*(alphavpar[16]*fin[16]+alphavpar[8]*fin[8]+alphavpar[7]*fin[7]+alphavpar[6]*fin[6]+alphavpar[3]*fin[3]+alphavpar[2]*fin[2]+alphavpar[1]*fin[1]+alphavpar[0]*fin[0]); + out[9] += 0.3061862178478971*(alphavpar[8]*fin[16]+fin[8]*alphavpar[16]+alphavpar[3]*fin[7]+fin[3]*alphavpar[7]+alphavpar[2]*fin[6]+fin[2]*alphavpar[6]+alphavpar[0]*fin[1]+fin[0]*alphavpar[1]); + out[10] += 0.3061862178478971*(alphavpar[7]*fin[16]+fin[7]*alphavpar[16]+alphavpar[3]*fin[8]+fin[3]*alphavpar[8]+alphavpar[1]*fin[6]+fin[1]*alphavpar[6]+alphavpar[0]*fin[2]+fin[0]*alphavpar[2]); + out[11] += 0.3061862178478971*(alphavpar[6]*fin[16]+fin[6]*alphavpar[16]+alphavpar[2]*fin[8]+fin[2]*alphavpar[8]+alphavpar[1]*fin[7]+fin[1]*alphavpar[7]+alphavpar[0]*fin[3]+fin[0]*alphavpar[3]); + out[15] += 0.3061862178478971*(alphavpar[16]*fin[27]+alphavpar[8]*fin[22]+alphavpar[7]*fin[21]+alphavpar[6]*fin[20]+alphavpar[3]*fin[14]+alphavpar[2]*fin[13]+alphavpar[1]*fin[12]+alphavpar[0]*fin[5]); + out[17] += 0.3061862178478971*(alphavpar[3]*fin[16]+fin[3]*alphavpar[16]+alphavpar[7]*fin[8]+fin[7]*alphavpar[8]+alphavpar[0]*fin[6]+fin[0]*alphavpar[6]+alphavpar[1]*fin[2]+fin[1]*alphavpar[2]); + out[18] += 0.3061862178478971*(alphavpar[2]*fin[16]+fin[2]*alphavpar[16]+alphavpar[6]*fin[8]+fin[6]*alphavpar[8]+alphavpar[0]*fin[7]+fin[0]*alphavpar[7]+alphavpar[1]*fin[3]+fin[1]*alphavpar[3]); + out[19] += 0.3061862178478971*(alphavpar[1]*fin[16]+fin[1]*alphavpar[16]+alphavpar[0]*fin[8]+fin[0]*alphavpar[8]+alphavpar[6]*fin[7]+fin[6]*alphavpar[7]+alphavpar[2]*fin[3]+fin[2]*alphavpar[3]); + out[23] += 0.3061862178478971*(alphavpar[8]*fin[27]+alphavpar[16]*fin[22]+alphavpar[3]*fin[21]+alphavpar[2]*fin[20]+alphavpar[7]*fin[14]+alphavpar[6]*fin[13]+alphavpar[0]*fin[12]+alphavpar[1]*fin[5]); + out[24] += 0.3061862178478971*(alphavpar[7]*fin[27]+alphavpar[3]*fin[22]+alphavpar[16]*fin[21]+alphavpar[1]*fin[20]+alphavpar[8]*fin[14]+alphavpar[0]*fin[13]+alphavpar[6]*fin[12]+alphavpar[2]*fin[5]); + out[25] += 0.3061862178478971*(alphavpar[6]*fin[27]+alphavpar[2]*fin[22]+alphavpar[1]*fin[21]+alphavpar[16]*fin[20]+alphavpar[0]*fin[14]+alphavpar[8]*fin[13]+alphavpar[7]*fin[12]+alphavpar[3]*fin[5]); + out[26] += 0.3061862178478971*(alphavpar[0]*fin[16]+fin[0]*alphavpar[16]+alphavpar[1]*fin[8]+fin[1]*alphavpar[8]+alphavpar[2]*fin[7]+fin[2]*alphavpar[7]+alphavpar[3]*fin[6]+fin[3]*alphavpar[6]); + out[28] += 0.3061862178478971*(alphavpar[3]*fin[27]+alphavpar[7]*fin[22]+alphavpar[8]*fin[21]+alphavpar[0]*fin[20]+fin[14]*alphavpar[16]+alphavpar[1]*fin[13]+alphavpar[2]*fin[12]+fin[5]*alphavpar[6]); + out[29] += 0.3061862178478971*(alphavpar[2]*fin[27]+alphavpar[6]*fin[22]+alphavpar[0]*fin[21]+alphavpar[8]*fin[20]+fin[13]*alphavpar[16]+alphavpar[1]*fin[14]+alphavpar[3]*fin[12]+fin[5]*alphavpar[7]); + out[30] += 0.3061862178478971*(alphavpar[1]*fin[27]+alphavpar[0]*fin[22]+alphavpar[6]*fin[21]+alphavpar[7]*fin[20]+fin[12]*alphavpar[16]+alphavpar[2]*fin[14]+alphavpar[3]*fin[13]+fin[5]*alphavpar[8]); + out[31] += 0.3061862178478971*(alphavpar[0]*fin[27]+alphavpar[1]*fin[22]+alphavpar[2]*fin[21]+alphavpar[3]*fin[20]+fin[5]*alphavpar[16]+alphavpar[6]*fin[14]+alphavpar[7]*fin[13]+alphavpar[8]*fin[12]); + out[32] += 0.6846531968814573*(alphavpar[16]*fin[26]+alphavpar[8]*fin[19]+alphavpar[7]*fin[18]+alphavpar[6]*fin[17]+alphavpar[3]*fin[11]+alphavpar[2]*fin[10]+alphavpar[1]*fin[9]+alphavpar[0]*fin[4]); + out[33] += 0.6846531968814574*(alphavpar[8]*fin[26]+alphavpar[16]*fin[19]+alphavpar[3]*fin[18]+alphavpar[2]*fin[17]+alphavpar[7]*fin[11]+alphavpar[6]*fin[10]+alphavpar[0]*fin[9]+alphavpar[1]*fin[4]); + out[34] += 0.6846531968814574*(alphavpar[7]*fin[26]+alphavpar[3]*fin[19]+alphavpar[16]*fin[18]+alphavpar[1]*fin[17]+alphavpar[8]*fin[11]+alphavpar[0]*fin[10]+alphavpar[6]*fin[9]+alphavpar[2]*fin[4]); + out[35] += 0.6846531968814574*(alphavpar[6]*fin[26]+alphavpar[2]*fin[19]+alphavpar[1]*fin[18]+alphavpar[16]*fin[17]+alphavpar[0]*fin[11]+alphavpar[8]*fin[10]+alphavpar[7]*fin[9]+alphavpar[3]*fin[4]); + out[36] += 0.6846531968814574*(alphavpar[16]*fin[31]+alphavpar[8]*fin[30]+alphavpar[7]*fin[29]+alphavpar[6]*fin[28]+alphavpar[3]*fin[25]+alphavpar[2]*fin[24]+alphavpar[1]*fin[23]+alphavpar[0]*fin[15]); + out[37] += 0.6846531968814573*(alphavpar[3]*fin[26]+alphavpar[7]*fin[19]+alphavpar[8]*fin[18]+alphavpar[0]*fin[17]+fin[11]*alphavpar[16]+alphavpar[1]*fin[10]+alphavpar[2]*fin[9]+fin[4]*alphavpar[6]); + out[38] += 0.6846531968814573*(alphavpar[2]*fin[26]+alphavpar[6]*fin[19]+alphavpar[0]*fin[18]+alphavpar[8]*fin[17]+fin[10]*alphavpar[16]+alphavpar[1]*fin[11]+alphavpar[3]*fin[9]+fin[4]*alphavpar[7]); + out[39] += 0.6846531968814573*(alphavpar[1]*fin[26]+alphavpar[0]*fin[19]+alphavpar[6]*fin[18]+alphavpar[7]*fin[17]+fin[9]*alphavpar[16]+alphavpar[2]*fin[11]+alphavpar[3]*fin[10]+fin[4]*alphavpar[8]); + out[40] += 0.6846531968814573*(alphavpar[8]*fin[31]+alphavpar[16]*fin[30]+alphavpar[3]*fin[29]+alphavpar[2]*fin[28]+alphavpar[7]*fin[25]+alphavpar[6]*fin[24]+alphavpar[0]*fin[23]+alphavpar[1]*fin[15]); + out[41] += 0.6846531968814573*(alphavpar[7]*fin[31]+alphavpar[3]*fin[30]+alphavpar[16]*fin[29]+alphavpar[1]*fin[28]+alphavpar[8]*fin[25]+alphavpar[0]*fin[24]+alphavpar[6]*fin[23]+alphavpar[2]*fin[15]); + out[42] += 0.6846531968814573*(alphavpar[6]*fin[31]+alphavpar[2]*fin[30]+alphavpar[1]*fin[29]+alphavpar[16]*fin[28]+alphavpar[0]*fin[25]+alphavpar[8]*fin[24]+alphavpar[7]*fin[23]+alphavpar[3]*fin[15]); + out[43] += 0.6846531968814574*(alphavpar[0]*fin[26]+alphavpar[1]*fin[19]+alphavpar[2]*fin[18]+alphavpar[3]*fin[17]+fin[4]*alphavpar[16]+alphavpar[6]*fin[11]+alphavpar[7]*fin[10]+alphavpar[8]*fin[9]); + out[44] += 0.6846531968814574*(alphavpar[3]*fin[31]+alphavpar[7]*fin[30]+alphavpar[8]*fin[29]+alphavpar[0]*fin[28]+alphavpar[16]*fin[25]+alphavpar[1]*fin[24]+alphavpar[2]*fin[23]+alphavpar[6]*fin[15]); + out[45] += 0.6846531968814574*(alphavpar[2]*fin[31]+alphavpar[6]*fin[30]+alphavpar[0]*fin[29]+alphavpar[8]*fin[28]+alphavpar[1]*fin[25]+alphavpar[16]*fin[24]+alphavpar[3]*fin[23]+alphavpar[7]*fin[15]); + out[46] += 0.6846531968814574*(alphavpar[1]*fin[31]+alphavpar[0]*fin[30]+alphavpar[6]*fin[29]+alphavpar[7]*fin[28]+alphavpar[2]*fin[25]+alphavpar[3]*fin[24]+alphavpar[16]*fin[23]+alphavpar[8]*fin[15]); + out[47] += 0.6846531968814573*(alphavpar[0]*fin[31]+alphavpar[1]*fin[30]+alphavpar[2]*fin[29]+alphavpar[3]*fin[28]+alphavpar[6]*fin[25]+alphavpar[7]*fin[24]+alphavpar[8]*fin[23]+fin[15]*alphavpar[16]); + + return 0.; +} diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_no_by_vol_2x2v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_no_by_vol_2x2v_ser_p1.c index 58845cb3d4..a7f6cd3f9e 100644 --- a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_no_by_vol_2x2v_ser_p1.c +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_no_by_vol_2x2v_ser_p1.c @@ -22,13 +22,13 @@ GKYL_CU_DH double dg_gyrokinetic_no_by_vol_2x2v_ser_p1(const double *w, const do double rdvpar2Sq = rdvpar2*rdvpar2; double dvparSq = dxv[2]*dxv[2]; - const double *bioverJB_x = &bioverJB[0]; - const double *bioverJB_y = &bioverJB[4]; - const double *bioverJB_z = &bioverJB[8]; + const double *bioverJB_1 = &bioverJB[0]; + const double *bioverJB_2 = &bioverJB[4]; + const double *bioverJB_3 = &bioverJB[8]; - const double *dualcurlbhatoverB_x = &dualcurlbhatoverB[0]; - const double *dualcurlbhatoverB_y = &dualcurlbhatoverB[4]; - const double *dualcurlbhatoverB_z = &dualcurlbhatoverB[8]; + const double *dualcurlbhatoverB_1 = &dualcurlbhatoverB[0]; + const double *dualcurlbhatoverB_2 = &dualcurlbhatoverB[4]; + const double *dualcurlbhatoverB_3 = &dualcurlbhatoverB[8]; double hamil[24] = {0.}; hamil[0] = 2.0*phi[0]*q_+1.4142135623730951*(vmapSq[0]*m_+bmag[0]*vmap[2]); diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_no_by_vol_3x2v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_no_by_vol_3x2v_ser_p1.c index 759613f79d..534609df37 100644 --- a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_no_by_vol_3x2v_ser_p1.c +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_no_by_vol_3x2v_ser_p1.c @@ -23,13 +23,13 @@ GKYL_CU_DH double dg_gyrokinetic_no_by_vol_3x2v_ser_p1(const double *w, const do double rdvpar2Sq = rdvpar2*rdvpar2; double dvparSq = dxv[3]*dxv[3]; - const double *bioverJB_x = &bioverJB[0]; - const double *bioverJB_y = &bioverJB[8]; - const double *bioverJB_z = &bioverJB[16]; + const double *bioverJB_1 = &bioverJB[0]; + const double *bioverJB_2 = &bioverJB[8]; + const double *bioverJB_3 = &bioverJB[16]; - const double *dualcurlbhatoverB_x = &dualcurlbhatoverB[0]; - const double *dualcurlbhatoverB_y = &dualcurlbhatoverB[8]; - const double *dualcurlbhatoverB_z = &dualcurlbhatoverB[16]; + const double *dualcurlbhatoverB_1 = &dualcurlbhatoverB[0]; + const double *dualcurlbhatoverB_2 = &dualcurlbhatoverB[8]; + const double *dualcurlbhatoverB_3 = &dualcurlbhatoverB[16]; double hamil[48] = {0.}; hamil[0] = 2.0*(phi[0]*q_+vmapSq[0]*m_)+1.4142135623730951*bmag[0]*vmap[2]; diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_1x1v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_1x1v_ser_p1.c index bc8b9fcdef..584dd57402 100644 --- a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_1x1v_ser_p1.c +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_1x1v_ser_p1.c @@ -20,13 +20,13 @@ GKYL_CU_DH double dg_gyrokinetic_vol_1x1v_ser_p1(const double *w, const double * double rdvpar2Sq = rdvpar2*rdvpar2; double dvparSq = dxv[1]*dxv[1]; - const double *bioverJB_x = &bioverJB[0]; - const double *bioverJB_y = &bioverJB[2]; - const double *bioverJB_z = &bioverJB[4]; + const double *bioverJB_1 = &bioverJB[0]; + const double *bioverJB_2 = &bioverJB[2]; + const double *bioverJB_3 = &bioverJB[4]; - const double *dualcurlbhatoverB_x = &dualcurlbhatoverB[0]; - const double *dualcurlbhatoverB_y = &dualcurlbhatoverB[2]; - const double *dualcurlbhatoverB_z = &dualcurlbhatoverB[4]; + const double *dualcurlbhatoverB_1 = &dualcurlbhatoverB[0]; + const double *dualcurlbhatoverB_2 = &dualcurlbhatoverB[2]; + const double *dualcurlbhatoverB_3 = &dualcurlbhatoverB[4]; double hamil[6] = {0.}; hamil[0] = 1.4142135623730951*phi[0]*q_+0.7071067811865475*vmapSq[0]*m_; @@ -41,12 +41,12 @@ GKYL_CU_DH double dg_gyrokinetic_vol_1x1v_ser_p1(const double *w, const double * hamil2[1] = hamil[4]*hamil[4]; double alphax[6] = {0.}; - alphax[0] = (rdx2*((3.5355339059327373*dualcurlbhatoverB_z[0]*hamil2[1])/vmap2+(0.7071067811865475*dualcurlbhatoverB_z[0]*hamil2[0])/vmap2))/(m_*q_)+(rtg33inv[0]*vmap[1]*hamil[2]*rdx2)/(m_*vmap2); - alphax[1] = (rdx2*((3.5355339059327373*dualcurlbhatoverB_z[1]*hamil2[1])/vmap2+(0.7071067811865475*hamil2[0]*dualcurlbhatoverB_z[1])/vmap2))/(m_*q_)+(rtg33inv[1]*vmap[1]*hamil[2]*rdx2)/(m_*vmap2); - alphax[2] = (3.1622776601683795*dualcurlbhatoverB_z[0]*hamil[2]*hamil[4]*rdx2)/(m_*q_*vmap2)+(2.23606797749979*rtg33inv[0]*vmap[1]*hamil[4]*rdx2)/(m_*vmap2); - alphax[3] = (3.1622776601683795*dualcurlbhatoverB_z[1]*hamil[2]*hamil[4]*rdx2)/(m_*q_*vmap2)+(2.23606797749979*rtg33inv[1]*vmap[1]*hamil[4]*rdx2)/(m_*vmap2); - alphax[4] = (3.1622776601683795*dualcurlbhatoverB_z[0]*hamil2[1]*rdx2)/(m_*q_*vmap2); - alphax[5] = (3.16227766016838*dualcurlbhatoverB_z[1]*hamil2[1]*rdx2)/(m_*q_*vmap2); + alphax[0] = (rdx2*((3.5355339059327373*dualcurlbhatoverB_3[0]*hamil2[1])/vmap2+(0.7071067811865475*dualcurlbhatoverB_3[0]*hamil2[0])/vmap2))/(m_*q_)+(rtg33inv[0]*vmap[1]*hamil[2]*rdx2)/(m_*vmap2); + alphax[1] = (rdx2*((3.5355339059327373*dualcurlbhatoverB_3[1]*hamil2[1])/vmap2+(0.7071067811865475*hamil2[0]*dualcurlbhatoverB_3[1])/vmap2))/(m_*q_)+(rtg33inv[1]*vmap[1]*hamil[2]*rdx2)/(m_*vmap2); + alphax[2] = (3.1622776601683795*dualcurlbhatoverB_3[0]*hamil[2]*hamil[4]*rdx2)/(m_*q_*vmap2)+(2.23606797749979*rtg33inv[0]*vmap[1]*hamil[4]*rdx2)/(m_*vmap2); + alphax[3] = (3.1622776601683795*dualcurlbhatoverB_3[1]*hamil[2]*hamil[4]*rdx2)/(m_*q_*vmap2)+(2.23606797749979*rtg33inv[1]*vmap[1]*hamil[4]*rdx2)/(m_*vmap2); + alphax[4] = (3.1622776601683795*dualcurlbhatoverB_3[0]*hamil2[1]*rdx2)/(m_*q_*vmap2); + alphax[5] = (3.16227766016838*dualcurlbhatoverB_3[1]*hamil2[1]*rdx2)/(m_*q_*vmap2); out[1] += 0.8660254037844386*(alphax[5]*fin[5]+alphax[4]*fin[4]+alphax[3]*fin[3]+alphax[2]*fin[2]+alphax[1]*fin[1]+alphax[0]*fin[0]); @@ -54,10 +54,10 @@ GKYL_CU_DH double dg_gyrokinetic_vol_1x1v_ser_p1(const double *w, const double * out[5] += 0.5532833351724881*alphax[5]*fin[5]+0.8660254037844386*(alphax[1]*fin[5]+fin[1]*alphax[5])+0.5532833351724881*alphax[4]*fin[4]+0.8660254037844387*(alphax[0]*fin[4]+fin[0]*alphax[4])+0.7745966692414834*(alphax[3]*fin[3]+alphax[2]*fin[2]); double alphavpar[6] = {0.}; - alphavpar[0] = -((0.7071067811865475*dualcurlbhatoverB_z[0]*hamil[1]*hamil[2]*rdx2)/(m_*q_*vmap2))-(1.0*rtg33inv[0]*hamil[1]*vmap[1]*rdx2)/(m_*vmap2); - alphavpar[1] = -((0.7071067811865475*dualcurlbhatoverB_z[1]*hamil[1]*hamil[2]*rdx2)/(m_*q_*vmap2))-(1.0*hamil[1]*rtg33inv[1]*vmap[1]*rdx2)/(m_*vmap2); - alphavpar[2] = -((1.5811388300841895*dualcurlbhatoverB_z[0]*hamil[1]*hamil[4]*rdx2)/(m_*q_*vmap2)); - alphavpar[3] = -((1.5811388300841895*dualcurlbhatoverB_z[1]*hamil[1]*hamil[4]*rdx2)/(m_*q_*vmap2)); + alphavpar[0] = -((0.7071067811865475*dualcurlbhatoverB_3[0]*hamil[1]*hamil[2]*rdx2)/(m_*q_*vmap2))-(1.0*rtg33inv[0]*hamil[1]*vmap[1]*rdx2)/(m_*vmap2); + alphavpar[1] = -((0.7071067811865475*dualcurlbhatoverB_3[1]*hamil[1]*hamil[2]*rdx2)/(m_*q_*vmap2))-(1.0*hamil[1]*rtg33inv[1]*vmap[1]*rdx2)/(m_*vmap2); + alphavpar[2] = -((1.5811388300841895*dualcurlbhatoverB_3[0]*hamil[1]*hamil[4]*rdx2)/(m_*q_*vmap2)); + alphavpar[3] = -((1.5811388300841895*dualcurlbhatoverB_3[1]*hamil[1]*hamil[4]*rdx2)/(m_*q_*vmap2)); out[2] += 0.8660254037844386*(alphavpar[3]*fin[3]+alphavpar[2]*fin[2]+alphavpar[1]*fin[1]+alphavpar[0]*fin[0]); diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_1x2v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_1x2v_ser_p1.c index d1a6d34223..e8c0bb028d 100644 --- a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_1x2v_ser_p1.c +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_1x2v_ser_p1.c @@ -21,13 +21,13 @@ GKYL_CU_DH double dg_gyrokinetic_vol_1x2v_ser_p1(const double *w, const double * double rdvpar2Sq = rdvpar2*rdvpar2; double dvparSq = dxv[1]*dxv[1]; - const double *bioverJB_x = &bioverJB[0]; - const double *bioverJB_y = &bioverJB[2]; - const double *bioverJB_z = &bioverJB[4]; + const double *bioverJB_1 = &bioverJB[0]; + const double *bioverJB_2 = &bioverJB[2]; + const double *bioverJB_3 = &bioverJB[4]; - const double *dualcurlbhatoverB_x = &dualcurlbhatoverB[0]; - const double *dualcurlbhatoverB_y = &dualcurlbhatoverB[2]; - const double *dualcurlbhatoverB_z = &dualcurlbhatoverB[4]; + const double *dualcurlbhatoverB_1 = &dualcurlbhatoverB[0]; + const double *dualcurlbhatoverB_2 = &dualcurlbhatoverB[2]; + const double *dualcurlbhatoverB_3 = &dualcurlbhatoverB[4]; double hamil[12] = {0.}; hamil[0] = 2.0*phi[0]*q_+vmapSq[0]*m_+1.4142135623730951*bmag[0]*vmap[2]; @@ -44,12 +44,12 @@ GKYL_CU_DH double dg_gyrokinetic_vol_1x2v_ser_p1(const double *w, const double * hamil2[1] = hamil[8]*hamil[8]; double alphax[12] = {0.}; - alphax[0] = (rdx2*((2.5*dualcurlbhatoverB_z[0]*hamil2[1])/vmap2+(0.5*dualcurlbhatoverB_z[0]*hamil2[0])/vmap2))/(m_*q_)+(rtg33inv[0]*vmap[1]*hamil[2]*rdx2)/(m_*vmap2); - alphax[1] = (rdx2*((2.5*dualcurlbhatoverB_z[1]*hamil2[1])/vmap2+(0.5*hamil2[0]*dualcurlbhatoverB_z[1])/vmap2))/(m_*q_)+(rtg33inv[1]*vmap[1]*hamil[2]*rdx2)/(m_*vmap2); - alphax[2] = (2.23606797749979*dualcurlbhatoverB_z[0]*hamil[2]*hamil[8]*rdx2)/(m_*q_*vmap2)+(2.23606797749979*rtg33inv[0]*vmap[1]*hamil[8]*rdx2)/(m_*vmap2); - alphax[4] = (2.23606797749979*dualcurlbhatoverB_z[1]*hamil[2]*hamil[8]*rdx2)/(m_*q_*vmap2)+(2.23606797749979*rtg33inv[1]*vmap[1]*hamil[8]*rdx2)/(m_*vmap2); - alphax[8] = (2.23606797749979*dualcurlbhatoverB_z[0]*hamil2[1]*rdx2)/(m_*q_*vmap2); - alphax[9] = (2.2360679774997902*dualcurlbhatoverB_z[1]*hamil2[1]*rdx2)/(m_*q_*vmap2); + alphax[0] = (rdx2*((2.5*dualcurlbhatoverB_3[0]*hamil2[1])/vmap2+(0.5*dualcurlbhatoverB_3[0]*hamil2[0])/vmap2))/(m_*q_)+(rtg33inv[0]*vmap[1]*hamil[2]*rdx2)/(m_*vmap2); + alphax[1] = (rdx2*((2.5*dualcurlbhatoverB_3[1]*hamil2[1])/vmap2+(0.5*hamil2[0]*dualcurlbhatoverB_3[1])/vmap2))/(m_*q_)+(rtg33inv[1]*vmap[1]*hamil[2]*rdx2)/(m_*vmap2); + alphax[2] = (2.23606797749979*dualcurlbhatoverB_3[0]*hamil[2]*hamil[8]*rdx2)/(m_*q_*vmap2)+(2.23606797749979*rtg33inv[0]*vmap[1]*hamil[8]*rdx2)/(m_*vmap2); + alphax[4] = (2.23606797749979*dualcurlbhatoverB_3[1]*hamil[2]*hamil[8]*rdx2)/(m_*q_*vmap2)+(2.23606797749979*rtg33inv[1]*vmap[1]*hamil[8]*rdx2)/(m_*vmap2); + alphax[8] = (2.23606797749979*dualcurlbhatoverB_3[0]*hamil2[1]*rdx2)/(m_*q_*vmap2); + alphax[9] = (2.2360679774997902*dualcurlbhatoverB_3[1]*hamil2[1]*rdx2)/(m_*q_*vmap2); out[1] += 0.6123724356957944*(alphax[9]*fin[9]+alphax[8]*fin[8]+alphax[4]*fin[4]+alphax[2]*fin[2]+alphax[1]*fin[1]+alphax[0]*fin[0]); @@ -60,14 +60,14 @@ GKYL_CU_DH double dg_gyrokinetic_vol_1x2v_ser_p1(const double *w, const double * out[11] += (0.39123039821797573*alphax[9]+0.6123724356957944*alphax[1])*fin[11]+0.39123039821797573*alphax[8]*fin[10]+0.6123724356957944*(alphax[0]*fin[10]+fin[5]*alphax[9]+fin[3]*alphax[8])+0.5477225575051661*(alphax[4]*fin[7]+alphax[2]*fin[6]); double alphavpar[12] = {0.}; - alphavpar[0] = -((0.5*dualcurlbhatoverB_z[0]*hamil[1]*hamil[2]*rdx2)/(m_*q_*vmap2))-(1.0*rtg33inv[0]*hamil[1]*vmap[1]*rdx2)/(m_*vmap2); - alphavpar[1] = -((0.5*dualcurlbhatoverB_z[1]*hamil[1]*hamil[2]*rdx2)/(m_*q_*vmap2))-(1.0*hamil[1]*rtg33inv[1]*vmap[1]*rdx2)/(m_*vmap2); - alphavpar[2] = -((1.118033988749895*dualcurlbhatoverB_z[0]*hamil[1]*hamil[8]*rdx2)/(m_*q_*vmap2)); - alphavpar[3] = -((0.5*dualcurlbhatoverB_z[0]*hamil[2]*hamil[5]*rdx2)/(m_*q_*vmap2))-(1.0*rtg33inv[0]*vmap[1]*hamil[5]*rdx2)/(m_*vmap2); - alphavpar[4] = -((1.118033988749895*dualcurlbhatoverB_z[1]*hamil[1]*hamil[8]*rdx2)/(m_*q_*vmap2)); - alphavpar[5] = -((0.5*dualcurlbhatoverB_z[1]*hamil[2]*hamil[5]*rdx2)/(m_*q_*vmap2))-(1.0*rtg33inv[1]*vmap[1]*hamil[5]*rdx2)/(m_*vmap2); - alphavpar[6] = -((1.118033988749895*dualcurlbhatoverB_z[0]*hamil[5]*hamil[8]*rdx2)/(m_*q_*vmap2)); - alphavpar[7] = -((1.118033988749895*dualcurlbhatoverB_z[1]*hamil[5]*hamil[8]*rdx2)/(m_*q_*vmap2)); + alphavpar[0] = -((0.5*dualcurlbhatoverB_3[0]*hamil[1]*hamil[2]*rdx2)/(m_*q_*vmap2))-(1.0*rtg33inv[0]*hamil[1]*vmap[1]*rdx2)/(m_*vmap2); + alphavpar[1] = -((0.5*dualcurlbhatoverB_3[1]*hamil[1]*hamil[2]*rdx2)/(m_*q_*vmap2))-(1.0*hamil[1]*rtg33inv[1]*vmap[1]*rdx2)/(m_*vmap2); + alphavpar[2] = -((1.118033988749895*dualcurlbhatoverB_3[0]*hamil[1]*hamil[8]*rdx2)/(m_*q_*vmap2)); + alphavpar[3] = -((0.5*dualcurlbhatoverB_3[0]*hamil[2]*hamil[5]*rdx2)/(m_*q_*vmap2))-(1.0*rtg33inv[0]*vmap[1]*hamil[5]*rdx2)/(m_*vmap2); + alphavpar[4] = -((1.118033988749895*dualcurlbhatoverB_3[1]*hamil[1]*hamil[8]*rdx2)/(m_*q_*vmap2)); + alphavpar[5] = -((0.5*dualcurlbhatoverB_3[1]*hamil[2]*hamil[5]*rdx2)/(m_*q_*vmap2))-(1.0*rtg33inv[1]*vmap[1]*hamil[5]*rdx2)/(m_*vmap2); + alphavpar[6] = -((1.118033988749895*dualcurlbhatoverB_3[0]*hamil[5]*hamil[8]*rdx2)/(m_*q_*vmap2)); + alphavpar[7] = -((1.118033988749895*dualcurlbhatoverB_3[1]*hamil[5]*hamil[8]*rdx2)/(m_*q_*vmap2)); out[2] += 0.6123724356957944*(alphavpar[7]*fin[7]+alphavpar[6]*fin[6]+alphavpar[5]*fin[5]+alphavpar[4]*fin[4]+alphavpar[3]*fin[3]+alphavpar[2]*fin[2]+alphavpar[1]*fin[1]+alphavpar[0]*fin[0]); diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_2x2v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_2x2v_ser_p1.c index ca50761939..96f313faa4 100644 --- a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_2x2v_ser_p1.c +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_2x2v_ser_p1.c @@ -22,13 +22,13 @@ GKYL_CU_DH double dg_gyrokinetic_vol_2x2v_ser_p1(const double *w, const double * double rdvpar2Sq = rdvpar2*rdvpar2; double dvparSq = dxv[2]*dxv[2]; - const double *bioverJB_x = &bioverJB[0]; - const double *bioverJB_y = &bioverJB[4]; - const double *bioverJB_z = &bioverJB[8]; + const double *bioverJB_1 = &bioverJB[0]; + const double *bioverJB_2 = &bioverJB[4]; + const double *bioverJB_3 = &bioverJB[8]; - const double *dualcurlbhatoverB_x = &dualcurlbhatoverB[0]; - const double *dualcurlbhatoverB_y = &dualcurlbhatoverB[4]; - const double *dualcurlbhatoverB_z = &dualcurlbhatoverB[8]; + const double *dualcurlbhatoverB_1 = &dualcurlbhatoverB[0]; + const double *dualcurlbhatoverB_2 = &dualcurlbhatoverB[4]; + const double *dualcurlbhatoverB_3 = &dualcurlbhatoverB[8]; double hamil[24] = {0.}; hamil[0] = 2.0*phi[0]*q_+1.4142135623730951*(vmapSq[0]*m_+bmag[0]*vmap[2]); @@ -49,22 +49,22 @@ GKYL_CU_DH double dg_gyrokinetic_vol_2x2v_ser_p1(const double *w, const double * hamil2[1] = hamil[16]*hamil[16]; double alphax[24] = {0.}; - alphax[0] = (rdx2*((1.25*dualcurlbhatoverB_x[0]*hamil2[1])/vmap2+(0.25*dualcurlbhatoverB_x[0]*hamil2[0])/vmap2))/(m_*q_)+((0.8660254037844386*bioverJB_y[1]*hamil[5]+0.8660254037844386*bioverJB_y[0]*hamil[2])*rdx2*rdz2)/q_; - alphax[1] = (rdx2*((1.25*dualcurlbhatoverB_x[1]*hamil2[1])/vmap2+(0.25*hamil2[0]*dualcurlbhatoverB_x[1])/vmap2))/(m_*q_)+((0.8660254037844386*bioverJB_y[0]*hamil[5]+0.8660254037844386*bioverJB_y[1]*hamil[2])*rdx2*rdz2)/q_; - alphax[2] = (rdx2*((1.25*hamil2[1]*dualcurlbhatoverB_x[2])/vmap2+(0.25*hamil2[0]*dualcurlbhatoverB_x[2])/vmap2))/(m_*q_)+((0.8660254037844386*bioverJB_y[3]*hamil[5]+0.8660254037844386*bioverJB_y[2]*hamil[2])*rdx2*rdz2)/q_; - alphax[3] = (1.118033988749895*dualcurlbhatoverB_x[0]*hamil[3]*hamil[16]*rdx2)/(m_*q_*vmap2); - alphax[4] = ((0.8660254037844386*bioverJB_y[1]*hamil[12]+0.8660254037844386*bioverJB_y[0]*hamil[9])*rdx2*rdz2)/q_; - alphax[5] = (rdx2*((1.25*hamil2[1]*dualcurlbhatoverB_x[3])/vmap2+(0.25*hamil2[0]*dualcurlbhatoverB_x[3])/vmap2))/(m_*q_)+((0.8660254037844386*bioverJB_y[2]*hamil[5]+0.8660254037844386*hamil[2]*bioverJB_y[3])*rdx2*rdz2)/q_; - alphax[6] = (1.118033988749895*dualcurlbhatoverB_x[1]*hamil[3]*hamil[16]*rdx2)/(m_*q_*vmap2); - alphax[7] = (1.118033988749895*dualcurlbhatoverB_x[2]*hamil[3]*hamil[16]*rdx2)/(m_*q_*vmap2); - alphax[8] = ((0.8660254037844386*bioverJB_y[0]*hamil[12]+0.8660254037844386*bioverJB_y[1]*hamil[9])*rdx2*rdz2)/q_; - alphax[9] = ((0.8660254037844386*bioverJB_y[3]*hamil[12]+0.8660254037844386*bioverJB_y[2]*hamil[9])*rdx2*rdz2)/q_; - alphax[11] = (1.118033988749895*dualcurlbhatoverB_x[3]*hamil[3]*hamil[16]*rdx2)/(m_*q_*vmap2); - alphax[12] = ((0.8660254037844386*bioverJB_y[2]*hamil[12]+0.8660254037844386*bioverJB_y[3]*hamil[9])*rdx2*rdz2)/q_; - alphax[16] = (1.118033988749895*dualcurlbhatoverB_x[0]*hamil2[1]*rdx2)/(m_*q_*vmap2); - alphax[17] = (1.1180339887498951*dualcurlbhatoverB_x[1]*hamil2[1]*rdx2)/(m_*q_*vmap2); - alphax[18] = (1.1180339887498951*hamil2[1]*dualcurlbhatoverB_x[2]*rdx2)/(m_*q_*vmap2); - alphax[20] = (1.118033988749895*hamil2[1]*dualcurlbhatoverB_x[3]*rdx2)/(m_*q_*vmap2); + alphax[0] = (rdx2*((1.25*dualcurlbhatoverB_1[0]*hamil2[1])/vmap2+(0.25*dualcurlbhatoverB_1[0]*hamil2[0])/vmap2))/(m_*q_)+((0.8660254037844386*bioverJB_2[1]*hamil[5]+0.8660254037844386*bioverJB_2[0]*hamil[2])*rdx2*rdz2)/q_; + alphax[1] = (rdx2*((1.25*dualcurlbhatoverB_1[1]*hamil2[1])/vmap2+(0.25*hamil2[0]*dualcurlbhatoverB_1[1])/vmap2))/(m_*q_)+((0.8660254037844386*bioverJB_2[0]*hamil[5]+0.8660254037844386*bioverJB_2[1]*hamil[2])*rdx2*rdz2)/q_; + alphax[2] = (rdx2*((1.25*hamil2[1]*dualcurlbhatoverB_1[2])/vmap2+(0.25*hamil2[0]*dualcurlbhatoverB_1[2])/vmap2))/(m_*q_)+((0.8660254037844386*bioverJB_2[3]*hamil[5]+0.8660254037844386*bioverJB_2[2]*hamil[2])*rdx2*rdz2)/q_; + alphax[3] = (1.118033988749895*dualcurlbhatoverB_1[0]*hamil[3]*hamil[16]*rdx2)/(m_*q_*vmap2); + alphax[4] = ((0.8660254037844386*bioverJB_2[1]*hamil[12]+0.8660254037844386*bioverJB_2[0]*hamil[9])*rdx2*rdz2)/q_; + alphax[5] = (rdx2*((1.25*hamil2[1]*dualcurlbhatoverB_1[3])/vmap2+(0.25*hamil2[0]*dualcurlbhatoverB_1[3])/vmap2))/(m_*q_)+((0.8660254037844386*bioverJB_2[2]*hamil[5]+0.8660254037844386*hamil[2]*bioverJB_2[3])*rdx2*rdz2)/q_; + alphax[6] = (1.118033988749895*dualcurlbhatoverB_1[1]*hamil[3]*hamil[16]*rdx2)/(m_*q_*vmap2); + alphax[7] = (1.118033988749895*dualcurlbhatoverB_1[2]*hamil[3]*hamil[16]*rdx2)/(m_*q_*vmap2); + alphax[8] = ((0.8660254037844386*bioverJB_2[0]*hamil[12]+0.8660254037844386*bioverJB_2[1]*hamil[9])*rdx2*rdz2)/q_; + alphax[9] = ((0.8660254037844386*bioverJB_2[3]*hamil[12]+0.8660254037844386*bioverJB_2[2]*hamil[9])*rdx2*rdz2)/q_; + alphax[11] = (1.118033988749895*dualcurlbhatoverB_1[3]*hamil[3]*hamil[16]*rdx2)/(m_*q_*vmap2); + alphax[12] = ((0.8660254037844386*bioverJB_2[2]*hamil[12]+0.8660254037844386*bioverJB_2[3]*hamil[9])*rdx2*rdz2)/q_; + alphax[16] = (1.118033988749895*dualcurlbhatoverB_1[0]*hamil2[1]*rdx2)/(m_*q_*vmap2); + alphax[17] = (1.1180339887498951*dualcurlbhatoverB_1[1]*hamil2[1]*rdx2)/(m_*q_*vmap2); + alphax[18] = (1.1180339887498951*hamil2[1]*dualcurlbhatoverB_1[2]*rdx2)/(m_*q_*vmap2); + alphax[20] = (1.118033988749895*hamil2[1]*dualcurlbhatoverB_1[3]*rdx2)/(m_*q_*vmap2); out[1] += 0.4330127018922193*(alphax[20]*fin[20]+alphax[18]*fin[18]+alphax[17]*fin[17]+alphax[16]*fin[16]+alphax[12]*fin[12]+alphax[11]*fin[11]+alphax[9]*fin[9]+alphax[8]*fin[8]+alphax[7]*fin[7]+alphax[6]*fin[6]+alphax[5]*fin[5]+alphax[4]*fin[4]+alphax[3]*fin[3]+alphax[2]*fin[2]+alphax[1]*fin[1]+alphax[0]*fin[0]); @@ -81,22 +81,22 @@ GKYL_CU_DH double dg_gyrokinetic_vol_2x2v_ser_p1(const double *w, const double * out[23] += (0.27664166758624403*alphax[17]+0.4330127018922193*alphax[1])*fin[23]+(0.27664166758624403*alphax[16]+0.43301270189221935*alphax[0])*fin[22]+0.27664166758624403*alphax[20]*fin[21]+0.43301270189221935*(alphax[5]*fin[21]+alphax[8]*fin[20]+fin[8]*alphax[20])+0.27664166758624403*alphax[18]*fin[19]+0.4330127018922193*(alphax[2]*fin[19]+alphax[4]*fin[18]+fin[4]*alphax[18]+alphax[12]*fin[17]+fin[12]*alphax[17])+0.43301270189221935*(alphax[9]*fin[16]+fin[9]*alphax[16])+0.3872983346207417*(alphax[6]*fin[15]+alphax[3]*fin[14]+alphax[11]*fin[13]+alphax[7]*fin[10]); double alphaz[24] = {0.}; - alphaz[0] = (rdz2*((1.25*dualcurlbhatoverB_z[0]*hamil2[1])/vmap2+(0.25*dualcurlbhatoverB_z[0]*hamil2[0])/vmap2))/(m_*q_)+(0.7071067811865475*rtg33inv[0]*vmap[1]*hamil[3]*rdz2)/(m_*vmap2)+((-(0.8660254037844386*bioverJB_y[2]*hamil[5])-0.8660254037844386*bioverJB_y[0]*hamil[1])*rdx2*rdz2)/q_; - alphaz[1] = (rdz2*((1.25*dualcurlbhatoverB_z[1]*hamil2[1])/vmap2+(0.25*hamil2[0]*dualcurlbhatoverB_z[1])/vmap2))/(m_*q_)+(0.7071067811865475*rtg33inv[1]*vmap[1]*hamil[3]*rdz2)/(m_*vmap2)+((-(0.8660254037844386*bioverJB_y[3]*hamil[5])-0.8660254037844386*bioverJB_y[1]*hamil[1])*rdx2*rdz2)/q_; - alphaz[2] = (rdz2*((1.25*hamil2[1]*dualcurlbhatoverB_z[2])/vmap2+(0.25*hamil2[0]*dualcurlbhatoverB_z[2])/vmap2))/(m_*q_)+(0.7071067811865475*vmap[1]*rtg33inv[2]*hamil[3]*rdz2)/(m_*vmap2)+((-(0.8660254037844386*bioverJB_y[0]*hamil[5])-0.8660254037844386*hamil[1]*bioverJB_y[2])*rdx2*rdz2)/q_; - alphaz[3] = (1.118033988749895*dualcurlbhatoverB_z[0]*hamil[3]*hamil[16]*rdz2)/(m_*q_*vmap2)+(1.5811388300841895*rtg33inv[0]*vmap[1]*hamil[16]*rdz2)/(m_*vmap2); - alphaz[4] = ((-(0.8660254037844386*bioverJB_y[2]*hamil[12])-0.8660254037844386*bioverJB_y[0]*hamil[8])*rdx2*rdz2)/q_; - alphaz[5] = (rdz2*((1.25*hamil2[1]*dualcurlbhatoverB_z[3])/vmap2+(0.25*hamil2[0]*dualcurlbhatoverB_z[3])/vmap2))/(m_*q_)+(0.7071067811865475*vmap[1]*hamil[3]*rtg33inv[3]*rdz2)/(m_*vmap2)+((-(0.8660254037844386*bioverJB_y[1]*hamil[5])-0.8660254037844386*hamil[1]*bioverJB_y[3])*rdx2*rdz2)/q_; - alphaz[6] = (1.118033988749895*dualcurlbhatoverB_z[1]*hamil[3]*hamil[16]*rdz2)/(m_*q_*vmap2)+(1.5811388300841895*rtg33inv[1]*vmap[1]*hamil[16]*rdz2)/(m_*vmap2); - alphaz[7] = (1.118033988749895*dualcurlbhatoverB_z[2]*hamil[3]*hamil[16]*rdz2)/(m_*q_*vmap2)+(1.5811388300841895*vmap[1]*rtg33inv[2]*hamil[16]*rdz2)/(m_*vmap2); - alphaz[8] = ((-(0.8660254037844386*bioverJB_y[3]*hamil[12])-0.8660254037844386*bioverJB_y[1]*hamil[8])*rdx2*rdz2)/q_; - alphaz[9] = ((-(0.8660254037844386*bioverJB_y[0]*hamil[12])-0.8660254037844386*bioverJB_y[2]*hamil[8])*rdx2*rdz2)/q_; - alphaz[11] = (1.118033988749895*dualcurlbhatoverB_z[3]*hamil[3]*hamil[16]*rdz2)/(m_*q_*vmap2)+(1.5811388300841895*vmap[1]*rtg33inv[3]*hamil[16]*rdz2)/(m_*vmap2); - alphaz[12] = ((-(0.8660254037844386*bioverJB_y[1]*hamil[12])-0.8660254037844386*bioverJB_y[3]*hamil[8])*rdx2*rdz2)/q_; - alphaz[16] = (1.118033988749895*dualcurlbhatoverB_z[0]*hamil2[1]*rdz2)/(m_*q_*vmap2); - alphaz[17] = (1.1180339887498951*dualcurlbhatoverB_z[1]*hamil2[1]*rdz2)/(m_*q_*vmap2); - alphaz[18] = (1.1180339887498951*hamil2[1]*dualcurlbhatoverB_z[2]*rdz2)/(m_*q_*vmap2); - alphaz[20] = (1.118033988749895*hamil2[1]*dualcurlbhatoverB_z[3]*rdz2)/(m_*q_*vmap2); + alphaz[0] = (rdz2*((1.25*dualcurlbhatoverB_3[0]*hamil2[1])/vmap2+(0.25*dualcurlbhatoverB_3[0]*hamil2[0])/vmap2))/(m_*q_)+(0.7071067811865475*rtg33inv[0]*vmap[1]*hamil[3]*rdz2)/(m_*vmap2)+((-(0.8660254037844386*bioverJB_2[2]*hamil[5])-0.8660254037844386*bioverJB_2[0]*hamil[1])*rdx2*rdz2)/q_; + alphaz[1] = (rdz2*((1.25*dualcurlbhatoverB_3[1]*hamil2[1])/vmap2+(0.25*hamil2[0]*dualcurlbhatoverB_3[1])/vmap2))/(m_*q_)+(0.7071067811865475*rtg33inv[1]*vmap[1]*hamil[3]*rdz2)/(m_*vmap2)+((-(0.8660254037844386*bioverJB_2[3]*hamil[5])-0.8660254037844386*bioverJB_2[1]*hamil[1])*rdx2*rdz2)/q_; + alphaz[2] = (rdz2*((1.25*hamil2[1]*dualcurlbhatoverB_3[2])/vmap2+(0.25*hamil2[0]*dualcurlbhatoverB_3[2])/vmap2))/(m_*q_)+(0.7071067811865475*vmap[1]*rtg33inv[2]*hamil[3]*rdz2)/(m_*vmap2)+((-(0.8660254037844386*bioverJB_2[0]*hamil[5])-0.8660254037844386*hamil[1]*bioverJB_2[2])*rdx2*rdz2)/q_; + alphaz[3] = (1.118033988749895*dualcurlbhatoverB_3[0]*hamil[3]*hamil[16]*rdz2)/(m_*q_*vmap2)+(1.5811388300841895*rtg33inv[0]*vmap[1]*hamil[16]*rdz2)/(m_*vmap2); + alphaz[4] = ((-(0.8660254037844386*bioverJB_2[2]*hamil[12])-0.8660254037844386*bioverJB_2[0]*hamil[8])*rdx2*rdz2)/q_; + alphaz[5] = (rdz2*((1.25*hamil2[1]*dualcurlbhatoverB_3[3])/vmap2+(0.25*hamil2[0]*dualcurlbhatoverB_3[3])/vmap2))/(m_*q_)+(0.7071067811865475*vmap[1]*hamil[3]*rtg33inv[3]*rdz2)/(m_*vmap2)+((-(0.8660254037844386*bioverJB_2[1]*hamil[5])-0.8660254037844386*hamil[1]*bioverJB_2[3])*rdx2*rdz2)/q_; + alphaz[6] = (1.118033988749895*dualcurlbhatoverB_3[1]*hamil[3]*hamil[16]*rdz2)/(m_*q_*vmap2)+(1.5811388300841895*rtg33inv[1]*vmap[1]*hamil[16]*rdz2)/(m_*vmap2); + alphaz[7] = (1.118033988749895*dualcurlbhatoverB_3[2]*hamil[3]*hamil[16]*rdz2)/(m_*q_*vmap2)+(1.5811388300841895*vmap[1]*rtg33inv[2]*hamil[16]*rdz2)/(m_*vmap2); + alphaz[8] = ((-(0.8660254037844386*bioverJB_2[3]*hamil[12])-0.8660254037844386*bioverJB_2[1]*hamil[8])*rdx2*rdz2)/q_; + alphaz[9] = ((-(0.8660254037844386*bioverJB_2[0]*hamil[12])-0.8660254037844386*bioverJB_2[2]*hamil[8])*rdx2*rdz2)/q_; + alphaz[11] = (1.118033988749895*dualcurlbhatoverB_3[3]*hamil[3]*hamil[16]*rdz2)/(m_*q_*vmap2)+(1.5811388300841895*vmap[1]*rtg33inv[3]*hamil[16]*rdz2)/(m_*vmap2); + alphaz[12] = ((-(0.8660254037844386*bioverJB_2[1]*hamil[12])-0.8660254037844386*bioverJB_2[3]*hamil[8])*rdx2*rdz2)/q_; + alphaz[16] = (1.118033988749895*dualcurlbhatoverB_3[0]*hamil2[1]*rdz2)/(m_*q_*vmap2); + alphaz[17] = (1.1180339887498951*dualcurlbhatoverB_3[1]*hamil2[1]*rdz2)/(m_*q_*vmap2); + alphaz[18] = (1.1180339887498951*hamil2[1]*dualcurlbhatoverB_3[2]*rdz2)/(m_*q_*vmap2); + alphaz[20] = (1.118033988749895*hamil2[1]*dualcurlbhatoverB_3[3]*rdz2)/(m_*q_*vmap2); out[2] += 0.4330127018922193*(alphaz[20]*fin[20]+alphaz[18]*fin[18]+alphaz[17]*fin[17]+alphaz[16]*fin[16]+alphaz[12]*fin[12]+alphaz[11]*fin[11]+alphaz[9]*fin[9]+alphaz[8]*fin[8]+alphaz[7]*fin[7]+alphaz[6]*fin[6]+alphaz[5]*fin[5]+alphaz[4]*fin[4]+alphaz[3]*fin[3]+alphaz[2]*fin[2]+alphaz[1]*fin[1]+alphaz[0]*fin[0]); @@ -113,22 +113,22 @@ GKYL_CU_DH double dg_gyrokinetic_vol_2x2v_ser_p1(const double *w, const double * out[23] += (0.27664166758624403*alphaz[18]+0.4330127018922193*alphaz[2])*fin[23]+(0.27664166758624403*alphaz[20]+0.43301270189221935*alphaz[5])*fin[22]+0.27664166758624403*alphaz[16]*fin[21]+0.43301270189221935*(alphaz[0]*fin[21]+alphaz[9]*fin[20]+fin[9]*alphaz[20])+0.27664166758624403*alphaz[17]*fin[19]+0.4330127018922193*(alphaz[1]*fin[19]+alphaz[12]*fin[18]+fin[12]*alphaz[18]+alphaz[4]*fin[17]+fin[4]*alphaz[17])+0.43301270189221935*(alphaz[8]*fin[16]+fin[8]*alphaz[16])+0.3872983346207417*(alphaz[7]*fin[15]+alphaz[11]*fin[14]+alphaz[3]*fin[13]+alphaz[6]*fin[10]); double alphavpar[24] = {0.}; - alphavpar[0] = (rdx2*(-((0.25*dualcurlbhatoverB_x[2]*hamil[3]*hamil[5])/vmap2)-(0.25*dualcurlbhatoverB_x[0]*hamil[1]*hamil[3])/vmap2)+rdz2*(-((0.25*dualcurlbhatoverB_z[1]*hamil[3]*hamil[5])/vmap2)-(0.25*dualcurlbhatoverB_z[0]*hamil[2]*hamil[3])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[1]*hamil[5])/vmap2)-(0.7071067811865475*rtg33inv[0]*hamil[2])/vmap2))/m_; - alphavpar[1] = (rdx2*(-((0.25*dualcurlbhatoverB_x[3]*hamil[3]*hamil[5])/vmap2)-(0.25*dualcurlbhatoverB_x[1]*hamil[1]*hamil[3])/vmap2)+rdz2*(-((0.25*dualcurlbhatoverB_z[0]*hamil[3]*hamil[5])/vmap2)-(0.25*dualcurlbhatoverB_z[1]*hamil[2]*hamil[3])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[0]*hamil[5])/vmap2)-(0.7071067811865475*rtg33inv[1]*hamil[2])/vmap2))/m_; - alphavpar[2] = (rdz2*(-((0.25*dualcurlbhatoverB_z[3]*hamil[3]*hamil[5])/vmap2)-(0.25*dualcurlbhatoverB_z[2]*hamil[2]*hamil[3])/vmap2)+rdx2*(-((0.25*dualcurlbhatoverB_x[0]*hamil[3]*hamil[5])/vmap2)-(0.25*hamil[1]*dualcurlbhatoverB_x[2]*hamil[3])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[3]*hamil[5])/vmap2)-(0.7071067811865475*hamil[2]*rtg33inv[2])/vmap2))/m_; - alphavpar[3] = (rdx2*(-((0.5590169943749475*dualcurlbhatoverB_x[2]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_x[0]*hamil[1]*hamil[16])/vmap2)+rdz2*(-((0.5590169943749475*dualcurlbhatoverB_z[1]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_z[0]*hamil[2]*hamil[16])/vmap2))/(m_*q_); - alphavpar[4] = (rdx2*(-((0.25*dualcurlbhatoverB_x[2]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_x[0]*hamil[3]*hamil[8])/vmap2)+rdz2*(-((0.25*dualcurlbhatoverB_z[1]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_z[0]*hamil[3]*hamil[9])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[1]*hamil[12])/vmap2)-(0.7071067811865475*rtg33inv[0]*hamil[9])/vmap2))/m_; - alphavpar[5] = (rdz2*(-((0.25*dualcurlbhatoverB_z[2]*hamil[3]*hamil[5])/vmap2)-(0.25*hamil[2]*dualcurlbhatoverB_z[3]*hamil[3])/vmap2)+rdx2*(-((0.25*dualcurlbhatoverB_x[1]*hamil[3]*hamil[5])/vmap2)-(0.25*hamil[1]*dualcurlbhatoverB_x[3]*hamil[3])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[2]*hamil[5])/vmap2)-(0.7071067811865475*hamil[2]*rtg33inv[3])/vmap2))/m_; - alphavpar[6] = (rdx2*(-((0.5590169943749475*dualcurlbhatoverB_x[3]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_x[1]*hamil[1]*hamil[16])/vmap2)+rdz2*(-((0.5590169943749475*dualcurlbhatoverB_z[0]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_z[1]*hamil[2]*hamil[16])/vmap2))/(m_*q_); - alphavpar[7] = (rdz2*(-((0.5590169943749475*dualcurlbhatoverB_z[3]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_z[2]*hamil[2]*hamil[16])/vmap2)+rdx2*(-((0.5590169943749475*dualcurlbhatoverB_x[0]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*hamil[1]*dualcurlbhatoverB_x[2]*hamil[16])/vmap2))/(m_*q_); - alphavpar[8] = (rdx2*(-((0.25*dualcurlbhatoverB_x[3]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_x[1]*hamil[3]*hamil[8])/vmap2)+rdz2*(-((0.25*dualcurlbhatoverB_z[0]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_z[1]*hamil[3]*hamil[9])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[0]*hamil[12])/vmap2)-(0.7071067811865475*rtg33inv[1]*hamil[9])/vmap2))/m_; - alphavpar[9] = (rdz2*(-((0.25*dualcurlbhatoverB_z[3]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_z[2]*hamil[3]*hamil[9])/vmap2)+rdx2*(-((0.25*dualcurlbhatoverB_x[0]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_x[2]*hamil[3]*hamil[8])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[3]*hamil[12])/vmap2)-(0.7071067811865475*rtg33inv[2]*hamil[9])/vmap2))/m_; - alphavpar[10] = (rdx2*(-((0.5590169943749475*dualcurlbhatoverB_x[2]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_x[0]*hamil[8]*hamil[16])/vmap2)+rdz2*(-((0.5590169943749475*dualcurlbhatoverB_z[1]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_z[0]*hamil[9]*hamil[16])/vmap2))/(m_*q_); - alphavpar[11] = (rdz2*(-((0.5590169943749475*dualcurlbhatoverB_z[2]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*hamil[2]*dualcurlbhatoverB_z[3]*hamil[16])/vmap2)+rdx2*(-((0.5590169943749475*dualcurlbhatoverB_x[1]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*hamil[1]*dualcurlbhatoverB_x[3]*hamil[16])/vmap2))/(m_*q_); - alphavpar[12] = (rdz2*(-((0.25*dualcurlbhatoverB_z[2]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_z[3]*hamil[3]*hamil[9])/vmap2)+rdx2*(-((0.25*dualcurlbhatoverB_x[1]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_x[3]*hamil[3]*hamil[8])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[2]*hamil[12])/vmap2)-(0.7071067811865475*rtg33inv[3]*hamil[9])/vmap2))/m_; - alphavpar[13] = (rdx2*(-((0.5590169943749475*dualcurlbhatoverB_x[3]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_x[1]*hamil[8]*hamil[16])/vmap2)+rdz2*(-((0.5590169943749475*dualcurlbhatoverB_z[0]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_z[1]*hamil[9]*hamil[16])/vmap2))/(m_*q_); - alphavpar[14] = (rdz2*(-((0.5590169943749475*dualcurlbhatoverB_z[3]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_z[2]*hamil[9]*hamil[16])/vmap2)+rdx2*(-((0.5590169943749475*dualcurlbhatoverB_x[0]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_x[2]*hamil[8]*hamil[16])/vmap2))/(m_*q_); - alphavpar[15] = (rdz2*(-((0.5590169943749475*dualcurlbhatoverB_z[2]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_z[3]*hamil[9]*hamil[16])/vmap2)+rdx2*(-((0.5590169943749475*dualcurlbhatoverB_x[1]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_x[3]*hamil[8]*hamil[16])/vmap2))/(m_*q_); + alphavpar[0] = (rdx2*(-((0.25*dualcurlbhatoverB_1[2]*hamil[3]*hamil[5])/vmap2)-(0.25*dualcurlbhatoverB_1[0]*hamil[1]*hamil[3])/vmap2)+rdz2*(-((0.25*dualcurlbhatoverB_3[1]*hamil[3]*hamil[5])/vmap2)-(0.25*dualcurlbhatoverB_3[0]*hamil[2]*hamil[3])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[1]*hamil[5])/vmap2)-(0.7071067811865475*rtg33inv[0]*hamil[2])/vmap2))/m_; + alphavpar[1] = (rdx2*(-((0.25*dualcurlbhatoverB_1[3]*hamil[3]*hamil[5])/vmap2)-(0.25*dualcurlbhatoverB_1[1]*hamil[1]*hamil[3])/vmap2)+rdz2*(-((0.25*dualcurlbhatoverB_3[0]*hamil[3]*hamil[5])/vmap2)-(0.25*dualcurlbhatoverB_3[1]*hamil[2]*hamil[3])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[0]*hamil[5])/vmap2)-(0.7071067811865475*rtg33inv[1]*hamil[2])/vmap2))/m_; + alphavpar[2] = (rdz2*(-((0.25*dualcurlbhatoverB_3[3]*hamil[3]*hamil[5])/vmap2)-(0.25*dualcurlbhatoverB_3[2]*hamil[2]*hamil[3])/vmap2)+rdx2*(-((0.25*dualcurlbhatoverB_1[0]*hamil[3]*hamil[5])/vmap2)-(0.25*hamil[1]*dualcurlbhatoverB_1[2]*hamil[3])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[3]*hamil[5])/vmap2)-(0.7071067811865475*hamil[2]*rtg33inv[2])/vmap2))/m_; + alphavpar[3] = (rdx2*(-((0.5590169943749475*dualcurlbhatoverB_1[2]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_1[0]*hamil[1]*hamil[16])/vmap2)+rdz2*(-((0.5590169943749475*dualcurlbhatoverB_3[1]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_3[0]*hamil[2]*hamil[16])/vmap2))/(m_*q_); + alphavpar[4] = (rdx2*(-((0.25*dualcurlbhatoverB_1[2]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_1[0]*hamil[3]*hamil[8])/vmap2)+rdz2*(-((0.25*dualcurlbhatoverB_3[1]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_3[0]*hamil[3]*hamil[9])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[1]*hamil[12])/vmap2)-(0.7071067811865475*rtg33inv[0]*hamil[9])/vmap2))/m_; + alphavpar[5] = (rdz2*(-((0.25*dualcurlbhatoverB_3[2]*hamil[3]*hamil[5])/vmap2)-(0.25*hamil[2]*dualcurlbhatoverB_3[3]*hamil[3])/vmap2)+rdx2*(-((0.25*dualcurlbhatoverB_1[1]*hamil[3]*hamil[5])/vmap2)-(0.25*hamil[1]*dualcurlbhatoverB_1[3]*hamil[3])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[2]*hamil[5])/vmap2)-(0.7071067811865475*hamil[2]*rtg33inv[3])/vmap2))/m_; + alphavpar[6] = (rdx2*(-((0.5590169943749475*dualcurlbhatoverB_1[3]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_1[1]*hamil[1]*hamil[16])/vmap2)+rdz2*(-((0.5590169943749475*dualcurlbhatoverB_3[0]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_3[1]*hamil[2]*hamil[16])/vmap2))/(m_*q_); + alphavpar[7] = (rdz2*(-((0.5590169943749475*dualcurlbhatoverB_3[3]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_3[2]*hamil[2]*hamil[16])/vmap2)+rdx2*(-((0.5590169943749475*dualcurlbhatoverB_1[0]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*hamil[1]*dualcurlbhatoverB_1[2]*hamil[16])/vmap2))/(m_*q_); + alphavpar[8] = (rdx2*(-((0.25*dualcurlbhatoverB_1[3]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_1[1]*hamil[3]*hamil[8])/vmap2)+rdz2*(-((0.25*dualcurlbhatoverB_3[0]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_3[1]*hamil[3]*hamil[9])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[0]*hamil[12])/vmap2)-(0.7071067811865475*rtg33inv[1]*hamil[9])/vmap2))/m_; + alphavpar[9] = (rdz2*(-((0.25*dualcurlbhatoverB_3[3]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_3[2]*hamil[3]*hamil[9])/vmap2)+rdx2*(-((0.25*dualcurlbhatoverB_1[0]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_1[2]*hamil[3]*hamil[8])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[3]*hamil[12])/vmap2)-(0.7071067811865475*rtg33inv[2]*hamil[9])/vmap2))/m_; + alphavpar[10] = (rdx2*(-((0.5590169943749475*dualcurlbhatoverB_1[2]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_1[0]*hamil[8]*hamil[16])/vmap2)+rdz2*(-((0.5590169943749475*dualcurlbhatoverB_3[1]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_3[0]*hamil[9]*hamil[16])/vmap2))/(m_*q_); + alphavpar[11] = (rdz2*(-((0.5590169943749475*dualcurlbhatoverB_3[2]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*hamil[2]*dualcurlbhatoverB_3[3]*hamil[16])/vmap2)+rdx2*(-((0.5590169943749475*dualcurlbhatoverB_1[1]*hamil[5]*hamil[16])/vmap2)-(0.5590169943749475*hamil[1]*dualcurlbhatoverB_1[3]*hamil[16])/vmap2))/(m_*q_); + alphavpar[12] = (rdz2*(-((0.25*dualcurlbhatoverB_3[2]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_3[3]*hamil[3]*hamil[9])/vmap2)+rdx2*(-((0.25*dualcurlbhatoverB_1[1]*hamil[3]*hamil[12])/vmap2)-(0.25*dualcurlbhatoverB_1[3]*hamil[3]*hamil[8])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.7071067811865475*rtg33inv[2]*hamil[12])/vmap2)-(0.7071067811865475*rtg33inv[3]*hamil[9])/vmap2))/m_; + alphavpar[13] = (rdx2*(-((0.5590169943749475*dualcurlbhatoverB_1[3]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_1[1]*hamil[8]*hamil[16])/vmap2)+rdz2*(-((0.5590169943749475*dualcurlbhatoverB_3[0]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_3[1]*hamil[9]*hamil[16])/vmap2))/(m_*q_); + alphavpar[14] = (rdz2*(-((0.5590169943749475*dualcurlbhatoverB_3[3]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_3[2]*hamil[9]*hamil[16])/vmap2)+rdx2*(-((0.5590169943749475*dualcurlbhatoverB_1[0]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_1[2]*hamil[8]*hamil[16])/vmap2))/(m_*q_); + alphavpar[15] = (rdz2*(-((0.5590169943749475*dualcurlbhatoverB_3[2]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_3[3]*hamil[9]*hamil[16])/vmap2)+rdx2*(-((0.5590169943749475*dualcurlbhatoverB_1[1]*hamil[12]*hamil[16])/vmap2)-(0.5590169943749475*dualcurlbhatoverB_1[3]*hamil[8]*hamil[16])/vmap2))/(m_*q_); out[3] += 0.4330127018922193*(alphavpar[15]*fin[15]+alphavpar[14]*fin[14]+alphavpar[13]*fin[13]+alphavpar[12]*fin[12]+alphavpar[11]*fin[11]+alphavpar[10]*fin[10]+alphavpar[9]*fin[9]+alphavpar[8]*fin[8]+alphavpar[7]*fin[7]+alphavpar[6]*fin[6]+alphavpar[5]*fin[5]+alphavpar[4]*fin[4]+alphavpar[3]*fin[3]+alphavpar[2]*fin[2]+alphavpar[1]*fin[1]+alphavpar[0]*fin[0]); diff --git a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_3x2v_ser_p1.c b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_3x2v_ser_p1.c index ab026b29b6..9575cc5f86 100644 --- a/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_3x2v_ser_p1.c +++ b/gyrokinetic/ker/dg_gyrokinetic/dg_gyrokinetic_vol_3x2v_ser_p1.c @@ -23,13 +23,13 @@ GKYL_CU_DH double dg_gyrokinetic_vol_3x2v_ser_p1(const double *w, const double * double rdvpar2Sq = rdvpar2*rdvpar2; double dvparSq = dxv[3]*dxv[3]; - const double *bioverJB_x = &bioverJB[0]; - const double *bioverJB_y = &bioverJB[8]; - const double *bioverJB_z = &bioverJB[16]; + const double *bioverJB_1 = &bioverJB[0]; + const double *bioverJB_2 = &bioverJB[8]; + const double *bioverJB_3 = &bioverJB[16]; - const double *dualcurlbhatoverB_x = &dualcurlbhatoverB[0]; - const double *dualcurlbhatoverB_y = &dualcurlbhatoverB[8]; - const double *dualcurlbhatoverB_z = &dualcurlbhatoverB[16]; + const double *dualcurlbhatoverB_1 = &dualcurlbhatoverB[0]; + const double *dualcurlbhatoverB_2 = &dualcurlbhatoverB[8]; + const double *dualcurlbhatoverB_3 = &dualcurlbhatoverB[16]; double hamil[48] = {0.}; hamil[0] = 2.0*(phi[0]*q_+vmapSq[0]*m_)+1.4142135623730951*bmag[0]*vmap[2]; @@ -54,26 +54,26 @@ GKYL_CU_DH double dg_gyrokinetic_vol_3x2v_ser_p1(const double *w, const double * hamil2[1] = hamil[32]*hamil[32]; double alphax[48] = {0.}; - alphax[0] = (rdx2*((0.625*dualcurlbhatoverB_x[0]*hamil2[1])/vmap2+(0.125*dualcurlbhatoverB_x[0]*hamil2[0])/vmap2))/(m_*q_)+((0.6123724356957944*bioverJB_y[1]*hamil[7]+0.6123724356957944*bioverJB_y[0]*hamil[3])*rdx2*rdz2+(-(0.6123724356957944*bioverJB_z[5]*hamil[16])-0.6123724356957944*bioverJB_z[3]*hamil[8]-0.6123724356957944*bioverJB_z[1]*hamil[6]-0.6123724356957944*bioverJB_z[0]*hamil[2])*rdx2*rdy2)/q_; - alphax[1] = (rdx2*((0.625*dualcurlbhatoverB_x[1]*hamil2[1])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_x[1])/vmap2))/(m_*q_)+((0.6123724356957944*bioverJB_y[0]*hamil[7]+0.6123724356957944*bioverJB_y[1]*hamil[3])*rdx2*rdz2+(-(0.6123724356957944*bioverJB_z[3]*hamil[16])-0.6123724356957944*bioverJB_z[5]*hamil[8]-0.6123724356957944*bioverJB_z[0]*hamil[6]-0.6123724356957944*bioverJB_z[1]*hamil[2])*rdx2*rdy2)/q_; - alphax[2] = ((0.6123724356957944*bioverJB_y[1]*hamil[16]+0.6123724356957944*bioverJB_y[0]*hamil[8])*rdx2*rdz2)/q_; - alphax[3] = (rdx2*((0.625*hamil2[1]*dualcurlbhatoverB_x[3])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_x[3])/vmap2))/(m_*q_)+((0.6123724356957944*bioverJB_y[5]*hamil[7]+0.6123724356957944*bioverJB_y[3]*hamil[3])*rdx2*rdz2+(-(0.6123724356957944*bioverJB_z[1]*hamil[16])-0.6123724356957944*bioverJB_z[0]*hamil[8]-0.6123724356957944*bioverJB_z[5]*hamil[6]-0.6123724356957944*hamil[2]*bioverJB_z[3])*rdx2*rdy2)/q_; - alphax[4] = (0.5590169943749475*dualcurlbhatoverB_x[0]*hamil[4]*hamil[32]*rdx2)/(m_*q_*vmap2); - alphax[5] = ((0.6123724356957944*bioverJB_y[1]*hamil[21]+0.6123724356957944*bioverJB_y[0]*hamil[14])*rdx2*rdz2)/q_; - alphax[6] = ((0.6123724356957944*bioverJB_y[0]*hamil[16]+0.6123724356957944*bioverJB_y[1]*hamil[8])*rdx2*rdz2)/q_; - alphax[7] = (rdx2*((0.625*hamil2[1]*dualcurlbhatoverB_x[5])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_x[5])/vmap2))/(m_*q_)+((0.6123724356957944*bioverJB_y[3]*hamil[7]+0.6123724356957944*hamil[3]*bioverJB_y[5])*rdx2*rdz2+(-(0.6123724356957944*bioverJB_z[0]*hamil[16])-0.6123724356957944*bioverJB_z[1]*hamil[8]-0.6123724356957944*bioverJB_z[3]*hamil[6]-0.6123724356957944*hamil[2]*bioverJB_z[5])*rdx2*rdy2)/q_; - alphax[8] = ((0.6123724356957944*bioverJB_y[5]*hamil[16]+0.6123724356957944*bioverJB_y[3]*hamil[8])*rdx2*rdz2)/q_; - alphax[9] = (0.5590169943749475*dualcurlbhatoverB_x[1]*hamil[4]*hamil[32]*rdx2)/(m_*q_*vmap2); - alphax[11] = (0.5590169943749475*dualcurlbhatoverB_x[3]*hamil[4]*hamil[32]*rdx2)/(m_*q_*vmap2); - alphax[12] = ((0.6123724356957944*bioverJB_y[0]*hamil[21]+0.6123724356957944*bioverJB_y[1]*hamil[14])*rdx2*rdz2)/q_; - alphax[14] = ((0.6123724356957944*bioverJB_y[5]*hamil[21]+0.6123724356957944*bioverJB_y[3]*hamil[14])*rdx2*rdz2)/q_; - alphax[16] = ((0.6123724356957944*bioverJB_y[3]*hamil[16]+0.6123724356957944*bioverJB_y[5]*hamil[8])*rdx2*rdz2)/q_; - alphax[18] = (0.5590169943749475*hamil[4]*dualcurlbhatoverB_x[5]*hamil[32]*rdx2)/(m_*q_*vmap2); - alphax[21] = ((0.6123724356957944*bioverJB_y[3]*hamil[21]+0.6123724356957944*bioverJB_y[5]*hamil[14])*rdx2*rdz2)/q_; - alphax[32] = (0.5590169943749475*dualcurlbhatoverB_x[0]*hamil2[1]*rdx2)/(m_*q_*vmap2); - alphax[33] = (0.5590169943749476*dualcurlbhatoverB_x[1]*hamil2[1]*rdx2)/(m_*q_*vmap2); - alphax[35] = (0.5590169943749476*hamil2[1]*dualcurlbhatoverB_x[3]*rdx2)/(m_*q_*vmap2); - alphax[38] = (0.5590169943749475*hamil2[1]*dualcurlbhatoverB_x[5]*rdx2)/(m_*q_*vmap2); + alphax[0] = (rdx2*((0.625*dualcurlbhatoverB_1[0]*hamil2[1])/vmap2+(0.125*dualcurlbhatoverB_1[0]*hamil2[0])/vmap2))/(m_*q_)+((0.6123724356957944*bioverJB_2[1]*hamil[7]+0.6123724356957944*bioverJB_2[0]*hamil[3])*rdx2*rdz2+(-(0.6123724356957944*bioverJB_3[5]*hamil[16])-0.6123724356957944*bioverJB_3[3]*hamil[8]-0.6123724356957944*bioverJB_3[1]*hamil[6]-0.6123724356957944*bioverJB_3[0]*hamil[2])*rdx2*rdy2)/q_; + alphax[1] = (rdx2*((0.625*dualcurlbhatoverB_1[1]*hamil2[1])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_1[1])/vmap2))/(m_*q_)+((0.6123724356957944*bioverJB_2[0]*hamil[7]+0.6123724356957944*bioverJB_2[1]*hamil[3])*rdx2*rdz2+(-(0.6123724356957944*bioverJB_3[3]*hamil[16])-0.6123724356957944*bioverJB_3[5]*hamil[8]-0.6123724356957944*bioverJB_3[0]*hamil[6]-0.6123724356957944*bioverJB_3[1]*hamil[2])*rdx2*rdy2)/q_; + alphax[2] = ((0.6123724356957944*bioverJB_2[1]*hamil[16]+0.6123724356957944*bioverJB_2[0]*hamil[8])*rdx2*rdz2)/q_; + alphax[3] = (rdx2*((0.625*hamil2[1]*dualcurlbhatoverB_1[3])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_1[3])/vmap2))/(m_*q_)+((0.6123724356957944*bioverJB_2[5]*hamil[7]+0.6123724356957944*bioverJB_2[3]*hamil[3])*rdx2*rdz2+(-(0.6123724356957944*bioverJB_3[1]*hamil[16])-0.6123724356957944*bioverJB_3[0]*hamil[8]-0.6123724356957944*bioverJB_3[5]*hamil[6]-0.6123724356957944*hamil[2]*bioverJB_3[3])*rdx2*rdy2)/q_; + alphax[4] = (0.5590169943749475*dualcurlbhatoverB_1[0]*hamil[4]*hamil[32]*rdx2)/(m_*q_*vmap2); + alphax[5] = ((0.6123724356957944*bioverJB_2[1]*hamil[21]+0.6123724356957944*bioverJB_2[0]*hamil[14])*rdx2*rdz2)/q_; + alphax[6] = ((0.6123724356957944*bioverJB_2[0]*hamil[16]+0.6123724356957944*bioverJB_2[1]*hamil[8])*rdx2*rdz2)/q_; + alphax[7] = (rdx2*((0.625*hamil2[1]*dualcurlbhatoverB_1[5])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_1[5])/vmap2))/(m_*q_)+((0.6123724356957944*bioverJB_2[3]*hamil[7]+0.6123724356957944*hamil[3]*bioverJB_2[5])*rdx2*rdz2+(-(0.6123724356957944*bioverJB_3[0]*hamil[16])-0.6123724356957944*bioverJB_3[1]*hamil[8]-0.6123724356957944*bioverJB_3[3]*hamil[6]-0.6123724356957944*hamil[2]*bioverJB_3[5])*rdx2*rdy2)/q_; + alphax[8] = ((0.6123724356957944*bioverJB_2[5]*hamil[16]+0.6123724356957944*bioverJB_2[3]*hamil[8])*rdx2*rdz2)/q_; + alphax[9] = (0.5590169943749475*dualcurlbhatoverB_1[1]*hamil[4]*hamil[32]*rdx2)/(m_*q_*vmap2); + alphax[11] = (0.5590169943749475*dualcurlbhatoverB_1[3]*hamil[4]*hamil[32]*rdx2)/(m_*q_*vmap2); + alphax[12] = ((0.6123724356957944*bioverJB_2[0]*hamil[21]+0.6123724356957944*bioverJB_2[1]*hamil[14])*rdx2*rdz2)/q_; + alphax[14] = ((0.6123724356957944*bioverJB_2[5]*hamil[21]+0.6123724356957944*bioverJB_2[3]*hamil[14])*rdx2*rdz2)/q_; + alphax[16] = ((0.6123724356957944*bioverJB_2[3]*hamil[16]+0.6123724356957944*bioverJB_2[5]*hamil[8])*rdx2*rdz2)/q_; + alphax[18] = (0.5590169943749475*hamil[4]*dualcurlbhatoverB_1[5]*hamil[32]*rdx2)/(m_*q_*vmap2); + alphax[21] = ((0.6123724356957944*bioverJB_2[3]*hamil[21]+0.6123724356957944*bioverJB_2[5]*hamil[14])*rdx2*rdz2)/q_; + alphax[32] = (0.5590169943749475*dualcurlbhatoverB_1[0]*hamil2[1]*rdx2)/(m_*q_*vmap2); + alphax[33] = (0.5590169943749476*dualcurlbhatoverB_1[1]*hamil2[1]*rdx2)/(m_*q_*vmap2); + alphax[35] = (0.5590169943749476*hamil2[1]*dualcurlbhatoverB_1[3]*rdx2)/(m_*q_*vmap2); + alphax[38] = (0.5590169943749475*hamil2[1]*dualcurlbhatoverB_1[5]*rdx2)/(m_*q_*vmap2); out[1] += 0.3061862178478971*(alphax[38]*fin[38]+alphax[35]*fin[35]+alphax[33]*fin[33]+alphax[32]*fin[32]+alphax[21]*fin[21]+alphax[18]*fin[18]+alphax[16]*fin[16]+alphax[14]*fin[14]+alphax[12]*fin[12]+alphax[11]*fin[11]+alphax[9]*fin[9]+alphax[8]*fin[8]+alphax[7]*fin[7]+alphax[6]*fin[6]+alphax[5]*fin[5]+alphax[4]*fin[4]+alphax[3]*fin[3]+alphax[2]*fin[2]+alphax[1]*fin[1]+alphax[0]*fin[0]); @@ -102,26 +102,26 @@ GKYL_CU_DH double dg_gyrokinetic_vol_3x2v_ser_p1(const double *w, const double * out[47] += (0.19561519910898784*alphax[33]+0.3061862178478971*alphax[1])*fin[47]+0.19561519910898784*alphax[32]*fin[46]+0.3061862178478971*(alphax[0]*fin[46]+alphax[6]*fin[45])+0.19561519910898784*alphax[38]*fin[44]+0.3061862178478971*(alphax[7]*fin[44]+alphax[12]*fin[43]+alphax[2]*fin[42])+0.19561519910898784*alphax[35]*fin[41]+0.3061862178478971*(alphax[3]*fin[41]+alphax[16]*fin[40]+alphax[5]*fin[39]+fin[20]*alphax[38]+alphax[21]*fin[37]+alphax[8]*fin[36]+fin[13]*alphax[35]+alphax[14]*fin[34]+fin[27]*alphax[33]+fin[22]*alphax[32])+0.273861278752583*(alphax[9]*fin[31]+alphax[4]*fin[30]+alphax[18]*fin[28]+alphax[11]*fin[24]); double alphay[48] = {0.}; - alphay[0] = (rdy2*((0.625*dualcurlbhatoverB_y[0]*hamil2[1])/vmap2+(0.125*dualcurlbhatoverB_y[0]*hamil2[0])/vmap2))/(m_*q_)+((-(0.6123724356957944*bioverJB_x[1]*hamil[7])-0.6123724356957944*bioverJB_x[0]*hamil[3])*rdy2*rdz2+(0.6123724356957944*bioverJB_z[3]*hamil[7]+0.6123724356957944*bioverJB_z[0]*hamil[1])*rdx2*rdy2)/q_; - alphay[1] = (rdy2*((0.625*dualcurlbhatoverB_y[1]*hamil2[1])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_y[1])/vmap2))/(m_*q_)+((-(0.6123724356957944*bioverJB_x[0]*hamil[7])-0.6123724356957944*bioverJB_x[1]*hamil[3])*rdy2*rdz2+(0.6123724356957944*bioverJB_z[5]*hamil[7]+0.6123724356957944*bioverJB_z[1]*hamil[1])*rdx2*rdy2)/q_; - alphay[2] = ((-(0.6123724356957944*bioverJB_x[1]*hamil[16])-0.6123724356957944*bioverJB_x[0]*hamil[8])*rdy2*rdz2+(0.6123724356957944*bioverJB_z[3]*hamil[16]+0.6123724356957944*bioverJB_z[0]*hamil[6])*rdx2*rdy2)/q_; - alphay[3] = (rdy2*((0.625*hamil2[1]*dualcurlbhatoverB_y[3])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_y[3])/vmap2))/(m_*q_)+((-(0.6123724356957944*bioverJB_x[5]*hamil[7])-0.6123724356957944*bioverJB_x[3]*hamil[3])*rdy2*rdz2+(0.6123724356957944*bioverJB_z[0]*hamil[7]+0.6123724356957944*hamil[1]*bioverJB_z[3])*rdx2*rdy2)/q_; - alphay[4] = (0.5590169943749475*dualcurlbhatoverB_y[0]*hamil[4]*hamil[32]*rdy2)/(m_*q_*vmap2); - alphay[5] = ((-(0.6123724356957944*bioverJB_x[1]*hamil[21])-0.6123724356957944*bioverJB_x[0]*hamil[14])*rdy2*rdz2+(0.6123724356957944*bioverJB_z[3]*hamil[21]+0.6123724356957944*bioverJB_z[0]*hamil[12])*rdx2*rdy2)/q_; - alphay[6] = ((-(0.6123724356957944*bioverJB_x[0]*hamil[16])-0.6123724356957944*bioverJB_x[1]*hamil[8])*rdy2*rdz2+(0.6123724356957944*bioverJB_z[5]*hamil[16]+0.6123724356957944*bioverJB_z[1]*hamil[6])*rdx2*rdy2)/q_; - alphay[7] = (rdy2*((0.625*hamil2[1]*dualcurlbhatoverB_y[5])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_y[5])/vmap2))/(m_*q_)+((-(0.6123724356957944*bioverJB_x[3]*hamil[7])-0.6123724356957944*hamil[3]*bioverJB_x[5])*rdy2*rdz2+(0.6123724356957944*bioverJB_z[1]*hamil[7]+0.6123724356957944*hamil[1]*bioverJB_z[5])*rdx2*rdy2)/q_; - alphay[8] = ((-(0.6123724356957944*bioverJB_x[5]*hamil[16])-0.6123724356957944*bioverJB_x[3]*hamil[8])*rdy2*rdz2+(0.6123724356957944*bioverJB_z[0]*hamil[16]+0.6123724356957944*bioverJB_z[3]*hamil[6])*rdx2*rdy2)/q_; - alphay[9] = (0.5590169943749475*dualcurlbhatoverB_y[1]*hamil[4]*hamil[32]*rdy2)/(m_*q_*vmap2); - alphay[11] = (0.5590169943749475*dualcurlbhatoverB_y[3]*hamil[4]*hamil[32]*rdy2)/(m_*q_*vmap2); - alphay[12] = ((-(0.6123724356957944*bioverJB_x[0]*hamil[21])-0.6123724356957944*bioverJB_x[1]*hamil[14])*rdy2*rdz2+(0.6123724356957944*bioverJB_z[5]*hamil[21]+0.6123724356957944*bioverJB_z[1]*hamil[12])*rdx2*rdy2)/q_; - alphay[14] = ((-(0.6123724356957944*bioverJB_x[5]*hamil[21])-0.6123724356957944*bioverJB_x[3]*hamil[14])*rdy2*rdz2+(0.6123724356957944*bioverJB_z[0]*hamil[21]+0.6123724356957944*bioverJB_z[3]*hamil[12])*rdx2*rdy2)/q_; - alphay[16] = ((-(0.6123724356957944*bioverJB_x[3]*hamil[16])-0.6123724356957944*bioverJB_x[5]*hamil[8])*rdy2*rdz2+(0.6123724356957944*bioverJB_z[1]*hamil[16]+0.6123724356957944*bioverJB_z[5]*hamil[6])*rdx2*rdy2)/q_; - alphay[18] = (0.5590169943749475*hamil[4]*dualcurlbhatoverB_y[5]*hamil[32]*rdy2)/(m_*q_*vmap2); - alphay[21] = ((-(0.6123724356957944*bioverJB_x[3]*hamil[21])-0.6123724356957944*bioverJB_x[5]*hamil[14])*rdy2*rdz2+(0.6123724356957944*bioverJB_z[1]*hamil[21]+0.6123724356957944*bioverJB_z[5]*hamil[12])*rdx2*rdy2)/q_; - alphay[32] = (0.5590169943749475*dualcurlbhatoverB_y[0]*hamil2[1]*rdy2)/(m_*q_*vmap2); - alphay[33] = (0.5590169943749476*dualcurlbhatoverB_y[1]*hamil2[1]*rdy2)/(m_*q_*vmap2); - alphay[35] = (0.5590169943749476*hamil2[1]*dualcurlbhatoverB_y[3]*rdy2)/(m_*q_*vmap2); - alphay[38] = (0.5590169943749475*hamil2[1]*dualcurlbhatoverB_y[5]*rdy2)/(m_*q_*vmap2); + alphay[0] = (rdy2*((0.625*dualcurlbhatoverB_2[0]*hamil2[1])/vmap2+(0.125*dualcurlbhatoverB_2[0]*hamil2[0])/vmap2))/(m_*q_)+((-(0.6123724356957944*bioverJB_1[1]*hamil[7])-0.6123724356957944*bioverJB_1[0]*hamil[3])*rdy2*rdz2+(0.6123724356957944*bioverJB_3[3]*hamil[7]+0.6123724356957944*bioverJB_3[0]*hamil[1])*rdx2*rdy2)/q_; + alphay[1] = (rdy2*((0.625*dualcurlbhatoverB_2[1]*hamil2[1])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_2[1])/vmap2))/(m_*q_)+((-(0.6123724356957944*bioverJB_1[0]*hamil[7])-0.6123724356957944*bioverJB_1[1]*hamil[3])*rdy2*rdz2+(0.6123724356957944*bioverJB_3[5]*hamil[7]+0.6123724356957944*bioverJB_3[1]*hamil[1])*rdx2*rdy2)/q_; + alphay[2] = ((-(0.6123724356957944*bioverJB_1[1]*hamil[16])-0.6123724356957944*bioverJB_1[0]*hamil[8])*rdy2*rdz2+(0.6123724356957944*bioverJB_3[3]*hamil[16]+0.6123724356957944*bioverJB_3[0]*hamil[6])*rdx2*rdy2)/q_; + alphay[3] = (rdy2*((0.625*hamil2[1]*dualcurlbhatoverB_2[3])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_2[3])/vmap2))/(m_*q_)+((-(0.6123724356957944*bioverJB_1[5]*hamil[7])-0.6123724356957944*bioverJB_1[3]*hamil[3])*rdy2*rdz2+(0.6123724356957944*bioverJB_3[0]*hamil[7]+0.6123724356957944*hamil[1]*bioverJB_3[3])*rdx2*rdy2)/q_; + alphay[4] = (0.5590169943749475*dualcurlbhatoverB_2[0]*hamil[4]*hamil[32]*rdy2)/(m_*q_*vmap2); + alphay[5] = ((-(0.6123724356957944*bioverJB_1[1]*hamil[21])-0.6123724356957944*bioverJB_1[0]*hamil[14])*rdy2*rdz2+(0.6123724356957944*bioverJB_3[3]*hamil[21]+0.6123724356957944*bioverJB_3[0]*hamil[12])*rdx2*rdy2)/q_; + alphay[6] = ((-(0.6123724356957944*bioverJB_1[0]*hamil[16])-0.6123724356957944*bioverJB_1[1]*hamil[8])*rdy2*rdz2+(0.6123724356957944*bioverJB_3[5]*hamil[16]+0.6123724356957944*bioverJB_3[1]*hamil[6])*rdx2*rdy2)/q_; + alphay[7] = (rdy2*((0.625*hamil2[1]*dualcurlbhatoverB_2[5])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_2[5])/vmap2))/(m_*q_)+((-(0.6123724356957944*bioverJB_1[3]*hamil[7])-0.6123724356957944*hamil[3]*bioverJB_1[5])*rdy2*rdz2+(0.6123724356957944*bioverJB_3[1]*hamil[7]+0.6123724356957944*hamil[1]*bioverJB_3[5])*rdx2*rdy2)/q_; + alphay[8] = ((-(0.6123724356957944*bioverJB_1[5]*hamil[16])-0.6123724356957944*bioverJB_1[3]*hamil[8])*rdy2*rdz2+(0.6123724356957944*bioverJB_3[0]*hamil[16]+0.6123724356957944*bioverJB_3[3]*hamil[6])*rdx2*rdy2)/q_; + alphay[9] = (0.5590169943749475*dualcurlbhatoverB_2[1]*hamil[4]*hamil[32]*rdy2)/(m_*q_*vmap2); + alphay[11] = (0.5590169943749475*dualcurlbhatoverB_2[3]*hamil[4]*hamil[32]*rdy2)/(m_*q_*vmap2); + alphay[12] = ((-(0.6123724356957944*bioverJB_1[0]*hamil[21])-0.6123724356957944*bioverJB_1[1]*hamil[14])*rdy2*rdz2+(0.6123724356957944*bioverJB_3[5]*hamil[21]+0.6123724356957944*bioverJB_3[1]*hamil[12])*rdx2*rdy2)/q_; + alphay[14] = ((-(0.6123724356957944*bioverJB_1[5]*hamil[21])-0.6123724356957944*bioverJB_1[3]*hamil[14])*rdy2*rdz2+(0.6123724356957944*bioverJB_3[0]*hamil[21]+0.6123724356957944*bioverJB_3[3]*hamil[12])*rdx2*rdy2)/q_; + alphay[16] = ((-(0.6123724356957944*bioverJB_1[3]*hamil[16])-0.6123724356957944*bioverJB_1[5]*hamil[8])*rdy2*rdz2+(0.6123724356957944*bioverJB_3[1]*hamil[16]+0.6123724356957944*bioverJB_3[5]*hamil[6])*rdx2*rdy2)/q_; + alphay[18] = (0.5590169943749475*hamil[4]*dualcurlbhatoverB_2[5]*hamil[32]*rdy2)/(m_*q_*vmap2); + alphay[21] = ((-(0.6123724356957944*bioverJB_1[3]*hamil[21])-0.6123724356957944*bioverJB_1[5]*hamil[14])*rdy2*rdz2+(0.6123724356957944*bioverJB_3[1]*hamil[21]+0.6123724356957944*bioverJB_3[5]*hamil[12])*rdx2*rdy2)/q_; + alphay[32] = (0.5590169943749475*dualcurlbhatoverB_2[0]*hamil2[1]*rdy2)/(m_*q_*vmap2); + alphay[33] = (0.5590169943749476*dualcurlbhatoverB_2[1]*hamil2[1]*rdy2)/(m_*q_*vmap2); + alphay[35] = (0.5590169943749476*hamil2[1]*dualcurlbhatoverB_2[3]*rdy2)/(m_*q_*vmap2); + alphay[38] = (0.5590169943749475*hamil2[1]*dualcurlbhatoverB_2[5]*rdy2)/(m_*q_*vmap2); out[2] += 0.3061862178478971*(alphay[38]*fin[38]+alphay[35]*fin[35]+alphay[33]*fin[33]+alphay[32]*fin[32]+alphay[21]*fin[21]+alphay[18]*fin[18]+alphay[16]*fin[16]+alphay[14]*fin[14]+alphay[12]*fin[12]+alphay[11]*fin[11]+alphay[9]*fin[9]+alphay[8]*fin[8]+alphay[7]*fin[7]+alphay[6]*fin[6]+alphay[5]*fin[5]+alphay[4]*fin[4]+alphay[3]*fin[3]+alphay[2]*fin[2]+alphay[1]*fin[1]+alphay[0]*fin[0]); @@ -150,26 +150,26 @@ GKYL_CU_DH double dg_gyrokinetic_vol_3x2v_ser_p1(const double *w, const double * out[47] += 0.3061862178478971*(alphay[2]*fin[47]+alphay[6]*fin[46])+0.19561519910898784*alphay[32]*fin[45]+0.3061862178478971*(alphay[0]*fin[45]+alphay[8]*fin[44])+0.19561519910898784*alphay[33]*fin[42]+0.3061862178478971*(alphay[1]*fin[42]+alphay[16]*fin[41])+0.19561519910898784*alphay[35]*fin[40]+0.3061862178478971*(alphay[3]*fin[40]+alphay[5]*fin[38])+0.19561519910898784*fin[36]*alphay[38]+0.3061862178478971*(fin[5]*alphay[38]+alphay[7]*fin[36]+alphay[12]*fin[35]+fin[12]*alphay[35]+alphay[14]*fin[33]+fin[14]*alphay[33]+alphay[21]*fin[32]+fin[21]*alphay[32])+0.273861278752583*(alphay[4]*fin[29]+alphay[9]*fin[25]+alphay[11]*fin[23]+fin[15]*alphay[18]); double alphaz[48] = {0.}; - alphaz[0] = (rdz2*((0.625*dualcurlbhatoverB_z[0]*hamil2[1])/vmap2+(0.125*dualcurlbhatoverB_z[0]*hamil2[0])/vmap2))/(m_*q_)+(0.5*rtg33inv[0]*vmap[1]*hamil[4]*rdz2)/(m_*vmap2)+((0.6123724356957944*bioverJB_x[5]*hamil[16]+0.6123724356957944*bioverJB_x[3]*hamil[8]+0.6123724356957944*bioverJB_x[1]*hamil[6]+0.6123724356957944*bioverJB_x[0]*hamil[2])*rdy2*rdz2+(-(0.6123724356957944*bioverJB_y[3]*hamil[7])-0.6123724356957944*bioverJB_y[0]*hamil[1])*rdx2*rdz2)/q_; - alphaz[1] = (rdz2*((0.625*dualcurlbhatoverB_z[1]*hamil2[1])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_z[1])/vmap2))/(m_*q_)+(0.5*rtg33inv[1]*vmap[1]*hamil[4]*rdz2)/(m_*vmap2)+((0.6123724356957944*bioverJB_x[3]*hamil[16]+0.6123724356957944*bioverJB_x[5]*hamil[8]+0.6123724356957944*bioverJB_x[0]*hamil[6]+0.6123724356957944*bioverJB_x[1]*hamil[2])*rdy2*rdz2+(-(0.6123724356957944*bioverJB_y[5]*hamil[7])-0.6123724356957944*bioverJB_y[1]*hamil[1])*rdx2*rdz2)/q_; - alphaz[2] = ((-(0.6123724356957944*bioverJB_y[3]*hamil[16])-0.6123724356957944*bioverJB_y[0]*hamil[6])*rdx2*rdz2)/q_; - alphaz[3] = (rdz2*((0.625*hamil2[1]*dualcurlbhatoverB_z[3])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_z[3])/vmap2))/(m_*q_)+(0.5*vmap[1]*rtg33inv[3]*hamil[4]*rdz2)/(m_*vmap2)+((0.6123724356957944*bioverJB_x[1]*hamil[16]+0.6123724356957944*bioverJB_x[0]*hamil[8]+0.6123724356957944*bioverJB_x[5]*hamil[6]+0.6123724356957944*hamil[2]*bioverJB_x[3])*rdy2*rdz2+(-(0.6123724356957944*bioverJB_y[0]*hamil[7])-0.6123724356957944*hamil[1]*bioverJB_y[3])*rdx2*rdz2)/q_; - alphaz[4] = (0.5590169943749475*dualcurlbhatoverB_z[0]*hamil[4]*hamil[32]*rdz2)/(m_*q_*vmap2)+(1.118033988749895*rtg33inv[0]*vmap[1]*hamil[32]*rdz2)/(m_*vmap2); - alphaz[5] = ((-(0.6123724356957944*bioverJB_y[3]*hamil[21])-0.6123724356957944*bioverJB_y[0]*hamil[12])*rdx2*rdz2)/q_; - alphaz[6] = ((-(0.6123724356957944*bioverJB_y[5]*hamil[16])-0.6123724356957944*bioverJB_y[1]*hamil[6])*rdx2*rdz2)/q_; - alphaz[7] = (rdz2*((0.625*hamil2[1]*dualcurlbhatoverB_z[5])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_z[5])/vmap2))/(m_*q_)+(0.5*vmap[1]*hamil[4]*rtg33inv[5]*rdz2)/(m_*vmap2)+((0.6123724356957944*bioverJB_x[0]*hamil[16]+0.6123724356957944*bioverJB_x[1]*hamil[8]+0.6123724356957944*bioverJB_x[3]*hamil[6]+0.6123724356957944*hamil[2]*bioverJB_x[5])*rdy2*rdz2+(-(0.6123724356957944*bioverJB_y[1]*hamil[7])-0.6123724356957944*hamil[1]*bioverJB_y[5])*rdx2*rdz2)/q_; - alphaz[8] = ((-(0.6123724356957944*bioverJB_y[0]*hamil[16])-0.6123724356957944*bioverJB_y[3]*hamil[6])*rdx2*rdz2)/q_; - alphaz[9] = (0.5590169943749475*dualcurlbhatoverB_z[1]*hamil[4]*hamil[32]*rdz2)/(m_*q_*vmap2)+(1.118033988749895*rtg33inv[1]*vmap[1]*hamil[32]*rdz2)/(m_*vmap2); - alphaz[11] = (0.5590169943749475*dualcurlbhatoverB_z[3]*hamil[4]*hamil[32]*rdz2)/(m_*q_*vmap2)+(1.118033988749895*vmap[1]*rtg33inv[3]*hamil[32]*rdz2)/(m_*vmap2); - alphaz[12] = ((-(0.6123724356957944*bioverJB_y[5]*hamil[21])-0.6123724356957944*bioverJB_y[1]*hamil[12])*rdx2*rdz2)/q_; - alphaz[14] = ((-(0.6123724356957944*bioverJB_y[0]*hamil[21])-0.6123724356957944*bioverJB_y[3]*hamil[12])*rdx2*rdz2)/q_; - alphaz[16] = ((-(0.6123724356957944*bioverJB_y[1]*hamil[16])-0.6123724356957944*bioverJB_y[5]*hamil[6])*rdx2*rdz2)/q_; - alphaz[18] = (0.5590169943749475*hamil[4]*dualcurlbhatoverB_z[5]*hamil[32]*rdz2)/(m_*q_*vmap2)+(1.118033988749895*vmap[1]*rtg33inv[5]*hamil[32]*rdz2)/(m_*vmap2); - alphaz[21] = ((-(0.6123724356957944*bioverJB_y[1]*hamil[21])-0.6123724356957944*bioverJB_y[5]*hamil[12])*rdx2*rdz2)/q_; - alphaz[32] = (0.5590169943749475*dualcurlbhatoverB_z[0]*hamil2[1]*rdz2)/(m_*q_*vmap2); - alphaz[33] = (0.5590169943749476*dualcurlbhatoverB_z[1]*hamil2[1]*rdz2)/(m_*q_*vmap2); - alphaz[35] = (0.5590169943749476*hamil2[1]*dualcurlbhatoverB_z[3]*rdz2)/(m_*q_*vmap2); - alphaz[38] = (0.5590169943749475*hamil2[1]*dualcurlbhatoverB_z[5]*rdz2)/(m_*q_*vmap2); + alphaz[0] = (rdz2*((0.625*dualcurlbhatoverB_3[0]*hamil2[1])/vmap2+(0.125*dualcurlbhatoverB_3[0]*hamil2[0])/vmap2))/(m_*q_)+(0.5*rtg33inv[0]*vmap[1]*hamil[4]*rdz2)/(m_*vmap2)+((0.6123724356957944*bioverJB_1[5]*hamil[16]+0.6123724356957944*bioverJB_1[3]*hamil[8]+0.6123724356957944*bioverJB_1[1]*hamil[6]+0.6123724356957944*bioverJB_1[0]*hamil[2])*rdy2*rdz2+(-(0.6123724356957944*bioverJB_2[3]*hamil[7])-0.6123724356957944*bioverJB_2[0]*hamil[1])*rdx2*rdz2)/q_; + alphaz[1] = (rdz2*((0.625*dualcurlbhatoverB_3[1]*hamil2[1])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_3[1])/vmap2))/(m_*q_)+(0.5*rtg33inv[1]*vmap[1]*hamil[4]*rdz2)/(m_*vmap2)+((0.6123724356957944*bioverJB_1[3]*hamil[16]+0.6123724356957944*bioverJB_1[5]*hamil[8]+0.6123724356957944*bioverJB_1[0]*hamil[6]+0.6123724356957944*bioverJB_1[1]*hamil[2])*rdy2*rdz2+(-(0.6123724356957944*bioverJB_2[5]*hamil[7])-0.6123724356957944*bioverJB_2[1]*hamil[1])*rdx2*rdz2)/q_; + alphaz[2] = ((-(0.6123724356957944*bioverJB_2[3]*hamil[16])-0.6123724356957944*bioverJB_2[0]*hamil[6])*rdx2*rdz2)/q_; + alphaz[3] = (rdz2*((0.625*hamil2[1]*dualcurlbhatoverB_3[3])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_3[3])/vmap2))/(m_*q_)+(0.5*vmap[1]*rtg33inv[3]*hamil[4]*rdz2)/(m_*vmap2)+((0.6123724356957944*bioverJB_1[1]*hamil[16]+0.6123724356957944*bioverJB_1[0]*hamil[8]+0.6123724356957944*bioverJB_1[5]*hamil[6]+0.6123724356957944*hamil[2]*bioverJB_1[3])*rdy2*rdz2+(-(0.6123724356957944*bioverJB_2[0]*hamil[7])-0.6123724356957944*hamil[1]*bioverJB_2[3])*rdx2*rdz2)/q_; + alphaz[4] = (0.5590169943749475*dualcurlbhatoverB_3[0]*hamil[4]*hamil[32]*rdz2)/(m_*q_*vmap2)+(1.118033988749895*rtg33inv[0]*vmap[1]*hamil[32]*rdz2)/(m_*vmap2); + alphaz[5] = ((-(0.6123724356957944*bioverJB_2[3]*hamil[21])-0.6123724356957944*bioverJB_2[0]*hamil[12])*rdx2*rdz2)/q_; + alphaz[6] = ((-(0.6123724356957944*bioverJB_2[5]*hamil[16])-0.6123724356957944*bioverJB_2[1]*hamil[6])*rdx2*rdz2)/q_; + alphaz[7] = (rdz2*((0.625*hamil2[1]*dualcurlbhatoverB_3[5])/vmap2+(0.125*hamil2[0]*dualcurlbhatoverB_3[5])/vmap2))/(m_*q_)+(0.5*vmap[1]*hamil[4]*rtg33inv[5]*rdz2)/(m_*vmap2)+((0.6123724356957944*bioverJB_1[0]*hamil[16]+0.6123724356957944*bioverJB_1[1]*hamil[8]+0.6123724356957944*bioverJB_1[3]*hamil[6]+0.6123724356957944*hamil[2]*bioverJB_1[5])*rdy2*rdz2+(-(0.6123724356957944*bioverJB_2[1]*hamil[7])-0.6123724356957944*hamil[1]*bioverJB_2[5])*rdx2*rdz2)/q_; + alphaz[8] = ((-(0.6123724356957944*bioverJB_2[0]*hamil[16])-0.6123724356957944*bioverJB_2[3]*hamil[6])*rdx2*rdz2)/q_; + alphaz[9] = (0.5590169943749475*dualcurlbhatoverB_3[1]*hamil[4]*hamil[32]*rdz2)/(m_*q_*vmap2)+(1.118033988749895*rtg33inv[1]*vmap[1]*hamil[32]*rdz2)/(m_*vmap2); + alphaz[11] = (0.5590169943749475*dualcurlbhatoverB_3[3]*hamil[4]*hamil[32]*rdz2)/(m_*q_*vmap2)+(1.118033988749895*vmap[1]*rtg33inv[3]*hamil[32]*rdz2)/(m_*vmap2); + alphaz[12] = ((-(0.6123724356957944*bioverJB_2[5]*hamil[21])-0.6123724356957944*bioverJB_2[1]*hamil[12])*rdx2*rdz2)/q_; + alphaz[14] = ((-(0.6123724356957944*bioverJB_2[0]*hamil[21])-0.6123724356957944*bioverJB_2[3]*hamil[12])*rdx2*rdz2)/q_; + alphaz[16] = ((-(0.6123724356957944*bioverJB_2[1]*hamil[16])-0.6123724356957944*bioverJB_2[5]*hamil[6])*rdx2*rdz2)/q_; + alphaz[18] = (0.5590169943749475*hamil[4]*dualcurlbhatoverB_3[5]*hamil[32]*rdz2)/(m_*q_*vmap2)+(1.118033988749895*vmap[1]*rtg33inv[5]*hamil[32]*rdz2)/(m_*vmap2); + alphaz[21] = ((-(0.6123724356957944*bioverJB_2[1]*hamil[21])-0.6123724356957944*bioverJB_2[5]*hamil[12])*rdx2*rdz2)/q_; + alphaz[32] = (0.5590169943749475*dualcurlbhatoverB_3[0]*hamil2[1]*rdz2)/(m_*q_*vmap2); + alphaz[33] = (0.5590169943749476*dualcurlbhatoverB_3[1]*hamil2[1]*rdz2)/(m_*q_*vmap2); + alphaz[35] = (0.5590169943749476*hamil2[1]*dualcurlbhatoverB_3[3]*rdz2)/(m_*q_*vmap2); + alphaz[38] = (0.5590169943749475*hamil2[1]*dualcurlbhatoverB_3[5]*rdz2)/(m_*q_*vmap2); out[3] += 0.3061862178478971*(alphaz[38]*fin[38]+alphaz[35]*fin[35]+alphaz[33]*fin[33]+alphaz[32]*fin[32]+alphaz[21]*fin[21]+alphaz[18]*fin[18]+alphaz[16]*fin[16]+alphaz[14]*fin[14]+alphaz[12]*fin[12]+alphaz[11]*fin[11]+alphaz[9]*fin[9]+alphaz[8]*fin[8]+alphaz[7]*fin[7]+alphaz[6]*fin[6]+alphaz[5]*fin[5]+alphaz[4]*fin[4]+alphaz[3]*fin[3]+alphaz[2]*fin[2]+alphaz[1]*fin[1]+alphaz[0]*fin[0]); @@ -198,30 +198,30 @@ GKYL_CU_DH double dg_gyrokinetic_vol_3x2v_ser_p1(const double *w, const double * out[47] += (0.19561519910898784*alphaz[35]+0.3061862178478971*alphaz[3])*fin[47]+0.19561519910898784*alphaz[38]*fin[46]+0.3061862178478971*(alphaz[7]*fin[46]+alphaz[8]*fin[45])+0.19561519910898784*alphaz[32]*fin[44]+0.3061862178478971*(alphaz[0]*fin[44]+alphaz[14]*fin[43]+alphaz[16]*fin[42])+0.19561519910898784*alphaz[33]*fin[41]+0.3061862178478971*(alphaz[1]*fin[41]+alphaz[2]*fin[40]+alphaz[21]*fin[39]+fin[22]*alphaz[38]+alphaz[5]*fin[37]+alphaz[6]*fin[36]+fin[27]*alphaz[35]+alphaz[12]*fin[34]+fin[13]*alphaz[33]+fin[20]*alphaz[32])+0.273861278752583*(alphaz[11]*fin[31]+alphaz[18]*fin[30]+alphaz[4]*fin[28]+alphaz[9]*fin[24]); double alphavpar[48] = {0.}; - alphavpar[0] = (rdy2*(-((0.125*hamil[4]*dualcurlbhatoverB_y[5]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_y[3]*hamil[4]*hamil[8])/vmap2-(0.125*dualcurlbhatoverB_y[1]*hamil[4]*hamil[6])/vmap2-(0.125*dualcurlbhatoverB_y[0]*hamil[2]*hamil[4])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_x[3]*hamil[4]*hamil[7])/vmap2)-(0.125*dualcurlbhatoverB_x[0]*hamil[1]*hamil[4])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_z[1]*hamil[4]*hamil[7])/vmap2)-(0.125*dualcurlbhatoverB_z[0]*hamil[3]*hamil[4])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[1]*hamil[7])/vmap2)-(0.5*rtg33inv[0]*hamil[3])/vmap2))/m_; - alphavpar[1] = (rdy2*(-((0.125*dualcurlbhatoverB_y[3]*hamil[4]*hamil[16])/vmap2)-(0.125*hamil[4]*dualcurlbhatoverB_y[5]*hamil[8])/vmap2-(0.125*dualcurlbhatoverB_y[0]*hamil[4]*hamil[6])/vmap2-(0.125*dualcurlbhatoverB_y[1]*hamil[2]*hamil[4])/vmap2)+rdx2*(-((0.125*hamil[4]*dualcurlbhatoverB_x[5]*hamil[7])/vmap2)-(0.125*dualcurlbhatoverB_x[1]*hamil[1]*hamil[4])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_z[0]*hamil[4]*hamil[7])/vmap2)-(0.125*dualcurlbhatoverB_z[1]*hamil[3]*hamil[4])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[0]*hamil[7])/vmap2)-(0.5*rtg33inv[1]*hamil[3])/vmap2))/m_; - alphavpar[2] = (rdx2*(-((0.125*dualcurlbhatoverB_x[3]*hamil[4]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_x[0]*hamil[4]*hamil[6])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_z[1]*hamil[4]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_z[0]*hamil[4]*hamil[8])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[1]*hamil[16])/vmap2)-(0.5*rtg33inv[0]*hamil[8])/vmap2))/m_; - alphavpar[3] = (rdy2*(-((0.125*dualcurlbhatoverB_y[1]*hamil[4]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_y[0]*hamil[4]*hamil[8])/vmap2-(0.125*hamil[4]*dualcurlbhatoverB_y[5]*hamil[6])/vmap2-(0.125*hamil[2]*dualcurlbhatoverB_y[3]*hamil[4])/vmap2)+rdz2*(-((0.125*hamil[4]*dualcurlbhatoverB_z[5]*hamil[7])/vmap2)-(0.125*dualcurlbhatoverB_z[3]*hamil[3]*hamil[4])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_x[0]*hamil[4]*hamil[7])/vmap2)-(0.125*hamil[1]*dualcurlbhatoverB_x[3]*hamil[4])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[5]*hamil[7])/vmap2)-(0.5*hamil[3]*rtg33inv[3])/vmap2))/m_; - alphavpar[4] = (rdy2*(-((0.2795084971874737*dualcurlbhatoverB_y[5]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_y[3]*hamil[8]*hamil[32])/vmap2-(0.2795084971874737*dualcurlbhatoverB_y[1]*hamil[6]*hamil[32])/vmap2-(0.2795084971874737*dualcurlbhatoverB_y[0]*hamil[2]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_x[3]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_x[0]*hamil[1]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_z[1]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_z[0]*hamil[3]*hamil[32])/vmap2))/(m_*q_); - alphavpar[5] = (rdx2*(-((0.125*dualcurlbhatoverB_x[3]*hamil[4]*hamil[21])/vmap2)-(0.125*dualcurlbhatoverB_x[0]*hamil[4]*hamil[12])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_z[1]*hamil[4]*hamil[21])/vmap2)-(0.125*dualcurlbhatoverB_z[0]*hamil[4]*hamil[14])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[1]*hamil[21])/vmap2)-(0.5*rtg33inv[0]*hamil[14])/vmap2))/m_; - alphavpar[6] = (rdx2*(-((0.125*hamil[4]*dualcurlbhatoverB_x[5]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_x[1]*hamil[4]*hamil[6])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_z[0]*hamil[4]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_z[1]*hamil[4]*hamil[8])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[0]*hamil[16])/vmap2)-(0.5*rtg33inv[1]*hamil[8])/vmap2))/m_; - alphavpar[7] = (rdy2*(-((0.125*dualcurlbhatoverB_y[0]*hamil[4]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_y[1]*hamil[4]*hamil[8])/vmap2-(0.125*dualcurlbhatoverB_y[3]*hamil[4]*hamil[6])/vmap2-(0.125*hamil[2]*hamil[4]*dualcurlbhatoverB_y[5])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_z[3]*hamil[4]*hamil[7])/vmap2)-(0.125*hamil[3]*hamil[4]*dualcurlbhatoverB_z[5])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_x[1]*hamil[4]*hamil[7])/vmap2)-(0.125*hamil[1]*hamil[4]*dualcurlbhatoverB_x[5])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[3]*hamil[7])/vmap2)-(0.5*hamil[3]*rtg33inv[5])/vmap2))/m_; - alphavpar[8] = (rdz2*(-((0.125*hamil[4]*dualcurlbhatoverB_z[5]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_z[3]*hamil[4]*hamil[8])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_x[0]*hamil[4]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_x[3]*hamil[4]*hamil[6])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[5]*hamil[16])/vmap2)-(0.5*rtg33inv[3]*hamil[8])/vmap2))/m_; - alphavpar[9] = (rdy2*(-((0.2795084971874737*dualcurlbhatoverB_y[3]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_y[5]*hamil[8]*hamil[32])/vmap2-(0.2795084971874737*dualcurlbhatoverB_y[0]*hamil[6]*hamil[32])/vmap2-(0.2795084971874737*dualcurlbhatoverB_y[1]*hamil[2]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_x[5]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_x[1]*hamil[1]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_z[0]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_z[1]*hamil[3]*hamil[32])/vmap2))/(m_*q_); - alphavpar[10] = (rdx2*(-((0.2795084971874737*dualcurlbhatoverB_x[3]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_x[0]*hamil[6]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_z[1]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_z[0]*hamil[8]*hamil[32])/vmap2))/(m_*q_); - alphavpar[11] = (rdy2*(-((0.2795084971874737*dualcurlbhatoverB_y[1]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_y[0]*hamil[8]*hamil[32])/vmap2-(0.2795084971874737*dualcurlbhatoverB_y[5]*hamil[6]*hamil[32])/vmap2-(0.2795084971874737*hamil[2]*dualcurlbhatoverB_y[3]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_z[5]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_z[3]*hamil[3]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_x[0]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*hamil[1]*dualcurlbhatoverB_x[3]*hamil[32])/vmap2))/(m_*q_); - alphavpar[12] = (rdx2*(-((0.125*hamil[4]*dualcurlbhatoverB_x[5]*hamil[21])/vmap2)-(0.125*dualcurlbhatoverB_x[1]*hamil[4]*hamil[12])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_z[0]*hamil[4]*hamil[21])/vmap2)-(0.125*dualcurlbhatoverB_z[1]*hamil[4]*hamil[14])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[0]*hamil[21])/vmap2)-(0.5*rtg33inv[1]*hamil[14])/vmap2))/m_; - alphavpar[14] = (rdz2*(-((0.125*hamil[4]*dualcurlbhatoverB_z[5]*hamil[21])/vmap2)-(0.125*dualcurlbhatoverB_z[3]*hamil[4]*hamil[14])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_x[0]*hamil[4]*hamil[21])/vmap2)-(0.125*dualcurlbhatoverB_x[3]*hamil[4]*hamil[12])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[5]*hamil[21])/vmap2)-(0.5*rtg33inv[3]*hamil[14])/vmap2))/m_; - alphavpar[15] = (rdx2*(-((0.2795084971874737*dualcurlbhatoverB_x[3]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_x[0]*hamil[12]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_z[1]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_z[0]*hamil[14]*hamil[32])/vmap2))/(m_*q_); - alphavpar[16] = (rdz2*(-((0.125*dualcurlbhatoverB_z[3]*hamil[4]*hamil[16])/vmap2)-(0.125*hamil[4]*dualcurlbhatoverB_z[5]*hamil[8])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_x[1]*hamil[4]*hamil[16])/vmap2)-(0.125*hamil[4]*dualcurlbhatoverB_x[5]*hamil[6])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[3]*hamil[16])/vmap2)-(0.5*rtg33inv[5]*hamil[8])/vmap2))/m_; - alphavpar[17] = (rdx2*(-((0.2795084971874737*dualcurlbhatoverB_x[5]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_x[1]*hamil[6]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_z[0]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_z[1]*hamil[8]*hamil[32])/vmap2))/(m_*q_); - alphavpar[18] = (rdy2*(-((0.2795084971874737*dualcurlbhatoverB_y[0]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_y[1]*hamil[8]*hamil[32])/vmap2-(0.2795084971874737*dualcurlbhatoverB_y[3]*hamil[6]*hamil[32])/vmap2-(0.2795084971874737*hamil[2]*dualcurlbhatoverB_y[5]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_z[3]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*hamil[3]*dualcurlbhatoverB_z[5]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_x[1]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*hamil[1]*dualcurlbhatoverB_x[5]*hamil[32])/vmap2))/(m_*q_); - alphavpar[19] = (rdz2*(-((0.2795084971874737*dualcurlbhatoverB_z[5]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_z[3]*hamil[8]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_x[0]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_x[3]*hamil[6]*hamil[32])/vmap2))/(m_*q_); - alphavpar[21] = (rdz2*(-((0.125*dualcurlbhatoverB_z[3]*hamil[4]*hamil[21])/vmap2)-(0.125*hamil[4]*dualcurlbhatoverB_z[5]*hamil[14])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_x[1]*hamil[4]*hamil[21])/vmap2)-(0.125*hamil[4]*dualcurlbhatoverB_x[5]*hamil[12])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[3]*hamil[21])/vmap2)-(0.5*rtg33inv[5]*hamil[14])/vmap2))/m_; - alphavpar[23] = (rdx2*(-((0.2795084971874737*dualcurlbhatoverB_x[5]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_x[1]*hamil[12]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_z[0]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_z[1]*hamil[14]*hamil[32])/vmap2))/(m_*q_); - alphavpar[25] = (rdz2*(-((0.2795084971874737*dualcurlbhatoverB_z[5]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_z[3]*hamil[14]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_x[0]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_x[3]*hamil[12]*hamil[32])/vmap2))/(m_*q_); - alphavpar[26] = (rdz2*(-((0.2795084971874737*dualcurlbhatoverB_z[3]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_z[5]*hamil[8]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_x[1]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_x[5]*hamil[6]*hamil[32])/vmap2))/(m_*q_); - alphavpar[29] = (rdz2*(-((0.2795084971874737*dualcurlbhatoverB_z[3]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_z[5]*hamil[14]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_x[1]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_x[5]*hamil[12]*hamil[32])/vmap2))/(m_*q_); + alphavpar[0] = (rdy2*(-((0.125*hamil[4]*dualcurlbhatoverB_2[5]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_2[3]*hamil[4]*hamil[8])/vmap2-(0.125*dualcurlbhatoverB_2[1]*hamil[4]*hamil[6])/vmap2-(0.125*dualcurlbhatoverB_2[0]*hamil[2]*hamil[4])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_1[3]*hamil[4]*hamil[7])/vmap2)-(0.125*dualcurlbhatoverB_1[0]*hamil[1]*hamil[4])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_3[1]*hamil[4]*hamil[7])/vmap2)-(0.125*dualcurlbhatoverB_3[0]*hamil[3]*hamil[4])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[1]*hamil[7])/vmap2)-(0.5*rtg33inv[0]*hamil[3])/vmap2))/m_; + alphavpar[1] = (rdy2*(-((0.125*dualcurlbhatoverB_2[3]*hamil[4]*hamil[16])/vmap2)-(0.125*hamil[4]*dualcurlbhatoverB_2[5]*hamil[8])/vmap2-(0.125*dualcurlbhatoverB_2[0]*hamil[4]*hamil[6])/vmap2-(0.125*dualcurlbhatoverB_2[1]*hamil[2]*hamil[4])/vmap2)+rdx2*(-((0.125*hamil[4]*dualcurlbhatoverB_1[5]*hamil[7])/vmap2)-(0.125*dualcurlbhatoverB_1[1]*hamil[1]*hamil[4])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_3[0]*hamil[4]*hamil[7])/vmap2)-(0.125*dualcurlbhatoverB_3[1]*hamil[3]*hamil[4])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[0]*hamil[7])/vmap2)-(0.5*rtg33inv[1]*hamil[3])/vmap2))/m_; + alphavpar[2] = (rdx2*(-((0.125*dualcurlbhatoverB_1[3]*hamil[4]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_1[0]*hamil[4]*hamil[6])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_3[1]*hamil[4]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_3[0]*hamil[4]*hamil[8])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[1]*hamil[16])/vmap2)-(0.5*rtg33inv[0]*hamil[8])/vmap2))/m_; + alphavpar[3] = (rdy2*(-((0.125*dualcurlbhatoverB_2[1]*hamil[4]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_2[0]*hamil[4]*hamil[8])/vmap2-(0.125*hamil[4]*dualcurlbhatoverB_2[5]*hamil[6])/vmap2-(0.125*hamil[2]*dualcurlbhatoverB_2[3]*hamil[4])/vmap2)+rdz2*(-((0.125*hamil[4]*dualcurlbhatoverB_3[5]*hamil[7])/vmap2)-(0.125*dualcurlbhatoverB_3[3]*hamil[3]*hamil[4])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_1[0]*hamil[4]*hamil[7])/vmap2)-(0.125*hamil[1]*dualcurlbhatoverB_1[3]*hamil[4])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[5]*hamil[7])/vmap2)-(0.5*hamil[3]*rtg33inv[3])/vmap2))/m_; + alphavpar[4] = (rdy2*(-((0.2795084971874737*dualcurlbhatoverB_2[5]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_2[3]*hamil[8]*hamil[32])/vmap2-(0.2795084971874737*dualcurlbhatoverB_2[1]*hamil[6]*hamil[32])/vmap2-(0.2795084971874737*dualcurlbhatoverB_2[0]*hamil[2]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_1[3]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_1[0]*hamil[1]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_3[1]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_3[0]*hamil[3]*hamil[32])/vmap2))/(m_*q_); + alphavpar[5] = (rdx2*(-((0.125*dualcurlbhatoverB_1[3]*hamil[4]*hamil[21])/vmap2)-(0.125*dualcurlbhatoverB_1[0]*hamil[4]*hamil[12])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_3[1]*hamil[4]*hamil[21])/vmap2)-(0.125*dualcurlbhatoverB_3[0]*hamil[4]*hamil[14])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[1]*hamil[21])/vmap2)-(0.5*rtg33inv[0]*hamil[14])/vmap2))/m_; + alphavpar[6] = (rdx2*(-((0.125*hamil[4]*dualcurlbhatoverB_1[5]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_1[1]*hamil[4]*hamil[6])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_3[0]*hamil[4]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_3[1]*hamil[4]*hamil[8])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[0]*hamil[16])/vmap2)-(0.5*rtg33inv[1]*hamil[8])/vmap2))/m_; + alphavpar[7] = (rdy2*(-((0.125*dualcurlbhatoverB_2[0]*hamil[4]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_2[1]*hamil[4]*hamil[8])/vmap2-(0.125*dualcurlbhatoverB_2[3]*hamil[4]*hamil[6])/vmap2-(0.125*hamil[2]*hamil[4]*dualcurlbhatoverB_2[5])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_3[3]*hamil[4]*hamil[7])/vmap2)-(0.125*hamil[3]*hamil[4]*dualcurlbhatoverB_3[5])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_1[1]*hamil[4]*hamil[7])/vmap2)-(0.125*hamil[1]*hamil[4]*dualcurlbhatoverB_1[5])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[3]*hamil[7])/vmap2)-(0.5*hamil[3]*rtg33inv[5])/vmap2))/m_; + alphavpar[8] = (rdz2*(-((0.125*hamil[4]*dualcurlbhatoverB_3[5]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_3[3]*hamil[4]*hamil[8])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_1[0]*hamil[4]*hamil[16])/vmap2)-(0.125*dualcurlbhatoverB_1[3]*hamil[4]*hamil[6])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[5]*hamil[16])/vmap2)-(0.5*rtg33inv[3]*hamil[8])/vmap2))/m_; + alphavpar[9] = (rdy2*(-((0.2795084971874737*dualcurlbhatoverB_2[3]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_2[5]*hamil[8]*hamil[32])/vmap2-(0.2795084971874737*dualcurlbhatoverB_2[0]*hamil[6]*hamil[32])/vmap2-(0.2795084971874737*dualcurlbhatoverB_2[1]*hamil[2]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_1[5]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_1[1]*hamil[1]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_3[0]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_3[1]*hamil[3]*hamil[32])/vmap2))/(m_*q_); + alphavpar[10] = (rdx2*(-((0.2795084971874737*dualcurlbhatoverB_1[3]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_1[0]*hamil[6]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_3[1]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_3[0]*hamil[8]*hamil[32])/vmap2))/(m_*q_); + alphavpar[11] = (rdy2*(-((0.2795084971874737*dualcurlbhatoverB_2[1]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_2[0]*hamil[8]*hamil[32])/vmap2-(0.2795084971874737*dualcurlbhatoverB_2[5]*hamil[6]*hamil[32])/vmap2-(0.2795084971874737*hamil[2]*dualcurlbhatoverB_2[3]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_3[5]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_3[3]*hamil[3]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_1[0]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*hamil[1]*dualcurlbhatoverB_1[3]*hamil[32])/vmap2))/(m_*q_); + alphavpar[12] = (rdx2*(-((0.125*hamil[4]*dualcurlbhatoverB_1[5]*hamil[21])/vmap2)-(0.125*dualcurlbhatoverB_1[1]*hamil[4]*hamil[12])/vmap2)+rdz2*(-((0.125*dualcurlbhatoverB_3[0]*hamil[4]*hamil[21])/vmap2)-(0.125*dualcurlbhatoverB_3[1]*hamil[4]*hamil[14])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[0]*hamil[21])/vmap2)-(0.5*rtg33inv[1]*hamil[14])/vmap2))/m_; + alphavpar[14] = (rdz2*(-((0.125*hamil[4]*dualcurlbhatoverB_3[5]*hamil[21])/vmap2)-(0.125*dualcurlbhatoverB_3[3]*hamil[4]*hamil[14])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_1[0]*hamil[4]*hamil[21])/vmap2)-(0.125*dualcurlbhatoverB_1[3]*hamil[4]*hamil[12])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[5]*hamil[21])/vmap2)-(0.5*rtg33inv[3]*hamil[14])/vmap2))/m_; + alphavpar[15] = (rdx2*(-((0.2795084971874737*dualcurlbhatoverB_1[3]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_1[0]*hamil[12]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_3[1]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_3[0]*hamil[14]*hamil[32])/vmap2))/(m_*q_); + alphavpar[16] = (rdz2*(-((0.125*dualcurlbhatoverB_3[3]*hamil[4]*hamil[16])/vmap2)-(0.125*hamil[4]*dualcurlbhatoverB_3[5]*hamil[8])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_1[1]*hamil[4]*hamil[16])/vmap2)-(0.125*hamil[4]*dualcurlbhatoverB_1[5]*hamil[6])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[3]*hamil[16])/vmap2)-(0.5*rtg33inv[5]*hamil[8])/vmap2))/m_; + alphavpar[17] = (rdx2*(-((0.2795084971874737*dualcurlbhatoverB_1[5]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_1[1]*hamil[6]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_3[0]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_3[1]*hamil[8]*hamil[32])/vmap2))/(m_*q_); + alphavpar[18] = (rdy2*(-((0.2795084971874737*dualcurlbhatoverB_2[0]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_2[1]*hamil[8]*hamil[32])/vmap2-(0.2795084971874737*dualcurlbhatoverB_2[3]*hamil[6]*hamil[32])/vmap2-(0.2795084971874737*hamil[2]*dualcurlbhatoverB_2[5]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_3[3]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*hamil[3]*dualcurlbhatoverB_3[5]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_1[1]*hamil[7]*hamil[32])/vmap2)-(0.2795084971874737*hamil[1]*dualcurlbhatoverB_1[5]*hamil[32])/vmap2))/(m_*q_); + alphavpar[19] = (rdz2*(-((0.2795084971874737*dualcurlbhatoverB_3[5]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_3[3]*hamil[8]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_1[0]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_1[3]*hamil[6]*hamil[32])/vmap2))/(m_*q_); + alphavpar[21] = (rdz2*(-((0.125*dualcurlbhatoverB_3[3]*hamil[4]*hamil[21])/vmap2)-(0.125*hamil[4]*dualcurlbhatoverB_3[5]*hamil[14])/vmap2)+rdx2*(-((0.125*dualcurlbhatoverB_1[1]*hamil[4]*hamil[21])/vmap2)-(0.125*hamil[4]*dualcurlbhatoverB_1[5]*hamil[12])/vmap2))/(m_*q_)+(vmap[1]*rdz2*(-((0.5*rtg33inv[3]*hamil[21])/vmap2)-(0.5*rtg33inv[5]*hamil[14])/vmap2))/m_; + alphavpar[23] = (rdx2*(-((0.2795084971874737*dualcurlbhatoverB_1[5]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_1[1]*hamil[12]*hamil[32])/vmap2)+rdz2*(-((0.2795084971874737*dualcurlbhatoverB_3[0]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_3[1]*hamil[14]*hamil[32])/vmap2))/(m_*q_); + alphavpar[25] = (rdz2*(-((0.2795084971874737*dualcurlbhatoverB_3[5]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_3[3]*hamil[14]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_1[0]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_1[3]*hamil[12]*hamil[32])/vmap2))/(m_*q_); + alphavpar[26] = (rdz2*(-((0.2795084971874737*dualcurlbhatoverB_3[3]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_3[5]*hamil[8]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_1[1]*hamil[16]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_1[5]*hamil[6]*hamil[32])/vmap2))/(m_*q_); + alphavpar[29] = (rdz2*(-((0.2795084971874737*dualcurlbhatoverB_3[3]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_3[5]*hamil[14]*hamil[32])/vmap2)+rdx2*(-((0.2795084971874737*dualcurlbhatoverB_1[1]*hamil[21]*hamil[32])/vmap2)-(0.2795084971874737*dualcurlbhatoverB_1[5]*hamil[12]*hamil[32])/vmap2))/(m_*q_); out[4] += 0.3061862178478971*(alphavpar[29]*fin[29]+alphavpar[26]*fin[26]+alphavpar[25]*fin[25]+alphavpar[23]*fin[23]+alphavpar[21]*fin[21]+alphavpar[19]*fin[19]+alphavpar[18]*fin[18]+alphavpar[17]*fin[17]+alphavpar[16]*fin[16]+alphavpar[15]*fin[15]+alphavpar[14]*fin[14]+alphavpar[12]*fin[12]+alphavpar[11]*fin[11]+alphavpar[10]*fin[10]+alphavpar[9]*fin[9]+alphavpar[8]*fin[8]+alphavpar[7]*fin[7]+alphavpar[6]*fin[6]+alphavpar[5]*fin[5]+alphavpar[4]*fin[4]+alphavpar[3]*fin[3]+alphavpar[2]*fin[2]+alphavpar[1]*fin[1]+alphavpar[0]*fin[0]); diff --git a/gyrokinetic/ker/dg_gyrokinetic/gkyl_dg_gyrokinetic_kernels.h b/gyrokinetic/ker/dg_gyrokinetic/gkyl_dg_gyrokinetic_kernels.h index 61117ef1c3..00b7369710 100644 --- a/gyrokinetic/ker/dg_gyrokinetic/gkyl_dg_gyrokinetic_kernels.h +++ b/gyrokinetic/ker/dg_gyrokinetic/gkyl_dg_gyrokinetic_kernels.h @@ -228,5 +228,37 @@ GKYL_CU_DH double dg_gyrokinetic_boundary_surfvpar_3x2v_ser_p1(const double *w, const double *flux_surf_edge, const double *flux_surf_skin, const int edge, double* GKYL_RESTRICT out); +GKYL_CU_DH double dg_gyrokinetic_add_apar_vol_1x1v_ser_p1(const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const double *bmag, const double *jacobtot_inv, const double *dualcurlbhatoverB, const double *bioverJB, + const double *b_i, const double *phi, const double *apar, + const double *fin, double* GKYL_RESTRICT out); +GKYL_CU_DH double dg_gyrokinetic_add_apardot_vol_1x1v_ser_p1(const double *vmap, const double q_, const double m_, + const double *apardot, const double *fin, double* GKYL_RESTRICT out); + +GKYL_CU_DH double dg_gyrokinetic_add_apar_vol_1x2v_ser_p1(const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const double *bmag, const double *jacobtot_inv, const double *dualcurlbhatoverB, const double *bioverJB, + const double *b_i, const double *phi, const double *apar, + const double *fin, double* GKYL_RESTRICT out); +GKYL_CU_DH double dg_gyrokinetic_add_apardot_vol_1x2v_ser_p1(const double *vmap, const double q_, const double m_, + const double *apardot, const double *fin, double* GKYL_RESTRICT out); + +GKYL_CU_DH double dg_gyrokinetic_add_apar_vol_2x2v_ser_p1(const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const double *bmag, const double *jacobtot_inv, const double *dualcurlbhatoverB, const double *bioverJB, + const double *b_i, const double *phi, const double *apar, + const double *fin, double* GKYL_RESTRICT out); +GKYL_CU_DH double dg_gyrokinetic_add_apardot_vol_2x2v_ser_p1(const double *vmap, const double q_, const double m_, + const double *apardot, const double *fin, double* GKYL_RESTRICT out); + +GKYL_CU_DH double dg_gyrokinetic_add_apar_vol_3x2v_ser_p1(const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const double *bmag, const double *jacobtot_inv, const double *dualcurlbhatoverB, const double *bioverJB, + const double *b_i, const double *phi, const double *apar, + const double *fin, double* GKYL_RESTRICT out); +GKYL_CU_DH double dg_gyrokinetic_add_apardot_vol_3x2v_ser_p1(const double *vmap, const double q_, const double m_, + const double *apardot, const double *fin, double* GKYL_RESTRICT out); + EXTERN_C_END diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_1x1v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_1x1v_ser_p1.c index ad3734b58e..4aa72445b1 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_1x1v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_1x1v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x1v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x1v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -30,6 +33,9 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x1v_ser_p1( hamil[1] = 0.5*vmapSq[1]*m_; hamil[2] = 0.5*vmapSq[2]*m_; + double apar_surf[3] = {0.}; + apar_surf[0] = 1.7320508075688772*apar[1]+apar[0]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -43,14 +49,14 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x1v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(1.224744871391589*hamil[1]-3.6742346141747664*hamil[2]))/vmap[1]; - mvpar_quad[1] = (1.0*hamil[1])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(3.6742346141747664*hamil[2]+1.224744871391589*hamil[1]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(1.224744871391589*hamil[1]-3.6742346141747664*hamil[2]))/vmap[1]; + dHdvpar_quad[1] = (1.0*hamil[1])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(3.6742346141747664*hamil[2]+1.224744871391589*hamil[1]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -62,7 +68,9 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x1v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.7745966692414834*JfL[5]+0.4472135954999579*JfL[4]-1.1618950038622249*JfL[3]-0.6708203932499369*JfL[2]+0.8660254037844386*JfL[1]+0.5*JfL[0]; @@ -71,7 +79,9 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x1v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.9682458365518543*JfL[5])-0.5590169943749475*JfL[4]+0.8660254037844386*JfL[1]+0.5*JfL[0]; @@ -80,7 +90,9 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x1v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.7745966692414834*JfL[5]+0.4472135954999579*JfL[4]+1.1618950038622249*JfL[3]+0.6708203932499369*JfL[2]+0.8660254037844386*JfL[1]+0.5*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_1x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_1x2v_ser_p1.c index 59a43322bb..b91a2fc316 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_1x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_1x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -31,6 +34,9 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x2v_ser_p1( hamil[2] = (1.7320508075688772*bmag[1]+bmag[0])*vmap[3]; hamil[4] = 0.7071067811865475*vmapSq[2]*m_; + double apar_surf[6] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[1]+1.4142135623730951*apar[0]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -44,14 +50,14 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.8660254037844386*hamil[1]-2.5980762113533156*hamil[4]))/vmap[1]; - mvpar_quad[1] = (0.7071067811865476*hamil[1])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(2.5980762113533156*hamil[4]+0.8660254037844386*hamil[1]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.8660254037844386*hamil[1]-2.5980762113533156*hamil[4]))/vmap[1]; + dHdvpar_quad[1] = (0.7071067811865476*hamil[1])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(2.5980762113533156*hamil[4]+0.8660254037844386*hamil[1]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -63,7 +69,9 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.5477225575051661*JfL[11])-0.3162277660168379*JfL[10]+0.5477225575051661*JfL[9]+0.3162277660168379*JfL[8]+0.8215838362577489*JfL[7]+0.4743416490252568*JfL[6]-0.6123724356957944*JfL[5]-0.8215838362577489*JfL[4]-0.3535533905932737*JfL[3]-0.4743416490252568*JfL[2]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -72,7 +80,9 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.6846531968814573*JfL[11]+0.39528470752104733*JfL[10]-0.6846531968814574*JfL[9]-0.3952847075210473*JfL[8]-0.6123724356957944*JfL[5]-0.3535533905932737*JfL[3]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -81,7 +91,9 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.5477225575051661*JfL[11])-0.3162277660168379*JfL[10]+0.5477225575051661*JfL[9]+0.3162277660168379*JfL[8]-0.8215838362577489*JfL[7]-0.4743416490252568*JfL[6]-0.6123724356957944*JfL[5]+0.8215838362577489*JfL[4]-0.3535533905932737*JfL[3]+0.4743416490252568*JfL[2]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -90,7 +102,9 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.5477225575051661*JfL[11]+0.3162277660168379*JfL[10]+0.5477225575051661*JfL[9]+0.3162277660168379*JfL[8]-0.8215838362577489*JfL[7]-0.4743416490252568*JfL[6]+0.6123724356957944*JfL[5]-0.8215838362577489*JfL[4]+0.3535533905932737*JfL[3]-0.4743416490252568*JfL[2]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -99,7 +113,9 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.6846531968814573*JfL[11])-0.39528470752104733*JfL[10]-0.6846531968814574*JfL[9]-0.3952847075210473*JfL[8]+0.6123724356957944*JfL[5]+0.3535533905932737*JfL[3]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -108,7 +124,9 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.5477225575051661*JfL[11]+0.3162277660168379*JfL[10]+0.5477225575051661*JfL[9]+0.3162277660168379*JfL[8]+0.8215838362577489*JfL[7]+0.4743416490252568*JfL[6]+0.6123724356957944*JfL[5]+0.8215838362577489*JfL[4]+0.3535533905932737*JfL[3]+0.4743416490252568*JfL[2]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_2x2v_ser_p1.c index 5022256ab7..12b2aa34fc 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -34,6 +37,10 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( hamil[5] = (1.7320508075688772*bmag[3]+bmag[2])*vmap[3]; hamil[8] = vmapSq[2]*m_; + double apar_surf[12] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[1]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[3]+1.4142135623730951*apar[2]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -47,14 +54,14 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -66,7 +73,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]-0.38729833462074165*(JfL[21]+JfL[20])-0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.25*JfL[9]-0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -75,7 +87,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])-0.2795084971874737*JfL[22]+0.4841229182759271*(JfL[21]+JfL[20])+0.2795084971874738*(JfL[19]+JfL[18])-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]+0.25*JfL[9]-0.4330127018922193*(JfL[8]+JfL[5])-0.25*(JfL[4]+JfL[2])+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -84,7 +101,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]-0.38729833462074165*(JfL[21]+JfL[20])-0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.25*JfL[9]-0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -93,7 +115,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]+0.38729833462074165*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.25*JfL[9]+0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -102,7 +129,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]+0.2795084971874737*JfL[22]-0.4841229182759271*JfL[21]+0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]+0.2795084971874738*JfL[18]-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]-0.25*JfL[9]+0.4330127018922193*JfL[8]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -111,7 +143,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]+0.38729833462074165*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.25*JfL[9]+0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -130,7 +167,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]-0.38729833462074165*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.25*JfL[9]-0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -139,7 +181,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]+0.2795084971874737*JfL[22]+0.4841229182759271*JfL[21]-0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.2795084971874738*JfL[18]-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]-0.25*JfL[9]-0.4330127018922193*JfL[8]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -148,7 +195,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]-0.38729833462074165*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.25*JfL[9]-0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -157,7 +209,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]+0.38729833462074165*(JfL[21]+JfL[20])+0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.25*JfL[9]+0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -166,7 +223,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])-0.2795084971874737*JfL[22]-0.4841229182759271*(JfL[21]+JfL[20])-0.2795084971874738*(JfL[19]+JfL[18])-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]+0.25*JfL[9]+0.4330127018922193*(JfL[8]+JfL[5])+0.25*(JfL[4]+JfL[2])+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -175,7 +237,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]+0.38729833462074165*(JfL[21]+JfL[20])+0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.25*JfL[9]+0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_3x2v_ser_p1.c index 59e7d2cc46..03a8b25f73 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfx_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -37,6 +40,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( hamil[9] = vmap[3]*(1.7320508075688772*bmag[5]+bmag[3]); hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double apar_surf[24] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[1]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[4]+1.4142135623730951*apar[2]; + apar_surf[2] = 2.4494897427831783*apar[5]+1.4142135623730951*apar[3]; + apar_surf[5] = 2.4494897427831783*apar[7]+1.4142135623730951*apar[6]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -50,14 +59,14 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -69,7 +78,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -78,7 +92,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]-0.3423265984407287*(JfL[45]+JfL[44]+JfL[43])-0.19764235376052364*(JfL[42]+JfL[41])+0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]+0.34232659844072866*(JfL[38]+JfL[37])+0.19764235376052366*(JfL[36]+JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20]+JfL[16])+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*(JfL[5]+JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -87,7 +106,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -96,7 +120,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -105,7 +134,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]+0.3423265984407287*(JfL[45]+JfL[44])-0.3423265984407287*JfL[43]+0.19764235376052364*(JfL[42]+JfL[41])-0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]+0.34232659844072866*(JfL[38]+JfL[37])-0.19764235376052366*JfL[36]+0.19764235376052366*(JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.3061862178478971*JfL[16]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -114,7 +148,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -133,7 +172,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -142,7 +186,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]+0.3423265984407287*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.19764235376052364*JfL[41]+0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]-0.34232659844072866*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]+0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -151,7 +200,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -160,7 +214,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -169,7 +228,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]-0.3423265984407287*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.19764235376052364*JfL[41]-0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]-0.34232659844072866*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])+0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -178,7 +242,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -197,7 +266,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -206,7 +280,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]-0.3423265984407287*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.19764235376052364*JfL[41]+0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]+0.34232659844072866*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -215,7 +294,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -224,7 +308,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -233,7 +322,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]+0.3423265984407287*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.19764235376052364*JfL[41]-0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]+0.34232659844072866*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -242,7 +336,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -261,7 +360,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -270,7 +374,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]+0.3423265984407287*(JfL[45]+JfL[44])-0.3423265984407287*JfL[43]+0.19764235376052364*(JfL[42]+JfL[41])+0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]-0.34232659844072866*(JfL[38]+JfL[37])+0.19764235376052366*JfL[36]-0.19764235376052366*(JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.3061862178478971*JfL[16]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -279,7 +388,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -288,7 +402,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -297,7 +416,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]-0.3423265984407287*(JfL[45]+JfL[44]+JfL[43])-0.19764235376052364*(JfL[42]+JfL[41])-0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]-0.34232659844072866*(JfL[38]+JfL[37])-0.19764235376052366*(JfL[36]+JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20]+JfL[16])+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*(JfL[5]+JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -306,7 +430,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfy_2x2v_ser_p1.c index 31fa960356..fd592e6db1 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfy_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfy_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -34,6 +37,10 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( hamil[5] = (1.7320508075688772*bmag[3]+bmag[1])*vmap[3]; hamil[8] = vmapSq[2]*m_; + double apar_surf[12] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[2]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[3]+1.4142135623730951*apar[1]; + double *flux_surf_nodal = &flux_surf[12]; double cfl = 0.0; double bmag_quad = 0.0; @@ -47,14 +54,14 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -66,7 +73,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]-0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]+0.5809475019311124*JfL[14]-0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]+0.25*JfL[8]-0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -75,7 +87,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])+0.4841229182759271*JfL[22]-0.2795084971874737*JfL[21]+0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]+0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]-0.4330127018922193*JfL[9]+0.25*JfL[8]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -84,7 +101,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]-0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]-0.5809475019311124*JfL[14]+0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]+0.25*JfL[8]+0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -93,7 +115,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])+0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]-0.5809475019311124*JfL[14]+0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]-0.25*JfL[8]-0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -102,7 +129,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]-0.4841229182759271*JfL[22]+0.2795084971874737*JfL[21]+0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]+0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]+0.4330127018922193*JfL[9]-0.25*JfL[8]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -111,7 +143,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])+0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]+0.5809475019311124*JfL[14]-0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]-0.25*JfL[8]+0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -130,7 +167,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*(JfL[15]+JfL[14])+0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]-0.25*JfL[8]-0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -139,7 +181,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*(JfL[23]+JfL[22])+0.2795084971874737*JfL[21]-0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]-0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*(JfL[12]+JfL[9])-0.25*JfL[8]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -148,7 +195,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*(JfL[15]+JfL[14])-0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]-0.25*JfL[8]+0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -157,7 +209,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*(JfL[15]+JfL[14])-0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]+0.25*JfL[8]-0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -166,7 +223,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*(JfL[23]+JfL[22]))-0.2795084971874737*JfL[21]-0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]-0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*(JfL[12]+JfL[9])+0.25*JfL[8]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -175,7 +237,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*(JfL[15]+JfL[14])+0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]+0.25*JfL[8]+0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfy_3x2v_ser_p1.c index ad63fb6149..c11bbbc59b 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfy_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfy_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -39,6 +42,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( hamil[12] = vmap[3]*bmag[5]; hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double apar_surf[24] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[2]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[4]+1.4142135623730951*apar[1]; + apar_surf[2] = 2.4494897427831783*apar[6]+1.4142135623730951*apar[3]; + apar_surf[5] = 2.4494897427831783*apar[7]+1.4142135623730951*apar[5]; + double *flux_surf_nodal = &flux_surf[24]; double cfl = 0.0; double bmag_quad = 0.0; @@ -52,14 +61,14 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -71,7 +80,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -80,7 +94,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]-0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -89,7 +108,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -98,7 +122,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -107,7 +136,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]+0.3423265984407287*JfL[44]-0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -116,7 +150,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -135,7 +174,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -144,7 +188,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -153,7 +202,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -162,7 +216,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -171,7 +230,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -180,7 +244,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -199,7 +268,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -208,7 +282,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])+0.1767766952966368*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -217,7 +296,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -226,7 +310,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -235,7 +324,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -244,7 +338,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -263,7 +362,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -272,7 +376,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]+0.3423265984407287*JfL[44]-0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -281,7 +390,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -290,7 +404,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -299,7 +418,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]-0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])+0.1767766952966368*JfL[21]+0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -308,7 +432,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfz_3x2v_ser_p1.c index 4764aab565..318d3b38df 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfz_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_edge_surfz_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -37,6 +40,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( hamil[8] = vmap[3]*(1.7320508075688772*bmag[5]+bmag[1]); hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double apar_surf[24] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[3]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[5]+1.4142135623730951*apar[1]; + apar_surf[2] = 2.4494897427831783*apar[6]+1.4142135623730951*apar[2]; + apar_surf[5] = 2.4494897427831783*apar[7]+1.4142135623730951*apar[4]; + double *flux_surf_nodal = &flux_surf[48]; double cfl = 0.0; double bmag_quad = 0.0; @@ -50,14 +59,14 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -69,7 +78,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*(JfL[30]+JfL[29])+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]-0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -78,7 +92,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*(JfL[46]+JfL[45])+0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]-0.19764235376052364*(JfL[41]+JfL[40])+0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[16]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -87,7 +106,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*(JfL[30]+JfL[29])-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]+0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -96,7 +120,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*(JfL[30]+JfL[29])-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -105,7 +134,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*(JfL[46]+JfL[45])-0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]+0.19764235376052364*(JfL[41]+JfL[40])+0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.3061862178478971*(JfL[16]+JfL[14])-0.1767766952966368*(JfL[13]+JfL[12])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -114,7 +148,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*(JfL[30]+JfL[29])+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -133,7 +172,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -142,7 +186,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.3423265984407287*JfL[45]-0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]+0.19764235376052364*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*(JfL[16]+JfL[14])-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -151,7 +200,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -160,7 +214,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -169,7 +228,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.3423265984407287*JfL[45]+0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]-0.19764235376052364*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[16]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -178,7 +242,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -197,7 +266,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])+0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -206,7 +280,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]+0.3423265984407287*JfL[45]-0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]-0.19764235376052364*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*(JfL[16]+JfL[14])+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -215,7 +294,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])-0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -224,7 +308,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])-0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -233,7 +322,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]-0.3423265984407287*JfL[45]+0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]+0.19764235376052364*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[16]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -242,7 +336,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])+0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -261,7 +360,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]+0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -270,7 +374,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*(JfL[46]+JfL[45])+0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]+0.19764235376052364*(JfL[41]+JfL[40])-0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[16]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -279,7 +388,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]-0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -288,7 +402,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -297,7 +416,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*(JfL[46]+JfL[45])-0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]-0.19764235376052364*(JfL[41]+JfL[40])-0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.3061862178478971*(JfL[16]+JfL[14])+0.1767766952966368*(JfL[13]+JfL[12])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -306,7 +430,12 @@ GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1.c index 29fc18e21c..20cb1de5fb 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -32,6 +35,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1( double JRatfR[3] = {0.}; + double apar_surf[3] = {0.}; + apar_surf[0] = 1.7320508075688772*apar[1]+apar[0]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -45,14 +51,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(1.224744871391589*hamil[1]-3.6742346141747664*hamil[2]))/vmap[1]; - mvpar_quad[1] = (1.0*hamil[1])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(3.6742346141747664*hamil[2]+1.224744871391589*hamil[1]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(1.224744871391589*hamil[1]-3.6742346141747664*hamil[2]))/vmap[1]; + dHdvpar_quad[1] = (1.0*hamil[1])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(3.6742346141747664*hamil[2]+1.224744871391589*hamil[1]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -64,7 +70,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.7745966692414834*JfL[5]+0.4472135954999579*JfL[4]-1.1618950038622249*JfL[3]-0.6708203932499369*JfL[2]+0.8660254037844386*JfL[1]+0.5*JfL[0]; @@ -73,7 +81,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.9682458365518543*JfL[5])-0.5590169943749475*JfL[4]+0.8660254037844386*JfL[1]+0.5*JfL[0]; @@ -82,7 +92,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.7745966692414834*JfL[5]+0.4472135954999579*JfL[4]+1.1618950038622249*JfL[3]+0.6708203932499369*JfL[2]+0.8660254037844386*JfL[1]+0.5*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1.c index 438f8f354a..79ba15b224 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -33,6 +36,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1( double JRatfR[6] = {0.}; + double apar_surf[6] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[1]+1.4142135623730951*apar[0]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -46,14 +52,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.8660254037844386*hamil[1]-2.5980762113533156*hamil[4]))/vmap[1]; - mvpar_quad[1] = (0.7071067811865476*hamil[1])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(2.5980762113533156*hamil[4]+0.8660254037844386*hamil[1]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.8660254037844386*hamil[1]-2.5980762113533156*hamil[4]))/vmap[1]; + dHdvpar_quad[1] = (0.7071067811865476*hamil[1])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(2.5980762113533156*hamil[4]+0.8660254037844386*hamil[1]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -65,7 +71,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.5477225575051661*JfL[11])-0.3162277660168379*JfL[10]+0.5477225575051661*JfL[9]+0.3162277660168379*JfL[8]+0.8215838362577489*JfL[7]+0.4743416490252568*JfL[6]-0.6123724356957944*JfL[5]-0.8215838362577489*JfL[4]-0.3535533905932737*JfL[3]-0.4743416490252568*JfL[2]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -74,7 +82,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.6846531968814573*JfL[11]+0.39528470752104733*JfL[10]-0.6846531968814574*JfL[9]-0.3952847075210473*JfL[8]-0.6123724356957944*JfL[5]-0.3535533905932737*JfL[3]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -83,7 +93,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.5477225575051661*JfL[11])-0.3162277660168379*JfL[10]+0.5477225575051661*JfL[9]+0.3162277660168379*JfL[8]-0.8215838362577489*JfL[7]-0.4743416490252568*JfL[6]-0.6123724356957944*JfL[5]+0.8215838362577489*JfL[4]-0.3535533905932737*JfL[3]+0.4743416490252568*JfL[2]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -92,7 +104,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.5477225575051661*JfL[11]+0.3162277660168379*JfL[10]+0.5477225575051661*JfL[9]+0.3162277660168379*JfL[8]-0.8215838362577489*JfL[7]-0.4743416490252568*JfL[6]+0.6123724356957944*JfL[5]-0.8215838362577489*JfL[4]+0.3535533905932737*JfL[3]-0.4743416490252568*JfL[2]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -101,7 +115,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.6846531968814573*JfL[11])-0.39528470752104733*JfL[10]-0.6846531968814574*JfL[9]-0.3952847075210473*JfL[8]+0.6123724356957944*JfL[5]+0.3535533905932737*JfL[3]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -110,7 +126,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.5477225575051661*JfL[11]+0.3162277660168379*JfL[10]+0.5477225575051661*JfL[9]+0.3162277660168379*JfL[8]+0.8215838362577489*JfL[7]+0.4743416490252568*JfL[6]+0.6123724356957944*JfL[5]+0.8215838362577489*JfL[4]+0.3535533905932737*JfL[3]+0.4743416490252568*JfL[2]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1.c index 1e08261e4f..db13a0392d 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -48,6 +51,10 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( JRatfR[10] = 0.03333333333333333*(-(25.980762113533157*jacobgeo_rat_surfR[1]*JfR[23])+8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[22]-3.0*jacobgeo_rat_surfR[0]*JfR[21])+15.0*jacobgeo_rat_surfR[0]*JfR[19]); JRatfR[11] = 0.03333333333333333*(8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[19]-3.0*jacobgeo_rat_surfR[0]*JfR[23])+15.0*jacobgeo_rat_surfR[0]*JfR[22]-25.980762113533157*jacobgeo_rat_surfR[1]*JfR[21]); + double apar_surf[12] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[1]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[3]+1.4142135623730951*apar[2]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -61,14 +68,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -80,7 +87,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]-0.38729833462074165*(JfL[21]+JfL[20])-0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.25*JfL[9]-0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -89,7 +101,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])-0.2795084971874737*JfL[22]+0.4841229182759271*(JfL[21]+JfL[20])+0.2795084971874738*(JfL[19]+JfL[18])-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]+0.25*JfL[9]-0.4330127018922193*(JfL[8]+JfL[5])-0.25*(JfL[4]+JfL[2])+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -98,7 +115,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]-0.38729833462074165*(JfL[21]+JfL[20])-0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.25*JfL[9]-0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -107,7 +129,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]+0.38729833462074165*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.25*JfL[9]+0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -116,7 +143,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]+0.2795084971874737*JfL[22]-0.4841229182759271*JfL[21]+0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]+0.2795084971874738*JfL[18]-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]-0.25*JfL[9]+0.4330127018922193*JfL[8]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -125,7 +157,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]+0.38729833462074165*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.25*JfL[9]+0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -144,7 +181,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]-0.38729833462074165*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.25*JfL[9]-0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -153,7 +195,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]+0.2795084971874737*JfL[22]+0.4841229182759271*JfL[21]-0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.2795084971874738*JfL[18]-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]-0.25*JfL[9]-0.4330127018922193*JfL[8]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -162,7 +209,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]-0.38729833462074165*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.25*JfL[9]-0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -171,7 +223,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]+0.38729833462074165*(JfL[21]+JfL[20])+0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.25*JfL[9]+0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -180,7 +237,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])-0.2795084971874737*JfL[22]-0.4841229182759271*(JfL[21]+JfL[20])-0.2795084971874738*(JfL[19]+JfL[18])-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]+0.25*JfL[9]+0.4330127018922193*(JfL[8]+JfL[5])+0.25*(JfL[4]+JfL[2])+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -189,7 +251,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]+0.38729833462074165*(JfL[21]+JfL[20])+0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.25*JfL[9]+0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1.c index fe0b02073f..ad91da2c74 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -63,6 +66,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( JRatfR[22] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[47]+jacobgeo_rat_surfR[2]*JfR[40]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[46]+jacobgeo_rat_surfR[2]*JfR[36])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[45]+jacobgeo_rat_surfR[3]*JfR[44]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[42]+jacobgeo_rat_surfR[3]*JfR[41])); JRatfR[23] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[42]+jacobgeo_rat_surfR[2]*JfR[41])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[47]+jacobgeo_rat_surfR[3]*JfR[40]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[46]+jacobgeo_rat_surfR[3]*JfR[36])-36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[45]+jacobgeo_rat_surfR[2]*JfR[44])); + double apar_surf[24] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[1]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[4]+1.4142135623730951*apar[2]; + apar_surf[2] = 2.4494897427831783*apar[5]+1.4142135623730951*apar[3]; + apar_surf[5] = 2.4494897427831783*apar[7]+1.4142135623730951*apar[6]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -76,14 +85,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -95,7 +104,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -104,7 +118,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]-0.3423265984407287*(JfL[45]+JfL[44]+JfL[43])-0.19764235376052364*(JfL[42]+JfL[41])+0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]+0.34232659844072866*(JfL[38]+JfL[37])+0.19764235376052366*(JfL[36]+JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20]+JfL[16])+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*(JfL[5]+JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -113,7 +132,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -122,7 +146,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -131,7 +160,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]+0.3423265984407287*(JfL[45]+JfL[44])-0.3423265984407287*JfL[43]+0.19764235376052364*(JfL[42]+JfL[41])-0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]+0.34232659844072866*(JfL[38]+JfL[37])-0.19764235376052366*JfL[36]+0.19764235376052366*(JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.3061862178478971*JfL[16]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -140,7 +174,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -159,7 +198,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -168,7 +212,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]+0.3423265984407287*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.19764235376052364*JfL[41]+0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]-0.34232659844072866*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]+0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -177,7 +226,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -186,7 +240,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -195,7 +254,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]-0.3423265984407287*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.19764235376052364*JfL[41]-0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]-0.34232659844072866*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])+0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -204,7 +268,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -223,7 +292,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -232,7 +306,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]-0.3423265984407287*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.19764235376052364*JfL[41]+0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]+0.34232659844072866*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -241,7 +320,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -250,7 +334,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -259,7 +348,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]+0.3423265984407287*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.19764235376052364*JfL[41]-0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]+0.34232659844072866*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -268,7 +362,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -287,7 +386,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -296,7 +400,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]+0.3423265984407287*(JfL[45]+JfL[44])-0.3423265984407287*JfL[43]+0.19764235376052364*(JfL[42]+JfL[41])+0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]-0.34232659844072866*(JfL[38]+JfL[37])+0.19764235376052366*JfL[36]-0.19764235376052366*(JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.3061862178478971*JfL[16]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -305,7 +414,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -314,7 +428,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -323,7 +442,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]-0.3423265984407287*(JfL[45]+JfL[44]+JfL[43])-0.19764235376052364*(JfL[42]+JfL[41])-0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]-0.34232659844072866*(JfL[38]+JfL[37])-0.19764235376052366*(JfL[36]+JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20]+JfL[16])+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*(JfL[5]+JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -332,7 +456,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1.c index 7ba71bc887..91bd8d0353 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -48,6 +51,10 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( JRatfR[10] = 0.03333333333333333*(-(25.980762113533157*jacobgeo_rat_surfR[1]*JfR[23])+8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[21]-3.0*jacobgeo_rat_surfR[0]*JfR[22])+15.0*jacobgeo_rat_surfR[0]*JfR[19]); JRatfR[11] = 0.03333333333333333*(8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[19]-3.0*jacobgeo_rat_surfR[0]*JfR[23])-25.980762113533157*jacobgeo_rat_surfR[1]*JfR[22]+15.0*jacobgeo_rat_surfR[0]*JfR[21]); + double apar_surf[12] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[2]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[3]+1.4142135623730951*apar[1]; + double *flux_surf_nodal = &flux_surf[12]; double cfl = 0.0; double bmag_quad = 0.0; @@ -61,14 +68,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -80,7 +87,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]-0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]+0.5809475019311124*JfL[14]-0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]+0.25*JfL[8]-0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -89,7 +101,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])+0.4841229182759271*JfL[22]-0.2795084971874737*JfL[21]+0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]+0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]-0.4330127018922193*JfL[9]+0.25*JfL[8]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -98,7 +115,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]-0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]-0.5809475019311124*JfL[14]+0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]+0.25*JfL[8]+0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -107,7 +129,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])+0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]-0.5809475019311124*JfL[14]+0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]-0.25*JfL[8]-0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -116,7 +143,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]-0.4841229182759271*JfL[22]+0.2795084971874737*JfL[21]+0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]+0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]+0.4330127018922193*JfL[9]-0.25*JfL[8]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -125,7 +157,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])+0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]+0.5809475019311124*JfL[14]-0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]-0.25*JfL[8]+0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -144,7 +181,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*(JfL[15]+JfL[14])+0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]-0.25*JfL[8]-0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -153,7 +195,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*(JfL[23]+JfL[22])+0.2795084971874737*JfL[21]-0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]-0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*(JfL[12]+JfL[9])-0.25*JfL[8]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -162,7 +209,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*(JfL[15]+JfL[14])-0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]-0.25*JfL[8]+0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -171,7 +223,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*(JfL[15]+JfL[14])-0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]+0.25*JfL[8]-0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -180,7 +237,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*(JfL[23]+JfL[22]))-0.2795084971874737*JfL[21]-0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]-0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*(JfL[12]+JfL[9])+0.25*JfL[8]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -189,7 +251,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*(JfL[15]+JfL[14])+0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]+0.25*JfL[8]+0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1.c index b5e4f00c47..31d234d6e7 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -65,6 +68,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( JRatfR[22] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[47]+jacobgeo_rat_surfR[2]*JfR[41]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[45]+jacobgeo_rat_surfR[2]*JfR[36])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[46]+jacobgeo_rat_surfR[3]*JfR[44]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[42]+jacobgeo_rat_surfR[3]*JfR[40])); JRatfR[23] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[42]+jacobgeo_rat_surfR[2]*JfR[40])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[47]+jacobgeo_rat_surfR[3]*JfR[41]))-36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[46]+jacobgeo_rat_surfR[2]*JfR[44])+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[45]+jacobgeo_rat_surfR[3]*JfR[36])); + double apar_surf[24] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[2]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[4]+1.4142135623730951*apar[1]; + apar_surf[2] = 2.4494897427831783*apar[6]+1.4142135623730951*apar[3]; + apar_surf[5] = 2.4494897427831783*apar[7]+1.4142135623730951*apar[5]; + double *flux_surf_nodal = &flux_surf[24]; double cfl = 0.0; double bmag_quad = 0.0; @@ -78,14 +87,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -97,7 +106,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -106,7 +120,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]-0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -115,7 +134,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -124,7 +148,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -133,7 +162,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]+0.3423265984407287*JfL[44]-0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -142,7 +176,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -161,7 +200,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -170,7 +214,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -179,7 +228,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -188,7 +242,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -197,7 +256,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -206,7 +270,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -225,7 +294,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -234,7 +308,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])+0.1767766952966368*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -243,7 +322,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -252,7 +336,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -261,7 +350,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -270,7 +364,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -289,7 +388,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -298,7 +402,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]+0.3423265984407287*JfL[44]-0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -307,7 +416,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -316,7 +430,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -325,7 +444,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]-0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])+0.1767766952966368*JfL[21]+0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -334,7 +458,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1.c index fa4ad444f6..6b35dbdfd8 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -63,6 +66,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( JRatfR[22] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[47]+jacobgeo_rat_surfR[2]*JfR[42]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[44]+jacobgeo_rat_surfR[2]*JfR[36])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[46]+jacobgeo_rat_surfR[3]*JfR[45]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[41]+jacobgeo_rat_surfR[3]*JfR[40])); JRatfR[23] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[41]+jacobgeo_rat_surfR[2]*JfR[40])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[47]+jacobgeo_rat_surfR[3]*JfR[42]))-36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[46]+jacobgeo_rat_surfR[2]*JfR[45])+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[44]+jacobgeo_rat_surfR[3]*JfR[36])); + double apar_surf[24] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[3]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[5]+1.4142135623730951*apar[1]; + apar_surf[2] = 2.4494897427831783*apar[6]+1.4142135623730951*apar[2]; + apar_surf[5] = 2.4494897427831783*apar[7]+1.4142135623730951*apar[4]; + double *flux_surf_nodal = &flux_surf[48]; double cfl = 0.0; double bmag_quad = 0.0; @@ -76,14 +85,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -95,7 +104,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*(JfL[30]+JfL[29])+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]-0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -104,7 +118,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*(JfL[46]+JfL[45])+0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]-0.19764235376052364*(JfL[41]+JfL[40])+0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[16]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -113,7 +132,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*(JfL[30]+JfL[29])-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]+0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -122,7 +146,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*(JfL[30]+JfL[29])-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -131,7 +160,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*(JfL[46]+JfL[45])-0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]+0.19764235376052364*(JfL[41]+JfL[40])+0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.3061862178478971*(JfL[16]+JfL[14])-0.1767766952966368*(JfL[13]+JfL[12])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -140,7 +174,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*(JfL[30]+JfL[29])+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -159,7 +198,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -168,7 +212,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.3423265984407287*JfL[45]-0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]+0.19764235376052364*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*(JfL[16]+JfL[14])-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -177,7 +226,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -186,7 +240,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -195,7 +254,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.3423265984407287*JfL[45]+0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]-0.19764235376052364*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[16]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -204,7 +268,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -223,7 +292,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])+0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -232,7 +306,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]+0.3423265984407287*JfL[45]-0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]-0.19764235376052364*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*(JfL[16]+JfL[14])+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -241,7 +320,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])-0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -250,7 +334,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])-0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -259,7 +348,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]-0.3423265984407287*JfL[45]+0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]+0.19764235376052364*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[16]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -268,7 +362,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])+0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -287,7 +386,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]+0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -296,7 +400,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*(JfL[46]+JfL[45])+0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]+0.19764235376052364*(JfL[41]+JfL[40])-0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[16]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -305,7 +414,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]-0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -314,7 +428,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -323,7 +442,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*(JfL[46]+JfL[45])-0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]-0.19764235376052364*(JfL[41]+JfL[40])-0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.3061862178478971*(JfL[16]+JfL[14])+0.1767766952966368*(JfL[13]+JfL[12])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -332,7 +456,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1.c index 77d6899c97..1ae0a018bf 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -32,6 +35,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1( double JRatfL[3] = {0.}; + double apar_surf[3] = {0.}; + apar_surf[0] = apar[0]-1.7320508075688772*apar[1]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -45,14 +51,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(1.224744871391589*hamil[1]-3.6742346141747664*hamil[2]))/vmap[1]; - mvpar_quad[1] = (1.0*hamil[1])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(3.6742346141747664*hamil[2]+1.224744871391589*hamil[1]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(1.224744871391589*hamil[1]-3.6742346141747664*hamil[2]))/vmap[1]; + dHdvpar_quad[1] = (1.0*hamil[1])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(3.6742346141747664*hamil[2]+1.224744871391589*hamil[1]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -64,7 +70,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.0; @@ -73,7 +81,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.0; @@ -82,7 +92,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.0; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1.c index 8c2aac9ad9..88c7ba441c 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -33,6 +36,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1( double JRatfL[6] = {0.}; + double apar_surf[6] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[1]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -46,14 +52,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.8660254037844386*hamil[1]-2.5980762113533156*hamil[4]))/vmap[1]; - mvpar_quad[1] = (0.7071067811865476*hamil[1])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(2.5980762113533156*hamil[4]+0.8660254037844386*hamil[1]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.8660254037844386*hamil[1]-2.5980762113533156*hamil[4]))/vmap[1]; + dHdvpar_quad[1] = (0.7071067811865476*hamil[1])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(2.5980762113533156*hamil[4]+0.8660254037844386*hamil[1]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -65,7 +71,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.0; @@ -74,7 +82,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.0; @@ -83,7 +93,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.0; @@ -92,7 +104,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.0; @@ -101,7 +115,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.0; @@ -110,7 +126,9 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.0; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1.c index 7e1113c075..3ffcbb20e6 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -48,6 +51,10 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( JRatfL[10] = 0.03333333333333333*(25.980762113533157*jacobgeo_rat_surfL[1]*JfL[23]+8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[22]+3.0*jacobgeo_rat_surfL[0]*JfL[21])+15.0*jacobgeo_rat_surfL[0]*JfL[19]); JRatfL[11] = 0.03333333333333333*(8.660254037844387*(3.0*jacobgeo_rat_surfL[0]*JfL[23]+1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[19])+15.0*jacobgeo_rat_surfL[0]*JfL[22]+25.980762113533157*jacobgeo_rat_surfL[1]*JfL[21]); + double apar_surf[12] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[1]; + apar_surf[1] = 1.4142135623730951*apar[2]-2.4494897427831783*apar[3]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -61,14 +68,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -80,7 +87,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]-0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]-0.4743416490252568*JRatfL[7]+0.4743416490252568*JRatfL[6]+0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -89,7 +101,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3952847075210473*JRatfL[11])+0.39528470752104733*(JRatfL[10]+JRatfL[9])-0.3952847075210473*JRatfL[8]+0.3535533905932737*JRatfL[5]-0.3535533905932737*(JRatfL[3]+JRatfL[1])+0.3535533905932737*JRatfL[0]; @@ -98,7 +115,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]-0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]+0.4743416490252568*JRatfL[7]-0.4743416490252568*JRatfL[6]+0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -107,7 +129,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])+0.31622776601683794*JRatfL[10]-0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]+0.4743416490252568*JRatfL[7]-0.4743416490252568*JRatfL[6]-0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -116,7 +143,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3952847075210473*JRatfL[11]-0.39528470752104733*JRatfL[10]+0.39528470752104733*JRatfL[9]-0.3952847075210473*JRatfL[8]-0.3535533905932737*JRatfL[5]+0.3535533905932737*JRatfL[3]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -125,7 +157,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])+0.31622776601683794*JRatfL[10]-0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]-0.4743416490252568*JRatfL[7]+0.4743416490252568*JRatfL[6]-0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -144,7 +181,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])-0.31622776601683794*JRatfL[10]+0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]+0.4743416490252568*(JRatfL[7]+JRatfL[6])-0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -153,7 +195,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3952847075210473*JRatfL[11]+0.39528470752104733*JRatfL[10]-0.39528470752104733*JRatfL[9]-0.3952847075210473*JRatfL[8]-0.3535533905932737*(JRatfL[5]+JRatfL[3])+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -162,7 +209,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])-0.31622776601683794*JRatfL[10]+0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]-0.4743416490252568*(JRatfL[7]+JRatfL[6])-0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -171,7 +223,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]+0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]-0.4743416490252568*(JRatfL[7]+JRatfL[6])+0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -180,7 +237,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3952847075210473*JRatfL[11])-0.39528470752104733*(JRatfL[10]+JRatfL[9])-0.3952847075210473*JRatfL[8]+0.3535533905932737*(JRatfL[5]+JRatfL[3]+JRatfL[1]+JRatfL[0]); @@ -189,7 +251,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]+0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]+0.4743416490252568*(JRatfL[7]+JRatfL[6])+0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1.c index 34dc77abfd..71438a6185 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -63,6 +66,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( JRatfL[22] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[47]+jacobgeo_rat_surfL[2]*JfL[40])+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[46]+jacobgeo_rat_surfL[2]*JfL[36])+4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[45]+jacobgeo_rat_surfL[3]*JfL[44]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[42]+jacobgeo_rat_surfL[3]*JfL[41])); JRatfL[23] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[47]+jacobgeo_rat_surfL[3]*JfL[40])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[42]+jacobgeo_rat_surfL[2]*JfL[41]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[46]+jacobgeo_rat_surfL[3]*JfL[36])+36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[45]+jacobgeo_rat_surfL[2]*JfL[44])); + double apar_surf[24] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[1]; + apar_surf[1] = 1.4142135623730951*apar[2]-2.4494897427831783*apar[4]; + apar_surf[2] = 1.4142135623730951*apar[3]-2.4494897427831783*apar[5]; + apar_surf[5] = 1.4142135623730951*apar[6]-2.4494897427831783*apar[7]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -76,14 +85,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -95,7 +104,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*(JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]+0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -104,7 +118,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]-0.2795084971874737*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.2795084971874738*(JRatfL[19]+JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]-0.25*JRatfL[12]+0.25*(JRatfL[9]+JRatfL[8]+JRatfL[5])-0.25*(JRatfL[4]+JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -113,7 +132,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*(JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]+0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -122,7 +146,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*(JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -131,7 +160,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])+0.2795084971874737*(JRatfL[22]+JRatfL[21])-0.2795084971874737*JRatfL[20]-0.2795084971874738*JRatfL[19]+0.2795084971874738*(JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]+0.25*JRatfL[12]-0.25*(JRatfL[9]+JRatfL[8])+0.25*(JRatfL[5]+JRatfL[4])-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -140,7 +174,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*(JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -159,7 +198,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*JRatfL[14]-0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*JRatfL[9]+0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -168,7 +212,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])+0.2795084971874737*JRatfL[22]-0.2795084971874737*JRatfL[21]+0.2795084971874737*JRatfL[20]+0.2795084971874738*JRatfL[19]-0.2795084971874738*JRatfL[18]+0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]+0.25*JRatfL[12]-0.25*JRatfL[9]+0.25*JRatfL[8]-0.25*(JRatfL[5]+JRatfL[4])+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -177,7 +226,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*JRatfL[14]+0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*JRatfL[9]+0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -186,7 +240,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*JRatfL[14]+0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]+0.25*JRatfL[9]-0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -195,7 +254,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]-0.2795084971874737*JRatfL[22]+0.2795084971874737*(JRatfL[21]+JRatfL[20])-0.2795084971874738*(JRatfL[19]+JRatfL[18])+0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]-0.25*JRatfL[12]+0.25*JRatfL[9]-0.25*(JRatfL[8]+JRatfL[5])+0.25*(JRatfL[4]+JRatfL[2])-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -204,7 +268,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*JRatfL[14]-0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]+0.25*JRatfL[9]-0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -223,7 +292,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14])+0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*JRatfL[9]-0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -232,7 +306,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])-0.2795084971874737*JRatfL[22]+0.2795084971874737*(JRatfL[21]+JRatfL[20])+0.2795084971874738*(JRatfL[19]+JRatfL[18])-0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]+0.25*(JRatfL[12]+JRatfL[9])-0.25*(JRatfL[8]+JRatfL[5]+JRatfL[4]+JRatfL[2])+0.25*(JRatfL[1]+JRatfL[0]); @@ -241,7 +320,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14])-0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*JRatfL[9]-0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -250,7 +334,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14])-0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]-0.25*JRatfL[9]+0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -259,7 +348,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]+0.2795084971874737*JRatfL[22]-0.2795084971874737*JRatfL[21]+0.2795084971874737*JRatfL[20]-0.2795084971874738*JRatfL[19]+0.2795084971874738*JRatfL[18]-0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]-0.25*(JRatfL[12]+JRatfL[9])+0.25*JRatfL[8]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -268,7 +362,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14])+0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]-0.25*JRatfL[9]+0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -287,7 +386,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]-0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -296,7 +400,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]+0.2795084971874737*(JRatfL[22]+JRatfL[21])-0.2795084971874737*JRatfL[20]+0.2795084971874738*JRatfL[19]-0.2795084971874738*(JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]-0.25*(JRatfL[12]+JRatfL[9]+JRatfL[8])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -305,7 +414,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]-0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -314,7 +428,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -323,7 +442,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])-0.2795084971874737*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.2795084971874738*(JRatfL[19]+JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]+0.25*(JRatfL[12]+JRatfL[9]+JRatfL[8]+JRatfL[5]+JRatfL[4]+JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -332,7 +456,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1.c index a8c95150bb..ab2bc4b14f 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -48,6 +51,10 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( JRatfL[10] = 0.03333333333333333*(25.980762113533157*jacobgeo_rat_surfL[1]*JfL[23]+8.660254037844387*(3.0*jacobgeo_rat_surfL[0]*JfL[22]+1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[21])+15.0*jacobgeo_rat_surfL[0]*JfL[19]); JRatfL[11] = 0.03333333333333333*(8.660254037844387*(3.0*jacobgeo_rat_surfL[0]*JfL[23]+1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[19])+25.980762113533157*jacobgeo_rat_surfL[1]*JfL[22]+15.0*jacobgeo_rat_surfL[0]*JfL[21]); + double apar_surf[12] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[2]; + apar_surf[1] = 1.4142135623730951*apar[1]-2.4494897427831783*apar[3]; + double *flux_surf_nodal = &flux_surf[12]; double cfl = 0.0; double bmag_quad = 0.0; @@ -61,14 +68,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -80,7 +87,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]-0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]-0.4743416490252568*JRatfL[7]+0.4743416490252568*JRatfL[6]+0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -89,7 +101,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3952847075210473*JRatfL[11])+0.39528470752104733*(JRatfL[10]+JRatfL[9])-0.3952847075210473*JRatfL[8]+0.3535533905932737*JRatfL[5]-0.3535533905932737*(JRatfL[3]+JRatfL[1])+0.3535533905932737*JRatfL[0]; @@ -98,7 +115,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]-0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]+0.4743416490252568*JRatfL[7]-0.4743416490252568*JRatfL[6]+0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -107,7 +129,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])+0.31622776601683794*JRatfL[10]-0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]+0.4743416490252568*JRatfL[7]-0.4743416490252568*JRatfL[6]-0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -116,7 +143,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3952847075210473*JRatfL[11]-0.39528470752104733*JRatfL[10]+0.39528470752104733*JRatfL[9]-0.3952847075210473*JRatfL[8]-0.3535533905932737*JRatfL[5]+0.3535533905932737*JRatfL[3]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -125,7 +157,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])+0.31622776601683794*JRatfL[10]-0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]-0.4743416490252568*JRatfL[7]+0.4743416490252568*JRatfL[6]-0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -144,7 +181,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])-0.31622776601683794*JRatfL[10]+0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]+0.4743416490252568*(JRatfL[7]+JRatfL[6])-0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -153,7 +195,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3952847075210473*JRatfL[11]+0.39528470752104733*JRatfL[10]-0.39528470752104733*JRatfL[9]-0.3952847075210473*JRatfL[8]-0.3535533905932737*(JRatfL[5]+JRatfL[3])+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -162,7 +209,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])-0.31622776601683794*JRatfL[10]+0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]-0.4743416490252568*(JRatfL[7]+JRatfL[6])-0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -171,7 +223,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]+0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]-0.4743416490252568*(JRatfL[7]+JRatfL[6])+0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -180,7 +237,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3952847075210473*JRatfL[11])-0.39528470752104733*(JRatfL[10]+JRatfL[9])-0.3952847075210473*JRatfL[8]+0.3535533905932737*(JRatfL[5]+JRatfL[3]+JRatfL[1]+JRatfL[0]); @@ -189,7 +251,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]+0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]+0.4743416490252568*(JRatfL[7]+JRatfL[6])+0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1.c index 1dd20085ee..24e6d694e6 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -65,6 +68,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( JRatfL[22] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[47]+jacobgeo_rat_surfL[2]*JfL[41])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[46]+jacobgeo_rat_surfL[3]*JfL[44])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[45]+jacobgeo_rat_surfL[2]*JfL[36]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[42]+jacobgeo_rat_surfL[3]*JfL[40])); JRatfL[23] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[47]+jacobgeo_rat_surfL[3]*JfL[41])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[42]+jacobgeo_rat_surfL[2]*JfL[40]))+36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[46]+jacobgeo_rat_surfL[2]*JfL[44])+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[45]+jacobgeo_rat_surfL[3]*JfL[36])); + double apar_surf[24] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[2]; + apar_surf[1] = 1.4142135623730951*apar[1]-2.4494897427831783*apar[4]; + apar_surf[2] = 1.4142135623730951*apar[3]-2.4494897427831783*apar[6]; + apar_surf[5] = 1.4142135623730951*apar[5]-2.4494897427831783*apar[7]; + double *flux_surf_nodal = &flux_surf[24]; double cfl = 0.0; double bmag_quad = 0.0; @@ -78,14 +87,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -97,7 +106,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*(JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]+0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -106,7 +120,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]-0.2795084971874737*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.2795084971874738*(JRatfL[19]+JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]-0.25*JRatfL[12]+0.25*(JRatfL[9]+JRatfL[8]+JRatfL[5])-0.25*(JRatfL[4]+JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -115,7 +134,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*(JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]+0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -124,7 +148,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*(JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -133,7 +162,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])+0.2795084971874737*(JRatfL[22]+JRatfL[21])-0.2795084971874737*JRatfL[20]-0.2795084971874738*JRatfL[19]+0.2795084971874738*(JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]+0.25*JRatfL[12]-0.25*(JRatfL[9]+JRatfL[8])+0.25*(JRatfL[5]+JRatfL[4])-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -142,7 +176,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*(JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -161,7 +200,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*JRatfL[14]-0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*JRatfL[9]+0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -170,7 +214,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])+0.2795084971874737*JRatfL[22]-0.2795084971874737*JRatfL[21]+0.2795084971874737*JRatfL[20]+0.2795084971874738*JRatfL[19]-0.2795084971874738*JRatfL[18]+0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]+0.25*JRatfL[12]-0.25*JRatfL[9]+0.25*JRatfL[8]-0.25*(JRatfL[5]+JRatfL[4])+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -179,7 +228,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*JRatfL[14]+0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*JRatfL[9]+0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -188,7 +242,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*JRatfL[14]+0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]+0.25*JRatfL[9]-0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -197,7 +256,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]-0.2795084971874737*JRatfL[22]+0.2795084971874737*(JRatfL[21]+JRatfL[20])-0.2795084971874738*(JRatfL[19]+JRatfL[18])+0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]-0.25*JRatfL[12]+0.25*JRatfL[9]-0.25*(JRatfL[8]+JRatfL[5])+0.25*(JRatfL[4]+JRatfL[2])-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -206,7 +270,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*JRatfL[14]-0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]+0.25*JRatfL[9]-0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -225,7 +294,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14])+0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*JRatfL[9]-0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -234,7 +308,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])-0.2795084971874737*JRatfL[22]+0.2795084971874737*(JRatfL[21]+JRatfL[20])+0.2795084971874738*(JRatfL[19]+JRatfL[18])-0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]+0.25*(JRatfL[12]+JRatfL[9])-0.25*(JRatfL[8]+JRatfL[5]+JRatfL[4]+JRatfL[2])+0.25*(JRatfL[1]+JRatfL[0]); @@ -243,7 +322,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14])-0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*JRatfL[9]-0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -252,7 +336,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14])-0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]-0.25*JRatfL[9]+0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -261,7 +350,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]+0.2795084971874737*JRatfL[22]-0.2795084971874737*JRatfL[21]+0.2795084971874737*JRatfL[20]-0.2795084971874738*JRatfL[19]+0.2795084971874738*JRatfL[18]-0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]-0.25*(JRatfL[12]+JRatfL[9])+0.25*JRatfL[8]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -270,7 +364,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14])+0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]-0.25*JRatfL[9]+0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -289,7 +388,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]-0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -298,7 +402,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]+0.2795084971874737*(JRatfL[22]+JRatfL[21])-0.2795084971874737*JRatfL[20]+0.2795084971874738*JRatfL[19]-0.2795084971874738*(JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]-0.25*(JRatfL[12]+JRatfL[9]+JRatfL[8])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -307,7 +416,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]-0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -316,7 +430,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -325,7 +444,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])-0.2795084971874737*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.2795084971874738*(JRatfL[19]+JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]+0.25*(JRatfL[12]+JRatfL[9]+JRatfL[8]+JRatfL[5]+JRatfL[4]+JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -334,7 +458,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1.c index 714859fda8..81d7446ca0 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -63,6 +66,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( JRatfL[22] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[47]+jacobgeo_rat_surfL[2]*JfL[42])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[46]+jacobgeo_rat_surfL[3]*JfL[45])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[44]+jacobgeo_rat_surfL[2]*JfL[36]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[41]+jacobgeo_rat_surfL[3]*JfL[40])); JRatfL[23] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[47]+jacobgeo_rat_surfL[3]*JfL[42])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[41]+jacobgeo_rat_surfL[2]*JfL[40]))+36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[46]+jacobgeo_rat_surfL[2]*JfL[45])+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[44]+jacobgeo_rat_surfL[3]*JfL[36])); + double apar_surf[24] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[3]; + apar_surf[1] = 1.4142135623730951*apar[1]-2.4494897427831783*apar[5]; + apar_surf[2] = 1.4142135623730951*apar[2]-2.4494897427831783*apar[6]; + apar_surf[5] = 1.4142135623730951*apar[4]-2.4494897427831783*apar[7]; + double *flux_surf_nodal = &flux_surf[48]; double cfl = 0.0; double bmag_quad = 0.0; @@ -76,14 +85,14 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -95,7 +104,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*(JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]+0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -104,7 +118,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]-0.2795084971874737*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.2795084971874738*(JRatfL[19]+JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]-0.25*JRatfL[12]+0.25*(JRatfL[9]+JRatfL[8]+JRatfL[5])-0.25*(JRatfL[4]+JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -113,7 +132,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*(JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]+0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -122,7 +146,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*(JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -131,7 +160,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])+0.2795084971874737*(JRatfL[22]+JRatfL[21])-0.2795084971874737*JRatfL[20]-0.2795084971874738*JRatfL[19]+0.2795084971874738*(JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]+0.25*JRatfL[12]-0.25*(JRatfL[9]+JRatfL[8])+0.25*(JRatfL[5]+JRatfL[4])-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -140,7 +174,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*(JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -159,7 +198,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*JRatfL[14]-0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*JRatfL[9]+0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -168,7 +212,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])+0.2795084971874737*JRatfL[22]-0.2795084971874737*JRatfL[21]+0.2795084971874737*JRatfL[20]+0.2795084971874738*JRatfL[19]-0.2795084971874738*JRatfL[18]+0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]+0.25*JRatfL[12]-0.25*JRatfL[9]+0.25*JRatfL[8]-0.25*(JRatfL[5]+JRatfL[4])+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -177,7 +226,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*JRatfL[14]+0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*JRatfL[9]+0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -186,7 +240,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*JRatfL[14]+0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]+0.25*JRatfL[9]-0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -195,7 +254,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]-0.2795084971874737*JRatfL[22]+0.2795084971874737*(JRatfL[21]+JRatfL[20])-0.2795084971874738*(JRatfL[19]+JRatfL[18])+0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]-0.25*JRatfL[12]+0.25*JRatfL[9]-0.25*(JRatfL[8]+JRatfL[5])+0.25*(JRatfL[4]+JRatfL[2])-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -204,7 +268,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*JRatfL[14]-0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]+0.25*JRatfL[9]-0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -223,7 +292,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14])+0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*JRatfL[9]-0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -232,7 +306,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])-0.2795084971874737*JRatfL[22]+0.2795084971874737*(JRatfL[21]+JRatfL[20])+0.2795084971874738*(JRatfL[19]+JRatfL[18])-0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]+0.25*(JRatfL[12]+JRatfL[9])-0.25*(JRatfL[8]+JRatfL[5]+JRatfL[4]+JRatfL[2])+0.25*(JRatfL[1]+JRatfL[0]); @@ -241,7 +320,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14])-0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*JRatfL[9]-0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -250,7 +334,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14])-0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]-0.25*JRatfL[9]+0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -259,7 +348,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]+0.2795084971874737*JRatfL[22]-0.2795084971874737*JRatfL[21]+0.2795084971874737*JRatfL[20]-0.2795084971874738*JRatfL[19]+0.2795084971874738*JRatfL[18]-0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]-0.25*(JRatfL[12]+JRatfL[9])+0.25*JRatfL[8]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -268,7 +362,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14])+0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]-0.25*JRatfL[9]+0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -287,7 +386,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]-0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -296,7 +400,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]+0.2795084971874737*(JRatfL[22]+JRatfL[21])-0.2795084971874737*JRatfL[20]+0.2795084971874738*JRatfL[19]-0.2795084971874738*(JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]-0.25*(JRatfL[12]+JRatfL[9]+JRatfL[8])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -305,7 +414,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]-0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -314,7 +428,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -323,7 +442,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])-0.2795084971874737*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.2795084971874738*(JRatfL[19]+JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]+0.25*(JRatfL[12]+JRatfL[9]+JRatfL[8]+JRatfL[5]+JRatfL[4]+JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -332,7 +456,12 @@ GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1.c index 96559ef1af..226d1e5196 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -34,6 +37,10 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( hamil[5] = (1.7320508075688772*bmag[3]+bmag[2])*vmap[3]; hamil[8] = vmapSq[2]*m_; + double apar_surf[12] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[1]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[3]+1.4142135623730951*apar[2]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -47,14 +54,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -67,6 +74,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]-0.38729833462074165*(JfL[21]+JfL[20])-0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.25*JfL[9]-0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -76,6 +84,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])-0.2795084971874737*JfL[22]+0.4841229182759271*(JfL[21]+JfL[20])+0.2795084971874738*(JfL[19]+JfL[18])-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]+0.25*JfL[9]-0.4330127018922193*(JfL[8]+JfL[5])-0.25*(JfL[4]+JfL[2])+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -85,6 +94,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]-0.38729833462074165*(JfL[21]+JfL[20])-0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.25*JfL[9]-0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -94,6 +104,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]+0.38729833462074165*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.25*JfL[9]+0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -103,6 +114,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]+0.2795084971874737*JfL[22]-0.4841229182759271*JfL[21]+0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]+0.2795084971874738*JfL[18]-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]-0.25*JfL[9]+0.4330127018922193*JfL[8]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -112,6 +124,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]+0.38729833462074165*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.25*JfL[9]+0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -131,6 +144,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]-0.38729833462074165*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.25*JfL[9]-0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -140,6 +154,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]+0.2795084971874737*JfL[22]+0.4841229182759271*JfL[21]-0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.2795084971874738*JfL[18]-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]-0.25*JfL[9]-0.4330127018922193*JfL[8]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -149,6 +164,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]-0.38729833462074165*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.25*JfL[9]-0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -158,6 +174,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]+0.38729833462074165*(JfL[21]+JfL[20])+0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.25*JfL[9]+0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -167,6 +184,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])-0.2795084971874737*JfL[22]-0.4841229182759271*(JfL[21]+JfL[20])-0.2795084971874738*(JfL[19]+JfL[18])-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]+0.25*JfL[9]+0.4330127018922193*(JfL[8]+JfL[5])+0.25*(JfL[4]+JfL[2])+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -176,6 +194,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]+0.38729833462074165*(JfL[21]+JfL[20])+0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.25*JfL[9]+0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1.c index cf1154a0a0..72bcbe3e03 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -37,6 +40,12 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( hamil[9] = vmap[3]*(1.7320508075688772*bmag[5]+bmag[3]); hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double apar_surf[24] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[1]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[4]+1.4142135623730951*apar[2]; + apar_surf[2] = 2.4494897427831783*apar[5]+1.4142135623730951*apar[3]; + apar_surf[5] = 2.4494897427831783*apar[7]+1.4142135623730951*apar[6]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -50,14 +59,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -70,6 +79,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -79,6 +89,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]-0.3423265984407287*(JfL[45]+JfL[44]+JfL[43])-0.19764235376052364*(JfL[42]+JfL[41])+0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]+0.34232659844072866*(JfL[38]+JfL[37])+0.19764235376052366*(JfL[36]+JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20]+JfL[16])+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*(JfL[5]+JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -88,6 +99,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -97,6 +109,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -106,6 +119,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]+0.3423265984407287*(JfL[45]+JfL[44])-0.3423265984407287*JfL[43]+0.19764235376052364*(JfL[42]+JfL[41])-0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]+0.34232659844072866*(JfL[38]+JfL[37])-0.19764235376052366*JfL[36]+0.19764235376052366*(JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.3061862178478971*JfL[16]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -115,6 +129,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -134,6 +149,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -143,6 +159,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]+0.3423265984407287*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.19764235376052364*JfL[41]+0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]-0.34232659844072866*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]+0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -152,6 +169,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -161,6 +179,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -170,6 +189,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]-0.3423265984407287*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.19764235376052364*JfL[41]-0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]-0.34232659844072866*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])+0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -179,6 +199,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -198,6 +219,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -207,6 +229,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]-0.3423265984407287*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.19764235376052364*JfL[41]+0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]+0.34232659844072866*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -216,6 +239,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -225,6 +249,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -234,6 +259,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]+0.3423265984407287*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.19764235376052364*JfL[41]-0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]+0.34232659844072866*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -243,6 +269,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -262,6 +289,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -271,6 +299,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]+0.3423265984407287*(JfL[45]+JfL[44])-0.3423265984407287*JfL[43]+0.19764235376052364*(JfL[42]+JfL[41])+0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]-0.34232659844072866*(JfL[38]+JfL[37])+0.19764235376052366*JfL[36]-0.19764235376052366*(JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.3061862178478971*JfL[16]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -280,6 +309,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -289,6 +319,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -298,6 +329,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]-0.3423265984407287*(JfL[45]+JfL[44]+JfL[43])-0.19764235376052364*(JfL[42]+JfL[41])-0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]-0.34232659844072866*(JfL[38]+JfL[37])-0.19764235376052366*(JfL[36]+JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20]+JfL[16])+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*(JfL[5]+JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -307,6 +339,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1.c index 21f961c76a..3a1f1bffc8 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -34,6 +37,10 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( hamil[5] = (1.7320508075688772*bmag[3]+bmag[1])*vmap[3]; hamil[8] = vmapSq[2]*m_; + double apar_surf[12] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[2]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[3]+1.4142135623730951*apar[1]; + double *flux_surf_nodal = &flux_surf[12]; double cfl = 0.0; double bmag_quad = 0.0; @@ -47,14 +54,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -66,7 +73,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]-0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]+0.5809475019311124*JfL[14]-0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]+0.25*JfL[8]-0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -75,7 +83,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])+0.4841229182759271*JfL[22]-0.2795084971874737*JfL[21]+0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]+0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]-0.4330127018922193*JfL[9]+0.25*JfL[8]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -84,7 +93,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]-0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]-0.5809475019311124*JfL[14]+0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]+0.25*JfL[8]+0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -93,7 +103,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])+0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]-0.5809475019311124*JfL[14]+0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]-0.25*JfL[8]-0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -102,7 +113,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]-0.4841229182759271*JfL[22]+0.2795084971874737*JfL[21]+0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]+0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]+0.4330127018922193*JfL[9]-0.25*JfL[8]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -111,7 +123,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])+0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]+0.5809475019311124*JfL[14]-0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]-0.25*JfL[8]+0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -130,7 +143,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*(JfL[15]+JfL[14])+0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]-0.25*JfL[8]-0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -139,7 +153,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*(JfL[23]+JfL[22])+0.2795084971874737*JfL[21]-0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]-0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*(JfL[12]+JfL[9])-0.25*JfL[8]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -148,7 +163,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*(JfL[15]+JfL[14])-0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]-0.25*JfL[8]+0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -157,7 +173,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*(JfL[15]+JfL[14])-0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]+0.25*JfL[8]-0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -166,7 +183,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*(JfL[23]+JfL[22]))-0.2795084971874737*JfL[21]-0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]-0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*(JfL[12]+JfL[9])+0.25*JfL[8]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -175,7 +193,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*(JfL[15]+JfL[14])+0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]+0.25*JfL[8]+0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1.c index b90d9d2cf1..57678d3630 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -39,6 +42,12 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( hamil[12] = vmap[3]*bmag[5]; hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double apar_surf[24] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[2]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[4]+1.4142135623730951*apar[1]; + apar_surf[2] = 2.4494897427831783*apar[6]+1.4142135623730951*apar[3]; + apar_surf[5] = 2.4494897427831783*apar[7]+1.4142135623730951*apar[5]; + double *flux_surf_nodal = &flux_surf[24]; double cfl = 0.0; double bmag_quad = 0.0; @@ -52,14 +61,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -72,6 +81,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -81,6 +91,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]-0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -90,6 +101,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -99,6 +111,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -108,6 +121,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]+0.3423265984407287*JfL[44]-0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -117,6 +131,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -136,6 +151,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -145,6 +161,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -154,6 +171,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -163,6 +181,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -172,6 +191,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -181,6 +201,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -200,6 +221,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -209,6 +231,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])+0.1767766952966368*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -218,6 +241,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -227,6 +251,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -236,6 +261,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -245,6 +271,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -264,6 +291,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -273,6 +301,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]+0.3423265984407287*JfL[44]-0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -282,6 +311,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -291,6 +321,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -300,6 +331,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]-0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])+0.1767766952966368*JfL[21]+0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -309,6 +341,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1.c index 389c6dfd3c..7a047e8a82 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -37,6 +40,12 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( hamil[8] = vmap[3]*(1.7320508075688772*bmag[5]+bmag[1]); hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double apar_surf[24] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[3]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[5]+1.4142135623730951*apar[1]; + apar_surf[2] = 2.4494897427831783*apar[6]+1.4142135623730951*apar[2]; + apar_surf[5] = 2.4494897427831783*apar[7]+1.4142135623730951*apar[4]; + double *flux_surf_nodal = &flux_surf[48]; double cfl = 0.0; double bmag_quad = 0.0; @@ -50,14 +59,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -69,7 +78,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*(JfL[30]+JfL[29])+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]-0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -78,7 +88,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*(JfL[46]+JfL[45])+0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]-0.19764235376052364*(JfL[41]+JfL[40])+0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[16]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -87,7 +98,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*(JfL[30]+JfL[29])-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]+0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -96,7 +108,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*(JfL[30]+JfL[29])-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -105,7 +118,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*(JfL[46]+JfL[45])-0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]+0.19764235376052364*(JfL[41]+JfL[40])+0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.3061862178478971*(JfL[16]+JfL[14])-0.1767766952966368*(JfL[13]+JfL[12])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -114,7 +128,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*(JfL[30]+JfL[29])+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -133,7 +148,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -142,7 +158,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.3423265984407287*JfL[45]-0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]+0.19764235376052364*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*(JfL[16]+JfL[14])-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -151,7 +168,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -160,7 +178,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -169,7 +188,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.3423265984407287*JfL[45]+0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]-0.19764235376052364*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[16]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -178,7 +198,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -197,7 +218,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])+0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -206,7 +228,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]+0.3423265984407287*JfL[45]-0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]-0.19764235376052364*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*(JfL[16]+JfL[14])+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -215,7 +238,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])-0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -224,7 +248,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])-0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -233,7 +258,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]-0.3423265984407287*JfL[45]+0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]+0.19764235376052364*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[16]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -242,7 +268,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])+0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -261,7 +288,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]+0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -270,7 +298,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*(JfL[46]+JfL[45])+0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]+0.19764235376052364*(JfL[41]+JfL[40])-0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[16]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -279,7 +308,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]-0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -288,7 +318,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -297,7 +328,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*(JfL[46]+JfL[45])-0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]-0.19764235376052364*(JfL[41]+JfL[40])-0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.3061862178478971*(JfL[16]+JfL[14])+0.1767766952966368*(JfL[13]+JfL[12])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -306,7 +338,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_ser_p1.c index 9d37e91383..22eba49ed6 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -48,6 +51,10 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se JRatfR[10] = 0.03333333333333333*(-(25.980762113533157*jacobgeo_rat_surfR[1]*JfR[23])+8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[22]-3.0*jacobgeo_rat_surfR[0]*JfR[21])+15.0*jacobgeo_rat_surfR[0]*JfR[19]); JRatfR[11] = 0.03333333333333333*(8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[19]-3.0*jacobgeo_rat_surfR[0]*JfR[23])+15.0*jacobgeo_rat_surfR[0]*JfR[22]-25.980762113533157*jacobgeo_rat_surfR[1]*JfR[21]); + double apar_surf[12] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[1]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[3]+1.4142135623730951*apar[2]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -61,14 +68,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -81,6 +88,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]-0.38729833462074165*(JfL[21]+JfL[20])-0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.25*JfL[9]-0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -90,6 +98,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])-0.2795084971874737*JfL[22]+0.4841229182759271*(JfL[21]+JfL[20])+0.2795084971874738*(JfL[19]+JfL[18])-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]+0.25*JfL[9]-0.4330127018922193*(JfL[8]+JfL[5])-0.25*(JfL[4]+JfL[2])+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -99,6 +108,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]-0.38729833462074165*(JfL[21]+JfL[20])-0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.25*JfL[9]-0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -108,6 +118,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]+0.38729833462074165*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.25*JfL[9]+0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -117,6 +128,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]+0.2795084971874737*JfL[22]-0.4841229182759271*JfL[21]+0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]+0.2795084971874738*JfL[18]-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]-0.25*JfL[9]+0.4330127018922193*JfL[8]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -126,6 +138,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]+0.38729833462074165*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.25*JfL[9]+0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -145,6 +158,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]-0.38729833462074165*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.25*JfL[9]-0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -154,6 +168,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]+0.2795084971874737*JfL[22]+0.4841229182759271*JfL[21]-0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.2795084971874738*JfL[18]-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]-0.25*JfL[9]-0.4330127018922193*JfL[8]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -163,6 +178,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]-0.38729833462074165*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.25*JfL[9]-0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -172,6 +188,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]+0.38729833462074165*(JfL[21]+JfL[20])+0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.25*JfL[9]+0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -181,6 +198,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])-0.2795084971874737*JfL[22]-0.4841229182759271*(JfL[21]+JfL[20])-0.2795084971874738*(JfL[19]+JfL[18])-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]+0.25*JfL[9]+0.4330127018922193*(JfL[8]+JfL[5])+0.25*(JfL[4]+JfL[2])+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -190,6 +208,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_se flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]+0.38729833462074165*(JfL[21]+JfL[20])+0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.25*JfL[9]+0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_ser_p1.c index 79c057a02c..91932a28d2 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -63,6 +66,12 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se JRatfR[22] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[47]+jacobgeo_rat_surfR[2]*JfR[40]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[46]+jacobgeo_rat_surfR[2]*JfR[36])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[45]+jacobgeo_rat_surfR[3]*JfR[44]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[42]+jacobgeo_rat_surfR[3]*JfR[41])); JRatfR[23] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[42]+jacobgeo_rat_surfR[2]*JfR[41])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[47]+jacobgeo_rat_surfR[3]*JfR[40]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[46]+jacobgeo_rat_surfR[3]*JfR[36])-36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[45]+jacobgeo_rat_surfR[2]*JfR[44])); + double apar_surf[24] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[1]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[4]+1.4142135623730951*apar[2]; + apar_surf[2] = 2.4494897427831783*apar[5]+1.4142135623730951*apar[3]; + apar_surf[5] = 2.4494897427831783*apar[7]+1.4142135623730951*apar[6]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -76,14 +85,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -96,6 +105,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -105,6 +115,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]-0.3423265984407287*(JfL[45]+JfL[44]+JfL[43])-0.19764235376052364*(JfL[42]+JfL[41])+0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]+0.34232659844072866*(JfL[38]+JfL[37])+0.19764235376052366*(JfL[36]+JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20]+JfL[16])+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*(JfL[5]+JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -114,6 +125,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -123,6 +135,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -132,6 +145,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]+0.3423265984407287*(JfL[45]+JfL[44])-0.3423265984407287*JfL[43]+0.19764235376052364*(JfL[42]+JfL[41])-0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]+0.34232659844072866*(JfL[38]+JfL[37])-0.19764235376052366*JfL[36]+0.19764235376052366*(JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.3061862178478971*JfL[16]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -141,6 +155,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -160,6 +175,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -169,6 +185,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]+0.3423265984407287*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.19764235376052364*JfL[41]+0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]-0.34232659844072866*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]+0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -178,6 +195,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -187,6 +205,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -196,6 +215,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]-0.3423265984407287*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.19764235376052364*JfL[41]-0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]-0.34232659844072866*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])+0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -205,6 +225,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -224,6 +245,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -233,6 +255,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]-0.3423265984407287*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.19764235376052364*JfL[41]+0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]+0.34232659844072866*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -242,6 +265,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -251,6 +275,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -260,6 +285,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]+0.3423265984407287*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.19764235376052364*JfL[41]-0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]+0.34232659844072866*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -269,6 +295,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -288,6 +315,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -297,6 +325,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]+0.3423265984407287*(JfL[45]+JfL[44])-0.3423265984407287*JfL[43]+0.19764235376052364*(JfL[42]+JfL[41])+0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]-0.34232659844072866*(JfL[38]+JfL[37])+0.19764235376052366*JfL[36]-0.19764235376052366*(JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.3061862178478971*JfL[16]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -306,6 +335,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -315,6 +345,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -324,6 +355,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]-0.3423265984407287*(JfL[45]+JfL[44]+JfL[43])-0.19764235376052364*(JfL[42]+JfL[41])-0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]-0.34232659844072866*(JfL[38]+JfL[37])-0.19764235376052366*(JfL[36]+JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20]+JfL[16])+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*(JfL[5]+JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -333,6 +365,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_se flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_ser_p1.c index e3bafd60df..31e4b560b7 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -48,6 +51,10 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se JRatfR[10] = 0.03333333333333333*(-(25.980762113533157*jacobgeo_rat_surfR[1]*JfR[23])+8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[21]-3.0*jacobgeo_rat_surfR[0]*JfR[22])+15.0*jacobgeo_rat_surfR[0]*JfR[19]); JRatfR[11] = 0.03333333333333333*(8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfR[1]*JfR[19]-3.0*jacobgeo_rat_surfR[0]*JfR[23])-25.980762113533157*jacobgeo_rat_surfR[1]*JfR[22]+15.0*jacobgeo_rat_surfR[0]*JfR[21]); + double apar_surf[12] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[2]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[3]+1.4142135623730951*apar[1]; + double *flux_surf_nodal = &flux_surf[12]; double cfl = 0.0; double bmag_quad = 0.0; @@ -61,14 +68,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -80,7 +87,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]-0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]+0.5809475019311124*JfL[14]-0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]+0.25*JfL[8]-0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -89,7 +97,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])+0.4841229182759271*JfL[22]-0.2795084971874737*JfL[21]+0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]+0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]-0.4330127018922193*JfL[9]+0.25*JfL[8]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -98,7 +107,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]-0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]-0.5809475019311124*JfL[14]+0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]+0.25*JfL[8]+0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -107,7 +117,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])+0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]-0.5809475019311124*JfL[14]+0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]-0.25*JfL[8]-0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -116,7 +127,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]-0.4841229182759271*JfL[22]+0.2795084971874737*JfL[21]+0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]+0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]+0.4330127018922193*JfL[9]-0.25*JfL[8]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -125,7 +137,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])+0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]+0.5809475019311124*JfL[14]-0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]-0.25*JfL[8]+0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -144,7 +157,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*(JfL[15]+JfL[14])+0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]-0.25*JfL[8]-0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -153,7 +167,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*(JfL[23]+JfL[22])+0.2795084971874737*JfL[21]-0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]-0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*(JfL[12]+JfL[9])-0.25*JfL[8]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -162,7 +177,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*(JfL[15]+JfL[14])-0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]-0.25*JfL[8]+0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -171,7 +187,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*(JfL[15]+JfL[14])-0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]+0.25*JfL[8]-0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -180,7 +197,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*(JfL[23]+JfL[22]))-0.2795084971874737*JfL[21]-0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]-0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*(JfL[12]+JfL[9])+0.25*JfL[8]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -189,7 +207,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*(JfL[15]+JfL[14])+0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]+0.25*JfL[8]+0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_ser_p1.c index 0a47ab8b76..b40227bce2 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -65,6 +68,12 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se JRatfR[22] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[47]+jacobgeo_rat_surfR[2]*JfR[41]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[45]+jacobgeo_rat_surfR[2]*JfR[36])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[46]+jacobgeo_rat_surfR[3]*JfR[44]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[42]+jacobgeo_rat_surfR[3]*JfR[40])); JRatfR[23] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[42]+jacobgeo_rat_surfR[2]*JfR[40])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[47]+jacobgeo_rat_surfR[3]*JfR[41]))-36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[46]+jacobgeo_rat_surfR[2]*JfR[44])+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[45]+jacobgeo_rat_surfR[3]*JfR[36])); + double apar_surf[24] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[2]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[4]+1.4142135623730951*apar[1]; + apar_surf[2] = 2.4494897427831783*apar[6]+1.4142135623730951*apar[3]; + apar_surf[5] = 2.4494897427831783*apar[7]+1.4142135623730951*apar[5]; + double *flux_surf_nodal = &flux_surf[24]; double cfl = 0.0; double bmag_quad = 0.0; @@ -78,14 +87,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -98,6 +107,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -107,6 +117,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]-0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -116,6 +127,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -125,6 +137,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -134,6 +147,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]+0.3423265984407287*JfL[44]-0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -143,6 +157,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -162,6 +177,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -171,6 +187,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -180,6 +197,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -189,6 +207,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -198,6 +217,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -207,6 +227,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -226,6 +247,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -235,6 +257,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])+0.1767766952966368*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -244,6 +267,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -253,6 +277,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -262,6 +287,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -271,6 +297,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -290,6 +317,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -299,6 +327,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]+0.3423265984407287*JfL[44]-0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -308,6 +337,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -317,6 +347,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -326,6 +357,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]-0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])+0.1767766952966368*JfL[21]+0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -335,6 +367,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_se flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_ser_p1.c index 6c3a483186..f6fcf85856 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -63,6 +66,12 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se JRatfR[22] = 0.016666666666666666*(-(36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[47]+jacobgeo_rat_surfR[2]*JfR[42]))+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[44]+jacobgeo_rat_surfR[2]*JfR[36])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[46]+jacobgeo_rat_surfR[3]*JfR[45]))+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[41]+jacobgeo_rat_surfR[3]*JfR[40])); JRatfR[23] = 0.016666666666666666*(8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfR[1]*JfR[41]+jacobgeo_rat_surfR[2]*JfR[40])-4.242640687119286*(jacobgeo_rat_surfR[0]*JfR[47]+jacobgeo_rat_surfR[3]*JfR[42]))-36.742346141747674*(jacobgeo_rat_surfR[1]*JfR[46]+jacobgeo_rat_surfR[2]*JfR[45])+21.213203435596427*(jacobgeo_rat_surfR[0]*JfR[44]+jacobgeo_rat_surfR[3]*JfR[36])); + double apar_surf[24] = {0.}; + apar_surf[0] = 2.4494897427831783*apar[3]+1.4142135623730951*apar[0]; + apar_surf[1] = 2.4494897427831783*apar[5]+1.4142135623730951*apar[1]; + apar_surf[2] = 2.4494897427831783*apar[6]+1.4142135623730951*apar[2]; + apar_surf[5] = 2.4494897427831783*apar[7]+1.4142135623730951*apar[4]; + double *flux_surf_nodal = &flux_surf[48]; double cfl = 0.0; double bmag_quad = 0.0; @@ -76,14 +85,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -95,7 +104,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*(JfL[30]+JfL[29])+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]-0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -104,7 +114,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*(JfL[46]+JfL[45])+0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]-0.19764235376052364*(JfL[41]+JfL[40])+0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[16]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -113,7 +124,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*(JfL[30]+JfL[29])-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]+0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -122,7 +134,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*(JfL[30]+JfL[29])-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -131,7 +144,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*(JfL[46]+JfL[45])-0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]+0.19764235376052364*(JfL[41]+JfL[40])+0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.3061862178478971*(JfL[16]+JfL[14])-0.1767766952966368*(JfL[13]+JfL[12])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -140,7 +154,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*(JfL[30]+JfL[29])+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -159,7 +174,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -168,7 +184,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.3423265984407287*JfL[45]-0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]+0.19764235376052364*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*(JfL[16]+JfL[14])-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -177,7 +194,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -186,7 +204,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -195,7 +214,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.3423265984407287*JfL[45]+0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]-0.19764235376052364*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[16]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -204,7 +224,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -223,7 +244,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])+0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -232,7 +254,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]+0.3423265984407287*JfL[45]-0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]-0.19764235376052364*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*(JfL[16]+JfL[14])+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -241,7 +264,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])-0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -250,7 +274,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])-0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -259,7 +284,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]-0.3423265984407287*JfL[45]+0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]+0.19764235376052364*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[16]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -268,7 +294,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])+0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -287,7 +314,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]+0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -296,7 +324,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*(JfL[46]+JfL[45])+0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]+0.19764235376052364*(JfL[41]+JfL[40])-0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[16]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -305,7 +334,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]-0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -314,7 +344,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -323,7 +354,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*(JfL[46]+JfL[45])-0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]-0.19764235376052364*(JfL[41]+JfL[40])-0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.3061862178478971*(JfL[16]+JfL[14])+0.1767766952966368*(JfL[13]+JfL[12])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -332,7 +364,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_se Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1.c index 65c8ab4aae..1c0639d806 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -48,6 +51,10 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( JRatfL[10] = 0.03333333333333333*(25.980762113533157*jacobgeo_rat_surfL[1]*JfL[23]+8.660254037844387*(1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[22]+3.0*jacobgeo_rat_surfL[0]*JfL[21])+15.0*jacobgeo_rat_surfL[0]*JfL[19]); JRatfL[11] = 0.03333333333333333*(8.660254037844387*(3.0*jacobgeo_rat_surfL[0]*JfL[23]+1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[19])+15.0*jacobgeo_rat_surfL[0]*JfL[22]+25.980762113533157*jacobgeo_rat_surfL[1]*JfL[21]); + double apar_surf[12] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[1]; + apar_surf[1] = 1.4142135623730951*apar[2]-2.4494897427831783*apar[3]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -61,14 +68,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -81,6 +88,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]-0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]-0.4743416490252568*JRatfL[7]+0.4743416490252568*JRatfL[6]+0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -90,6 +98,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3952847075210473*JRatfL[11])+0.39528470752104733*(JRatfL[10]+JRatfL[9])-0.3952847075210473*JRatfL[8]+0.3535533905932737*JRatfL[5]-0.3535533905932737*(JRatfL[3]+JRatfL[1])+0.3535533905932737*JRatfL[0]; @@ -99,6 +108,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]-0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]+0.4743416490252568*JRatfL[7]-0.4743416490252568*JRatfL[6]+0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -108,6 +118,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])+0.31622776601683794*JRatfL[10]-0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]+0.4743416490252568*JRatfL[7]-0.4743416490252568*JRatfL[6]-0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -117,6 +128,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3952847075210473*JRatfL[11]-0.39528470752104733*JRatfL[10]+0.39528470752104733*JRatfL[9]-0.3952847075210473*JRatfL[8]-0.3535533905932737*JRatfL[5]+0.3535533905932737*JRatfL[3]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -126,6 +138,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])+0.31622776601683794*JRatfL[10]-0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]-0.4743416490252568*JRatfL[7]+0.4743416490252568*JRatfL[6]-0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -145,6 +158,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])-0.31622776601683794*JRatfL[10]+0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]+0.4743416490252568*(JRatfL[7]+JRatfL[6])-0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -154,6 +168,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3952847075210473*JRatfL[11]+0.39528470752104733*JRatfL[10]-0.39528470752104733*JRatfL[9]-0.3952847075210473*JRatfL[8]-0.3535533905932737*(JRatfL[5]+JRatfL[3])+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -163,6 +178,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])-0.31622776601683794*JRatfL[10]+0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]-0.4743416490252568*(JRatfL[7]+JRatfL[6])-0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -172,6 +188,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]+0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]-0.4743416490252568*(JRatfL[7]+JRatfL[6])+0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -181,6 +198,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3952847075210473*JRatfL[11])-0.39528470752104733*(JRatfL[10]+JRatfL[9])-0.3952847075210473*JRatfL[8]+0.3535533905932737*(JRatfL[5]+JRatfL[3]+JRatfL[1]+JRatfL[0]); @@ -190,6 +208,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]+0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]+0.4743416490252568*(JRatfL[7]+JRatfL[6])+0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1.c index cca595b0a8..2eb9560faa 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -63,6 +66,12 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( JRatfL[22] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[47]+jacobgeo_rat_surfL[2]*JfL[40])+8.660254037844387*(2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[46]+jacobgeo_rat_surfL[2]*JfL[36])+4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[45]+jacobgeo_rat_surfL[3]*JfL[44]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[42]+jacobgeo_rat_surfL[3]*JfL[41])); JRatfL[23] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[47]+jacobgeo_rat_surfL[3]*JfL[40])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[42]+jacobgeo_rat_surfL[2]*JfL[41]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[46]+jacobgeo_rat_surfL[3]*JfL[36])+36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[45]+jacobgeo_rat_surfL[2]*JfL[44])); + double apar_surf[24] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[1]; + apar_surf[1] = 1.4142135623730951*apar[2]-2.4494897427831783*apar[4]; + apar_surf[2] = 1.4142135623730951*apar[3]-2.4494897427831783*apar[5]; + apar_surf[5] = 1.4142135623730951*apar[6]-2.4494897427831783*apar[7]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -76,14 +85,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -96,6 +105,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*(JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]+0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -105,6 +115,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]-0.2795084971874737*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.2795084971874738*(JRatfL[19]+JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]-0.25*JRatfL[12]+0.25*(JRatfL[9]+JRatfL[8]+JRatfL[5])-0.25*(JRatfL[4]+JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -114,6 +125,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*(JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]+0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -123,6 +135,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*(JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -132,6 +145,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])+0.2795084971874737*(JRatfL[22]+JRatfL[21])-0.2795084971874737*JRatfL[20]-0.2795084971874738*JRatfL[19]+0.2795084971874738*(JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]+0.25*JRatfL[12]-0.25*(JRatfL[9]+JRatfL[8])+0.25*(JRatfL[5]+JRatfL[4])-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -141,6 +155,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*(JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -160,6 +175,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*JRatfL[14]-0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*JRatfL[9]+0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -169,6 +185,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])+0.2795084971874737*JRatfL[22]-0.2795084971874737*JRatfL[21]+0.2795084971874737*JRatfL[20]+0.2795084971874738*JRatfL[19]-0.2795084971874738*JRatfL[18]+0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]+0.25*JRatfL[12]-0.25*JRatfL[9]+0.25*JRatfL[8]-0.25*(JRatfL[5]+JRatfL[4])+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -178,6 +195,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*JRatfL[14]+0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*JRatfL[9]+0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -187,6 +205,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*JRatfL[14]+0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]+0.25*JRatfL[9]-0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -196,6 +215,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]-0.2795084971874737*JRatfL[22]+0.2795084971874737*(JRatfL[21]+JRatfL[20])-0.2795084971874738*(JRatfL[19]+JRatfL[18])+0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]-0.25*JRatfL[12]+0.25*JRatfL[9]-0.25*(JRatfL[8]+JRatfL[5])+0.25*(JRatfL[4]+JRatfL[2])-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -205,6 +225,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*JRatfL[14]-0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]+0.25*JRatfL[9]-0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -224,6 +245,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14])+0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*JRatfL[9]-0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -233,6 +255,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])-0.2795084971874737*JRatfL[22]+0.2795084971874737*(JRatfL[21]+JRatfL[20])+0.2795084971874738*(JRatfL[19]+JRatfL[18])-0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]+0.25*(JRatfL[12]+JRatfL[9])-0.25*(JRatfL[8]+JRatfL[5]+JRatfL[4]+JRatfL[2])+0.25*(JRatfL[1]+JRatfL[0]); @@ -242,6 +265,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14])-0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*JRatfL[9]-0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -251,6 +275,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14])-0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]-0.25*JRatfL[9]+0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -260,6 +285,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]+0.2795084971874737*JRatfL[22]-0.2795084971874737*JRatfL[21]+0.2795084971874737*JRatfL[20]-0.2795084971874738*JRatfL[19]+0.2795084971874738*JRatfL[18]-0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]-0.25*(JRatfL[12]+JRatfL[9])+0.25*JRatfL[8]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -269,6 +295,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14])+0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]-0.25*JRatfL[9]+0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -288,6 +315,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]-0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -297,6 +325,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]+0.2795084971874737*(JRatfL[22]+JRatfL[21])-0.2795084971874737*JRatfL[20]+0.2795084971874738*JRatfL[19]-0.2795084971874738*(JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]-0.25*(JRatfL[12]+JRatfL[9]+JRatfL[8])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -306,6 +335,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]-0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -315,6 +345,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -324,6 +355,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])-0.2795084971874737*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.2795084971874738*(JRatfL[19]+JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]+0.25*(JRatfL[12]+JRatfL[9]+JRatfL[8]+JRatfL[5]+JRatfL[4]+JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -333,6 +365,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1.c index 1521d880c2..8383619c80 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -48,6 +51,10 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( JRatfL[10] = 0.03333333333333333*(25.980762113533157*jacobgeo_rat_surfL[1]*JfL[23]+8.660254037844387*(3.0*jacobgeo_rat_surfL[0]*JfL[22]+1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[21])+15.0*jacobgeo_rat_surfL[0]*JfL[19]); JRatfL[11] = 0.03333333333333333*(8.660254037844387*(3.0*jacobgeo_rat_surfL[0]*JfL[23]+1.7320508075688772*jacobgeo_rat_surfL[1]*JfL[19])+25.980762113533157*jacobgeo_rat_surfL[1]*JfL[22]+15.0*jacobgeo_rat_surfL[0]*JfL[21]); + double apar_surf[12] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[2]; + apar_surf[1] = 1.4142135623730951*apar[1]-2.4494897427831783*apar[3]; + double *flux_surf_nodal = &flux_surf[12]; double cfl = 0.0; double bmag_quad = 0.0; @@ -61,14 +68,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -80,7 +87,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]-0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]-0.4743416490252568*JRatfL[7]+0.4743416490252568*JRatfL[6]+0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -89,7 +97,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3952847075210473*JRatfL[11])+0.39528470752104733*(JRatfL[10]+JRatfL[9])-0.3952847075210473*JRatfL[8]+0.3535533905932737*JRatfL[5]-0.3535533905932737*(JRatfL[3]+JRatfL[1])+0.3535533905932737*JRatfL[0]; @@ -98,7 +107,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]-0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]+0.4743416490252568*JRatfL[7]-0.4743416490252568*JRatfL[6]+0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -107,7 +117,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])+0.31622776601683794*JRatfL[10]-0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]+0.4743416490252568*JRatfL[7]-0.4743416490252568*JRatfL[6]-0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -116,7 +127,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3952847075210473*JRatfL[11]-0.39528470752104733*JRatfL[10]+0.39528470752104733*JRatfL[9]-0.3952847075210473*JRatfL[8]-0.3535533905932737*JRatfL[5]+0.3535533905932737*JRatfL[3]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -125,7 +137,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])+0.31622776601683794*JRatfL[10]-0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]-0.4743416490252568*JRatfL[7]+0.4743416490252568*JRatfL[6]-0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]-0.3535533905932737*JRatfL[1]+0.3535533905932737*JRatfL[0]; @@ -144,7 +157,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])-0.31622776601683794*JRatfL[10]+0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]+0.4743416490252568*(JRatfL[7]+JRatfL[6])-0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -153,7 +167,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3952847075210473*JRatfL[11]+0.39528470752104733*JRatfL[10]-0.39528470752104733*JRatfL[9]-0.3952847075210473*JRatfL[8]-0.3535533905932737*(JRatfL[5]+JRatfL[3])+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -162,7 +177,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3162277660168379*JRatfL[11])-0.31622776601683794*JRatfL[10]+0.31622776601683794*JRatfL[9]+0.3162277660168379*JRatfL[8]-0.4743416490252568*(JRatfL[7]+JRatfL[6])-0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]-0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -171,7 +187,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]+0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]-0.4743416490252568*(JRatfL[7]+JRatfL[6])+0.3535533905932737*JRatfL[5]-0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]-0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); @@ -180,7 +197,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3952847075210473*JRatfL[11])-0.39528470752104733*(JRatfL[10]+JRatfL[9])-0.3952847075210473*JRatfL[8]+0.3535533905932737*(JRatfL[5]+JRatfL[3]+JRatfL[1]+JRatfL[0]); @@ -189,7 +207,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3162277660168379*JRatfL[11]+0.31622776601683794*(JRatfL[10]+JRatfL[9])+0.3162277660168379*JRatfL[8]+0.4743416490252568*(JRatfL[7]+JRatfL[6])+0.3535533905932737*JRatfL[5]+0.4743416490252568*JRatfL[4]+0.3535533905932737*JRatfL[3]+0.4743416490252568*JRatfL[2]+0.3535533905932737*(JRatfL[1]+JRatfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1.c index 834ddf4599..882993d129 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -65,6 +68,12 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( JRatfL[22] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[47]+jacobgeo_rat_surfL[2]*JfL[41])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[46]+jacobgeo_rat_surfL[3]*JfL[44])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[45]+jacobgeo_rat_surfL[2]*JfL[36]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[42]+jacobgeo_rat_surfL[3]*JfL[40])); JRatfL[23] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[47]+jacobgeo_rat_surfL[3]*JfL[41])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[42]+jacobgeo_rat_surfL[2]*JfL[40]))+36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[46]+jacobgeo_rat_surfL[2]*JfL[44])+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[45]+jacobgeo_rat_surfL[3]*JfL[36])); + double apar_surf[24] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[2]; + apar_surf[1] = 1.4142135623730951*apar[1]-2.4494897427831783*apar[4]; + apar_surf[2] = 1.4142135623730951*apar[3]-2.4494897427831783*apar[6]; + apar_surf[5] = 1.4142135623730951*apar[5]-2.4494897427831783*apar[7]; + double *flux_surf_nodal = &flux_surf[24]; double cfl = 0.0; double bmag_quad = 0.0; @@ -78,14 +87,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -98,6 +107,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*(JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]+0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -107,6 +117,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]-0.2795084971874737*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.2795084971874738*(JRatfL[19]+JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]-0.25*JRatfL[12]+0.25*(JRatfL[9]+JRatfL[8]+JRatfL[5])-0.25*(JRatfL[4]+JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -116,6 +127,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*(JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]+0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -125,6 +137,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*(JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -134,6 +147,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])+0.2795084971874737*(JRatfL[22]+JRatfL[21])-0.2795084971874737*JRatfL[20]-0.2795084971874738*JRatfL[19]+0.2795084971874738*(JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]+0.25*JRatfL[12]-0.25*(JRatfL[9]+JRatfL[8])+0.25*(JRatfL[5]+JRatfL[4])-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -143,6 +157,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*(JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -162,6 +177,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*JRatfL[14]-0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*JRatfL[9]+0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -171,6 +187,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])+0.2795084971874737*JRatfL[22]-0.2795084971874737*JRatfL[21]+0.2795084971874737*JRatfL[20]+0.2795084971874738*JRatfL[19]-0.2795084971874738*JRatfL[18]+0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]+0.25*JRatfL[12]-0.25*JRatfL[9]+0.25*JRatfL[8]-0.25*(JRatfL[5]+JRatfL[4])+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -180,6 +197,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*JRatfL[14]+0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*JRatfL[9]+0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -189,6 +207,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*JRatfL[14]+0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]+0.25*JRatfL[9]-0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -198,6 +217,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]-0.2795084971874737*JRatfL[22]+0.2795084971874737*(JRatfL[21]+JRatfL[20])-0.2795084971874738*(JRatfL[19]+JRatfL[18])+0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]-0.25*JRatfL[12]+0.25*JRatfL[9]-0.25*(JRatfL[8]+JRatfL[5])+0.25*(JRatfL[4]+JRatfL[2])-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -207,6 +227,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*JRatfL[14]-0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]+0.25*JRatfL[9]-0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -226,6 +247,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14])+0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*JRatfL[9]-0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -235,6 +257,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])-0.2795084971874737*JRatfL[22]+0.2795084971874737*(JRatfL[21]+JRatfL[20])+0.2795084971874738*(JRatfL[19]+JRatfL[18])-0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]+0.25*(JRatfL[12]+JRatfL[9])-0.25*(JRatfL[8]+JRatfL[5]+JRatfL[4]+JRatfL[2])+0.25*(JRatfL[1]+JRatfL[0]); @@ -244,6 +267,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14])-0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*JRatfL[9]-0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -253,6 +277,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14])-0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]-0.25*JRatfL[9]+0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -262,6 +287,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]+0.2795084971874737*JRatfL[22]-0.2795084971874737*JRatfL[21]+0.2795084971874737*JRatfL[20]-0.2795084971874738*JRatfL[19]+0.2795084971874738*JRatfL[18]-0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]-0.25*(JRatfL[12]+JRatfL[9])+0.25*JRatfL[8]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -271,6 +297,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14])+0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]-0.25*JRatfL[9]+0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -290,6 +317,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]-0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -299,6 +327,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]+0.2795084971874737*(JRatfL[22]+JRatfL[21])-0.2795084971874737*JRatfL[20]+0.2795084971874738*JRatfL[19]-0.2795084971874738*(JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]-0.25*(JRatfL[12]+JRatfL[9]+JRatfL[8])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -308,6 +337,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]-0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -317,6 +347,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -326,6 +357,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])-0.2795084971874737*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.2795084971874738*(JRatfL[19]+JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]+0.25*(JRatfL[12]+JRatfL[9]+JRatfL[8]+JRatfL[5]+JRatfL[4]+JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -335,6 +367,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1.c index 2cf58ff30c..0d6b99d1e5 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -63,6 +66,12 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( JRatfL[22] = 0.016666666666666666*(36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[47]+jacobgeo_rat_surfL[2]*JfL[42])+8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[46]+jacobgeo_rat_surfL[3]*JfL[45])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[44]+jacobgeo_rat_surfL[2]*JfL[36]))+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[41]+jacobgeo_rat_surfL[3]*JfL[40])); JRatfL[23] = 0.016666666666666666*(8.660254037844387*(4.242640687119286*(jacobgeo_rat_surfL[0]*JfL[47]+jacobgeo_rat_surfL[3]*JfL[42])+2.4494897427831783*(jacobgeo_rat_surfL[1]*JfL[41]+jacobgeo_rat_surfL[2]*JfL[40]))+36.742346141747674*(jacobgeo_rat_surfL[1]*JfL[46]+jacobgeo_rat_surfL[2]*JfL[45])+21.213203435596427*(jacobgeo_rat_surfL[0]*JfL[44]+jacobgeo_rat_surfL[3]*JfL[36])); + double apar_surf[24] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[3]; + apar_surf[1] = 1.4142135623730951*apar[1]-2.4494897427831783*apar[5]; + apar_surf[2] = 1.4142135623730951*apar[2]-2.4494897427831783*apar[6]; + apar_surf[5] = 1.4142135623730951*apar[4]-2.4494897427831783*apar[7]; + double *flux_surf_nodal = &flux_surf[48]; double cfl = 0.0; double bmag_quad = 0.0; @@ -76,14 +85,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -95,7 +104,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*(JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]+0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -104,7 +114,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]-0.2795084971874737*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.2795084971874738*(JRatfL[19]+JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]-0.25*JRatfL[12]+0.25*(JRatfL[9]+JRatfL[8]+JRatfL[5])-0.25*(JRatfL[4]+JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -113,7 +124,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*(JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]+0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -122,7 +134,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*(JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -131,7 +144,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])+0.2795084971874737*(JRatfL[22]+JRatfL[21])-0.2795084971874737*JRatfL[20]-0.2795084971874738*JRatfL[19]+0.2795084971874738*(JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]+0.25*JRatfL[12]-0.25*(JRatfL[9]+JRatfL[8])+0.25*(JRatfL[5]+JRatfL[4])-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -140,7 +154,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*(JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]-0.25*(JRatfL[2]+JRatfL[1])+0.25*JRatfL[0]; @@ -159,7 +174,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*JRatfL[14]-0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*JRatfL[9]+0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -168,7 +184,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])+0.2795084971874737*JRatfL[22]-0.2795084971874737*JRatfL[21]+0.2795084971874737*JRatfL[20]+0.2795084971874738*JRatfL[19]-0.2795084971874738*JRatfL[18]+0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]+0.25*JRatfL[12]-0.25*JRatfL[9]+0.25*JRatfL[8]-0.25*(JRatfL[5]+JRatfL[4])+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -177,7 +194,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*JRatfL[14]+0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])-0.25*JRatfL[9]+0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -186,7 +204,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*JRatfL[15]-0.33541019662496846*JRatfL[14]+0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]+0.25*JRatfL[9]-0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -195,7 +214,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]-0.2795084971874737*JRatfL[22]+0.2795084971874737*(JRatfL[21]+JRatfL[20])-0.2795084971874738*(JRatfL[19]+JRatfL[18])+0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]-0.25*JRatfL[12]+0.25*JRatfL[9]-0.25*(JRatfL[8]+JRatfL[5])+0.25*(JRatfL[4]+JRatfL[2])-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -204,7 +224,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*JRatfL[18]-0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*JRatfL[15]+0.33541019662496846*JRatfL[14]-0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]+0.25*JRatfL[9]-0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]+0.25*JRatfL[2]-0.25*JRatfL[1]+0.25*JRatfL[0]; @@ -223,7 +244,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14])+0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*JRatfL[9]-0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -232,7 +254,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])-0.2795084971874737*JRatfL[22]+0.2795084971874737*(JRatfL[21]+JRatfL[20])+0.2795084971874738*(JRatfL[19]+JRatfL[18])-0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]+0.25*(JRatfL[12]+JRatfL[9])-0.25*(JRatfL[8]+JRatfL[5]+JRatfL[4]+JRatfL[2])+0.25*(JRatfL[1]+JRatfL[0]); @@ -241,7 +264,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*JRatfL[22]-0.22360679774997896*(JRatfL[21]+JRatfL[20])-0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14])-0.33541019662496846*JRatfL[13]+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*JRatfL[9]-0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -250,7 +274,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14])-0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]-0.25*JRatfL[9]+0.25*JRatfL[8]+0.33541019662496846*JRatfL[7]-0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -259,7 +284,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]+0.2795084971874737*JRatfL[22]-0.2795084971874737*JRatfL[21]+0.2795084971874737*JRatfL[20]-0.2795084971874738*JRatfL[19]+0.2795084971874738*JRatfL[18]-0.2795084971874738*JRatfL[17]-0.2795084971874737*JRatfL[16]-0.25*(JRatfL[12]+JRatfL[9])+0.25*JRatfL[8]-0.25*JRatfL[5]+0.25*JRatfL[4]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -268,7 +294,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*JRatfL[22]+0.22360679774997896*JRatfL[21]-0.22360679774997896*JRatfL[20]+0.22360679774997894*JRatfL[19]-0.22360679774997902*JRatfL[18]+0.22360679774997902*JRatfL[17]+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14])+0.33541019662496846*JRatfL[13]-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]-0.25*JRatfL[9]+0.25*JRatfL[8]-0.33541019662496846*JRatfL[7]+0.33541019662496846*JRatfL[6]-0.25*JRatfL[5]+0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]-0.25*JRatfL[2]+0.25*(JRatfL[1]+JRatfL[0]); @@ -287,7 +314,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]-0.33541019662496846*JRatfL[11]+0.33541019662496846*JRatfL[10]-0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]-0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -296,7 +324,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.2795084971874738*JRatfL[23]+0.2795084971874737*(JRatfL[22]+JRatfL[21])-0.2795084971874737*JRatfL[20]+0.2795084971874738*JRatfL[19]-0.2795084971874738*(JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]-0.25*(JRatfL[12]+JRatfL[9]+JRatfL[8])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -305,7 +334,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.22360679774997894*JRatfL[23])-0.22360679774997896*(JRatfL[22]+JRatfL[21])+0.22360679774997896*JRatfL[20]-0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])-0.25*JRatfL[12]+0.33541019662496846*JRatfL[11]-0.33541019662496846*JRatfL[10]-0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*JRatfL[5]-0.25*JRatfL[4]+0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -314,7 +344,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]-0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]-0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*(JRatfL[9]+JRatfL[8])-0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])-0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -323,7 +354,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.2795084971874738*JRatfL[23])-0.2795084971874737*(JRatfL[22]+JRatfL[21]+JRatfL[20])-0.2795084971874738*(JRatfL[19]+JRatfL[18]+JRatfL[17])-0.2795084971874737*JRatfL[16]+0.25*(JRatfL[12]+JRatfL[9]+JRatfL[8]+JRatfL[5]+JRatfL[4]+JRatfL[2]+JRatfL[1]+JRatfL[0]); @@ -332,7 +364,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.22360679774997894*JRatfL[23]+0.22360679774997896*(JRatfL[22]+JRatfL[21]+JRatfL[20])+0.22360679774997894*JRatfL[19]+0.22360679774997902*(JRatfL[18]+JRatfL[17])+0.22360679774997896*JRatfL[16]+0.33541019662496846*(JRatfL[15]+JRatfL[14]+JRatfL[13])+0.25*JRatfL[12]+0.33541019662496846*(JRatfL[11]+JRatfL[10])+0.25*(JRatfL[9]+JRatfL[8])+0.33541019662496846*(JRatfL[7]+JRatfL[6])+0.25*(JRatfL[5]+JRatfL[4])+0.33541019662496846*JRatfL[3]+0.25*(JRatfL[2]+JRatfL[1]+JRatfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1.c index 4a3cedd54b..6f0c89ba2c 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1.c @@ -1,11 +1,11 @@ #include GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf) + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. // dxv[NDIM]: cell length. @@ -17,6 +17,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( // gkdgv: gyrokinetic volume DG geometry. // bmag: magnetic field amplitude. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -42,23 +44,25 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( double cfl = 0.0; double bmag_quad = 0.0; double B3_quad = 0.0; - double Jc_quad = 0.0; double dualcurlbhat_quad[3] = {0.0}; double alpha_quad = 0.0; double JfL_quad = 0.0; double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; + double bioverJB_quad[3] = {0.0}; bmag_quad = gkdgv[0].bmag; B3_quad = gkdgv[0].B3; - Jc_quad = dgv[0].Jc; dualcurlbhat_quad[0] = gkdgv[0].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[0].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[0].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[0].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[0].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[0].bioverJB.x[2]; - - alpha_quad = -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(0.5*apardot[3]-0.5*apardot[2]-0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.5590169943749476*JfL[23])+0.5590169943749475*JfL[22]+0.5590169943749475*JfL[21]+0.5590169943749475*JfL[20]-0.5590169943749476*JfL[19]-0.5590169943749476*JfL[18]-0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]-0.4330127018922193*JfL[15]+0.4330127018922193*JfL[14]+0.4330127018922193*JfL[13]-0.25*JfL[12]+0.4330127018922193*JfL[11]-0.4330127018922193*JfL[10]+0.25*JfL[9]+0.25*JfL[8]-0.4330127018922193*JfL[7]-0.4330127018922193*JfL[6]+0.25*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[3]-0.25*JfL[2]-0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -67,7 +71,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(0.5*apardot[3]-0.5*apardot[2]-0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.5590169943749476*JfL[23]-0.5590169943749475*JfL[22]-0.5590169943749475*JfL[21]+0.5590169943749475*JfL[20]+0.5590169943749476*JfL[19]-0.5590169943749476*JfL[18]-0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]+0.4330127018922193*JfL[15]-0.4330127018922193*JfL[14]-0.4330127018922193*JfL[13]+0.25*JfL[12]+0.4330127018922193*JfL[11]+0.4330127018922193*JfL[10]-0.25*JfL[9]-0.25*JfL[8]-0.4330127018922193*JfL[7]-0.4330127018922193*JfL[6]+0.25*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[3]-0.25*JfL[2]-0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -78,13 +83,15 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( bmag_quad = gkdgv[1].bmag; B3_quad = gkdgv[1].B3; - Jc_quad = dgv[1].Jc; dualcurlbhat_quad[0] = gkdgv[1].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[1].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[1].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[1].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[1].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[1].bioverJB.x[2]; - - alpha_quad = -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(-(0.5*apardot[3])+0.5*apardot[2]-0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.5590169943749476*JfL[23]-0.5590169943749475*JfL[22]+0.5590169943749475*JfL[21]-0.5590169943749475*JfL[20]-0.5590169943749476*JfL[19]+0.5590169943749476*JfL[18]-0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]+0.4330127018922193*JfL[15]-0.4330127018922193*JfL[14]+0.4330127018922193*JfL[13]+0.25*JfL[12]-0.4330127018922193*JfL[11]-0.4330127018922193*JfL[10]-0.25*JfL[9]+0.25*JfL[8]+0.4330127018922193*JfL[7]-0.4330127018922193*JfL[6]-0.25*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[3]+0.25*JfL[2]-0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -93,7 +100,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(-(0.5*apardot[3])+0.5*apardot[2]-0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.5590169943749476*JfL[23])+0.5590169943749475*JfL[22]-0.5590169943749475*JfL[21]-0.5590169943749475*JfL[20]+0.5590169943749476*JfL[19]+0.5590169943749476*JfL[18]-0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]-0.4330127018922193*JfL[15]+0.4330127018922193*JfL[14]-0.4330127018922193*JfL[13]-0.25*JfL[12]-0.4330127018922193*JfL[11]+0.4330127018922193*JfL[10]+0.25*JfL[9]-0.25*JfL[8]+0.4330127018922193*JfL[7]-0.4330127018922193*JfL[6]-0.25*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[3]+0.25*JfL[2]-0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -104,13 +112,15 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( bmag_quad = gkdgv[2].bmag; B3_quad = gkdgv[2].B3; - Jc_quad = dgv[2].Jc; dualcurlbhat_quad[0] = gkdgv[2].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[2].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[2].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[2].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[2].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[2].bioverJB.x[2]; - - alpha_quad = -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(-(0.5*apardot[3])-0.5*apardot[2]+0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.5590169943749476*JfL[23]+0.5590169943749475*JfL[22]-0.5590169943749475*JfL[21]-0.5590169943749475*JfL[20]-0.5590169943749476*JfL[19]-0.5590169943749476*JfL[18]+0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]+0.4330127018922193*JfL[15]+0.4330127018922193*JfL[14]-0.4330127018922193*JfL[13]+0.25*JfL[12]-0.4330127018922193*JfL[11]-0.4330127018922193*JfL[10]+0.25*JfL[9]-0.25*JfL[8]-0.4330127018922193*JfL[7]+0.4330127018922193*JfL[6]-0.25*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[3]-0.25*JfL[2]+0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -119,7 +129,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(-(0.5*apardot[3])-0.5*apardot[2]+0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.5590169943749476*JfL[23])-0.5590169943749475*JfL[22]+0.5590169943749475*JfL[21]-0.5590169943749475*JfL[20]+0.5590169943749476*JfL[19]-0.5590169943749476*JfL[18]+0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]-0.4330127018922193*JfL[15]-0.4330127018922193*JfL[14]+0.4330127018922193*JfL[13]-0.25*JfL[12]-0.4330127018922193*JfL[11]+0.4330127018922193*JfL[10]-0.25*JfL[9]+0.25*JfL[8]-0.4330127018922193*JfL[7]+0.4330127018922193*JfL[6]-0.25*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[3]-0.25*JfL[2]+0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -130,13 +141,15 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( bmag_quad = gkdgv[3].bmag; B3_quad = gkdgv[3].B3; - Jc_quad = dgv[3].Jc; dualcurlbhat_quad[0] = gkdgv[3].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[3].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[3].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[3].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[3].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[3].bioverJB.x[2]; - - alpha_quad = -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(0.5*apardot[3]+0.5*apardot[2]+0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.5590169943749476*JfL[23])-0.5590169943749475*JfL[22]-0.5590169943749475*JfL[21]+0.5590169943749475*JfL[20]-0.5590169943749476*JfL[19]+0.5590169943749476*JfL[18]+0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]-0.4330127018922193*JfL[15]-0.4330127018922193*JfL[14]-0.4330127018922193*JfL[13]-0.25*JfL[12]+0.4330127018922193*JfL[11]-0.4330127018922193*JfL[10]-0.25*JfL[9]-0.25*JfL[8]+0.4330127018922193*JfL[7]+0.4330127018922193*JfL[6]+0.25*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[3]+0.25*JfL[2]+0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -145,7 +158,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(0.5*apardot[3]+0.5*apardot[2]+0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.5590169943749476*JfL[23]+0.5590169943749475*JfL[22]+0.5590169943749475*JfL[21]+0.5590169943749475*JfL[20]+0.5590169943749476*JfL[19]+0.5590169943749476*JfL[18]+0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]+0.4330127018922193*JfL[15]+0.4330127018922193*JfL[14]+0.4330127018922193*JfL[13]+0.25*JfL[12]+0.4330127018922193*JfL[11]+0.4330127018922193*JfL[10]+0.25*JfL[9]+0.25*JfL[8]+0.4330127018922193*JfL[7]+0.4330127018922193*JfL[6]+0.25*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[3]+0.25*JfL[2]+0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -154,6 +168,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + double vmap_prime_min = fmin(fabs(vmap_prime_l[0]),fabs(vmap_prime_r[0])); return cfl/vmap_prime_min*2.5*rdvpar2; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1.c index 7f79f3f395..1d35fe4d02 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1.c @@ -1,11 +1,11 @@ #include GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf) + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. // dxv[NDIM]: cell length. @@ -17,6 +17,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( // gkdgv: gyrokinetic volume DG geometry. // bmag: magnetic field amplitude. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -47,23 +49,25 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( double cfl = 0.0; double bmag_quad = 0.0; double B3_quad = 0.0; - double Jc_quad = 0.0; double dualcurlbhat_quad[3] = {0.0}; double alpha_quad = 0.0; double JfL_quad = 0.0; double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; + double bioverJB_quad[3] = {0.0}; bmag_quad = gkdgv[0].bmag; B3_quad = gkdgv[0].B3; - Jc_quad = dgv[0].Jc; dualcurlbhat_quad[0] = gkdgv[0].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[0].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[0].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[0].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[0].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[0].bioverJB.x[2]; - - alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])+0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]-0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -72,7 +76,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])+0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])+0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -83,13 +88,15 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[1].bmag; B3_quad = gkdgv[1].B3; - Jc_quad = dgv[1].Jc; dualcurlbhat_quad[0] = gkdgv[1].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[1].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[1].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[1].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[1].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[1].bioverJB.x[2]; - - alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]-0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])+0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -98,7 +105,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]-0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]-0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -109,13 +117,15 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[2].bmag; B3_quad = gkdgv[2].B3; - Jc_quad = dgv[2].Jc; dualcurlbhat_quad[0] = gkdgv[2].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[2].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[2].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[2].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[2].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[2].bioverJB.x[2]; - - alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]-0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])+0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -124,7 +134,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]-0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]-0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -135,13 +146,15 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[3].bmag; B3_quad = gkdgv[3].B3; - Jc_quad = dgv[3].Jc; dualcurlbhat_quad[0] = gkdgv[3].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[3].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[3].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[3].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[3].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[3].bioverJB.x[2]; - - alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])+0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]-0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -150,7 +163,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])+0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])+0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -161,13 +175,15 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[4].bmag; B3_quad = gkdgv[4].B3; - Jc_quad = dgv[4].Jc; dualcurlbhat_quad[0] = gkdgv[4].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[4].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[4].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[4].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[4].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[4].bioverJB.x[2]; - - alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]+0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])-0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -176,7 +192,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]+0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]+0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -187,13 +204,15 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[5].bmag; B3_quad = gkdgv[5].B3; - Jc_quad = dgv[5].Jc; dualcurlbhat_quad[0] = gkdgv[5].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[5].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[5].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[5].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[5].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[5].bioverJB.x[2]; - - alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])-0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]+0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -202,7 +221,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])-0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])-0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -213,13 +233,15 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[6].bmag; B3_quad = gkdgv[6].B3; - Jc_quad = dgv[6].Jc; dualcurlbhat_quad[0] = gkdgv[6].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[6].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[6].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[6].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[6].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[6].bioverJB.x[2]; - - alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])-0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]+0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -228,7 +250,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])-0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])-0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -239,13 +262,15 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[7].bmag; B3_quad = gkdgv[7].B3; - Jc_quad = dgv[7].Jc; dualcurlbhat_quad[0] = gkdgv[7].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[7].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[7].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[7].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[7].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[7].bioverJB.x[2]; - - alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]+0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])-0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -254,7 +279,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad ; + alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]+0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]+0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -263,6 +289,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + double vmap_prime_min = fmin(fabs(vmap_prime_l[0]),fabs(vmap_prime_r[0])); return cfl/vmap_prime_min*2.5*rdvpar2; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfx_2x2v_ser_p1.c index 8f1e074287..821a8bfe8a 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfx_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfx_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -34,6 +37,10 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( hamil[5] = (bmag[2]-1.7320508075688772*bmag[3])*vmap[3]; hamil[8] = vmapSq[2]*m_; + double apar_surf[12] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[1]; + apar_surf[1] = 1.4142135623730951*apar[2]-2.4494897427831783*apar[3]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -47,14 +54,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -67,6 +74,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]-0.38729833462074165*(JfL[21]+JfL[20])-0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.25*JfL[9]-0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -76,6 +84,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])-0.2795084971874737*JfL[22]+0.4841229182759271*(JfL[21]+JfL[20])+0.2795084971874738*(JfL[19]+JfL[18])-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]+0.25*JfL[9]-0.4330127018922193*(JfL[8]+JfL[5])-0.25*(JfL[4]+JfL[2])+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -85,6 +94,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]-0.38729833462074165*(JfL[21]+JfL[20])-0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.25*JfL[9]-0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -94,6 +104,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]+0.38729833462074165*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.25*JfL[9]+0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -103,6 +114,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]+0.2795084971874737*JfL[22]-0.4841229182759271*JfL[21]+0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]+0.2795084971874738*JfL[18]-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]-0.25*JfL[9]+0.4330127018922193*JfL[8]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -112,6 +124,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]+0.38729833462074165*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.25*JfL[9]+0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -131,6 +144,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]-0.38729833462074165*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.25*JfL[9]-0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -140,6 +154,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]+0.2795084971874737*JfL[22]+0.4841229182759271*JfL[21]-0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.2795084971874738*JfL[18]-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]-0.25*JfL[9]-0.4330127018922193*JfL[8]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -149,6 +164,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]-0.38729833462074165*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.25*JfL[9]-0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -158,6 +174,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]+0.38729833462074165*(JfL[21]+JfL[20])+0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.25*JfL[9]+0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -167,6 +184,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])-0.2795084971874737*JfL[22]-0.4841229182759271*(JfL[21]+JfL[20])-0.2795084971874738*(JfL[19]+JfL[18])-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]+0.25*JfL[9]+0.4330127018922193*(JfL[8]+JfL[5])+0.25*(JfL[4]+JfL[2])+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -176,6 +194,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]+0.38729833462074165*(JfL[21]+JfL[20])+0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.25*JfL[9]+0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfx_3x2v_ser_p1.c index c3c52aed1f..0036aa5a19 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfx_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfx_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -37,6 +40,12 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( hamil[9] = vmap[3]*(bmag[3]-1.7320508075688772*bmag[5]); hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double apar_surf[24] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[1]; + apar_surf[1] = 1.4142135623730951*apar[2]-2.4494897427831783*apar[4]; + apar_surf[2] = 1.4142135623730951*apar[3]-2.4494897427831783*apar[5]; + apar_surf[5] = 1.4142135623730951*apar[6]-2.4494897427831783*apar[7]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -50,14 +59,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -70,6 +79,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -79,6 +89,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]-0.3423265984407287*(JfL[45]+JfL[44]+JfL[43])-0.19764235376052364*(JfL[42]+JfL[41])+0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]+0.34232659844072866*(JfL[38]+JfL[37])+0.19764235376052366*(JfL[36]+JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20]+JfL[16])+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*(JfL[5]+JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -88,6 +99,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -97,6 +109,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -106,6 +119,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]+0.3423265984407287*(JfL[45]+JfL[44])-0.3423265984407287*JfL[43]+0.19764235376052364*(JfL[42]+JfL[41])-0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]+0.34232659844072866*(JfL[38]+JfL[37])-0.19764235376052366*JfL[36]+0.19764235376052366*(JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.3061862178478971*JfL[16]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -115,6 +129,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -134,6 +149,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -143,6 +159,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]+0.3423265984407287*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.19764235376052364*JfL[41]+0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]-0.34232659844072866*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]+0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -152,6 +169,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -161,6 +179,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -170,6 +189,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]-0.3423265984407287*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.19764235376052364*JfL[41]-0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]-0.34232659844072866*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])+0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -179,6 +199,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -198,6 +219,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -207,6 +229,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]-0.3423265984407287*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.19764235376052364*JfL[41]+0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]+0.34232659844072866*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -216,6 +239,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -225,6 +249,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -234,6 +259,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]+0.3423265984407287*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.19764235376052364*JfL[41]-0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]+0.34232659844072866*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -243,6 +269,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -262,6 +289,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -271,6 +299,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]+0.3423265984407287*(JfL[45]+JfL[44])-0.3423265984407287*JfL[43]+0.19764235376052364*(JfL[42]+JfL[41])+0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]-0.34232659844072866*(JfL[38]+JfL[37])+0.19764235376052366*JfL[36]-0.19764235376052366*(JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.3061862178478971*JfL[16]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -280,6 +309,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -289,6 +319,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -298,6 +329,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]-0.3423265984407287*(JfL[45]+JfL[44]+JfL[43])-0.19764235376052364*(JfL[42]+JfL[41])-0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]-0.34232659844072866*(JfL[38]+JfL[37])-0.19764235376052366*(JfL[36]+JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20]+JfL[16])+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*(JfL[5]+JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -307,6 +339,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfy_2x2v_ser_p1.c index 34d2f41dc4..df86e95bed 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfy_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfy_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -34,6 +37,10 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( hamil[5] = (bmag[1]-1.7320508075688772*bmag[3])*vmap[3]; hamil[8] = vmapSq[2]*m_; + double apar_surf[12] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[2]; + apar_surf[1] = 1.4142135623730951*apar[1]-2.4494897427831783*apar[3]; + double *flux_surf_nodal = &flux_surf[12]; double cfl = 0.0; double bmag_quad = 0.0; @@ -47,14 +54,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -66,7 +73,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]-0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]+0.5809475019311124*JfL[14]-0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]+0.25*JfL[8]-0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -75,7 +83,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])+0.4841229182759271*JfL[22]-0.2795084971874737*JfL[21]+0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]+0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]-0.4330127018922193*JfL[9]+0.25*JfL[8]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -84,7 +93,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]-0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]-0.5809475019311124*JfL[14]+0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]+0.25*JfL[8]+0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -93,7 +103,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])+0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]-0.5809475019311124*JfL[14]+0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]-0.25*JfL[8]-0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -102,7 +113,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]-0.4841229182759271*JfL[22]+0.2795084971874737*JfL[21]+0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]+0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]+0.4330127018922193*JfL[9]-0.25*JfL[8]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -111,7 +123,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])+0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]+0.5809475019311124*JfL[14]-0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]-0.25*JfL[8]+0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -130,7 +143,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*(JfL[15]+JfL[14])+0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]-0.25*JfL[8]-0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -139,7 +153,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*(JfL[23]+JfL[22])+0.2795084971874737*JfL[21]-0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]-0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*(JfL[12]+JfL[9])-0.25*JfL[8]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -148,7 +163,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*(JfL[15]+JfL[14])-0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]-0.25*JfL[8]+0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -157,7 +173,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*(JfL[15]+JfL[14])-0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]+0.25*JfL[8]-0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -166,7 +183,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*(JfL[23]+JfL[22]))-0.2795084971874737*JfL[21]-0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]-0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*(JfL[12]+JfL[9])+0.25*JfL[8]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -175,7 +193,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*(JfL[15]+JfL[14])+0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]+0.25*JfL[8]+0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfy_3x2v_ser_p1.c index 21d32c281c..44fab0ed28 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfy_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfy_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -39,6 +42,12 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( hamil[12] = vmap[3]*bmag[5]; hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double apar_surf[24] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[2]; + apar_surf[1] = 1.4142135623730951*apar[1]-2.4494897427831783*apar[4]; + apar_surf[2] = 1.4142135623730951*apar[3]-2.4494897427831783*apar[6]; + apar_surf[5] = 1.4142135623730951*apar[5]-2.4494897427831783*apar[7]; + double *flux_surf_nodal = &flux_surf[24]; double cfl = 0.0; double bmag_quad = 0.0; @@ -52,14 +61,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -72,6 +81,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -81,6 +91,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]-0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -90,6 +101,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -99,6 +111,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -108,6 +121,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]+0.3423265984407287*JfL[44]-0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -117,6 +131,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -136,6 +151,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -145,6 +161,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -154,6 +171,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -163,6 +181,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -172,6 +191,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -181,6 +201,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -200,6 +221,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -209,6 +231,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])+0.1767766952966368*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -218,6 +241,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -227,6 +251,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -236,6 +261,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -245,6 +271,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -264,6 +291,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -273,6 +301,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]+0.3423265984407287*JfL[44]-0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -282,6 +311,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -291,6 +321,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -300,6 +331,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]-0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])+0.1767766952966368*JfL[21]+0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -309,6 +341,7 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; alpha_quad = 0.0; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfz_3x2v_ser_p1.c index 986892352c..4d4a8e8044 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfz_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_no_by_surfz_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -37,6 +40,12 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( hamil[8] = vmap[3]*(bmag[1]-1.7320508075688772*bmag[5]); hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double apar_surf[24] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[3]; + apar_surf[1] = 1.4142135623730951*apar[1]-2.4494897427831783*apar[5]; + apar_surf[2] = 1.4142135623730951*apar[2]-2.4494897427831783*apar[6]; + apar_surf[5] = 1.4142135623730951*apar[4]-2.4494897427831783*apar[7]; + double *flux_surf_nodal = &flux_surf[48]; double cfl = 0.0; double bmag_quad = 0.0; @@ -50,14 +59,14 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -69,7 +78,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*(JfL[30]+JfL[29])+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]-0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -78,7 +88,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*(JfL[46]+JfL[45])+0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]-0.19764235376052364*(JfL[41]+JfL[40])+0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[16]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -87,7 +98,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*(JfL[30]+JfL[29])-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]+0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -96,7 +108,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*(JfL[30]+JfL[29])-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -105,7 +118,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*(JfL[46]+JfL[45])-0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]+0.19764235376052364*(JfL[41]+JfL[40])+0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.3061862178478971*(JfL[16]+JfL[14])-0.1767766952966368*(JfL[13]+JfL[12])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -114,7 +128,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*(JfL[30]+JfL[29])+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -133,7 +148,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -142,7 +158,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.3423265984407287*JfL[45]-0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]+0.19764235376052364*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*(JfL[16]+JfL[14])-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -151,7 +168,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -160,7 +178,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -169,7 +188,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.3423265984407287*JfL[45]+0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]-0.19764235376052364*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[16]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -178,7 +198,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -197,7 +218,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])+0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -206,7 +228,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]+0.3423265984407287*JfL[45]-0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]-0.19764235376052364*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*(JfL[16]+JfL[14])+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -215,7 +238,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])-0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -224,7 +248,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])-0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -233,7 +258,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]-0.3423265984407287*JfL[45]+0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]+0.19764235376052364*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[16]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -242,7 +268,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])+0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -261,7 +288,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]+0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -270,7 +298,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*(JfL[46]+JfL[45])+0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]+0.19764235376052364*(JfL[41]+JfL[40])-0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[16]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -279,7 +308,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]-0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -288,7 +318,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -297,7 +328,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*(JfL[46]+JfL[45])-0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]-0.19764235376052364*(JfL[41]+JfL[40])-0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.3061862178478971*(JfL[16]+JfL[14])+0.1767766952966368*(JfL[13]+JfL[12])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -306,7 +338,8 @@ GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfconf_none.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfconf_none.c new file mode 100644 index 0000000000..341b6e2c2c --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfconf_none.c @@ -0,0 +1,11 @@ +#include +GKYL_CU_DH double gk_collisionless_flux_surfconf_none( + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + return 0.0; +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_1x1v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_1x1v_ser_p1.c index da915ecfda..56b2e82817 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_1x1v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_1x1v_ser_p1.c @@ -1,11 +1,11 @@ #include GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x1v_ser_p1( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf) + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. // dxv[NDIM]: cell length. @@ -17,6 +17,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x1v_ser_p1( // gkdgv: gyrokinetic volume DG geometry. // bmag: magnetic field amplitude. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -35,23 +37,27 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x1v_ser_p1( double cfl = 0.0; double bmag_quad = 0.0; double B3_quad = 0.0; - double Jc_quad = 0.0; double dualcurlbhat_quad[3] = {0.0}; double alpha_quad = 0.0; double JfL_quad = 0.0; double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; + double bioverJB_quad[3] = {0.0}; bmag_quad = gkdgv[0].bmag; B3_quad = gkdgv[0].B3; - Jc_quad = dgv[0].Jc; dualcurlbhat_quad[0] = gkdgv[0].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[0].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[0].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[0].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[0].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[0].bioverJB.x[2]; - - alpha_quad = -(0.8660254037844386*hamil[1]*rdx2)/m_/bmag_quad * B3_quad -(0.8660254037844386*hamil[1]*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.8660254037844386*hamil[2]-3.3541019662496847*hamil[4]))/vmap[1]); + alpha_quad = -(0.8660254037844386*hamil[1]*rdx2)/m_/bmag_quad * B3_quad; + alpha_quad += -(0.8660254037844386*hamil[1]*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.8660254037844386*hamil[2]-3.3541019662496847*hamil[4]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.8660254037844386*(0.7071067811865475*apar[0]-0.7071067811865475*apar[1])*hamil[1]*rdx2)*dualcurlbhat_quad[2]; + alpha_quad += -q_/m_*(0.7071067811865475*apardot[0]-0.7071067811865475*apardot[1]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(1.1180339887498951*JfL[5])+1.118033988749895*JfL[4]-0.8660254037844386*JfL[3]+0.8660254037844386*JfL[2]-0.5*JfL[1]+0.5*JfL[0])/vmap_prime_l[0]; @@ -62,13 +68,17 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x1v_ser_p1( bmag_quad = gkdgv[1].bmag; B3_quad = gkdgv[1].B3; - Jc_quad = dgv[1].Jc; dualcurlbhat_quad[0] = gkdgv[1].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[1].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[1].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[1].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[1].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[1].bioverJB.x[2]; - - alpha_quad = -(0.8660254037844386*hamil[1]*rdx2)/m_/bmag_quad * B3_quad -(0.8660254037844386*hamil[1]*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.8660254037844386*hamil[2]-3.3541019662496847*hamil[4]))/vmap[1]); + alpha_quad = -(0.8660254037844386*hamil[1]*rdx2)/m_/bmag_quad * B3_quad; + alpha_quad += -(0.8660254037844386*hamil[1]*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.8660254037844386*hamil[2]-3.3541019662496847*hamil[4]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.8660254037844386*(0.7071067811865475*apar[1]+0.7071067811865475*apar[0])*hamil[1]*rdx2)*dualcurlbhat_quad[2]; + alpha_quad += -q_/m_*(0.7071067811865475*apardot[1]+0.7071067811865475*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (1.1180339887498951*JfL[5]+1.118033988749895*JfL[4]+0.8660254037844386*JfL[3]+0.8660254037844386*JfL[2]+0.5*JfL[1]+0.5*JfL[0])/vmap_prime_l[0]; @@ -77,6 +87,7 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x1v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + double vmap_prime_min = fmin(fabs(vmap_prime_l[0]),fabs(vmap_prime_r[0])); return cfl/vmap_prime_min*2.5*rdvpar2; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_1x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_1x2v_ser_p1.c index e64b6b58e3..e916144b42 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_1x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_1x2v_ser_p1.c @@ -1,11 +1,11 @@ #include GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x2v_ser_p1( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf) + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. // dxv[NDIM]: cell length. @@ -17,6 +17,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x2v_ser_p1( // gkdgv: gyrokinetic volume DG geometry. // bmag: magnetic field amplitude. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -37,23 +39,27 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x2v_ser_p1( double cfl = 0.0; double bmag_quad = 0.0; double B3_quad = 0.0; - double Jc_quad = 0.0; double dualcurlbhat_quad[3] = {0.0}; double alpha_quad = 0.0; double JfL_quad = 0.0; double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; + double bioverJB_quad[3] = {0.0}; bmag_quad = gkdgv[0].bmag; B3_quad = gkdgv[0].B3; - Jc_quad = dgv[0].Jc; dualcurlbhat_quad[0] = gkdgv[0].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[0].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[0].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[0].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[0].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[0].bioverJB.x[2]; - - alpha_quad = -((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2)/m_/bmag_quad * B3_quad -((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.6123724356957944*hamil[2]-2.371708245126284*hamil[8]))/vmap[1]); + alpha_quad = -((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.6123724356957944*hamil[2]-2.371708245126284*hamil[8]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * ((0.7071067811865475*apar[0]-0.7071067811865475*apar[1])*(0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2)*dualcurlbhat_quad[2]; + alpha_quad += -q_/m_*(0.7071067811865475*apardot[0]-0.7071067811865475*apardot[1]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.7905694150420947*JfL[11]-0.7905694150420948*JfL[10]-0.7905694150420948*JfL[9]+0.7905694150420947*JfL[8]+0.6123724356957944*JfL[7]-0.6123724356957944*JfL[6]+0.3535533905932737*JfL[5]-0.6123724356957944*JfL[4]-0.3535533905932737*JfL[3]+0.6123724356957944*JfL[2]-0.3535533905932737*JfL[1]+0.3535533905932737*JfL[0])/vmap_prime_l[0]; @@ -62,7 +68,10 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2)/m_/bmag_quad * B3_quad -((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.6123724356957944*hamil[2]-2.371708245126284*hamil[8]))/vmap[1]); + alpha_quad = -((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.6123724356957944*hamil[2]-2.371708245126284*hamil[8]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * ((0.7071067811865475*apar[0]-0.7071067811865475*apar[1])*(0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2)*dualcurlbhat_quad[2]; + alpha_quad += -q_/m_*(0.7071067811865475*apardot[0]-0.7071067811865475*apardot[1]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.7905694150420947*JfL[11])+0.7905694150420948*JfL[10]-0.7905694150420948*JfL[9]+0.7905694150420947*JfL[8]-0.6123724356957944*JfL[7]+0.6123724356957944*JfL[6]-0.3535533905932737*JfL[5]-0.6123724356957944*JfL[4]+0.3535533905932737*JfL[3]+0.6123724356957944*JfL[2]-0.3535533905932737*JfL[1]+0.3535533905932737*JfL[0])/vmap_prime_l[0]; @@ -73,13 +82,17 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x2v_ser_p1( bmag_quad = gkdgv[1].bmag; B3_quad = gkdgv[1].B3; - Jc_quad = dgv[1].Jc; dualcurlbhat_quad[0] = gkdgv[1].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[1].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[1].dualcurlbhat.x[2]; + bioverJB_quad[0] = gkdgv[1].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[1].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[1].bioverJB.x[2]; - - alpha_quad = -((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2)/m_/bmag_quad * B3_quad -((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.6123724356957944*hamil[2]-2.371708245126284*hamil[8]))/vmap[1]); + alpha_quad = -((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.6123724356957944*hamil[2]-2.371708245126284*hamil[8]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * ((0.7071067811865475*apar[1]+0.7071067811865475*apar[0])*(0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2)*dualcurlbhat_quad[2]; + alpha_quad += -q_/m_*(0.7071067811865475*apardot[1]+0.7071067811865475*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.7905694150420947*JfL[11])-0.7905694150420948*JfL[10]+0.7905694150420948*JfL[9]+0.7905694150420947*JfL[8]-0.6123724356957944*JfL[7]-0.6123724356957944*JfL[6]-0.3535533905932737*JfL[5]+0.6123724356957944*JfL[4]-0.3535533905932737*JfL[3]+0.6123724356957944*JfL[2]+0.3535533905932737*JfL[1]+0.3535533905932737*JfL[0])/vmap_prime_l[0]; @@ -88,7 +101,10 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2)/m_/bmag_quad * B3_quad -((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.6123724356957944*hamil[2]-2.371708245126284*hamil[8]))/vmap[1]); + alpha_quad = -((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.6123724356957944*hamil[2]-2.371708245126284*hamil[8]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * ((0.7071067811865475*apar[1]+0.7071067811865475*apar[0])*(0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2)*dualcurlbhat_quad[2]; + alpha_quad += -q_/m_*(0.7071067811865475*apardot[1]+0.7071067811865475*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.7905694150420947*JfL[11]+0.7905694150420948*JfL[10]+0.7905694150420948*JfL[9]+0.7905694150420947*JfL[8]+0.6123724356957944*JfL[7]+0.6123724356957944*JfL[6]+0.3535533905932737*JfL[5]+0.6123724356957944*JfL[4]+0.3535533905932737*JfL[3]+0.6123724356957944*JfL[2]+0.3535533905932737*JfL[1]+0.3535533905932737*JfL[0])/vmap_prime_l[0]; @@ -97,6 +113,7 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + double vmap_prime_min = fmin(fabs(vmap_prime_l[0]),fabs(vmap_prime_r[0])); return cfl/vmap_prime_min*2.5*rdvpar2; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_2x2v_ser_p1.c index 1f56aa7c43..67c457bcb8 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_2x2v_ser_p1.c @@ -1,11 +1,11 @@ #include GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf) + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. // dxv[NDIM]: cell length. @@ -17,6 +17,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( // gkdgv: gyrokinetic volume DG geometry. // bmag: magnetic field amplitude. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -38,27 +40,68 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( hamil[12] = 1.4142135623730951*bmag[3]*vmap[3]; hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double gradHxgradA_1[24] = {0.}; + + double gradHxgradA_2[24] = {0.}; + gradHxgradA_2[0] = (1.5*apar[1]*hamil[2]-1.5*hamil[1]*apar[2])*rdx2*rdz2; + gradHxgradA_2[1] = (1.5*apar[1]*hamil[5]-1.5*hamil[1]*apar[3])*rdx2*rdz2; + gradHxgradA_2[2] = (1.5*hamil[2]*apar[3]-1.5*apar[2]*hamil[5])*rdx2*rdz2; + gradHxgradA_2[4] = (1.5*apar[1]*hamil[9]-1.5*apar[2]*hamil[8])*rdx2*rdz2; + gradHxgradA_2[8] = (1.5*apar[1]*hamil[12]-1.5*apar[3]*hamil[8])*rdx2*rdz2; + gradHxgradA_2[9] = (1.5*apar[3]*hamil[9]-1.5*apar[2]*hamil[12])*rdx2*rdz2; + + double gradHxgradA_3[24] = {0.}; + + double apargradH_1[24] = {0.}; + apargradH_1[0] = 0.8660254037844386*(apar[2]*hamil[5]+apar[0]*hamil[1])*rdx2; + apargradH_1[1] = 0.8660254037844386*(apar[3]*hamil[5]+apar[1]*hamil[1])*rdx2; + apargradH_1[2] = 0.8660254037844386*(apar[0]*hamil[5]+hamil[1]*apar[2])*rdx2; + apargradH_1[4] = 0.8660254037844386*(apar[2]*hamil[12]+apar[0]*hamil[8])*rdx2; + apargradH_1[5] = 0.8660254037844386*(apar[1]*hamil[5]+hamil[1]*apar[3])*rdx2; + apargradH_1[8] = 0.8660254037844386*(apar[3]*hamil[12]+apar[1]*hamil[8])*rdx2; + apargradH_1[9] = 0.8660254037844386*(apar[0]*hamil[12]+apar[2]*hamil[8])*rdx2; + apargradH_1[12] = 0.8660254037844386*(apar[1]*hamil[12]+apar[3]*hamil[8])*rdx2; + + double apargradH_2[24] = {0.}; + + double apargradH_3[24] = {0.}; + apargradH_3[0] = 0.8660254037844386*(apar[1]*hamil[5]+apar[0]*hamil[2])*rdz2; + apargradH_3[1] = 0.8660254037844386*(apar[0]*hamil[5]+apar[1]*hamil[2])*rdz2; + apargradH_3[2] = 0.8660254037844386*(apar[3]*hamil[5]+apar[2]*hamil[2])*rdz2; + apargradH_3[4] = 0.8660254037844386*(apar[1]*hamil[12]+apar[0]*hamil[9])*rdz2; + apargradH_3[5] = 0.8660254037844386*(apar[2]*hamil[5]+hamil[2]*apar[3])*rdz2; + apargradH_3[8] = 0.8660254037844386*(apar[0]*hamil[12]+apar[1]*hamil[9])*rdz2; + apargradH_3[9] = 0.8660254037844386*(apar[3]*hamil[12]+apar[2]*hamil[9])*rdz2; + apargradH_3[12] = 0.8660254037844386*(apar[2]*hamil[12]+apar[3]*hamil[9])*rdz2; + double *flux_surf_nodal = &flux_surf[24]; double cfl = 0.0; double bmag_quad = 0.0; double B3_quad = 0.0; - double Jc_quad = 0.0; double dualcurlbhat_quad[3] = {0.0}; double alpha_quad = 0.0; double JfL_quad = 0.0; double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; + double bioverJB_quad[3] = {0.0}; bmag_quad = gkdgv[0].bmag; B3_quad = gkdgv[0].B3; - Jc_quad = dgv[0].Jc; dualcurlbhat_quad[0] = gkdgv[0].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[0].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[0].dualcurlbhat.x[2]; - - - alpha_quad = -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1])-((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + bioverJB_quad[0] = gkdgv[0].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[0].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[0].bioverJB.x[2]; + + alpha_quad = -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.25*apargradH_1[12])+0.25*apargradH_1[9]+0.25*apargradH_1[8]+0.25*apargradH_1[5]-0.25*apargradH_1[4]-0.25*apargradH_1[2]-0.25*apargradH_1[1]+0.25*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -1.0/m_/bmag_quad * (0.0)*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(0.25*gradHxgradA_2[9]+0.25*gradHxgradA_2[8]-0.25*gradHxgradA_2[4]-0.25*gradHxgradA_2[2]-0.25*gradHxgradA_2[1]+0.25*gradHxgradA_2[0]); + alpha_quad += -q_/m_*(0.5*apardot[3]-0.5*apardot[2]-0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.5590169943749476*JfL[23])+0.5590169943749475*JfL[22]+0.5590169943749475*JfL[21]+0.5590169943749475*JfL[20]-0.5590169943749476*JfL[19]-0.5590169943749476*JfL[18]-0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]-0.4330127018922193*JfL[15]+0.4330127018922193*JfL[14]+0.4330127018922193*JfL[13]-0.25*JfL[12]+0.4330127018922193*JfL[11]-0.4330127018922193*JfL[10]+0.25*JfL[9]+0.25*JfL[8]-0.4330127018922193*JfL[7]-0.4330127018922193*JfL[6]+0.25*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[3]-0.25*JfL[2]-0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -67,7 +110,13 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1])-((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad = -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.25*apargradH_1[12]-0.25*apargradH_1[9]-0.25*apargradH_1[8]+0.25*apargradH_1[5]+0.25*apargradH_1[4]-0.25*apargradH_1[2]-0.25*apargradH_1[1]+0.25*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -1.0/m_/bmag_quad * (0.0)*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(-(0.25*gradHxgradA_2[9])-0.25*gradHxgradA_2[8]+0.25*gradHxgradA_2[4]-0.25*gradHxgradA_2[2]-0.25*gradHxgradA_2[1]+0.25*gradHxgradA_2[0]); + alpha_quad += -q_/m_*(0.5*apardot[3]-0.5*apardot[2]-0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.5590169943749476*JfL[23]-0.5590169943749475*JfL[22]-0.5590169943749475*JfL[21]+0.5590169943749475*JfL[20]+0.5590169943749476*JfL[19]-0.5590169943749476*JfL[18]-0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]+0.4330127018922193*JfL[15]-0.4330127018922193*JfL[14]-0.4330127018922193*JfL[13]+0.25*JfL[12]+0.4330127018922193*JfL[11]+0.4330127018922193*JfL[10]-0.25*JfL[9]-0.25*JfL[8]-0.4330127018922193*JfL[7]-0.4330127018922193*JfL[6]+0.25*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[3]-0.25*JfL[2]-0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -78,13 +127,20 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( bmag_quad = gkdgv[1].bmag; B3_quad = gkdgv[1].B3; - Jc_quad = dgv[1].Jc; dualcurlbhat_quad[0] = gkdgv[1].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[1].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[1].dualcurlbhat.x[2]; - - - alpha_quad = -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1])-((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + bioverJB_quad[0] = gkdgv[1].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[1].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[1].bioverJB.x[2]; + + alpha_quad = -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.25*apargradH_1[12]-0.25*apargradH_1[9]+0.25*apargradH_1[8]-0.25*apargradH_1[5]-0.25*apargradH_1[4]+0.25*apargradH_1[2]-0.25*apargradH_1[1]+0.25*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -1.0/m_/bmag_quad * (0.0)*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(-(0.25*gradHxgradA_2[9])+0.25*gradHxgradA_2[8]-0.25*gradHxgradA_2[4]+0.25*gradHxgradA_2[2]-0.25*gradHxgradA_2[1]+0.25*gradHxgradA_2[0]); + alpha_quad += -q_/m_*(-(0.5*apardot[3])+0.5*apardot[2]-0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.5590169943749476*JfL[23]-0.5590169943749475*JfL[22]+0.5590169943749475*JfL[21]-0.5590169943749475*JfL[20]-0.5590169943749476*JfL[19]+0.5590169943749476*JfL[18]-0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]+0.4330127018922193*JfL[15]-0.4330127018922193*JfL[14]+0.4330127018922193*JfL[13]+0.25*JfL[12]-0.4330127018922193*JfL[11]-0.4330127018922193*JfL[10]-0.25*JfL[9]+0.25*JfL[8]+0.4330127018922193*JfL[7]-0.4330127018922193*JfL[6]-0.25*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[3]+0.25*JfL[2]-0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -93,7 +149,13 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1])-((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad = -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.25*apargradH_1[12])+0.25*apargradH_1[9]-0.25*apargradH_1[8]-0.25*apargradH_1[5]+0.25*apargradH_1[4]+0.25*apargradH_1[2]-0.25*apargradH_1[1]+0.25*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -1.0/m_/bmag_quad * (0.0)*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(0.25*gradHxgradA_2[9]-0.25*gradHxgradA_2[8]+0.25*gradHxgradA_2[4]+0.25*gradHxgradA_2[2]-0.25*gradHxgradA_2[1]+0.25*gradHxgradA_2[0]); + alpha_quad += -q_/m_*(-(0.5*apardot[3])+0.5*apardot[2]-0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.5590169943749476*JfL[23])+0.5590169943749475*JfL[22]-0.5590169943749475*JfL[21]-0.5590169943749475*JfL[20]+0.5590169943749476*JfL[19]+0.5590169943749476*JfL[18]-0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]-0.4330127018922193*JfL[15]+0.4330127018922193*JfL[14]-0.4330127018922193*JfL[13]-0.25*JfL[12]-0.4330127018922193*JfL[11]+0.4330127018922193*JfL[10]+0.25*JfL[9]-0.25*JfL[8]+0.4330127018922193*JfL[7]-0.4330127018922193*JfL[6]-0.25*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[3]+0.25*JfL[2]-0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -104,13 +166,20 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( bmag_quad = gkdgv[2].bmag; B3_quad = gkdgv[2].B3; - Jc_quad = dgv[2].Jc; dualcurlbhat_quad[0] = gkdgv[2].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[2].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[2].dualcurlbhat.x[2]; - - - alpha_quad = -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1])-((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + bioverJB_quad[0] = gkdgv[2].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[2].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[2].bioverJB.x[2]; + + alpha_quad = -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.25*apargradH_1[12]+0.25*apargradH_1[9]-0.25*apargradH_1[8]-0.25*apargradH_1[5]-0.25*apargradH_1[4]-0.25*apargradH_1[2]+0.25*apargradH_1[1]+0.25*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -1.0/m_/bmag_quad * (0.0)*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(0.25*gradHxgradA_2[9]-0.25*gradHxgradA_2[8]-0.25*gradHxgradA_2[4]-0.25*gradHxgradA_2[2]+0.25*gradHxgradA_2[1]+0.25*gradHxgradA_2[0]); + alpha_quad += -q_/m_*(-(0.5*apardot[3])-0.5*apardot[2]+0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.5590169943749476*JfL[23]+0.5590169943749475*JfL[22]-0.5590169943749475*JfL[21]-0.5590169943749475*JfL[20]-0.5590169943749476*JfL[19]-0.5590169943749476*JfL[18]+0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]+0.4330127018922193*JfL[15]+0.4330127018922193*JfL[14]-0.4330127018922193*JfL[13]+0.25*JfL[12]-0.4330127018922193*JfL[11]-0.4330127018922193*JfL[10]+0.25*JfL[9]-0.25*JfL[8]-0.4330127018922193*JfL[7]+0.4330127018922193*JfL[6]-0.25*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[3]-0.25*JfL[2]+0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -119,7 +188,13 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1])-((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad = -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.25*apargradH_1[12])-0.25*apargradH_1[9]+0.25*apargradH_1[8]-0.25*apargradH_1[5]+0.25*apargradH_1[4]-0.25*apargradH_1[2]+0.25*apargradH_1[1]+0.25*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -1.0/m_/bmag_quad * (0.0)*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(-(0.25*gradHxgradA_2[9])+0.25*gradHxgradA_2[8]+0.25*gradHxgradA_2[4]-0.25*gradHxgradA_2[2]+0.25*gradHxgradA_2[1]+0.25*gradHxgradA_2[0]); + alpha_quad += -q_/m_*(-(0.5*apardot[3])-0.5*apardot[2]+0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.5590169943749476*JfL[23])-0.5590169943749475*JfL[22]+0.5590169943749475*JfL[21]-0.5590169943749475*JfL[20]+0.5590169943749476*JfL[19]-0.5590169943749476*JfL[18]+0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]-0.4330127018922193*JfL[15]-0.4330127018922193*JfL[14]+0.4330127018922193*JfL[13]-0.25*JfL[12]-0.4330127018922193*JfL[11]+0.4330127018922193*JfL[10]-0.25*JfL[9]+0.25*JfL[8]-0.4330127018922193*JfL[7]+0.4330127018922193*JfL[6]-0.25*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[3]-0.25*JfL[2]+0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -130,13 +205,20 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( bmag_quad = gkdgv[3].bmag; B3_quad = gkdgv[3].B3; - Jc_quad = dgv[3].Jc; dualcurlbhat_quad[0] = gkdgv[3].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[3].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[3].dualcurlbhat.x[2]; - - - alpha_quad = -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1])-((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + bioverJB_quad[0] = gkdgv[3].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[3].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[3].bioverJB.x[2]; + + alpha_quad = -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.25*apargradH_1[12])-0.25*apargradH_1[9]-0.25*apargradH_1[8]+0.25*apargradH_1[5]-0.25*apargradH_1[4]+0.25*apargradH_1[2]+0.25*apargradH_1[1]+0.25*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -1.0/m_/bmag_quad * (0.0)*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(-(0.25*gradHxgradA_2[9])-0.25*gradHxgradA_2[8]-0.25*gradHxgradA_2[4]+0.25*gradHxgradA_2[2]+0.25*gradHxgradA_2[1]+0.25*gradHxgradA_2[0]); + alpha_quad += -q_/m_*(0.5*apardot[3]+0.5*apardot[2]+0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.5590169943749476*JfL[23])-0.5590169943749475*JfL[22]-0.5590169943749475*JfL[21]+0.5590169943749475*JfL[20]-0.5590169943749476*JfL[19]+0.5590169943749476*JfL[18]+0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]-0.4330127018922193*JfL[15]-0.4330127018922193*JfL[14]-0.4330127018922193*JfL[13]-0.25*JfL[12]+0.4330127018922193*JfL[11]-0.4330127018922193*JfL[10]-0.25*JfL[9]-0.25*JfL[8]+0.4330127018922193*JfL[7]+0.4330127018922193*JfL[6]+0.25*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[3]+0.25*JfL[2]+0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -145,7 +227,13 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1])-((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad = -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.4330127018922193*hamil[3]-1.6770509831248424*hamil[16]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.25*apargradH_1[12]+0.25*apargradH_1[9]+0.25*apargradH_1[8]+0.25*apargradH_1[5]+0.25*apargradH_1[4]+0.25*apargradH_1[2]+0.25*apargradH_1[1]+0.25*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -1.0/m_/bmag_quad * (0.0)*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(0.25*gradHxgradA_2[9]+0.25*gradHxgradA_2[8]+0.25*gradHxgradA_2[4]+0.25*gradHxgradA_2[2]+0.25*gradHxgradA_2[1]+0.25*gradHxgradA_2[0]); + alpha_quad += -q_/m_*(0.5*apardot[3]+0.5*apardot[2]+0.5*apardot[1]+0.5*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.5590169943749476*JfL[23]+0.5590169943749475*JfL[22]+0.5590169943749475*JfL[21]+0.5590169943749475*JfL[20]+0.5590169943749476*JfL[19]+0.5590169943749476*JfL[18]+0.5590169943749476*JfL[17]+0.5590169943749475*JfL[16]+0.4330127018922193*JfL[15]+0.4330127018922193*JfL[14]+0.4330127018922193*JfL[13]+0.25*JfL[12]+0.4330127018922193*JfL[11]+0.4330127018922193*JfL[10]+0.25*JfL[9]+0.25*JfL[8]+0.4330127018922193*JfL[7]+0.4330127018922193*JfL[6]+0.25*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[3]+0.25*JfL[2]+0.25*JfL[1]+0.25*JfL[0])/vmap_prime_l[0]; @@ -154,6 +242,7 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + double vmap_prime_min = fmin(fabs(vmap_prime_l[0]),fabs(vmap_prime_r[0])); return cfl/vmap_prime_min*2.5*rdvpar2; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_3x2v_ser_p1.c index 55fccbb259..2338f22427 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_3x2v_ser_p1.c @@ -1,11 +1,11 @@ #include GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf) + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. // dxv[NDIM]: cell length. @@ -17,6 +17,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( // gkdgv: gyrokinetic volume DG geometry. // bmag: magnetic field amplitude. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -43,27 +45,122 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( hamil[21] = 1.4142135623730951*vmap[3]*bmag[5]; hamil[32] = 2.0*vmapSq[2]*m_; + double gradHxgradA_1[48] = {0.}; + gradHxgradA_1[0] = (-(1.060660171779821*apar[4]*hamil[7])+1.060660171779821*apar[5]*hamil[6]-1.060660171779821*apar[2]*hamil[3]+1.060660171779821*hamil[2]*apar[3])*rdy2*rdz2; + gradHxgradA_1[1] = (-(1.060660171779821*apar[2]*hamil[7])+1.060660171779821*(apar[3]*hamil[6]+hamil[2]*apar[5])-1.060660171779821*hamil[3]*apar[4])*rdy2*rdz2; + gradHxgradA_1[2] = (1.060660171779821*(hamil[6]*apar[7]+hamil[2]*apar[6])-1.060660171779821*(apar[4]*hamil[16]+apar[2]*hamil[8]))*rdy2*rdz2; + gradHxgradA_1[3] = (1.060660171779821*(apar[5]*hamil[16]+apar[3]*hamil[8])-1.060660171779821*(apar[7]*hamil[7]+hamil[3]*apar[6]))*rdy2*rdz2; + gradHxgradA_1[5] = -(1.060660171779821*(apar[4]*hamil[21]+apar[2]*hamil[14])*rdy2*rdz2); + gradHxgradA_1[6] = (1.060660171779821*(hamil[2]*apar[7]+apar[6]*hamil[6])-1.060660171779821*(apar[2]*hamil[16]+apar[4]*hamil[8]))*rdy2*rdz2; + gradHxgradA_1[7] = (1.060660171779821*(apar[3]*hamil[16]+apar[5]*hamil[8])-1.060660171779821*(apar[6]*hamil[7]+hamil[3]*apar[7]))*rdy2*rdz2; + gradHxgradA_1[12] = -(1.060660171779821*(apar[2]*hamil[21]+apar[4]*hamil[14])*rdy2*rdz2); + gradHxgradA_1[14] = -(1.060660171779821*(apar[7]*hamil[21]+apar[6]*hamil[14])*rdy2*rdz2); + gradHxgradA_1[21] = -(1.060660171779821*(apar[6]*hamil[21]+apar[7]*hamil[14])*rdy2*rdz2); + + double gradHxgradA_2[48] = {0.}; + gradHxgradA_2[0] = (1.060660171779821*apar[4]*hamil[8]-1.060660171779821*apar[6]*hamil[6]+1.060660171779821*apar[1]*hamil[3]-1.060660171779821*hamil[1]*apar[3])*rdx2*rdz2; + gradHxgradA_2[1] = (1.060660171779821*(apar[4]*hamil[16]+apar[1]*hamil[7])-1.060660171779821*(hamil[6]*apar[7]+hamil[1]*apar[5]))*rdx2*rdz2; + gradHxgradA_2[2] = (1.060660171779821*apar[1]*hamil[8]-1.060660171779821*(apar[3]*hamil[6]+hamil[1]*apar[6])+1.060660171779821*hamil[3]*apar[4])*rdx2*rdz2; + gradHxgradA_2[3] = (-(1.060660171779821*apar[6]*hamil[16])+1.060660171779821*apar[7]*hamil[8]-1.060660171779821*apar[3]*hamil[7]+1.060660171779821*hamil[3]*apar[5])*rdx2*rdz2; + gradHxgradA_2[5] = (1.060660171779821*apar[1]*hamil[14]-1.060660171779821*apar[3]*hamil[12])*rdx2*rdz2; + gradHxgradA_2[6] = (1.060660171779821*(apar[1]*hamil[16]+apar[4]*hamil[7])-1.060660171779821*(hamil[1]*apar[7]+apar[5]*hamil[6]))*rdx2*rdz2; + gradHxgradA_2[8] = (-(1.060660171779821*apar[3]*hamil[16])+1.060660171779821*apar[5]*hamil[8]-1.060660171779821*apar[6]*hamil[7]+1.060660171779821*hamil[3]*apar[7])*rdx2*rdz2; + gradHxgradA_2[12] = (1.060660171779821*apar[1]*hamil[21]-1.060660171779821*apar[5]*hamil[12])*rdx2*rdz2; + gradHxgradA_2[13] = (1.060660171779821*apar[4]*hamil[14]-1.060660171779821*apar[6]*hamil[12])*rdx2*rdz2; + gradHxgradA_2[14] = (1.060660171779821*apar[5]*hamil[14]-1.060660171779821*apar[3]*hamil[21])*rdx2*rdz2; + gradHxgradA_2[20] = (1.060660171779821*apar[4]*hamil[21]-1.060660171779821*apar[7]*hamil[12])*rdx2*rdz2; + gradHxgradA_2[22] = (1.060660171779821*apar[7]*hamil[14]-1.060660171779821*apar[6]*hamil[21])*rdx2*rdz2; + + double gradHxgradA_3[48] = {0.}; + gradHxgradA_3[0] = (-(1.060660171779821*apar[5]*hamil[8])+1.060660171779821*apar[6]*hamil[7]-1.060660171779821*apar[1]*hamil[2]+1.060660171779821*hamil[1]*apar[2])*rdx2*rdy2; + gradHxgradA_3[1] = (-(1.060660171779821*apar[5]*hamil[16])+1.060660171779821*apar[7]*hamil[7]-1.060660171779821*apar[1]*hamil[6]+1.060660171779821*hamil[1]*apar[4])*rdx2*rdy2; + gradHxgradA_3[2] = (1.060660171779821*apar[6]*hamil[16]-1.060660171779821*apar[7]*hamil[8]+1.060660171779821*apar[2]*hamil[6]-1.060660171779821*hamil[2]*apar[4])*rdx2*rdy2; + gradHxgradA_3[3] = (-(1.060660171779821*apar[1]*hamil[8])+1.060660171779821*(apar[2]*hamil[7]+hamil[1]*apar[6])-1.060660171779821*hamil[2]*apar[5])*rdx2*rdy2; + gradHxgradA_3[5] = 1.060660171779821*(apar[6]*hamil[21]+apar[2]*hamil[12])*rdx2*rdy2; + gradHxgradA_3[7] = (-(1.060660171779821*apar[1]*hamil[16])+1.060660171779821*(apar[4]*hamil[7]+hamil[1]*apar[7])-1.060660171779821*apar[5]*hamil[6])*rdx2*rdy2; + gradHxgradA_3[8] = (1.060660171779821*apar[2]*hamil[16]-1.060660171779821*(apar[4]*hamil[8]+hamil[2]*apar[7])+1.060660171779821*apar[6]*hamil[6])*rdx2*rdy2; + gradHxgradA_3[12] = 1.060660171779821*(apar[7]*hamil[21]+apar[4]*hamil[12])*rdx2*rdy2; + gradHxgradA_3[14] = 1.060660171779821*(apar[2]*hamil[21]+apar[6]*hamil[12])*rdx2*rdy2; + gradHxgradA_3[21] = 1.060660171779821*(apar[4]*hamil[21]+apar[7]*hamil[12])*rdx2*rdy2; + + double apargradH_1[48] = {0.}; + apargradH_1[0] = 0.6123724356957944*(apar[6]*hamil[16]+apar[3]*hamil[7]+apar[2]*hamil[6]+apar[0]*hamil[1])*rdx2; + apargradH_1[1] = 0.6123724356957944*(apar[7]*hamil[16]+apar[5]*hamil[7]+apar[4]*hamil[6]+apar[1]*hamil[1])*rdx2; + apargradH_1[2] = 0.6123724356957944*(apar[3]*hamil[16]+apar[6]*hamil[7]+apar[0]*hamil[6]+hamil[1]*apar[2])*rdx2; + apargradH_1[3] = 0.6123724356957944*(apar[2]*hamil[16]+apar[0]*hamil[7]+apar[6]*hamil[6]+hamil[1]*apar[3])*rdx2; + apargradH_1[5] = 0.6123724356957944*(apar[3]*hamil[21]+apar[0]*hamil[12])*rdx2; + apargradH_1[6] = 0.6123724356957944*(apar[5]*hamil[16]+apar[7]*hamil[7]+apar[1]*hamil[6]+hamil[1]*apar[4])*rdx2; + apargradH_1[7] = 0.6123724356957944*(apar[4]*hamil[16]+apar[1]*hamil[7]+hamil[6]*apar[7]+hamil[1]*apar[5])*rdx2; + apargradH_1[8] = 0.6123724356957944*(apar[0]*hamil[16]+apar[2]*hamil[7]+apar[3]*hamil[6]+hamil[1]*apar[6])*rdx2; + apargradH_1[12] = 0.6123724356957944*(apar[5]*hamil[21]+apar[1]*hamil[12])*rdx2; + apargradH_1[13] = 0.6123724356957944*(apar[6]*hamil[21]+apar[2]*hamil[12])*rdx2; + apargradH_1[14] = 0.6123724356957944*(apar[0]*hamil[21]+apar[3]*hamil[12])*rdx2; + apargradH_1[16] = 0.6123724356957944*(apar[1]*hamil[16]+apar[4]*hamil[7]+hamil[1]*apar[7]+apar[5]*hamil[6])*rdx2; + apargradH_1[20] = 0.6123724356957944*(apar[7]*hamil[21]+apar[4]*hamil[12])*rdx2; + apargradH_1[21] = 0.6123724356957944*(apar[1]*hamil[21]+apar[5]*hamil[12])*rdx2; + apargradH_1[22] = 0.6123724356957944*(apar[2]*hamil[21]+apar[6]*hamil[12])*rdx2; + apargradH_1[27] = 0.6123724356957944*(apar[4]*hamil[21]+apar[7]*hamil[12])*rdx2; + + double apargradH_2[48] = {0.}; + apargradH_2[0] = 0.6123724356957944*(apar[5]*hamil[16]+apar[3]*hamil[8]+apar[1]*hamil[6]+apar[0]*hamil[2])*rdy2; + apargradH_2[1] = 0.6123724356957944*(apar[3]*hamil[16]+apar[5]*hamil[8]+apar[0]*hamil[6]+apar[1]*hamil[2])*rdy2; + apargradH_2[2] = 0.6123724356957944*(apar[7]*hamil[16]+apar[6]*hamil[8]+apar[4]*hamil[6]+apar[2]*hamil[2])*rdy2; + apargradH_2[3] = 0.6123724356957944*(apar[1]*hamil[16]+apar[0]*hamil[8]+apar[5]*hamil[6]+hamil[2]*apar[3])*rdy2; + apargradH_2[6] = 0.6123724356957944*(apar[6]*hamil[16]+apar[7]*hamil[8]+apar[2]*hamil[6]+hamil[2]*apar[4])*rdy2; + apargradH_2[7] = 0.6123724356957944*(apar[0]*hamil[16]+apar[1]*hamil[8]+apar[3]*hamil[6]+hamil[2]*apar[5])*rdy2; + apargradH_2[8] = 0.6123724356957944*(apar[4]*hamil[16]+apar[2]*hamil[8]+hamil[6]*apar[7]+hamil[2]*apar[6])*rdy2; + apargradH_2[16] = 0.6123724356957944*(apar[2]*hamil[16]+apar[4]*hamil[8]+hamil[2]*apar[7]+apar[6]*hamil[6])*rdy2; + + double apargradH_3[48] = {0.}; + apargradH_3[0] = 0.6123724356957944*(apar[4]*hamil[16]+apar[2]*hamil[8]+apar[1]*hamil[7]+apar[0]*hamil[3])*rdz2; + apargradH_3[1] = 0.6123724356957944*(apar[2]*hamil[16]+apar[4]*hamil[8]+apar[0]*hamil[7]+apar[1]*hamil[3])*rdz2; + apargradH_3[2] = 0.6123724356957944*(apar[1]*hamil[16]+apar[0]*hamil[8]+apar[4]*hamil[7]+apar[2]*hamil[3])*rdz2; + apargradH_3[3] = 0.6123724356957944*(apar[7]*hamil[16]+apar[6]*hamil[8]+apar[5]*hamil[7]+apar[3]*hamil[3])*rdz2; + apargradH_3[5] = 0.6123724356957944*(apar[1]*hamil[21]+apar[0]*hamil[14])*rdz2; + apargradH_3[6] = 0.6123724356957944*(apar[0]*hamil[16]+apar[1]*hamil[8]+apar[2]*hamil[7]+hamil[3]*apar[4])*rdz2; + apargradH_3[7] = 0.6123724356957944*(apar[6]*hamil[16]+apar[7]*hamil[8]+apar[3]*hamil[7]+hamil[3]*apar[5])*rdz2; + apargradH_3[8] = 0.6123724356957944*(apar[5]*hamil[16]+apar[3]*hamil[8]+apar[7]*hamil[7]+hamil[3]*apar[6])*rdz2; + apargradH_3[12] = 0.6123724356957944*(apar[0]*hamil[21]+apar[1]*hamil[14])*rdz2; + apargradH_3[13] = 0.6123724356957944*(apar[4]*hamil[21]+apar[2]*hamil[14])*rdz2; + apargradH_3[14] = 0.6123724356957944*(apar[5]*hamil[21]+apar[3]*hamil[14])*rdz2; + apargradH_3[16] = 0.6123724356957944*(apar[3]*hamil[16]+apar[5]*hamil[8]+apar[6]*hamil[7]+hamil[3]*apar[7])*rdz2; + apargradH_3[20] = 0.6123724356957944*(apar[2]*hamil[21]+apar[4]*hamil[14])*rdz2; + apargradH_3[21] = 0.6123724356957944*(apar[3]*hamil[21]+apar[5]*hamil[14])*rdz2; + apargradH_3[22] = 0.6123724356957944*(apar[7]*hamil[21]+apar[6]*hamil[14])*rdz2; + apargradH_3[27] = 0.6123724356957944*(apar[6]*hamil[21]+apar[7]*hamil[14])*rdz2; + double *flux_surf_nodal = &flux_surf[72]; double cfl = 0.0; double bmag_quad = 0.0; double B3_quad = 0.0; - double Jc_quad = 0.0; double dualcurlbhat_quad[3] = {0.0}; double alpha_quad = 0.0; double JfL_quad = 0.0; double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; + double bioverJB_quad[3] = {0.0}; bmag_quad = gkdgv[0].bmag; B3_quad = gkdgv[0].B3; - Jc_quad = dgv[0].Jc; dualcurlbhat_quad[0] = gkdgv[0].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[0].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[0].dualcurlbhat.x[2]; - - - alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + bioverJB_quad[0] = gkdgv[0].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[0].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[0].bioverJB.x[2]; + + alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_1[27]-0.1767766952966368*apargradH_1[22]-0.1767766952966368*apargradH_1[21]-0.1767766952966368*apargradH_1[20]-0.1767766952966368*apargradH_1[16]+0.1767766952966368*apargradH_1[14]+0.1767766952966368*apargradH_1[13]+0.1767766952966368*apargradH_1[12]+0.1767766952966368*apargradH_1[8]+0.1767766952966368*apargradH_1[7]+0.1767766952966368*apargradH_1[6]-0.1767766952966368*apargradH_1[5]-0.1767766952966368*apargradH_1[3]-0.1767766952966368*apargradH_1[2]-0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(-(0.1767766952966368*gradHxgradA_1[21])+0.1767766952966368*gradHxgradA_1[14]+0.1767766952966368*gradHxgradA_1[12]+0.1767766952966368*gradHxgradA_1[7]+0.1767766952966368*gradHxgradA_1[6]-0.1767766952966368*gradHxgradA_1[5]-0.1767766952966368*gradHxgradA_1[3]-0.1767766952966368*gradHxgradA_1[2]-0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_2[16])+0.1767766952966368*apargradH_2[8]+0.1767766952966368*apargradH_2[7]+0.1767766952966368*apargradH_2[6]-0.1767766952966368*apargradH_2[3]-0.1767766952966368*apargradH_2[2]-0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(-(0.1767766952966368*gradHxgradA_2[22])-0.1767766952966368*gradHxgradA_2[20]+0.1767766952966368*gradHxgradA_2[14]+0.1767766952966368*gradHxgradA_2[13]+0.1767766952966368*gradHxgradA_2[12]+0.1767766952966368*gradHxgradA_2[8]+0.1767766952966368*gradHxgradA_2[6]-0.1767766952966368*gradHxgradA_2[5]-0.1767766952966368*gradHxgradA_2[3]-0.1767766952966368*gradHxgradA_2[2]-0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_3[27]-0.1767766952966368*apargradH_3[22]-0.1767766952966368*apargradH_3[21]-0.1767766952966368*apargradH_3[20]-0.1767766952966368*apargradH_3[16]+0.1767766952966368*apargradH_3[14]+0.1767766952966368*apargradH_3[13]+0.1767766952966368*apargradH_3[12]+0.1767766952966368*apargradH_3[8]+0.1767766952966368*apargradH_3[7]+0.1767766952966368*apargradH_3[6]-0.1767766952966368*apargradH_3[5]-0.1767766952966368*apargradH_3[3]-0.1767766952966368*apargradH_3[2]-0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(-(0.1767766952966368*gradHxgradA_3[21])+0.1767766952966368*gradHxgradA_3[14]+0.1767766952966368*gradHxgradA_3[12]+0.1767766952966368*gradHxgradA_3[8]+0.1767766952966368*gradHxgradA_3[7]-0.1767766952966368*gradHxgradA_3[5]-0.1767766952966368*gradHxgradA_3[3]-0.1767766952966368*gradHxgradA_3[2]-0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])+0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]-0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -72,7 +169,17 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_1[27])+0.1767766952966368*apargradH_1[22]+0.1767766952966368*apargradH_1[21]+0.1767766952966368*apargradH_1[20]-0.1767766952966368*apargradH_1[16]-0.1767766952966368*apargradH_1[14]-0.1767766952966368*apargradH_1[13]-0.1767766952966368*apargradH_1[12]+0.1767766952966368*apargradH_1[8]+0.1767766952966368*apargradH_1[7]+0.1767766952966368*apargradH_1[6]+0.1767766952966368*apargradH_1[5]-0.1767766952966368*apargradH_1[3]-0.1767766952966368*apargradH_1[2]-0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(0.1767766952966368*gradHxgradA_1[21]-0.1767766952966368*gradHxgradA_1[14]-0.1767766952966368*gradHxgradA_1[12]+0.1767766952966368*gradHxgradA_1[7]+0.1767766952966368*gradHxgradA_1[6]+0.1767766952966368*gradHxgradA_1[5]-0.1767766952966368*gradHxgradA_1[3]-0.1767766952966368*gradHxgradA_1[2]-0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_2[16])+0.1767766952966368*apargradH_2[8]+0.1767766952966368*apargradH_2[7]+0.1767766952966368*apargradH_2[6]-0.1767766952966368*apargradH_2[3]-0.1767766952966368*apargradH_2[2]-0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(0.1767766952966368*gradHxgradA_2[22]+0.1767766952966368*gradHxgradA_2[20]-0.1767766952966368*gradHxgradA_2[14]-0.1767766952966368*gradHxgradA_2[13]-0.1767766952966368*gradHxgradA_2[12]+0.1767766952966368*gradHxgradA_2[8]+0.1767766952966368*gradHxgradA_2[6]+0.1767766952966368*gradHxgradA_2[5]-0.1767766952966368*gradHxgradA_2[3]-0.1767766952966368*gradHxgradA_2[2]-0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_3[27])+0.1767766952966368*apargradH_3[22]+0.1767766952966368*apargradH_3[21]+0.1767766952966368*apargradH_3[20]-0.1767766952966368*apargradH_3[16]-0.1767766952966368*apargradH_3[14]-0.1767766952966368*apargradH_3[13]-0.1767766952966368*apargradH_3[12]+0.1767766952966368*apargradH_3[8]+0.1767766952966368*apargradH_3[7]+0.1767766952966368*apargradH_3[6]+0.1767766952966368*apargradH_3[5]-0.1767766952966368*apargradH_3[3]-0.1767766952966368*apargradH_3[2]-0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(0.1767766952966368*gradHxgradA_3[21]-0.1767766952966368*gradHxgradA_3[14]-0.1767766952966368*gradHxgradA_3[12]+0.1767766952966368*gradHxgradA_3[8]+0.1767766952966368*gradHxgradA_3[7]+0.1767766952966368*gradHxgradA_3[5]-0.1767766952966368*gradHxgradA_3[3]-0.1767766952966368*gradHxgradA_3[2]-0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])+0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])+0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -83,13 +190,24 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[1].bmag; B3_quad = gkdgv[1].B3; - Jc_quad = dgv[1].Jc; dualcurlbhat_quad[0] = gkdgv[1].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[1].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[1].dualcurlbhat.x[2]; - - - alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + bioverJB_quad[0] = gkdgv[1].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[1].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[1].bioverJB.x[2]; + + alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_1[27])+0.1767766952966368*apargradH_1[22]+0.1767766952966368*apargradH_1[21]-0.1767766952966368*apargradH_1[20]+0.1767766952966368*apargradH_1[16]-0.1767766952966368*apargradH_1[14]+0.1767766952966368*apargradH_1[13]+0.1767766952966368*apargradH_1[12]-0.1767766952966368*apargradH_1[8]-0.1767766952966368*apargradH_1[7]+0.1767766952966368*apargradH_1[6]-0.1767766952966368*apargradH_1[5]+0.1767766952966368*apargradH_1[3]-0.1767766952966368*apargradH_1[2]-0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(0.1767766952966368*gradHxgradA_1[21]-0.1767766952966368*gradHxgradA_1[14]+0.1767766952966368*gradHxgradA_1[12]-0.1767766952966368*gradHxgradA_1[7]+0.1767766952966368*gradHxgradA_1[6]-0.1767766952966368*gradHxgradA_1[5]+0.1767766952966368*gradHxgradA_1[3]-0.1767766952966368*gradHxgradA_1[2]-0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_2[16]-0.1767766952966368*apargradH_2[8]-0.1767766952966368*apargradH_2[7]+0.1767766952966368*apargradH_2[6]+0.1767766952966368*apargradH_2[3]-0.1767766952966368*apargradH_2[2]-0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(0.1767766952966368*gradHxgradA_2[22]-0.1767766952966368*gradHxgradA_2[20]-0.1767766952966368*gradHxgradA_2[14]+0.1767766952966368*gradHxgradA_2[13]+0.1767766952966368*gradHxgradA_2[12]-0.1767766952966368*gradHxgradA_2[8]+0.1767766952966368*gradHxgradA_2[6]-0.1767766952966368*gradHxgradA_2[5]+0.1767766952966368*gradHxgradA_2[3]-0.1767766952966368*gradHxgradA_2[2]-0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_3[27])+0.1767766952966368*apargradH_3[22]+0.1767766952966368*apargradH_3[21]-0.1767766952966368*apargradH_3[20]+0.1767766952966368*apargradH_3[16]-0.1767766952966368*apargradH_3[14]+0.1767766952966368*apargradH_3[13]+0.1767766952966368*apargradH_3[12]-0.1767766952966368*apargradH_3[8]-0.1767766952966368*apargradH_3[7]+0.1767766952966368*apargradH_3[6]-0.1767766952966368*apargradH_3[5]+0.1767766952966368*apargradH_3[3]-0.1767766952966368*apargradH_3[2]-0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(0.1767766952966368*gradHxgradA_3[21]-0.1767766952966368*gradHxgradA_3[14]+0.1767766952966368*gradHxgradA_3[12]-0.1767766952966368*gradHxgradA_3[8]-0.1767766952966368*gradHxgradA_3[7]-0.1767766952966368*gradHxgradA_3[5]+0.1767766952966368*gradHxgradA_3[3]-0.1767766952966368*gradHxgradA_3[2]-0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]-0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])+0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -98,7 +216,17 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_1[27]-0.1767766952966368*apargradH_1[22]-0.1767766952966368*apargradH_1[21]+0.1767766952966368*apargradH_1[20]+0.1767766952966368*apargradH_1[16]+0.1767766952966368*apargradH_1[14]-0.1767766952966368*apargradH_1[13]-0.1767766952966368*apargradH_1[12]-0.1767766952966368*apargradH_1[8]-0.1767766952966368*apargradH_1[7]+0.1767766952966368*apargradH_1[6]+0.1767766952966368*apargradH_1[5]+0.1767766952966368*apargradH_1[3]-0.1767766952966368*apargradH_1[2]-0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(-(0.1767766952966368*gradHxgradA_1[21])+0.1767766952966368*gradHxgradA_1[14]-0.1767766952966368*gradHxgradA_1[12]-0.1767766952966368*gradHxgradA_1[7]+0.1767766952966368*gradHxgradA_1[6]+0.1767766952966368*gradHxgradA_1[5]+0.1767766952966368*gradHxgradA_1[3]-0.1767766952966368*gradHxgradA_1[2]-0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_2[16]-0.1767766952966368*apargradH_2[8]-0.1767766952966368*apargradH_2[7]+0.1767766952966368*apargradH_2[6]+0.1767766952966368*apargradH_2[3]-0.1767766952966368*apargradH_2[2]-0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(-(0.1767766952966368*gradHxgradA_2[22])+0.1767766952966368*gradHxgradA_2[20]+0.1767766952966368*gradHxgradA_2[14]-0.1767766952966368*gradHxgradA_2[13]-0.1767766952966368*gradHxgradA_2[12]-0.1767766952966368*gradHxgradA_2[8]+0.1767766952966368*gradHxgradA_2[6]+0.1767766952966368*gradHxgradA_2[5]+0.1767766952966368*gradHxgradA_2[3]-0.1767766952966368*gradHxgradA_2[2]-0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_3[27]-0.1767766952966368*apargradH_3[22]-0.1767766952966368*apargradH_3[21]+0.1767766952966368*apargradH_3[20]+0.1767766952966368*apargradH_3[16]+0.1767766952966368*apargradH_3[14]-0.1767766952966368*apargradH_3[13]-0.1767766952966368*apargradH_3[12]-0.1767766952966368*apargradH_3[8]-0.1767766952966368*apargradH_3[7]+0.1767766952966368*apargradH_3[6]+0.1767766952966368*apargradH_3[5]+0.1767766952966368*apargradH_3[3]-0.1767766952966368*apargradH_3[2]-0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(-(0.1767766952966368*gradHxgradA_3[21])+0.1767766952966368*gradHxgradA_3[14]-0.1767766952966368*gradHxgradA_3[12]-0.1767766952966368*gradHxgradA_3[8]-0.1767766952966368*gradHxgradA_3[7]+0.1767766952966368*gradHxgradA_3[5]+0.1767766952966368*gradHxgradA_3[3]-0.1767766952966368*gradHxgradA_3[2]-0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]-0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]-0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -109,13 +237,24 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[2].bmag; B3_quad = gkdgv[2].B3; - Jc_quad = dgv[2].Jc; dualcurlbhat_quad[0] = gkdgv[2].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[2].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[2].dualcurlbhat.x[2]; - - - alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + bioverJB_quad[0] = gkdgv[2].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[2].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[2].bioverJB.x[2]; + + alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_1[27])+0.1767766952966368*apargradH_1[22]-0.1767766952966368*apargradH_1[21]+0.1767766952966368*apargradH_1[20]+0.1767766952966368*apargradH_1[16]+0.1767766952966368*apargradH_1[14]-0.1767766952966368*apargradH_1[13]+0.1767766952966368*apargradH_1[12]-0.1767766952966368*apargradH_1[8]+0.1767766952966368*apargradH_1[7]-0.1767766952966368*apargradH_1[6]-0.1767766952966368*apargradH_1[5]-0.1767766952966368*apargradH_1[3]+0.1767766952966368*apargradH_1[2]-0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(-(0.1767766952966368*gradHxgradA_1[21])+0.1767766952966368*gradHxgradA_1[14]+0.1767766952966368*gradHxgradA_1[12]+0.1767766952966368*gradHxgradA_1[7]-0.1767766952966368*gradHxgradA_1[6]-0.1767766952966368*gradHxgradA_1[5]-0.1767766952966368*gradHxgradA_1[3]+0.1767766952966368*gradHxgradA_1[2]-0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_2[16]-0.1767766952966368*apargradH_2[8]+0.1767766952966368*apargradH_2[7]-0.1767766952966368*apargradH_2[6]-0.1767766952966368*apargradH_2[3]+0.1767766952966368*apargradH_2[2]-0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(0.1767766952966368*gradHxgradA_2[22]+0.1767766952966368*gradHxgradA_2[20]+0.1767766952966368*gradHxgradA_2[14]-0.1767766952966368*gradHxgradA_2[13]+0.1767766952966368*gradHxgradA_2[12]-0.1767766952966368*gradHxgradA_2[8]-0.1767766952966368*gradHxgradA_2[6]-0.1767766952966368*gradHxgradA_2[5]-0.1767766952966368*gradHxgradA_2[3]+0.1767766952966368*gradHxgradA_2[2]-0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_3[27])+0.1767766952966368*apargradH_3[22]-0.1767766952966368*apargradH_3[21]+0.1767766952966368*apargradH_3[20]+0.1767766952966368*apargradH_3[16]+0.1767766952966368*apargradH_3[14]-0.1767766952966368*apargradH_3[13]+0.1767766952966368*apargradH_3[12]-0.1767766952966368*apargradH_3[8]+0.1767766952966368*apargradH_3[7]-0.1767766952966368*apargradH_3[6]-0.1767766952966368*apargradH_3[5]-0.1767766952966368*apargradH_3[3]+0.1767766952966368*apargradH_3[2]-0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(-(0.1767766952966368*gradHxgradA_3[21])+0.1767766952966368*gradHxgradA_3[14]+0.1767766952966368*gradHxgradA_3[12]-0.1767766952966368*gradHxgradA_3[8]+0.1767766952966368*gradHxgradA_3[7]-0.1767766952966368*gradHxgradA_3[5]-0.1767766952966368*gradHxgradA_3[3]+0.1767766952966368*gradHxgradA_3[2]-0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]-0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])+0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -124,7 +263,17 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[16]-0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_1[27]-0.1767766952966368*apargradH_1[22]+0.1767766952966368*apargradH_1[21]-0.1767766952966368*apargradH_1[20]+0.1767766952966368*apargradH_1[16]-0.1767766952966368*apargradH_1[14]+0.1767766952966368*apargradH_1[13]-0.1767766952966368*apargradH_1[12]-0.1767766952966368*apargradH_1[8]+0.1767766952966368*apargradH_1[7]-0.1767766952966368*apargradH_1[6]+0.1767766952966368*apargradH_1[5]-0.1767766952966368*apargradH_1[3]+0.1767766952966368*apargradH_1[2]-0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(0.1767766952966368*gradHxgradA_1[21]-0.1767766952966368*gradHxgradA_1[14]-0.1767766952966368*gradHxgradA_1[12]+0.1767766952966368*gradHxgradA_1[7]-0.1767766952966368*gradHxgradA_1[6]+0.1767766952966368*gradHxgradA_1[5]-0.1767766952966368*gradHxgradA_1[3]+0.1767766952966368*gradHxgradA_1[2]-0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_2[16]-0.1767766952966368*apargradH_2[8]+0.1767766952966368*apargradH_2[7]-0.1767766952966368*apargradH_2[6]-0.1767766952966368*apargradH_2[3]+0.1767766952966368*apargradH_2[2]-0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(-(0.1767766952966368*gradHxgradA_2[22])-0.1767766952966368*gradHxgradA_2[20]-0.1767766952966368*gradHxgradA_2[14]+0.1767766952966368*gradHxgradA_2[13]-0.1767766952966368*gradHxgradA_2[12]-0.1767766952966368*gradHxgradA_2[8]-0.1767766952966368*gradHxgradA_2[6]+0.1767766952966368*gradHxgradA_2[5]-0.1767766952966368*gradHxgradA_2[3]+0.1767766952966368*gradHxgradA_2[2]-0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_3[27]-0.1767766952966368*apargradH_3[22]+0.1767766952966368*apargradH_3[21]-0.1767766952966368*apargradH_3[20]+0.1767766952966368*apargradH_3[16]-0.1767766952966368*apargradH_3[14]+0.1767766952966368*apargradH_3[13]-0.1767766952966368*apargradH_3[12]-0.1767766952966368*apargradH_3[8]+0.1767766952966368*apargradH_3[7]-0.1767766952966368*apargradH_3[6]+0.1767766952966368*apargradH_3[5]-0.1767766952966368*apargradH_3[3]+0.1767766952966368*apargradH_3[2]-0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(0.1767766952966368*gradHxgradA_3[21]-0.1767766952966368*gradHxgradA_3[14]-0.1767766952966368*gradHxgradA_3[12]-0.1767766952966368*gradHxgradA_3[8]+0.1767766952966368*gradHxgradA_3[7]+0.1767766952966368*gradHxgradA_3[5]-0.1767766952966368*gradHxgradA_3[3]+0.1767766952966368*gradHxgradA_3[2]-0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]-0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]-0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -135,13 +284,24 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[3].bmag; B3_quad = gkdgv[3].B3; - Jc_quad = dgv[3].Jc; dualcurlbhat_quad[0] = gkdgv[3].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[3].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[3].dualcurlbhat.x[2]; - - - alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + bioverJB_quad[0] = gkdgv[3].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[3].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[3].bioverJB.x[2]; + + alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_1[27]-0.1767766952966368*apargradH_1[22]+0.1767766952966368*apargradH_1[21]+0.1767766952966368*apargradH_1[20]-0.1767766952966368*apargradH_1[16]-0.1767766952966368*apargradH_1[14]-0.1767766952966368*apargradH_1[13]+0.1767766952966368*apargradH_1[12]+0.1767766952966368*apargradH_1[8]-0.1767766952966368*apargradH_1[7]-0.1767766952966368*apargradH_1[6]-0.1767766952966368*apargradH_1[5]+0.1767766952966368*apargradH_1[3]+0.1767766952966368*apargradH_1[2]-0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(0.1767766952966368*gradHxgradA_1[21]-0.1767766952966368*gradHxgradA_1[14]+0.1767766952966368*gradHxgradA_1[12]-0.1767766952966368*gradHxgradA_1[7]-0.1767766952966368*gradHxgradA_1[6]-0.1767766952966368*gradHxgradA_1[5]+0.1767766952966368*gradHxgradA_1[3]+0.1767766952966368*gradHxgradA_1[2]-0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_2[16])+0.1767766952966368*apargradH_2[8]-0.1767766952966368*apargradH_2[7]-0.1767766952966368*apargradH_2[6]+0.1767766952966368*apargradH_2[3]+0.1767766952966368*apargradH_2[2]-0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(-(0.1767766952966368*gradHxgradA_2[22])+0.1767766952966368*gradHxgradA_2[20]-0.1767766952966368*gradHxgradA_2[14]-0.1767766952966368*gradHxgradA_2[13]+0.1767766952966368*gradHxgradA_2[12]+0.1767766952966368*gradHxgradA_2[8]-0.1767766952966368*gradHxgradA_2[6]-0.1767766952966368*gradHxgradA_2[5]+0.1767766952966368*gradHxgradA_2[3]+0.1767766952966368*gradHxgradA_2[2]-0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_3[27]-0.1767766952966368*apargradH_3[22]+0.1767766952966368*apargradH_3[21]+0.1767766952966368*apargradH_3[20]-0.1767766952966368*apargradH_3[16]-0.1767766952966368*apargradH_3[14]-0.1767766952966368*apargradH_3[13]+0.1767766952966368*apargradH_3[12]+0.1767766952966368*apargradH_3[8]-0.1767766952966368*apargradH_3[7]-0.1767766952966368*apargradH_3[6]-0.1767766952966368*apargradH_3[5]+0.1767766952966368*apargradH_3[3]+0.1767766952966368*apargradH_3[2]-0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(0.1767766952966368*gradHxgradA_3[21]-0.1767766952966368*gradHxgradA_3[14]+0.1767766952966368*gradHxgradA_3[12]+0.1767766952966368*gradHxgradA_3[8]-0.1767766952966368*gradHxgradA_3[7]-0.1767766952966368*gradHxgradA_3[5]+0.1767766952966368*gradHxgradA_3[3]+0.1767766952966368*gradHxgradA_3[2]-0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])+0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]-0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -150,7 +310,17 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[16])+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_1[27])+0.1767766952966368*apargradH_1[22]-0.1767766952966368*apargradH_1[21]-0.1767766952966368*apargradH_1[20]-0.1767766952966368*apargradH_1[16]+0.1767766952966368*apargradH_1[14]+0.1767766952966368*apargradH_1[13]-0.1767766952966368*apargradH_1[12]+0.1767766952966368*apargradH_1[8]-0.1767766952966368*apargradH_1[7]-0.1767766952966368*apargradH_1[6]+0.1767766952966368*apargradH_1[5]+0.1767766952966368*apargradH_1[3]+0.1767766952966368*apargradH_1[2]-0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(-(0.1767766952966368*gradHxgradA_1[21])+0.1767766952966368*gradHxgradA_1[14]-0.1767766952966368*gradHxgradA_1[12]-0.1767766952966368*gradHxgradA_1[7]-0.1767766952966368*gradHxgradA_1[6]+0.1767766952966368*gradHxgradA_1[5]+0.1767766952966368*gradHxgradA_1[3]+0.1767766952966368*gradHxgradA_1[2]-0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_2[16])+0.1767766952966368*apargradH_2[8]-0.1767766952966368*apargradH_2[7]-0.1767766952966368*apargradH_2[6]+0.1767766952966368*apargradH_2[3]+0.1767766952966368*apargradH_2[2]-0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(0.1767766952966368*gradHxgradA_2[22]-0.1767766952966368*gradHxgradA_2[20]+0.1767766952966368*gradHxgradA_2[14]+0.1767766952966368*gradHxgradA_2[13]-0.1767766952966368*gradHxgradA_2[12]+0.1767766952966368*gradHxgradA_2[8]-0.1767766952966368*gradHxgradA_2[6]+0.1767766952966368*gradHxgradA_2[5]+0.1767766952966368*gradHxgradA_2[3]+0.1767766952966368*gradHxgradA_2[2]-0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_3[27])+0.1767766952966368*apargradH_3[22]-0.1767766952966368*apargradH_3[21]-0.1767766952966368*apargradH_3[20]-0.1767766952966368*apargradH_3[16]+0.1767766952966368*apargradH_3[14]+0.1767766952966368*apargradH_3[13]-0.1767766952966368*apargradH_3[12]+0.1767766952966368*apargradH_3[8]-0.1767766952966368*apargradH_3[7]-0.1767766952966368*apargradH_3[6]+0.1767766952966368*apargradH_3[5]+0.1767766952966368*apargradH_3[3]+0.1767766952966368*apargradH_3[2]-0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(-(0.1767766952966368*gradHxgradA_3[21])+0.1767766952966368*gradHxgradA_3[14]-0.1767766952966368*gradHxgradA_3[12]+0.1767766952966368*gradHxgradA_3[8]-0.1767766952966368*gradHxgradA_3[7]+0.1767766952966368*gradHxgradA_3[5]+0.1767766952966368*gradHxgradA_3[3]+0.1767766952966368*gradHxgradA_3[2]-0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])+0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]-0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])+0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]-0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]-0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -161,13 +331,24 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[4].bmag; B3_quad = gkdgv[4].B3; - Jc_quad = dgv[4].Jc; dualcurlbhat_quad[0] = gkdgv[4].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[4].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[4].dualcurlbhat.x[2]; - - - alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + bioverJB_quad[0] = gkdgv[4].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[4].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[4].bioverJB.x[2]; + + alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_1[27])-0.1767766952966368*apargradH_1[22]+0.1767766952966368*apargradH_1[21]+0.1767766952966368*apargradH_1[20]+0.1767766952966368*apargradH_1[16]+0.1767766952966368*apargradH_1[14]+0.1767766952966368*apargradH_1[13]-0.1767766952966368*apargradH_1[12]+0.1767766952966368*apargradH_1[8]-0.1767766952966368*apargradH_1[7]-0.1767766952966368*apargradH_1[6]-0.1767766952966368*apargradH_1[5]-0.1767766952966368*apargradH_1[3]-0.1767766952966368*apargradH_1[2]+0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(0.1767766952966368*gradHxgradA_1[21]+0.1767766952966368*gradHxgradA_1[14]-0.1767766952966368*gradHxgradA_1[12]-0.1767766952966368*gradHxgradA_1[7]-0.1767766952966368*gradHxgradA_1[6]-0.1767766952966368*gradHxgradA_1[5]-0.1767766952966368*gradHxgradA_1[3]-0.1767766952966368*gradHxgradA_1[2]+0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_2[16]+0.1767766952966368*apargradH_2[8]-0.1767766952966368*apargradH_2[7]-0.1767766952966368*apargradH_2[6]-0.1767766952966368*apargradH_2[3]-0.1767766952966368*apargradH_2[2]+0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(-(0.1767766952966368*gradHxgradA_2[22])+0.1767766952966368*gradHxgradA_2[20]+0.1767766952966368*gradHxgradA_2[14]+0.1767766952966368*gradHxgradA_2[13]-0.1767766952966368*gradHxgradA_2[12]+0.1767766952966368*gradHxgradA_2[8]-0.1767766952966368*gradHxgradA_2[6]-0.1767766952966368*gradHxgradA_2[5]-0.1767766952966368*gradHxgradA_2[3]-0.1767766952966368*gradHxgradA_2[2]+0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_3[27])-0.1767766952966368*apargradH_3[22]+0.1767766952966368*apargradH_3[21]+0.1767766952966368*apargradH_3[20]+0.1767766952966368*apargradH_3[16]+0.1767766952966368*apargradH_3[14]+0.1767766952966368*apargradH_3[13]-0.1767766952966368*apargradH_3[12]+0.1767766952966368*apargradH_3[8]-0.1767766952966368*apargradH_3[7]-0.1767766952966368*apargradH_3[6]-0.1767766952966368*apargradH_3[5]-0.1767766952966368*apargradH_3[3]-0.1767766952966368*apargradH_3[2]+0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(0.1767766952966368*gradHxgradA_3[21]+0.1767766952966368*gradHxgradA_3[14]-0.1767766952966368*gradHxgradA_3[12]+0.1767766952966368*gradHxgradA_3[8]-0.1767766952966368*gradHxgradA_3[7]-0.1767766952966368*gradHxgradA_3[5]-0.1767766952966368*gradHxgradA_3[3]-0.1767766952966368*gradHxgradA_3[2]+0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]+0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])-0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -176,7 +357,17 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_1[27]+0.1767766952966368*apargradH_1[22]-0.1767766952966368*apargradH_1[21]-0.1767766952966368*apargradH_1[20]+0.1767766952966368*apargradH_1[16]-0.1767766952966368*apargradH_1[14]-0.1767766952966368*apargradH_1[13]+0.1767766952966368*apargradH_1[12]+0.1767766952966368*apargradH_1[8]-0.1767766952966368*apargradH_1[7]-0.1767766952966368*apargradH_1[6]+0.1767766952966368*apargradH_1[5]-0.1767766952966368*apargradH_1[3]-0.1767766952966368*apargradH_1[2]+0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(-(0.1767766952966368*gradHxgradA_1[21])-0.1767766952966368*gradHxgradA_1[14]+0.1767766952966368*gradHxgradA_1[12]-0.1767766952966368*gradHxgradA_1[7]-0.1767766952966368*gradHxgradA_1[6]+0.1767766952966368*gradHxgradA_1[5]-0.1767766952966368*gradHxgradA_1[3]-0.1767766952966368*gradHxgradA_1[2]+0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_2[16]+0.1767766952966368*apargradH_2[8]-0.1767766952966368*apargradH_2[7]-0.1767766952966368*apargradH_2[6]-0.1767766952966368*apargradH_2[3]-0.1767766952966368*apargradH_2[2]+0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(0.1767766952966368*gradHxgradA_2[22]-0.1767766952966368*gradHxgradA_2[20]-0.1767766952966368*gradHxgradA_2[14]-0.1767766952966368*gradHxgradA_2[13]+0.1767766952966368*gradHxgradA_2[12]+0.1767766952966368*gradHxgradA_2[8]-0.1767766952966368*gradHxgradA_2[6]+0.1767766952966368*gradHxgradA_2[5]-0.1767766952966368*gradHxgradA_2[3]-0.1767766952966368*gradHxgradA_2[2]+0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_3[27]+0.1767766952966368*apargradH_3[22]-0.1767766952966368*apargradH_3[21]-0.1767766952966368*apargradH_3[20]+0.1767766952966368*apargradH_3[16]-0.1767766952966368*apargradH_3[14]-0.1767766952966368*apargradH_3[13]+0.1767766952966368*apargradH_3[12]+0.1767766952966368*apargradH_3[8]-0.1767766952966368*apargradH_3[7]-0.1767766952966368*apargradH_3[6]+0.1767766952966368*apargradH_3[5]-0.1767766952966368*apargradH_3[3]-0.1767766952966368*apargradH_3[2]+0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(-(0.1767766952966368*gradHxgradA_3[21])-0.1767766952966368*gradHxgradA_3[14]+0.1767766952966368*gradHxgradA_3[12]+0.1767766952966368*gradHxgradA_3[8]-0.1767766952966368*gradHxgradA_3[7]+0.1767766952966368*gradHxgradA_3[5]-0.1767766952966368*gradHxgradA_3[3]-0.1767766952966368*gradHxgradA_3[2]+0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]+0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]+0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -187,13 +378,24 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[5].bmag; B3_quad = gkdgv[5].B3; - Jc_quad = dgv[5].Jc; dualcurlbhat_quad[0] = gkdgv[5].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[5].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[5].dualcurlbhat.x[2]; - - - alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + bioverJB_quad[0] = gkdgv[5].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[5].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[5].bioverJB.x[2]; + + alpha_quad = -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_1[27]+0.1767766952966368*apargradH_1[22]-0.1767766952966368*apargradH_1[21]+0.1767766952966368*apargradH_1[20]-0.1767766952966368*apargradH_1[16]-0.1767766952966368*apargradH_1[14]+0.1767766952966368*apargradH_1[13]-0.1767766952966368*apargradH_1[12]-0.1767766952966368*apargradH_1[8]+0.1767766952966368*apargradH_1[7]-0.1767766952966368*apargradH_1[6]-0.1767766952966368*apargradH_1[5]+0.1767766952966368*apargradH_1[3]-0.1767766952966368*apargradH_1[2]+0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(-(0.1767766952966368*gradHxgradA_1[21])-0.1767766952966368*gradHxgradA_1[14]-0.1767766952966368*gradHxgradA_1[12]+0.1767766952966368*gradHxgradA_1[7]-0.1767766952966368*gradHxgradA_1[6]-0.1767766952966368*gradHxgradA_1[5]+0.1767766952966368*gradHxgradA_1[3]-0.1767766952966368*gradHxgradA_1[2]+0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_2[16])-0.1767766952966368*apargradH_2[8]+0.1767766952966368*apargradH_2[7]-0.1767766952966368*apargradH_2[6]+0.1767766952966368*apargradH_2[3]-0.1767766952966368*apargradH_2[2]+0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(0.1767766952966368*gradHxgradA_2[22]+0.1767766952966368*gradHxgradA_2[20]-0.1767766952966368*gradHxgradA_2[14]+0.1767766952966368*gradHxgradA_2[13]-0.1767766952966368*gradHxgradA_2[12]-0.1767766952966368*gradHxgradA_2[8]-0.1767766952966368*gradHxgradA_2[6]-0.1767766952966368*gradHxgradA_2[5]+0.1767766952966368*gradHxgradA_2[3]-0.1767766952966368*gradHxgradA_2[2]+0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_3[27]+0.1767766952966368*apargradH_3[22]-0.1767766952966368*apargradH_3[21]+0.1767766952966368*apargradH_3[20]-0.1767766952966368*apargradH_3[16]-0.1767766952966368*apargradH_3[14]+0.1767766952966368*apargradH_3[13]-0.1767766952966368*apargradH_3[12]-0.1767766952966368*apargradH_3[8]+0.1767766952966368*apargradH_3[7]-0.1767766952966368*apargradH_3[6]-0.1767766952966368*apargradH_3[5]+0.1767766952966368*apargradH_3[3]-0.1767766952966368*apargradH_3[2]+0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(-(0.1767766952966368*gradHxgradA_3[21])-0.1767766952966368*gradHxgradA_3[14]-0.1767766952966368*gradHxgradA_3[12]-0.1767766952966368*gradHxgradA_3[8]+0.1767766952966368*gradHxgradA_3[7]-0.1767766952966368*gradHxgradA_3[5]+0.1767766952966368*gradHxgradA_3[3]-0.1767766952966368*gradHxgradA_3[2]+0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])-0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]+0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -202,7 +404,17 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad = -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]-0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_1[27])-0.1767766952966368*apargradH_1[22]+0.1767766952966368*apargradH_1[21]-0.1767766952966368*apargradH_1[20]-0.1767766952966368*apargradH_1[16]+0.1767766952966368*apargradH_1[14]-0.1767766952966368*apargradH_1[13]+0.1767766952966368*apargradH_1[12]-0.1767766952966368*apargradH_1[8]+0.1767766952966368*apargradH_1[7]-0.1767766952966368*apargradH_1[6]+0.1767766952966368*apargradH_1[5]+0.1767766952966368*apargradH_1[3]-0.1767766952966368*apargradH_1[2]+0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(0.1767766952966368*gradHxgradA_1[21]+0.1767766952966368*gradHxgradA_1[14]+0.1767766952966368*gradHxgradA_1[12]+0.1767766952966368*gradHxgradA_1[7]-0.1767766952966368*gradHxgradA_1[6]+0.1767766952966368*gradHxgradA_1[5]+0.1767766952966368*gradHxgradA_1[3]-0.1767766952966368*gradHxgradA_1[2]+0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_2[16])-0.1767766952966368*apargradH_2[8]+0.1767766952966368*apargradH_2[7]-0.1767766952966368*apargradH_2[6]+0.1767766952966368*apargradH_2[3]-0.1767766952966368*apargradH_2[2]+0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(-(0.1767766952966368*gradHxgradA_2[22])-0.1767766952966368*gradHxgradA_2[20]+0.1767766952966368*gradHxgradA_2[14]-0.1767766952966368*gradHxgradA_2[13]+0.1767766952966368*gradHxgradA_2[12]-0.1767766952966368*gradHxgradA_2[8]-0.1767766952966368*gradHxgradA_2[6]+0.1767766952966368*gradHxgradA_2[5]+0.1767766952966368*gradHxgradA_2[3]-0.1767766952966368*gradHxgradA_2[2]+0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_3[27])-0.1767766952966368*apargradH_3[22]+0.1767766952966368*apargradH_3[21]-0.1767766952966368*apargradH_3[20]-0.1767766952966368*apargradH_3[16]+0.1767766952966368*apargradH_3[14]-0.1767766952966368*apargradH_3[13]+0.1767766952966368*apargradH_3[12]-0.1767766952966368*apargradH_3[8]+0.1767766952966368*apargradH_3[7]-0.1767766952966368*apargradH_3[6]+0.1767766952966368*apargradH_3[5]+0.1767766952966368*apargradH_3[3]-0.1767766952966368*apargradH_3[2]+0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(0.1767766952966368*gradHxgradA_3[21]+0.1767766952966368*gradHxgradA_3[14]+0.1767766952966368*gradHxgradA_3[12]-0.1767766952966368*gradHxgradA_3[8]+0.1767766952966368*gradHxgradA_3[7]+0.1767766952966368*gradHxgradA_3[5]+0.1767766952966368*gradHxgradA_3[3]-0.1767766952966368*gradHxgradA_3[2]+0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])-0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]-0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]-0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])-0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]-0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]-0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]-0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]-0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -213,13 +425,24 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[6].bmag; B3_quad = gkdgv[6].B3; - Jc_quad = dgv[6].Jc; dualcurlbhat_quad[0] = gkdgv[6].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[6].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[6].dualcurlbhat.x[2]; - - - alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + bioverJB_quad[0] = gkdgv[6].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[6].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[6].bioverJB.x[2]; + + alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.3061862178478971*hamil[21]-0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_1[27]+0.1767766952966368*apargradH_1[22]+0.1767766952966368*apargradH_1[21]-0.1767766952966368*apargradH_1[20]-0.1767766952966368*apargradH_1[16]+0.1767766952966368*apargradH_1[14]-0.1767766952966368*apargradH_1[13]-0.1767766952966368*apargradH_1[12]-0.1767766952966368*apargradH_1[8]-0.1767766952966368*apargradH_1[7]+0.1767766952966368*apargradH_1[6]-0.1767766952966368*apargradH_1[5]-0.1767766952966368*apargradH_1[3]+0.1767766952966368*apargradH_1[2]+0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(0.1767766952966368*gradHxgradA_1[21]+0.1767766952966368*gradHxgradA_1[14]-0.1767766952966368*gradHxgradA_1[12]-0.1767766952966368*gradHxgradA_1[7]+0.1767766952966368*gradHxgradA_1[6]-0.1767766952966368*gradHxgradA_1[5]-0.1767766952966368*gradHxgradA_1[3]+0.1767766952966368*gradHxgradA_1[2]+0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_2[16])-0.1767766952966368*apargradH_2[8]-0.1767766952966368*apargradH_2[7]+0.1767766952966368*apargradH_2[6]-0.1767766952966368*apargradH_2[3]+0.1767766952966368*apargradH_2[2]+0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(0.1767766952966368*gradHxgradA_2[22]-0.1767766952966368*gradHxgradA_2[20]+0.1767766952966368*gradHxgradA_2[14]-0.1767766952966368*gradHxgradA_2[13]-0.1767766952966368*gradHxgradA_2[12]-0.1767766952966368*gradHxgradA_2[8]+0.1767766952966368*gradHxgradA_2[6]-0.1767766952966368*gradHxgradA_2[5]-0.1767766952966368*gradHxgradA_2[3]+0.1767766952966368*gradHxgradA_2[2]+0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_3[27]+0.1767766952966368*apargradH_3[22]+0.1767766952966368*apargradH_3[21]-0.1767766952966368*apargradH_3[20]-0.1767766952966368*apargradH_3[16]+0.1767766952966368*apargradH_3[14]-0.1767766952966368*apargradH_3[13]-0.1767766952966368*apargradH_3[12]-0.1767766952966368*apargradH_3[8]-0.1767766952966368*apargradH_3[7]+0.1767766952966368*apargradH_3[6]-0.1767766952966368*apargradH_3[5]-0.1767766952966368*apargradH_3[3]+0.1767766952966368*apargradH_3[2]+0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(0.1767766952966368*gradHxgradA_3[21]+0.1767766952966368*gradHxgradA_3[14]-0.1767766952966368*gradHxgradA_3[12]-0.1767766952966368*gradHxgradA_3[8]-0.1767766952966368*gradHxgradA_3[7]-0.1767766952966368*gradHxgradA_3[5]-0.1767766952966368*gradHxgradA_3[3]+0.1767766952966368*gradHxgradA_3[2]+0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])-0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]+0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -228,7 +451,17 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((-(0.3061862178478971*hamil[21])-0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]-0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[16])-0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_1[27])-0.1767766952966368*apargradH_1[22]-0.1767766952966368*apargradH_1[21]+0.1767766952966368*apargradH_1[20]-0.1767766952966368*apargradH_1[16]-0.1767766952966368*apargradH_1[14]+0.1767766952966368*apargradH_1[13]+0.1767766952966368*apargradH_1[12]-0.1767766952966368*apargradH_1[8]-0.1767766952966368*apargradH_1[7]+0.1767766952966368*apargradH_1[6]+0.1767766952966368*apargradH_1[5]-0.1767766952966368*apargradH_1[3]+0.1767766952966368*apargradH_1[2]+0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(-(0.1767766952966368*gradHxgradA_1[21])-0.1767766952966368*gradHxgradA_1[14]+0.1767766952966368*gradHxgradA_1[12]-0.1767766952966368*gradHxgradA_1[7]+0.1767766952966368*gradHxgradA_1[6]+0.1767766952966368*gradHxgradA_1[5]-0.1767766952966368*gradHxgradA_1[3]+0.1767766952966368*gradHxgradA_1[2]+0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_2[16])-0.1767766952966368*apargradH_2[8]-0.1767766952966368*apargradH_2[7]+0.1767766952966368*apargradH_2[6]-0.1767766952966368*apargradH_2[3]+0.1767766952966368*apargradH_2[2]+0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(-(0.1767766952966368*gradHxgradA_2[22])+0.1767766952966368*gradHxgradA_2[20]-0.1767766952966368*gradHxgradA_2[14]+0.1767766952966368*gradHxgradA_2[13]+0.1767766952966368*gradHxgradA_2[12]-0.1767766952966368*gradHxgradA_2[8]+0.1767766952966368*gradHxgradA_2[6]+0.1767766952966368*gradHxgradA_2[5]-0.1767766952966368*gradHxgradA_2[3]+0.1767766952966368*gradHxgradA_2[2]+0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_3[27])-0.1767766952966368*apargradH_3[22]-0.1767766952966368*apargradH_3[21]+0.1767766952966368*apargradH_3[20]-0.1767766952966368*apargradH_3[16]-0.1767766952966368*apargradH_3[14]+0.1767766952966368*apargradH_3[13]+0.1767766952966368*apargradH_3[12]-0.1767766952966368*apargradH_3[8]-0.1767766952966368*apargradH_3[7]+0.1767766952966368*apargradH_3[6]+0.1767766952966368*apargradH_3[5]-0.1767766952966368*apargradH_3[3]+0.1767766952966368*apargradH_3[2]+0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(-(0.1767766952966368*gradHxgradA_3[21])-0.1767766952966368*gradHxgradA_3[14]+0.1767766952966368*gradHxgradA_3[12]-0.1767766952966368*gradHxgradA_3[8]-0.1767766952966368*gradHxgradA_3[7]+0.1767766952966368*gradHxgradA_3[5]-0.1767766952966368*gradHxgradA_3[3]+0.1767766952966368*gradHxgradA_3[2]+0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(-(0.3535533905932737*apardot[7])-0.3535533905932737*apardot[6]-0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]-0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])-0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]-0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]-0.3952847075210473*JfL[39]-0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]-0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]-0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*JfL[19]-0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]-0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]-0.1767766952966368*JfL[8]-0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -239,13 +472,24 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( bmag_quad = gkdgv[7].bmag; B3_quad = gkdgv[7].B3; - Jc_quad = dgv[7].Jc; dualcurlbhat_quad[0] = gkdgv[7].dualcurlbhat.x[0]; dualcurlbhat_quad[1] = gkdgv[7].dualcurlbhat.x[1]; dualcurlbhat_quad[2] = gkdgv[7].dualcurlbhat.x[2]; - - - alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + bioverJB_quad[0] = gkdgv[7].bioverJB.x[0]; + bioverJB_quad[1] = gkdgv[7].bioverJB.x[1]; + bioverJB_quad[2] = gkdgv[7].bioverJB.x[2]; + + alpha_quad = -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((-(0.3061862178478971*hamil[21])+0.3061862178478971*hamil[16]-0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_1[27])-0.1767766952966368*apargradH_1[22]-0.1767766952966368*apargradH_1[21]-0.1767766952966368*apargradH_1[20]+0.1767766952966368*apargradH_1[16]-0.1767766952966368*apargradH_1[14]-0.1767766952966368*apargradH_1[13]-0.1767766952966368*apargradH_1[12]+0.1767766952966368*apargradH_1[8]+0.1767766952966368*apargradH_1[7]+0.1767766952966368*apargradH_1[6]-0.1767766952966368*apargradH_1[5]+0.1767766952966368*apargradH_1[3]+0.1767766952966368*apargradH_1[2]+0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(-(0.1767766952966368*gradHxgradA_1[21])-0.1767766952966368*gradHxgradA_1[14]-0.1767766952966368*gradHxgradA_1[12]+0.1767766952966368*gradHxgradA_1[7]+0.1767766952966368*gradHxgradA_1[6]-0.1767766952966368*gradHxgradA_1[5]+0.1767766952966368*gradHxgradA_1[3]+0.1767766952966368*gradHxgradA_1[2]+0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_2[16]+0.1767766952966368*apargradH_2[8]+0.1767766952966368*apargradH_2[7]+0.1767766952966368*apargradH_2[6]+0.1767766952966368*apargradH_2[3]+0.1767766952966368*apargradH_2[2]+0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(-(0.1767766952966368*gradHxgradA_2[22])-0.1767766952966368*gradHxgradA_2[20]-0.1767766952966368*gradHxgradA_2[14]-0.1767766952966368*gradHxgradA_2[13]-0.1767766952966368*gradHxgradA_2[12]+0.1767766952966368*gradHxgradA_2[8]+0.1767766952966368*gradHxgradA_2[6]-0.1767766952966368*gradHxgradA_2[5]+0.1767766952966368*gradHxgradA_2[3]+0.1767766952966368*gradHxgradA_2[2]+0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (-(0.1767766952966368*apargradH_3[27])-0.1767766952966368*apargradH_3[22]-0.1767766952966368*apargradH_3[21]-0.1767766952966368*apargradH_3[20]+0.1767766952966368*apargradH_3[16]-0.1767766952966368*apargradH_3[14]-0.1767766952966368*apargradH_3[13]-0.1767766952966368*apargradH_3[12]+0.1767766952966368*apargradH_3[8]+0.1767766952966368*apargradH_3[7]+0.1767766952966368*apargradH_3[6]-0.1767766952966368*apargradH_3[5]+0.1767766952966368*apargradH_3[3]+0.1767766952966368*apargradH_3[2]+0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(-(0.1767766952966368*gradHxgradA_3[21])-0.1767766952966368*gradHxgradA_3[14]-0.1767766952966368*gradHxgradA_3[12]+0.1767766952966368*gradHxgradA_3[8]+0.1767766952966368*gradHxgradA_3[7]-0.1767766952966368*gradHxgradA_3[5]+0.1767766952966368*gradHxgradA_3[3]+0.1767766952966368*gradHxgradA_3[2]+0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]+0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (-(0.3952847075210473*JfL[47])-0.39528470752104733*JfL[46]-0.39528470752104733*JfL[45]-0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]-0.3952847075210473*JfL[42]-0.3952847075210473*JfL[41]-0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]-0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]-0.3061862178478971*JfL[31]-0.3061862178478971*JfL[30]-0.3061862178478971*JfL[29]-0.3061862178478971*JfL[28]-0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]-0.3061862178478971*JfL[25]-0.3061862178478971*JfL[24]-0.3061862178478971*JfL[23]-0.1767766952966368*JfL[22]-0.1767766952966368*JfL[21]-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]-0.3061862178478971*JfL[15]-0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -254,7 +498,17 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; - alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1])-((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad = -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * B3_quad; + alpha_quad += -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[12]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[1])*rdx2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[0]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[16]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[6]+0.3061862178478971*hamil[2])*rdy2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[1]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -((0.3061862178478971*hamil[21]+0.3061862178478971*hamil[16]+0.3061862178478971*hamil[14]+0.3061862178478971*hamil[8]+0.3061862178478971*hamil[7]+0.3061862178478971*hamil[3])*rdz2)/m_/bmag_quad * 1/q_*dualcurlbhat_quad[2]*((0.8164965809277261*(0.3061862178478971*hamil[4]-1.185854122563142*hamil[32]))/vmap[1]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_1[27]+0.1767766952966368*apargradH_1[22]+0.1767766952966368*apargradH_1[21]+0.1767766952966368*apargradH_1[20]+0.1767766952966368*apargradH_1[16]+0.1767766952966368*apargradH_1[14]+0.1767766952966368*apargradH_1[13]+0.1767766952966368*apargradH_1[12]+0.1767766952966368*apargradH_1[8]+0.1767766952966368*apargradH_1[7]+0.1767766952966368*apargradH_1[6]+0.1767766952966368*apargradH_1[5]+0.1767766952966368*apargradH_1[3]+0.1767766952966368*apargradH_1[2]+0.1767766952966368*apargradH_1[1]+0.1767766952966368*apargradH_1[0])*dualcurlbhat_quad[0]; + alpha_quad += -bioverJB_quad[0]/m_ *(0.1767766952966368*gradHxgradA_1[21]+0.1767766952966368*gradHxgradA_1[14]+0.1767766952966368*gradHxgradA_1[12]+0.1767766952966368*gradHxgradA_1[7]+0.1767766952966368*gradHxgradA_1[6]+0.1767766952966368*gradHxgradA_1[5]+0.1767766952966368*gradHxgradA_1[3]+0.1767766952966368*gradHxgradA_1[2]+0.1767766952966368*gradHxgradA_1[1]+0.1767766952966368*gradHxgradA_1[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_2[16]+0.1767766952966368*apargradH_2[8]+0.1767766952966368*apargradH_2[7]+0.1767766952966368*apargradH_2[6]+0.1767766952966368*apargradH_2[3]+0.1767766952966368*apargradH_2[2]+0.1767766952966368*apargradH_2[1]+0.1767766952966368*apargradH_2[0])*dualcurlbhat_quad[1]; + alpha_quad += -bioverJB_quad[1]/m_ *(0.1767766952966368*gradHxgradA_2[22]+0.1767766952966368*gradHxgradA_2[20]+0.1767766952966368*gradHxgradA_2[14]+0.1767766952966368*gradHxgradA_2[13]+0.1767766952966368*gradHxgradA_2[12]+0.1767766952966368*gradHxgradA_2[8]+0.1767766952966368*gradHxgradA_2[6]+0.1767766952966368*gradHxgradA_2[5]+0.1767766952966368*gradHxgradA_2[3]+0.1767766952966368*gradHxgradA_2[2]+0.1767766952966368*gradHxgradA_2[1]+0.1767766952966368*gradHxgradA_2[0]); + alpha_quad += -1.0/m_/bmag_quad * (0.1767766952966368*apargradH_3[27]+0.1767766952966368*apargradH_3[22]+0.1767766952966368*apargradH_3[21]+0.1767766952966368*apargradH_3[20]+0.1767766952966368*apargradH_3[16]+0.1767766952966368*apargradH_3[14]+0.1767766952966368*apargradH_3[13]+0.1767766952966368*apargradH_3[12]+0.1767766952966368*apargradH_3[8]+0.1767766952966368*apargradH_3[7]+0.1767766952966368*apargradH_3[6]+0.1767766952966368*apargradH_3[5]+0.1767766952966368*apargradH_3[3]+0.1767766952966368*apargradH_3[2]+0.1767766952966368*apargradH_3[1]+0.1767766952966368*apargradH_3[0])*dualcurlbhat_quad[2]; + alpha_quad += -bioverJB_quad[2]/m_ *(0.1767766952966368*gradHxgradA_3[21]+0.1767766952966368*gradHxgradA_3[14]+0.1767766952966368*gradHxgradA_3[12]+0.1767766952966368*gradHxgradA_3[8]+0.1767766952966368*gradHxgradA_3[7]+0.1767766952966368*gradHxgradA_3[5]+0.1767766952966368*gradHxgradA_3[3]+0.1767766952966368*gradHxgradA_3[2]+0.1767766952966368*gradHxgradA_3[1]+0.1767766952966368*gradHxgradA_3[0]); + alpha_quad += -q_/m_*(0.3535533905932737*apardot[7]+0.3535533905932737*apardot[6]+0.3535533905932737*apardot[5]+0.3535533905932737*apardot[4]+0.3535533905932737*apardot[3]+0.3535533905932737*apardot[2]+0.3535533905932737*apardot[1]+0.3535533905932737*apardot[0]); cfl = fmax(fabs(alpha_quad), fabs(cfl)) ; JfL_quad = (0.3952847075210473*JfL[47]+0.39528470752104733*JfL[46]+0.39528470752104733*JfL[45]+0.39528470752104733*JfL[44]+0.39528470752104733*JfL[43]+0.3952847075210473*JfL[42]+0.3952847075210473*JfL[41]+0.3952847075210473*JfL[40]+0.3952847075210473*JfL[39]+0.3952847075210473*JfL[38]+0.3952847075210473*JfL[37]+0.39528470752104733*JfL[36]+0.39528470752104733*JfL[35]+0.39528470752104733*JfL[34]+0.39528470752104733*JfL[33]+0.3952847075210473*JfL[32]+0.3061862178478971*JfL[31]+0.3061862178478971*JfL[30]+0.3061862178478971*JfL[29]+0.3061862178478971*JfL[28]+0.1767766952966368*JfL[27]+0.3061862178478971*JfL[26]+0.3061862178478971*JfL[25]+0.3061862178478971*JfL[24]+0.3061862178478971*JfL[23]+0.1767766952966368*JfL[22]+0.1767766952966368*JfL[21]+0.1767766952966368*JfL[20]+0.3061862178478971*JfL[19]+0.3061862178478971*JfL[18]+0.3061862178478971*JfL[17]+0.1767766952966368*JfL[16]+0.3061862178478971*JfL[15]+0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[11]+0.3061862178478971*JfL[10]+0.3061862178478971*JfL[9]+0.1767766952966368*JfL[8]+0.1767766952966368*JfL[7]+0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[4]+0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0])/vmap_prime_l[0]; @@ -263,6 +517,7 @@ GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0 ; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad ; + double vmap_prime_min = fmin(fabs(vmap_prime_l[0]),fabs(vmap_prime_r[0])); return cfl/vmap_prime_min*2.5*rdvpar2; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_none.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_none.c new file mode 100644 index 0000000000..8be40ca284 --- /dev/null +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfvpar_none.c @@ -0,0 +1,11 @@ +#include +GKYL_CU_DH double gk_collisionless_flux_surfvpar_none( + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) +{ + return 0.0; +} diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_1x1v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_1x1v_ser_p1.c index 0ef83c4598..3b6d30ba92 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_1x1v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_1x1v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x1v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x1v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -30,6 +33,9 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x1v_ser_p1( hamil[1] = 0.5*vmapSq[1]*m_; hamil[2] = 0.5*vmapSq[2]*m_; + double apar_surf[3] = {0.}; + apar_surf[0] = apar[0]-1.7320508075688772*apar[1]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -43,14 +49,14 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x1v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(1.224744871391589*hamil[1]-3.6742346141747664*hamil[2]))/vmap[1]; - mvpar_quad[1] = (1.0*hamil[1])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(3.6742346141747664*hamil[2]+1.224744871391589*hamil[1]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(1.224744871391589*hamil[1]-3.6742346141747664*hamil[2]))/vmap[1]; + dHdvpar_quad[1] = (1.0*hamil[1])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(3.6742346141747664*hamil[2]+1.224744871391589*hamil[1]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -62,7 +68,9 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x1v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.7745966692414834*JfL[5]+0.4472135954999579*JfL[4]-1.1618950038622249*JfL[3]-0.6708203932499369*JfL[2]+0.8660254037844386*JfL[1]+0.5*JfL[0]; @@ -71,7 +79,9 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x1v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.9682458365518543*JfL[5])-0.5590169943749475*JfL[4]+0.8660254037844386*JfL[1]+0.5*JfL[0]; @@ -80,7 +90,9 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x1v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.7745966692414834*JfL[5]+0.4472135954999579*JfL[4]+1.1618950038622249*JfL[3]+0.6708203932499369*JfL[2]+0.8660254037844386*JfL[1]+0.5*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_1x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_1x2v_ser_p1.c index dcf075bb2a..a8cca34080 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_1x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_1x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -31,6 +34,9 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x2v_ser_p1( hamil[2] = (bmag[0]-1.7320508075688772*bmag[1])*vmap[3]; hamil[4] = 0.7071067811865475*vmapSq[2]*m_; + double apar_surf[6] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[1]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -44,14 +50,14 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.8660254037844386*hamil[1]-2.5980762113533156*hamil[4]))/vmap[1]; - mvpar_quad[1] = (0.7071067811865476*hamil[1])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(2.5980762113533156*hamil[4]+0.8660254037844386*hamil[1]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.8660254037844386*hamil[1]-2.5980762113533156*hamil[4]))/vmap[1]; + dHdvpar_quad[1] = (0.7071067811865476*hamil[1])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(2.5980762113533156*hamil[4]+0.8660254037844386*hamil[1]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -63,7 +69,9 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.5477225575051661*JfL[11])-0.3162277660168379*JfL[10]+0.5477225575051661*JfL[9]+0.3162277660168379*JfL[8]+0.8215838362577489*JfL[7]+0.4743416490252568*JfL[6]-0.6123724356957944*JfL[5]-0.8215838362577489*JfL[4]-0.3535533905932737*JfL[3]-0.4743416490252568*JfL[2]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -72,7 +80,9 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.6846531968814573*JfL[11]+0.39528470752104733*JfL[10]-0.6846531968814574*JfL[9]-0.3952847075210473*JfL[8]-0.6123724356957944*JfL[5]-0.3535533905932737*JfL[3]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -81,7 +91,9 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.5477225575051661*JfL[11])-0.3162277660168379*JfL[10]+0.5477225575051661*JfL[9]+0.3162277660168379*JfL[8]-0.8215838362577489*JfL[7]-0.4743416490252568*JfL[6]-0.6123724356957944*JfL[5]+0.8215838362577489*JfL[4]-0.3535533905932737*JfL[3]+0.4743416490252568*JfL[2]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -90,7 +102,9 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.5477225575051661*JfL[11]+0.3162277660168379*JfL[10]+0.5477225575051661*JfL[9]+0.3162277660168379*JfL[8]-0.8215838362577489*JfL[7]-0.4743416490252568*JfL[6]+0.6123724356957944*JfL[5]-0.8215838362577489*JfL[4]+0.3535533905932737*JfL[3]-0.4743416490252568*JfL[2]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -99,7 +113,9 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.6846531968814573*JfL[11])-0.39528470752104733*JfL[10]-0.6846531968814574*JfL[9]-0.3952847075210473*JfL[8]+0.6123724356957944*JfL[5]+0.3535533905932737*JfL[3]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; @@ -108,7 +124,9 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_1x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.5477225575051661*JfL[11]+0.3162277660168379*JfL[10]+0.5477225575051661*JfL[9]+0.3162277660168379*JfL[8]+0.8215838362577489*JfL[7]+0.4743416490252568*JfL[6]+0.6123724356957944*JfL[5]+0.8215838362577489*JfL[4]+0.3535533905932737*JfL[3]+0.4743416490252568*JfL[2]+0.6123724356957944*JfL[1]+0.3535533905932737*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_2x2v_ser_p1.c index 9a7bc20564..6a9c86893e 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -34,6 +37,10 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( hamil[5] = (bmag[2]-1.7320508075688772*bmag[3])*vmap[3]; hamil[8] = vmapSq[2]*m_; + double apar_surf[12] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[1]; + apar_surf[1] = 1.4142135623730951*apar[2]-2.4494897427831783*apar[3]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -47,14 +54,14 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -66,7 +73,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]-0.38729833462074165*(JfL[21]+JfL[20])-0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.25*JfL[9]-0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -75,7 +87,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])-0.2795084971874737*JfL[22]+0.4841229182759271*(JfL[21]+JfL[20])+0.2795084971874738*(JfL[19]+JfL[18])-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]+0.25*JfL[9]-0.4330127018922193*(JfL[8]+JfL[5])-0.25*(JfL[4]+JfL[2])+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -84,7 +101,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]-0.38729833462074165*(JfL[21]+JfL[20])-0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.25*JfL[9]-0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -93,7 +115,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]+0.38729833462074165*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.25*JfL[9]+0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -102,7 +129,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]+0.2795084971874737*JfL[22]-0.4841229182759271*JfL[21]+0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]+0.2795084971874738*JfL[18]-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]-0.25*JfL[9]+0.4330127018922193*JfL[8]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -111,7 +143,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]+0.38729833462074165*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]-0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.25*JfL[9]+0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]-0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -130,7 +167,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]-0.38729833462074165*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.25*JfL[9]-0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -139,7 +181,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]+0.2795084971874737*JfL[22]+0.4841229182759271*JfL[21]-0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.2795084971874738*JfL[18]-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]-0.25*JfL[9]-0.4330127018922193*JfL[8]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -148,7 +195,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.22360679774997896*JfL[22]-0.38729833462074165*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.25*JfL[9]-0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -157,7 +209,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]+0.38729833462074165*(JfL[21]+JfL[20])+0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]-0.33541019662496846*JfL[14]-0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.25*JfL[9]+0.4330127018922193*JfL[8]-0.33541019662496846*JfL[7]-0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -166,7 +223,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])-0.2795084971874737*JfL[22]-0.4841229182759271*(JfL[21]+JfL[20])-0.2795084971874738*(JfL[19]+JfL[18])-0.4841229182759271*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]+0.25*JfL[9]+0.4330127018922193*(JfL[8]+JfL[5])+0.25*(JfL[4]+JfL[2])+0.4330127018922193*JfL[1]+0.25*JfL[0]; @@ -175,7 +237,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdz2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad -= 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdz2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.22360679774997896*JfL[22]+0.38729833462074165*(JfL[21]+JfL[20])+0.22360679774997894*JfL[19]+0.22360679774997902*JfL[18]+0.3872983346207417*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]+0.33541019662496846*JfL[14]+0.5809475019311124*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.25*JfL[9]+0.4330127018922193*JfL[8]+0.33541019662496846*JfL[7]+0.5809475019311124*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.25*JfL[2]+0.4330127018922193*JfL[1]+0.25*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_3x2v_ser_p1.c index eeea1a9283..61ea6bdc19 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfx_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -37,6 +40,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( hamil[9] = vmap[3]*(bmag[3]-1.7320508075688772*bmag[5]); hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double apar_surf[24] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[1]; + apar_surf[1] = 1.4142135623730951*apar[2]-2.4494897427831783*apar[4]; + apar_surf[2] = 1.4142135623730951*apar[3]-2.4494897427831783*apar[5]; + apar_surf[5] = 1.4142135623730951*apar[6]-2.4494897427831783*apar[7]; + double *flux_surf_nodal = &flux_surf[0]; double cfl = 0.0; double bmag_quad = 0.0; @@ -50,14 +59,14 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -69,7 +78,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -78,7 +92,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]-0.3423265984407287*(JfL[45]+JfL[44]+JfL[43])-0.19764235376052364*(JfL[42]+JfL[41])+0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]+0.34232659844072866*(JfL[38]+JfL[37])+0.19764235376052366*(JfL[36]+JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20]+JfL[16])+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*(JfL[5]+JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -87,7 +106,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -96,7 +120,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -105,7 +134,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]+0.3423265984407287*(JfL[45]+JfL[44])-0.3423265984407287*JfL[43]+0.19764235376052364*(JfL[42]+JfL[41])-0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]+0.34232659844072866*(JfL[38]+JfL[37])-0.19764235376052366*JfL[36]+0.19764235376052366*(JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.3061862178478971*JfL[16]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -114,7 +148,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]-0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]-0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]-0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -133,7 +172,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -142,7 +186,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]+0.3423265984407287*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.19764235376052364*JfL[41]+0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]-0.34232659844072866*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]+0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -151,7 +200,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -160,7 +214,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -169,7 +228,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]-0.3423265984407287*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.19764235376052364*JfL[41]-0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]-0.34232659844072866*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])+0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -178,7 +242,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]+0.273861278752583*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]-0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]+0.3061862178478971*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]-0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -197,7 +266,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -206,7 +280,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]-0.3423265984407287*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.19764235376052364*JfL[41]+0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]+0.34232659844072866*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -215,7 +294,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.15811388300841892*JfL[41]-0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*JfL[21]-0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.1767766952966368*JfL[13]-0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -224,7 +308,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.2371708245126284*JfL[24]-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]+0.2371708245126284*JfL[19]+0.41079191812887433*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]+0.2371708245126284*JfL[11]-0.2371708245126284*JfL[10]-0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -233,7 +322,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]+0.3423265984407287*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.19764235376052364*JfL[41]-0.34232659844072866*JfL[40]+0.19764235376052364*JfL[39]+0.34232659844072866*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.19764235376052366*JfL[34]-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -242,7 +336,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[1]-0.4330127018922193*hamil[5])*rdy2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.15811388300841892*JfL[41]+0.273861278752583*JfL[40]-0.15811388300841892*JfL[39]-0.273861278752583*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.15811388300841894*JfL[34]+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.2371708245126284*JfL[24]+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*JfL[21]+0.3061862178478971*JfL[20]-0.2371708245126284*JfL[19]-0.41079191812887433*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.1767766952966368*JfL[13]+0.3061862178478971*JfL[12]-0.2371708245126284*JfL[11]+0.2371708245126284*JfL[10]+0.41079191812887433*JfL[9]-0.1767766952966368*JfL[8]-0.3061862178478971*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.1767766952966368*JfL[2]+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -261,7 +360,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -270,7 +374,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.19764235376052366*JfL[46]+0.3423265984407287*(JfL[45]+JfL[44])-0.3423265984407287*JfL[43]+0.19764235376052364*(JfL[42]+JfL[41])+0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]-0.34232659844072866*(JfL[38]+JfL[37])+0.19764235376052366*JfL[36]-0.19764235376052366*(JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.3061862178478971*JfL[16]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -279,7 +388,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((-(0.4330127018922193*hamil[9])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.15811388300841892*JfL[46]-0.27386127875258304*(JfL[45]+JfL[44])+0.27386127875258304*JfL[43]-0.15811388300841892*(JfL[42]+JfL[41])-0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])-0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]-0.1767766952966368*JfL[22]-0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*(JfL[14]+JfL[13])-0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -288,7 +402,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]-0.2371708245126284*JfL[30]-0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*(JfL[25]+JfL[24])-0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])-0.2371708245126284*JfL[19]-0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]-0.2371708245126284*(JfL[11]+JfL[10])-0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -297,7 +416,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.19764235376052366*JfL[46]-0.3423265984407287*(JfL[45]+JfL[44]+JfL[43])-0.19764235376052364*(JfL[42]+JfL[41])-0.34232659844072866*JfL[40]-0.19764235376052364*JfL[39]-0.34232659844072866*(JfL[38]+JfL[37])-0.19764235376052366*(JfL[36]+JfL[35]+JfL[34])-0.3423265984407287*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20]+JfL[16])+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*(JfL[5]+JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; @@ -306,7 +430,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[1]*((0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2) - bhat_quad[2]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdy2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdy2) * bhat_quad[2] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[1]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.15811388300841892*JfL[46]+0.27386127875258304*(JfL[45]+JfL[44]+JfL[43])+0.15811388300841892*(JfL[42]+JfL[41])+0.273861278752583*JfL[40]+0.15811388300841892*JfL[39]+0.273861278752583*(JfL[38]+JfL[37])+0.15811388300841892*JfL[36]+0.15811388300841894*(JfL[35]+JfL[34])+0.27386127875258304*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]+0.2371708245126284*JfL[30]+0.41079191812887433*(JfL[29]+JfL[28])+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*(JfL[25]+JfL[24])+0.41079191812887433*JfL[23]+0.1767766952966368*JfL[22]+0.3061862178478971*(JfL[21]+JfL[20])+0.2371708245126284*JfL[19]+0.41079191812887433*(JfL[18]+JfL[17])+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*(JfL[14]+JfL[13])+0.3061862178478971*JfL[12]+0.2371708245126284*(JfL[11]+JfL[10])+0.41079191812887433*JfL[9]+0.1767766952966368*JfL[8]+0.3061862178478971*(JfL[7]+JfL[6])+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*(JfL[3]+JfL[2])+0.3061862178478971*JfL[1]+0.1767766952966368*JfL[0]; diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfy_2x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfy_2x2v_ser_p1.c index 293d963b5c..edb4ae6f4c 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfy_2x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfy_2x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -34,6 +37,10 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( hamil[5] = (bmag[1]-1.7320508075688772*bmag[3])*vmap[3]; hamil[8] = vmapSq[2]*m_; + double apar_surf[12] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[2]; + apar_surf[1] = 1.4142135623730951*apar[1]-2.4494897427831783*apar[3]; + double *flux_surf_nodal = &flux_surf[12]; double cfl = 0.0; double bmag_quad = 0.0; @@ -47,14 +54,14 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; - mvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.6123724356957944*hamil[2]-1.837117307087383*hamil[8]))/vmap[1]; + dHdvpar_quad[1] = (0.49999999999999994*hamil[2])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.837117307087383*hamil[8]+0.6123724356957944*hamil[2]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -66,7 +73,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]-0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]+0.5809475019311124*JfL[14]-0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]+0.25*JfL[8]-0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -75,7 +87,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*JfL[23])+0.4841229182759271*JfL[22]-0.2795084971874737*JfL[21]+0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]+0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*JfL[12]-0.4330127018922193*JfL[9]+0.25*JfL[8]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -84,7 +101,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]-0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]-0.5809475019311124*JfL[14]+0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]+0.25*JfL[8]+0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -93,7 +115,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])+0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*JfL[15]-0.5809475019311124*JfL[14]+0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]-0.25*JfL[8]-0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -102,7 +129,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*JfL[23]-0.4841229182759271*JfL[22]+0.2795084971874737*JfL[21]+0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]+0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*JfL[12]+0.4330127018922193*JfL[9]-0.25*JfL[8]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -111,7 +143,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[0]-0.3535533905932737*apar_surf[1]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])+0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]-0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]-0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*JfL[15]+0.5809475019311124*JfL[14]-0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]-0.25*JfL[8]+0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]-0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]-0.25*JfL[1]+0.25*JfL[0]; @@ -130,7 +167,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*(JfL[15]+JfL[14])+0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]-0.25*JfL[8]-0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -139,7 +181,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.4841229182759271*(JfL[23]+JfL[22])+0.2795084971874737*JfL[21]-0.4841229182759271*JfL[20]+0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]-0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]-0.4330127018922193*(JfL[12]+JfL[9])-0.25*JfL[8]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -148,7 +195,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[1]-0.6123724356957944*hamil[5])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.3872983346207417*JfL[23])-0.38729833462074165*JfL[22]-0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]-0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*(JfL[15]+JfL[14])-0.33541019662496846*JfL[13]-0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]-0.4330127018922193*JfL[9]-0.25*JfL[8]+0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]-0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -157,7 +209,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]-0.5809475019311124*(JfL[15]+JfL[14])-0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]-0.5809475019311124*JfL[11]-0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]+0.25*JfL[8]-0.5809475019311124*JfL[7]-0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]-0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -166,7 +223,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.4841229182759271*(JfL[23]+JfL[22]))-0.2795084971874737*JfL[21]-0.4841229182759271*JfL[20]-0.2795084971874738*JfL[19]-0.4841229182759271*JfL[18]-0.2795084971874738*JfL[17]-0.2795084971874737*JfL[16]+0.4330127018922193*(JfL[12]+JfL[9])+0.25*JfL[8]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); @@ -175,7 +237,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * -bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad -= 1/(q_*bmag_quad*area_elem_quad) * bhat_quad[1]*((0.6123724356957944*hamil[5]+0.6123724356957944*hamil[1])*rdx2); + alpha_quad += 1/m_ * (0.3535533905932737*apar_surf[1]+0.3535533905932737*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (0.6123724356957944*apar_surf[1]*rdx2) * bhat_quad[1] * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.3872983346207417*JfL[23]+0.38729833462074165*JfL[22]+0.22360679774997896*JfL[21]+0.38729833462074165*JfL[20]+0.22360679774997894*JfL[19]+0.3872983346207417*JfL[18]+0.22360679774997902*JfL[17]+0.22360679774997896*JfL[16]+0.5809475019311124*(JfL[15]+JfL[14])+0.33541019662496846*JfL[13]+0.4330127018922193*JfL[12]+0.5809475019311124*JfL[11]+0.33541019662496846*JfL[10]+0.4330127018922193*JfL[9]+0.25*JfL[8]+0.5809475019311124*JfL[7]+0.33541019662496846*JfL[6]+0.4330127018922193*JfL[5]+0.25*JfL[4]+0.33541019662496846*JfL[3]+0.4330127018922193*JfL[2]+0.25*(JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfy_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfy_3x2v_ser_p1.c index 512224cc62..c51261dfc5 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfy_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfy_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -39,6 +42,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( hamil[12] = vmap[3]*bmag[5]; hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double apar_surf[24] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[2]; + apar_surf[1] = 1.4142135623730951*apar[1]-2.4494897427831783*apar[4]; + apar_surf[2] = 1.4142135623730951*apar[3]-2.4494897427831783*apar[6]; + apar_surf[5] = 1.4142135623730951*apar[5]-2.4494897427831783*apar[7]; + double *flux_surf_nodal = &flux_surf[24]; double cfl = 0.0; double bmag_quad = 0.0; @@ -52,14 +61,14 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -71,7 +80,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -80,7 +94,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]-0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -89,7 +108,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -98,7 +122,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -107,7 +136,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]+0.3423265984407287*JfL[44]-0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -116,7 +150,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -135,7 +174,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -144,7 +188,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -153,7 +202,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -162,7 +216,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -171,7 +230,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]+0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -180,7 +244,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[9]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]-0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]-0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -199,7 +268,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -208,7 +282,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]+0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])+0.1767766952966368*JfL[21]-0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -217,7 +296,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]-0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]-0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -226,7 +310,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -235,7 +324,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]-0.3423265984407287*JfL[44]+0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]+0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*JfL[36]+0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -244,7 +338,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])+0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]+0.27386127875258304*JfL[44]-0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]-0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]-0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]-0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]-0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -263,7 +362,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -272,7 +376,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]+0.19764235376052366*JfL[45]+0.3423265984407287*JfL[44]-0.3423265984407287*JfL[43]+0.19764235376052364*JfL[42]+0.34232659844072866*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]+0.19764235376052366*JfL[36]-0.19764235376052366*JfL[35]-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.3061862178478971*JfL[16]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -281,7 +390,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((-(0.4330127018922193*hamil[12])-0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]-0.15811388300841892*JfL[45]-0.27386127875258304*JfL[44]+0.27386127875258304*JfL[43]-0.15811388300841892*JfL[42]-0.273861278752583*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]-0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]-0.1767766952966368*JfL[21]-0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.1767766952966368*JfL[14]-0.3061862178478971*JfL[13]-0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -290,7 +404,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])-0.2371708245126284*JfL[29]-0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]-0.2371708245126284*JfL[25]-0.41079191812887433*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]-0.41079191812887433*JfL[19]-0.2371708245126284*JfL[18]-0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]-0.2371708245126284*JfL[11]-0.41079191812887433*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -299,7 +418,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]-0.19764235376052366*JfL[45]-0.3423265984407287*(JfL[44]+JfL[43])-0.19764235376052364*JfL[42]-0.34232659844072866*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]-0.19764235376052364*JfL[38]-0.34232659844072866*JfL[37]-0.19764235376052366*(JfL[36]+JfL[35])-0.3423265984407287*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])+0.1767766952966368*JfL[21]+0.3061862178478971*(JfL[20]+JfL[16])+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*(JfL[5]+JfL[3])+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -308,7 +432,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)))*area_elem_quad/Jc_quad; + alpha_quad = 0.0; + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[2]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2) - bhat_quad[0]*((0.4330127018922193*hamil[12]+0.4330127018922193*hamil[9]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdz2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdz2) * bhat_quad[0] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[2]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]+0.15811388300841892*JfL[45]+0.27386127875258304*(JfL[44]+JfL[43])+0.15811388300841892*JfL[42]+0.273861278752583*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]+0.15811388300841892*JfL[38]+0.273861278752583*JfL[37]+0.15811388300841892*JfL[36]+0.15811388300841894*JfL[35]+0.27386127875258304*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])+0.2371708245126284*JfL[29]+0.41079191812887433*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]+0.2371708245126284*JfL[25]+0.41079191812887433*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]+0.1767766952966368*JfL[21]+0.3061862178478971*JfL[20]+0.41079191812887433*JfL[19]+0.2371708245126284*JfL[18]+0.41079191812887433*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.1767766952966368*JfL[14]+0.3061862178478971*JfL[13]+0.1767766952966368*JfL[12]+0.2371708245126284*JfL[11]+0.41079191812887433*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]+0.1767766952966368*JfL[7]+0.3061862178478971*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.1767766952966368*JfL[3]+0.3061862178478971*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfz_3x2v_ser_p1.c b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfz_3x2v_ser_p1.c index e135bebf06..cd0550b00f 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfz_3x2v_ser_p1.c +++ b/gyrokinetic/ker/gk_collisionless_flux/gk_collisionless_flux_surfz_3x2v_ser_p1.c @@ -3,7 +3,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( const double *w, const double *dxv, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf) { // w[NDIM]: cell-center. @@ -17,6 +18,8 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( // jacobgeo_rat_surfL: Ratio of surface conf-space Jacobians in left cell. // jacobgeo_rat_surfR: Ratio of surface conf-space Jacobians in right cell. // phi: electrostatic potential. + // apar: parallel component of vector potential. + // apardot: time derivative of parallel component of vector potential. // JfL: distribution times total jacobian in left cell. // JfR: distribution times total jacobian in right cell. // flux_surf: output surface phase space flux in each direction (cdim + 1 components). @@ -37,6 +40,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( hamil[8] = vmap[3]*(bmag[1]-1.7320508075688772*bmag[5]); hamil[16] = 1.4142135623730951*vmapSq[2]*m_; + double apar_surf[24] = {0.}; + apar_surf[0] = 1.4142135623730951*apar[0]-2.4494897427831783*apar[3]; + apar_surf[1] = 1.4142135623730951*apar[1]-2.4494897427831783*apar[5]; + apar_surf[2] = 1.4142135623730951*apar[2]-2.4494897427831783*apar[6]; + apar_surf[5] = 1.4142135623730951*apar[4]-2.4494897427831783*apar[7]; + double *flux_surf_nodal = &flux_surf[48]; double cfl = 0.0; double bmag_quad = 0.0; @@ -50,14 +59,14 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( double JfR_quad = 0.0; double Jfavg_quad = 0.0; double Jfjump_quad = 0.0; - double mvpar_quad[3] = {0.0}; - mvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; - mvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; - mvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; + double dHdvpar_quad[3] = {0.0}; + dHdvpar_quad[0] = (0.8164965809277261*(0.4330127018922193*hamil[3]-1.2990381056766578*hamil[16]))/vmap[1]; + dHdvpar_quad[1] = (0.3535533905932738*hamil[3])/vmap[1]; + dHdvpar_quad[2] = (0.8164965809277261*(1.2990381056766578*hamil[16]+0.4330127018922193*hamil[3]))/vmap[1]; double mvparsq_quad[3] = {0.0}; - mvparsq_quad[0] = mvpar_quad[0]*mvpar_quad[0]/m_; - mvparsq_quad[1] = mvpar_quad[1]*mvpar_quad[1]/m_; - mvparsq_quad[2] = mvpar_quad[2]*mvpar_quad[2]/m_; + mvparsq_quad[0] = dHdvpar_quad[0]*dHdvpar_quad[0]/m_; + mvparsq_quad[1] = dHdvpar_quad[1]*dHdvpar_quad[1]/m_; + mvparsq_quad[2] = dHdvpar_quad[2]*dHdvpar_quad[2]/m_; bmag_quad = gkdgs[0].bmag; Jc_quad = gkdgs[0].Jc; @@ -69,7 +78,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( area_elem_quad = dgs[0].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*(JfL[30]+JfL[29])+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]-0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -78,7 +92,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[0] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*(JfL[46]+JfL[45])+0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]-0.19764235376052364*(JfL[41]+JfL[40])+0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[16]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -87,7 +106,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[1] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*(JfL[30]+JfL[29])-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]+0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -96,7 +120,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[2] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*(JfL[30]+JfL[29])-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -105,7 +134,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[3] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*(JfL[46]+JfL[45])-0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]+0.19764235376052364*(JfL[41]+JfL[40])+0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.3061862178478971*(JfL[16]+JfL[14])-0.1767766952966368*(JfL[13]+JfL[12])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -114,7 +148,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[4] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]-0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])-0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*(JfL[30]+JfL[29])+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])-0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*(JfL[2]+JfL[1])+0.1767766952966368*JfL[0]; @@ -133,7 +172,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( area_elem_quad = dgs[1].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -142,7 +186,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[6] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])+0.3423265984407287*JfL[46]-0.3423265984407287*JfL[45]-0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]+0.19764235376052364*JfL[41]-0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*JfL[27]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*(JfL[16]+JfL[14])-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -151,7 +200,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[7] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -160,7 +214,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[8] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*JfL[31]-0.41079191812887433*JfL[30]+0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -169,7 +228,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[9] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]-0.3423265984407287*JfL[46]+0.3423265984407287*JfL[45]+0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]-0.19764235376052364*JfL[41]+0.19764235376052364*JfL[40]-0.34232659844072866*JfL[39]+0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*JfL[34]+0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*JfL[27]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[16]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -178,7 +242,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[10] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[2]-0.4330127018922193*hamil[5])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])+0.25*apar_surf[2]-0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[2]-0.4330127018922193*apar_surf[5])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]+0.273861278752583*JfL[39]-0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*JfL[34]-0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*JfL[31]+0.41079191812887433*JfL[30]-0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]+0.3061862178478971*JfL[8]-0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*JfL[2]-0.1767766952966368*JfL[1]+0.1767766952966368*JfL[0]; @@ -197,7 +266,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( area_elem_quad = dgs[2].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])+0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -206,7 +280,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[12] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*JfL[46]+0.3423265984407287*JfL[45]-0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]-0.19764235376052364*JfL[41]+0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22])-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.3061862178478971*(JfL[16]+JfL[14])+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -215,7 +294,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[13] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*JfL[46]-0.27386127875258304*JfL[45]+0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]+0.15811388300841892*JfL[41]-0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])-0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]+0.3061862178478971*JfL[22]-0.3061862178478971*JfL[21]+0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]+0.1767766952966368*JfL[13]-0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -224,7 +308,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[14] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30])-0.41079191812887433*JfL[29]+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]+0.2371708245126284*JfL[24]-0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]+0.41079191812887433*JfL[19]-0.41079191812887433*JfL[18]+0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.41079191812887433*JfL[11]+0.2371708245126284*JfL[10]-0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -233,7 +322,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[15] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*JfL[46]-0.3423265984407287*JfL[45]+0.19764235376052366*JfL[44]+0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]+0.19764235376052364*JfL[41]-0.19764235376052364*JfL[40]+0.34232659844072866*JfL[39]-0.34232659844072866*JfL[38]+0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]+0.19764235376052366*JfL[34]-0.19764235376052366*JfL[33]-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22])+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.3061862178478971*JfL[16]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -242,7 +336,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[16] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]-0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (-(0.25*apar_surf[5])-0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[1]-0.4330127018922193*apar_surf[5])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*JfL[46]+0.27386127875258304*JfL[45]-0.15811388300841892*JfL[44]-0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]-0.15811388300841892*JfL[41]+0.15811388300841892*JfL[40]-0.273861278752583*JfL[39]+0.273861278752583*JfL[38]-0.15811388300841892*JfL[37]+0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]-0.15811388300841894*JfL[34]+0.15811388300841894*JfL[33]+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30])+0.41079191812887433*JfL[29]-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]-0.2371708245126284*JfL[24]+0.2371708245126284*JfL[23]-0.3061862178478971*JfL[22]+0.3061862178478971*JfL[21]-0.1767766952966368*JfL[20]-0.41079191812887433*JfL[19]+0.41079191812887433*JfL[18]-0.2371708245126284*JfL[17]-0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]-0.1767766952966368*JfL[13]+0.1767766952966368*JfL[12]+0.41079191812887433*JfL[11]-0.2371708245126284*JfL[10]+0.2371708245126284*JfL[9]-0.3061862178478971*JfL[8]+0.3061862178478971*JfL[7]-0.1767766952966368*JfL[6]+0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]-0.1767766952966368*JfL[2]+0.1767766952966368*(JfL[1]+JfL[0]); @@ -261,7 +360,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( area_elem_quad = dgs[3].area_elem; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])+0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]-0.41079191812887433*JfL[26]+0.41079191812887433*JfL[25]+0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -270,7 +374,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[18] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.34232659844072866*JfL[47]+0.3423265984407287*(JfL[46]+JfL[45])+0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]+0.34232659844072866*JfL[42]+0.19764235376052364*(JfL[41]+JfL[40])-0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]+0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]-0.3061862178478971*(JfL[27]+JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.3061862178478971*JfL[16]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -279,7 +388,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[19] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((-(0.4330127018922193*hamil[8])+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.273861278752583*JfL[47])-0.27386127875258304*(JfL[46]+JfL[45])-0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]-0.273861278752583*JfL[42]-0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*JfL[37]-0.15811388300841892*JfL[36]+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])-0.2371708245126284*JfL[28]-0.3061862178478971*JfL[27]+0.41079191812887433*JfL[26]-0.41079191812887433*JfL[25]-0.2371708245126284*(JfL[24]+JfL[23])-0.3061862178478971*(JfL[22]+JfL[21])-0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]-0.3061862178478971*JfL[14]-0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*JfL[6]-0.1767766952966368*JfL[5]+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -288,7 +402,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[20] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[0]*B3_quad/(m_*bmag_quad) + mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[0]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[0]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[0]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[0]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]-0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])-0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]-0.41079191812887433*(JfL[26]+JfL[25])-0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]-0.41079191812887433*(JfL[19]+JfL[18])-0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]-0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])-0.41079191812887433*JfL[11]-0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])-0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -297,7 +416,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[21] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[1]*B3_quad/(m_*bmag_quad) + mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[1]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[1]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[1]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[1]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = -(0.34232659844072866*JfL[47])-0.3423265984407287*(JfL[46]+JfL[45])-0.19764235376052366*JfL[44]-0.3423265984407287*JfL[43]-0.34232659844072866*JfL[42]-0.19764235376052364*(JfL[41]+JfL[40])-0.34232659844072866*(JfL[39]+JfL[38])-0.19764235376052364*JfL[37]-0.19764235376052366*JfL[36]-0.3423265984407287*JfL[35]-0.19764235376052366*(JfL[34]+JfL[33])-0.19764235376052364*JfL[32]+0.3061862178478971*(JfL[27]+JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.3061862178478971*(JfL[16]+JfL[14])+0.1767766952966368*(JfL[13]+JfL[12])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); @@ -306,7 +430,12 @@ GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( Jfjump_quad = (JfR_quad - JfL_quad)/2.0; flux_surf_nodal[22] = alpha_quad*Jfavg_quad - fabs(alpha_quad)*Jfjump_quad; - alpha_quad = (mvpar_quad[2]*B3_quad/(m_*bmag_quad) + mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_) + 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)))*area_elem_quad/Jc_quad; + alpha_quad = (dHdvpar_quad[2]*B3_quad/(m_*bmag_quad)); + alpha_quad += mvparsq_quad[2]*normcurlbhat_quad/(bmag_quad*q_); + alpha_quad += 1/(q_*bmag_quad*area_elem_quad) * (bhat_quad[0]*((0.4330127018922193*hamil[5]+0.4330127018922193*hamil[2])*rdy2) - bhat_quad[1]*((0.4330127018922193*hamil[8]+0.4330127018922193*hamil[5]+0.4330127018922193*hamil[1])*rdx2)); + alpha_quad += 1/m_ * (0.25*apar_surf[5]+0.25*apar_surf[2]+0.25*apar_surf[1]+0.25*apar_surf[0]) * normcurlbhat_quad/bmag_quad * dHdvpar_quad[2]; + alpha_quad += 1/(m_*bmag_quad*area_elem_quad) * (((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[1])*rdx2) * bhat_quad[1] - ((0.4330127018922193*apar_surf[5]+0.4330127018922193*apar_surf[2])*rdy2) * bhat_quad[0]) * dHdvpar_quad[2]; + alpha_quad = alpha_quad * area_elem_quad/Jc_quad; cfl = fmax(fabs(alpha_quad), fabs(cfl)); JfL_quad = 0.273861278752583*JfL[47]+0.27386127875258304*(JfL[46]+JfL[45])+0.15811388300841892*JfL[44]+0.27386127875258304*JfL[43]+0.273861278752583*JfL[42]+0.15811388300841892*(JfL[41]+JfL[40])+0.273861278752583*(JfL[39]+JfL[38])+0.15811388300841892*(JfL[37]+JfL[36])+0.27386127875258304*JfL[35]+0.15811388300841894*(JfL[34]+JfL[33])+0.15811388300841892*JfL[32]+0.41079191812887433*(JfL[31]+JfL[30]+JfL[29])+0.2371708245126284*JfL[28]+0.3061862178478971*JfL[27]+0.41079191812887433*(JfL[26]+JfL[25])+0.2371708245126284*(JfL[24]+JfL[23])+0.3061862178478971*(JfL[22]+JfL[21])+0.1767766952966368*JfL[20]+0.41079191812887433*(JfL[19]+JfL[18])+0.2371708245126284*JfL[17]+0.3061862178478971*JfL[16]+0.2371708245126284*JfL[15]+0.3061862178478971*JfL[14]+0.1767766952966368*(JfL[13]+JfL[12])+0.41079191812887433*JfL[11]+0.2371708245126284*(JfL[10]+JfL[9])+0.3061862178478971*(JfL[8]+JfL[7])+0.1767766952966368*(JfL[6]+JfL[5])+0.2371708245126284*JfL[4]+0.3061862178478971*JfL[3]+0.1767766952966368*(JfL[2]+JfL[1]+JfL[0]); diff --git a/gyrokinetic/ker/gk_collisionless_flux/gkyl_gk_collisionless_flux_kernels.h b/gyrokinetic/ker/gk_collisionless_flux/gkyl_gk_collisionless_flux_kernels.h index 364f4f88b5..52dc9eb953 100644 --- a/gyrokinetic/ker/gk_collisionless_flux/gkyl_gk_collisionless_flux_kernels.h +++ b/gyrokinetic/ker/gk_collisionless_flux/gkyl_gk_collisionless_flux_kernels.h @@ -8,657 +8,403 @@ EXTERN_C_BEG GKYL_CU_DH double gk_collisionless_flux_surfx_1x1v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x1v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x1v_ser_p1( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); - -GKYL_CU_DH double gk_collisionless_flux_surfx_1x1v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x1v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x1v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x1v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x1v_ser_p2( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_surfx_1x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x2v_ser_p1( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); - -GKYL_CU_DH double gk_collisionless_flux_surfx_1x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_edge_surfx_1x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_1x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_1x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_surfvpar_1x2v_ser_p2( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p1( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p1( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); - -GKYL_CU_DH double gk_collisionless_flux_surfx_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_edge_surfx_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_surfy_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_edge_surfy_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_surfvpar_2x2v_ser_p2( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_2x2v_ser_p2( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); -GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_2x2v_ser_p2( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_surfx_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_edge_surfx_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_surfy_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_edge_surfy_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_surfz_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_edge_surfz_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfx_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfx_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfy_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfy_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_surfz_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_multib_boundary_edge_surfz_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_surfvpar_3x2v_ser_p1( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + GKYL_CU_DH double gk_collisionless_flux_no_by_surfx_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfx_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_surfy_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfy_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_surfz_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_edge_surfz_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfx_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfx_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfy_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfy_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_surfz_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_multib_boundary_edge_surfz_3x2v_ser_p1( - const double *w, const double *dxv, - - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, - const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, - const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); GKYL_CU_DH double gk_collisionless_flux_no_by_surfvpar_3x2v_ser_p1( - const double *w, const double *dxv, - const double *vmap_prime_l, const double *vmap_prime_r, - const double *vmap, const double *vmapSq, const double q_, const double m_, - const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, - double* GKYL_RESTRICT flux_surf); + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, const double *JfL, const double *JfR, + double* GKYL_RESTRICT flux_surf); + +GKYL_CU_DH double gk_collisionless_flux_surfconf_none( + const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, + const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, + const double *phi, const double *apar, const double *apardot, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf); +GKYL_CU_DH double gk_collisionless_flux_surfvpar_none( + const double *w, const double *dxv, + const double *vmap_prime_l, const double *vmap_prime_r, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, + const double *bmag, const double *phi, const double *apar, const double *apardot, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf); EXTERN_C_END diff --git a/gyrokinetic/unit/ctest_dg_gyrokinetic.c b/gyrokinetic/unit/ctest_dg_gyrokinetic.c index 7186e34050..43d5567993 100644 --- a/gyrokinetic/unit/ctest_dg_gyrokinetic.c +++ b/gyrokinetic/unit/ctest_dg_gyrokinetic.c @@ -110,7 +110,7 @@ test_dg_gyrokinetic() phaseRange, phaseRange_ext, velLocal, velLocal_ext, false); struct gkyl_dg_eqn* eqn = gkyl_dg_gyrokinetic_new(&confBasis, &basis, &confRange, &phaseRange, - charge, mass, 0, gk_geom, gvm, false); + charge, mass, GKYL_GK_COLLISIONLESS_EM, false, false, gk_geom, gvm, false); TEST_CHECK( eqn->num_equations == 1 ); diff --git a/gyrokinetic/unit/ctest_dg_gyrokinetic_kern_tm.c b/gyrokinetic/unit/ctest_dg_gyrokinetic_kern_tm.c index 9ab3173e12..faf097b510 100644 --- a/gyrokinetic/unit/ctest_dg_gyrokinetic_kern_tm.c +++ b/gyrokinetic/unit/ctest_dg_gyrokinetic_kern_tm.c @@ -131,7 +131,7 @@ test_3x2v_p1(bool use_gpu) struct gkyl_dg_updater_gyrokinetic* up; up = gkyl_dg_updater_gyrokinetic_new(&phaseGrid, &confBasis, &basis, &confRange, &phaseRange, - is_zero_flux, 1.0, 1.0, GKYL_GK_COLLISIONLESS_ES, gk_geom, gvm, &aux, use_gpu); + is_zero_flux, 1.0, 1.0, GKYL_GK_COLLISIONLESS_EM, false, false, gk_geom, gvm, &aux, use_gpu); // initialize arrays struct gkyl_array *fin, *rhs, *cflrate; diff --git a/gyrokinetic/unit/ctest_fem_poisson_perp_ksq.c b/gyrokinetic/unit/ctest_fem_poisson_perp_kSq.c similarity index 100% rename from gyrokinetic/unit/ctest_fem_poisson_perp_ksq.c rename to gyrokinetic/unit/ctest_fem_poisson_perp_kSq.c diff --git a/gyrokinetic/zero/calc_metric.c b/gyrokinetic/zero/calc_metric.c index d2caf9c6c5..085ba62d36 100644 --- a/gyrokinetic/zero/calc_metric.c +++ b/gyrokinetic/zero/calc_metric.c @@ -1420,6 +1420,8 @@ void gkyl_calc_metric_advance_interior(gkyl_calc_metric *up, struct gk_geometry -gFld_n[1]*( gFld_n[1]*gFld_n[5] - gFld_n[4]*gFld_n[2] ) +gFld_n[2]*( gFld_n[1]*gFld_n[4] - gFld_n[3]*gFld_n[2] ); double J = sqrt(Jsq); + double *jFld_n= gkyl_array_fetch(gk_geom->geo_int.jacobgeo_nodal, gkyl_range_idx(&gk_geom->nrange_int, cidx)); + jFld_n[0] = J; double e_1[3], e_2[3], e_3[3]; e_1[0] = dxdz[0][0]; e_1[1] = dxdz[1][0]; e_1[2] = dxdz[2][0]; e_2[0] = dxdz[0][1]; e_2[1] = dxdz[1][1]; e_2[2] = dxdz[2][1]; diff --git a/gyrokinetic/zero/dg_gyrokinetic.c b/gyrokinetic/zero/dg_gyrokinetic.c index e0429735d7..6617460afa 100644 --- a/gyrokinetic/zero/dg_gyrokinetic.c +++ b/gyrokinetic/zero/dg_gyrokinetic.c @@ -47,13 +47,15 @@ gkyl_gyrokinetic_set_auxfields(const struct gkyl_dg_eqn *eqn, struct gkyl_dg_gyr struct gkyl_dg_eqn* gkyl_dg_gyrokinetic_new(const struct gkyl_basis *cbasis, const struct gkyl_basis *pbasis, const struct gkyl_range *conf_range, const struct gkyl_range *phase_range, - const double charge, const double mass, enum gkyl_gk_collisionless_type collless_type, + const double charge, const double mass, + enum gkyl_gk_collisionless_type collless_type, const bool no_by, const bool complete_em, const struct gk_geometry *gk_geom, const struct gkyl_velocity_map *vel_map, bool use_gpu) { + #ifdef GKYL_HAVE_CUDA if (use_gpu) return gkyl_dg_gyrokinetic_cu_dev_new(cbasis, pbasis, conf_range, phase_range, - charge, mass, collless_type, gk_geom, vel_map); + charge, mass, collless_type, no_by, complete_em, gk_geom, vel_map); #endif struct dg_gyrokinetic *gyrokinetic = gkyl_malloc(sizeof(struct dg_gyrokinetic)); @@ -72,7 +74,9 @@ gkyl_dg_gyrokinetic_new(const struct gkyl_basis *cbasis, const struct gkyl_basis gyrokinetic->eqn.boundary_surf_term = boundary_surf; gyrokinetic->eqn.boundary_diag_term = boundary_diag; - const gkyl_dg_gyrokinetic_vol_kern_list *vol_kernels, *vol_no_by_kernels; + const gkyl_dg_gyrokinetic_vol_es_kern_list *vol_kernels, *vol_no_by_kernels; + const gkyl_dg_gyrokinetic_vol_add_apar_kern_list *vol_add_apar_kernels; + const gkyl_dg_gyrokinetic_vol_add_apardot_kern_list *vol_add_apardot_kernels; const gkyl_dg_gyrokinetic_surf_kern_list *surf_x_kernels; const gkyl_dg_gyrokinetic_surf_kern_list *surf_y_kernels; const gkyl_dg_gyrokinetic_surf_kern_list *surf_z_kernels; @@ -84,7 +88,9 @@ gkyl_dg_gyrokinetic_new(const struct gkyl_basis *cbasis, const struct gkyl_basis switch (cbasis->b_type) { case GKYL_BASIS_MODAL_SERENDIPITY: - vol_kernels = ser_vol_kernels; + vol_kernels = ser_vol_es_kernels; + vol_add_apar_kernels = ser_add_apar_vol_kernels; + vol_add_apardot_kernels = ser_add_apardot_vol_kernels; surf_x_kernels = ser_surf_x_kernels; surf_y_kernels = ser_surf_y_kernels; surf_z_kernels = ser_surf_z_kernels; @@ -94,7 +100,7 @@ gkyl_dg_gyrokinetic_new(const struct gkyl_basis *cbasis, const struct gkyl_basis boundary_surf_z_kernels = ser_boundary_surf_z_kernels; boundary_surf_vpar_kernels = ser_boundary_surf_vpar_kernels; - vol_no_by_kernels = ser_no_by_vol_kernels; + vol_no_by_kernels = ser_no_by_vol_es_kernels; break; default: @@ -102,11 +108,31 @@ gkyl_dg_gyrokinetic_new(const struct gkyl_basis *cbasis, const struct gkyl_basis break; } - if (collless_type == GKYL_GK_COLLISIONLESS_ES) { - gyrokinetic->eqn.vol_term = CK(vol_kernels,cdim,vdim,poly_order); + gyrokinetic->eqn.vol_term = kernel_dg_gyrokinetic_vol; + + if (no_by) { + gyrokinetic->vol_es_kernel = CK(vol_no_by_kernels,cdim,vdim,poly_order); } - else if (collless_type == GKYL_GK_COLLISIONLESS_ES_NO_BY) { - gyrokinetic->eqn.vol_term = CK(vol_no_by_kernels,cdim,vdim,poly_order); + else { + gyrokinetic->vol_es_kernel = CK(vol_kernels,cdim,vdim,poly_order); + } + + // Setup electromagnetic terms if needed. + bool is_em = (collless_type == GKYL_GK_COLLISIONLESS_EM); + gyrokinetic->vol_add_apar_kernel = dg_gyrokinetic_add_apar_vol_none; + gyrokinetic->vol_add_apardot_kernel = dg_gyrokinetic_add_apardot_vol_none; + if (is_em) { + if (complete_em) { + // We complete with Apardot contribution to get the full GK RHS. + gyrokinetic->vol_es_kernel = dg_gyrokinetic_vol_none; + gyrokinetic->vol_add_apar_kernel = dg_gyrokinetic_add_apar_vol_none; + gyrokinetic->vol_add_apardot_kernel = CK(vol_add_apardot_kernels,cdim,vdim,poly_order); + } else { + // We build for Ohm's law RHS (no Apardot contribution). + gyrokinetic->vol_es_kernel = gyrokinetic->vol_es_kernel; // no change to ES kernel + gyrokinetic->vol_add_apar_kernel = CK(vol_add_apar_kernels,cdim,vdim,poly_order); + gyrokinetic->vol_add_apardot_kernel = dg_gyrokinetic_add_apardot_vol_none; + } } gyrokinetic->surf[0] = CK(surf_x_kernels,cdim,vdim,poly_order); diff --git a/gyrokinetic/zero/dg_gyrokinetic_cu.cu b/gyrokinetic/zero/dg_gyrokinetic_cu.cu index 09f69e68fe..bd9de9d914 100644 --- a/gyrokinetic/zero/dg_gyrokinetic_cu.cu +++ b/gyrokinetic/zero/dg_gyrokinetic_cu.cu @@ -38,7 +38,8 @@ gkyl_gyrokinetic_set_auxfields_cu(const struct gkyl_dg_eqn *eqn, struct gkyl_dg_ // Doing function pointer stuff in here avoids troublesome cudaMemcpyFromSymbol __global__ static void dg_gyrokinetic_set_cu_dev_ptrs(struct dg_gyrokinetic *gyrokinetic, enum gkyl_basis_type b_type, - int cv_index, int cdim, int vdim, int poly_order, enum gkyl_gk_collisionless_type collless_type) + int cv_index, int cdim, int vdim, int poly_order, enum gkyl_gk_collisionless_type collless_type, + bool no_by, bool complete_em) { gyrokinetic->auxfields.flux_surf = 0; gyrokinetic->auxfields.phi = 0; @@ -49,7 +50,9 @@ dg_gyrokinetic_set_cu_dev_ptrs(struct dg_gyrokinetic *gyrokinetic, enum gkyl_bas gyrokinetic->eqn.boundary_surf_term = boundary_surf; gyrokinetic->eqn.boundary_diag_term = boundary_diag; - const gkyl_dg_gyrokinetic_vol_kern_list *vol_kernels, *vol_no_by_kernels; + const gkyl_dg_gyrokinetic_vol_es_kern_list *vol_kernels, *vol_no_by_kernels; + const gkyl_dg_gyrokinetic_vol_add_apar_kern_list *vol_add_apar_kernels; + const gkyl_dg_gyrokinetic_vol_add_apardot_kern_list *vol_add_apardot_kernels; const gkyl_dg_gyrokinetic_surf_kern_list *surf_x_kernels; const gkyl_dg_gyrokinetic_surf_kern_list *surf_y_kernels; const gkyl_dg_gyrokinetic_surf_kern_list *surf_z_kernels; @@ -61,7 +64,9 @@ dg_gyrokinetic_set_cu_dev_ptrs(struct dg_gyrokinetic *gyrokinetic, enum gkyl_bas switch (b_type) { case GKYL_BASIS_MODAL_SERENDIPITY: - vol_kernels = ser_vol_kernels; + vol_kernels = ser_vol_es_kernels; + vol_add_apar_kernels = ser_add_apar_vol_kernels; + vol_add_apardot_kernels = ser_add_apardot_vol_kernels; surf_x_kernels = ser_surf_x_kernels; surf_y_kernels = ser_surf_y_kernels; surf_z_kernels = ser_surf_z_kernels; @@ -71,7 +76,7 @@ dg_gyrokinetic_set_cu_dev_ptrs(struct dg_gyrokinetic *gyrokinetic, enum gkyl_bas boundary_surf_z_kernels = ser_boundary_surf_z_kernels; boundary_surf_vpar_kernels = ser_boundary_surf_vpar_kernels; - vol_no_by_kernels = ser_no_by_vol_kernels; + vol_no_by_kernels = ser_no_by_vol_es_kernels; break; @@ -79,12 +84,32 @@ dg_gyrokinetic_set_cu_dev_ptrs(struct dg_gyrokinetic *gyrokinetic, enum gkyl_bas assert(false); break; } + + gyrokinetic->eqn.vol_term = kernel_dg_gyrokinetic_vol; - if (collless_type == GKYL_GK_COLLISIONLESS_ES) { - gyrokinetic->eqn.vol_term = vol_kernels[cv_index].kernels[poly_order]; + if (no_by) { + gyrokinetic->vol_es_kernel = vol_no_by_kernels[cv_index].kernels[poly_order]; + } + else { + gyrokinetic->vol_es_kernel = vol_kernels[cv_index].kernels[poly_order]; } - else if (collless_type == GKYL_GK_COLLISIONLESS_ES_NO_BY) { - gyrokinetic->eqn.vol_term = vol_no_by_kernels[cv_index].kernels[poly_order]; + + // Setup electromagnetic terms if needed. + bool is_em = (collless_type == GKYL_GK_COLLISIONLESS_EM); + gyrokinetic->vol_add_apar_kernel = dg_gyrokinetic_add_apar_vol_none; + gyrokinetic->vol_add_apardot_kernel = dg_gyrokinetic_add_apardot_vol_none; + if (is_em) { + if (complete_em) { + // We complete the Ohm's law RHS with Apardot contribution to get the full GK RHS. + gyrokinetic->vol_es_kernel = dg_gyrokinetic_vol_none; + gyrokinetic->vol_add_apar_kernel = dg_gyrokinetic_add_apar_vol_none; + gyrokinetic->vol_add_apardot_kernel = vol_add_apardot_kernels[cv_index].kernels[poly_order]; + } else { + // We build Ohm's law RHS (no Apardot contribution). + gyrokinetic->vol_es_kernel = gyrokinetic->vol_es_kernel; // no change to ES kernel + gyrokinetic->vol_add_apar_kernel = vol_add_apar_kernels[cv_index].kernels[poly_order]; + gyrokinetic->vol_add_apardot_kernel = dg_gyrokinetic_add_apardot_vol_none; + } } gyrokinetic->surf[0] = surf_x_kernels[cv_index].kernels[poly_order]; @@ -107,7 +132,7 @@ struct gkyl_dg_eqn* gkyl_dg_gyrokinetic_cu_dev_new(const struct gkyl_basis *cbasis, const struct gkyl_basis *pbasis, const struct gkyl_range *conf_range, const struct gkyl_range *phase_range, const double charge, const double mass, enum gkyl_gk_collisionless_type collless_type, - const struct gk_geometry *gk_geom, const struct gkyl_velocity_map *vel_map) + const bool no_by, const bool complete_em, const struct gk_geometry *gk_geom, const struct gkyl_velocity_map *vel_map) { struct dg_gyrokinetic *gyrokinetic = (struct dg_gyrokinetic*) gkyl_malloc(sizeof(*gyrokinetic)); @@ -141,7 +166,7 @@ gkyl_dg_gyrokinetic_cu_dev_new(const struct gkyl_basis *cbasis, const struct gky gkyl_cu_memcpy(gyrokinetic_cu, gyrokinetic, sizeof(struct dg_gyrokinetic), GKYL_CU_MEMCPY_H2D); dg_gyrokinetic_set_cu_dev_ptrs<<<1,1>>>(gyrokinetic_cu, cbasis->b_type, cv_index[cdim].vdim[vdim], - cdim, vdim, poly_order, collless_type); + cdim, vdim, poly_order, collless_type, no_by, complete_em); // set parent on_dev pointer gyrokinetic->eqn.on_dev = &gyrokinetic_cu->eqn; @@ -151,4 +176,4 @@ gkyl_dg_gyrokinetic_cu_dev_new(const struct gkyl_basis *cbasis, const struct gky gyrokinetic->vel_map = vel_map_ho; return &gyrokinetic->eqn; -} +} \ No newline at end of file diff --git a/gyrokinetic/zero/dg_updater_gyrokinetic.c b/gyrokinetic/zero/dg_updater_gyrokinetic.c index bffe17f9c6..8cdf75a9e0 100644 --- a/gyrokinetic/zero/dg_updater_gyrokinetic.c +++ b/gyrokinetic/zero/dg_updater_gyrokinetic.c @@ -15,12 +15,14 @@ gkyl_dg_updater_gyrokinetic_acquire_eqn(const gkyl_dg_updater_gyrokinetic* gyrok return gkyl_dg_eqn_acquire(gyrokinetic->eqn_gyrokinetic); } +// TODO: remove add_em flag and replace by the collisionless enum type. + struct gkyl_dg_updater_gyrokinetic* gkyl_dg_updater_gyrokinetic_new(const struct gkyl_rect_grid *grid, const struct gkyl_basis *cbasis, const struct gkyl_basis *pbasis, const struct gkyl_range *conf_range, const struct gkyl_range *phase_range, const bool *is_zero_flux_bc, double charge, double mass, - enum gkyl_gk_collisionless_type collless_type, const struct gk_geometry *gk_geom, + enum gkyl_gk_collisionless_type collless_type, const bool no_by, const bool complete_em, const struct gk_geometry *gk_geom, const struct gkyl_velocity_map *vel_map, void *aux_inp, bool use_gpu) { struct gkyl_dg_updater_gyrokinetic *up = gkyl_malloc(sizeof(struct gkyl_dg_updater_gyrokinetic)); @@ -28,16 +30,31 @@ gkyl_dg_updater_gyrokinetic_new(const struct gkyl_rect_grid *grid, up->use_gpu = use_gpu; up->eqn_gyrokinetic = gkyl_dg_gyrokinetic_new(cbasis, pbasis, conf_range, phase_range, - charge, mass, collless_type, gk_geom, vel_map, up->use_gpu); + charge, mass, collless_type, no_by, complete_em, gk_geom, vel_map, up->use_gpu); struct gkyl_dg_gyrokinetic_auxfields *gk_inp = aux_inp; gkyl_gyrokinetic_set_auxfields(up->eqn_gyrokinetic, *gk_inp); int cdim = cbasis->ndim, pdim = pbasis->ndim; int vdim = pdim-cdim; + int up_dirs[GKYL_MAX_DIM] = {0}; - int num_up_dirs = cdim+1; - for (int d=0; dgk_dg_geom = gkyl_gk_dg_geom_acquire(gk_dg_geom); up->vel_map = gkyl_velocity_map_acquire(vel_map); - if (type == GKYL_GK_COLLISIONLESS_ES) { + // Set none kernels by default + for (int d=0; dflux_surf[d] = gk_collisionless_flux_surfconf_none; + up->flux_surf_edge_lo[d] = gk_collisionless_flux_surfconf_none; + up->flux_surf_edge_up[d] = gk_collisionless_flux_surfconf_none; + } + up->flux_surfvpar[0] = gk_collisionless_flux_surfvpar_none; + + // Choose appropriate kernels. + if (no_by) { + for (int d=0; dflux_surf[d] = choose_gk_collisionless_flux_no_by_surf_conf_kern(d, cdim, vdim, poly_order, GKYL_BC_GK_SPECIES_ABSORB); + up->flux_surf_edge_lo[d] = choose_gk_collisionless_flux_no_by_surf_conf_kern(d, cdim, vdim, + poly_order, bctype_conf[d]); + up->flux_surf_edge_up[d] = choose_gk_collisionless_flux_no_by_edge_surf_conf_kern(d, cdim, vdim, + poly_order, bctype_conf[GKYL_MAX_CDIM+d]); + } + up->flux_surfvpar[0] = choose_gk_collisionless_flux_no_by_surf_vpar_kern(cdim, vdim, poly_order); + } else { for (int d=0; dflux_surf kernel doesn't matter as long as it's not SKIP. up->flux_surf[d] = choose_gk_collisionless_flux_surf_conf_kern(d, cdim, vdim, poly_order, GKYL_BC_GK_SPECIES_ABSORB); up->flux_surf_edge_lo[d] = choose_gk_collisionless_flux_surf_conf_kern(d, cdim, vdim, poly_order, bctype_conf[d]); @@ -54,16 +71,20 @@ gkyl_gk_collisionless_flux_new(const struct gkyl_rect_grid *phase_grid, } up->flux_surfvpar[0] = choose_gk_collisionless_flux_surf_vpar_kern(cdim, vdim, poly_order); } - else if (type == GKYL_GK_COLLISIONLESS_ES_NO_BY) { - for (int d=0; dflux_surf kernel doesn't matter as long as it's not SKIP. - up->flux_surf[d] = choose_gk_collisionless_flux_no_by_surf_conf_kern(d, cdim, vdim, poly_order, GKYL_BC_GK_SPECIES_ABSORB); - up->flux_surf_edge_lo[d] = choose_gk_collisionless_flux_no_by_surf_conf_kern(d, cdim, vdim, - poly_order, bctype_conf[d]); - up->flux_surf_edge_up[d] = choose_gk_collisionless_flux_no_by_edge_surf_conf_kern(d, cdim, vdim, - poly_order, bctype_conf[GKYL_MAX_CDIM+d]); + + // If EM, we split the flux contribution between two updaters. + if (type == GKYL_GK_COLLISIONLESS_EM) { + if (complete_em) { + // To complete RHS star. + for (int d=0; dflux_surf[d] = gk_collisionless_flux_surfconf_none; + up->flux_surf_edge_lo[d] = gk_collisionless_flux_surfconf_none; + up->flux_surf_edge_up[d] = gk_collisionless_flux_surfconf_none; + } + } else { + // To compute RHS star. + up->flux_surfvpar[0] = gk_collisionless_flux_surfvpar_none; } - up->flux_surfvpar[0] = choose_gk_collisionless_flux_no_by_surf_vpar_kern(cdim, vdim, poly_order); } up->flags = 0; @@ -75,13 +96,14 @@ gkyl_gk_collisionless_flux_new(const struct gkyl_rect_grid *phase_grid, void gkyl_gk_collisionless_flux_surf(struct gkyl_gk_collisionless_flux *up, const struct gkyl_range *conf_range, const struct gkyl_range *phase_range, - const struct gkyl_range *conf_ext_range, const struct gkyl_range *phase_ext_range, const struct gkyl_array *phi, + const struct gkyl_range *conf_ext_range, const struct gkyl_range *phase_ext_range, + const struct gkyl_array *phi, const struct gkyl_array *apar, const struct gkyl_array *apardot, const struct gkyl_array *fin, struct gkyl_array* flux_surf, struct gkyl_array *cflrate) { #ifdef GKYL_HAVE_CUDA if (gkyl_array_is_cu_dev(flux_surf)) { return gkyl_gk_collisionless_flux_surf_cu(up, conf_range, phase_range, - conf_ext_range, phase_ext_range, phi, fin, flux_surf, cflrate); + conf_ext_range, phase_ext_range, phi, apar, apardot, fin, flux_surf, cflrate); } #endif int pdim = up->pdim; @@ -112,6 +134,8 @@ void gkyl_gk_collisionless_flux_surf(struct gkyl_gk_collisionless_flux *up, const double *bmag_d = gkyl_array_cfetch(up->gk_geom->geo_corn.bmag, loc_conf); const double *phi_d = gkyl_array_cfetch(phi, loc_conf); + const double *apar_d = gkyl_array_cfetch(apar, loc_conf); + const double *apardot_d = gkyl_array_cfetch(apardot, loc_conf); const double *vmap_d = gkyl_array_cfetch(up->vel_map->vmap, loc_vel); const double *vmapSq_d = gkyl_array_cfetch(up->vel_map->vmap_sq, loc_vel); @@ -135,11 +159,11 @@ void gkyl_gk_collisionless_flux_surf(struct gkyl_gk_collisionless_flux *up, if (idx[dir] == phase_range->lower[dir]) { // Lower domain/block boundary. cflrate_d[0] += up->flux_surf_edge_lo[dir](xc, up->phase_grid.dx, vmap_d, vmapSq_d, up->charge, up->mass, - dgs, gkdgs, bmag_d, jacgeo_rat_surfL_d, jacgeo_rat_surfR_d, phi_d, fL, fR, flux_surf_d); + dgs, gkdgs, bmag_d, jacgeo_rat_surfL_d, jacgeo_rat_surfR_d, phi_d, apar_d, apardot_d, fL, fR, flux_surf_d); } else { // Interior, lower cell surface. cflrate_d[0] += up->flux_surf[dir](xc, up->phase_grid.dx, vmap_d, vmapSq_d, up->charge, up->mass, - dgs, gkdgs, bmag_d, jacgeo_rat_surfL_d, jacgeo_rat_surfR_d, phi_d, fL, fR, flux_surf_d); + dgs, gkdgs, bmag_d, jacgeo_rat_surfL_d, jacgeo_rat_surfR_d, phi_d, apar_d, apardot_d, fL, fR, flux_surf_d); } // Upper domain/block boundary. @@ -166,7 +190,7 @@ void gkyl_gk_collisionless_flux_surf(struct gkyl_gk_collisionless_flux *up, double* flux_surf_ext_d = gkyl_array_fetch(flux_surf, loc_phase_ext); cflrate_ext_d[0] += up->flux_surf_edge_up[dir](xc, up->phase_grid.dx, vmap_d, vmapSq_d, up->charge, up->mass, - dgs, gkdgs, bmag_d, jacgeo_rat_surfL_d, jacgeo_rat_surfR_d, phi_d, fL, fR, flux_surf_ext_d); + dgs, gkdgs, bmag_d, jacgeo_rat_surfL_d, jacgeo_rat_surfR_d, phi_d, apar_d, apardot_d, fL, fR, flux_surf_ext_d); } } } @@ -185,6 +209,8 @@ void gkyl_gk_collisionless_flux_surf(struct gkyl_gk_collisionless_flux *up, const double *bmag_d = gkyl_array_cfetch(up->gk_geom->geo_corn.bmag, loc_conf); const double *phi_d = gkyl_array_cfetch(phi, loc_conf); + const double *apar_d = gkyl_array_cfetch(apar, loc_conf); + const double *apardot_d = gkyl_array_cfetch(apardot, loc_conf); const double *vmap_d = gkyl_array_cfetch(up->vel_map->vmap, loc_vel); const double *vmapSq_d = gkyl_array_cfetch(up->vel_map->vmap_sq, loc_vel); @@ -207,7 +233,7 @@ void gkyl_gk_collisionless_flux_surf(struct gkyl_gk_collisionless_flux *up, const struct gkyl_dg_vol_geom *dgv = gkyl_dg_geom_get_vol(up->dg_geom, idx); const struct gkyl_gk_dg_vol_geom *gkdgv = gkyl_gk_dg_geom_get_vol(up->gk_dg_geom, idx); cflrate_d[0] += up->flux_surfvpar[0](xc, up->phase_grid.dx, vpL, vpR, vmap_d, vmapSq_d, up->charge, up->mass, - dgv, gkdgv, bmag_d, phi_d, fL, fR, flux_surf_d); + dgv, gkdgv, bmag_d, phi_d, apar_d, apardot_d, fL, fR, flux_surf_d); } } diff --git a/gyrokinetic/zero/gk_collisionless_flux_cu.cu b/gyrokinetic/zero/gk_collisionless_flux_cu.cu index 8e7baf2d67..648aa93999 100644 --- a/gyrokinetic/zero/gk_collisionless_flux_cu.cu +++ b/gyrokinetic/zero/gk_collisionless_flux_cu.cu @@ -19,6 +19,7 @@ __global__ void gkyl_gk_collisionless_flux_surf_conf_cu_kernel(struct gkyl_gk_collisionless_flux *up, struct gkyl_range conf_range, struct gkyl_range phase_range, struct gkyl_range conf_ext_range, struct gkyl_range phase_ext_range, const struct gkyl_array *phi, + const struct gkyl_array *apar, const struct gkyl_array *apardot, const struct gkyl_array *fin, struct gkyl_array* flux_surf, struct gkyl_array *cflrate) { int pdim = up->pdim; @@ -48,6 +49,8 @@ gkyl_gk_collisionless_flux_surf_conf_cu_kernel(struct gkyl_gk_collisionless_flux const double *bmag_d = (const double*) gkyl_array_cfetch(up->gk_geom->geo_corn.bmag, loc_conf); const double *phi_d = (const double*) gkyl_array_cfetch(phi, loc_conf); + const double *apar_d = (const double*) gkyl_array_cfetch(apar, loc_conf); + const double *apardot_d = (const double*) gkyl_array_cfetch(apardot, loc_conf); const double *vmap_d = (const double*) gkyl_array_cfetch(up->vel_map->vmap, loc_vel); const double *vmapSq_d = (const double*) gkyl_array_cfetch(up->vel_map->vmap_sq, loc_vel); @@ -71,11 +74,11 @@ gkyl_gk_collisionless_flux_surf_conf_cu_kernel(struct gkyl_gk_collisionless_flux if (idx[dir] == phase_range.lower[dir]) { // Lower domain/block boundary. cflrate_d[0] += up->flux_surf_edge_lo[dir](xc, up->phase_grid.dx, vmap_d, vmapSq_d, up->charge, up->mass, - dgs, gkdgs, bmag_d, jacgeo_rat_surfL_d, jacgeo_rat_surfR_d, phi_d, fL, fR, flux_surf_d); + dgs, gkdgs, bmag_d, jacgeo_rat_surfL_d, jacgeo_rat_surfR_d, phi_d, apar_d, apardot_d, fL, fR, flux_surf_d); } else { // Interior, lower cell surface. cflrate_d[0] += up->flux_surf[dir](xc, up->phase_grid.dx, vmap_d, vmapSq_d, up->charge, up->mass, - dgs, gkdgs, bmag_d, jacgeo_rat_surfL_d, jacgeo_rat_surfR_d, phi_d, fL, fR, flux_surf_d); + dgs, gkdgs, bmag_d, jacgeo_rat_surfL_d, jacgeo_rat_surfR_d, phi_d, apar_d, apardot_d, fL, fR, flux_surf_d); } // If the phase space index is at the local configuration space upper value, we @@ -101,7 +104,7 @@ gkyl_gk_collisionless_flux_surf_conf_cu_kernel(struct gkyl_gk_collisionless_flux double* flux_surf_ext_d = (double*) gkyl_array_fetch(flux_surf, loc_phase_ext); cflrate_ext_d[0] = up->flux_surf_edge_up[dir](xc, up->phase_grid.dx, vmap_d, vmapSq_d, up->charge, up->mass, - dgs, gkdgs, bmag_d, jacgeo_rat_surfL_d, jacgeo_rat_surfR_d, phi_d, fL, fR, flux_surf_ext_d); + dgs, gkdgs, bmag_d, jacgeo_rat_surfL_d, jacgeo_rat_surfR_d, phi_d, apar_d, apardot_d, fL, fR, flux_surf_ext_d); } } } @@ -111,8 +114,8 @@ __global__ void gkyl_gk_collisionless_flux_surf_surfvpar_cu_kernel(struct gkyl_gk_collisionless_flux *up, struct gkyl_range conf_range, struct gkyl_range phase_range, struct gkyl_range conf_ext_range, struct gkyl_range phase_ext_range, struct gkyl_range vpar_range, - const struct gkyl_array *phi, const struct gkyl_array *fin, - struct gkyl_array* flux_surf, struct gkyl_array *cflrate) + const struct gkyl_array *phi, const struct gkyl_array *apar, const struct gkyl_array *apardot, + const struct gkyl_array *fin, struct gkyl_array* flux_surf, struct gkyl_array *cflrate) { int pdim = up->pdim; int cdim = up->cdim; @@ -142,6 +145,8 @@ gkyl_gk_collisionless_flux_surf_surfvpar_cu_kernel(struct gkyl_gk_collisionless_ const double *bmag_d = (const double*) gkyl_array_cfetch(up->gk_geom->geo_corn.bmag, loc_conf); const double *phi_d = (const double*) gkyl_array_cfetch(phi, loc_conf); + const double *apar_d = (const double*) gkyl_array_cfetch(apar, loc_conf); + const double *apardot_d = (const double*) gkyl_array_cfetch(apardot, loc_conf); const double *vmap_d = (const double*) gkyl_array_cfetch(up->vel_map->vmap, loc_vel); const double *vmapSq_d = (const double*) gkyl_array_cfetch(up->vel_map->vmap_sq, loc_vel); @@ -167,7 +172,7 @@ gkyl_gk_collisionless_flux_surf_surfvpar_cu_kernel(struct gkyl_gk_collisionless_ cflrate_d[0] += up->flux_surfvpar[0](xc, up->phase_grid.dx, vpL, vpR, vmap_d, vmapSq_d, up->charge, up->mass, - dgv, gkdgv, bmag_d, phi_d, fL, fR, flux_surf_d); + dgv, gkdgv, bmag_d, phi_d, apar_d, apardot_d, fL, fR, flux_surf_d); } } @@ -175,10 +180,10 @@ gkyl_gk_collisionless_flux_surf_surfvpar_cu_kernel(struct gkyl_gk_collisionless_ void gkyl_gk_collisionless_flux_surf_cu(struct gkyl_gk_collisionless_flux *up, const struct gkyl_range *conf_range, const struct gkyl_range *phase_range, const struct gkyl_range *conf_ext_range, const struct gkyl_range *phase_ext_range, const struct gkyl_array *phi, - const struct gkyl_array *fin, struct gkyl_array* flux_surf, struct gkyl_array* cflrate) + const struct gkyl_array *apar, const struct gkyl_array *apardot, const struct gkyl_array *fin, struct gkyl_array* flux_surf, struct gkyl_array* cflrate) { gkyl_gk_collisionless_flux_surf_conf_cu_kernel<<volume, GKYL_DEFAULT_NUM_THREADS>>>(up->on_dev, - *conf_range, *phase_range, *conf_ext_range, *phase_ext_range, phi->on_dev, fin->on_dev, + *conf_range, *phase_range, *conf_ext_range, *phase_ext_range, phi->on_dev, apar->on_dev, apardot->on_dev, fin->on_dev, flux_surf->on_dev, cflrate->on_dev); struct gkyl_range vpar_range; @@ -191,7 +196,7 @@ void gkyl_gk_collisionless_flux_surf_cu(struct gkyl_gk_collisionless_flux *up, sublower[up->cdim] += 1; gkyl_sub_range_init(&vpar_range, phase_ext_range, sublower, subupper); gkyl_gk_collisionless_flux_surf_surfvpar_cu_kernel<<>>(up->on_dev, - *conf_range, *phase_range, *conf_ext_range, *phase_ext_range, vpar_range, phi->on_dev, fin->on_dev, + *conf_range, *phase_range, *conf_ext_range, *phase_ext_range, vpar_range, phi->on_dev, apar->on_dev, apardot->on_dev, fin->on_dev, flux_surf->on_dev, cflrate->on_dev); } @@ -200,12 +205,31 @@ void gkyl_gk_collisionless_flux_surf_cu(struct gkyl_gk_collisionless_flux *up, // Doing function pointer stuff in here avoids troublesome cudaMemcpyFromSymbol __global__ static void gk_collisionless_flux_set_cu_dev_ptrs(struct gkyl_gk_collisionless_flux *up, - int cdim, int vdim, int poly_order, enum gkyl_gk_collisionless_type type, + int em, int cdim, int vdim, int poly_order, enum gkyl_gk_collisionless_type type, + bool no_by, bool complete_em, const enum gkyl_gyrokinetic_bc_type *bctype_conf) { - if (type == GKYL_GK_COLLISIONLESS_ES) { + + // Set none kernels by default + for (int d=0; dflux_surf[d] = gk_collisionless_flux_surfconf_none; + up->flux_surf_edge_lo[d] = gk_collisionless_flux_surfconf_none; + up->flux_surf_edge_up[d] = gk_collisionless_flux_surfconf_none; + } + up->flux_surfvpar[0] = gk_collisionless_flux_surfvpar_none; + + // Choose appropriate kernels. + if (no_by) { + for (int d=0; dflux_surf[d] = choose_gk_collisionless_flux_no_by_surf_conf_kern(d, cdim, vdim, poly_order, GKYL_BC_GK_SPECIES_ABSORB); + up->flux_surf_edge_lo[d] = choose_gk_collisionless_flux_no_by_surf_conf_kern(d, cdim, vdim, + poly_order, bctype_conf[d]); + up->flux_surf_edge_up[d] = choose_gk_collisionless_flux_no_by_edge_surf_conf_kern(d, cdim, vdim, + poly_order, bctype_conf[GKYL_MAX_CDIM+d]); + } + up->flux_surfvpar[0] = choose_gk_collisionless_flux_no_by_surf_vpar_kern(cdim, vdim, poly_order); + } else { for (int d=0; dflux_surf kernel doesn't matter as long as it's not SKIP. up->flux_surf[d] = choose_gk_collisionless_flux_surf_conf_kern(d, cdim, vdim, poly_order, GKYL_BC_GK_SPECIES_ABSORB); up->flux_surf_edge_lo[d] = choose_gk_collisionless_flux_surf_conf_kern(d, cdim, vdim, poly_order, bctype_conf[d]); @@ -214,16 +238,20 @@ gk_collisionless_flux_set_cu_dev_ptrs(struct gkyl_gk_collisionless_flux *up, } up->flux_surfvpar[0] = choose_gk_collisionless_flux_surf_vpar_kern(cdim, vdim, poly_order); } - else if (type == GKYL_GK_COLLISIONLESS_ES_NO_BY) { - for (int d=0; dflux_surf kernel doesn't matter as long as it's not SKIP. - up->flux_surf[d] = choose_gk_collisionless_flux_no_by_surf_conf_kern(d, cdim, vdim, poly_order, GKYL_BC_GK_SPECIES_ABSORB); - up->flux_surf_edge_lo[d] = choose_gk_collisionless_flux_no_by_surf_conf_kern(d, cdim, vdim, - poly_order, bctype_conf[d]); - up->flux_surf_edge_up[d] = choose_gk_collisionless_flux_no_by_edge_surf_conf_kern(d, cdim, vdim, - poly_order, bctype_conf[GKYL_MAX_CDIM+d]); + + // If EM, we split the flux contribution between two updaters. + if (em) { + if (complete_em) { + // To complete RHS star. + for (int d=0; dflux_surf[d] = gk_collisionless_flux_surfconf_none; + up->flux_surf_edge_lo[d] = gk_collisionless_flux_surfconf_none; + up->flux_surf_edge_up[d] = gk_collisionless_flux_surfconf_none; + } + } else { + // To compute RHS star. + up->flux_surfvpar[0] = gk_collisionless_flux_surfvpar_none; } - up->flux_surfvpar[0] = choose_gk_collisionless_flux_no_by_surf_vpar_kern(cdim, vdim, poly_order); } } @@ -231,7 +259,8 @@ gkyl_gk_collisionless_flux* gkyl_gk_collisionless_flux_cu_dev_new(const struct gkyl_rect_grid *phase_grid, const struct gkyl_basis *conf_basis, const struct gkyl_basis *phase_basis, const double charge, const double mass, - enum gkyl_gk_collisionless_type type, + enum gkyl_gk_collisionless_type type, + const bool no_by, const bool complete_em, const struct gk_geometry *gk_geom, const struct gkyl_dg_geom *dg_geom, const struct gkyl_gk_dg_geom *gk_dg_geom, const struct gkyl_velocity_map *vel_map, const enum gkyl_gyrokinetic_bc_type *bctype_conf) @@ -248,6 +277,7 @@ gkyl_gk_collisionless_flux_cu_dev_new(const struct gkyl_rect_grid *phase_grid, up->charge = charge; up->mass = mass; + int em = (type == GKYL_GK_COLLISIONLESS_EM) ? 1 : 0; // Acquire pointers to on_dev objects so memcpy below copies those too. struct gk_geometry *geom_ho = gkyl_gk_geometry_acquire(gk_geom); @@ -270,7 +300,7 @@ gkyl_gk_collisionless_flux_cu_dev_new(const struct gkyl_rect_grid *phase_grid, struct gkyl_gk_collisionless_flux *up_cu = (struct gkyl_gk_collisionless_flux*) gkyl_cu_malloc(sizeof(*up_cu)); gkyl_cu_memcpy(up_cu, up, sizeof(gkyl_gk_collisionless_flux), GKYL_CU_MEMCPY_H2D); - gk_collisionless_flux_set_cu_dev_ptrs<<<1,1>>>(up_cu, cdim, vdim, poly_order, type, bctype_conf_dev); + gk_collisionless_flux_set_cu_dev_ptrs<<<1,1>>>(up_cu, em, cdim, vdim, poly_order, type, no_by, complete_em, bctype_conf_dev); gkyl_cu_free(bctype_conf_dev); @@ -284,4 +314,4 @@ gkyl_gk_collisionless_flux_cu_dev_new(const struct gkyl_rect_grid *phase_grid, up->vel_map = vel_map_ho; return up; -} +} \ No newline at end of file diff --git a/gyrokinetic/zero/gk_dg_geom.c b/gyrokinetic/zero/gk_dg_geom.c index 43edc7fd6a..6348a9ef12 100644 --- a/gyrokinetic/zero/gk_dg_geom.c +++ b/gyrokinetic/zero/gk_dg_geom.c @@ -160,6 +160,21 @@ gkyl_gk_dg_geom_populate_vol(struct gkyl_dg_geom *dg_geom, struct gkyl_gk_dg_geo gkdgv[qvloc].dualcurlbhat.x[0] = global_val[0]; gkdgv[qvloc].dualcurlbhat.x[1] = global_val[1]; gkdgv[qvloc].dualcurlbhat.x[2] = global_val[2]; + + // set g_ij components + global_val = gkyl_array_cfetch(gk_geom->geo_int.g_ij_nodal, global_loc); + gkdgv[qvloc].g_13 = global_val[2]; // g_{13} + gkdgv[qvloc].g_23 = global_val[4]; // g_{23} + gkdgv[qvloc].g_33 = global_val[5]; // g_{33} + + // set magnitude of e_3 + gkdgv[qvloc].mag_e_3 = sqrt(gkdgv[qvloc].g_33); // |e_3| + + // set b_i/J_c/B + global_val = gkyl_array_cfetch(gk_geom->geo_int.bioverJB_nodal, global_loc); + gkdgv[qvloc].bioverJB.x[0] = global_val[0]; + gkdgv[qvloc].bioverJB.x[1] = global_val[1]; + gkdgv[qvloc].bioverJB.x[2] = global_val[2]; } } } diff --git a/gyrokinetic/zero/gk_geometry.c b/gyrokinetic/zero/gk_geometry.c index a85d251843..463dd0a548 100644 --- a/gyrokinetic/zero/gk_geometry.c +++ b/gyrokinetic/zero/gk_geometry.c @@ -532,6 +532,7 @@ gkyl_gk_geometry_deflate(const struct gk_geometry* up_3d, struct gkyl_gk_geometr gkyl_deflate_geo_advance_nodal(deflator, &up_3d->nrange_int, &up->nrange_int, up_3d->geo_int.B3_nodal, up->geo_int.B3_nodal, 1); gkyl_deflate_geo_advance_nodal(deflator, &up_3d->nrange_int, &up->nrange_int, up_3d->geo_int.bmag_nodal, up->geo_int.bmag_nodal, 1); gkyl_deflate_geo_advance_nodal(deflator, &up_3d->nrange_int, &up->nrange_int, up_3d->geo_int.dualcurlbhat_nodal, up->geo_int.dualcurlbhat_nodal, 3); + gkyl_deflate_geo_advance_nodal(deflator, &up_3d->nrange_int, &up->nrange_int, up_3d->geo_int.g_ij_nodal, up->geo_int.g_ij_nodal, 6); gkyl_deflate_geo_release(deflator); if (up->grid.ndim==1) { diff --git a/gyrokinetic/zero/gkyl_dg_gyrokinetic.h b/gyrokinetic/zero/gkyl_dg_gyrokinetic.h index 19648cb6d9..b230a71330 100644 --- a/gyrokinetic/zero/gkyl_dg_gyrokinetic.h +++ b/gyrokinetic/zero/gkyl_dg_gyrokinetic.h @@ -27,6 +27,8 @@ struct gkyl_dg_gyrokinetic_auxfields { * @param charge Species charge * @param mass Species mass * @param collless_type Type of collisionless terms. + * @param no_by Whether to neglect the toroidal field (set b_y=0). + * @param complete_em Whether to compute RHS star (i.e. ES + Apardot) RHS for electromagnetic simulations. * @param gk_geom Geometry struct * @param vel_map Velocity space mapping object. * @param use_gpu Boolean to determine if gyrokinetic equation object is on device @@ -35,9 +37,10 @@ struct gkyl_dg_gyrokinetic_auxfields { struct gkyl_dg_eqn* gkyl_dg_gyrokinetic_new(const struct gkyl_basis *cbasis, const struct gkyl_basis *pbasis, const struct gkyl_range *conf_range, const struct gkyl_range *phase_range, const double charge, const double mass, - enum gkyl_gk_collisionless_type collless_type, const struct gk_geometry *gk_geom, + enum gkyl_gk_collisionless_type collless_type, const bool no_by, const bool complete_em, const struct gk_geometry *gk_geom, const struct gkyl_velocity_map *vel_map, bool use_gpu); + /** * Set the auxiliary fields (e.g. EM fields) needed in computing * gyrokinetic updates. diff --git a/gyrokinetic/zero/gkyl_dg_gyrokinetic_priv.h b/gyrokinetic/zero/gkyl_dg_gyrokinetic_priv.h index ae8f5660ce..af3131daec 100644 --- a/gyrokinetic/zero/gkyl_dg_gyrokinetic_priv.h +++ b/gyrokinetic/zero/gkyl_dg_gyrokinetic_priv.h @@ -12,6 +12,22 @@ #include // Types for various kernels. + +typedef double (*dg_gyrokinetic_vol_es_t)(const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const double *bmag, const double *phi, + const double *dualcurlbhatoverB, const double *rtg33inv, const double* bioverJB, + const double *fin, double* GKYL_RESTRICT out); + +typedef double (*dg_gyrokinetic_vol_add_apar_t)(const double *w, const double *dxv, + const double *vmap, const double *vmapSq, const double q_, const double m_, + const double *bmag, const double *jacobtot_inv, const double *dualcurlbhatoverB, const double *bioverJB, const double *b_i, + const double *phi, const double *apar, const double *fin, double* GKYL_RESTRICT out); + +typedef double (*dg_gyrokinetic_vol_add_apardot_t)(const double *vmap, + const double q_, const double m_, + const double *apardot, const double *fin, double* GKYL_RESTRICT out); + typedef double (*dg_gyrokinetic_surf_t)( const double *w, const double *dxv, const double *vmap_prime_l, const double *vmap_prime_c, const double *vmap_prime_r, const double *flux_surf_l, const double *flux_surf_r, double* GKYL_RESTRICT out @@ -33,6 +49,9 @@ static struct { int vdim[3]; } cv_index[] = { // for use in kernel tables typedef struct { vol_termf_t kernels[3]; } gkyl_dg_gyrokinetic_vol_kern_list; +typedef struct { dg_gyrokinetic_vol_es_t kernels[3]; } gkyl_dg_gyrokinetic_vol_es_kern_list; +typedef struct { dg_gyrokinetic_vol_add_apar_t kernels[3]; } gkyl_dg_gyrokinetic_vol_add_apar_kern_list; +typedef struct { dg_gyrokinetic_vol_add_apardot_t kernels[3]; } gkyl_dg_gyrokinetic_vol_add_apardot_kern_list; typedef struct { dg_gyrokinetic_surf_t kernels[3]; } gkyl_dg_gyrokinetic_surf_kern_list; typedef struct { dg_gyrokinetic_boundary_surf_t kernels[3]; } gkyl_dg_gyrokinetic_boundary_surf_kern_list; @@ -40,6 +59,9 @@ struct dg_gyrokinetic { struct gkyl_dg_eqn eqn; // Base object. int cdim; // Config-space dimensions. int pdim; // Phase-space dimensions. + dg_gyrokinetic_vol_es_t vol_es_kernel; // Electrostatic contribution to volume term. + dg_gyrokinetic_vol_add_apar_t vol_add_apar_kernel; // Additional volume term for Apar contribution. + dg_gyrokinetic_vol_add_apardot_t vol_add_apardot_kernel; // Additional volume term for Apar contribution. dg_gyrokinetic_surf_t surf[4]; // Surface terms. dg_gyrokinetic_boundary_surf_t boundary_surf[4]; // Surface terms for velocity boundary. struct gkyl_range conf_range; // Configuration space range. @@ -57,7 +79,7 @@ struct dg_gyrokinetic { GKYL_CU_DH static double -kernel_dg_gyrokinetic_vol_1x1v_ser_p1(const struct gkyl_dg_eqn *eqn, const double* xc, const double* dx, +kernel_dg_gyrokinetic_vol(const struct gkyl_dg_eqn *eqn, const double* xc, const double* dx, const int* idx, const double* qIn, double* GKYL_RESTRICT qRhsOut) { @@ -69,170 +91,113 @@ kernel_dg_gyrokinetic_vol_1x1v_ser_p1(const struct gkyl_dg_eqn *eqn, const doubl long cidx = gkyl_range_idx(&gyrokinetic->conf_range, idx); long vidx = gkyl_range_idx(&gyrokinetic->vel_map->local_vel, vel_idx); long pidx = gkyl_range_idx(&gyrokinetic->phase_range, idx); - return dg_gyrokinetic_vol_1x1v_ser_p1(xc, dx, - (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap, vidx), - (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap_sq, vidx), - gyrokinetic->charge, gyrokinetic->mass, - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_corn.bmag, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.phi, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.dualcurlbhatoverB, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.rtg33inv, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.bioverJB, cidx), - qIn, qRhsOut); + double cfl = 0.0; + + const double *phi = (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.phi, cidx); + const double *apar = (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.apar, cidx); + const double *apardot = (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.apardot, cidx); + const double *vm = (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap, vidx); + const double *vm_sq = (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap_sq, vidx); + const double *bmag = (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_corn.bmag, cidx); + // The jacobtot_inv is not used anymore. + const double *jacobtot_inv = (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.jacobtot_inv, cidx); + const double *b_i = (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.b_i, cidx); + const double *dualcurlbhatoverB = (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.dualcurlbhatoverB, cidx); + const double *rtg33inv = (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.rtg33inv, cidx); + const double *bioverJB = (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.bioverJB, cidx); + + // Electrostatic contribution to volume term. + cfl += gyrokinetic->vol_es_kernel(xc, dx, vm, vm_sq, gyrokinetic->charge, gyrokinetic->mass, + bmag, phi, dualcurlbhatoverB, rtg33inv, bioverJB, qIn, qRhsOut); + // Add Apar contribution to volume term if needed. + cfl += gyrokinetic->vol_add_apar_kernel(xc, dx, vm, vm_sq, gyrokinetic->charge, gyrokinetic->mass, + bmag, jacobtot_inv, dualcurlbhatoverB, bioverJB, b_i, phi, apar, qIn, qRhsOut); + // Add Apardot contribution to volume term if needed. + cfl += gyrokinetic->vol_add_apardot_kernel( vm, gyrokinetic->charge, gyrokinetic->mass, + apardot, qIn, qRhsOut); + return cfl; } -GKYL_CU_DH -static double -kernel_dg_gyrokinetic_vol_1x2v_ser_p1(const struct gkyl_dg_eqn *eqn, const double* xc, const double* dx, - const int* idx, const double* qIn, double* GKYL_RESTRICT qRhsOut) -{ - struct dg_gyrokinetic *gyrokinetic = container_of(eqn, struct dg_gyrokinetic, eqn); - - int vel_idx[2]; - for (int d=gyrokinetic->cdim; dpdim; d++) vel_idx[d-gyrokinetic->cdim] = idx[d]; +// To turn off terms (used in EM). - long cidx = gkyl_range_idx(&gyrokinetic->conf_range, idx); - long vidx = gkyl_range_idx(&gyrokinetic->vel_map->local_vel, vel_idx); - long pidx = gkyl_range_idx(&gyrokinetic->phase_range, idx); - return dg_gyrokinetic_vol_1x2v_ser_p1(xc, dx, - (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap, vidx), - (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap_sq, vidx), - gyrokinetic->charge, gyrokinetic->mass, - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_corn.bmag, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.phi, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.dualcurlbhatoverB, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.rtg33inv, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.bioverJB, cidx), - qIn, qRhsOut); +GKYL_CU_DH +static double +dg_gyrokinetic_vol_none(const double *w, const double *dxv, const double *vmap, const double *vmapSq, + const double q_, const double m_, const double *bmag, const double *phi, + const double *dualcurlbhatoverB, const double *rtg33inv, const double *bioverJB, + const double *fin, double* GKYL_RESTRICT out) +{ + return 0.; } -GKYL_CU_DH -static double -kernel_dg_gyrokinetic_vol_2x2v_ser_p1(const struct gkyl_dg_eqn *eqn, const double* xc, const double* dx, - const int* idx, const double* qIn, double* GKYL_RESTRICT qRhsOut) -{ - struct dg_gyrokinetic *gyrokinetic = container_of(eqn, struct dg_gyrokinetic, eqn); - - int vel_idx[2]; - for (int d=gyrokinetic->cdim; dpdim; d++) vel_idx[d-gyrokinetic->cdim] = idx[d]; - - long cidx = gkyl_range_idx(&gyrokinetic->conf_range, idx); - long vidx = gkyl_range_idx(&gyrokinetic->vel_map->local_vel, vel_idx); - long pidx = gkyl_range_idx(&gyrokinetic->phase_range, idx); - return dg_gyrokinetic_vol_2x2v_ser_p1(xc, dx, - (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap, vidx), - (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap_sq, vidx), - gyrokinetic->charge, gyrokinetic->mass, - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_corn.bmag, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.phi, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.dualcurlbhatoverB, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.rtg33inv, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.bioverJB, cidx), - qIn, qRhsOut); +GKYL_CU_DH +static double +dg_gyrokinetic_add_apar_vol_none(const double *w, const double *dxv, const double *vmap, const double *vmapSq, + const double q_, const double m_, const double *bmag, const double *jacobtot_inv, + const double *dualcurlbhatoverB, const double *bioverJB, const double *b_i, const double *phi, + const double *apar, const double *fin, double* GKYL_RESTRICT out) +{ + return 0.; } -GKYL_CU_DH -static double -kernel_dg_gyrokinetic_vol_3x2v_ser_p1(const struct gkyl_dg_eqn *eqn, const double* xc, const double* dx, - const int* idx, const double* qIn, double* GKYL_RESTRICT qRhsOut) -{ - struct dg_gyrokinetic *gyrokinetic = container_of(eqn, struct dg_gyrokinetic, eqn); +GKYL_CU_DH +static double +dg_gyrokinetic_add_apardot_vol_none(const double *vmap, const double q_, const double m_, + const double *apardot, const double *fin, double* GKYL_RESTRICT out) +{ + return 0.; +} - int vel_idx[2]; - for (int d=gyrokinetic->cdim; dpdim; d++) vel_idx[d-gyrokinetic->cdim] = idx[d]; - long cidx = gkyl_range_idx(&gyrokinetic->conf_range, idx); - long vidx = gkyl_range_idx(&gyrokinetic->vel_map->local_vel, vel_idx); - long pidx = gkyl_range_idx(&gyrokinetic->phase_range, idx); - return dg_gyrokinetic_vol_3x2v_ser_p1(xc, dx, - (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap, vidx), - (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap_sq, vidx), - gyrokinetic->charge, gyrokinetic->mass, - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_corn.bmag, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.phi, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.dualcurlbhatoverB, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.rtg33inv, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.bioverJB, cidx), - qIn, qRhsOut); -} - -// Volume kernel list. +// Volume electrostatic kernel list. GKYL_CU_D -static const gkyl_dg_gyrokinetic_vol_kern_list ser_vol_kernels[] = { +static const gkyl_dg_gyrokinetic_vol_es_kern_list ser_vol_es_kernels[] = { // 1x kernels - { NULL, kernel_dg_gyrokinetic_vol_1x1v_ser_p1, NULL }, // 0 - { NULL, kernel_dg_gyrokinetic_vol_1x2v_ser_p1, NULL }, // 1 + { NULL, dg_gyrokinetic_vol_1x1v_ser_p1, NULL }, // 0 + { NULL, dg_gyrokinetic_vol_1x2v_ser_p1, NULL }, // 1 // 2x kernels - { NULL, kernel_dg_gyrokinetic_vol_2x2v_ser_p1, NULL }, // 2 + { NULL, dg_gyrokinetic_vol_2x2v_ser_p1, NULL }, // 2 // 3x kernels - { NULL, kernel_dg_gyrokinetic_vol_3x2v_ser_p1, NULL }, // 3 + { NULL, dg_gyrokinetic_vol_3x2v_ser_p1, NULL }, // 3 }; // // Serendipity volume kernels general geometry, no toroidal field (by=0) // Need to be separated like this for GPU build // +GKYL_CU_D +static const gkyl_dg_gyrokinetic_vol_es_kern_list ser_no_by_vol_es_kernels[] = { + // 1x kernels + { NULL, dg_gyrokinetic_vol_1x1v_ser_p1, NULL }, // 0 + { NULL, dg_gyrokinetic_vol_1x2v_ser_p1, NULL }, // 1 + // 2x kernels + { NULL, dg_gyrokinetic_no_by_vol_2x2v_ser_p1, NULL }, // 2 + // 3x kernels + { NULL, dg_gyrokinetic_no_by_vol_3x2v_ser_p1, NULL }, // 3 +}; -GKYL_CU_DH -static double -kernel_dg_gyrokinetic_no_by_vol_2x2v_ser_p1(const struct gkyl_dg_eqn *eqn, const double* xc, const double* dx, - const int* idx, const double* qIn, double* GKYL_RESTRICT qRhsOut) -{ - struct dg_gyrokinetic *gyrokinetic = container_of(eqn, struct dg_gyrokinetic, eqn); - - int vel_idx[2]; - for (int d=gyrokinetic->cdim; dpdim; d++) vel_idx[d-gyrokinetic->cdim] = idx[d]; - - long cidx = gkyl_range_idx(&gyrokinetic->conf_range, idx); - long vidx = gkyl_range_idx(&gyrokinetic->vel_map->local_vel, vel_idx); - long pidx = gkyl_range_idx(&gyrokinetic->phase_range, idx); - return dg_gyrokinetic_no_by_vol_2x2v_ser_p1(xc, dx, - (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap, vidx), - (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap_sq, vidx), - gyrokinetic->charge, gyrokinetic->mass, - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_corn.bmag, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.phi, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.dualcurlbhatoverB, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.rtg33inv, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.bioverJB, cidx), - qIn, qRhsOut); -} - -GKYL_CU_DH -static double -kernel_dg_gyrokinetic_no_by_vol_3x2v_ser_p1(const struct gkyl_dg_eqn *eqn, const double* xc, const double* dx, - const int* idx, const double* qIn, double* GKYL_RESTRICT qRhsOut) -{ - struct dg_gyrokinetic *gyrokinetic = container_of(eqn, struct dg_gyrokinetic, eqn); - - int vel_idx[2]; - for (int d=gyrokinetic->cdim; dpdim; d++) vel_idx[d-gyrokinetic->cdim] = idx[d]; - - long cidx = gkyl_range_idx(&gyrokinetic->conf_range, idx); - long vidx = gkyl_range_idx(&gyrokinetic->vel_map->local_vel, vel_idx); - long pidx = gkyl_range_idx(&gyrokinetic->phase_range, idx); - return dg_gyrokinetic_no_by_vol_3x2v_ser_p1(xc, dx, - (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap, vidx), - (const double*) gkyl_array_cfetch(gyrokinetic->vel_map->vmap_sq, vidx), - gyrokinetic->charge, gyrokinetic->mass, - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_corn.bmag, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->auxfields.phi, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.dualcurlbhatoverB, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.rtg33inv, cidx), - (const double*) gkyl_array_cfetch(gyrokinetic->gk_geom->geo_int.bioverJB, cidx), - qIn, qRhsOut); -} +// Electromagnetic serendipity volume kernels general geometry. +GKYL_CU_D +static const gkyl_dg_gyrokinetic_vol_add_apar_kern_list ser_add_apar_vol_kernels[] = { + // 1x kernels + { NULL, dg_gyrokinetic_add_apar_vol_1x1v_ser_p1, NULL }, // 0 + { NULL, dg_gyrokinetic_add_apar_vol_1x2v_ser_p1, NULL }, // 1 + // 2x kernels + { NULL, dg_gyrokinetic_add_apar_vol_2x2v_ser_p1, NULL }, // 2 + // 3x kernels + { NULL, dg_gyrokinetic_add_apar_vol_3x2v_ser_p1, NULL }, // 3 +}; -// Volume kernel list. +// Electromagnetic volume kernel list (apardot). GKYL_CU_D -static const gkyl_dg_gyrokinetic_vol_kern_list ser_no_by_vol_kernels[] = { +static const gkyl_dg_gyrokinetic_vol_add_apardot_kern_list ser_add_apardot_vol_kernels[] = { // 1x kernels - { NULL, kernel_dg_gyrokinetic_vol_1x1v_ser_p1, NULL }, // 0 - { NULL, kernel_dg_gyrokinetic_vol_1x2v_ser_p1, NULL }, // 1 + { NULL, dg_gyrokinetic_add_apardot_vol_1x1v_ser_p1, NULL }, // 0 + { NULL, dg_gyrokinetic_add_apardot_vol_1x2v_ser_p1, NULL }, // 1 // 2x kernels - { NULL, kernel_dg_gyrokinetic_no_by_vol_2x2v_ser_p1, NULL }, // 2 + { NULL, dg_gyrokinetic_add_apardot_vol_2x2v_ser_p1, NULL }, // 2 // 3x kernels - { NULL, kernel_dg_gyrokinetic_no_by_vol_3x2v_ser_p1, NULL }, // 3 + { NULL, dg_gyrokinetic_add_apardot_vol_3x2v_ser_p1, NULL }, // 3 }; // @@ -437,7 +402,7 @@ boundary_diag(const struct gkyl_dg_eqn *eqn, struct gkyl_dg_eqn* gkyl_dg_gyrokinetic_cu_dev_new(const struct gkyl_basis *cbasis, const struct gkyl_basis *pbasis, const struct gkyl_range *conf_range, const struct gkyl_range *phase_range, const double charge, const double mass, enum gkyl_gk_collisionless_type collless_type, - const struct gk_geometry *gk_geom, const struct gkyl_velocity_map *vel_map); + const bool no_by, const bool complete_em, const struct gk_geometry *gk_geom, const struct gkyl_velocity_map *vel_map); /** * CUDA device function to set the auxiliary fields (e.g. geometry & EM fields) diff --git a/gyrokinetic/zero/gkyl_dg_updater_gyrokinetic.h b/gyrokinetic/zero/gkyl_dg_updater_gyrokinetic.h index 304444287c..d2d454ba23 100644 --- a/gyrokinetic/zero/gkyl_dg_updater_gyrokinetic.h +++ b/gyrokinetic/zero/gkyl_dg_updater_gyrokinetic.h @@ -29,6 +29,8 @@ struct gkyl_dg_updater_gyrokinetic_tm { * @param charge Species charge * @param mass Species mass * @param collless_type Type of collisionless terms. + * @param no_by Whether to neglect the toroidal field (set b_y=0). + * @param complete_em Whether it is meant to complete the RHS after partial EM update. * @param gk_geom Geometry struct * @param vel_map Velocity space mapping object. * @param aux_inp Void pointer to auxiliary fields. Void to be flexible to different auxfields structs @@ -39,8 +41,8 @@ gkyl_dg_updater_gyrokinetic* gkyl_dg_updater_gyrokinetic_new(const struct gkyl_r const struct gkyl_basis *cbasis, const struct gkyl_basis *pbasis, const struct gkyl_range *conf_range, const struct gkyl_range *phase_range, const bool *is_zero_flux_bc, double charge, double mass, - enum gkyl_gk_collisionless_type collless_type, const struct gk_geometry *gk_geom, - const struct gkyl_velocity_map *vel_map, void *aux_inp, bool use_gpu); + enum gkyl_gk_collisionless_type collless_type, const bool no_by, const bool complete_em, + const struct gk_geometry *gk_geom, const struct gkyl_velocity_map *vel_map, void *aux_inp, bool use_gpu); /** * Acquire gyrokinetic equation object. diff --git a/gyrokinetic/zero/gkyl_dg_updater_gyrokinetic_priv.h b/gyrokinetic/zero/gkyl_dg_updater_gyrokinetic_priv.h index 4a31af8325..0cf74cda77 100644 --- a/gyrokinetic/zero/gkyl_dg_updater_gyrokinetic_priv.h +++ b/gyrokinetic/zero/gkyl_dg_updater_gyrokinetic_priv.h @@ -5,9 +5,12 @@ #include struct gkyl_dg_updater_gyrokinetic { - bool use_gpu; // Boolean for if the update is performed on GPUs - struct gkyl_dg_eqn *eqn_gyrokinetic; // Equation object - struct gkyl_hyper_dg *up_gyrokinetic; // solvers for specific gyrokinetic equation + bool use_gpu; // Boolean for if the update is performed on GPUs. + struct gkyl_dg_eqn *eqn_gyrokinetic; // Equation object. + struct gkyl_hyper_dg *up_gyrokinetic; // Solvers for specific gyrokinetic equation. - double gyrokinetic_tm; // total time spent in computing gyrokinetic equation + struct gkyl_dg_eqn *eqn_add_apardot_gyrokinetic; // Equation object to only add Apardot contribution. + struct gkyl_hyper_dg *up_add_apardot_gyrokinetic; // Solver to only add Apardot contribution. + + double gyrokinetic_tm; // Total time spent in computing gyrokinetic equation. }; diff --git a/gyrokinetic/zero/gkyl_gk_collisionless_flux.h b/gyrokinetic/zero/gkyl_gk_collisionless_flux.h index 8e12164c81..445433b980 100644 --- a/gyrokinetic/zero/gkyl_gk_collisionless_flux.h +++ b/gyrokinetic/zero/gkyl_gk_collisionless_flux.h @@ -24,6 +24,8 @@ typedef struct gkyl_gk_collisionless_flux gkyl_gk_collisionless_flux; * @param charge Species charge * @param mass Species mass * @param collless_type Type of collisionless terms. + * @param no_by Whether to neglect the toroidal field (set b_y=0). + * @param complete_em Whether it is meant to complete the RHS after partial EM update. * @param gk_geom Gyrokinetic geometry object. * @param gk_dg_geom DG geometry object. * @param vel_map Velocity space mapping object. @@ -36,9 +38,9 @@ gkyl_gk_collisionless_flux_new(const struct gkyl_rect_grid *phase_grid, const struct gkyl_basis *conf_basis, const struct gkyl_basis *phase_basis, const double charge, const double mass, enum gkyl_gk_collisionless_type collless_type, - const struct gk_geometry *gk_geom, const struct gkyl_dg_geom *dg_geom, - const struct gkyl_gk_dg_geom *gk_dg_geom, const struct gkyl_velocity_map *vel_map, - const enum gkyl_gyrokinetic_bc_type *bctype_conf, bool use_gpu); + const bool no_by, const bool complete_em, const struct gk_geometry *gk_geom, + const struct gkyl_dg_geom *dg_geom, const struct gkyl_gk_dg_geom *gk_dg_geom, + const struct gkyl_velocity_map *vel_map, const enum gkyl_gyrokinetic_bc_type *bctype_conf, bool use_gpu); /** * Compute surface expansion of phase space flux alpha @@ -53,13 +55,16 @@ gkyl_gk_collisionless_flux_new(const struct gkyl_rect_grid *phase_grid, * @param conf_ext_range Extended configuration space range (so we obtain geo quantities at all the needed surfaces). * @param phase_ext_range Extended Phase space range (so we obtain alpha_surf at all the needed surfaces). * @param phi Electrostatic potential. + * @param apar Parallel component of vector potential. + * @param apardot Time derivative of parallel component of vector potential. * @param fin Distribution function. * @param flux_surf Output surface expansion in a cell on the *lower* edge in each direction. * @param clfrate Output CFL rate. */ void gkyl_gk_collisionless_flux_surf(struct gkyl_gk_collisionless_flux *up, const struct gkyl_range *conf_range, const struct gkyl_range *phase_range, - const struct gkyl_range *conf_ext_range, const struct gkyl_range *phase_ext_range, const struct gkyl_array *phi, + const struct gkyl_range *conf_ext_range, const struct gkyl_range *phase_ext_range, + const struct gkyl_array *phi, const struct gkyl_array *apar, const struct gkyl_array *apardot, const struct gkyl_array *fin, struct gkyl_array* flux_surf, struct gkyl_array *cflrate); /** diff --git a/gyrokinetic/zero/gkyl_gk_collisionless_flux_priv.h b/gyrokinetic/zero/gkyl_gk_collisionless_flux_priv.h index 9a3f94f2b8..d01adb8cb4 100644 --- a/gyrokinetic/zero/gkyl_gk_collisionless_flux_priv.h +++ b/gyrokinetic/zero/gkyl_gk_collisionless_flux_priv.h @@ -14,14 +14,15 @@ typedef double (*gk_collisionless_flux_surf_t)(const double *w, const double *dx const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_surf_geom *dgs, const struct gkyl_gk_dg_surf_geom *gkdgs, const double *bmag, const double *jacobgeo_rat_surfL, const double *jacobgeo_rat_surfR, const double *phi, - const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf); + const double *apar, const double *apardot, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf); typedef double (*gk_collisionless_flux_surfvpar_t)( const double *w, const double *dxv, const double *vmap_prime_l, const double *vmap_prime_r, const double *vmap, const double *vmapSq, const double q_, const double m_, const struct gkyl_dg_vol_geom *dgv, const struct gkyl_gk_dg_vol_geom *gkdgv, - const double *bmag, const double *phi, const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf); + const double *bmag, const double *phi, const double *apar, const double *apardot, + const double *JfL, const double *JfR, double* GKYL_RESTRICT flux_surf); // The cv_index[cd].vdim[vd] is used to index the various list of // kernels below. @@ -433,7 +434,7 @@ struct gkyl_gk_collisionless_flux* gkyl_gk_collisionless_flux_cu_dev_new(const struct gkyl_rect_grid *phase_grid, const struct gkyl_basis *conf_basis, const struct gkyl_basis *phase_basis, double charge, double mass, - enum gkyl_gk_collisionless_type collless_type, + enum gkyl_gk_collisionless_type type, const bool no_by, const bool complete_em, const struct gk_geometry *gk_geom, const struct gkyl_dg_geom *dg_geom, const struct gkyl_gk_dg_geom *gk_dg_geom, const struct gkyl_velocity_map *vel_map, const enum gkyl_gyrokinetic_bc_type *bctype_conf); @@ -443,6 +444,7 @@ gkyl_gk_collisionless_flux_cu_dev_new(const struct gkyl_rect_grid *phase_grid, */ void gkyl_gk_collisionless_flux_surf_cu(struct gkyl_gk_collisionless_flux *up, const struct gkyl_range *conf_range, const struct gkyl_range *phase_range, - const struct gkyl_range *conf_ext_range, const struct gkyl_range *phase_ext_range, const struct gkyl_array *phi, + const struct gkyl_range *conf_ext_range, const struct gkyl_range *phase_ext_range, + const struct gkyl_array *phi, const struct gkyl_array *apar, const struct gkyl_array *apardot, const struct gkyl_array* fin, struct gkyl_array* flux_surf, struct gkyl_array* cflrate); -#endif +#endif \ No newline at end of file diff --git a/gyrokinetic/zero/gkyl_gk_dg_geom.h b/gyrokinetic/zero/gkyl_gk_dg_geom.h index b846e69be9..2ce47525bb 100644 --- a/gyrokinetic/zero/gkyl_gk_dg_geom.h +++ b/gyrokinetic/zero/gkyl_gk_dg_geom.h @@ -24,6 +24,11 @@ struct gkyl_gk_dg_vol_geom { double bmag; // |B| double B3; // n^3 \cdot \vec{B} struct gkyl_vec3 dualcurlbhat; // duals dotted with curl(bhat) + double g_13; // metric tensor component g_{13} = e_1 . e_3 + double g_23; // metric tensor component g_{23} = e_2 . e_3 + double g_33; // metric tensor component g_{33} = e_3 . e_3 + double mag_e_3; // magnitude of e_3 + struct gkyl_vec3 bioverJB; // b_i/J_c/B };